第一章:课程导论与仿真环境搭建
各位同学好,我是你们这门课的老朋友。说实话,每次讲机械臂抓取,我都会想起自己刚入行时踩过的那些坑。那时候没有这么好的仿真工具,全靠硬调,一个抓取动作能折腾好几天。现在有了Gazebo和MoveIt2,效率高太多了。
这一章,我们先聊聊机械臂抓取到底是怎么回事,然后手把手把环境搭起来。嗯,别嫌基础,环境搭不好,后面全白费。
1.1 机械臂抓取技术概述
机械臂抓取,说白了就是让机器人「看见」物体,然后「伸手」去拿。听起来简单,但背后涉及的东西可不少。
我把它拆成三个核心环节:
- 感知:用摄像头或深度传感器获取物体位置和姿态。我在项目里常用的是RGB-D相机,比如Intel RealSense。
- 规划:计算出一条无碰撞的路径,让机械臂从当前位置运动到抓取点。这里就要用到MoveIt2了。
- 执行:控制机械臂关节按照规划好的轨迹运动,同时夹爪要准确闭合。
你可能会问:「为什么非要用仿真?」
我的经验是——真机调试一次的成本太高了。撞坏一个夹爪几千块,撞坏一个工件更心疼。在Gazebo里随便试,参数调好了再上真机,这才是聪明人的做法。
核心观点:仿真不是玩具,是工程利器。我见过太多人跳过仿真直接上真机,结果就是反复炸机。记住,仿真里跑不通的,真机一定跑不通。
1.2 Gazebo与ROS2环境安装
环境安装这块,我建议你严格按照我给的版本来。ROS2的版本兼容性问题,我曾经被坑过整整两天。
1.2.1 系统要求
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 | 别用20.04,有些包不兼容 |
| ROS2 | Humble Hawksbill | LTS版本,稳定 |
| Gazebo | Gazebo Fortress | 与ROS2 Humble原生适配 |
1.2.2 安装步骤
我个人习惯用脚本一键安装,但为了让你理解每一步在干什么,咱们还是手动来。
# 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
# 3. 安装ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop
# 4. 安装Gazebo Fortress
sudo apt install ros-humble-ros-gz
sudo apt install gz-fortress
小技巧:安装完成后,记得把source命令加到.bashrc里。我每次重装系统都会忘这一步,然后一脸懵逼地发现找不到ros2命令。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.2.3 验证安装
打开终端,分别运行以下命令:
# 测试ROS2
ros2 run demo_nodes_cpp talker
# 测试Gazebo
gz sim -v 4
如果能看到小乌龟在说话,Gazebo窗口正常弹出,恭喜你,环境搭好了。
避坑指南:我曾经在虚拟机里装Gazebo,结果3D加速死活打不开。后来发现是VMware的OpenGL支持有问题。建议直接用双系统或者原生Ubuntu,别折腾虚拟机。
1.3 MoveIt2框架介绍
MoveIt2,你可以把它理解成机械臂的「大脑」。它负责运动规划、碰撞检测、逆运动学求解这些脏活累活。
我刚开始用MoveIt的时候,觉得它就是个黑盒子。后来深入看了源码才发现,它的核心架构其实很清晰:
- 运动规划器:默认用OMPL,支持多种算法(RRT、PRM等)。我个人偏爱RRT-Connect,速度快,适合抓取场景。
- 碰撞检测:基于FCL库,可以检测机械臂自身碰撞,也能检测与环境物体的碰撞。
- 逆运动学求解器:把末端位姿转换成关节角度。UR5这类机械臂有解析解,速度快;7轴臂通常用数值解。
下面这张图是我自己画的,帮你理解MoveIt2在仿真中的位置:
你看,整个流程就是:你告诉MoveIt2「我要抓那个杯子」,MoveIt2算出一条路,然后通过ROS2发给Gazebo,Gazebo里的虚拟机械臂就动起来了。
1.3.1 安装MoveIt2
sudo apt install ros-humble-moveit
sudo apt install ros-humble-moveit-resources
安装完成后,可以跑一个官方示例测试:
ros2 launch moveit2_tutorials demo.launch.py
如果看到Rviz里出现了一个机械臂模型,说明MoveIt2装好了。
个人经验:刚开始学MoveIt2,别急着改参数。先用官方示例跑通流程,理解每个文件是干什么的。我见过太多人一上来就改config文件,结果改崩了都不知道怎么恢复。
1.4 本章小结
这一章我们干了三件事:
- 搞清楚了机械臂抓取的核心流程——感知、规划、执行
- 搭好了ROS2 Humble + Gazebo Fortress的环境
- 了解了MoveIt2的架构和安装方法
环境搭好只是第一步。下一章开始,我们会真正动手创建一个机械臂的仿真模型。嗯,到时候你会看到,一个完整的URDF文件长什么样,以及怎么让机械臂在Gazebo里动起来。
课后作业:
- 完成ROS2和Gazebo的安装,并截图验证
- 运行MoveIt2官方示例,观察Rviz中的机械臂模型
- 思考:如果让你设计一个抓取系统,你会先考虑哪些问题?