全方位感知系统接口
约 4435 字大约 15 分钟
开发者可通过标准的ROS2话题(Topic)、服务(Service)和动作(Action)机制,便捷地获取机器人状态、发送控制指令,实现复杂任务的编程与集成。
Topic:订阅式话题,接收方订阅某个消息,发送方根据订阅列表向接收方发送消息,主要用于中高频或持续的数据交互。
Service:问答式服务,通过请求实现数据获取或操作。用于低频或功能切换时的数据交互。
Action:持续式动作,用于长时间运行的任务,支持任务执行过程中的状态反馈和取消操作,适用于复杂动作控制和任务执行。
全方位感知系统接口用于获取传感器原始数据(双目/底盘相机图像流、多部位IMU、激光雷达点云)。
双目相机
使用标准的 sensor_msgs/Image 消息类型
| Topic | /camera/left_eye |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取双目相机左目的图像数据及参数 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, frame_id=“left_eye" (左目) |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera/right_eye |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取双目相机右目的图像数据及参数 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, frame_id=“right_eye" (右目) |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera/kfc_compressed |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取双目相机的压缩图像 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id=“kfc_compressed" |
| string format:指定图像的压缩格式,固定为"jpeg" | |
| uint8[] data:存储JPEG 格式压缩后的图像字节数据(JPEG 文件的字节流) |
| Topic | /camera/left_eye_resize |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取经过尺寸调整后的左目图像 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id=“left_eye_resize" |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera/right_eye_resize |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取经过尺寸调整后的右目图像 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id=“right_eye_resize" |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera/kfc_calib_data |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取相机内参信息 |
| 接口参数 | string data:相机内参信息,格式为 JSON ,包含包含相机的焦距、主点、畸变系数等关键参数,以及相机的标定参数。 |
前后底盘相机
使用ROS标准消息结构
| Topic | /orbbec/front/rgb |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取前底盘相机的彩色RGB 图 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id="chassis_camera_front_link" (front) |
| Topic | /orbbec/front/depth |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取前底盘相机的深度图 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id="chassis_depth_front_link" (front) |
| Topic | /orbbec/front/camera_info |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取前底盘相机的相机内参、畸变信息 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id="chassis_camera_front_link" (front) |
| Topic | /orbbec/rear/rgb |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取后底盘相机的彩色RGB 图 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id="chassis camera_rear_link" (rear) |
| Topic | /orbbec/rear/depth |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取后底盘相机的深度图 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id="chassis_depth_rear_link" (rear) |
| Topic | /orbbec/rear/camera_info |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取后底盘相机的相机内参、畸变信息 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id="chassis_camera_rear_link" (rear) |
腕部相机
使用标准的ros2消息sensor_msgs/Image
| Topic | /camera_l/color/image_rect_raw |
|---|---|
| 生效版本 | ≥V0.3.0 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取左手腕部相机的彩色 RGB 图像 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera_l/depth/image_rect_raw |
|---|---|
| 生效版本 | ≥V0.3.0 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取左手腕部相机的深度图 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera_r/color/image_rect_raw |
|---|---|
| 生效版本 | ≥V0.3.0 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取右手腕部相机的彩色 RGB 图像 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
| Topic | /camera_r/depth/image_rect_raw |
|---|---|
| 生效版本 | ≥V0.3.0 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取右手腕部相机的深度图 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| uint32 height:图像高度(行数) | |
| uint32 width:图像宽度(列数) | |
| string encoding:图像编码格式 | |
| uint8 is_bigendian:字节序标识,0 表示小端序,1 表示大端序 ,通常取值为 0 | |
| uint32 step:每行字节数,step = width * 每个像素字节数 | |
| uint8[] data:图像数据本体(按行存储),数据长度 = height * step |
IMU传感器(惯性测量单元)
使用ROS2标准的 sensor_msgs/Imu.msg 消息类型
| Topic | /imu/chassis/refined |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取底盘 IMU 运动状态,包括姿态(四元数)、角速度、线加速度及协方差 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id = "imu_chassis_link"
|
orientation:底盘姿态(四元数 [x, y, z, w] ,满足 x² + y² + z² + w² = 1),描述俯仰、横滚、偏航角
| |
| float64[9] orientation_covariance:姿态协方差,3x3 协方差矩阵,反映姿态测量的不确定性 | |
angular_velocity:底盘绕 x/y/z 轴的旋转角速度,单位是弧度/秒(rad/s)
| |
| float64[9] angular_velocity_covariance:角速度协方差,3x3 协方差矩阵,反映角速度测量的不确定性 | |
linear_acceleration:底盘沿 x/y/z 轴的线加速度,单位是 m/s²
| |
| float64[9] linear_acceleration_covariance:加速度协方差,3x3 协方差矩阵,反映线加速度测量的不确定性 |
激光雷达
使用标准的ROS2 消息 sensor_msgs/LaserScan.msg格式
| Topic | /laser_scan/front |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe) |
| 接口说明 | 实时获取前激光雷达的扫描数据,包含角度、时间、距离、强度等信息 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id = "laser_forward_link"
|
| float32 angle_min:起始角度,单位为弧度(rad) | |
| float32 angle_max:结束角度,单位为弧度(rad) | |
| float32 angle_increment:相邻两个点之间的角度间隔,单位为弧度(rad) | |
| float32 time_increment:相邻两个点的采样时间间隔,单位为 s | |
| float32 scan_time:扫描一圈花费的总时间,单位为 s | |
| float32 range_min:最小有效测距值,单位为 m | |
| float32 range_max:最大有效测距值,单位为 m | |
| float32[] ranges:距离数据,数组长度 = 扫描点总数(由 angle_min、angle_max、angle_increment 计算 ),单位为 m | |
| float32[] intensities:激光反射强度数据,与 ranges 数组长度一致,反映目标反射率差异 |
| Topic | /laser_scan/rear |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe) |
| 接口说明 | 实时获取后激光雷达的点云 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息, header.frame_id = "laser_back_link"
|
| float32 angle_min:起始角度,单位为弧度(rad) | |
| float32 angle_max:结束角度,单位为弧度(rad) | |
| float32 angle_increment:相邻两个点之间的角度间隔,单位为弧度(rad) | |
| float32 time_increment:相邻两个点的采样时间间隔,单位为 s | |
| float32 scan_time:扫描一圈花费的总时间,单位为 s | |
| float32 range_min:最小有效测距值,单位为 m | |
| float32 range_max:最大有效测距值,单位为 m | |
| float32[] ranges:距离数据,数组长度 = 扫描点总数(由 angle_min、angle_max、angle_increment 计算 ),单位为 m | |
| float32[] intensities:激光反射强度数据,与 ranges 数组长度一致,反映目标反射率差异 |
里程计数据的发布接口
使用标准ROS2 消息 nav_msgsOdometry
| Topic | /feedback/odom |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish)
|
| 接口说明 | 输出机器人里程计数据,包括位姿、运动速度及坐标系信息 |
| 接口参数 | header,包含时间戳(stamp)、坐标系(frame_id)等元信息, frame_id = "odom"(里程计坐标系,关联地图与机器人运动) |
| float64[] pose.pose.position:笛卡尔坐标系下的位置矩阵,格式为[x,y,z],单位是 m | |
| float64[] pose.pose.orientation:笛卡尔坐标系下的姿态(四元数),格式为[x,y,z,w] | |
| child_frame_id = "base_footprint"(机器人底盘中心坐标系,关联里程计与本体运动) | |
| twist { //运动速度 float64[] linear:线速度,格式为[linear.x, linear.y, linear.z],单位是m/s,取值范围是[-1.0, 1.0] float64[] angular:角速度,格式为[angular.x, angular.y, angular.z],单位是弧度/秒(rad/s),取值范围是[-1.0, 1.0] } |