3. ROS2开发环境搭建:Ubuntu 22.04系统安装与配置、ROS2 Humble发行版安装、colcon构建工具安装、环境变量配置与测试

说实话,搭建开发环境这件事,很多新手觉得枯燥,甚至觉得「装个系统有什么好学的」。但我见过太多项目卡在环境问题上——编译不过、找不到包、版本冲突,一查全是环境没配好。所以这一章,我带你一步步把地基打牢。

本章核心目标:在 Ubuntu 22.04 上完整搭建 ROS2 Humble 开发环境,包括系统配置、ROS2 安装、colcon 构建工具配置,以及环境变量的正确设置与验证。

3.1 Ubuntu 22.04 系统安装与基础配置

ROS2 Humble 官方推荐 Ubuntu 22.04 (Jammy)。我个人习惯用桌面版,调试时方便看图形界面。如果你用服务器版,也完全没问题,只是少了个桌面。

3.1.1 系统安装要点

  • 磁盘分区:建议给 / 根目录至少 50GB,/home 单独分区 30GB 以上。我在项目中吃过亏,根目录塞满后系统直接卡死。
  • 语言与键盘:安装时选 English (US),避免终端里中文乱码。后期可以再装中文输入法。
  • 网络配置:确保能访问外网,最好用有线网络,Wi-Fi 有时不稳定。

3.1.2 基础配置

装完系统第一件事,更新软件源。你想想看,如果源里包都是旧的,后面装 ROS2 会各种报错。

# 更新软件包列表
sudo apt update

# 升级所有已安装的包
sudo apt upgrade -y

# 安装基础开发工具(我建议这一步别省)
sudo apt install -y build-essential git cmake curl wget gnupg2 lsb-release

我的经验:装完系统先重启一次,确认内核和驱动都正常。我曾经跳过这步,结果装 ROS2 时显卡驱动冲突,排查了整整一下午。

3.2 ROS2 Humble 发行版安装

ROS2 的安装方式有两种:Debian 包安装(推荐)和源码编译。对于初学者,我强烈建议用 Debian 包。源码编译虽然能定制,但耗时且容易踩坑。

3.2.1 设置软件源

ROS2 的包不在 Ubuntu 默认源里,需要手动添加。嗯,这里要注意:先添加 ROS2 的 GPG 密钥,再添加源。

# 添加 ROS2 GPG 密钥
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 添加 ROS2 软件源
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

# 更新源
sudo apt update

3.2.2 安装 ROS2 Humble

ROS2 提供了多个版本:桌面版(Desktop)和基础版(Base)。桌面版包含可视化工具和示例,适合学习和开发。基础版只含核心库,适合嵌入式或服务器。

# 安装桌面版(推荐,约 1.5GB)
sudo apt install -y ros-humble-desktop

# 或者安装基础版(约 500MB)
# sudo apt install -y ros-humble-ros-base

注意:安装过程可能比较慢,取决于网络。如果中途断网,重新执行 sudo apt install 会继续下载,不会从头开始。

3.2.3 安装依赖工具

除了 ROS2 核心,还需要一些辅助工具。我个人习惯一次性装好,省得后面缺这缺那。

# 安装 rosdep(用于管理依赖)
sudo apt install -y python3-rosdep

# 初始化 rosdep
sudo rosdep init
rosdep update

# 安装 colcon 构建工具(后面会详细讲)
sudo apt install -y python3-colcon-common-extensions

3.3 colcon 构建工具安装与配置

colcon 是 ROS2 的官方构建工具,替代了 ROS1 时代的 catkin。说白了,它的作用就是帮你编译、链接、安装 ROS2 包。

3.3.1 colcon 的核心概念

  • 工作空间(workspace):一个文件夹,包含 src、build、install、log 四个子目录。
  • src:存放你的 ROS2 包源码。
  • build:编译中间文件,一般不用手动管。
  • install:编译后的安装文件,环境变量会指向这里。
  • log:编译日志,排查错误时很有用。

3.3.2 创建第一个工作空间

来,我们动手创建一个工作空间,验证 colcon 是否正常工作。

# 创建工作空间目录
mkdir -p ~/ros2_ws/src

# 进入工作空间
cd ~/ros2_ws

# 编译空工作空间(测试 colcon)
colcon build

如果一切正常,你会看到 build、install、log 三个文件夹被创建。我在项目中遇到过一个问题:编译时提示 colcon: command not found,多半是没安装 python3-colcon-common-extensions。

避坑指南:我曾经在 colcon build 时加了 --symlink-install 参数,结果修改 Python 文件后忘了重新编译,导致调试时一直用旧代码。建议初学者先不加这个参数,等熟悉了再用。

3.4 环境变量配置与测试

环境变量是 ROS2 的「导航系统」。没有它,系统就找不到 ROS2 的命令和库。你想想看,如果 ros2 run 都找不到,那还怎么玩?

3.4.1 配置 ROS2 环境变量

每次打开终端,都需要执行 source 命令来加载 ROS2 环境。我建议把它写到 ~/.bashrc 里,这样每次打开终端自动加载。

# 编辑 .bashrc 文件
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

# 立即生效
source ~/.bashrc

3.4.2 配置工作空间环境变量

如果你有自己的工作空间,还需要把工作空间的 install/setup.bash 也加进去。注意顺序:先 source ROS2 系统环境,再 source 工作空间环境。

# 追加工作空间环境(假设工作空间在 ~/ros2_ws)
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc

# 重新加载
source ~/.bashrc

注意:如果你有多个工作空间,后 source 的会覆盖前一个的同名包。我建议只 source 当前项目的工作空间,避免混乱。

3.4.3 环境变量测试

配置完了,怎么知道对不对?来,跑几个命令验证一下。

# 检查 ROS2 版本
ros2 --version

# 检查环境变量是否生效
echo $ROS_DISTRO

# 运行一个简单的示例(小乌龟)
ros2 run turtlesim turtlesim_node

如果看到小乌龟窗口弹出来,恭喜你,环境搭建成功了!

验证清单:

  • ros2 --version 输出 ros2 humble
  • echo $ROS_DISTRO 输出 humble
  • ros2 run turtlesim turtlesim_node 能启动图形窗口

3.5 本章知识体系

下面这张图总结了本章的核心流程。你可以把它当作一个「环境搭建路线图」,每一步都对应一个关键操作。

ROS2 Humble 开发环境搭建流程 Ubuntu 22.04 安装 系统更新与工具安装 ROS2 Humble 安装 colcon 构建工具 环境变量配置 功能测试验证 关键验证点 ros2 --version → humble echo $ROS_DISTRO → humble colcon build 无报错 ros2 run turtlesim 启动成功

3.6 常见问题与解决

问题现象 可能原因 解决方法
ros2: command not found 环境变量未 source 执行 source /opt/ros/humble/setup.bash
colcon: command not found colcon 未安装 sudo apt install python3-colcon-common-extensions
rosdep: command not found rosdep 未安装 sudo apt install python3-rosdep
编译时找不到依赖包 rosdep 未初始化 sudo rosdep init && rosdep update

我的建议:遇到问题先看错误日志。colcon 的日志在 log/ 目录下,里面会详细记录每个包的编译输出。我曾经靠日志里的一个 undefined reference 定位到是链接库顺序问题,省了大半天排查时间。

好了,环境搭建到这里就完成了。你现在应该有一个可以正常编译和运行 ROS2 程序的系统。下一章,我们会开始写第一个 ROS2 节点,真正进入编程环节。