跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI算法

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

Ubuntu 22.04 系统下 ROS 2 Humble 环境配置宇树 Unitree 机器人(Go2/B2/H1)的完整流程。涵盖 ROS 2 基础安装、unitree_ros2 功能包依赖处理、静态网络 IP 配置及 DDS 通信环境调试。通过修正 setup.sh 脚本中的网卡与版本信息,实现 PC 端与机器人底层直接通信,解决话题无法发现等常见问题。

dehua dong发布于 2026/4/9更新于 2026/6/824 浏览

宇树 Unitree 机器人 ROS 2 Humble 环境部署指南

本文档面向希望在 ROS 2 (Humble) 环境下开发宇树 (Unitree) 机器人(支持 Go2, B2, H1)的开发者,提供从零开始的部署指南。我们将首先在 Ubuntu 22.04 上安装 ROS 2 Humble,然后重点讲解如何配置 unitree_ros2 功能包,实现 ROS 2 节点与机器人底层 DDS 系统的直接通信。本教程基于官方文档,并针对 Humble 环境进行了优化,可跳过 Foxy 版本复杂的 CycloneDDS 编译步骤。

核心环境

  • 操作系统: Ubuntu 22.04 (Jammy)
  • ROS 2 版本: Humble Hawksbill (LTS)
  • 目标硬件: Unitree Go2 / B2 / H1 (真实机器人)

一、前言:为什么选择 unitree_ros2?

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

二、安装 ROS 2 Humble (Ubuntu 22.04)

如果您已经安装好了 ROS 2 Humble,可以跳过此部分。

1. 设置 UTF-8 区域设置

确保您的系统支持 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

2. 添加 ROS 2 软件源

添加 GPG 密钥并设置 ROS 2 仓库。

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

3. 安装 ROS 2 (Humble)

sudo apt update
# 安装桌面完整版,包含 RVIZ 和示例
 apt install ros-humble-desktop
sudo
3.1 安装 colcon 构建工具

colcon 是 ROS 2 的标准构建工具,我们后续编译工作空间时会用到它。

# 此包通常作为 ros-humble-desktop 的依赖被自动安装
# 为确保万无一失,我们手动执行一次
sudo apt update
sudo apt install python3-colcon-common-extensions

4. 设置环境变量

将 ROS 2 的环境设置脚本添加到您的 .bashrc 中,以便新终端自动加载。

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

5. 测试安装

打开两个终端。

终端 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 以连接到您的真实机器人。

1. 安装特定依赖

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 # (如果尚未安装)

2. 克隆与编译工作空间

💡 关键提示 (Humble vs Foxy):

官方文档指出,如果您使用 ROS 2 Foxy,必须手动下载和编译特定版本的 cyclonedds (0.10.x)。

但我们使用 Humble,可以跳过这个繁琐的步骤!Humble 自带的 rmw_cyclonedds 版本已兼容。

我们直接编译 unitree_go 和 unitree_api 包:

# 进入工作空间
cd ~/unitree_ros2/cyclonedds_ws
# (重要) 确保 ROS 2 环境已加载
source /opt/ros/humble/setup.bash
# 编译所有包
colcon build

等待编译完成,您应该会看到 install, build, log 目录。

克隆官方仓库到您的主目录:

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

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

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

4. 修改环境脚本 (最关键一步)

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

修改文件内容:

原始文件内容:

#!/bin/bash
echo "Setup unitree ros2 environment"
source /opt/ros/foxy/setup.bash # <--- (1) 这里是 foxy
source $HOME/unitree_ros2/cyclonedds_ws/install/setup.bash
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
    <NetworkInterface name="enp3s0" priority="default" multicast="default" />
</Interfaces></General></Domain></CycloneDDS>'

修改后 (适配您的环境):

#!/bin/bash
echo "Setup unitree ros2 environment"
source /opt/ros/humble/setup.bash # <--- (1) 必须改为 humble
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>'

(例如,如果您的网卡是 eth0,就改成 name="eth0")

打开脚本文件进行修改:

gedit ~/unitree_ros2/setup.sh

5. 连接与测试

  1. 启动机器人。

查看数据:

ros2 topic echo /sportmodestate

如果一切正常,您将看到机器人的状态数据开始刷屏,部署成功!

测试连接:

ros2 topic list

