2. ROS2 开发环境搭建:Ubuntu系统安装、ROS2 Humble安装、工作空间创建、依赖管理
说实话,很多初学者一上来就急着写代码,结果环境没搭好,后面全是坑。我见过太多人在编译时卡住,最后发现是系统版本不对,或者依赖没装全。这一章,咱们就把地基打牢。
2.1 Ubuntu 22.04 系统安装
ROS2 Humble 官方推荐的是 Ubuntu 22.04(Jammy)。为什么是 22.04?因为它的 LTS 支持周期长,而且 ROS2 Humble 的二进制包就是针对这个版本编译的。你换个 20.04 或者 24.04,虽然也能装,但可能会遇到一些奇奇怪怪的依赖问题。
核心要点:ROS2 Humble 只官方支持 Ubuntu 22.04 (Jammy)。别用 20.04 或 24.04,除非你愿意自己编译所有源码。
安装方式有两种:
- 双系统安装:性能最好,适合长期开发。我个人的习惯是给 Ubuntu 至少分 100GB 空间,根目录 50GB,home 目录 50GB。
- 虚拟机安装:适合尝鲜或硬件受限。用 VMware 或 VirtualBox 都行,记得给虚拟机分配至少 4GB 内存和 2 个 CPU 核心。
我的小技巧:安装时选择「最小安装」,省掉那些用不上的办公软件。装完后第一件事就是换国内源,比如清华源或阿里源,不然 apt update 能等到你怀疑人生。
2.2 ROS2 Humble 安装
系统装好了,接下来就是装 ROS2。这里我建议用 Debian 包安装,最省事。源码编译虽然能让你更了解内部机制,但第一次接触还是别折腾自己。
安装步骤其实就几条命令,但每一步都有讲究。咱们一步步来:
2.2.1 设置 locale
ROS2 需要 UTF-8 支持。虽然大部分系统默认就是,但保不准有例外。我记得有一次帮同事排查问题,搞了半天发现是 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.2.2 添加 ROS2 源
官方源在国外,下载慢。我建议直接用国内镜像源,比如清华源。你想想看,每次 apt update 等几分钟,多耽误事。
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] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
2.2.3 安装 ROS2 Humble
这里有两个选择:
- ros-humble-desktop:包含 GUI 工具,比如 RViz、Gazebo。推荐。
- ros-humble-ros-base:仅命令行,适合服务器或嵌入式。
sudo apt install ros-humble-desktop
安装过程大概 5-10 分钟,取决于你的网速。装完后记得验证一下:
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker
如果看到节点在发布消息,那就成了。
注意:每次打开新终端都要 source 这个 setup.bash。我建议直接写到 ~/.bashrc 里,省得每次都手动敲。
2.3 工作空间创建
工作空间(Workspace)是 ROS2 开发的基本单位。说白了,就是一个文件夹,里面放着你的代码、依赖和编译产物。ROS2 用的是 colcon 来编译,取代了 ROS1 的 catkin。
创建一个工作空间很简单:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
第一次编译会生成三个文件夹:
- build:编译中间文件,不用管。
- install:编译产物,相当于安装目录。
- log:编译日志,出问题时查这里。
我的习惯:每次编译前先 colcon build --symlink-install。这个参数会创建符号链接,这样你修改 Python 脚本后不用重新编译,直接运行就能生效。对于 Python 节点来说,能省不少时间。
编译完成后,记得 source 一下:
source ~/ros2_ws/install/setup.bash
2.4 依赖管理
依赖管理是 ROS2 开发里最容易出问题的地方。你写了一个包,里面用到了 OpenCV、Eigen 或者别的库,如果没装全,编译就会报错。
ROS2 提供了 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,然后自动安装缺失的依赖。
避坑指南:我曾经在一个项目里忘了跑 rosdep install,结果编译时报了一堆找不到头文件的错误。排查了半天,最后发现就是少装了一个 libboost-dev。从那以后,我每次新建工作空间,第一件事就是跑 rosdep install。
除了 rosdep,还有几个常用的依赖管理命令:
| 命令 | 作用 |
|---|---|
apt search ros-humble-* |
搜索可用的 ROS2 包 |
apt depends ros-humble-rclcpp |
查看某个包的依赖关系 |
colcon list |
列出工作空间中的所有包 |
2.5 本章知识体系
下面这张图总结了整个开发环境的搭建流程。你可以把它当作一个检查清单,每完成一步就打个勾。
嗯,到这里,你的 ROS2 开发环境就搭好了。别急着往下走,先跑几个 demo 节点试试,确保通信正常。下一章咱们就开始写第一个 ROS2 节点,到时候这些基础配置都会用上。