传感器数据类

CompressedImage

class CompressedImage:
    header: Header           # 消息头
    format: str              # 图像格式 ("jpeg", "png")
    data: list[int]          # 图像数据 (字节数组)

LaserScan

class LaserScan:
    header: Header
    angle_min: float         # 起始角度 (弧度)
    angle_max: float         # 终止角度 (弧度)
    angle_increment: float   # 角度增量 (弧度)
    range_min: float         # 最小距离 (米)
    range_max: float         # 最大距离 (米)
    ranges: list[float]      # 距离数据 (米)
    intensities: list[float] # 强度数据

Imu

class Imu:
    header: Header 
    orientation: Quaternion                           # 姿态
    orientation_covariance: list[float]               # 姿态估计的协方差
    angular_velocity: Vector3                         # 角速度 (rad/s)
    angular_velocity_covariance: list[float]          # 角速度的协方差
    linear_acceleration: Vector3                      # 线加速度 (m/s^2)
    linear_acceleration_covariance: list[float]       # 线加速度的协方差

JointState

class JointState:
    header: Header
    name: list[str]          # 关节名称
    position: list[float]    # 关节位置 (弧度)
    velocity: list[float]    # 关节速度 (rad/s)
    effort: list[float]      # 关节力矩 (Nm)

Range

class Range:
    header: Header
    radiation_type: int     # 辐射类型 (例如: 0=超声波, 1=红外线)
    field_of_view: float    # 视场角 (弧度)
    min_range: float        # 最小测量距离 (米)
    max_range: float        # 最大测量距离 (米)
    range: float            # 当前测量距离 (米)
    variance: float         # 测量方差

PointCloud2

class PointCloud2:
    header: Header              
    height: int                 # 点云高度 (如果无序则为1)
    width: int                  # 点云宽度 (点的总数)
    fields: list[PointField]    # 每个点的字段描述 (例如 x, y, z, rgb)
    is_bigendian: bool          # 数据是否为大端字节序
    point_step: int             # 单个点的字节长度
    row_step: int               # 一行数据的字节长度
    data: list[int]             # 原始点云数据 (字节数组)
    is_dense: bool              # 是否不包含无效点 (NaN/inf)

PointField

class PointField:
    # --- 数据类型常量 ---
    INT8    = 1
    UINT8   = 2
    INT16   = 3
    UINT16  = 4
    INT32   = 5
    UINT32  = 6
    FLOAT32 = 7
    FLOAT64 = 8

    # --- 字段定义 ---
    name: str     # 字段名称 (例如: "x", "y", "z", "rgb")
    offset: int   # 字段在单个点内的偏移量 (字节)
    datatype: int # 字段的数据类型 (使用上面的常量之一)
    count: int    # 字段包含的元素数量 (例如,对于'x'是1,对于'normal_x'也是1)