底层关节控制接口
约 1462 字大约 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_PITCH | 腿部踝关节 |
| KNEE_PITCH | 腿部膝关节 |
| BUTTOCK_PITCH | 腰部俯仰 |
| WAIST_YAW | 腰部水平 |
| HEAD_YAW_J1 | 头部水平 |
| HEAD_PITCH_J2 | 头部俯仰 |
| SHOULDER_PITCH_L_J1 | 左肩J1 |
| SHOULDER_ROLL_L_J2 | 左肩J2 |
| ELBOW_PITCH_L_J3 | 左肘J3 |
| ELBOW_YAW_L_J4 | 左肘J4 |
| WRIST_PITCH_L_J5 | 左腕J5 |
| WRIST_YAW_L_J6 | 左腕J6 |
| WRIST_ROLL_L_J7 | 左腕J7 |
| SHOULDER_PITCH_R_J1 | 右肩J1 |
| SHOULDER_ROLL_R_J2 | 右肩J2 |
| ELBOW_PITCH_R_J3 | 右肘J3 |
| ELBOW_YAW_R_J4 | 右肘J4 |
| WRIST_PITCH_R_J5 | 右腕J5 |
| WRIST_YAW_R_J6 | 右腕J6 |
| WRIST_ROLL_R_J7 | 右腕J7 |