ROS 2从入门到精通系列(二):环境搭建 - Ubuntu系统安装ROS2

本文将手把手教你在Ubuntu系统上搭建ROS2开发环境,快速完成从零到一的配置。


引言

选择合适的开发环境是学习ROS2的第一步。本文针对Ubuntu 22.04 LTS 系统讲解 ROS 2 Humble 的完整安装过程,并提供故障排查方案。


一、前置条件检查

1.1 系统要求

网络环境

稳定网络连接
可访问官方源

操作系统

Ubuntu 22.04 LTS
Focal Fossa或更新

硬件要求

内存: 4GB+
建议8GB

处理器: 双核+
建议i5或等效

硬盘: 20GB+可用空间

前置条件

1.2 检查系统信息

打开终端,执行以下命令检查你的系统:

# 检查Ubuntu版本
lsb_release -a

# 检查系统架构
uname -m  # 应该输出 x86_64 或 aarch64

# 检查内存
free -h

# 检查硬盘空间
df -h /home

预期输出示例:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Release: 22.04
Codename: jammy

二、ROS2安装方式对比

ROS2提供多种安装方式,选择最适合你的:

ROS2安装方式

二进制包安装
apt

✅ 推荐
速度快
依赖处理完善

源码编译安装
colcon

⚠️ 高级
更新最新
可自定义

Docker容器
Docker

📦 便携
环境隔离
跨平台

本文采用最常用的方式:二进制包安装(apt)


三、完整安装步骤

3.1 步骤1:设置安装源

ROS2官方提供了Ubuntu软件源,需要添加到系统中。

配置源仓库
# 1. 使用curl下载GPG密钥并添加到系统
curl -sSL https://repo.ros2.org/ros.key | sudo apt-key add -

# 2. 添加ROS2官方仓库
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'

或使用中国镜像源(推荐,速度更快):

# 使用清华大学镜像源
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list'

# 导入GPG密钥
curl -sSL https://repo.ros2.org/ros.key | sudo apt-key add -
验证源配置
cat /etc/apt/sources.list.d/ros2-latest.list

3.2 步骤2:更新包索引

sudo apt update

这个命令会从所有添加的源中下载最新的包索引。

预期输出包含 packages.ros.org 或镜像源的URL:

Hit:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease
...
Hit:N https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy InRelease
...
Reading package lists... Done

3.3 步骤3:安装ROS2完整版

ROS2提供多种安装版本:

ROS2 Humble

ros-humble-desktop
推荐
包含RViz+Gazebo

ros-humble-ros-base
基础版
仅核心库

ros-humble-dev
开发版
包含编译工具

安装完整版(包含所有工具):

sudo apt install ros-humble-desktop

或仅安装基础版(占用空间小):

sudo apt install ros-humble-ros-base

安装时间预计:5-15分钟(取决于网络速度和硬盘速度)

安装过程中可能出现提示,输入 y 并按Enter确认。

3.4 步骤4:配置环境变量

ROS2需要在每次使用前加载环境变量。

临时加载(仅当前终端有效)
source /opt/ros/humble/setup.bash
永久加载(推荐)

编辑你的Shell配置文件:

# 如果使用bash
nano ~/.bashrc

# 或如果使用zsh
nano ~/.zshrc

在文件末尾添加一行:

source /opt/ros/humble/setup.bash

保存(Ctrl+O,Enter,Ctrl+X)。

然后重新加载配置:

source ~/.bashrc  # 或 source ~/.zshrc
验证环境变量
echo $ROS_DISTRO

正确输出应该是:

humble

3.5 步骤5:安装开发工具

# 安装colcon构建工具
sudo apt install python3-colcon-common-extensions

# 安装用于C++开发的工具
sudo apt install ros-humble-rclcpp ros-humble-rclpy

# 安装常用工具
sudo apt install python3-rosdep2 python3-argcomplete

3.6 步骤6:初始化rosdep

rosdep是一个依赖管理工具:

# 初始化rosdep数据库
sudo rosdep init

# 更新rosdep(使用国内镜像会更快)
rosdep update

如果官方源太慢,可以使用中国镜像:

# 备份原始列表
sudo cp /etc/ros/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/20-default.list.backup

# 编辑配置文件
sudo nano /etc/ros/rosdep/sources.list.d/20-default.list

将文件内容改为:

yaml https://mirrors.tuna.tsinghua.edu.cn/rosdep/rosdep.yaml

然后:

rosdep update

四、安装验证

4.1 检查核心库

# 列出已安装的ROS2包
apt list --installed | grep ros-humble | head -20

# 应该能看到类似输出:
# ros-humble-actionlib-msgs/jammy,now 1.2.1-1jammy.20220524 amd64
# ros-humble-ament-cmake/jammy,now ...

4.2 运行第一个ROS2程序

在不创建任何项目的情况下,直接运行官方演示:

# 打开第一个终端,运行turtle演示程序
ros2 run turtlesim turtlesim_node

# 打开第二个终端,运行键盘控制程序
ros2 run turtlesim turtle_teleop_key

预期结果:出现一个小乌龟的窗口,你可以用方向键控制它移动。

4.3 验证通信机制

# 打开第一个终端,运行发布者节点
ros2 run demo_nodes_cpp talker

# 打开第二个终端,运行订阅者节点
ros2 run demo_nodes_cpp listener

预期输出示例:

[listener] Hello World: 1
[listener] Hello World: 2
[listener] Hello World: 3
...

五、安装时间复杂度分析

安装时间受多个因素影响:

T t o t a l = T n e t w o r k + T d o w n l o a d + T c o m p i l e + T s e t u p T_{total} = T_{network} + T_{download} + T_{compile} + T_{setup} Ttotal=Tnetwork+Tdownload+Tcompile+Tsetup

