2. 开发环境搭建:Ubuntu 22.04 + ROS2 Humble 全家桶

说实话,搞机器人开发,环境搭建往往是第一个坑。我见过太多人卡在这一步,还没开始写代码就先放弃了。这一章,我带你把这套环境一次搞定。

咱们的目标很明确:Ubuntu 22.04 + ROS2 Humble + MoveIt2 + Gazebo + VS Code。这套组合是目前最稳定的搭配之一,我自己的项目也一直用这个组合。

核心思路:先装系统,再装ROS2,然后装MoveIt2和Gazebo,最后配好编辑器。每一步都有坑,我会把踩过的坑都告诉你。

开发环境搭建流程 Ubuntu 22.04 ROS2 Humble MoveIt2 Gazebo VS Code + 插件 注意:版本必须严格对应,Ubuntu 22.04 只能用 ROS2 Humble,不能用 Galactic 或 Foxy 我试过混装,结果依赖冲突到怀疑人生

2.1 为什么选 Ubuntu 22.04 + ROS2 Humble?

你可能要问:为什么不是 Ubuntu 20.04?为什么不是 ROS2 Galactic?

原因很简单。ROS2 Humble 是专门为 Ubuntu 22.04 定制的长期支持版本(LTS),支持到 2027 年。我个人的经验是:ROS2 版本和 Ubuntu 版本必须严格对应,否则你会遇到各种诡异的依赖问题。

ROS2 版本 对应 Ubuntu 支持周期 推荐度
Humble Hawksbill 22.04 (Jammy) 2027年 强烈推荐
Galactic Geochelone 20.04 (Focal) 已停止 不推荐
Foxy Fitzroy 20.04 (Focal) 已停止 不推荐
Iron Irwini 22.04 (Jammy) 2026年 可选

我的建议:如果你刚入门,直接选 Humble。Iron 虽然更新,但社区资源还没 Humble 丰富。遇到问题搜 Stack Overflow,Humble 的答案明显更多。

2.2 安装 Ubuntu 22.04

这一步其实很简单,但有几个细节要注意。

  1. 下载镜像:去 Ubuntu 官网下载 22.04 LTS 桌面版。别下服务器版,除非你只用命令行。
  2. 制作启动盘:用 Rufus(Windows)或 balenaEtcher(macOS/Linux)把镜像写入 U 盘。
  3. 分区建议:至少给 Ubuntu 分配 80GB 空间。我建议 120GB,因为后面要装各种包和仿真模型。
  4. 语言选择:选英文。中文支持可以后面加,但终端里的错误信息用英文搜更容易找到答案。

注意:如果你用双系统,记得先关掉 Windows 的快速启动。否则 Ubuntu 可能挂载不了 Windows 分区,甚至直接进不去系统。我曾经因为这个折腾了一下午。

2.3 安装 ROS2 Humble

ROS2 的安装官方文档写得很详细,但我还是把关键步骤列出来,顺便说说我踩过的坑。

2.3.1 设置 locale

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

这一步很多人会跳过,但如果不做,后面编译时会出现奇怪的编码错误。

2.3.2 添加 ROS2 源

sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update

2.3.3 安装 ROS2 Humble

这里有两种安装方式:桌面版(推荐)和基础版。

# 桌面版(包含 GUI 工具、可视化库等)
sudo apt install ros-humble-desktop

# 基础版(只有核心库,适合嵌入式)
# sudo apt install ros-humble-ros-base

我建议直接装桌面版。虽然大了点(大概 2GB),但省得后面缺包再补。

2.3.4 配置环境变量

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

一个小技巧:如果你同时用多个 ROS2 版本,可以在 .bashrc 里写个别名,比如 alias humble='source /opt/ros/humble/setup.bash',这样切换起来方便。

2.3.5 验证安装

ros2 run demo_nodes_cpp talker

再开一个终端:

ros2 run demo_nodes_py listener

如果能看到 "I heard" 的日志,说明安装成功了。

2.4 安装 MoveIt2

MoveIt2 是 ROS2 上的运动规划框架。说白了,它就是机械臂的「大脑」——告诉机械臂怎么从 A 点走到 B 点,同时避开障碍物。

2.4.1 从 apt 安装(推荐)

