2. 环境搭建:安装Ubuntu、ROS2,配置开发环境,验证安装

2.1 核心原理:为什么选择Ubuntu与ROS2的组合

ROS2并非一个独立运行的操作系统,而是一套运行在操作系统之上的机器人中间件框架。它依赖操作系统提供进程调度、网络通信、文件系统和设备驱动等底层能力。Ubuntu与ROS2的搭配之所以成为主流,主要基于三点:二进制包支持(Ubuntu官方软件源与ROS2仓库深度集成,可直接通过apt安装)、内核实时性优化(Ubuntu LTS版本对机器人常用的实时内核补丁支持良好)、以及社区生态一致性(绝大多数ROS2教程、驱动和工具链默认在Ubuntu上验证)。

理解这一关系至关重要:ROS2的节点(Node)本质上是Ubuntu系统中的普通进程,节点间的通信依赖Ubuntu的网络协议栈(TCP/UDP/DDS)。因此,Ubuntu系统时钟同步、防火墙规则、网络接口配置都会直接影响ROS2通信质量。下图展示了从硬件到应用层的完整依赖关系:

硬件层 x86_64 / ARM64 主机 · 网卡 · 传感器驱动接口 Ubuntu 22.04 LTS (Jammy) Linux内核 5.15 · 进程管理 · 网络协议栈 · 文件系统 locale设置 · 时间同步 · 用户权限组 ROS2 Humble (机器人中间件) rclcpp/rclpy客户端库 · DDS通信 · 参数服务器 · 生命周期管理 colcon构建工具 · launch启动系统 · tf2坐标变换 你的机器人应用(Python/C++节点)

2.2 方法流程:从零开始的完整安装步骤

本节以Ubuntu 22.04 LTS + ROS2 Humble为例(这是目前教程支持最完善、资料最丰富的组合)。若你使用其他版本,请对照ROS2官方文档调整软件源。整个安装流程分为四个阶段:

  1. 准备Ubuntu系统:确保系统已更新至最新,并安装基础工具。
  2. 配置软件源:添加ROS2官方仓库并导入GPG密钥。
  3. 安装ROS2核心包:选择桌面版(含可视化工具)或基础版。
  4. 配置环境变量与验证:设置source脚本并运行示例程序。

阶段一:系统准备与软件源配置

打开终端(Ctrl+Alt+T),首先更新系统包索引并安装必要工具:

sudo apt update
sudo apt upgrade -y
sudo apt install -y curl gnupg lsb-release software-properties-common

接着添加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
网络提示:若访问raw.githubusercontent.com超时,可使用镜像源(如清华TUNA)替换上述命令中的URL。国内用户建议直接配置镜像源以节省时间。

阶段二:安装ROS2 Humble桌面版

桌面版包含RViz2可视化工具、demo程序、模拟器等,适合学习和开发。基础版(ros-humble-ros-base)仅含核心通信库,适合资源受限的部署环境。建议初学者安装桌面版:

sudo apt install -y ros-humble-desktop python3-colcon-common-extensions

安装完成后,需要将ROS2环境变量写入~/.bashrc,这样每次打开终端都会自动加载:

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

阶段三:验证安装是否成功

验证分为单机自检和双节点通信测试两步。首先检查核心命令是否可用:

ros2 --help
ros2 pkg list | grep demo

若能看到命令帮助和demo包列表,说明安装成功。接下来进行经典的“发布者-订阅者”测试——打开两个终端,分别运行:

# 终端1:运行发布者节点
ros2 run demo_nodes_cpp talker

# 终端2:运行订阅者节点
ros2 run demo_nodes_py listener

当终端2持续输出[INFO] I heard: [Hello World: N]时,说明ROS2的节点发现、话题通信机制已正常工作。

2.3 案例/场景:开发环境的完整配置清单

除了ROS2本体,一个高效的开发环境还需要以下工具配合。下表列出了推荐安装的组件及其用途:

工具/组件 安装命令 用途说明
Visual Studio Code snap install code --classic 代码编辑与调试,支持ROS2插件
Git sudo apt install git 版本管理与代码同步
colcon扩展工具 sudo apt install python3-colcon-common-extensions 多包构建与工作区编译
rviz2可视化 随ros-humble-desktop安装 传感器数据、机器人模型可视化
turtlesim模拟器 sudo apt install ros-humble-turtlesim 入门练习用仿真环境

此外,建议安装终端复用工具tmux(便于同时管理多个ROS2节点)和网络调试工具net-tools(用于排查DDS通信问题):

sudo apt install -y tmux net-tools

2.4 误区/复盘:常见安装问题与解决思路

根据大量初学者反馈,以下四个问题出现频率最高,提前了解可避免踩坑:

误区一:忽略系统版本匹配。ROS2 Humble仅支持Ubuntu 22.04,若在20.04或24.04上强行安装,会出现依赖冲突。安装前务必用lsb_release -a确认系统版本。
误区二:忘记source环境变量。每次新开终端都需要执行source /opt/ros/humble/setup.bash。若未写入~/.bashrc,会出现ros2: command not found错误。

另一个常见问题是Python版本冲突。Ubuntu 22.04自带Python 3.10,若你手动安装了其他版本Python并修改了PATH,可能导致ROS2的Python脚本无法运行。解决方法是恢复系统默认Python路径:

# 检查当前Python版本
python3 --version
# 若版本不是3.10,检查PATH设置
echo $PATH
# 确保/usr/bin在PATH最前面

最后,DDS通信失败也常困扰初学者。症状是ros2 node list只能看到自己的节点,看不到其他机器或同一机器不同终端的节点。排查步骤:

  1. 检查防火墙:sudo ufw status,若开启则执行sudo ufw allow 7400:7600/tcp和sudo ufw allow 7400:7600/udp。
  2. 确认网络接口:ip addr,确保所有终端在同一网段。
  3. 测试多播:ping 224.0.0.1,若不通则需检查路由器IGMP设置。
复盘建议:安装完成后,建议立即创建一个最小工作区并编译运行,以验证colcon构建链是否完整。执行以下命令:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
source install/setup.bash
若构建无报错且能成功source,说明你的开发环境已完全就绪,可以开始编写第一个ROS2节点了。