如果目标是进行SDK开发,第一步不是安装ROS 2,而是确认订单和设备属于G1 EDU。Unitree官方产品表把普通G1的Secondary Development标为“/”,G1 EDU则标为“YES”;普通G1的13,500美元起价也不是G1 EDU价格,EDU仍需Contact sales。
软件路径同样不能混用:C++ SDK2的官方预编译基准是Ubuntu 20.04与GCC 9.4.0,unitree_ros2则推荐Ubuntu 22.04与ROS 2 Humble,并以CycloneDDS 0.10.2为机器人侧兼容基准。安全的首次验证是通过以太网和DDS持续读到IMU、关节与电池状态,而不是直接运行行走、特技或力矩示例。
二次开发前先把普通G1与G1 EDU分开
Unitree G1官方产品表同时列出普通G1和G1 EDU,但两者的开发定位不同。普通G1的Secondary Development没有支持标记,G1 EDU才写有YES。采购时应在合同、铭牌和配置清单中确认EDU版本、手部、腰部、腕部、计算模块与可用接口,而不是只根据外观判断。
普通G1的起价为13,500美元,页面明确不含税和运费;G1 EDU的价格为Contact sales。这两个状态不能合并成“13,500美元即可获得SDK开发版”。如果还在选择型号,可先看宇树R1、G1、H1与H2对比和宇树机器人价格与购买指南。
G1 EDU约35千克以上,官方自由度范围为23至43,取决于腰、手与腕部选项;约2小时电池时间也是制造商给出的近似值,而非每种动作下的保证。开发代码必须读取实际关节配置和固件能力,不能把某个示例的关节数组直接套到所有G1 EDU。
| 项目 | 普通G1 | G1 EDU | 开发判断 |
|---|---|---|---|
| Secondary Development | / | YES | SDK项目应书面确认EDU配置 |
| 公开价格 | 13,500美元起,不含税运 | Contact sales | 普通版价格不能替代EDU报价 |
| 自由度 | 按具体配置 | 23至43 | 代码与消息需匹配实机 |
| 使用风险 | 动力人形机器人 | 动力人形机器人 | 均需隔离区、监护与停止措施 |
SDK2、Python接口和ROS 2是三条不同的环境路径
unitree_sdk2官方仓库是C++通信与控制库。当前README给出的预编译环境为Ubuntu 20.04 LTS,支持aarch64与x86_64,编译基准包括CMake 3.10以上、GCC 9.4.0和Make。这一组要求不能自动替换成ROS 2 Humble环境。
unitree_sdk2_python是另一条Python路径,要求Python 3.8以上,并列出cyclonedds 0.10.2、NumPy和OpenCV。Python接口方便读取和原型验证,但不表示所有底层示例都与C++仓库一一对应。
unitree_ros2官方仓库通过ROS 2与Unitree DDS消息和示例交互,测试组合包括Ubuntu 20.04+Foxy,以及推荐的Ubuntu 22.04+Humble。项目应先选一条主路径,建立可复现容器或主机记录,再讨论是否把其他接口放进同一系统。
| 路径 | 官方当前基准 | 适合的首次目标 | 常见误区 |
|---|---|---|---|
| C++ SDK2 | Ubuntu 20.04、GCC 9.4.0 | 编译并读取原生消息 | 直接套用ROS 2依赖 |
| Python SDK2 | Python 3.8+、cyclonedds 0.10.2 | 快速读取与记录状态 | 把Python便利性当成实时保证 |
| unitree_ros2 Humble | Ubuntu 22.04+Humble,推荐 | 发现话题并读取状态 | 假设所有G1功能完整支持 |
| unitree_ros2 Foxy | Ubuntu 20.04+Foxy | 维护既有环境 | 随意更换CycloneDDS分支 |
CycloneDDS版本、网卡和地址必须同时匹配
Unitree的ROS 2说明指出,机器人侧使用CycloneDDS 0.10.2。Foxy流程示例构建releases/0.10.x,Humble流程则可以跳过单独构建步骤。这里的含义是遵循当前官方兼容路径,而不是“版本越新越好”;升级DDS后应重新验证发现、序列化和QoS行为。
官方以太网示例把开发PC设为192.168.123.99、掩码255.255.255.0,并要求在CYCLONEDDS_URI中写入真实网络接口。第一次连接时应关闭与机器人无关的Wi-Fi、VPN和多余DDS接口,记录网卡名称、路由与防火墙状态,避免把发现失败误判成机器人故障。
网络连通只证明IP层可达,不能证明消息类型、QoS和固件完全一致。先确认仓库分支、消息包与实机版本,再通过`ros2 topic list`观察机器人实际暴露的话题;不要根据博客或另一型号的命名猜测控制话题。遇到传感器有数据而命令无响应时,可参考ROS 2传感器与命令QoS逐项比较可靠性、历史深度和截止期限。
| 检查层 | 只读验证 | 失败时先排查 |
|---|---|---|
| 以太网 | PC与机器人网段可达 | IP、掩码、网卡、VPN、防火墙 |
| DDS发现 | 能看到预期参与者与话题 | CYCLONEDDS_URI、接口、版本 |
| 消息 | 状态消息持续更新且字段合理 | 消息定义、仓库分支、固件 |
| QoS | 订阅稳定,无异常丢失 | reliability、history、depth和频率 |

