cpp对齐官方

This commit is contained in:
cyy_mac
2026-07-30 15:25:48 +08:00
parent dbfcb95566
commit f8b849397d
36 changed files with 2561 additions and 122 deletions

View File

@@ -1,6 +1,6 @@
# Go1 PRO SDK
Unitree Go1 **PRO** 机型的低层电机控制 Python SDK。完整逆向 PRO 版的私有协议Blowfish 加密 + 私有 LowCmd 格式),不依赖官方 C++ SDKMac 直连可达 480Hz 控制频率。
Unitree Go1 **PRO** 机型的低层电机控制 Python/C++ SDK。完整逆向 PRO 版的私有协议Blowfish 加密 + 私有 LowCmd 格式),不依赖官方二进制库Mac 直连可达 480Hz 控制频率。
> 这是为 PRO 准备的 SDK。如果你有 **EDU** 版机器狗,请用原版 [free-dog-sdk](https://github.com/Bin4ry/free-dog-sdk) — PRO 跟 EDU 协议有显著差异,互不兼容。
@@ -24,7 +24,9 @@ Unitree Go1 **PRO** 机型的低层电机控制 Python SDK。完整逆向 PRO
```python
import robot_interface as sdk
udp = sdk.UDP(sdk.LOWLEVEL, 8080, "192.168.123.10", 8007)
LOWLEVEL = 0xff # 官方 wrapper 不导出这个常量,官方示例也是在应用中定义
udp = sdk.UDP(LOWLEVEL, 8080, "192.168.123.10", 8007)
safe = sdk.Safety(sdk.LeggedType.Go1)
cmd, state = sdk.LowCmd(), sdk.LowState()
udp.InitCmdData(cmd)
@@ -37,7 +39,33 @@ udp.Send()
```
兼容范围和协议差异见 [`docs/OFFICIAL_API_COMPATIBILITY.md`](docs/OFFICIAL_API_COMPATIBILITY.md)。
官方 `HighCmd/HighState` UDP 通道和 C++ ABI 当前不在兼容范围内。
官方 `HighCmd/HighState` UDP 通道和二进制 ABI 当前不在兼容范围内。
需要同一份代码同时运行在本项目和官方 SDK 上时,只使用官方实际导出的接口;参考
[`examples/example_official_compatible_position.py`](examples/example_official_compatible_position.py)。
### 官方 C++ SDK 兼容接口
同一份低层 C++ 源码可分别链接本项目或官方 `unitree_legged_sdk`
```cpp
#include "unitree_legged_sdk/unitree_legged_sdk.h"
using namespace UNITREE_LEGGED_SDK;
UDP udp(LOWLEVEL, 8090, "192.168.123.10", 8007);
Safety safe(LeggedType::Go1);
LowCmd cmd{};
udp.InitCmdData(cmd);
```
```bash
cmake -S . -B build-cpp -DCMAKE_BUILD_TYPE=Release
cmake --build build-cpp
ctest --test-dir build-cpp --output-on-failure
```
PRO 环境链接本项目生成的 `libunitree_legged_sdk`;官方机器人环境链接官方同名库。
参考 [`examples/cpp/example_official_compatible_position.cpp`](examples/cpp/example_official_compatible_position.cpp)。
Blowfish state 默认随库安装,也可用 `GO1_PRO_BLOWFISH_STATE` 指定。
### 高层控制 (走/跳/姿态, 通过 sportMode 系统)
@@ -151,6 +179,10 @@ go1_pro_sdk/
├── safety/ # PositionLimit / PowerProtect / PositionProtect
├── utils/ # CRC, 浮点编解码, 关节常量
└── _data/ # blowfish_state.bin
include/unitree_legged_sdk/ # 官方 C++ 头文件兼容层
src/ # PRO UDP/Blowfish/Safety 实现
tests/cpp/ # C++ 契约、抓包和安装消费测试
```
## 文档