参考指南 PubSub 接口
Fourier-GRX PubSub 接口使用 zenoh 进行通信,zenoh 是一个分布式系统的数据共享和协作平台 (https://zenoh.io/)。
PubSub 接口是基于 Developer 接口内容,借助于 zenoh 的发布/订阅机制实现的。它允许用户通过订阅特定的主题 (topic) 来接收机器人状态信息,并通过发布特定的主题来发送控制指令。
PubSub 接口主要分为以下4类:
robot
:机器人相关信息task
:任务相关信息
对应的 zenoh 接口 topic 的 key 格式为:
- key 可以是 [“robot”, “task”]
fourier-grx/{key}/state
:机器人主控程序发出的状态信息 [机器人作为服务器]fourier-grx/{key}/control
:机器人主控程序接收的指令信息 [用户机作为客户端]
状态信息
robot/state 接口协议 (状态信息)
key 说明列表:
key | 说明 | 数据类型 | 具体描述 |
---|---|---|---|
imu_quat | 传感器 IMU 数据 | array(float, float, float, float) | 传感器 IMU 数据,四元数表示姿态,顺序为 x, y, z, w |
imu_euler_angle | 传感器 IMU 数据 | array(float, float, float) | 传感器 IMU 数据,欧拉角表示姿态,顺序为 roll, pitch, yaw |
imu_angular_velocity | 传感器 IMU 数据 | array(float, float, float) | 传感器 IMU 数据,角速度表示姿态,顺序为 x, y, z |
imu_acceleration | 传感器 IMU 数据 | array(float, float, float) | 传感器 IMU 数据,线加速度表示姿态,顺序为 x, y, z |
key | 说明 | 数据类型 | 具体描述 |
---|---|---|---|
joint_position | 关节位置 | array(float) | 关节测量位置,单位为角度 |
joint_velocity | 关节速度 | array(float) | 关节测量速度,单位为角度/秒 |
joint_effort | 关节力矩 | array(float) | 关节测量力矩,单位为牛顿米 |
joint_current | 关节电流 | array(float) | 关节测量电流,单位为安培 |
task/state 接口协议 (状态信息)
key 说明列表:
key | 说明 | 数据类型 | 具体描述 |
---|---|---|---|
task_command | 任务指令 | int | 设置机器人任务值 (TID) |
component_command | 模块指令 | int | 设置机器人模块值 (MID) |
指令信息
robot/control 接口协议 (指令信息)
key 说明列表:
key | 说明 | 数据类型 | 具体描述 |
---|---|---|---|
group_name | 关节组名称 | string | 关节组名称,目前只支持 whole_body |
control_mode | 控制模式 | int | 0: 无控制,1: 电流控制,2: 力矩控制,3: 速度控制,4: 位置控制, 6: PD 控制 |
kp | P 系数 | array(float) | 控制的 P 系数,单位为无量纲,参考 机器人关节序列 |
kd | D 系数 | array(float) | 控制的 D 系数,单位为无量纲,参考 机器人关节序列 |
position | 位置指令 | array(float) | 关节位置指令,单位为角度,参考 机器人关节序列 |
task/control 接口协议 (指令信息)
key 说明列表:
key | 说明 | 数据类型 | 具体描述 |
---|---|---|---|
task_execute | 任务状态 | int | 当前机器人任务值 (TID) |
component_execute | 模块状态 | int | 当前机器人模块值 (MID) |