2. 环境搭建:ROS2 Humble安装、Nav2源码编译、机械臂仿真环境搭建
说实话,做机器人开发最怕什么?不是算法调不通,而是环境搭到一半崩了,然后重装系统。我这些年至少重装了七八次Ubuntu,踩过的坑比写过的代码还多。
这一章,咱们就把环境一次搞定。我会把每一步的关键点都讲清楚,尤其是那些容易翻车的地方。
2.1 ROS2 Humble 安装
ROS2的版本很多,为什么选Humble?因为它是个长期支持版,到2027年才结束维护。做项目最怕版本过期,你想想看,辛辛苦苦搭的环境,两年后不支持了,多闹心。
安装步骤其实不复杂,但我建议你按这个顺序来:
- 设置编码:确保系统支持UTF-8
- 添加源:把ROS2的软件源加到系统里
- 安装核心包:我一般装desktop版本,工具链全
- 配置环境变量:每次开终端都要source一下
我的安装命令(亲测可用)
# 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
# 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 Desktop
sudo apt update
sudo apt install ros-humble-desktop
# 4. 配置环境
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
注意:如果你用的是Ubuntu 22.04以外的版本,Humble可能装不上。我有个同事用20.04硬装,折腾了两天最后还是换了系统。
2.2 Nav2 源码编译
为什么要源码编译?直接用apt安装不香吗?
嗯,这里有个实际原因。我在做机械臂导航项目时,需要修改Nav2的局部规划器参数。如果用二进制包,改起来很麻烦。源码编译的话,想改哪里改哪里。
编译Nav2之前,先把依赖装好:
sudo apt install ros-humble-nav2-* ros-humble-slam-toolbox
sudo apt install ros-humble-turtlebot3-*
然后拉源码编译:
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch humble
cd ~/nav2_ws
colcon build --symlink-install
小技巧:第一次编译时加个 --symlink-install,后面改Python文件就不用重新编译了。这个我吃了不少亏才发现的。
编译时间取决于你的电脑配置。我用的i7-12700,大概15分钟。如果你用笔记本,建议插上电源,别编译到一半没电了——别问我怎么知道的。
2.3 机械臂仿真环境搭建
机械臂导航和轮式机器人最大的区别是什么?轮式机器人只需要考虑平面移动,机械臂要考虑的是——整个工作空间。
所以我们需要两个核心工具:
- MoveIt2:负责运动规划和碰撞检测
- Gazebo:提供物理仿真环境
2.3.1 安装MoveIt2
MoveIt2是ROS2版本的MoveIt。安装方式有两种:
| 方式 | 命令 | 适用场景 |
|---|---|---|
| 二进制安装 | sudo apt install ros-humble-moveit |
快速验证,不修改源码 |
| 源码编译 | colcon build --packages-select moveit2 |
需要定制规划器或算法 |
我个人建议先用二进制装,跑通流程再说。等后面需要调参数了,再切源码。
2.3.2 安装Gazebo
Gazebo现在和ROS2的集成做得不错。安装命令很简单:
sudo apt install ros-humble-gazebo-ros-pkgs
sudo apt install ros-humble-gazebo-ros2-control
曾经踩过的坑:Gazebo版本和ROS2版本必须匹配。Humble对应的是Gazebo Fortress(即Gazebo 11的后续版本)。如果你装了Ignition Gazebo,会发现很多接口对不上。
2.3.3 搭建完整的仿真工作空间
好了,现在我们把所有东西整合到一起。我习惯建一个独立的工作空间:
mkdir -p ~/arm_nav_ws/src
cd ~/arm_nav_ws/src
# 克隆机械臂描述文件(以UR5e为例)
git clone https://github.com/UniversalRobots/Universal_Robots_ROS2_Description.git
# 克隆MoveIt2配置
git clone https://github.com/ros-planning/moveit2_tutorials.git
# 克隆Gazebo仿真配置
git clone https://github.com/ros-simulation/gazebo_ros2_control.git
cd ~/arm_nav_ws
colcon build
编译完成后,启动仿真环境:
source install/setup.bash
ros2 launch ur5e_moveit_config ur5e_gazebo.launch.py
如果一切顺利,你会看到Gazebo里出现一个UR5e机械臂,MoveIt2的RViz界面也同时打开。
2.4 本章知识体系
下面这张图,是我做这个课程时画的。它把整个环境搭建的脉络理清楚了:
2.5 环境验证清单
装完别急着往下走。我建议你按这个清单检查一遍:
- ROS2通信测试:开两个终端,一个跑
ros2 run demo_nodes_cpp talker,另一个跑ros2 run demo_nodes_cpp listener,能看到数据收发就算通 - Nav2编译测试:运行
ros2 launch nav2_bringup tb3_simulation_launch.py,能看到TurtleBot3在Gazebo里跑起来 - MoveIt2测试:运行
ros2 launch moveit2_tutorials demo.launch.py,RViz里能拖拽机械臂
我的习惯:每次装完环境,我都会写一个简单的测试脚本,把上面三个测试串起来跑一遍。这样下次换电脑或者重装系统时,直接跑脚本就知道环境有没有问题。