4. MoveIt2 Setup Assistant配置

任务目标

本案例将使用MoveIt2 Setup Assistant(SA)为URDF格式的机械臂生成MoveIt2配置包。完成配置后,你将获得一个包含SRDF(机器人语义描述)、碰撞矩阵、规划组定义及默认规划参数的独立ROS2功能包,可直接用于后续的MoveIt2运动规划与仿真。

环境准备

  • 已安装ROS2(Humble或更高版本)及MoveIt2(通过apt install ros-${ROS_DISTRO}-moveit安装)
  • 已安装MoveIt Setup Assistant:sudo apt install ros-${ROS_DISTRO}-moveit-setup-assistant
  • 准备一个完整的URDF文件(本案例使用一个简单的6自由度机械臂示例,文件名为arm.urdf)

启动Setup Assistant

在终端中执行以下命令启动图形界面:

ros2 run moveit_setup_assistant moveit_setup_assistant

点击Create New MoveIt Config Package,浏览并选择你的URDF文件,点击Load Files。

关键配置步骤

SA加载URDF后,左侧导航栏依次完成以下配置:

  1. Self-Collisions:点击Generate Collision Matrix,SA基于采样密度自动计算碰撞矩阵(默认采样密度为10,000,可保持默认)。生成后点击Save保存。
  2. Virtual Joints:若机械臂基座固定于世界,无需添加虚拟关节;若基座可移动(如AGV),点击Add Virtual Joint,填写关节名(如virtual_joint)、父链接(world)和子链接(基座link名),类型选择planar或floating。
  3. Planning Groups:点击Add Group,选择Kinematic Chain类型,填写组名(如arm_group),设置基座链接(如base_link)和末端执行器链接(如tool0)。SA会自动识别关节链。若存在夹爪等独立运动链,可再添加Joint Group类型规划组。
  4. Robot Poses(可选):点击Add Pose,命名(如home),拖动各关节滑块设置初始姿态,点击Save。
  5. End Effectors(可选):若URDF中定义了夹爪,点击Add End Effector,填写名称、链接和关联规划组。
  6. Passive Joints:若存在弹簧或被动关节,在此标记;无则跳过。
  7. ROS 2 Controllers:点击Add Controller,选择joint_trajectory_controller类型,填写控制器名称(如arm_controller),在Joints列表中勾选所有可动关节。SA将自动生成ros2_controllers.yaml。
  8. Simulation(可选):若需Gazebo仿真,点击Add Gazebo并选择ros2_control插件类型;若仅做MoveIt规划与RViz仿真,可跳过此步。
  9. 3D Perception:默认跳过,无需配置。
  10. Author Information:填写作者名和邮箱(必填)。
  11. Configuration Files:点击Browse选择输出目录(如~/ws_moveit/src),包名自动生成(如arm_moveit_config),点击Generate Package。

验证配置包

生成完成后,在输出目录下应出现arm_moveit_config包,包含以下关键文件:

  • config/arm.srdf:包含碰撞矩阵与规划组定义
  • config/kinematics.yaml:运动学求解器配置
  • config/joint_limits.yaml:关节限位
  • config/ros2_controllers.yaml:控制器配置
  • launch/:演示启动文件

编译并运行演示验证配置正确性:

cd ~/ws_moveit
colcon build --packages-select arm_moveit_config
source install/setup.bash
ros2 launch arm_moveit_config demo.launch.py

通过条件:RViz正常启动并加载机器人模型;在MotionPlanning面板中,将Planning Group选为arm_group,使用Interact工具拖动末端拖拽球设置目标位姿,点击Plan & Execute,机械臂能规划出无碰撞轨迹并执行(若使用真实硬件或仿真)。若仅需验证规划,点击Plan即可看到规划成功的轨迹路径。

常见问题

  • 碰撞矩阵生成失败:检查URDF中link名称是否重复,或link间存在未定义的碰撞几何体。
  • 规划组无法添加:确认URDF中关节链连续且无分支,末端link必须为叶子节点。
  • demo.launch.py启动报错:检查是否已source ROS2环境及工作空间,或运行ros2 launch arm_moveit_config setup_assistant.launch.py重新加载SA检查配置。

至此,MoveIt2配置包已生成并通过基础验证,可将其作为后续运动规划、避障等案例的输入包。