[具身智能-120]:ROS2 各种标准传感器以及对应的主题数据格式

[具身智能-120]:ROS2 各种标准传感器以及对应的主题数据格式 在 ROS 2 中为了确保不同厂商的传感器如激光雷达、相机、IMU能够被通用的算法如 SLAM、导航使用ROS 定义了一套标准的消息类型Message Types。这些标准消息主要定义在sensor_msgs功能包中。以下是 ROS 2 中常用的标准传感器及其对应的主题数据格式详解1. 视觉可见光光强传感器 (Camera) 这是最复杂的数据类型用于发布原始图像数据。消息类型:sensor_msgs/msg/Image常见话题:/camera/image_raw,/depth/image_raw核心结构:header: 包含时间戳和坐标系 (frame_id)。height,width: 图像的像素尺寸。encoding: 像素编码格式如rgb8,bgr8,mono8,32FC1用于深度图。data:一个巨大的字节数组存储实际的像素数据。配套消息:sensor_msgs/msg/CameraInfo通常与图像话题同步发布包含相机的内参矩阵焦距、光心和畸变系数用于去畸变和 3D 重建。2.激光特定波长光测距雷达 (LiDAR) 》另一个种形式的视觉数据用于 2D 平面扫描如单线雷达或 3D 点云如多线雷达。2D激光雷达消息类型:sensor_msgs/msg/LaserScan常见话题:/scan核心结构:header: 时间戳和坐标系通常为laser或base_scan。angle_min,angle_max:扫描的起始和终止角度弧度。ranges:核心数据一个浮点数数组表示每个角度下的距离米。intensities: 可选表示反射强度。3D点云消息类型:sensor_msgs/msg/PointCloud2常见话题:/points,/cloud核心结构:header: 坐标系通常为camera_link或velodyne。height,width:点云的高度无序点云通常为1和宽度。fields:描述每个点包含的信息如 x, y, z, intensity, rgb。data: 二进制数据块存储所有点的坐标信息即点云数据。3. 惯性测量单元 (IMU) 用于测量机器人的姿态、角速度和加速度。消息类型:sensor_msgs/msg/Imu常见话题:/imu/data,/imu_raw核心结构:header: 坐标系通常为imu_link。orientation(方位四元数): 估计的姿态x, y, z, w。如果传感器不提供姿态协方差矩阵的第一个元素通常设为 -1。angular_velocity(Vector3): 三轴角速度(rad/s)。linear_acceleration(Vector3): 三轴线加速度(m/s²)。*_covariance: 上述三个数据的协方差矩阵6x6表示数据的可信度。4. 距离与测距传感器 (Range Sensors) 用于超声波或红外测距传感器。消息类型:sensor_msgs/msg/Range常见话题:/ultrasonic/distance,/ir_range核心结构:header: 时间戳和坐标系。radiation_type: 传感器类型枚举。0: 超声波 (ULTRASOUND)1: 红外线 (INFRARED)field_of_view:传感器的视场角弧度。min_range,max_range: 有效测量范围米。range:核心数据当前测量的距离值米。5. 导航与定位 (GNSS/GPS) 用于接收全球导航卫星系统的数据。消息类型:sensor_msgs/msg/NavSatFix常见话题:/gps/fix核心结构:header: 时间戳和坐标系通常为gps或world。status: 包含定位状态如未定位、GPS 定位、RTK 浮点解、RTK 固定解。latitude,longitude: 经纬度度。altitude: 海拔高度米。position_covariance: 定位精度的协方差。6. 其他常用传感器传感器类型消息类型描述磁力计sensor_msgs/msg/MagneticField测量磁场强度x, y, z 分量单位通常是特斯拉 (T)。流体压力sensor_msgs/msg/FluidPressure用于水下机器人或气压计包含压力值 (Pa) 和方差。光照度sensor_msgs/msg/Illuminance测量环境光强度单位勒克斯 (lux)。电池状态sensor_msgs/msg/BatteryState包含电压、电流、电量百分比、电池健康状态等。 关键补充Header (消息头)几乎所有传感器消息都以std_msgs/Header开头它包含两个至关重要的字段stamp(时间戳): 数据产生的精确时间。对于多传感器融合如 VIO至关重要,用于不同传感器数据的对齐。frame_id(坐标系): 数据所在的坐标空间名称例如camera_link,laser,base_link。ROS 的坐标变换系统 (TF2) 依赖这个ID 来将不同传感器的数据统一到同一个坐标系下。每个传感器在空间的位置不同每个传感器有自己独立的相对坐标系通过坐标系ID和各个坐标系内的相对位置就可以统一的空间坐标信息的数据。