4. MoveIt!配置助手生成机械臂配置包

任务目标

为自定义URDF机械臂生成MoveIt!运动规划配置包,包含碰撞矩阵与规划组定义,使机械臂可在RViz中通过MoveIt!插件进行运动规划与可视化。

环境准备

  • Ubuntu 20.04 + ROS Noetic(或Ubuntu 18.04 + ROS Melodic)
  • 已安装 moveit_setup_assistant:sudo apt install ros-noetic-moveit
  • 已准备好机械臂URDF文件(本例使用arm.urdf,含base_link、shoulder_link、upperarm_link、forearm_link、wrist_link、gripper_link)

操作流程

  1. 启动配置助手:roslaunch moveit_setup_assistant setup_assistant.launch
  2. 点击Create New MoveIt Configuration Package,浏览选择arm.urdf文件
  3. 进入Self-Collisions页,点击Generate Collision Matrix,采样密度保持默认10000,生成后点击Save
  4. 进入Planning Groups页,点击Add Group:
  • Group Name: arm_group,Kinematic Solver: KDLKinematicsPlugin
  • 点击Add Joints,选中全部5个旋转关节(shoulder_pan_joint至wrist_roll_joint)
  • 点击Add Links,选中base_link至wrist_link
  • 点击Save
  1. 进入Robot Poses页,添加home姿态(所有关节为0),保存
  2. 进入End Effectors页,添加末端执行器:Name: gripper,Group: arm_group,Link: gripper_link
  3. 进入Configuration Files页,设置包名arm_moveit_config,点击Generate Package,选择输出目录(如~/catkin_ws/src)

验证方法

  1. 编译并加载配置包:
cd ~/catkin_ws && catkin_make
roslaunch arm_moveit_config demo.launch
  1. RViz启动后,确认:
  • 左侧MotionPlanning面板显示机械臂模型,无红色碰撞警告
  • 在Planning Group下拉框中选择arm_group
  • 拖动交互标记设置目标位姿,点击Plan,规划成功显示绿色轨迹
  • 点击Execute,机械臂在RViz中完成运动

通过条件:规划组可选中、无自碰撞报错、能成功规划并执行一条从home到任意目标点的无碰撞轨迹。

关键生成文件说明

配置包生成后,核心文件位于arm_moveit_config/config/目录:

  • srdf/arm.srdf:包含碰撞矩阵(<disable_collisions>标签对)与规划组定义(<group>标签)
  • joint_limits.yaml:关节速度/加速度限制(由助手自动生成)
  • kinematics.yaml:KDL求解器配置

常见问题

  • 规划失败:检查arm.srdf中<group>是否包含全部5个关节;确认URDF中关节轴方向正确
  • 碰撞检测报错:重新生成碰撞矩阵,增大采样密度至50000
  • demo.launch无法启动:确认arm_moveit_config已编译,且URDF路径在launch文件中正确
MoveIt! Setup Assistant 配置流程 arm.urdf 机器人模型描述 Setup Assistant 加载URDF 生成配置 arm_moveit_config 配置包 launch + config demo.launch RViz + MoveIt! 运动规划验证 关键生成内容 arm.srdf • <disable_collisions> 碰撞矩阵对 • <group name="arm_group"> 包含5个关节 + 5个link • <end_effector name="gripper"> kinematics.yaml • KDLKinematicsPlugin 求解器 • arm_group 运动学配置 • 关节搜索参数 验证闭环 catkin_make 编译配置包 roslaunch demo.launch 启动RViz + MoveIt! Plan + Execute 规划并执行轨迹 ✓ 通过条件:无碰撞警告 + 规划成功 + 轨迹可执行