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通信质量。下图展示了从硬件到应用层的完整依赖关系:
2.2 方法流程:从零开始的完整安装步骤
本节以Ubuntu 22.04 LTS + ROS2 Humble为例(这是目前教程支持最完善、资料最丰富的组合)。若你使用其他版本,请对照ROS2官方文档调整软件源。整个安装流程分为四个阶段:
- 准备Ubuntu系统:确保系统已更新至最新,并安装基础工具。
- 配置软件源:添加ROS2官方仓库并导入GPG密钥。
- 安装ROS2核心包:选择桌面版(含可视化工具)或基础版。
- 配置环境变量与验证:设置
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 误区/复盘:常见安装问题与解决思路
根据大量初学者反馈,以下四个问题出现频率最高,提前了解可避免踩坑:
lsb_release -a确认系统版本。
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只能看到自己的节点,看不到其他机器或同一机器不同终端的节点。排查步骤:
- 检查防火墙:
sudo ufw status,若开启则执行sudo ufw allow 7400:7600/tcp和sudo ufw allow 7400:7600/udp。 - 确认网络接口:
ip addr,确保所有终端在同一网段。 - 测试多播:
ping 224.0.0.1,若不通则需检查路由器IGMP设置。
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
source install/setup.bash
若构建无报错且能成功source,说明你的开发环境已完全就绪,可以开始编写第一个ROS2节点了。