# Openloong-dyn-control
**Repository Path**: jay-2deng/Openloong-dyn-control
## Basic Information
- **Project Name**: Openloong-dyn-control
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-16
- **Last Updated**: 2025-12-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# OpenLoong Dynamics Control
## 基于 MPC 与 WBC 的仿人机器人运动控制框架
欢迎访问 🐉 OpenLoong 开源项目代码仓库!
OpenLoong开源项目是由人形机器人(上海)有限公司、国家地方共建人形机器人创新中心与开放原子开源基金会(OpenAtom Foundation)共同运营的开源项目。本仓库提供了一套基于 MPC 与 WBC 的仿人机器人控制框架,可部署在 Mujoco 仿真平台上。基于国家地方共建人形机器人创新中心“青龙”机器人模型,提供[行走](https://github.com/loongOpen/Openloong-dyn-control/blob/main/demo/walk_wbc.cpp)、[跳跃](https://github.com/loongOpen/Openloong-dyn-control/blob/main/demo/jump_mpc.cpp)、[盲踩障碍物](https://github.com/loongOpen/Openloong-dyn-control/blob/main/demo/walk_mpc_wbc.cpp)三种运动示例,在实物样机上实现了机器人的行走、盲踩障碍两种运动。
## 项目特点
- **易部署** 提供全面的代码运行环境部署解决方案,以便用户能够轻松配置其所需的工作环境,本代码仓库包含了主要依赖,无需进行众多第三方库的安装,简化整个部署过程。
- **可扩展** 控制框架结构采用分层模块化设计,旨在提高系统的可维护性和可扩展性,系统各功能模块在逻辑和功能上具有明确的界限,为二次开发提供了更加友好的环境,使开发人员能够更轻松地对系统进行功能定制和扩展。
- **易理解** 代码结构简洁,遵循针对功能进行模块封装的代码设计原则,应用总线进行模块间数据交互,减少封装冗余,有助于降低代码复杂度;算法实现采用“读取-计算-写入”的简单逻辑,提高代码的可理解性。


## **代码说明**
参考本代码API接口[说明文档](https://www.openloong.org.cn/pages/api/html/index.html)及[Wiki](https://www.openloong.org.cn/pages/wiki/html/index.html)。
**主要前缀后缀指代说明**
| 前缀后缀 | 指代 |
| ---------------- | -------------------------- |
| *_L, _W* | 本体坐标系下、世界坐标系下 |
| *fe_* | 足末端 |
| *_L, _l, _R, _r* | 左侧、右侧 |
| *swing,* *sw* | 摆动腿 |
| *stance,* *st* | 支撑腿 |
| *eul, rpy* | 姿态角 |
| *omega* | 角速度 |
| *pos* | 位置 |
| *vel* | 线速度 |
| *tor**, tau* | 力矩 |
| *base* | *BaseLink* |
| *_des* | 期望值 |
| *_cur* | 当前实际值 |
| *_rot* | 坐标变换矩阵 |
## 开发指南
**关键控制参数说明**
- MPC权重
```C++
//MPC.h
void set_weight(double u_weight, Eigen::MatrixXd L_diag, Eigen::MatrixXd K_diag);
//*u_weight* :系统输入最小权重
//*L_diag* :系统状态与期望误差权重,顺序为eul, pos, omega, vel
//*K_diag* :系统输入权重,顺序为fl, tl, fr, tr
```
- WBC优先级
```C++
//WBC_QP.cpp
std::vector