SDK 使用指南
Go2 机器人主要通过 Unitree SDK2 进行开发。SDK2 基于 DDS (Data Distribution Service) 通讯,支持高性能的实时控制。
官方资源
环境准备
在 算力板 (192.168.123.18) 上,SDK2 环境通常已预装。
如果是在自己的开发机上:
- 确保已安装 CMake, Build-essential。
- 克隆 SDK 仓库:bash
git clone https://github.com/unitreerobotics/unitree_sdk2.git cd unitree_sdk2
Python SDK (推荐入门)
Python SDK 适合快速验证逻辑和编写非实时性业务。
1. 依赖安装
bash
cd unitree_sdk2
pip3 install -e .2. 运动控制示例 (High Level)
以下代码展示如何控制机器人站立:
python
import time
import sys
from unitree_sdk2py.core.channel import ChannelPublisher, ChannelFactoryInitialize
from unitree_sdk2py.go2.sport.sport_client import SportClient
# 初始化 DDS
ChannelFactoryInitialize(0, "lo") # 本机调试用 lo,实机用 eth0 或 wlan0
# 创建运动控制客户端
client = SportClient()
client.SetTimeout(10.0)
client.Init()
print("Robot standing up...")
# 发送站立指令
client.StandUp()
time.sleep(2)
print("Hello world (Action)...")
# 发送打招呼动作
client.Hello()3. 获取状态示例
python
# 订阅运动状态
def HighStateHandler(msg):
print("Position:", msg.position)
print("Velocity:", msg.velocity)
# ... 初始化代码同上 ...
# 只需要 Publisher 改为 Subscriber 即可监听 "rt/sportmodestate" 话题C++ SDK (高性能)
C++ SDK 适合编写核心算法和底层控制。
1. 编译示例
bash
cd unitree_sdk2
mkdir build
cd build
cmake ..
make2. 运行示例
bash
# 运行 High Level 示例 (运动控制)
./bin/high_level_demo "eno1" # 注意替换为实际网卡名常见控制模式
Go2 提供了多种控制层级:
Sport Mode (运动模式):
- API:
SportClient - 功能: 站立、移动、舞蹈、特殊动作。
- 适用: 绝大多数应用开发。
- API:
Low Level (底层控制):
- API:
LowCmd/LowState - 功能: 直接控制每个电机的力矩、位置、速度 (Kp/Kd)。
- 适用: 步态算法研发。
- API:
警告
Low Level 模式下没有安全保护,错误的指令可能导致机器人摔倒损坏或伤人。请务必将机器人吊起调试。