跳到主要内容宇树 Unitree 机器人 ROS 2 环境部署指南 (Go2/B2/H1) | 极客日志Shell / BashAI
宇树 Unitree 机器人 ROS 2 环境部署指南 (Go2/B2/H1)
提供在 Ubuntu 22.04 上部署 ROS 2 Humble 并配置宇树 Unitree 机器人(Go2/B2/H1)环境的详细指南。内容包括 ROS 2 安装、依赖配置、网络静态 IP 设置、DDS 通信脚本修改及连接测试。重点解决了 Humble 版本下无需手动编译 CycloneDDS 的问题,确保开发者能直接通过 ROS 2 节点与机器人底层进行高效数据交换。
CloudNative1 浏览 简介
本文提供在 Ubuntu 22.04 上部署 ROS 2 Humble 并配置宇树 Unitree 机器人(支持 Go2, B2, H1)环境的详细指南。我们将首先在 Ubuntu 22.04 上安装 ROS 2 Humble,然后重点讲解如何配置 unitree_ros2 功能包,实现 ROS 2 节点与机器人底层 DDS 系统的直接通信。本教程基于官方文档,并针对 Humble 环境进行了优化,可跳过 Foxy 版本复杂的 CycloneDDS 编译步骤。
核心环境:
操作系统:
ROS 2 版本: Humble Hawksbill (LTS)目标硬件: Unitree Go2 / B2 / H1 (真实机器人)一、安装 ROS 2 Humble (Ubuntu 22.04)
如果您已经安装好了 ROS 2 Humble,可以跳过此部分。
1. 设置 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 软件源
sudo apt install curl gnupg lsb-release
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
sudo apt install ros-humble-desktop
3.1 安装 colcon 构建工具
colcon 是 ROS 2 的标准构建工具,我们后续编译工作空间时会用到它。
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. 测试安装
ros2 run demo_nodes_cpp talker
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
source /opt/ros/humble/setup.bash
colcon build
等待编译完成,您应该会看到 install, build, log 目录。
cd ~
git clone https://github.com/unitreerobotics/unitree_ros2
3. 配置网络(连接真实机器人)
- 物理连接:使用网线将您的 Ubuntu 电脑与机器人连接。
- 查找网卡名称:打开终端,运行
ifconfig 或 ip a。找到您连接机器人的那个有线网卡,记下其名称,例如 enp3s0 或 eth0。
- 设置静态 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
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
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. 连接与测试
ros2 topic echo /sportmodestate
如果一切正常,您将看到机器人的状态数据开始刷屏,部署成功!
如果网络配置正确,DDS 会自动发现机器人。您应该能看到一系列来自机器人的话题,例如:
/api/sport/request
/lf/lowstate
/sportmodestate
/wirelesscontroller
...
打开一个新终端,运行您修改后的 setup.sh 来加载所有环境:
source ~/unitree_ros2/setup.sh
三、编译和运行示例
unitree_ros2 仓库还提供了一个 example 工作空间。
cd ~/unitree_ros2/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
source ~/unitree_ros2/setup.sh
四、总结与常见问题 (FAQ)
本教程详细介绍了如何在 Ubuntu 22.04 + ROS 2 Humble 环境下,部署 unitree_ros2 功能包以连接真实机器人硬件。最关键的步骤是修改 setup.sh 脚本,使其指向 humble 并使用正确的网卡名称。
Q: 我运行 ros2 topic list 为什么看不到机器人的话题?
- 检查物理连接:网线是否插好?机器人是否开机?
- 检查 IP 地址:您电脑的 IP 是否静态设置为了
192.168.123.99?
- 检查
setup.sh:您是否 source 了修改后的 setup.sh?
- 检查网卡名称:
CYCLONEDDS_URI 变量中的 name 是否绝对正确?
- 检查防火墙:
sudo ufw disable 临时禁用防火墙试试。
Q: colcon build 编译 cyclonedds_ws 失败了。
A: 确保您在编译前运行了 source /opt/ros/humble/setup.bash,并且已经安装了 ros-humble-rmw-cyclonedds-cpp 等所有依赖。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown 转 HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
- HTML 转 Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online