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后,左侧导航栏依次完成以下配置:
- Self-Collisions:点击Generate Collision Matrix,SA基于采样密度自动计算碰撞矩阵(默认采样密度为10,000,可保持默认)。生成后点击Save保存。
- Virtual Joints:若机械臂基座固定于世界,无需添加虚拟关节;若基座可移动(如AGV),点击Add Virtual Joint,填写关节名(如
virtual_joint)、父链接(world)和子链接(基座link名),类型选择planar或floating。 - Planning Groups:点击Add Group,选择Kinematic Chain类型,填写组名(如
arm_group),设置基座链接(如base_link)和末端执行器链接(如tool0)。SA会自动识别关节链。若存在夹爪等独立运动链,可再添加Joint Group类型规划组。 - Robot Poses(可选):点击Add Pose,命名(如
home),拖动各关节滑块设置初始姿态,点击Save。 - End Effectors(可选):若URDF中定义了夹爪,点击Add End Effector,填写名称、链接和关联规划组。
- Passive Joints:若存在弹簧或被动关节,在此标记;无则跳过。
- ROS 2 Controllers:点击Add Controller,选择
joint_trajectory_controller类型,填写控制器名称(如arm_controller),在Joints列表中勾选所有可动关节。SA将自动生成ros2_controllers.yaml。 - Simulation(可选):若需Gazebo仿真,点击Add Gazebo并选择
ros2_control插件类型;若仅做MoveIt规划与RViz仿真,可跳过此步。 - 3D Perception:默认跳过,无需配置。
- Author Information:填写作者名和邮箱(必填)。
- 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配置包已生成并通过基础验证,可将其作为后续运动规划、避障等案例的输入包。