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。