跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / BashAI算法

宇树 Unitree 机器人 ROS 2 Humble 环境部署实战 (Go2/B2/H1)

本指南详解在 Ubuntu 22.04 上部署 ROS 2 Humble 并连接宇树 Unitree 机器人(Go2/B2/H1)的完整流程。重点涵盖系统环境配置、unitree_ros2 功能包编译、静态 IP 网络设置及 CycloneDDS 通信调试。通过修改 setup.sh 脚本适配网卡与 ROS 版本,实现底层数据直接交互,解决常见连接失败问题,帮助开发者快速搭建真实硬件开发环境。

佛系玩家发布于 2026/3/23更新于 2026/10/379 浏览

为什么选择 unitree_ros2

宇树官方的 unitree_ros2 仓库提供了一种全新的 ROS 2 集成方式。与传统的通过 SDK 封装再桥接到 ROS 2 的方式不同,它利用了 Unitree SDK 2 (基于 CycloneDDS) 和 ROS 2 (同样使用 DDS) 在通信机制上的共性。这使得 ROS 2 节点可以直接与机器人的底层 DDS 通信,无需额外的 SDK 接口封装,实现了更原生、更高效的数据交换。

本教程将带你走通这个配置流程,重点针对 ROS 2 Humble 版本进行了优化,可跳过 Foxy 版本复杂的 CycloneDDS 编译步骤。

安装 ROS 2 Humble (Ubuntu 22.04)

如果你已经装好了 ROS 2 Humble,这部分可以跳过。

设置系统环境

确保你的系统支持 UTF-8,这能避免后续很多乱码问题。

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

添加软件源并安装

添加 GPG 密钥并设置 ROS 2 仓库,然后安装桌面完整版(包含 RVIZ 和示例)。

sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
sudo apt install ros-humble-desktop

安装构建工具

colcon 是 ROS 2 的标准构建工具,我们后续编译工作空间时会用到它。虽然通常作为依赖自动安装,但手动确认一下更稳妥。

sudo apt install python3-colcon-common-extensions

配置环境变量

将 ROS 2 的环境设置脚本添加到 .bashrc 中,这样每次打开新终端都会自动加载。

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证安装

打开两个终端窗口测试一下:

终端 1 (Talker):

ros2 run demo_nodes_cpp talker

终端 2 (Listener):

ros2 run demo_nodes_py listener

如果在 Listener 终端能看到 Talker 发送的 [INFO] 消息,恭喜,ROS 2 Humble 已成功安装!

部署 Unitree ROS 2 功能包

这是核心环节。我们将配置 unitree_ros2 以连接到真实机器人。

安装特定依赖

unitree_ros2 需要一些特定的 ROS 2 包和库。

sudo apt update
sudo apt install ros-humble-rmw-cyclonedds-cpp
sudo apt install ros-humble-rosidl-generator-dds-idl
sudo apt install libyaml-cpp-dev
sudo apt install git

克隆与编译工作空间

直接编译 unitree_go 和 unitree_api 包。这里有个关键点:官方文档提到 Foxy 版本必须手动下载编译 cyclonedds,但我们用 Humble,自带的 rmw_cyclonedds 版本已兼容,省去了很多麻烦。

先克隆官方仓库到主目录:

cd ~
git clone https://github.com/unitreerobotics/unitree_ros2

进入工作空间并编译:

cd ~/unitree_ros2/cyclonedds_ws
source /opt/ros/humble/setup.bash
colcon build

等待编译完成,你会看到 install, build, log 目录生成。

配置网络(连接真实机器人)

  1. 物理连接:用网线将 Ubuntu 电脑与机器人连接。
  2. 查找网卡名称:运行 ifconfig 或 ip a,找到有线网卡名称,例如 enp3s0 或 eth0。
  3. 设置静态 IP:
    • 打开 Ubuntu 的'网络设置'。
    • 找到该有线连接,进入 IPv4 设置。
    • 模式改为'手动'。
    • 设置地址:
      • 地址: 192.168.123.99
      • 子网掩码: 255.255.255.0
    • 点击'应用'并重新连接网络。

修改环境脚本

unitree_ros2 提供了一个 setup.sh 脚本来配置 DDS。我们需要根据当前环境(Humble 和 网卡名称)修改它。

打开脚本文件:

gedit ~/unitree_ros2/setup.sh

