3. 环境搭建:安装 Ubuntu + ROS2 Humble 基础环境
说实话,做机器人仿真这么多年,我见过太多人在环境搭建这一步就卡住了。不是装错版本,就是依赖冲突,最后连个节点都跑不起来。这一章,咱们就把 Ubuntu 和 ROS2 Humble 稳稳当当地装好。
我个人习惯把环境搭建分成三个阶段:装系统 → 配源 → 装 ROS2。别跳步,一步步来。
核心原则:ROS2 Humble 只支持 Ubuntu 22.04 (Jammy)。别想着在 20.04 或 24.04 上硬装,我试过,全是坑。
3.1 安装 Ubuntu 22.04 LTS
你手头可能已经有 Ubuntu 了。但版本对不对?先确认一下。
lsb_release -a
如果输出不是 22.04 或 jammy,那就得重装。我建议用 Ubuntu Server 版,不带桌面,省资源。仿真联调主要靠命令行和远程桌面,桌面版反而容易出显卡驱动冲突。
安装步骤很简单:
- 去 Ubuntu 官网下载 22.04.3 LTS Server ISO
- 用 Rufus 或 balenaEtcher 做启动盘
- 安装时选 最小化安装,别装第三方驱动
- 分区建议:
/给 50GB,/home给剩余空间 - 设置好用户名和密码,记住它
小技巧:安装时网络选有线连接。Wi-Fi 驱动在安装阶段可能没加载,我吃过这个亏,装完发现没网,又得插网线重来。
3.2 配置软件源与基础依赖
系统装好后,第一件事就是换源。国内用清华或阿里源,速度快很多。
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y
然后装一些基础工具。嗯,这一步很多人会忘,但后面编译仿真包时你就会感谢我。
sudo apt install -y \
curl wget git vim \
build-essential cmake \
python3-pip python3-colcon-common-extensions \
net-tools iputils-ping
这里重点提一下 colcon。它是 ROS2 的编译工具,后面所有工作空间都靠它。我曾经在项目里用 catkin_make 编译 ROS2 包,结果折腾了两天……后来才发现 ROS2 已经不用 catkin 了。
3.3 安装 ROS2 Humble
ROS2 的安装方式有两种:Debian 包 和 源码编译。我建议用 Debian 包,省时省力。源码编译留给有特殊需求的场景。
先加 ROS2 的软件源:
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
然后安装桌面版(包含 RViz、Gazebo 等可视化工具):
sudo apt install -y ros-humble-desktop
这个包大概 1.5GB,下载时间取决于你的网速。装完后,记得把 ROS2 环境变量加到 .bashrc 里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
注意:如果你同时装了 ROS1 和 ROS2,千万别在同一个终端里 source 两个 setup.bash。环境变量会打架,节点都找不到。我建议用 alias 区分:alias ros1='source /opt/ros/noetic/setup.bash',alias ros2='source /opt/ros/humble/setup.bash'。
3.4 验证安装
装完别急着走。跑几个命令验证一下。
先看 ROS2 版本:
ros2 --version
正常输出:ros2 humble。
再跑个 C++ 和 Python 的 talker-listener 测试:
# 终端1
ros2 run demo_nodes_cpp talker
# 终端2
ros2 run demo_nodes_py listener
如果终端2能收到 Hello World 消息,说明安装成功。
避坑指南:我曾经在虚拟机上装 ROS2,结果 talker 和 listener 死活连不上。后来发现是虚拟机网络模式设成了 NAT,导致 DDS 发现不了对方。改成桥接模式就好了。如果你也用虚拟机,记得检查网络。
3.5 安装常用仿真工具
ROS2 Humble 装好了,但做仿真还需要几个关键工具。我列个清单:
| 工具 | 用途 | 安装命令 |
|---|---|---|
| Gazebo Fortress | 物理仿真引擎 | sudo apt install ros-humble-ros-gz |
| RViz2 | 数据可视化 | 已包含在 ros-humble-desktop |
| TF2 | 坐标变换 | sudo apt install ros-humble-tf2-tools |
| Navigation2 | 导航堆栈 | sudo apt install ros-humble-navigation2 |
| MoveIt2 | 运动规划 | sudo apt install ros-humble-moveit |
这些工具后面章节都会用到。现在装好,省得到时候手忙脚乱。
3.6 环境结构总览
为了让你对整个环境有个直观认识,我画了张图。它展示了 Ubuntu 系统、ROS2 中间件和仿真工具之间的层级关系。
这张图你保存好。后面每装一个工具,都可以回来看看它属于哪一层。心里有数,出问题也好定位。
3.7 常见问题与解决
环境搭建过程中,有几个问题几乎每个人都会遇到。我列出来,你遇到了直接查。
| 问题 | 原因 | 解决方法 |
|---|---|---|
ros2: command not found |
没有 source setup.bash | 检查 ~/.bashrc 是否包含 source 命令 |
| apt update 报 GPG 错误 | ROS2 密钥未正确导入 | 重新执行 curl 命令导入密钥 |
| DDS 发现不了节点 | 网络隔离或防火墙 | 关闭防火墙:sudo ufw disable |
| Gazebo 启动黑屏 | 显卡驱动或 OpenGL 问题 | 安装 mesa-utils,检查 glxinfo |
重要提醒:如果你用的是 Windows + WSL2,ROS2 Humble 的 DDS 通信在 WSL2 上存在已知问题。我建议直接用双系统或虚拟机。别在 WSL2 上浪费时间,我折腾过两周,最后还是换了双系统。