传感器数据类
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)