你需要做两处关键修改:

  1. 将 source /opt/ros/foxy/setup.bash 改为 source /opt/ros/humble/setup.bash。
  2. 将 <NetworkInterface name="enp3s0" ... /> 中的网卡名改为你实际使用的网卡名(如 eth0)。

修改后的内容大致如下:

#!/bin/bash
echo "Setup unitree ros2 environment"
source /opt/ros/humble/setup.bash
source $HOME/unitree_ros2/cyclonedds_ws/install/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces> \
 <NetworkInterface name="YOUR_INTERFACE_NAME" priority="default" multicast="default" /> \
 </Interfaces></General></Domain></CycloneDDS>'

保存并关闭。

连接与测试

  1. 启动机器人。
  2. 打开一个新终端,运行你修改后的 setup.sh 来加载所有环境:
source ~/unitree_ros2/setup.sh
  1. 查看数据:
ros2 topic echo /sportmodestate

如果一切正常,你将看到机器人的状态数据开始刷屏。你也可以运行 ros2 topic list 查看是否出现 /api/sport/request, /lf/lowstate 等话题。

编译和运行示例

unitree_ros2 仓库还提供了一个 example 工作空间用于验证。

  1. 打开一个新终端。
  2. 编译示例:
cd ~/unitree_ros2/example
colcon build
  1. 加载 Unitree 环境(这一步必须执行,否则找不到路径):
source ~/unitree_ros2/setup.sh
  1. 运行示例(例如:读取运动状态):
./install/unitree_ros2_example/bin/read_motion_state

你将在终端看到格式化后的机器人状态信息,包括位置、速度等数据。

常见问题与排查

Q: 我运行 ros2 topic list 为什么看不到机器人的话题?

A: 99% 是网络或配置问题。

  1. 检查物理连接:网线是否插好?机器人是否开机?
  2. 检查 IP 地址:电脑的 IP 是否静态设置为了 192.168.123.99?
  3. 检查 setup.sh:你是否 source 了修改后的 setup.sh?
  4. 检查网卡名称:CYCLONEDDS_URI 变量中的 name 是否绝对正确?
  5. 检查防火墙:尝试临时禁用防火墙 sudo ufw disable。

Q: colcon build 编译 cyclonedds_ws 失败了。

A: 确保你在编译前运行了 source /opt/ros/humble/setup.bash,并且已经安装了 ros-humble-rmw-cyclonedds-cpp 等所有依赖。

目录

  1. 为什么选择 unitree_ros2
  2. 安装 ROS 2 Humble (Ubuntu 22.04)
  3. 设置系统环境
  4. 添加软件源并安装
  5. 安装构建工具
  6. 配置环境变量
  7. 验证安装
  8. 部署 Unitree ROS 2 功能包
  9. 安装特定依赖
  10. 克隆与编译工作空间
  11. 配置网络(连接真实机器人)
  12. 修改环境脚本
  13. 连接与测试
  14. 编译和运行示例
  15. 常见问题与排查
  16. Q: 我运行 ros2 topic list 为什么看不到机器人的话题?
  17. Q: colcon build 编译 cyclonedds_ws 失败了。

更多推荐文章

查看全部
  • Rust 异步微服务架构最佳实践与反模式
  • VoxCPM-1.5-TTS-WEB-UI 低延迟高音质语音生成方案
  • C++ 最小生成树详解
  • 网络安全行业发展前景与零基础转行建议
  • PyTorch 部署 Stable Diffusion 3.5 FP8:环境配置与 CUDA 优化
  • 大模型微调(Fine-Tuning)实战指南:基于 Hugging Face 与 GPT2
  • Discord 机器人创建流程详解
  • 大模型微调技术详解:从原理到实践
  • 粒子群优化(PSO)改进算法在全局最优解搜索中的应用
  • 文心一言开源模型部署及多维度测评
  • XGBoost 机器学习核心原理与实战指南
  • 大模型技术学习路线与核心技能解析
  • 基于改进 YOLOv8 的美食图像分割系统实战
  • AIGC 延迟优化:基于 C++ 的零拷贝与异步调度方案
  • Ubuntu 24.04 Server 系统安装及配置
  • CentOS 下五种 Python 定时发送邮件方案实战
  • Python 实现月相计算与可视化效果展示
  • C++11 右值引用与移动语义详解:从性能瓶颈到零拷贝优化
  • 基于 Leaflet 和天地图的免费运动场所 WebGIS 可视化
  • Java 使用 Spire.PDF 将 PDF 转换为 Word 文档的两种模式

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online