第2章 开发环境搭建:Ubuntu 22.04 + ROS2 Humble + MoveIt2
好,咱们正式开始动手。这一章说白了就是「搭灶台」——灶台搭不好,后面炒菜全糊锅。我见过太多同学卡在环境配置上,一卡就是两三天,心态直接崩了。别急,跟着我的节奏来,稳得很。
本章核心目标:在你的电脑上装好 Ubuntu 22.04、ROS2 Humble 和 MoveIt2,并且让它们能正常跑起来。整个过程我建议你一气呵成,别中途去刷剧。
2.1 操作系统选择:为什么是 Ubuntu 22.04?
你可能要问:为啥非得用 Ubuntu?用 Windows 不行吗?
嗯,理论上可以,但你会把自己折腾死。ROS2 在 Windows 上的支持就是个半成品,很多底层通信库跑着跑着就崩了。我个人习惯是:做机器人开发,老老实实用 Ubuntu。
至于版本,ROS2 Humble 官方推荐的是 Ubuntu 22.04 LTS。LTS 意味着长期支持,稳定。我当年用 Ubuntu 18.04 配 ROS1 Melodic 的时候,踩过不少坑,但 22.04 这套组合拳打下来,确实省心不少。
| 操作系统 | ROS2 版本 | 推荐指数 | 备注 |
|---|---|---|---|
| Ubuntu 22.04 LTS | Humble Hawksbill | ⭐⭐⭐⭐⭐ | 官方首选,最稳定 |
| Ubuntu 20.04 LTS | Galactic / Foxy | ⭐⭐⭐ | 版本较老,部分包已停止维护 |
| Windows 10/11 | Humble (实验性) | ⭐⭐ | 不推荐,坑太多 |
小提示:如果你用的是虚拟机,记得给 Ubuntu 分配至少 4GB 内存和 2 个 CPU 核心。硬盘空间建议 60GB 以上,不然编译 MoveIt2 的时候会提示磁盘不足。
2.2 ROS2 Humble 安装:一条龙搞定
ROS2 的安装其实已经被官方简化了很多。你想想看,以前装 ROS1 的时候还得手动处理各种依赖冲突,现在一条命令就能搞定大部分工作。
打开终端,按顺序执行以下命令:
# 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. 添加 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
# 3. 安装 ROS2 Humble 桌面版(包含 rviz2、demo 等)
sudo apt update
sudo apt install ros-humble-desktop
# 4. 安装开发工具
sudo apt install python3-colcon-common-extensions python3-rosdep python3-vcstool git
安装完成后,记得配置环境变量。我建议你把它写到 ~/.bashrc 里,这样每次打开终端都能自动加载:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
注意:如果你同时装了 ROS1 和 ROS2,千万别把两个 setup.bash 都 source 到同一个终端里,会冲突。我曾经因为这个查了一下午的 bug,最后发现是环境变量打架了。
验证安装是否成功:
ros2 run demo_nodes_cpp talker
# 再开一个终端,运行:
ros2 run demo_nodes_py listener
如果能看到 talker 在发消息,listener 在收消息,那就说明 ROS2 装好了。嗯,就是这么简单。
2.3 MoveIt2 源码编译:硬核玩家的选择
为什么我要让你源码编译 MoveIt2?直接用 apt 安装不好吗?
好,但不够好。apt 安装的是稳定版,版本往往落后半年到一年。咱们做课程,要用最新的功能,而且源码编译能让你更清楚 MoveIt2 的内部结构。说白了,出了问题你能自己修。
先创建工作空间:
mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws
下载 MoveIt2 的源码。这里我用的是 vcstool 来管理多个仓库,比手动 git clone 省事多了:
# 下载 moveit2 的仓库列表文件
wget https://raw.githubusercontent.com/ros-planning/moveit2/main/moveit2.repos
vcs import src < moveit2.repos
安装依赖。这一步很关键,很多同学编译失败都是因为依赖没装全:
# 初始化 rosdep
sudo rosdep init
rosdep update
# 安装所有依赖
rosdep install -r --from-paths src --ignore-src --rosdistro humble -y
开始编译。我建议你使用 colcon 并指定 --symlink-install 参数,这样以后修改 Python 文件不用重新编译:
cd ~/moveit2_ws
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
提速技巧:如果你的电脑是多核 CPU,可以用 --parallel-workers 4 来加速编译。我一般设成 CPU 核心数减 1,留一个核心给系统用,免得电脑卡死。
编译时间取决于你的电脑配置。我自己的笔记本(i7-12700H,32GB 内存)大概需要 15 分钟。如果你用的是老电脑,去泡杯咖啡,或者看看文档,别干等着。
编译完成后,别忘了 source 工作空间:
echo "source ~/moveit2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
2.4 工作空间配置:让一切井井有条
我个人习惯把工作空间分成三类:
- src:存放所有源码,包括 MoveIt2、你自己的机器人包、第三方库
- build:编译中间文件,一般不用管它
- install:编译产物,相当于安装目录
- log:编译日志,出错了来这里查
这里有个小技巧:我建议你在 src 目录下再建一个 moveit2 文件夹,专门放 MoveIt2 相关的包,再建一个 robot 文件夹,放你自己的机器人描述文件。这样结构清晰,找东西方便。
mkdir -p ~/moveit2_ws/src/moveit2
mkdir -p ~/moveit2_ws/src/robot
另外,我强烈建议你安装 colcon_cd 工具,它能让你快速跳转到工作空间目录:
sudo apt install python3-colcon-cd
echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export colcon_cd_workspace=~/moveit2_ws" >> ~/.bashrc
以后你只需要在终端输入 colcon_cd robot,就能直接跳到 ~/moveit2_ws/src/robot 目录下。省事吧?
2.5 知识体系总览:一张图看懂
说了这么多,你可能有点晕。没关系,我画了一张图,把整个环境搭建的逻辑串起来:
这张图你看懂了吗?从底层操作系统开始,一层层往上搭。每一层都依赖下一层,缺一不可。我当年刚开始学的时候,就是靠这种分层思维,把整个 ROS 生态理清楚的。
2.6 避坑指南:我踩过的那些坑
最后,分享几个我亲身经历过的坑,你遇到了别慌:
- 编译时提示找不到
moveit_msgs:多半是依赖没装全。重新跑一遍rosdep install,或者手动安装ros-humble-moveit-msgs。 - 运行
ros2 run提示找不到包:检查一下你有没有 source 工作空间。我经常忘记 source,然后一脸懵逼地查半天。 - 虚拟机里运行 rviz2 特别卡:试试在虚拟机设置里启用 3D 加速,或者把图形控制器改成 VMSVGA。
- 编译到 90% 突然报错:别慌,看看是不是内存不够了。用
free -h检查内存,如果 swap 用满了,加个 4GB 的 swap 文件。
重要提醒:如果你在编译过程中遇到任何错误,第一件事是看日志。日志在 ~/moveit2_ws/log/ 目录下,用 cat 或者 less 打开看最后几行,错误原因通常写得很清楚。别一上来就去百度,先自己分析。
好了,环境搭好了,咱们就可以开始真正的机器人编程了。记住,这一步虽然枯燥,但它是你后面所有工作的基础。稳扎稳打,别着急。