底盘控制接口
约 4196 字大约 14 分钟
开发者可通过标准的ROS2话题(Topic)、服务(Service)和动作(Action)机制,便捷地获取机器人状态、发送控制指令,实现复杂任务的编程与集成。
Topic:订阅式话题,接收方订阅某个消息,发送方根据订阅列表向接收方发送消息,主要用于中高频或持续的数据交互。
Service:问答式服务,通过请求实现数据获取或操作。用于低频或功能切换时的数据交互。
Action:持续式动作,用于长时间运行的任务,支持任务执行过程中的状态反馈和取消操作,适用于复杂动作控制和任务执行。
(1)建图
| Service | /mapping_node/set_map_name |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 设置地图名称(必须在 start_mapping 前调用) |
| 接口参数 | 请求: String map_name:在建图开始前,设置本次建图输出的地图文件名,非空字符串,格式为英文 / 数字 / 下划线 |
| 响应: Bool success:地图名称是否设置成功,取值为1表示设置成功,取值为1表示设置失败; String message:返回的结果描述信息 |
| Service | /mapping_node/start_mapping |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 启动建图 |
| 接口参数 | 请求:空请求 |
| 响应: Bool success:启动建图是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /mapping_node/finish_mapping |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 完成建图 |
| 接口参数 | 请求:空请求 |
| 响应: Bool success:是否结束建图并保存成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
(2)定位
| Service | /localization_node/start_localization |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 启动定位(开机自动触发) |
| 接口参数 | 请求:空请求 |
| 响应: Bool success:定位启动是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /localization_node/stop_localization |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 停止定位 |
| 接口参数 | 请求:空请求 |
| 响应: Bool success:定位停止是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /localization_node/reset_localization |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 重置定位状态(先关闭当前定位,再重新启动一次定位) |
| 接口参数 | 请求:空请求 |
| 响应: Bool success:定位重置是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /localization_node/relocalization |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 触发重定位(给定一个初始位姿,触发定位模块基于该初始位姿进行重定位) |
| 接口参数 | 请求: float64[] pose.position:底盘在地图中的位置坐标,格式为[x,y,z](笛卡尔坐标系下的位置矩阵),单位为米,根据地图坐标系取值; float64[] pose.orientation:底盘的姿态,用四元数表示,格式为[x,y,z,w](四元数,满足x²+y²+z²+w²=1); pose.covariance:位姿协方差矩阵,表示初始位姿的置信度,对角线元素越大,置信度越低,通常初始重定位可设为较大值(如[0.1, 0, ..., 0.1]) |
| 响应: Bool success:重定位是否成功触发,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
(3)地图管理
| Service | /map_manager/get_map_list |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 获取当前地图目录中所有有效的地图 |
| 接口参数 | 请求:空请求 |
| 响应: String[] map_list:所有有效地图的名称列表,空数组表示无有效地图; Bool success:查询是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /map_manager/get_map_folder |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 获取当前地图的存储目录 |
| 接口参数 | 请求:空请求 |
| 响应: String data:地图保存的绝对 / 相对路径 Bool success:查询是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /map_manager/get_map_name |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 获取当前定位中加载的地图名称 |
| 接口参数 | 请求:空请求 |
| 响应: String data:当前加载的地图名称 Bool success:查询是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /map_manager/get_current_map_info |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 获取当前加载地图的信息 |
| 接口参数 | 请求:空请求 |
| 响应: map_info:地图元数据,包含map_load_time、resolution、width、height、origin子字段; String map_name:当前地图名称; String map_path:当前地图文件的完整路径; Bool success:查询是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /map_manager/load_map |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 加载指定名称的地图 |
| 接口参数 | 请求: String map_name:要加载的地图名称(必须是 get_map_list返回的有效地图名称) |
| 响应: Bool success:加载是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
| Service | /map_manager/remove_map |
|---|---|
| 生效版本 | ≥V0.3.2 |
| 接入方式 | Service Call
|
| 接口说明 | 删除指定名称的地图 |
| 接口参数 | 请求: String map_name:要删除的地图名称(必须是 get_map_list返回的有效地图名称) |
| 响应: Bool success:删除是否成功,取值为1表示成功,取值为0表示失败; String message:返回的结果描述信息 |
(4)差速底盘控制接口
消息格式遵循 geometry_msgs/Twist 标准
| Topic | /feedback/odom |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 获取机器人当前里程计信息(Odometry),包含机器人位姿与运动速度信息。 速度信息位于:msg.twist.twist |
| 接口参数 | float64 twist.twist.linear.x:获取 X 轴方向上的线速度,单位为 m/s ,取值范围为 [-1.0, 1.0] |
| float64 twist.twist.angular.z:获取绕 Z 轴的角速度,单位为 rad/s ,取值范围为 [-1.0, 1.0] |
| Topic | /control/cmd_vel |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish) |
| 接口说明 | 发布指令,控制机器人的速度,通过设置线速度、角速度,控制机器人运动轨迹、姿态调整 |
| 接口参数 | float64 linear.x:获取 X 轴方向上的线速度,单位为 m/s ,取值范围为 [-1.0, 1.0] |
| float64 angular.z:获取绕 Z 轴的角速度,单位为 rad/s ,取值范围为 [-1.0, 1.0] |
(5)全向移动底盘控制接口
全向移动底盘控制接口用于实时获取底盘 8 个电机的运行状态与指令下发。
| Topic | /feedback/omni_chassis_motors |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe) |
| 接口说明 | 实时获取全向底盘的电机速度和转向电机角度 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| float64[] position:全向底盘的转向电机角度,格式为[左前轮角度, 右前轮角度, 左后轮角度, 右后轮角度],取值范围是[-π/2, π/2],单位是弧度(rad) | |
| float64[] speed:全向底盘的电机速度,格式为[左前轮线速度, 右前轮线速度, 左后轮线速度, 右后轮线速度],取值范围是[-1.0, 1.0],单位是米/秒(m/s) |
| Topic | /control/omni_chassis |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish) |
| 接口说明 | 发布指令,实现全向底盘移动 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| float64[] position:全向底盘的转向电机角度,格式为[左前轮角度, 右前轮角度, 左后轮角度, 右后轮角度],取值范围是[-π/2, π/2],单位是弧度(rad) | |
| float64[] speed:全向底盘的电机速度,格式为[左前轮线速度, 右前轮线速度, 左后轮线速度, 右后轮线速度],取值范围是[-1.0, 1.0],单位是米/秒(m/s) |
(6)底盘位置接口
| Topic | /feedback/chassis_pose |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe)
|
| 接口说明 | 实时获取底盘在地图中的位姿(需开启导航功能) |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| float64[] pose.position:底盘在地图中的位置坐标,格式为[x,y,z](笛卡尔坐标系下的位置矩阵),单位为 m | |
| float64[] pose.orientation:底盘的姿态,格式为[x,y,z,w](四元数,满足x²+y²+z²+w²=1) |
| Topic | /control/nav2_pose |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish)
|
| 接口说明 | 发布指令,控制底盘移动到目标位置(需开启导航功能),到达目标位置时的姿态精度相对较低,带自主避障能力。 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| float64[] pose.position:底盘在地图中的目标位置,格式为[x,y,z](笛卡尔坐标系下的位置矩阵),单位为 m | |
| float64[] pose.orientation:底盘的姿态,格式为[x,y,z,w](四元数,满足x²+y²+z²+w²=1) |
| Topic | /control/ctrl_pose |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish)
|
| 接口说明 | 发布指令,控制底盘移动到目标位置(需开启导航功能),仅支持直线移动和原地旋转,不包含自主避障能力,坐标系原点为当前点; |
| 接口参数 | header:标准消息头 |
| float64[] pose.position:目标位置的笛卡尔坐标(X/Y/Z 轴的位置),格式为[x, y, z],范围根据机器人工作空间(地图)确定,单位为m | |
| float64[] pose.orientation:目标姿态的四元数表示(用于描述机器人的空间朝向),格式为[x, y, z, w],需满足四元数约束:x²+y²+z²+w²=1 |
(7)底盘基础服务接口
| Service | /save_charging_pose |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | Service Call
|
| 接口说明 | 保存回充点,将机器人当前所在位置设置为自动回充的基准点(充电桩正前方0.7m-1m) |
| 接口参数 | 请求:空请求,通常发送 {} 或空字符串触发。 |
| 响应: Bool success:位置保存是否成功,“1”表示成功,“0”表示不成功。 String message:返回的提示信息,通常包含保存的回充点坐标信息。 |
| Action | /auto_charing |
|---|---|
| 生效版本 | ≥V0.3 |
| 接入方式 | Action Call |
| 接口说明 | 控制机器人自动寻找并对接充电桩,通过该接口下发回充指令,并实时获取机器人的回充状态。 |
| 接口参数 | 请求: Object goal:下发指令,示例:{force:true},强制回充 |
| 响应: String feedback:反馈当前状态,包括运行中 / 成功 / 失败 | |
| Bool result:回充最终是否成功 |