|
from enum import IntEnum
|
|
|
|
|
|
class StateSE2Index(IntEnum):
|
|
|
|
_X = 0
|
|
_Y = 1
|
|
_HEADING = 2
|
|
|
|
@classmethod
|
|
def size(cls):
|
|
valid_attributes = [
|
|
attribute
|
|
for attribute in dir(cls)
|
|
if attribute.startswith("_")
|
|
and not attribute.startswith("__")
|
|
and not callable(getattr(cls, attribute))
|
|
]
|
|
return len(valid_attributes)
|
|
|
|
@classmethod
|
|
@property
|
|
def X(cls):
|
|
return cls._X
|
|
|
|
@classmethod
|
|
@property
|
|
def Y(cls):
|
|
return cls._Y
|
|
|
|
@classmethod
|
|
@property
|
|
def HEADING(cls):
|
|
return cls._HEADING
|
|
|
|
@classmethod
|
|
@property
|
|
def POINT(cls):
|
|
|
|
return slice(cls._X, cls._Y + 1)
|
|
|
|
@classmethod
|
|
@property
|
|
def STATE_SE2(cls):
|
|
|
|
return slice(cls._X, cls._HEADING + 1)
|
|
|
|
|
|
class BoundingBoxIndex(IntEnum):
|
|
|
|
_X = 0
|
|
_Y = 1
|
|
_Z = 2
|
|
_LENGTH = 3
|
|
_WIDTH = 4
|
|
_HEIGHT = 5
|
|
_HEADING = 6
|
|
|
|
@classmethod
|
|
def size(cls):
|
|
valid_attributes = [
|
|
attribute
|
|
for attribute in dir(cls)
|
|
if attribute.startswith("_")
|
|
and not attribute.startswith("__")
|
|
and not callable(getattr(cls, attribute))
|
|
]
|
|
return len(valid_attributes)
|
|
|
|
@classmethod
|
|
@property
|
|
def X(cls):
|
|
return cls._X
|
|
|
|
@classmethod
|
|
@property
|
|
def Y(cls):
|
|
return cls._Y
|
|
|
|
@classmethod
|
|
@property
|
|
def Z(cls):
|
|
return cls._Z
|
|
|
|
@classmethod
|
|
@property
|
|
def LENGTH(cls):
|
|
return cls._LENGTH
|
|
|
|
@classmethod
|
|
@property
|
|
def WIDTH(cls):
|
|
return cls._WIDTH
|
|
|
|
@classmethod
|
|
@property
|
|
def HEIGHT(cls):
|
|
return cls._HEIGHT
|
|
|
|
@classmethod
|
|
@property
|
|
def HEADING(cls):
|
|
return cls._HEADING
|
|
|
|
@classmethod
|
|
@property
|
|
def POINT2D(cls):
|
|
|
|
return slice(cls._X, cls._Y + 1)
|
|
|
|
@classmethod
|
|
@property
|
|
def POSITION(cls):
|
|
|
|
return slice(cls._X, cls._Z + 1)
|
|
|
|
@classmethod
|
|
@property
|
|
def DIMENSION(cls):
|
|
|
|
return slice(cls._LENGTH, cls._HEIGHT + 1)
|
|
|
|
|
|
class LidarIndex(IntEnum):
|
|
|
|
_X = 0
|
|
_Y = 1
|
|
_Z = 2
|
|
_INTENSITY = 3
|
|
_RING = 4
|
|
_ID = 5
|
|
|
|
@classmethod
|
|
def size(cls):
|
|
valid_attributes = [
|
|
attribute
|
|
for attribute in dir(cls)
|
|
if attribute.startswith("_")
|
|
and not attribute.startswith("__")
|
|
and not callable(getattr(cls, attribute))
|
|
]
|
|
return len(valid_attributes)
|
|
|
|
@classmethod
|
|
@property
|
|
def X(cls):
|
|
return cls._X
|
|
|
|
@classmethod
|
|
@property
|
|
def Y(cls):
|
|
return cls._Y
|
|
|
|
@classmethod
|
|
@property
|
|
def Z(cls):
|
|
return cls._Z
|
|
|
|
@classmethod
|
|
@property
|
|
def INTENSITY(cls):
|
|
return cls._INTENSITY
|
|
|
|
@classmethod
|
|
@property
|
|
def RING(cls):
|
|
return cls._RING
|
|
|
|
@classmethod
|
|
@property
|
|
def ID(cls):
|
|
return cls._ID
|
|
|
|
@classmethod
|
|
@property
|
|
def POINT2D(cls):
|
|
|
|
return slice(cls._X, cls._Y + 1)
|
|
|
|
@classmethod
|
|
@property
|
|
def POSITION(cls):
|
|
|
|
return slice(cls._X, cls._Z + 1)
|
|
|