# openloong-dyn-control **Repository Path**: inceptionv5/openloong-dyn-control ## Basic Information - **Project Name**: openloong-dyn-control - **Description**: 基于MPC与WBC的青龙仿人机器人运动控制框架 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-10 - **Last Updated**: 2025-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: MPC ## README # OpenLoong Dynamics Control ## 基于 MPC 与 WBC 的仿人机器人运动控制框架 欢迎访问 🐉 OpenLoong 开源项目代码仓库! OpenLoong开源项目是由人形机器人(上海)有限公司、上海人形机器人制造业创新中心与开放原子开源基金会(OpenAtom Foundation)共同运营的开源项目。本仓库提供了一套基于 MPC 与 WBC 的仿人机器人控制框架,可部署在 Mujoco 仿真平台上。基于上海人形机器人创新中心“青龙”机器人模型,提供[行走](https://atomgit.com/openloong/openloong-dyn-control/blob/master/demo/walk_wbc.cpp)、[跳跃](https://atomgit.com/openloong/openloong-dyn-control/blob/master/demo/jump_mpc.cpp)、[盲踩障碍物](https://atomgit.com/openloong/openloong-dyn-control/blob/master/demo/walk_mpc_wbc.cpp)三种运动示例,在实物样机上实现了机器人的行走盲踩障碍两种运动。 ## 项目特点 - **易部署** 提供全面的代码运行环境部署解决方案,以便用户能够轻松配置其所需的工作环境,本代码仓库包含了主要依赖,无需进行众多第三方库的安装,简化整个部署过程。 - **可扩展** 控制框架结构采用分层模块化设计,旨在提高系统的可维护性和可扩展性,系统各功能模块在逻辑和功能上具有明确的界限,为二次开发提供了更加友好的环境,使开发人员能够更轻松地对系统进行功能定制和扩展。 - **易理解** 代码结构简洁,遵循针对功能进行模块封装的代码设计原则,应用总线进行模块间数据交互,减少封装冗余,有助于降低代码复杂度;算法实现采用“读取-计算-写入”的简单逻辑,提高代码的可理解性。
行走踩障碍
## 更新日志 2024.06.29 1. 增加walk_wbc_joystick与 walk_mpc_wbc_joystick两个demo,可利用键盘控制机器人运动,并能实现转弯。 2024.08.12 1. 修改由mujoco中提取传感器数据的ID错误,感谢驯龙软件对该问题的提出; 2. 修改MPC中c矩阵定义的维数错误,感谢@geekloong、@yichuanku对该问题的提出; 3. 修改WBC优先级计算中,第一个优先级的计算错误,感谢@1190201119对该问题的提出; 4. 修改MPC的代价函数。 2024.09.11 1. 增加低阻尼模型分支“low_damping_model”,该模型与实物样机的关节响应基本一致,提供walk_wbc_joystick与 walk_mpc_wbc_joystick两个demo; 2. 增加**更换模型**说明文档[Tutorial](https://atomgit.com/openloong/openloong-dyn-control/blob/master/Tutorial.md)。 ## 环境安装 **环境建议** - 操作系统:Ubuntu 22.04.4 LTS - 编译器:g++ 11.4.0 **依赖安装** 本仓库为基于 mujoco 针对“青龙”人形机器人进行制仿真测试, mujoco 的仿真引擎、pinocchio 动力学库、eigen、quill 记录工具、GLFW 图形库、jsoncpp 解析库等也包含到了仓库之中,但仿真界面需系统支持 openGL,需安装 ```Bash # Update & Install Dependencies sudo apt-get update sudo apt install git cmake gcc-11 g++-11 sudo apt install libglu1-mesa-dev freeglut3-dev ``` ## 使用指南 **代码获取与编译** ```Bash # Clone git clone https://atomgit.com/openloong/openloong-dyn-control.git # Build cd openloong-dyn-control mkdir build cd build cmake .. make # mujoco simulation ./walk_mpc_wbc #or ./walk_wbc or ./jump_mpc ``` **仿真效果** demo ## **代码说明** 参考本代码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