其中:

因素 耗时 影响
网络速度 1-10 min 下载包大小 ~2-3GB
硬盘I/O 2-5 min SSD显著更快
CPU编译 0-5 min 预编译二进制包较快
依赖解析 1-3 min apt解析依赖关系

总耗时预计:5-15分钟


六、常见安装问题排查

问题1:找不到包(Unable to locate package)

# 症状
$ sudo apt install ros-humble-desktop
E: Unable to locate package ros-humble-desktop

解决方案:

# 检查源是否正确添加
cat /etc/apt/sources.list.d/ros2-latest.list

# 更新包索引
sudo apt update

# 如果仍未解决,检查GPG密钥
apt-key list | grep ROS

问题2:依赖冲突(Dependency Errors)

# 症状
The following packages have unmet dependencies:
  ros-humble-desktop: Depends: libgazebo...

解决方案:

# 安装缺失的依赖
sudo apt --fix-broken install

# 或使用rosdep自动解决依赖
rosdep install -i --from-path src --rosdistro humble -y

问题3:网络超时或下载中断

# 如果下载中断,重新执行安装命令
sudo apt install ros-humble-desktop

# 清除部分下载的包
sudo apt clean
sudo apt autoclean

# 重新尝试
sudo apt update
sudo apt install ros-humble-desktop

问题4:权限拒绝(Permission Denied)

# 症状:/opt/ros/humble/setup.bash: Permission denied

# 解决方案:使用source而非执行
source /opt/ros/humble/setup.bash  # ✅ 正确
bash /opt/ros/humble/setup.bash    # ✅ 也正确
./opt/ros/humble/setup.bash        # ❌ 错误

问题5:环境变量未生效

# 验证环境变量
echo $ROS_DISTRO

# 如果输出为空,表示未加载
# 手动加载
source /opt/ros/humble/setup.bash

# 再次验证
echo $ROS_DISTRO  # 应输出 humble

七、高级配置

7.1 安装额外的包

# 安装开发工具集
sudo apt install ros-humble-dev-tools

# 安装常用库
sudo apt install ros-humble-std-msgs ros-humble-geometry-msgs

# 安装可视化工具
sudo apt install ros-humble-rviz2 ros-humble-rqt-*

# 安装模拟器
sudo apt install ros-humble-gazebo-*

7.2 自定义ROS_DOMAIN_ID

在分布式ROS2系统中,可能需要区分不同的网络域:

# 在 ~/.bashrc 中添加
export ROS_DOMAIN_ID=0  # 默认值,范围: 0-232

# 不同的DOMAIN_ID可以相互隔离通信

7.3 配置ROS2中间件

# 使用FastRTPS(默认)
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp

# 或使用Cyclone DDS
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp

# 需要先安装对应的RMW实现
sudo apt install ros-humble-rmw-cyclonedds-cpp

八、卸载ROS2

如果需要卸载ROS2(例如升级到新版本):

# 卸载ROS2包
sudo apt remove ros-humble-*
sudo apt remove ros-humble-desktop*

# 清理配置文件和依赖
sudo apt autoremove
sudo apt autoclean

# 移除源
sudo rm /etc/apt/sources.list.d/ros2-latest.list

# 移除GPG密钥
sudo apt-key del <KEY_ID>

九、验证清单

创建一个检查清单来确保安装完整:

✅ ROS_DISTRO=humble

✅ ros2 --version

✅ turtlesim运行

安装验证清单

检查环境变量

检查ROS命令

重新加载setup.bash

运行演示程序

检查$PATH环境变量

安装完成 🎉

重新安装开发工具


十、推荐的下一步

安装完成后,你应该:

  1. 验证安装:运行演示程序
  2. ⚙️ 创建工作空间:为后续开发准备环境
  3. 📚 学习基础概念:理解节点、话题、服务等
  4. 🔧 尝试编写第一个节点:用Python或C++

十一、快速参考

完整安装命令序列

如果你想快速完成安装,可以逐行复制执行以下命令:

# 1. 添加源
curl -sSL https://repo.ros2.org/ros.key | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'

# 2. 更新
sudo apt update

# 3. 安装
sudo apt install ros-humble-desktop -y

# 4. 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 5. 安装开发工具
sudo apt install python3-colcon-common-extensions ros-humble-rclcpp ros-humble-rclpy python3-rosdep2 -y

# 6. 初始化rosdep
sudo rosdep init
rosdep update

# 7. 验证
echo $ROS_DISTRO

十二、本文要点总结

系统要求:Ubuntu 22.04 LTS,4GB内存,20GB硬盘

安装方式:二进制包安装最简单快速

关键步骤:添加源 → 更新索引 → 安装包 → 配置环境变量

验证方法:运行turtlesim演示程序和talker-listener示例

问题排查:检查源配置、更新包索引、验证环境变量


常见疑问解答

Q1: 我的Ubuntu是20.04,能安装ROS2 Humble吗?

A: Humble官方仅支持22.04。如果必须用20.04,可安装ROS2 Foxy,但建议升级Ubuntu版本。

Q2: 安装过程中网络很慢怎么办?

A: 使用国内镜像源(如清华、阿里云)。本文已提供清华镜像配置。

Q3: 能同时安装多个ROS2版本吗?

A: 可以,但需要在使用前切换环境变量:

source /opt/ros/humble/setup.bash    # 加载Humble
source /opt/ros/iron/setup.bash      # 加载Iron(会覆盖Humble)

Q4: turtlesim运行后窗口出不来怎么办?

A: 检查显示器驱动。如果是远程连接,需要配置X11转发。


下一篇预告《ROS2从入门到精通系列(三):工作空间与包 - 创建和管理项目结构》

👍 如果本文帮助了你,请点赞并关注!有任何问题欢迎在评论区提问~

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