MoveIt2 安装与部署
二、安装与部署
安装步骤
- 装好 ROS2 发行版,确认基础环境可用。
- 安装 MoveIt 2 以及配套的配置助手与 RViz 插件。
- 用配置助手生成配置包:导入 URDF、定义自碰撞、划分规划组、设置预设位姿、定义末端执行器、生成允许碰撞矩阵、导出。
- 准备
ros2_control的控制器配置:关节状态广播器加关节轨迹控制器。 - 先在假控制器或仿真里跑通,再上真机。
sudo apt install -y \
ros-$ROS_DISTRO-moveit \
ros-$ROS_DISTRO-ros2-control \
ros-$ROS_DISTRO-ros2-controllers
# 启动配置助手
ros2 launch moveit_setup_assistant setup_assistant.launch.py
控制器配置
controller_manager:
ros__parameters:
update_rate: 100
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
arm_controller:
type: joint_trajectory_controller/JointTrajectoryController
arm_controller:
ros__parameters:
joints:
- joint1
- joint2
- joint3
- joint4
- joint5
- joint6
command_interfaces:
- position
state_interfaces:
- position
- velocity
constraints:
goal_time: 0.6
joints 里的关节名必须与 URDF 完全一致,顺序也要与控制器期望的一致,否则会报「无法找到能驱动这些关节的控制器」。
常见报错排查
| 报错 / 现象 | 原因 | 处理 |
|---|---|---|
| Unable to find IK solution | 目标位姿超出工作空间、接近奇异点、IK 插件在局部极小值卡住 | 检查目标是否可达;更换 IK 插件;设置超时与重试;给多个初始种子 |
| No motion plan found | 规划时间不足、起点就被判为碰撞、目标被障碍包围、约束过紧 | 延长规划时间、增加尝试次数、检查规划场景里的障碍、放宽目标容差 |
| Found empty JointState message | 关节状态广播器没启动 | 拉起 joint_state_broadcaster 并确认话题有数据 |
| 无法识别能驱动这些关节的控制器 | 控制器没加载,或关节名不匹配 | 核对控制器 YAML 的关节列表与 URDF 是否一致 |
| 规划场景里一直报自碰撞 | 允许碰撞矩阵没生成或没加载 | 在配置助手里重新生成并确认加载路径 |
| 轨迹执行时抖动或突然停顿 | 时间参数化不合理,或控制器增益与负载不匹配 | 调整速度与加速度缩放、检查轨迹关键点密度、调控制器增益 |
| RViz 里拖动规划不了 | 规划组选错、交互标记没启用 | 确认规划组与末端连杆选择正确 |

