底层关节控制接口
约 1503 字大约 5 分钟
开发者可通过标准的ROS2话题(Topic)、服务(Service)和动作(Action)机制,便捷地获取机器人状态、发送控制指令,实现复杂任务的编程与集成。
Topic:订阅式话题,接收方订阅某个消息,发送方根据订阅列表向接收方发送消息,主要用于中高频或持续的数据交互。
Service:问答式服务,通过请求实现数据获取或操作。用于低频或功能切换时的数据交互。
Action:持续式动作,用于长时间运行的任务,支持任务执行过程中的状态反馈和取消操作,适用于复杂动作控制和任务执行。
底层关节控制接口用于实时获取全身关节状态(位置/速度/力矩)并提供多模式控制(位置/力矩/力位混合)。
消息格式遵循 ROS2 系统里 sensor_msgs 功能包中定义的 JointState 消息类型的规范。
真机
| Topic | /feedback/joint |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe) |
| 接口说明 | 实时获取每个关节(包括臂部、腿部、腰部、颈部等)的位置(单位为弧度)、速度(单位为弧度/秒)和力矩(单位为牛米)信息。 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| string[] name:获取当前状态的关节名称,格式为[关节1名称,关节2名称,…,关节20名称] | |
| float64[] position:每个关节当前的位置信息,反映每个关节的旋转角度,格式为[关节1位置,关节2位置,…,关节20位置],单位是弧度,取值范围是[-π, π] | |
| float64[] velocity:每个关节当前的运动速度,格式为[关节1速度,关节2速度,…,关节20速度],单位是弧度/秒,取值范围是[-π, π] | |
| float64[] effort:每个关节当前所承受的力矩,反映关节电机的输出力,格式为[关节1力矩,关节2力矩,…,关节20力矩],单位是牛米,取值范围是[-100.0, 100.0] |
| Topic | /control/joint_position |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish) |
| 接口说明 | 标准的位置控制模式,可精确控制各关节到达目标角度,并可通过关联其他接口设置速度与力矩限制。 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| string[] name:控制的关节名称,格式为[关节1名称,关节2名称,…,关节20名称] | |
| float64[] position:控制各关节运动至目标角度,格式为[关节1位置,关节2位置,…,关节20位置],单位是弧度(rad),取值范围是[-π, π] |
仿真环境
| Topic | /feedback/joint_sim |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 订阅(subscribe) |
| 接口说明 | 实时获取每个关节(包括臂部、腿部、腰部、颈部等)的位置(单位为弧度)、速度(单位为弧度/秒)和力矩(单位为牛米)信息。 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| string[] name:获取当前状态的关节名称,格式为[关节1名称,关节2名称,…,关节20名称] | |
| float64[] position:每个关节当前的位置信息,反映每个关节的旋转角度,格式为[关节1位置,关节2位置,…,关节20位置],单位是弧度,取值范围是[-π, π] | |
| float64[] velocity:每个关节当前的运动速度,格式为[关节1速度,关节2速度,…,关节20速度],单位是弧度/秒,取值范围是[-π, π] | |
| float64[] effort:每个关节当前所承受的力矩,反映关节电机的输出力,格式为[关节1力矩,关节2力矩,…,关节20力矩],单位是牛米,取值范围是[-100.0, 100.0] |
| Topic | /control/joint_position_sim |
|---|---|
| 生效版本 | ≥V0.2 |
| 接入方式 | 发布(publish) |
| 接口说明 | 标准的位置控制模式,可精确控制各关节到达目标角度,并可通过关联其他接口设置速度与力矩限制。 |
| 接口参数 | header:标准消息头,包含时间戳(stamp)、坐标系(frame_id)等元信息 |
| string[] name:控制的关节名称,格式为[关节1名称,关节2名称,…,关节20名称] | |
| float64[] position:控制各关节运动至目标角度,格式为[关节1位置,关节2位置,…,关节20位置],单位是弧度(rad),取值范围是[-π, π] |
关节电机名称如下表
| 名称 | 描述 |
|---|---|
| ANKLE | 脚踝 |
| KNEE | 膝盖 |
| BUTTOCK | 臀部 |
| WAIST | 腰 |
| NECK1 | 颈(水平) |
| NECK2 | 颈(俯仰) |
| LEFT_J1 | 左肩1 |
| LEFT_J2 | 左肩2 |
| LEFT_J3 | 左肩3 |
| LEFT_J4 | 左肘 |
| LEFT_J5 | 左腕1 |
| LEFT_J6 | 左腕2 |
| LEFT_J7 | 左腕3 |
| RIGHT_J1 | 右肩1 |
| RIGHT_J2 | 右肩2 |
| RIGHT_J3 | 右肩3 |
| RIGHT_J4 | 右肘 |
| RIGHT_J5 | 右腕1 |
| RIGHT_J6 | 右腕2 |
| RIGHT_J7 | 右腕3 |