3、第一个Demo:使用 MoveIt2 Setup Assistant 配置你的第一个机器人(以Panda机械臂为例),生成配置文件
好,咱们正式开始动手了。
前面聊了那么多概念,说实话,不跑个Demo总觉得心里没底。我个人习惯是,学一个新工具,先让它动起来再说。哪怕只是让机械臂在仿真里晃一下,也比看十页文档来得实在。
这一节,我们就拿经典的 Franka Panda 机械臂开刀。用 MoveIt2 Setup Assistant 这个图形化工具,把它的 URDF 文件转换成 MoveIt2 能认的配置文件。说白了,就是给机器人办个「身份证」,告诉 MoveIt2:这胳膊长啥样、关节在哪、能怎么动。
3.1 准备工作:你得先有个机器人模型
在启动 Setup Assistant 之前,你得确保 Panda 的 URDF 文件已经躺在你的工作空间里了。URDF 是什么?你可以把它理解成机器人的「骨架描述文件」——里面定义了连杆、关节、几何形状这些基本信息。
我建议你直接从官方仓库拉一份干净的模型:
# 进入你的工作空间
cd ~/ws_moveit2/src
# 克隆 Panda 机器人描述包
git clone https://github.com/ros-planning/panda_moveit_config.git -b ros2
# 顺便把机器人本体描述也拉下来
git clone https://github.com/ros-planning/franka_ros2.git -b ros2
# 安装依赖
cd ~/ws_moveit2
rosdep install --from-paths src --ignore-src -r -y
# 编译
colcon build --symlink-install
source install/setup.bash
--symlink-install 编译,以后改 Python 文件不用重新编译,省时间。我刚开始不知道这个参数,每次改个配置都要等半天编译,后来同事提醒才改过来。
编译成功后,你可以先看一眼这个模型长什么样:
# 在终端里查看机器人状态
ros2 launch panda_moveit_config display.launch.py
如果一切正常,你会看到一个粉色的 Panda 机械臂出现在 RViz 里。嗯,就是那个网红机械臂,七轴、带夹爪,很多实验室都在用。
3.2 启动 Setup Assistant
模型准备好了,接下来就是重头戏。启动 Setup Assistant 的命令很简单:
ros2 launch moveit2_setup_assistant setup_assistant.launch.py
等几秒钟,会弹出一个图形界面。我第一次看到这个界面时,感觉有点懵——选项太多了。但其实你不用慌,核心流程就三步:加载 URDF、配置规划组、生成配置文件。
3.3 第一步:加载 URDF 文件
点击界面上的「Create New MoveIt Configuration Package」,然后选择你的 URDF 文件。Panda 的 URDF 路径一般在:
~/ws_moveit2/src/franka_ros2/franka_description/robots/panda.urdf
选好文件后,点击「Load File」。如果 URDF 格式没问题,你会看到机器人模型在 3D 视图中显示出来。这时候你可以旋转、缩放,检查一下模型是否完整。
FRANKA_DESCRIPTION 这个环境变量有没有指向正确路径。
3.4 第二步:配置规划组
这是最核心的一步。规划组(Planning Group)说白了就是告诉 MoveIt2:「哪些关节属于同一个运动单元」。
对于 Panda 机械臂,我们通常需要配置两个规划组:
| 规划组名称 | 包含的关节 | 类型 |
|---|---|---|
| panda_arm | panda_joint1 ~ panda_joint7 | Kinematic Chain |
| panda_hand | panda_finger_joint1, panda_finger_joint2 | Kinematic Chain |
操作步骤:
- 在左侧点击「Planning Groups」
- 点击「Add Group」
- 填写组名:
panda_arm - 选择类型:Kinematic Chain
- 点击「Add Kinematic Chain」,选择基座(base_link)和末端(panda_link8)
- 重复上述步骤,添加
panda_hand组
嗯,这里有个细节要注意。Panda 的末端执行器是夹爪,但夹爪的关节是平移的(prismatic),不是旋转的。所以配置 panda_hand 时,运动学求解器要选对。我个人习惯用 KDL 作为默认求解器,大部分场景都够用。
3.5 第三步:配置其他关键参数
规划组配好了,还有几个地方需要顺手设一下:
- End Effectors: 把
panda_hand标记为末端执行器。这样 MoveIt2 就知道夹爪是干活的工具。 - Passive Joints: Panda 没有被动关节,这步跳过。
- Robot Poses: 可以预设几个常用姿态,比如「home」位置(所有关节归零)。我一般会设一个「vertical」姿态,让机械臂竖直向上,方便调试。
- Virtual Joints: 如果你的机器人是固定安装的,加一个虚拟关节,把基座固定在地面上。
3.6 生成配置文件
所有参数都配好了?点击右上角的「Generate Package」按钮。系统会让你选择保存路径和包名。我建议包名就叫 panda_moveit_config,路径选在你的工作空间的 src 目录下。
生成成功后,你会看到一堆文件被创建出来。核心文件包括:
config/目录:里面是各种 YAML 配置文件,比如joint_limits.yaml(关节限位)、kinematics.yaml(运动学求解器配置)launch/目录:启动文件,用来加载配置并启动 MoveIt2 相关节点srdf/目录:SRDF 文件,这是 URDF 的「扩展」,记录了规划组、姿态、碰撞信息等
你可以用 tree 命令看看生成的文件结构:
cd ~/ws_moveit2/src/panda_moveit_config
tree -L 2
3.7 验证配置是否成功
配置文件生成了,但好不好用还得跑一下才知道。用下面这个命令启动 Panda 的 MoveIt2 演示:
ros2 launch panda_moveit_config demo.launch.py
如果一切顺利,你会看到 RViz 界面里出现了 Panda 机械臂,并且左侧多了一个「Motion Planning」面板。你可以试着拖拽一下机械臂的末端,看看运动学求解是否顺滑。
- ✅ 机械臂模型正常显示
- ✅ 拖拽末端时,关节角度平滑变化
- ✅ 点击「Plan」按钮,能生成运动轨迹
- ✅ 点击「Execute」按钮,机械臂能按轨迹运动
如果哪一步卡住了,别急。我刚开始做的时候,经常遇到「No planning solution found」的错误。后来发现,多半是规划组配置错了——要么关节没选全,要么基座和末端的坐标系搞反了。回去检查一下 Planning Groups 的设置,八成能解决问题。
3.8 本章知识结构图
下面这张图,帮你理清整个配置流程的逻辑关系:
这张图把整个流程串起来了。从输入 URDF 开始,经过三个核心步骤,最终输出配置包。你只要按这个顺序走,基本不会出大问题。
好了,第一个 Demo 就到这里。配置文件已经生成,下一节我们会用它来做真正的运动规划。到时候,你就可以让 Panda 机械臂在仿真环境里动起来了。