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」标签,然后添加:
- Group Name: 比如
arm_group或manipulator - Kinematic Solver: 选
KDL(默认的,够用) - Group Type: 选
Kinematic Chain - Base Link: 选
base_link - 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配置包就准备好了。下一节咱们会用这个包来测试运动规划——看看机器人能不能动起来。