3. MoveIt配置助手:启动Setup Assistant

好,咱们正式开始配置MoveIt。说实话,我第一次用这个工具的时候,心里还挺没底的——那么多参数,万一配错了怎么办?后来做多了才发现,MoveIt Setup Assistant其实是个很贴心的向导。你只要按步骤来,基本不会出大问题。

核心流程:URDF模型 → 自碰撞矩阵 → 虚拟关节 → 规划组 → 配置文件包

启动助手 自碰撞矩阵 虚拟关节 规划组 生成包

3.1 启动Setup Assistant

打开终端,输入下面这行命令:

roslaunch moveit_setup_assistant setup_assistant.launch

嗯,这里要注意——你得先确保MoveIt已经装好了。我遇到过有人折腾半天启动不了,结果发现是没装完整。用sudo apt install ros-noetic-moveit就能搞定。

启动后,界面会问你:是要创建新配置,还是编辑已有的?咱们选「Create New MoveIt Configuration Package」。

小技巧:我个人习惯把URDF文件放在一个单独的文件夹里,比如~/robot_description/。这样后续找文件方便,不会跟其他项目混在一起。

3.2 配置自碰撞矩阵

加载URDF之后,第一步就是自碰撞矩阵。说白了,就是告诉MoveIt:「我这个机器人的哪些部位不能互相穿透」。比如机械臂的连杆A和连杆B,在运动时会不会撞到一起?

Setup Assistant会自动计算一个默认矩阵。但默认的采样密度是10000个点——对于大多数6轴机械臂来说,这个值够用了。如果你用的是协作机器人或者双臂机器人,我建议把采样密度提到50000。

注意:采样点越多,计算越精确,但生成时间也越长。我曾经在配置一个7轴机器人时用了100000个点,结果等了快10分钟。后来发现10000个点其实已经够用了。

操作很简单:点击「Generate Collision Matrix」按钮,等进度条跑完就行。完成后你会看到一堆碰撞对,默认都是「Never Collide」状态。别慌,这是正常的——MoveIt会在运行时动态检查碰撞。

3.3 定义虚拟关节

虚拟关节是干嘛用的?它用来描述机器人跟世界之间的连接关系。比如你的机械臂是固定在工作台上的,那就需要一个虚拟关节把机器人基座跟「world」连起来。

点击「Virtual Joints」标签,然后添加:

  • Joint Name: 随便起,比如virtual_joint
  • Child Link: 选机器人的基座link,通常是base_link
  • Parent Frame: 填world
  • Type: 选fixed(固定连接)

如果你的机器人是移动底盘,那Type要选planar或floating。嗯,这个咱们后面讲导航的时候再细说。

经验之谈:虚拟关节的名字最好跟URDF里的frame命名风格一致。比如你的URDF里都用下划线命名,那就别突然来个驼峰命名。不然以后调试的时候看着别扭。

3.4 配置规划组

规划组是MoveIt的核心概念。一个规划组就是一组关节和连杆的集合,MoveIt会针对这个组做运动规划。

点击「Planning Groups」标签,然后添加:

  1. Group Name: 比如arm_group或manipulator
  2. Kinematic Solver: 选KDL(默认的,够用)
  3. Group Type: 选Kinematic Chain
  4. Base Link: 选base_link
  5. Tip Link: 选tool0或gripper_base

如果你有夹爪,建议单独建一个规划组:

  • Group Name: gripper_group
  • Group Type: 选Kinematic Chain或Joint Group
  • Base Link: 夹爪的基座link
  • Tip Link: 夹爪的末端link

避坑指南:我曾经在配置夹爪时忘了把左右手指的关节都加进去,结果规划出来的轨迹只有一边在动。检查了半天才发现——嗯,这种低级错误犯一次就够了。

3.5 生成配置文件包

所有配置都完成后,点击「Generate Package」按钮。系统会让你选择保存路径和包名。

我建议包名格式统一:你的机器人名称_moveit_config。比如panda_moveit_config或ur5_moveit_config。这样一看就知道是哪个机器人的配置。

生成完成后,你会得到一个包含以下内容的包:

文件/文件夹 作用
config/ 存放所有配置文件,如joint_limits.yaml、kinematics.yaml
launch/ 启动文件,包括demo.launch、planning_context.launch
srdf/ 语义描述文件,包含自碰撞矩阵和规划组信息

重要:生成后别急着关窗口。先检查一下config/kinematics.yaml里的求解器参数。默认的KDL求解精度是0.005,如果你需要更高精度,可以改成0.001。但注意——精度越高,规划越慢。

好了,到这里你的MoveIt配置包就准备好了。下一节咱们会用这个包来测试运动规划——看看机器人能不能动起来。