ROS 2从入门到精通系列(二):环境搭建 - Ubuntu系统安装ROS2
本文将手把手教你在Ubuntu系统上搭建ROS2开发环境,快速完成从零到一的配置。
引言
选择合适的开发环境是学习ROS2的第一步。本文针对Ubuntu 22.04 LTS系统讲解ROS 2 Humble的完整安装过程,并提供故障排查方案。
一、前置条件检查
1.1 系统要求
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提供多种安装方式,选择最适合你的:
本文采用最常用的方式:二进制包安装(apt)
三、完整安装步骤
3.1 步骤1:设置安装源
ROS2官方提供了Ubuntu软件源,需要添加到系统中。
配置源仓库
# 1. 使用curl下载GPG密钥并添加到系统curl-sSL https://repo.ros2.org/ros.key|sudoapt-keyadd-# 2. 添加ROS2官方仓库sudosh-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'或使用中国镜像源(推荐,速度更快):
# 使用清华大学镜像源sudosh-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|sudoapt-keyadd-验证源配置
cat/etc/apt/sources.list.d/ros2-latest.list3.2 步骤2:更新包索引
sudoaptupdate这个命令会从所有添加的源中下载最新的包索引。
预期输出包含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... Done3.3 步骤3:安装ROS2完整版
ROS2提供多种安装版本:
安装完整版(包含所有工具):
sudoaptinstallros-humble-desktop或仅安装基础版(占用空间小):
sudoaptinstallros-humble-ros-base安装时间预计:5-15分钟(取决于网络速度和硬盘速度)
安装过程中可能出现提示,输入y并按Enter确认。
3.4 步骤4:配置环境变量
ROS2需要在每次使用前加载环境变量。
临时加载(仅当前终端有效)
source/opt/ros/humble/setup.bash永久加载(推荐)
编辑你的Shell配置文件:
# 如果使用bashnano~/.bashrc# 或如果使用zshnano~/.zshrc在文件末尾添加一行:
source/opt/ros/humble/setup.bash保存(Ctrl+O,Enter,Ctrl+X)。
然后重新加载配置:
source~/.bashrc# 或 source ~/.zshrc验证环境变量
echo$ROS_DISTRO正确输出应该是:
humble3.5 步骤5:安装开发工具
# 安装colcon构建工具sudoaptinstallpython3-colcon-common-extensions# 安装用于C++开发的工具sudoaptinstallros-humble-rclcpp ros-humble-rclpy# 安装常用工具sudoaptinstallpython3-rosdep2 python3-argcomplete3.6 步骤6:初始化rosdep
rosdep是一个依赖管理工具:
# 初始化rosdep数据库sudorosdep init# 更新rosdep(使用国内镜像会更快)rosdep update如果官方源太慢,可以使用中国镜像:
# 备份原始列表sudocp/etc/ros/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/20-default.list.backup# 编辑配置文件sudonano/etc/ros/rosdep/sources.list.d/20-default.list将文件内容改为:
yaml https://mirrors.tuna.tsinghua.edu.cn/rosdep/rosdep.yaml然后:
rosdep update四、安装验证
4.1 检查核心库
# 列出已安装的ROS2包aptlist --installed|grepros-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)
# 症状$sudoaptinstallros-humble-desktop E: Unable tolocatepackage ros-humble-desktop解决方案:
# 检查源是否正确添加cat/etc/apt/sources.list.d/ros2-latest.list# 更新包索引sudoaptupdate# 如果仍未解决,检查GPG密钥apt-key list|grepROS问题2:依赖冲突(Dependency Errors)
# 症状The following packages have unmet dependencies: ros-humble-desktop: Depends: libgazebo...解决方案:
# 安装缺失的依赖sudoapt--fix-brokeninstall# 或使用rosdep自动解决依赖rosdepinstall-i --from-path src --rosdistro humble -y问题3:网络超时或下载中断
# 如果下载中断,重新执行安装命令sudoaptinstallros-humble-desktop# 清除部分下载的包sudoaptcleansudoaptautoclean# 重新尝试sudoaptupdatesudoaptinstallros-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 安装额外的包
# 安装开发工具集sudoaptinstallros-humble-dev-tools# 安装常用库sudoaptinstallros-humble-std-msgs ros-humble-geometry-msgs# 安装可视化工具sudoaptinstallros-humble-rviz2 ros-humble-rqt-*# 安装模拟器sudoaptinstallros-humble-gazebo-*7.2 自定义ROS_DOMAIN_ID
在分布式ROS2系统中,可能需要区分不同的网络域:
# 在 ~/.bashrc 中添加exportROS_DOMAIN_ID=0# 默认值,范围: 0-232# 不同的DOMAIN_ID可以相互隔离通信7.3 配置ROS2中间件
# 使用FastRTPS(默认)exportRMW_IMPLEMENTATION=rmw_fastrtps_cpp# 或使用Cyclone DDSexportRMW_IMPLEMENTATION=rmw_cyclonedds_cpp# 需要先安装对应的RMW实现sudoaptinstallros-humble-rmw-cyclonedds-cpp八、卸载ROS2
如果需要卸载ROS2(例如升级到新版本):
# 卸载ROS2包sudoaptremove ros-humble-*sudoaptremove ros-humble-desktop*# 清理配置文件和依赖sudoaptautoremovesudoaptautoclean# 移除源sudorm/etc/apt/sources.list.d/ros2-latest.list# 移除GPG密钥sudoapt-key del<KEY_ID>九、验证清单
创建一个检查清单来确保安装完整:
十、推荐的下一步
安装完成后,你应该:
- ✅验证安装:运行演示程序
- ⚙️创建工作空间:为后续开发准备环境
- 📚学习基础概念:理解节点、话题、服务等
- 🔧尝试编写第一个节点:用Python或C++
十一、快速参考
完整安装命令序列
如果你想快速完成安装,可以逐行复制执行以下命令:
# 1. 添加源curl-sSL https://repo.ros2.org/ros.key|sudoapt-keyadd-sudosh-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. 更新sudoaptupdate# 3. 安装sudoaptinstallros-humble-desktop -y# 4. 设置环境变量echo"source /opt/ros/humble/setup.bash">>~/.bashrcsource~/.bashrc# 5. 安装开发工具sudoaptinstallpython3-colcon-common-extensions ros-humble-rclcpp ros-humble-rclpy python3-rosdep2 -y# 6. 初始化rosdepsudorosdep 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# 加载Humblesource/opt/ros/iron/setup.bash# 加载Iron(会覆盖Humble)Q4: turtlesim运行后窗口出不来怎么办?
A: 检查显示器驱动。如果是远程连接,需要配置X11转发。
下一篇预告:《ROS2从入门到精通系列(三):工作空间与包 - 创建和管理项目结构》
👍 如果本文帮助了你,请点赞并关注!有任何问题欢迎在评论区提问~