| from enum import IntEnum |
|
|
|
|
| class StateSE2Index(IntEnum): |
| """Intenum for SE(2) arrays.""" |
|
|
| _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): |
| """Intenum of bounding boxes in logs.""" |
|
|
| _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): |
| """Intenum for lidar point cloud arrays.""" |
|
|
| _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) |
|
|