第1章:ROS2安装——从版本选择到环境验证
大家好,我是你们的ROS2引路人。今天咱们来聊聊ROS2的安装。说实话,这一步看似简单,但我在带学生和做项目时,发现很多人卡在了这里。不是装错了版本,就是环境没配好,最后跑demo时一脸懵。
嗯,咱们一步步来。先搞清楚几个关键问题。
1.1 ROS2的版本选择——别选错了
ROS2的版本更新挺快的,基本一年一个大版本。我个人的建议是:选LTS(长期支持)版本。为什么呢?
- Humble Hawksbill(2022年发布,支持到2027年)——目前最稳的选择。我自己的开发机用的就是它。
- Iron Irwini(2023年发布)——新特性多,但有些包还没完全适配。
- Rolling——滚动版,适合尝鲜,但不建议用于生产环境。
核心建议:如果你用的是Ubuntu 22.04,直接上Humble。这是最稳妥的组合。我在项目中遇到过有人装了Jazzy(当时的最新版),结果发现某个驱动包不兼容,折腾了两天。后来换回Humble,半小时搞定。
| Ubuntu版本 | 推荐ROS2版本 | 支持周期 |
|---|---|---|
| Ubuntu 22.04 | Humble Hawksbill | 至2027年 |
| Ubuntu 24.04 | Jazzy Jalisco | 至2029年 |
小技巧:如果你不确定自己的Ubuntu版本,终端里敲 lsb_release -a 就能看到。别问我为什么知道——我见过有人对着Ubuntu 20.04硬装Humble,结果依赖全崩了。
1.2 安装方式——apt还是源码?
ROS2的安装方式主要有两种。说白了,就是「省心版」和「折腾版」。
方式一:apt安装(推荐)
这是我最常用的方式。apt安装就像去超市买速冻水饺——开袋即食,省时省力。
# 1. 设置locale
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. 添加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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 3. 安装ROS2
sudo apt update
sudo apt install ros-humble-desktop # 桌面版,包含GUI工具
# 或者:sudo apt install ros-humble-ros-base # 基础版,无GUI
注意:安装过程中如果提示「无法定位软件包」,八成是源没加对。我曾经在树莓派上遇到过这个问题,后来发现是系统架构写错了。检查一下 /etc/apt/sources.list.d/ros2.list 里的内容,确保 $UBUNTU_CODENAME 被正确替换成了 jammy(22.04)或 noble(24.04)。
方式二:源码编译(进阶)
源码编译适合什么场景?你想想看,如果你需要修改ROS2核心代码,或者想体验最新特性,那就得走这条路。但说实话,我一般只在以下情况才用源码编译:
- 需要调试某个特定包
- apt源里没有你需要的版本
- 想在ARM架构上跑(比如树莓派)
源码编译的步骤比较长,这里我只给个大纲。具体细节可以看官方文档。
# 大致流程(以Humble为例)
mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
vcs import src < humble.repos
sudo apt install python3-pip
pip3 install -U colcon-common-extensions
colcon build --symlink-install
我的经验:第一次编译大概需要1-2小时,取决于你的机器性能。我建议用 --symlink-install 参数,这样修改源码后不用重新编译,直接生效。嗯,这个坑我踩过——第一次没加这个参数,改一行代码等了半小时编译。
1.3 ROS2环境配置——这一步很多人会忘
装完了不等于能用。你得让系统知道「ROS2在哪」。说白了就是配置环境变量。
# 把下面这行加到 ~/.bashrc 里
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
为什么要加这行?因为每次打开终端,系统都要重新加载ROS2的环境变量。不加的话,你敲 ros2 命令会提示「command not found」。我刚开始学的时候,每次都要手动source一遍,后来才学会加到bashrc里。
避坑指南:如果你同时装了ROS1和ROS2,注意source的顺序。我曾经因为先source了ROS1再source ROS2,结果两个版本的环境变量打架,导致某些包找不到。正确的做法是:只source你当前要用的版本。
1.4 验证安装——跑个小demo试试
装好配好,咱们来验证一下。ROS2自带了一个小乌龟示例,可以用来测试安装是否成功。
# 打开终端1,启动小乌龟节点
ros2 run turtlesim turtlesim_node
# 打开终端2,启动键盘控制节点
ros2 run turtlesim turtle_teleop_key
如果一切正常,你会看到一个蓝色背景的窗口,中间有只小乌龟。用键盘的上下左右键可以控制它移动。嗯,就是这么简单。
你还可以用 ros2 node list 和 ros2 topic list 来查看当前运行的节点和话题。比如:
ros2 node list
# 输出:/turtlesim
ros2 topic list
# 输出:/turtle1/cmd_vel /turtle1/pose ...
常见问题:如果小乌龟窗口没出来,检查一下你的系统是否安装了GUI支持。在服务器上或者WSL里,可能需要额外配置X11转发。我曾在WSL2上折腾了半天,最后发现是没装 libx11-dev。
知识体系总览
下面这张图帮你理清本章的核心逻辑。从版本选择到最终验证,每一步都有它的意义。
好了,到这一步,你的ROS2环境应该已经跑起来了。如果小乌龟能在屏幕上自由移动,恭喜你——你已经迈出了ROS2开发的第一步。后面的事情,咱们慢慢聊。
可可精品资料库