2、ROS2环境搭建:ROS2 Humble安装、工作空间创建、Colcon编译工具使用
好,咱们直接进入正题。
ROS2的环境搭建,说白了就是给你的机器人装上“操作系统的大脑”。我见过太多新手卡在这一步,装到一半报错,然后心态就崩了。别急,跟着我的节奏来,保证你一次过。
2.1 为什么选ROS2 Humble?
ROS2有很多发行版,比如Foxy、Galactic、Humble。我个人习惯用Humble,为什么?
- 长期支持(LTS):Humble是2022年的LTS版本,支持到2027年。你想想看,学一个东西至少要用两三年吧?选LTS准没错。
- 生态成熟:我在项目中遇到过一些坑,比如某些驱动在Foxy上跑不起来,但换到Humble就稳了。说白了,社区的力量是巨大的。
- Ubuntu 22.04 绝配:Humble官方推荐搭配Ubuntu 22.04 Jammy。嗯,这里要注意,千万别用Ubuntu 20.04去装Humble,会有一堆依赖冲突。
核心结论:如果你用的是Ubuntu 22.04,闭眼选ROS2 Humble。如果你还在用20.04,建议先升级系统,别偷懒。
2.2 安装ROS2 Humble
安装过程其实就三步:设置源、安装、配置环境。我直接给你最稳的步骤。
2.2.1 设置软件源
先确保你的系统能访问ROS2的官方仓库。打开终端,一行一行敲:
sudo apt update
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
这里有个小细节:lsb_release -cs会自动识别你的Ubuntu版本。如果你手动写死了版本号,换系统时就会出问题。我刚开始学的时候犯过这个错,后来就学乖了。
2.2.2 安装ROS2 Humble
我建议你装桌面版(Desktop),包含了常用的工具和可视化库。如果你硬盘空间紧张,可以只装基础版(Base),但后面调试时会缺很多东西。
sudo apt update
sudo apt install ros-humble-desktop
这个过程大概要下载1-2GB,取决于你的网速。趁这个时间,你可以去泡杯咖啡。
小技巧:如果你在墙内,下载速度很慢,可以换成国内镜像源。比如中科大的源:sudo sed -i 's/packages.ros.org/mirrors.ustc.edu.cn\/ros\/packages/g' /etc/apt/sources.list.d/ros2.list
2.2.3 配置环境变量
安装完成后,需要把ROS2的环境变量加到你的bash配置里。不然每次打开终端都要手动source,烦不烦?
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下是否安装成功:
ros2 run demo_nodes_cpp talker
如果看到类似“Publishing: 'Hello World'”的输出,恭喜你,ROS2已经跑起来了。
避坑指南:我曾经遇到过source了但依然找不到命令的情况。后来发现是.bashrc文件里写错了路径。记住,Humble的路径是/opt/ros/humble/,不是/opt/ros/foxy/。
2.3 创建工作空间
工作空间(Workspace)就是你存放ROS2项目的文件夹。我习惯把它叫做ros2_ws,简单明了。
2.3.1 创建目录结构
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
src文件夹用来放你的代码包。为什么要有这个结构?因为Colcon编译工具只认这个目录格式。你想想看,如果没有规范,每个人的项目结构都不一样,那协作起来得多痛苦。
2.3.2 初始化工作空间
虽然现在src里是空的,但我们可以先编译一下,让ROS2认识这个工作空间:
cd ~/ros2_ws
colcon build
第一次编译会生成build、install、log三个文件夹。别怕,这是正常的。
重要:每次编译完成后,记得source一下工作空间的环境:source install/setup.bash。不然你写的节点ROS2找不到。
2.4 Colcon编译工具使用
Colcon是ROS2的官方编译工具,替代了ROS1时代的Catkin。说实话,Colcon比Catkin快多了,而且支持并行编译。
2.4.1 基本用法
最常用的命令就这几个:
| 命令 | 作用 | 我的经验 |
|---|---|---|
colcon build |
编译所有包 | 第一次用这个,后面看情况 |
colcon build --packages-select 包名 |
只编译指定包 | 我经常用,省时间 |
colcon build --symlink-install |
使用符号链接安装 | 调试Python代码时必用 |
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release |
Release模式编译 | 发布前用,性能更好 |
2.4.2 常用技巧
- 只编译一个包:当你只修改了一个包时,别傻傻地全量编译。用
colcon build --packages-select my_package,几秒钟就搞定。 - Python包用符号链接:如果你写的是Python节点,加上
--symlink-install参数。这样你修改了Python代码后,不需要重新编译,直接运行就能看到效果。我在调试传感器驱动时经常用这个,效率翻倍。 - 清理编译产物:如果编译出了问题,试试
rm -rf build install log,然后重新colcon build。这招能解决90%的编译问题。
小技巧:我习惯在~/.bashrc里加一个别名:alias cb='colcon build --symlink-install'。这样每次编译只需要敲cb两个字母,省事。
2.5 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张图。你可以看到,ROS2环境搭建其实就三个核心环节:安装、建工作空间、用Colcon编译。三者环环相扣,缺一不可。
2.6 验证环境是否正常
装完了,总得试试能不能用吧?我教你一个最简单的测试方法:
- 打开第一个终端,运行:
ros2 run demo_nodes_cpp talker - 打开第二个终端,运行:
ros2 run demo_nodes_py listener
如果listener能收到talker发的消息,说明你的ROS2环境完全正常。我第一次看到这个“Hello World”在终端里跳动时,心里还是挺激动的。
注意:如果listener收不到消息,先检查一下两个终端是不是都source了同一个工作空间的环境。我遇到过有人一个终端source了,另一个没source,结果折腾了半天。
好了,ROS2的环境搭建就到这里。记住,这一步是基础中的基础。后面所有的传感器接入、仿真调试,都建立在这个环境之上。别嫌麻烦,一次配好,后面就顺了。