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 视图中显示出来。这时候你可以旋转、缩放,检查一下模型是否完整。

注意: 如果加载失败,八成是 URDF 里引用了其他文件(比如 STL 网格文件)但路径不对。我曾经遇到过这个问题,折腾了半天才发现是环境变量没设好。检查一下 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

操作步骤:

  1. 在左侧点击「Planning Groups」
  2. 点击「Add Group」
  3. 填写组名:panda_arm
  4. 选择类型:Kinematic Chain
  5. 点击「Add Kinematic Chain」,选择基座(base_link)和末端(panda_link8)
  6. 重复上述步骤,添加 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 本章知识结构图

下面这张图,帮你理清整个配置流程的逻辑关系:

MoveIt2 Setup Assistant 配置流程 输入:URDF 文件 Step 1:加载 URDF → 检查模型完整性 Step 2:配置规划组(Planning Groups) Step 3:配置末端执行器 / 预设姿态 / 虚拟关节 输出:MoveIt2 配置包(config + launch + srdf) 关键文件 URDF SRDF kinematics.yaml joint_limits.yaml demo.launch.py 验证方式 ros2 launch ... demo.launch.py

这张图把整个流程串起来了。从输入 URDF 开始,经过三个核心步骤,最终输出配置包。你只要按这个顺序走,基本不会出大问题。

好了,第一个 Demo 就到这里。配置文件已经生成,下一节我们会用它来做真正的运动规划。到时候,你就可以让 Panda 机械臂在仿真环境里动起来了。


可可精品资料库