第一次成功应定义为稳定读到状态数据
首次连接要在机器人固定、周围清空、现场监护和物理停止手段就绪的条件下进行。先让系统静止,不发布运动或力矩命令;确认设备型号、关节数量、电池状态和控制模式都与记录一致。
在ROS 2路径中,先source正确环境并运行`ros2 topic list`,再使用仓库中的G1/H1/H1-2状态读取示例,例如`read_low_state_hg`,观察IMU、关节位置、速度与电池消息是否持续更新。仓库存在G1低层与状态示例,说明可以从这些消息入手,但不能据此宣称G1所有功能均已完整ROS 2化。
把只读数据保存下来,记录时间戳、频率、空值、跳变和断连恢复。可用rosbag2记录、回放与QoS指南建立第一次基线。只有在状态链路可重复、消息与实机配置匹配后,才有条件评估下一阶段的受限命令。
| 顺序 | 动作 | 通过标准 | 此时不要做 |
|---|---|---|---|
| 1 | 核对G1 EDU与配置 | 订单、铭牌、关节和固件一致 | 按普通G1假设开发权限 |
| 2 | 固定网卡与DDS环境 | 稳定发现参与者和话题 | 同时开启多条不明网络路径 |
| 3 | 读取低层状态 | IMU、关节、电池持续且合理 | 发送行走或力矩命令 |
| 4 | 记录并重连 | 断连后按流程恢复且日志完整 | 把一次成功当成兼容证明 |
控制示例必须在模型、模式和停止链确认后再运行
低层控制示例可能绕过高层行为保护,特技或行走示例也会让约35千克以上的机器人迅速进入人员空间。Unitree明确提醒人形机器人结构复杂、动力强,应与人员保持足够安全距离;部分功能仍处在开发或测试过程中。
下一阶段应先限定单个关节或低幅动作、设置速度与角度上限、确认支撑和落脚空间,并安排一名不负责敲命令的安全观察员。急停与保护停机的职责不同,可在机器人急停与保护停机中先厘清。没有物理停止手段时,不应以软件终端中断代替。
如果准备接入ros2_control,还要先理解官方Unitree消息路径与通用硬件接口之间的适配层,不能因为两者都使用ROS 2就假定已经兼容。ros2_control硬件接口解释了状态接口、命令接口和控制器管理器需要怎样对应真实设备。

从实验室网络走向共享网络时要重新划定权限
DDS自动发现对实验室调试很方便,却可能在共享网络中暴露参与者、话题和命令面。第一次连接可使用与其他办公设备隔离的有线网段,随后再设计认证、访问控制、日志和更新流程。不要把机器人控制接口直接暴露到互联网。
ROS 2与DDS机器人安全可用于检查参与者身份、密钥、网络分区和最小权限。开发PC还应固定依赖版本,保存仓库commit或tag,并记录固件、消息包和CycloneDDS版本,避免数周后无法复现首次连接。
这套入门流程的终点不是让G1 EDU走起来,而是得到一条可审计的证据链:买的是支持二次开发的配置,软件环境符合官方当前说明,网络和DDS稳定,状态消息与实机一致,停止与权限边界已经建立。动作开发应在这条基线之上逐级扩展。
常见问题
普通G1也能直接使用SDK2和ROS 2开发吗?
不能仅凭普通G1的价格和外观这样判断。Unitree产品表只在G1 EDU的Secondary Development一栏标记YES;开发项目应向销售确认EDU订单配置、固件、接口与权限。
Ubuntu 22.04与ROS 2 Humble是否是官方推荐组合?
是,unitree_ros2当前把Ubuntu 22.04+Humble列为测试且推荐的组合。但C++ SDK2预编译基准是Ubuntu 20.04与GCC 9.4.0,两条路径不应无计划混装。
G1 EDU第一次连接应该运行哪个动作示例?
先不要运行动作示例。用`ros2 topic list`和`read_low_state_hg`等只读路径确认DDS、IMU、关节与电池状态,再完成停止、工作区和型号核对后,才进入受限控制测试。
已核验的官方资料
- Unitree:G1与G1 EDU官方产品表
- Unitree Robotics:unitree_sdk2
- Unitree Robotics:unitree_sdk2_python
- Unitree Robotics:unitree_ros2
最后核查:2026年8月6日