1. 为什么选这套组合:ROS2 Humble + MoveIt2 + Gazebo 的底层逻辑
六轴机械臂的控制环境搭建,本质上是在解决三个层面的问题: 通信层 (谁和谁说话、用什么协议说)、 规划层 (从A点到B点怎么走、走哪条路不撞墙)、 仿真层 (在真实硬件到位之前,怎么验证算法和控制逻辑)。ROS2、MoveIt2、Gazebo这三件套,恰好分别对应这三个层面,而且都是各自领域里社区最活跃、文档最全、踩坑后最容易找到答案的方案。
先说ROS2。很多人纠结用ROS1还是ROS2,我的判断标准很简单:如果你现在开始搭环境,2024年之后没有理由再选ROS1。ROS1 Noetic是2025年5月EOL(生命周期结束),之后没有官方安全更新。ROS2 Humble是LTS版本,支持到2027年5月,底层用DDS做通信,天然支持多机、实时性更好、QoS策略可配置。对于机械臂这种对控制周期有要求的场景,ROS2的实时性和通信可靠性是刚需。而且MoveIt2只支持ROS2,Gazebo的新版本也在往ROS2生态靠,这是生态位决定的,不是个人偏好问题。
再说MoveIt2。它是ROS2生态里做机械臂运动规划的事实标准,集成了OMPL、CHOMP、STOMP等多种规划算法,提供碰撞检测、逆运动学求解、轨迹生成、控制器接口等一整套能力。你不用MoveIt2,就得自己写逆解、自己做碰撞检测、自己做轨迹插值,工作量不是一个量级。MoveIt2的Setup Assistant可以半自动生成配置包,虽然生成的配置经常需要手动调,但至少给了你一个能跑的起点。
最后是Gazebo。仿真环境的价值在于:硬件没到之前能开发,硬件到了之后能对比验证,算法改动能快速回归测试。Gazebo和ROS2的集成通过 ros_gz 桥接包实现,物理引擎用DART或ODE,传感器仿真(相机、激光雷达、IMU)都有现成插件。对于六轴机械臂,Gazebo能模拟关节动力学、碰撞响应、重力影响,这些在纯运动学仿真(比如RViz里拖拽)里是看不到的。
注意:Gazebo有两个版本线——Classic(gazebo11)和Ignition/Gazebo Sim(gz-sim)。ROS2 Humble官方推荐用Gazebo Classic 11,但Gazebo Sim(Fortress或Garden)是未来方向。新手建议先用Classic,资料多、坑少;有经验后再迁移到gz-sim。
这套组合的典型应用场景包括:机械臂抓取规划验证、视觉伺服算法开发、多机协同仿真、强化学习训练环境搭建。适合的人群是:有ROS2基础(至少跑过小乌龟、写过发布订阅)、了解机械臂运动学基本概念(DH参数、正逆解)、想快速搭一个能跑起来的仿真环境做算法验证的开发者。
2. 环境搭建全流程:从裸机到能跑的仿真
2.1 系统选择与ROS2 Humble安装
Ubuntu 22.04是ROS2 Humble的官方支持系统,没有之一。我试过在Ubuntu 20.04上装Humble,依赖冲突能让你怀疑人生;也试过Debian 12,虽然能装但社区支持几乎为零。所以第一步:装Ubuntu 22.04,桌面版或服务器版都行,服务器版记得自己装 ubuntu-desktop 或者至少保证有X11转发。
ROS2 Humble的安装方式有两种:apt源安装和源码编译。 强烈建议apt安装 ,源码编译适合需要改ROS2源码的进阶用户,新手编译一次至少两小时,而且中间任何依赖缺失都会导致编译失败。apt安装步骤如下:
# 设置locale,确保支持UTF-8
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 apt源
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
# 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop
安装完成后,source环境变量:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证安装: ros2 run demo_nodes_cpp talker ,另开终端 ros2 run demo_nodes_cpp listener ,能看到消息传递就说明ROS2基础环境OK。
实操心得:国内网络环境下,raw.githubusercontent.com经常连不上,导致添加key失败。解决办法是用
ghproxy.com前缀代理,或者手动下载key文件放到/usr/share/keyrings/下。另外,apt安装过程中如果卡在ros-humble-desktop下载,可以换清华源或中科大源,速度能快十倍。
2.2 MoveIt2安装与配置包生成
MoveIt2的安装比ROS2简单,因为Humble的apt源里已经包含了MoveIt2的二进制包:
sudo apt install ros-humble-moveit
安装完成后,用MoveIt Setup Assistant生成机械臂配置包。这里以Panda机械臂为例(六轴,社区资料最多),如果你用的是其他机械臂,流程一样,只是URDF和关节限位不同。
ros2 run move
406




被折叠的 条评论
为什么被折叠?



