第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