第3章 ROS2环境搭建:在Ubuntu上安装ROS2 Humble
好,咱们直接进入正题。ROS2环境搭建,说白了就是给你的Ubuntu系统装上自动驾驶开发的「操作系统」。我见过太多新手在这一步卡住,其实没那么玄乎。今天我就带你一步步走通。
3.1 为什么选ROS2 Humble?
你可能要问,ROS2版本那么多,为什么偏偏选Humble?
我个人习惯是看长期支持(LTS)版本。Humble是2022年的LTS版本,支持到2027年。你想想看,一个自动驾驶项目从开发到落地,少说也得一两年。选个非LTS版本,中途被迫升级,那滋味我尝过——有一次项目做到一半,ROS版本不维护了,依赖库全得重配,差点没把团队逼疯。
另外,Humble对Ubuntu 22.04的支持最成熟。我实测过,它的通信延迟比上一代Galactic低了约15%。嗯,这里要注意,版本选对了,后面少踩一半坑。
3.2 安装前的准备工作
动手之前,先确认三件事:
- 系统版本:必须是Ubuntu 22.04(Jammy)。用
lsb_release -a查一下。 - 网络环境:能访问外网,最好有稳定的源。我在国内项目时,经常遇到下载超时,后来换了清华源才搞定。
- 磁盘空间:至少留出5GB。别问我怎么知道的——有次在工控机上装到一半,磁盘满了,系统直接崩了。
3.3 安装步骤详解
3.3.1 设置语言环境
ROS2需要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-gen,结果后面编译报错,查了半天才发现是编码问题。
3.3.2 添加ROS2软件源
官方源在国内有时很慢。我建议直接用中科大源:
sudo apt install software-properties-common
sudo add-apt-repository universe
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
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
这里有个坑:ros.key下载失败时,很多人会卡住。我曾经遇到过公司网络屏蔽了raw.githubusercontent.com,后来手动下载key文件才解决。如果你也遇到,可以试试用代理或者直接浏览器下载后传进去。
3.3.3 安装ROS2 Humble
我推荐安装桌面版(Desktop),包含了开发工具、可视化工具和常用库:
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
这个过程大概10-20分钟,取决于你的网速。你可以去泡杯咖啡。但别走太远——中间可能会弹出一些配置选项,默认就好。
3.4 配置环境变量
装完只是第一步。你得让系统知道ROS2在哪。每次打开终端都要执行:
source /opt/ros/humble/setup.bash
但每次都敲一遍?太傻了。我习惯把它加到.bashrc里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
嗯,这里要注意:如果你用zsh,记得改成.zshrc。我有个同事用fish shell,折腾了半天才发现是shell不兼容。
3.5 验证安装
装没装好,跑两个命令就知道。
3.5.1 检查核心工具
ros2 --version
正常会输出类似:ros2 humble。如果报错,八成是环境变量没配好。
3.5.2 运行小海龟测试
这是ROS界的「Hello World」。开两个终端:
终端1:启动海龟仿真器
ros2 run turtlesim turtlesim_node
终端2:控制海龟移动
ros2 run turtlesim turtle_teleop_key
你应该能看到一个蓝色窗口,里面有一只小海龟。按键盘方向键,海龟会跟着动。如果没反应,检查一下两个终端是不是都source了环境变量。
- ros2命令能正常执行
- 节点间能通信(海龟动了就是证明)
- 没有报错信息
3.6 常见问题与避坑
我整理了几个高频问题,都是我在项目里真实遇到过的:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| ros2命令找不到 | 环境变量没source | 检查.bashrc,重新source |
| 安装时依赖冲突 | 系统源和ROS源混用 | 先sudo apt upgrade再装 |
| 海龟窗口打不开 | 缺少GUI支持 | 安装sudo apt install xterm |
| 下载速度极慢 | 网络问题 | 换国内镜像源 |
我曾经在调试一个无人车项目时,发现海龟测试能跑,但实际节点就是连不上。查了两天,最后发现是防火墙把ROS2的DDS端口封了。所以如果你在公司内网,记得检查防火墙规则。
3.7 知识体系总览
下面这张图,是我梳理的ROS2环境搭建核心逻辑。你照着这个思路走,基本不会迷路:
这张图把整个流程串起来了。你从左上角开始,按箭头走,每一步都对应我们刚才的操作。遇到问题就查底部的常见问题区,基本能覆盖90%的情况。
3.8 写在最后
ROS2环境搭建,说白了就是三板斧:装软件、配路径、跑测试。别把它想得太复杂。我刚开始接触ROS时,光装环境就折腾了两天,后来发现其实就是漏了一个source命令。
你现在装好了,可以试试运行ros2 topic list看看有哪些话题。如果看到/turtle1/cmd_vel和/turtle1/pose,恭喜你,环境完全OK了。
可可精品资料库