sudo apt install ros-humble-moveit

这个命令会安装 MoveIt2 的核心包和常用插件。大概 500MB 左右。

2.4.2 从源码编译(可选)

如果你需要最新特性或者要修改 MoveIt2 源码,可以走这条路。但说实话,我建议新手先用 apt 装。源码编译太耗时了,我第一次编译等了快一个小时。

mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws/src
git clone https://github.com/ros-planning/moveit2.git -b humble
cd ~/moveit2_ws
colcon build --mixin release

注意:源码编译前确保你已经装了 ros-humble-desktop,否则会缺很多依赖。我当初就是没装全,编译到一半报错,气得想砸电脑。

2.4.3 验证 MoveIt2 安装

ros2 launch moveit2_tutorials demo.launch.py

如果能看到 RViz 界面和一个机械臂模型,就说明 MoveIt2 装好了。

2.5 搭建 Gazebo 仿真环境

Gazebo 是 ROS2 最常用的仿真器。没有实体机械臂的时候,我们就靠它来测试代码。

2.5.1 安装 Gazebo

sudo apt install ros-humble-gazebo-ros-pkgs

这个包包含了 Gazebo 和 ROS2 的接口。装完后可以试试:

ros2 launch gazebo_ros gazebo.launch.py

如果 Gazebo 界面能正常打开,就说明装好了。

2.5.2 安装机械臂模型

咱们后面要用到一些常见的机械臂模型,比如 Panda 或 UR5。先装好:

sudo apt install ros-humble-franka-description
sudo apt install ros-humble-ur-description

2.5.3 测试 Gazebo + ROS2 联动

ros2 launch gazebo_ros spawn_entity.py -topic robot_description -entity my_robot

这个命令会把一个机器人模型加载到 Gazebo 里。如果能看到模型出现在仿真环境中,就说明联动成功了。

我的经验:Gazebo 启动时如果特别慢,可以试试 export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share,把模型路径加进去。我第一次启动等了 5 分钟,加了路径后 30 秒就进去了。

2.6 配置 VS Code 与插件

编辑器这东西,用顺手的就行。我个人习惯用 VS Code,插件生态好,调试方便。

2.6.1 安装 VS Code

sudo snap install code --classic

或者去官网下载 .deb 包安装。

2.6.2 必装插件

插件名 作用 为什么需要
ROS ROS2 语法高亮、代码补全 写 launch 文件和 msg/srv 文件时自动补全
Python Python 支持 ROS2 节点很多用 Python 写
C/C++ C++ 支持 MoveIt2 核心是 C++ 写的
CMake CMake 语法高亮 ROS2 项目用 CMake 构建
XML XML 支持 URDF/SRDF 文件是 XML 格式
GitLens Git 增强 看代码历史、对比版本

2.6.3 配置 tasks.json

为了方便编译,我习惯在 VS Code 里配置编译任务。按 Ctrl+Shift+P,输入 "Tasks: Configure Task",然后选 "Create tasks.json file from template"。填入:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "colcon build",
      "type": "shell",
      "command": "cd ${workspaceFolder} && colcon build --symlink-install",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "problemMatcher": []
    }
  ]
}

这样按 Ctrl+Shift+B 就能直接编译了,不用每次敲命令。

一个小建议:把 --symlink-install 加上。这样你修改 Python 文件后不用重新编译,改完直接运行就行。我刚开始不知道这个参数,每次改个 print 都要等 30 秒编译,太傻了。

2.7 验证整个环境

所有东西都装好后,我们来个综合测试。

  1. 启动 Gazebo:ros2 launch gazebo_ros gazebo.launch.py
  2. 启动 MoveIt2 + RViz:ros2 launch moveit2_tutorials demo.launch.py
  3. 在 RViz 里拖拽机械臂末端,看看运动规划能不能正常计算
  4. 把机械臂模型加载到 Gazebo 里,看看能不能联动

如果都能正常工作,恭喜你,环境搭建完成了!

总结一下:这套环境我用了两年多,从 Humble 刚发布就开始用。中间踩过不少坑,但整体来说,Ubuntu 22.04 + ROS2 Humble + MoveIt2 + Gazebo 是目前最稳定的组合之一。后面咱们所有的实战项目都会基于这个环境。