使用 Zenoh 协议控制 Reachy Mini 机器人的运动和电机状态。
| 平台 | 支持情况 |
|---|---|
| PC | ✅ 支持 |
| Reachy Mini | ❌ 不适用 |
此 demo 在 PC 上运行,通过 Zenoh 协议控制 Reachy Mini。
Zenoh 是一个高性能的数据传输协议,相比 REST API 具有以下优势:
- 低延迟: 点对点直连,无需 HTTP 开销
- 高吞吐: 二进制协议,传输效率更高
- 实时性: 支持亚毫秒级响应
- 轻量级: 适合边缘计算和物联网场景
- 电机扭矩控制 (开启/关闭)
- 天线运动控制 (左右独立)
- 底座旋转控制 (body_yaw)
- 头部姿态控制 (pitch/yaw/roll)
- 平滑运动和归位
- 操作系统: Linux, macOS, Windows
- Python: 3.7+
- 网络: 与 Reachy Mini 在同一局域网
pip install zenoh
# 或使用 uv
uv pip install zenoh在 demos 目录下创建配置文件:
cd demos
cp robot_config.yaml.template robot_config.yaml
# 编辑 robot_config.yaml,设置 Reachy Mini 的 IP 地址cd demos/06_zenoh_basic_control
python3 test_zenoh_control.py# Zenoh 连接端点
endpoint = "tcp/{ROBOT_IP}:7447"
# 命令话题
topic = "reachy_mini/command"| 命令 | 格式 | 说明 |
|---|---|---|
| 电机扭矩 | {"torque": bool, "ids": list|None} |
开启/关闭电机 |
| 天线位置 | {"antennas_joint_positions": [左, 右]} |
天线角度 (弧度) |
| 底座偏航 | {"body_yaw": float} |
底座旋转角度 (弧度) |
| 头部姿态 | {"head_pose": {"pitch": float, "yaw": float, "roll": float}} |
头部姿态 |
==================================================
Reachy Mini Zenoh 控制
==================================================
配置信息:
机器人 IP: 10.42.0.75
Zenoh 端口: 7447
命令话题: reachy_mini/command
正在连接到机器人: tcp/10.42.0.75:7447 ...
✅ Zenoh Session 建立成功!
📢 已建立指令通道: reachy_mini/command
>>> [1/5] 发送指令: 开启电机 (Torque ON)
>>> [2/5] 发送指令: 移动天线 (左歪)
>>> [2/5] 发送指令: 移动天线 (右歪)
>>> [3/5] 发送指令: 旋转身体 (左转)
>>> [3/5] 发送指令: 旋转身体 (回正)
>>> [4/5] 发送指令: 点头
>>> [5/5] 发送指令: 全部归零
==================================================
完成!
==================================================
>>> 放松电机
🔌 连接已断开
脚本执行以下动作序列:
- 开启电机 - 启用所有电机扭矩
- 天线运动 - 左歪 / 右歪
- 底座旋转 - 左转 30度 / 回正
- 点头动作 - 低头 / 抬头
- 归位放松 - 所有关节回零并放松电机
| 关节 | 弧度 | 角度 |
|---|---|---|
| 天线 | ±0.5 | ±30° |
| 底座 | ±0.5 | ±30° |
| 头部俯仰 | ±0.15 | ±9° |
转换公式:
角度 = 弧度 × 180 / π
弧度 = 角度 × π / 180原因: 无法连接到 Zenoh 端口
解决:
- 检查 Reachy Mini 是否开机
- 检查网络连接
- 确认 IP 地址正确
- 确认端口 7447 未被防火墙阻止
原因: 未安装 zenoh-python
解决:
pip install zenoh原因: 电机未开启
解决: 确保先发送开启扭矩指令:
cmd_torque = {"torque": True, "ids": None}| 特性 | Zenoh | REST API |
|---|---|---|
| 延迟 | 低 (~1ms) | 高 (~10-50ms) |
| 吞吐 | 高 | 中 |
| 协议 | TCP + 二进制 | HTTP + JSON |
| 适用场景 | 实时控制 | 简单操作 |
MIT License