2. 环境搭建

说实话,做机器人运动规划这几年,我踩过最多的坑就是环境问题。很多同学兴致勃勃地开始学 MoveIt2,结果卡在安装上,一卡就是好几天。所以我决定把环境搭建放在第一章,咱们先把地基打牢。

这一章我会带你完成三件事:装好 Ubuntu 22.04 和 ROS2 Humble,搞定 MoveIt2 的两种安装方式,最后配好工作空间。嗯,跟着我来,不会让你走弯路。

1.1 为什么是 Ubuntu 22.04 + ROS2 Humble?

你可能要问:为什么非得是这个组合?

我个人的经验是,ROS2 的版本和 Ubuntu 版本是严格绑定的。Humble 是 ROS2 的一个长期支持版本(LTS),对应 Ubuntu 22.04。说白了,用这个组合最稳。我在项目里试过其他组合,比如 Ubuntu 20.04 配 ROS2 Galactic,结果有些包死活装不上,后来一查,官方早就不维护了。

所以记住:Ubuntu 22.04 配 ROS2 Humble,这是目前最靠谱的选择。

核心要点:

  • Ubuntu 22.04 LTS —— 系统稳定,社区活跃
  • ROS2 Humble —— 长期支持,2024年才停止维护
  • MoveIt2 —— 专为 ROS2 设计的运动规划框架

1.2 安装 Ubuntu 22.04

这一步我假设你已经装好了系统。如果还没装,去官网下载镜像,用 Rufus 或 balenaEtcher 做个启动盘就行。这里我提几个我踩过的坑:

  • 分区建议:至少给根目录 50GB,/home 给 100GB 以上。我刚开始只给了 30GB,结果装了几个仿真环境就满了。
  • 显卡驱动:如果你用 NVIDIA 显卡,装完系统后记得装驱动。不然 RViz 跑起来卡得你想哭。
  • 换源:装完系统第一件事,换国内源。清华、中科大、阿里云都行。不然下载速度会让你怀疑人生。

1.3 安装 ROS2 Humble

ROS2 的安装其实很简单,官方文档写得很清楚。但我还是把关键步骤列出来,顺便加点我的经验。

1.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

这一步很多人会跳过,但我不建议。ROS2 对 locale 有要求,不设好后面编译会报一些莫名其妙的错。

1.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

小技巧:如果你在墙内,可以把上面的源地址换成清华的镜像。具体方法去清华 TUNA 官网查,速度能快好几倍。

1.3.3 安装 ROS2 Humble

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

# 桌面版(包含 RViz、Gazebo 等工具)
sudo apt install ros-humble-desktop

# 基础版(只装核心库)
sudo apt install ros-humble-ros-base

我个人建议装桌面版。虽然大了点,但 RViz 和 Gazebo 后面都会用到。省得后面再单独装,麻烦。

1.3.4 设置环境变量

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

这一步别忘了。我见过有人装完 ROS2 后没 source,然后跑来问我为什么 ros2 命令找不到……

1.3.5 验证安装

ros2 run demo_nodes_cpp talker

打开另一个终端,运行:

ros2 run demo_nodes_py listener

如果你看到两个节点在通信,恭喜你,ROS2 装好了。

1.4 安装 MoveIt2

MoveIt2 有两种安装方式:二进制安装和源码安装。我两种都试过,给你分析一下各自的优缺点。

安装方式 优点 缺点 适用场景
二进制安装 简单快速,一行命令搞定 不能修改源码,版本固定 初学者、只想用 MoveIt2 做应用
源码安装 可以修改源码,版本最新 编译时间长,容易出问题 开发者、需要定制功能

1.4.1 二进制安装(推荐初学者)

sudo apt install ros-humble-moveit

就这么简单。装完后你可以直接开始用 MoveIt2 了。我在刚开始学的时候用的就是这种方式,省心。

1.4.2 源码安装(进阶玩家)

如果你需要修改 MoveIt2 的源码,或者想用最新的特性,那就得源码安装了。

第一步,创建工作空间:

mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws/src
git clone https://github.com/ros-planning/moveit2.git -b humble
git clone https://github.com/ros-planning/moveit2_tutorials.git -b humble
git clone https://github.com/ros-planning/moveit_resources.git -b humble

第二步,安装依赖:

cd ~/moveit2_ws
rosdep install -r --from-paths src --ignore-src --rosdistro humble -y

注意:rosdep 可能会报一些包找不到。别慌,手动装一下就行。我遇到过 libompl-dev 装不上,后来发现是源的问题,换个源就好了。

第三步,编译:

cd ~/moveit2_ws
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

这一步会花点时间,去泡杯咖啡吧。我第一次编译用了将近 40 分钟,取决于你的机器配置。

第四步,设置环境变量:

echo "source ~/moveit2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

1.5 工作空间配置

工作空间是 ROS2 开发的基础。说白了,就是你把代码放在哪里、怎么组织的问题。

1.5.1 创建工作空间

mkdir -p ~/robot_ws/src
cd ~/robot_ws
colcon build

这样你就有了一个空的工作空间。以后你的所有代码都放在 src 目录下。

1.5.2 配置 .bashrc

我习惯在 .bashrc 里加几个别名,方便日常使用:

alias cw='cd ~/robot_ws'
alias cs='cd ~/robot_ws/src'
alias cb='cd ~/robot_ws && colcon build'
alias cbs='cd ~/robot_ws && colcon build --symlink-install'
source /opt/ros/humble/setup.bash
source ~/robot_ws/install/setup.bash

这样你每次打开终端,ROS2 环境和你的工作空间就自动加载好了。

我的习惯:用 --symlink-install 参数编译,这样你修改 Python 脚本后不用重新编译,直接运行就能看到效果。C++ 代码还是得重新编译。

1.6 本章知识体系

下面这张图帮你理清这一章的核心逻辑:

环境搭建知识体系 第1层:操作系统基础 Ubuntu 22.04 LTS · 分区建议 · 换源 · 显卡驱动 第2层:ROS2 Humble 安装 桌面版安装 · 环境变量 · 验证通信 二进制安装 一行命令搞定 适合初学者 源码安装 可修改源码 适合开发者 第4层:工作空间配置 创建 workspace · 配置 .bashrc · colcon build 编译 从下往上,层层递进,每一步都是下一步的基础

1.7 常见问题与避坑指南

最后,我把自己遇到过的问题列出来,你遇到了可以直接对照着解决。

问题1:rosdep update 失败

我曾经被这个问题卡了一下午。后来发现是网络问题,解决办法是挂代理或者用 raw.githubusercontent.com 的镜像。

问题2:colcon build 报错找不到包

多半是依赖没装全。运行 rosdep install 时加上 --ignore-src 参数,它会自动安装所有缺失的依赖。

问题3:RViz 启动后一片空白

检查一下你的显卡驱动。我遇到过好几次,装完系统没装 NVIDIA 驱动,RViz 就罢工了。

我的建议:如果你是第一次接触 ROS2 和 MoveIt2,先用二进制安装。等熟悉了基本操作,再考虑源码安装。别一上来就挑战高难度,容易劝退。

好了,环境搭建就到这里。这一章的内容虽然多,但每一步都很关键。你按照我的步骤来,应该不会出大问题。如果卡住了,回头看看上面的常见问题,大概率能找到答案。

可可精品资料库