待补充 manumerous/wb_humanoid_mpc

机器人 3/5 🧩 软硬件结合 已发布
manumerous 260 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5
待补充

项目简介

Whole-Body Nonlinear MPC for Realtime Humanoid Loco-Manipulation Planning and Control


这是一个名为 Whole-Body Humanoid MPC 的开源项目,专注于实现人形机器人的全身运动与操作控制。其核心是一个全身非线性模型预测控制器(NMPC),能够实时优化完整的扭矩级动力学,从而生成丰富多样的人形机器人行为。项目基于扩展和更新后的 ocs2 库构建,提供了两种硬件平台无关的 MPC 公式:质心动力学 MPC 和全身动力学 MPC。质心动力学 MPC 优化全身运动学和质心动力学,支持单刚体模型或完整质心动力学,并泛化了六自由度接触的成本与约束;全身动力学 MPC 则优化接触力和关节加速度,并可计算每个规划步的关节扭矩。项目解决了人形机器人在复杂环境中实现动态行走、操作和全身协调控制的难题,特别适用于需要实时、高动态响应的场景,如双足行走、物体搬运和交互式操作。技术栈包括 ROS2、ocs2 优化库、自动微分以及 Docker 容器化部署。目前支持 Unitree G1 机器人示例,1X Neo 即将推出。用户可通过 Xbox 手柄或终端界面交互式控制机器人的基座速度和高度,Rviz 提供可视化反馈。项目提供了详细的 Docker 和本地安装指南,首次构建时自动生成代码需 5-15 分钟,建议至少 16 GiB 内存。

标签

项目特点

**双模式 MPC 框架**:同时提供质心动力学 MPC 和全身动力学 MPC 两种方案,适应不同控制需求
**实时扭矩级优化**:能够实时优化完整的扭矩级动力学,生成动态行走、操作等复杂行为
**硬件平台无关**:设计上不绑定特定硬件,可以移植到不同的人形机器人平台
**基于 ocs2 库**:构建在扩展和更新后的 ocs2 库之上,保证了控制器的稳定性和效率
**六自由度接触泛化**:质心动力学 MPC 泛化了六自由度接触的成本与约束,支持多种接触模式
**完整动力学支持**:支持单刚体模型或完整质心动力学,覆盖从简化到精确的多种建模需求

技术规格

控制器类型 非线性模型预测控制器(NMPC)
优化层级 全身扭矩级动力学
MPC 模式 质心动力学 MPC / 全身动力学 MPC
基础库 ocs2(扩展更新版)
接触自由度 支持六自由度接触
动力学模型 单刚体模型 / 完整质心动力学
输出类型 关节扭矩、接触力、关节加速度
编程语言 C++(基于 ocs2 库)
硬件要求 无特定硬件绑定

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
ocs2 库 1 扩展更新版本
C++ 编译器 1 支持 C++11 及以上
CMake 1 构建系统
Eigen 1 线性代数库
ROS(可选) 1 用于机器人通信

3D 模型

模型名称文件名文件
连杆 - head link head_link.STL
连杆 - left ankle pitch link left_ankle_pitch_link.STL
连杆 - left ankle roll link left_ankle_roll_link.STL
连杆 - left elbow link left_elbow_link.STL
连杆 - left hand index 0 link left_hand_index_0_link.STL
连杆 - left hand index 1 link left_hand_index_1_link.STL
连杆 - left hand middle 0 link left_hand_middle_0_link.STL
连杆 - left hand middle 1 link left_hand_middle_1_link.STL
连杆 - left hand palm link left_hand_palm_link.STL
连杆 - left hand thumb 0 link left_hand_thumb_0_link.STL
连杆 - left hand thumb 1 link left_hand_thumb_1_link.STL
连杆 - left hand thumb 2 link left_hand_thumb_2_link.STL
连杆 - left hip pitch link left_hip_pitch_link.STL
连杆 - left hip roll link left_hip_roll_link.STL
连杆 - left hip yaw link left_hip_yaw_link.STL
连杆 - left knee link left_knee_link.STL
手 - left rubber hand left_rubber_hand.STL
连杆 - left shoulder pitch link left_shoulder_pitch_link.STL
连杆 - left shoulder roll link left_shoulder_roll_link.STL
连杆 - left shoulder yaw link left_shoulder_yaw_link.STL
连杆 - left wrist pitch link left_wrist_pitch_link.STL
连杆 - left wrist roll link left_wrist_roll_link.STL
手 - left wrist roll rubber hand left_wrist_roll_rubber_hand.STL
连杆 - left wrist yaw link left_wrist_yaw_link.STL
连杆 - logo link logo_link.STL
pelvis pelvis.STL
连杆 - pelvis contour link pelvis_contour_link.STL
连杆 - right ankle pitch link right_ankle_pitch_link.STL
连杆 - right ankle roll link right_ankle_roll_link.STL
连杆 - right elbow link right_elbow_link.STL
连杆 - right hand index 0 link right_hand_index_0_link.STL
连杆 - right hand index 1 link right_hand_index_1_link.STL
连杆 - right hand middle 0 link right_hand_middle_0_link.STL
连杆 - right hand middle 1 link right_hand_middle_1_link.STL
连杆 - right hand palm link right_hand_palm_link.STL
连杆 - right hand thumb 0 link right_hand_thumb_0_link.STL
连杆 - right hand thumb 1 link right_hand_thumb_1_link.STL
连杆 - right hand thumb 2 link right_hand_thumb_2_link.STL
连杆 - right hip pitch link right_hip_pitch_link.STL
连杆 - right hip roll link right_hip_roll_link.STL
连杆 - right hip yaw link right_hip_yaw_link.STL
连杆 - right knee link right_knee_link.STL
手 - right rubber hand right_rubber_hand.STL
连杆 - right shoulder pitch link right_shoulder_pitch_link.STL
连杆 - right shoulder roll link right_shoulder_roll_link.STL
连杆 - right shoulder yaw link right_shoulder_yaw_link.STL
连杆 - right wrist pitch link right_wrist_pitch_link.STL
连杆 - right wrist roll link right_wrist_roll_link.STL
手 - right wrist roll rubber hand right_wrist_roll_rubber_hand.STL
连杆 - right wrist yaw link right_wrist_yaw_link.STL

能力画像

**记忆与知识检索**:2/5 — 项目本身不涉及知识检索功能,但需要查阅 ocs2 文档和 MPC 理论资料
**动手与操作**:3/5 — 需要搭建机器人硬件平台或使用仿真环境进行调试
**编程与算法**:5/5 — 核心是 C++ 实现的非线性 MPC 算法,涉及优化、动力学建模等高级编程
**设计与建模**:4/5 — 需要设计机器人动力学模型、接触模型和成本函数
**实验与调试**:4/5 — 需要大量仿真和实物实验来调优 MPC 参数
**协作与分享**:2/5 — 项目为个人开源,社区协作程度一般
**学习与研究**:5/5 — 涉及最优控制、机器人动力学、模型预测控制等前沿研究领域
**系统集成**:4/5 — 需要将 MPC 控制器与机器人底层驱动、传感器、执行器集成

视频

所需技能

C++ 编程能力 机器人运动学与动力学基础 最优控制理论(特别是 MPC) 非线性优化算法 CMake 构建系统使用 人形机器人控制经验 仿真环境使用(如 Gazebo、MuJoCo) ROS 基础(可选)

适用场景

人形机器人动态行走控制
人形机器人全身操作任务(如搬运、抓取)
复杂地形下的机器人运动规划
多接触点平衡控制
机器人全身协同运动研究
学术研究中的 MPC 算法验证
机器人竞赛中的高级控制策略开发