如果网络配置正确,DDS 会自动发现机器人。您应该能看到一系列来自机器人的话题,例如:

/api/sport/request
/lf/lowstate
/sportmodestate
/wirelesscontroller ...

打开一个新终端,运行您修改后的 setup.sh 来加载所有环境:

source ~/unitree_ros2/setup.sh

四、编译和运行示例

unitree_ros2 仓库还提供了一个 example 工作空间。

  1. 打开一个新终端。

运行示例(例如:读取运动状态):

# 确保您在 example 目录下
./install/unitree_ros2_example/bin/read_motion_state

您将在终端看到格式化后的机器人状态信息:

[INFO] [1697525196.266174885] [motion_state_suber]: Position -- x: 0.567083; y: 0.213920; z: 0.052338; body height: 0.320000
[INFO] [1697525196.266230044] [motion_state_suber]: Velocity -- vx: -0.008966; vy: -0.001431; vz: -0.019455; yaw: -0.002131 ...

编译示例:

cd ~/unitree_ros2/example
colcon build

加载 Unitree 环境(必须!):

source ~/unitree_ros2/setup.sh

五、总结与常见问题 (FAQ)

本教程详细介绍了如何在 Ubuntu 22.04 + ROS 2 Humble 环境下,部署 unitree_ros2 功能包以连接真实机器人硬件。最关键的步骤是修改 setup.sh 脚本,使其指向 humble 并使用正确的网卡名称。

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 机器人 ROS 2 Humble 环境部署指南
  2. 核心环境
  3. 一、前言:为什么选择 unitree_ros2?
  4. 二、安装 ROS 2 Humble (Ubuntu 22.04)
  5. 1. 设置 UTF-8 区域设置
  6. 2. 添加 ROS 2 软件源
  7. 3. 安装 ROS 2 (Humble)
  8. 安装桌面完整版,包含 RVIZ 和示例
  9. 3.1 安装 colcon 构建工具
  10. 此包通常作为 ros-humble-desktop 的依赖被自动安装
  11. 为确保万无一失,我们手动执行一次
  12. 4. 设置环境变量
  13. 5. 测试安装
  14. 三、部署 Unitree ROS 2 功能包
  15. 1. 安装特定依赖
  16. 2. 克隆与编译工作空间
  17. 进入工作空间
  18. (重要) 确保 ROS 2 环境已加载
  19. 编译所有包
  20. 3. 配置网络(连接真实机器人)
  21. 4. 修改环境脚本 (最关键一步)
  22. 5. 连接与测试
  23. 四、编译和运行示例
  24. 确保您在 example 目录下
  25. 五、总结与常见问题 (FAQ)
  26. Q: 我运行 ros2 topic list 为什么看不到机器人的话题?
  27. Q: colcon build 编译 cyclonedds_ws 失败了。
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 自然语言处理在社交媒体分析中的应用与实战
  • C++ 二叉搜索树 (BST) 原理与核心实现详解
  • 代码从本地 Push 到服务上线的全流程解析
  • 安卓手机使用 Termux 部署 AstrBot 与 NapCat 搭建 QQ 机器人
  • AstrBot + NapCat 快速部署智能 QQ 机器人及 cpolar 公网访问
  • Ubuntu 22.04 Realtek 8922AE WiFi 驱动安装指南
  • C++ 类与对象详解:封装、this 指针与默认成员函数
  • 前端使用 Document Picture-in-Picture API 实现视频画中画及同步控制
  • AI 时代技术民主化:为何文科生或成最大受益者
  • C++ 二叉搜索树详解:增删查改与 Key/Value 场景实现
  • LLaMA Factory 训练可视化:Loss 曲线解析与性能优化
  • Flet:Python 全栈开发者的跨平台应用框架
  • Java 表达式引擎技术选型分析:SpEL 与 QLExpress
  • OpenClaw 16 款 AI Agent 选型指南
  • Sass、Less 与 Scss 核心差异详解
  • 宏智树AI:基于ChatGPT的学术论文写作辅助工具
  • C/C++ 核心:函数指针与回调函数实战详解
  • Docker 容器技术从入门到实战教程
  • 通义千问插件在 IDEA 中的 Java 开发实战应用
  • 基于 Java 和高德开放平台 WebAPI 的 POI 搜索集成实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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