外观
教程raw.githubusercontent.com6 天前
unitree_sdk2_python:连接 G1 / Go2 的 DDS 网络、读取状态并发送高层运动指令
> 本文依据以下官方文档整理:raw.githubusercontent.com/unitreerobotics/unitree_sdk2_pytho。命令与版本以文档当前版本为准。
前置条件
- Python >= 3.8
- cyclonedds == 0.10.2
- numpy
- opencv-python
- 运行示例前已配置机器人的网络连接
- 知道机器人连接到的网络接口名称,例如 enp2s0
1. 安装 unitree_sdk2_python
先在终端安装 pip,拉取 unitree_sdk2_python 源码,并以可编辑方式安装。以下命令需逐行执行,安装完成后即可运行 /example 目录中的示例程序。
bash
cd ~
sudo apt install python3-pip
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .2. 处理 cyclonedds 路径错误
如果执行 pip3 install -e . 时出现 Could not locate cyclonedds,说明未找到 cyclonedds 路径。先编译并安装 cyclonedds:
bash
cd ~
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x
cd cyclonedds && mkdir build install && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../install
cmake --build . --target install3. 设置 CYCLONEDDS_HOME 后重新安装
进入 unitree_sdk2_python 目录,将 CYCLONEDDS_HOME 设置为刚编译的 cyclonedds 路径,然后再次安装 unitree_sdk2_python。
bash
cd ~/unitree_sdk2_python
export CYCLONEDDS_HOME=~/cyclonedds/install
pip3 install -e .4. 运行 DDS 发布与订阅示例
Python sdk2 通过 request-response 或 topic subscription/publishing 获取状态与控制。先启动 publisher,再打开新终端启动 subscriber,终端会看到数据输出。
bash
python3 ./example/helloworld/publisher.pybash
python3 ./example/helloworld/subscriber.py5. 读取高层状态
高层接口在数据结构和控制方法上与 unitree_sdk2 保持一致。读取高层状态时,将 enp2s0 替换为机器人连接到的网络接口名称。
bash
python3 ./example/high_level/read_highstate.py enp2s06. 发送高层运动控制指令
运行高层控制示例,同样将 enp2s0 替换为机器人连接到的网络接口名称。该示例提供多种测试方法,可按需要选择。
bash
python3 ./example/high_level/sportmode_test.py enp2s0python
test.StandUpDown() # Stand up and lie down
## test.VelocityMove() # Velocity control
## test.BalanceAttitude() # Attitude control
## test.TrajectoryFollow() # Trajectory tracking
## test.SpecialMotions() # Special motions验证是否跑通
DDS 通信示例中,subscriber.py 终端能看到数据输出;read_highstate.py 能读取高层状态;sportmode_test.py 按所选测试方法执行,例如 StandUpDown 对应 stand up and lie down。
文档里点名的注意事项
- pip3 install -e . 报 Could not locate cyclonedds 时,需要先编译安装 cyclonedds,并设置 CYCLONEDDS_HOME。
- read_highstate.py、sportmode_test.py 等命令中的 enp2s0 需要替换为机器人连接到的网络接口名称。
- 进行 Low-Level Motor Control 前,需先用 app 关闭 high-level motion service (sport_mode),以防止 conflicting instructions。
- Front Camera 示例需在有 graphical interface 的系统上运行,并按 ESC 退出程序。
相关 SDK 条目
来源
本页事实对应的公开页面,以原文为准。