分为两大类线性 MPC (OSQP快速原型)、非线性 NMPC (Acados动力学工业首选)所有仓库均可直接git clone下载环境默认ROS2 Humble / Ubuntu22.04一、ros-controls 官方ros2_mpc【首选ros2_control 插件可直接对接 MoveIt2】✅最贴合你的需求替换 joint_trajectory_controllerMoveGroup 规划轨迹 → MPC 跟踪线性 MPCOSQP 求解标准controller_interface插件直接纳入 controller_manager 管理无需修改 MoveIt 源码。bashmkdir -p ~/mpc_ws/src cd ~/mpc_ws/src # 克隆切换humble分支 git clone -b humble https://github.com/ros-controls/ros2_mpc.git git clone https://github.com/osqp/osqp-eigen.git # 安装依赖 rosdep install --from-paths . --ignore-src -r -y colcon build --cmake-args -DCMAKE_BUILD_TYPERelease source install/setup.bash仓库地址https://github.com/ros-controls/ros2_mpc 适用关节空间线性 MPC、速度型模型适合前期仿真验证。 ⚠️ 局限无刚体动力学属于线性近似 MPC高速跟踪性能有限二、Acados ROS2 栈NMPC动力学非线性 MPC焊接场景强烈推荐ICube Robotics 成熟开源栈支持生成 C 代码、实时 NMPC、ros2_control 插件机械臂刚体动力学 NMPC 工业方案。1基础库 acados_solver_ros2核心框架bashgit clone https://github.com/ICube-Robotics/acados_solver_ros2.git地址https://github.com/ICube-Robotics/acados_solver_ros22机械臂 Demo 包rrbot 二连杆机械臂可迁移到 6 轴机械臂 MoveIt2bashgit clone https://github.com/ICube-Robotics/acados_solver_ros2_examples.git vcs import . acados_solver_ros2_examples/acados_solver_ros2_examples.repos地址https://github.com/ICube-Robotics/acados_solver_ros2_examples 特点Python 定义 OCP 最优控制问题 → 自动生成 C 求解器C 插件嵌入 ros2_control周期 1msPREEMPT_RT 实时内核支持笛卡尔空间 NMPC / 关节动力学 NMPC适配你的激光焊接需求可把 MoveIt 输出的参考轨迹作为 NMPc 参考序列三、独立节点式 MPC快速原型不改动 ros2_control适合快速仿真调试架构MoveIt 规划轨迹 → Topic 发布 → MPC 独立节点 → 下发关节指令1. ros2_arm_mpcOSQP 六轴机械臂轨迹跟踪 Demohttps://github.com/haidai/ros2_arm_mpc 特点C OSQP 实现订阅JointTrajectory配合 MoveGroupGazebo 仿真。2. moveit2_cartesian_mpc笛卡尔空间 MPC moveit_servohttps://github.com/ry023/moveit2_cartesian_mpc 直接改造 moveit_servo末端位姿 MPC 跟踪适合视觉动态焊缝跟随。四、求解器源码单独下载如果你需要自研封装OSQP线性 QPbashgit clone https://github.com/osqp/osqp git clone https://github.com/osqp/osqp-eigenAcados非线性 NMPC 核心必须源码编译bashgit clone https://github.com/acados/acados cd acados mkdir build cd build cmake .. -DACADOS_WITH_QPOASESON -DACADOS_WITH_OSQPON make -j$(nproc) sudo make install五、选型建议结合你的 MoveIt2 焊接场景仿真验证、快速上手→ros2_mpcros-controls 官方实机、高速轨迹、需要动力学补偿、高精度焊接→Acados acados_solver_ros2最优路线动态目标、视觉实时跟随焊缝→ moveit_servo 笛卡尔 MPc六、常见开发路线代码结构提醒数据流复用模板所有包通用plaintextMoveIt MoveGroupInterface ↓规划→ JointTrajectory离散参考轨迹 ros2_control MPC控制器插件 1.读取实时关节状态 2.时间插值得到当前时刻参考q_ref,dq_ref 3.MPC求解器计算最优控制指令 4.下发关节位置/速度指令至硬件补充如果你需要最小可运行 Demo我可以提供一份OSQP 线性 MPC 完整 C 极简模板独立节点对接 MoveIt2 规划输出可直接放入工作空间编译包含状态转移模型Q/R 权重配置轨迹插值逻辑与 MoveIt2 接口对接代码
MoveIt2 + ROS2 MPC 开源代码
分为两大类线性 MPC (OSQP快速原型)、非线性 NMPC (Acados动力学工业首选)所有仓库均可直接git clone下载环境默认ROS2 Humble / Ubuntu22.04一、ros-controls 官方ros2_mpc【首选ros2_control 插件可直接对接 MoveIt2】✅最贴合你的需求替换 joint_trajectory_controllerMoveGroup 规划轨迹 → MPC 跟踪线性 MPCOSQP 求解标准controller_interface插件直接纳入 controller_manager 管理无需修改 MoveIt 源码。bashmkdir -p ~/mpc_ws/src cd ~/mpc_ws/src # 克隆切换humble分支 git clone -b humble https://github.com/ros-controls/ros2_mpc.git git clone https://github.com/osqp/osqp-eigen.git # 安装依赖 rosdep install --from-paths . --ignore-src -r -y colcon build --cmake-args -DCMAKE_BUILD_TYPERelease source install/setup.bash仓库地址https://github.com/ros-controls/ros2_mpc 适用关节空间线性 MPC、速度型模型适合前期仿真验证。 ⚠️ 局限无刚体动力学属于线性近似 MPC高速跟踪性能有限二、Acados ROS2 栈NMPC动力学非线性 MPC焊接场景强烈推荐ICube Robotics 成熟开源栈支持生成 C 代码、实时 NMPC、ros2_control 插件机械臂刚体动力学 NMPC 工业方案。1基础库 acados_solver_ros2核心框架bashgit clone https://github.com/ICube-Robotics/acados_solver_ros2.git地址https://github.com/ICube-Robotics/acados_solver_ros22机械臂 Demo 包rrbot 二连杆机械臂可迁移到 6 轴机械臂 MoveIt2bashgit clone https://github.com/ICube-Robotics/acados_solver_ros2_examples.git vcs import . acados_solver_ros2_examples/acados_solver_ros2_examples.repos地址https://github.com/ICube-Robotics/acados_solver_ros2_examples 特点Python 定义 OCP 最优控制问题 → 自动生成 C 求解器C 插件嵌入 ros2_control周期 1msPREEMPT_RT 实时内核支持笛卡尔空间 NMPC / 关节动力学 NMPC适配你的激光焊接需求可把 MoveIt 输出的参考轨迹作为 NMPc 参考序列三、独立节点式 MPC快速原型不改动 ros2_control适合快速仿真调试架构MoveIt 规划轨迹 → Topic 发布 → MPC 独立节点 → 下发关节指令1. ros2_arm_mpcOSQP 六轴机械臂轨迹跟踪 Demohttps://github.com/haidai/ros2_arm_mpc 特点C OSQP 实现订阅JointTrajectory配合 MoveGroupGazebo 仿真。2. moveit2_cartesian_mpc笛卡尔空间 MPC moveit_servohttps://github.com/ry023/moveit2_cartesian_mpc 直接改造 moveit_servo末端位姿 MPC 跟踪适合视觉动态焊缝跟随。四、求解器源码单独下载如果你需要自研封装OSQP线性 QPbashgit clone https://github.com/osqp/osqp git clone https://github.com/osqp/osqp-eigenAcados非线性 NMPC 核心必须源码编译bashgit clone https://github.com/acados/acados cd acados mkdir build cd build cmake .. -DACADOS_WITH_QPOASESON -DACADOS_WITH_OSQPON make -j$(nproc) sudo make install五、选型建议结合你的 MoveIt2 焊接场景仿真验证、快速上手→ros2_mpcros-controls 官方实机、高速轨迹、需要动力学补偿、高精度焊接→Acados acados_solver_ros2最优路线动态目标、视觉实时跟随焊缝→ moveit_servo 笛卡尔 MPc六、常见开发路线代码结构提醒数据流复用模板所有包通用plaintextMoveIt MoveGroupInterface ↓规划→ JointTrajectory离散参考轨迹 ros2_control MPC控制器插件 1.读取实时关节状态 2.时间插值得到当前时刻参考q_ref,dq_ref 3.MPC求解器计算最优控制指令 4.下发关节位置/速度指令至硬件补充如果你需要最小可运行 Demo我可以提供一份OSQP 线性 MPC 完整 C 极简模板独立节点对接 MoveIt2 规划输出可直接放入工作空间编译包含状态转移模型Q/R 权重配置轨迹插值逻辑与 MoveIt2 接口对接代码