【保姆级教程】从零部署宇树 Unitree 机器人 ROS 2 环境 (Go2/B2/H1) (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 (真实机器人)

[TOC]

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

宇树官方的 unitree_ros2 仓库 (https://github.com/unitreerobotics/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。

Bash

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 仓库。

Bash

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)

Bash

sudo apt update # 安装桌面完整版,包含 RVIZ 和示例 sudo apt install ros-humble-desktop 

3.1 (重要) 安装 colcon 构建工具

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

Bash

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

4. 设置环境变量

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

Bash

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc # 使其在当前终端生效 source ~/.bashrc 

5. 测试安装

打开两个终端。

终端 1 (Talker):

Bash

ros2 run demo_nodes_cpp talker 

终端 2 (Listener):

Bash

ros2 run demo_nodes_py listener 

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

🚀 三、第二部分:部署 Unitree ROS 2 功能包

这是本教程的核心。我们将配置 unitree_ros2 以连接到您的真实机器人。

1. 安装特定依赖

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

Bash

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_gounitree_api 包:Bash

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

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

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

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

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

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

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

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

  1. 保存并关闭文件。

修改文件内容:修改前 (原始文件内容):Bash

#!/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" /> # <--- (2) 这里是 enp3s0                         </Interfaces></General></Domain></CycloneDDS>' 

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

#!/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" /> # <--- (2) 必须改为您在 3.2 步中找到的网卡名                         </Interfaces></General></Domain></CycloneDDS>' 

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

打开脚本文件:Bash

gedit ~/unitree_ros2/setup.sh 

5. 连接与测试

  1. 启动机器人

查看数据:Bash

ros2 topic echo /sportmodestate 

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

测试连接:Bash

ros2 topic list 

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

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

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

source ~/unitree_ros2/setup.sh 

✅ 四、第四部分:编译和运行示例

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

  1. 打开一个新终端

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

# 确保您在 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 ... 

编译示例:Bash

cd ~/unitree_ros2/example colcon build 

加载 Unitree 环境(必须!):Bash

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 等所有依赖。


希望这篇教程对您有帮助!点赞、收藏、加关注,我们下次再见!

Read more

虚幻版Pico大空间VR入门教程 04 —— PicoOpenXR和PicoXR插件对于PDC串流、SteamVR串流、OpenXR串流对比 和 手势追踪对比

虚幻版Pico大空间VR入门教程 04 —— PicoOpenXR和PicoXR插件对于PDC串流、SteamVR串流、OpenXR串流对比 和 手势追踪对比

省流 串流方式最重要,笔者使用【Pico4UE 企业版】一体机,使用【PicoOpenXR插件+OpenXR插件】【企业串流v2.0的apk+exe应用】和【OpenXR串流方式】进行有线串流, 串流调试时可以正常手势追踪,打包apk和exe的VR手势追踪正常。 文章包含整理的百度云资源、SteamVR串流、不同UE版本的手势追踪对比记录,曾经的踩坑笔记(略长)。 插件文档 PicoXR和PicoOpenXR 插件文档 https://developer-cn.picoxr.com/document/ PicoXR 开发文档 https://developer-cn.picoxr.com/document/unreal/ PicoOpenXR 开发文档 https://developer-cn.picoxr.com/document/unreal-openxr/ 插件下载 PicoXR和PicoOpenXR Pico SDK

2026最火的6款免费AI写作软件测评:ai写网文哪个好用?这款ai消痕工具

2026最火的6款免费AI写作软件测评:ai写网文哪个好用?这款ai消痕工具

很多朋友想在业余时间写写番茄、起点网文或者搞搞短剧赚点外快,但总是卡在“憋不出字”或者“大纲写崩”上。现在都2026年了,用ai写作软件来辅助写小说早就不是秘密了。 但是,网文平台的审核越来越严,很多新手直接用AI生成的文章发出去,立马就被平台判定为“AI生成”导致限流,不仅没流量,连全勤奖都拿不到。 今天,我们就抛开那些晦涩难懂的技术术语,用大白话给大家实测目前市面上热度最高的6款免费ai写作平台。到底ai写网文哪家强?怎么解决让人头疼的“机器味”?这篇超详细的避坑指南,建议想靠文字搞钱的朋友直接收藏! 一、 6大热门免费AI小说工具优缺点大盘点 我们选了大家最常搜的几款工具,直接看它们在实际写小说、写剧本时的真实表现。 1. 豆包:起名和找灵感的“点子王” * 优点:速度飞快,完全免费。你如果卡文了,或者不知道主角叫什么、书名怎么起才能吸引人,直接问豆包,它能一秒钟给你吐出几十个极其符合抖音、小红书调性的网感标题和名字。 * 缺点:千万别让它直接给你写正文!它的AI味太重了,动不动就是“嘴角勾起一抹弧度”、“倒吸一口凉气”。把这种文发到小说平台,

二次元AI绘画工具实战指南:从入门到进阶

本文面向想要使用AI工具生成二次元风格图像的开发者和创作者,从工具选择、环境配置、提示词工程到进阶技巧,提供一份完整的实战指南。 一、主流工具技术栈对比 目前二次元AI绘画主要有以下几种技术路线: 1.1 Stable Diffusion 本地部署 技术架构:基于Latent Diffusion Model,开源可本地运行 硬件要求: * GPU:NVIDIA显卡,8GB+显存(推荐12GB+) * 内存:16GB+ * 存储:50GB+(模型文件较大) 常用界面: * WebUI(AUTOMATIC1111):功能全面,插件生态丰富 * ComfyUI:节点式工作流,适合复杂流程编排 二次元常用模型: * Anything系列:经典二次元模型 * Counterfeit:高质量动漫风格 * MeinaMix:细节丰富的二次元模型 优势:可高度定制,隐私性好,技术上限高 劣势:配置门槛高,

2026年用豆包降维普AIGC查重率的正确姿势(附完整指令)

2026年用豆包降维普AIGC查重率的正确姿势(附完整指令)

我用豆包改了3天论文,AIGC率从61%只降到了43% 考虑用豆包降维普AIGC的同学,先听我说完这个教训。 上个月我的论文维普AIGC检测结果61.4%,学校要求20%以下。我第一反应就是用豆包来改写,毕竟免费嘛。于是我把论文分成十几段,一段一段喂给豆包,让它“用更自然的方式重新表述”。改了整整3天,信心满满再测一次:43.2%。降了18个百分点,离达标还差23个百分点。 后来我才搞明白,不是豆包不行,是我的用法有问题。直接让AI改AI写的内容,改出来的还是AI风格。就好比让一个说普通话的人模仿方言,怎么模仿都带着普通话味儿。 这篇文章就把我后来摸索出来的正确用法整理出来。附上完整的指令模板,直接复制就能用。 为什么直接让豆包改写效果差 先搞清楚问题出在哪。豆包本身也是一个大语言模型,它生成的文本天然就带有AI的统计特征。你让它“重新表述”一段话,它输出的内容在词汇选择、句式结构、过渡方式上跟原文风格高度一致。维普检测引擎看的就是这些统计特征,所以改来改去AIGC率降不下去。 我做过一个对比实验。同一段500字的AI生成文本,分别用三种方式处理: 第一种,直接让豆包