- 基于 ROS 的**开源软件框架**
- MoveIt! 是什么
- 用于构建移动操纵机器人的应用程序
- 解决运动规划、操纵、3D 感知和运动学等问题
- 组成
- 用户交互
- MoveIt Commander:Python API
- Rviz:可视化工具
- 核心模块 Move Group:协调来自不同模块的命令
- 规划管道 Planning Pipeline
- 场景:提供环境和障碍物的 3D 表示
- 规划场景 Planning Scene
- 占用地图 Occupancy Map
- 运动规划 Motion Planning
- OMPL:包含了众多先进采样规划算法(如 RRT*, PRM)的库
- CHOMP
- SBPL
- 逆运动学求解 Kinematics
- 碰撞检测 Collision Detection
- 轨迹执行管理器 Trajectory Execution Manager:将轨迹转化为控制指令
- 机器人控制器 Controllers:驱动机器人
flowchart TD
subgraph A [用户/客户端层]
direction TB
A1[用户代码<br>C++/Python]
A2[RViz 可视化插件<br>MoveIt 2 Plugin]
end
subgraph B [MoveIt 2 核心规划层]
B1[move_group 节点<br>(生命周期管理)]
subgraph B_sub [核心组件]
B2[运动规划器<br>(如 OMPL)]
B3[逆运动学求解器<br>(如 TRAC-IK)]
B4[碰撞检测<br>(FCL)]
B5[规划场景监视器<br>Planning Scene]
end
end
subgraph C [机器人控制层]
C1[ros2_control 框架]
C2[硬件接口<br>Hardware Interface]
end
D[机器人硬件<br>(电机/传感器)]
A -- ROS 2 Actions/Services<br>via DDS --> B1
B1 -- 协调 --> B_sub
B1 -- ROS 2 Action<br>轨迹执行请求 --> C1
C1 -- 控制指令 --> C2
C2 -- 驱动 --> D
E[感知节点<br>(如深度相机)] -- ROS 2 Topics<br>点云数据 --> B5
- MoveIt 2 工作流程
- 配置机器人:使用
MoveIt Setup Assistant 加载 URDF,配置自碰撞矩阵、规划组、末端执行器等,生成配置包。
- 启动规划节点:启动 MoveIt 2 的启动文件,加载规划、运动学、碰撞检测等组件。
- 设置规划场景:通过
PlanningScene 接口添加机器人自身和环境中的障碍物。
- 设定目标:通过
MoveGroupCpp(C++)或 MoveGroupPy(Python)接口,设置一个目标(位置、姿态、关节值等)。或者在 Rviz 中操作机器人的交互式标记。
- 规划与执行:调用
plan() 和 execute() 方法,MoveIt 2 会生成一条无碰撞轨迹并发送给机器人控制器执行。