第2章:ROS2环境搭建
好,咱们正式开始动手了。这一章我带你把ROS2 Humble装好,把工作空间搭起来,再把依赖管理和常用工具捋一遍。说实话,环境搭建这事儿看着简单,但我在项目里见过太多人卡在这一步——装了半天跑不起来,最后发现是源没配对,或者依赖缺了一堆。
嗯,咱们别走弯路。跟着我的节奏来,半小时内搞定。
2.1 ROS2 Humble安装
ROS2的版本很多,为什么我选Humble?因为它是个LTS版本,支持到2027年。做项目嘛,稳定第一。我之前用过一个非LTS版本,半年后被迫升级,所有依赖都得重配,那叫一个酸爽。
安装前,先确认你的系统。Humble官方支持Ubuntu 22.04。如果你用的是20.04,建议直接重装系统,别想着兼容——我试过,坑太多。
系统要求: Ubuntu 22.04 (Jammy) 64位,建议内存至少4GB,硬盘剩余20GB以上。
安装步骤其实就四步,我帮你拆开说:
- 设置语言环境——确保系统支持UTF-8,否则后面编译会报奇怪的编码错误。
- 添加ROS2源——把官方仓库加到apt源列表里。
- 安装ROS2 Humble——我建议装desktop版本,包含所有常用工具和可视化库。
- 配置环境变量——让系统每次启动都能找到ROS2命令。
直接上代码:
# 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
# 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
# 3. 安装ROS2 Humble Desktop
sudo apt update
sudo apt install ros-humble-desktop
# 4. 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
小技巧:安装过程如果卡在某个包上,别急着Ctrl+C。我遇到过网络波动导致下载中断,换个时间段重试就好了。实在不行,换个国内的镜像源。
装完后验证一下:
ros2 --version
如果看到类似 ros2 humble 的输出,恭喜你,第一步走通了。
2.2 工作空间配置
工作空间,说白了就是你放代码的地方。ROS2里叫colcon工作空间。我个人习惯在home目录下建一个 ros2_ws 文件夹,里面分 src、build、install、log 四个子目录。
为什么这么分?src 放你的源码,build 是编译中间文件,install 是编译结果,log 是日志。你想想看,如果所有东西混在一起,出了问题你都不知道从哪查起。
创建命令很简单:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
第一次编译会慢一些,因为要生成很多基础文件。别急,喝杯水的功夫就好了。
注意:每次编译完,记得source一下 install/setup.bash,否则你新写的节点找不到。我刚开始就老忘这步,然后一脸懵地查了半天。
为了方便,我习惯在 .bashrc 里加一行:
source ~/ros2_ws/install/setup.bash
这样每次打开终端,工作空间自动生效。
2.3 依赖管理
做项目最怕什么?依赖冲突。你装了一个包,它依赖A版本1.0,另一个包依赖A版本2.0,然后你就开始怀疑人生了。
ROS2里依赖管理主要靠两个工具:rosdep 和 vcs。
rosdep 负责安装系统级的依赖。比如你的代码需要OpenCV,rosdep会自动帮你装好。用法很简单:
sudo apt install python3-rosdep
sudo rosdep init
rosdep update
cd ~/ros2_ws
rosdep install -i --from-path src --rosdistro humble -y
这条命令会扫描 src 目录下所有包的 package.xml,然后自动安装缺少的依赖。我在项目里经常用,省了不少手动排查的时间。
vcs 则用来管理多个代码仓库。比如你的项目依赖五个GitHub上的库,手动一个一个clone太累了。用vcs可以一次搞定:
sudo apt install python3-vcstool
vcs import src < repos.yaml
其中 repos.yaml 文件里写明了每个仓库的地址和版本号。这个技巧我在做多机器人协作项目时用过,效果拔群。
避坑指南:我曾经在一个项目里,因为某个依赖包版本不对,编译了整整两天都没过。后来用rosdep一查,发现是系统里装了个旧版本的库。删掉重装,十分钟搞定。所以,依赖管理别偷懒,该用工具就用工具。
2.4 常用工具介绍
ROS2自带了不少好用的工具,我挑几个最常用的说说。
| 工具名 | 作用 | 常用命令示例 |
|---|---|---|
| ros2 run | 运行一个节点 | ros2 run turtlesim turtlesim_node |
| ros2 topic | 查看/发布话题 | ros2 topic list |
| ros2 service | 调用服务 | ros2 service list |
| ros2 param | 管理参数 | ros2 param get /node_name |
| rqt | 图形化调试界面 | rqt |
| rviz2 | 3D可视化 | rviz2 |
我个人最常用的是 ros2 topic echo,调试时直接看话题数据,比写代码打印日志快多了。比如你想看看小乌龟在干嘛:
ros2 topic echo /turtle1/pose
另外,rqt 这个图形化工具也很香。它把话题、服务、参数都集成在一个界面里,鼠标点一点就能操作。我调试导航算法时,经常开着rqt实时看数据变化。
至于rviz2,那是做机器人可视化的神器。后面讲Nav2和机械臂抓取时,你会天天跟它打交道。
2.5 本章知识体系
为了让你对整个流程有个直观印象,我画了张图:
这张图把本章的核心内容串起来了。你照着这个流程走,环境搭建基本不会出问题。
最后说一句:环境搭建是基础,但也是最容易出幺蛾子的环节。我建议你装完后,跑一下 ros2 run turtlesim turtlesim_node 试试,看到小乌龟窗口弹出来,才算真正搞定。如果卡住了,别硬扛,回头检查每一步——大概率是源没配对或者环境变量没生效。
好,这一章就到这儿。环境搭好了,下一章咱们开始写第一个ROS2节点。