如何远程控制 Unitree Go2:OM1 三种操控方式完整指南
【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1
读完本文,你就能用 OM1(Modular AI HAL,给机器人装"神经中枢"的开源系统)远程指挥 Unitree Go2 机器狗:办公室按键盘它就走,手柄推杆它就转向,甚至隔着一个公网发命令也能让它待命巡逻,状态还能回传。
原理速览
整条链路很短:你的指令从控制端经 WebSocket(跨网络传消息的长连接协议)发到 OM1 服务器;OM1 再翻译成 DDS 报文(机器与外设之间传数据用的实时协议)发给 Go2;Go2 的传感器数据原路返回,变成你能看到的状态。
底层编解码与远程动作的实现,详见 internal/zenoh/ 与 plugins/actions/。
动手前的核对清单
先对照下表清点,缺一项后面都会卡住:
| 项目 | 要求 | 是否可选 |
|---|---|---|
| Unitree Go2 EDU 机器狗 | 硬件本体,网线可直连 | 必需 |
| 控制端电脑 | Linux 或 macOS | 必需 |
| 稳定网络 | 有线直连,或 5G Wi-Fi | 必需 |
| CycloneDDS | DDS 通信中间件,本地编译安装 | 必需 |
| 硬件驱动依赖 | Linux 装libhidapi-dev、python3-dev;macOS 装 hidapi | 必需 |
| 游戏手柄 | Xbox / PS4 手柄均可 | 可选 |
第一次连通:四步走到本地通信成功
第 1 步:物理连接。用网线直连 Go2 EDU 和控制端电脑,把控制端网卡设为静态 IP192.168.123.99、掩码255.255.255.0,然后在配置里把unitree_ethernet指向该网卡名(如en0)。
第 2 步:编译 CycloneDDS。源码安装并带着示例一起编译:
git clone https://gitcode.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x cd cyclonedds && mkdir build install && cd build cmake .. -DCMAKE_INSTALL_PREFIX=../install -DBUILD_EXAMPLES=ON && cmake --build . --target install第 3 步:配置环境变量。把CYCLONEDDS_HOME、CMAKE_PREFIX_PATH、CYCLONEDDS_URI指到安装目录,其中CYCLONEDDS_URI里声明你的网络接口名,写入.zshrc持久生效。
第 4 步:验证发现能力。
cd $CYCLONEDDS_HOME/share/CycloneDDS/examples/listtopics ./listtopics看到成片的alive:行,尤其是rt/lowstate、rt/sportmodestate这类主题,说明链路已经打通。
三种操控方式怎么选
先给结论,按你的场景对号入座:
| 操控方式 | 输入设备 | 适用场景 | 启动命令 | 上手难度 |
|---|---|---|---|---|
| 键盘控制 | 键盘 WASD | 远程桌面、临时指挥 | uv run system_hw_test/om_keyboard_remote_control.py | 低 |
| 手柄控制 | Xbox / PS4 手柄 | 本地精细操作 | uv run src/run.py unitree_go2_basic | 中 |
| 跨网络控制 | 键盘 + 公网 | 不在机器人身边 | 本地运行键盘控制脚本并加--server wss://服务器:8080 | 中 |
键盘方式最直白,演示一下:
uv run system_hw_test/om_keyboard_remote_control.pyW 前进、S 后退、A 左转、D 右转。脚本持续读取按键集合,把线性速度和角速度打包成 DDS 指令发出,松手即停。手柄方式则映射了站立/坐下切换、左右摇杆移动与姿态、肩键切速度档;最大速度与死区这类参数在 Go2 的配置项move_go2_teleops里调(运动控制插件,详见 plugins/actions/)。
跨网络方式:在公网服务器上跑uv run src/run.py full_autonomy部署 OM1,本地脚本追加--server参数指向它即可。公网暴露记得配 API 密钥与 IP 白名单,别让任何人随便指挥你的狗。
出问题怎么办
| 现象 / 报错 | 原因 | 解决动作 |
|---|---|---|
Channel factory init error | 网卡名配错 | ifconfig确认真实接口名,改回配置里的unitree_ethernet |
| listtopics 列不出 Go2 主题 | 网线或 IP 没通 | 先ping 192.168.123.161,通了再重跑 listtopics |
| 控制明显延迟 | 网络或数据量偏大 | 有线环境设 MTU 1500 避免分片;视频降到 640x480、15fps、h264 压缩;QoS 在cyclonedds/cyclonedds.xml里调 |
还能拿它做什么
家庭安防巡逻。把巡逻路线存成 preset,让狗定点循环巡逻,地图上能看到它的点位与路线:
uv run src/actions/navigate_location/ --preset patrol --repeat远程教育演示。学生隔着 Web 的 Robot Control 界面选姿态与步态,实时指挥教学演示用的机器人:
uv run src/run.py unitree_go2_basic科研数据采集。建图模式跑起来,数据直接推到远端存储,不用来回倒:
uv run src/run.py unitree_go2_mapper --remote-storage s3://your-bucket/path另外两件进阶的事:摄像头流可以远程拉起,在浏览器看实时画面;长时间遥控时开低功耗模式(power_manager.py --mode eco)并设置自动休眠,电量更扛用。
从一根网线到跨公网指挥,OM1 把 Go2 的远程控制拆成了"连得上、控得动、看得见"三件事,按上面的顺序做就行。想继续深入,看这几份文档:
- Go2 接入与配置细节:docs/robotics/unitree_go2_quadruped.md
- 全自主架构总览:docs/full_autonomy_guidelines/architecture_overview.md
- 参与开发:CONTRIBUTING.md
【免费下载链接】OM1Modular AI HAL (Hardware Abstraction Layer) for Robots项目地址: https://gitcode.com/GitHub_Trending/om/OM1
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考