2. 开发环境搭建:Ubuntu 22.04 + ROS2 Humble 全家桶
说实话,搞机器人开发,环境搭建往往是第一个坑。我见过太多人卡在这一步,还没开始写代码就先放弃了。这一章,我带你把这套环境一次搞定。
咱们的目标很明确:Ubuntu 22.04 + ROS2 Humble + MoveIt2 + Gazebo + VS Code。这套组合是目前最稳定的搭配之一,我自己的项目也一直用这个组合。
核心思路:先装系统,再装ROS2,然后装MoveIt2和Gazebo,最后配好编辑器。每一步都有坑,我会把踩过的坑都告诉你。
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
这一步其实很简单,但有几个细节要注意。
- 下载镜像:去 Ubuntu 官网下载 22.04 LTS 桌面版。别下服务器版,除非你只用命令行。
- 制作启动盘:用 Rufus(Windows)或 balenaEtcher(macOS/Linux)把镜像写入 U 盘。
- 分区建议:至少给 Ubuntu 分配 80GB 空间。我建议 120GB,因为后面要装各种包和仿真模型。
- 语言选择:选英文。中文支持可以后面加,但终端里的错误信息用英文搜更容易找到答案。
注意:如果你用双系统,记得先关掉 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 验证整个环境
所有东西都装好后,我们来个综合测试。
- 启动 Gazebo:
ros2 launch gazebo_ros gazebo.launch.py - 启动 MoveIt2 + RViz:
ros2 launch moveit2_tutorials demo.launch.py - 在 RViz 里拖拽机械臂末端,看看运动规划能不能正常计算
- 把机械臂模型加载到 Gazebo 里,看看能不能联动
如果都能正常工作,恭喜你,环境搭建完成了!
总结一下:这套环境我用了两年多,从 Humble 刚发布就开始用。中间踩过不少坑,但整体来说,Ubuntu 22.04 + ROS2 Humble + MoveIt2 + Gazebo 是目前最稳定的组合之一。后面咱们所有的实战项目都会基于这个环境。