5.4.1 传感器接口
传感器接口提供了机器人各种传感器的数据获取和控制能力,包括相机、IMU、激光雷达、触摸传感器等。
核心功能
视觉传感器
RGB相机:彩色图像获取
深度相机:深度信息获取
相机内参:标定参数获取
姿态传感器
IMU数据:加速度、角速度、姿态角
陀螺仪:角速度测量
加速度计:加速度测量
环境感知传感器
激光雷达:点云数据获取
触摸传感器:触觉反馈
标准传感器消息
传感器接口大多使用ROS标准传感器定义sensor_msgs中的消息类型:
传感数据类型 |
消息定义 |
|---|---|
相机内参 |
|
原始图像 |
|
压缩图像 |
|
IMU数据 |
|
Lidar点云 |
|
GNSS定位数据 |
IMU话题
包括独立的胸部IMU和胯部IMU, 均位于运控计算单元(PC1)
也可使用 Lidar、深度相机 和 双目相机 附带的IMU
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
胸部IMU数据 |
|
500Hz |
|
|
胯部IMU数据 |
|
500Hz |
|
|
Lidar IMU数据 |
|
200Hz |
|
|
深度相机 IMU数据 |
|
200Hz |
|
|
双目相机 IMU数据 |
|
200Hz |
备注
IMU 字段使用说明:
frame_id:胸部和胯部 IMU 的
header.frame_id固定为base_link,两者相同,需通过话题名区分数据来源协方差:
orientation_covariance、angular_velocity_covariance、linear_acceleration_covariance字段未提供(全零),不应依赖协方差数据时间戳:胸部和胯部 IMU 的
header.stamp为机器人接收时间,非传感器采集时间,对时间敏感的应用(如传感器融合)需考虑串口传输延迟运动控制依赖:IMU 数据是运动控制系统的必要输入,IMU 数据缺失(串口故障或 IMU 模块未启动)将导致机器人无法运动
坐标系外参:IMU 相对机器人基座的旋转矩阵见出厂标定参数
头部触摸状态话题
触摸传感器位于交互计算单元(PC3),支持功能:
获取底层触摸事件和原始sample
关闭自带的摸头互动技能(待开放)
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
头部触摸状态 |
|
100Hz |
TouchStateros2-msg @ hal/msg/TouchState.msg# 头部触摸状态 # 话题名称: /aima/hal/sensor/touch_head MessageHeader header # 消息头 uint8 event_type # 触摸事件 (0-未知,1-空闲,2-触摸) uint32[8] data # 8个通道的原始传感器数值(预留) uint32[8] threshold # 8个通道对应的触摸阈值(预留) bool[8] is_touched # 8个通道的触摸状态(预留)
后视RGB相机话题
后视RGB相机位于开发计算单元(PC2), 可用于视觉辅助定位、场景语义感知等
原始图像数据带宽90MB/s, 仅限设备所在计算单元上使用, 切勿跨计算单元订阅
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
相机内参 |
|
1Hz |
|
|
原始图像 |
|
10Hz |
|
|
压缩图像 |
|
10Hz |
备注
后视相机图像分辨率和编码:
旗舰版:2064×1552,RGB8 编码
旗舰焕新版:2048×1536,RGB8 编码
压缩图像:JPEG 编码(使用 Jetson 硬件编码器)
安装方向:旗舰焕新版的后视 RGB 相机安装方向旋转了 90 度。如应用受影响,可参考头部后置单目相机数据订阅读取硬件版本标志并自动判断是否需要旋转补偿。
视野遮挡:后视 RGB 相机视野会被设在机器人后颈处的把手部分遮挡。如所用算法受遮挡影响,可参照头部后置单目相机数据订阅对图像进行 mask 预处理。
头部正位时后视RGB相机被遮挡情况如下:
后视RGB相机遮挡示意图
双目相机话题
双目相机位于开发计算单元(PC2), 可用于立体视觉、遥操、感知避障、目标识别、VIO SLAM、VLA等
原始图像每路数据带宽90MB/s, 仅限设备所在计算单元上使用, 切勿跨计算单元订阅
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
左目内参 |
|
1Hz |
|
|
左目原始图像 |
|
10Hz |
|
|
左目压缩图像 |
|
10Hz |
|
|
右目内参 |
|
1Hz |
|
|
右目原始图像 |
|
10Hz |
|
|
右目压缩图像 |
|
10Hz |
备注
双目相机 frame_id 说明:
左目:
stereo_head_front(立体参考系,/tf_static发布的立体外参以此 frame 为 parent)右目:
stereo_head_front_right
左目 frame_id 与话题 namespace 中的 _left 后缀不对称,这是因为左目是立体视觉的主坐标系(包含 IMU 和基线外参的父 frame)。用户做 tf 集成或立体视觉计算时需注意此差异。左右相机间外参及基座→相机外参见出厂标定参数。
双目相机图像分辨率和编码:
旗舰版: 2064×1552,RGB8 编码
旗舰焕新版: 2048×1536,RGB8 编码
压缩图像:JPEG 编码(使用 Jetson 硬件编码器)
不同软硬件版本的相机分辨率可能存在差异。用户应始终从 camera_info 消息的 width 和 height 字段读取实际分辨率,避免硬编码图像尺寸。
深度相机话题
深度相机位于开发计算单元(PC2), 可用于目标检测、空间避障、环境语义获取等
原始图像数据每路带宽约80MB/s, 仅限设备所在计算单元上使用, 切勿跨计算单元订阅
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
RGB内参 |
|
30Hz |
|
|
原始图像 |
|
30Hz |
|
|
压缩图像 |
|
30Hz |
|
|
深度内参 |
|
30Hz |
|
|
深度图像 |
|
30Hz |
|
|
IMU数据 |
|
200Hz |
备注
深度相机 frame_id 说明:
RGB 图像和 RGB 内参:frame_id 为
rgbd_head_front深度图像和深度内参:frame_id 为
rgbd_head_front(与 RGB 相同,需按话题名区分)IMU 数据:frame_id 为
camera_accel_gyro_optical_frame(IMU 自身坐标系)
RGB 图像与深度图像的 frame_id 相同(均为 rgbd_head_front),订阅时需按话题名区分。图像与 IMU 的 frame_id 不同,做传感器融合或 TF 变换时需注意坐标系转换。
图像分辨率和编码:
RGB 图像:1280×720,RGB8 编码
RGB 压缩图像:相机直接输出的压缩图像(MJPEG 格式)
深度图像:1280×720,16UC1 编码(uint16,像素值为深度距离,单位:毫米)
深度与 RGB 对齐:深度图与 RGB 图的像素不一一对应(D2C 硬件对齐已关闭)。相机模块通过 /tf_static 发布两者之间的静态坐标变换,用户可利用该变换在应用层完成配准:
/tf_static变换:父坐标系rgbd_head_front(彩色图),子坐标系rgbd_depth_head_front(深度图),即深度相机坐标系相对于彩色相机坐标系的位姿
通过 depth_camera_info 中的深度相机内参,可将深度图像素转换为深度相机坐标系下的 3D 点,再使用 /tf_static 中的变换将其转到彩色图坐标系,最后用 rgb_camera_info 中的彩色相机内参投影到彩色图像平面,即完成配准。相机内参与基座→相机外参见出厂标定参数。
帧同步:RGB 和深度帧独立发布,非同步帧对。如需帧级时间对齐(如 SLAM、3D 重建),需在应用层做时间戳匹配。
Lidar话题
提供Lidar点云数据和Lidar内置IMU数据, 可用于避障、建图定位等
Lidar位于开发计算单元(PC2),
数据带宽10MB/s量级, 不建议跨计算单元订阅
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
Lidar点云 |
|
10Hz |
|
|
Lidar IMU数据 |
|
200Hz |
点云数据说明:
frame_id:
lidar_chest_front(传感器原生坐标系,无轴重排)点类型:
PointXYZIRT— 包含 x/y/z 坐标、intensity(反射强度)、ring(线束编号)、timestamp(相对时间戳)距离单位: 米(分辨率 0.005m),盲区 0.1m;最大探测距离取决于目标反射率与环境光照(例如 10% NIST 反射率及 100K lux 日照条件下约 30m)
LiDAR IMU 说明:
frame_id:
lidar_imu_chest_front(与点云的lidar_chest_front不同)模块在首次收到设备信息包时,自动向
/tf_static发布 IMU→LiDAR 的静态坐标变换用户做传感器融合时需使用此 frame_id 和 tf_static 变换
GNSS话题
GNSS模块提供定位数据,可用于室外定位、导航等场景。
话题名称 |
数据类型 |
描述 |
QoS |
频率 |
|---|---|---|---|---|
|
|
GNSS定位数据 (经纬度、海拔) |
|
1Hz |
备注
NavSatFix 关键字段说明:
status.status(定位状态):
0(STATUS_FIX):有效定位1(STATUS_SBAS_FIX):增强定位(SBAS, Satellite-Based Augmentation System,卫星增强系统)-1(STATUS_NO_FIX):无定位使用建议:
status >= 0表示定位有效
status.service(卫星系统):
当前固件固定为
1(SERVICE_GPS, Global Positioning System)注意:此字段不反映实际使用的卫星系统,仅供参考
position_covariance(位置精度):
3×3 协方差矩阵 [m²],对角线元素表示东、北、天方向的不确定度
数值含义:值越小精度越高;典型值 1-10 m² 表示精度较好
基于卫星几何分布(HDOP, Horizontal Dilution of Precision,水平精度因子)估算
covariance_type(精度类型):
1(COVARIANCE_TYPE_APPROXIMATED):基于卫星几何估算(当前固件使用此类型)0(COVARIANCE_TYPE_UNKNOWN):无精度信息
编程示例
详细的编程示例和代码说明请参考:
GNSS数据订阅:GNSS定位数据订阅 GNSS定位数据订阅
头部触摸传感器:头部触摸传感器数据订阅 头部触摸传感器数据订阅
安全注意事项
注意
数据带宽占用高的相机原始图像, 请勿跨计算单元订阅, 否则可能导致系统不稳定, 引发安全风险