2. 环境搭建:安装Ubuntu Linux、ROS2发行版(如Humble),配置环境变量,验证安装
2.1 核心原理:为什么从Ubuntu开始?
ROS2并非一个独立的操作系统,而是构建在操作系统之上的机器人中间件框架。它依赖Linux内核提供的进程调度、网络协议栈、设备驱动(尤其是摄像头、激光雷达、串口等传感器接口)以及文件系统权限管理。Ubuntu是ROS2官方支持最完善、社区文档最丰富的发行版,绝大多数教程、驱动包和预编译二进制都优先针对Ubuntu发布。选择Ubuntu LTS(长期支持)版本,意味着你能获得长达5年的安全更新,且与ROS2的LTS发行版(如Humble Hawksbill)形成稳定的版本配对。
理解版本对应关系至关重要:Ubuntu 22.04 Jammy 对应 ROS2 Humble;Ubuntu 20.04 Focal 对应 ROS2 Foxy。混用版本会导致依赖库冲突(如Python版本、OpenSSL、编译器版本不匹配),这是初学者最常见的安装失败原因。
lsb_release -a 可查看当前Ubuntu版本号。
2.2 方法流程:从零到可运行的完整步骤
环境搭建遵循“系统准备 → 软件源配置 → 核心安装 → 环境配置 → 验证”五步法。每一步都有明确的检查点,避免在错误基础上继续叠加问题。
步骤一:系统准备与更新
安装Ubuntu 22.04后,首先确保系统包索引和已安装软件均为最新。打开终端(Ctrl+Alt+T),执行:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl gnupg2 lsb-release software-properties-common
apt upgrade。旧内核或旧库可能导致ROS2的DDS通信层无法正常工作,尤其是网络发现机制会因内核防火墙规则过旧而失效。
步骤二:配置ROS2软件源
ROS2官方二进制包托管在packages.ros.org。需要先添加ROS2的GPG密钥,再将软件源写入系统列表:
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
sudo apt update
此步骤的核心是密钥验证机制——apt通过GPG密钥确认软件包来自官方源,防止中间人攻击。若网络受限,可尝试使用镜像源(如清华TUNA、阿里云)替换URL中的域名。
步骤三:安装ROS2 Humble桌面版
桌面版包含机器人开发所需的全部核心工具、可视化工具(RViz2、Gazebo)和示例程序,适合学习阶段:
sudo apt install -y ros-humble-desktop
若磁盘空间紧张(需约4-5GB),可安装基础版:
sudo apt install -y ros-humble-ros-base
安装完成后,还需安装开发工具链——编译工作空间所需的colcon、测试框架和命令行工具:
sudo apt install -y python3-colcon-common-extensions python3-rosdep python3-argcomplete
步骤四:配置环境变量
ROS2的环境变量脚本会设置AMENT_PREFIX_PATH、LD_LIBRARY_PATH、PYTHONPATH等关键路径。每次打开新终端都需要手动source,但更高效的做法是写入shell配置文件:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
若使用zsh,则将.bashrc替换为.zshrc。验证环境变量是否生效:
printenv | grep ROS
# 预期输出包含 ROS_DISTRO=humble 和 AMENT_PREFIX_PATH=/opt/ros/humble
步骤五:验证安装
运行ROS2自带的talker-listener示例,这是验证DDS通信是否正常的最快方式。打开两个终端:
终端1(发布者):
ros2 run demo_nodes_cpp talker
终端2(订阅者):
ros2 run demo_nodes_py listener
若终端2持续输出[INFO] I heard: [Hello World: N],说明节点发现、话题通信、进程间通信全部正常。再使用ros2 doctor做全面体检:
ros2 doctor
# 输出 "All 4 checks passed" 表示环境健康
2.3 案例/场景:虚拟机与双系统的选择
不同硬件条件下的安装策略差异显著。以下对比帮助你在实际场景中做出合理选择:
| 场景 | 推荐方案 | 关键考量 |
|---|---|---|
| Windows笔记本(8GB内存) | VMware/VirtualBox虚拟机 | 分配4GB内存、2核CPU;启用3D加速;磁盘预分配40GB |
| Mac M1/M2芯片 | UTM虚拟机(ARM版Ubuntu) | 需下载ARM64架构的Ubuntu镜像;ROS2 Humble支持arm64 |
| 高性能台式机(16GB+) | 双系统(Ubuntu独占磁盘) | 获得完整GPU加速和实时性能;注意备份Windows引导 |
| 树莓派4B | Ubuntu Server 22.04 + ROS2 Humble | 安装ros-base而非desktop;编译需数小时,建议直接apt安装 |
export ROS_DOMAIN_ID=42 并改用单播发现。
2.4 误区/复盘:常见安装失败原因与排查
根据社区数千条问题反馈,以下五个误区占据了安装失败原因的80%以上。逐一对照排查,能大幅缩短排障时间。
- 误区一:版本不匹配。在Ubuntu 20.04上强行安装Humble,或使用
apt install ros-humble-desktop时出现依赖错误。复盘:先执行lsb_release -a确认系统版本,再对照官方兼容矩阵。 - 误区二:忘记source环境变量。新开终端直接运行
ros2命令报“command not found”。复盘:检查~/.bashrc末尾是否有source行;若手动source后可用,说明写入配置时路径有误。 - 误区三:GPG密钥过期或网络代理拦截。
apt update报错“The following signatures couldn't be verified”。复盘:重新下载密钥文件,或配置apt代理:sudo apt -o Acquire::http::Proxy="http://代理IP:端口" update。 - 误区四:Python版本冲突。系统自带Python3.10,但用户安装了Anaconda导致
colcon无法识别。复盘:ROS2命令前使用/usr/bin/python3显式指定解释器,或暂时移除Anaconda的PATH。 - 误区五:防火墙或VPN干扰DDS通信。talker和listener在同一台机器上却无法通信。复盘:执行
sudo ufw disable关闭防火墙测试;若使用VPN(如公司网络),尝试断开后重试。
ros2 doctor --report 生成完整诊断报告,重点查看“Network Configuration”和“RMW Implementation”两节。报告会明确提示是共享内存问题、多播路由问题还是DDS实现冲突。