- 基于 ROS 的**开源软件框架**
  1. MoveIt! 是什么
    • 用于构建移动操纵机器人的应用程序
    • 解决运动规划操纵3D 感知运动学等问题
  2. 组成
    • 用户交互
      • MoveIt Commander:Python API
      • Rviz:可视化工具
    • 核心模块 Move Group:协调来自不同模块的命令
    • 规划管道 Planning Pipeline
      1. 场景:提供环境和障碍物的 3D 表示
        • 规划场景 Planning Scene
        • 占用地图 Occupancy Map
      2. 运动规划 Motion Planning
        • OMPL:包含了众多先进采样规划算法(如 RRT*, PRM)的库
        • CHOMP
        • SBPL
      3. 逆运动学求解 Kinematics
        • 内置
        • 第三方
      4. 碰撞检测 Collision Detection
        • FCL
        • PCL
    • 轨迹执行管理器 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
  1. MoveIt 2 工作流程
    1. 配置机器人:使用 MoveIt Setup Assistant 加载 URDF,配置自碰撞矩阵、规划组、末端执行器等,生成配置包。
    2. 启动规划节点:启动 MoveIt 2 的启动文件,加载规划、运动学、碰撞检测等组件。
    3. 设置规划场景:通过 PlanningScene 接口添加机器人自身和环境中的障碍物。
    4. 设定目标:通过 MoveGroupCpp(C++)或 MoveGroupPy(Python)接口,设置一个目标(位置、姿态、关节值等)。或者在 Rviz 中操作机器人的交互式标记。
    5. 规划与执行:调用 plan() 和 execute() 方法,MoveIt 2 会生成一条无碰撞轨迹并发送给机器人控制器执行。