4. MoveIt! Setup Assistant配置

任务目标

使用MoveIt Setup Assistant为URDF格式的机械臂模型生成MoveIt配置包(moveit_config),使后续可通过MoveIt进行运动规划与仿真。

前置条件

  • 已安装ROS(Noetic或Melodic)及MoveIt:sudo apt install ros-${ROS_DISTRO}-moveit
  • 已安装moveit_setup_assistant:sudo apt install ros-${ROS_DISTRO}-moveit-setup-assistant
  • 准备一个完整的URDF文件(本例使用simple_arm.urdf,包含base_link、link1、link2、tool_link及对应关节)

实现步骤

1. 启动Setup Assistant

source /opt/ros/${ROS_DISTRO}/setup.bash
roslaunch moveit_setup_assistant setup_assistant.launch

点击Create New MoveIt Configuration Package,选择URDF文件路径,点击Load Files。

2. 生成自碰撞矩阵

进入Self-Collisions页签,采样密度保持默认(10000),点击Generate Collision Matrix。系统基于FCL碰撞检测自动计算允许的碰撞对,生成结果将写入config/collision_matrix.yaml。

3. 添加虚拟关节与规划组

在Virtual Joints页签添加虚拟关节,将机械臂基座固定到世界坐标系:

  • Virtual Joint Name: fixed_base_joint
  • Child Link: base_link
  • Parent Frame: world
  • Joint Type: Fixed

在Planning Groups页签创建运动规划组,点击Add Group:

  • Group Name: arm_group
  • Kinematic Solver: KDLKinematicsPlugin
  • Group Type: Kinematic Chain
  • Base Link: base_link,Tip Link: tool_link

点击Add Kin. Chain完成添加。

4. 生成配置文件

依次进入Robot Poses(可选添加初始姿态)、End Effectors(若需抓取,添加tool_link为末端执行器)、Passive Joints(默认跳过)、ROS Control(不使用真实硬件则跳过)、Simulation(勾选Add Gazebo Controller可选)、3D Perception(默认跳过)、Author Information(填写作者名)。最后点击Generate Config,选择输出目录(如~/catkin_ws/src/simple_arm_moveit_config),点击生成。

5. 编译与验证

cd ~/catkin_ws && catkin_make
source devel/setup.bash
roslaunch simple_arm_moveit_config demo.launch

若配置正确,将启动RViz并显示机械臂模型,左侧MotionPlanning面板中Planning Group选择arm_group,可通过拖拽交互标记(InteractiveMarker)拖动末端,点击Plan & Execute观察规划运动。

验证判定标准

  • demo.launch正常启动,RViz中无红色报错,机械臂模型完整显示;
  • Planning Group下拉框可选arm_group,且可设置随机目标(Random Valid)并成功规划出无碰撞路径;
  • 生成的配置包目录结构完整,包含config/(含joint_limits.yaml、kinematics.yaml、ompl_planning.yaml)与launch/目录。

常见问题

  • URDF加载失败:检查URDF中所有link和joint命名一致,且无缺失的mesh路径;
  • 规划失败:在config/ompl_planning.yaml中确认arm_group的规划器为RRTConnect,并增大timeout至0.5s以上;
  • RViz无模型:确认demo.launch中robot_description参数正确加载了URDF。
MoveIt Setup Assistant 配置流程 1. 加载URDF Create New Config 2. 自碰撞矩阵 采样密度10000 3. 虚拟关节 base→world固定 4. 规划组 arm_group KDL 5. 末端执行器 tool_link 6. 生成配置包 输出目录选择 7. catkin_make 编译工作空间 8. demo.launch RViz验证 生成的配置包结构(simple_arm_moveit_config/) ├── config/ ├── collision_matrix.yaml # 自碰撞矩阵 ├── kinematics.yaml # KDL求解器配置 ├── ompl_planning.yaml # OMPL规划器参数 ├── joint_limits.yaml # 关节限位 ├── launch/ # demo.launch等启动文件