第1章:开发环境搭建:Ubuntu22.04 + ROS2 Humble 安装与验证

说实话,ROS2的环境搭建,看着简单,坑是真不少。

我刚开始接触Humble的时候,以为装个系统、配个源就完事了。结果呢?折腾了整整一个下午。嗯,今天就把我踩过的坑,还有我后来总结出的「稳如老狗」的安装流程,一次性讲清楚。

1.1 为什么选Ubuntu22.04 + Humble?

你可能要问:ROS2版本那么多,为啥非得是Humble?

我个人习惯是:选LTS配LTS。Ubuntu22.04是长期支持版,ROS2 Humble也是长期支持版。两个LTS凑一块,至少未来几年不用折腾大版本升级。我在项目中吃过非LTS版本的亏——刚调通一个驱动,系统就提示要升级了,你说烦不烦?

核心原则:ROS2 Humble 只支持 Ubuntu 22.04 (Jammy)。别想着在20.04或者24.04上硬装,我试过,依赖冲突能让你怀疑人生。

1.2 第一步:设置语言环境与编码

这一步很多人会跳过去。我建议你别跳。

为什么?因为ROS2的底层通信依赖UTF-8编码。如果你的系统默认是POSIX或者别的什么,编译时会出现一些莫名其妙的错误,比如中文注释乱码、日志打印不全。

# 检查当前编码
locale

# 如果显示不是 en_US.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

# 验证
locale

嗯,这里要注意:改完编码后,最好重启一下终端,或者重新登录。我记得有一次改完没重启,结果后面编译ROS2包时,报了一堆「Invalid byte sequence」的错误。说白了,就是编码没生效。

1.3 第二步:添加ROS2软件源

这一步是重中之重。很多新手栽就栽在源上。

ROS2的官方源在国内访问速度很慢,甚至有时候连不上。我曾经在客户现场,网络环境受限,apt update 等了十分钟还没反应。后来我学乖了——用镜像源。

我的个人习惯:优先使用中科大或清华的镜像源。速度快,稳定,而且和官方源完全同步。

# 1. 安装必要的工具
sudo apt install software-properties-common
sudo add-apt-repository universe

# 2. 添加ROS2 GPG密钥
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 3. 添加ROS2源(这里用中科大镜像)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.ustc.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 4. 更新源
sudo apt update

踩坑记录:我曾经直接用官方源,结果 curl 下载密钥时超时了。后来改用 raw.githubusercontent.com 的镜像地址才搞定。如果你也遇到类似问题,可以试试在 hosts 文件里加一条解析记录,或者直接用代理。

1.4 第三步:安装ROS2 Humble

ROS2的安装方式有两种:桌面版(Desktop)和基础版(Base)。

我个人建议:如果你是初学者,或者要做可视化开发,直接装桌面版。基础版没有 rviz2、没有 turtlesim,你连验证都费劲。

版本 包含内容 适用场景
ros-humble-desktop 所有工具、库、rviz2、turtlesim、demo 开发、学习、调试
ros-humble-ros-base 通信核心、基本库、无GUI工具 嵌入式、服务器、生产环境
# 安装桌面版(推荐)
sudo apt install ros-humble-desktop

# 或者安装基础版
# sudo apt install ros-humble-ros-base

安装过程大概需要5-10分钟,取决于你的网速。这时候你可以去泡杯咖啡。嗯,我每次装系统都是这么干的。

1.5 第四步:配置环境变量

装完了,不代表就能用了。你得告诉系统:ROS2在哪。

这一步很简单,但很多人会忘。我刚开始学的时候,每次打开新终端都要手动 source 一下,后来实在受不了了,才乖乖加到 .bashrc 里。

# 将ROS2环境变量写入bashrc
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

# 立即生效
source ~/.bashrc

注意:如果你用的是 zsh,记得把 .bashrc 改成 .zshrc。我有个同事就是没注意这个,折腾了半天说「怎么 source 了还是找不到命令」。

1.6 第五步:验证安装

环境搭好了,怎么知道它能不能用?

我最喜欢的方式——跑一下 turtlesim。这个小乌龟程序,说白了就是ROS2的「Hello World」。它能直观地告诉你:节点通信、话题发布、服务调用,这些核心机制是否正常。

# 打开第一个终端,启动乌龟模拟器
ros2 run turtlesim turtlesim_node

# 打开第二个终端,启动键盘控制
ros2 run turtlesim turtle_teleop_key

如果一切正常,你会看到一个蓝色背景的窗口,中间有一只小乌龟。用键盘的上下左右键,就能控制它移动。

嗯,这里要注意:如果窗口没弹出来,或者报错说找不到 turtlesim,说明你的桌面版没装全。回去检查一下 ros-humble-desktop 是否安装成功。

我的验证清单:

  • ros2 node list —— 能看到 /turtlesim 节点
  • ros2 topic list —— 能看到 /turtle1/cmd_vel 等话题
  • ros2 topic echo /turtle1/cmd_vel —— 按键盘时能看到数据变化

这三条命令跑通,基本就稳了。

1.7 常见踩坑与解决方案

最后,我总结一下我遇到过的几个典型问题。你如果也碰到了,别慌,按下面的方法处理就行。

问题1:apt update 报错「Certificate verification failed」

原因:系统时间不对,或者证书过期。

解决:先同步时间 sudo apt install ntpdate && sudo ntpdate time.google.com,再重新添加密钥。

问题2:source setup.bash 后,ros2 命令找不到

原因:路径没写对,或者 shell 配置文件没生效。

解决:检查 /opt/ros/humble/ 目录是否存在。如果存在,手动执行 source /opt/ros/humble/setup.bash 试试。

问题3:turtlesim 窗口一片空白

原因:缺少 GUI 依赖,或者显卡驱动问题。

解决:安装 sudo apt install ros-humble-rviz2,如果 rviz2 能打开,说明 GUI 环境没问题。否则检查一下你的 Ubuntu 桌面环境是否正常。

好了,第1章的内容就到这里。环境搭好了,下一章我们就可以正式开始写ROS2节点了。说实话,搭环境是最枯燥的一步,但也是最关键的一步。底子打好了,后面学起来就顺了。


公众号:蓝海资料掘金营,微信deep3321