/HKD-MPC

A nonlinear MPC framework for agile and versatile quadruped locomotion

Primary LanguageC++

HKD-MPC

The HKD-MPC is a nonlinear MPC controller for agile and versatile quadruped locomotion. It enables highly dynamic jumping and rapid gait transition in one framework, without the need to switch between multiple controllers. The HKD-MPC has been tested on Unitree A1 and MIT Mini Cheetah. This repo contains the implementation for the MIT Mini Cheetah.

Demo

Dependency

This implementation uses Eigen for linear algegra, LCM for communications to low-level controllers, and boost for reading configuration files. A customized Hybrid-Systems DDP (HS-DDP) solver is employed to solve the nonlinear trajectory optimization problem. A C++ implementation of HS-DDP is included in this repo and can be found here.

Build

Once Eigen and LCM are successfully installed, generate necessary lcm types

cd scripts
./make_types.sh

To build the HKDMPC controller

mkdir build && cd build
cmake ..
make -j4

To run the HKDMPC controller

cd build
HKDMPC/hkdmpc_run

Run in Cheetah Software

Instructions coming soon

Selected Publications

[1] Li, H., & Wensing, P. M. (2020). Hybrid systems differential dynamic programming for whole-body motion planning of legged robots. IEEE Robotics and Automation Letters, 5(4), 5448-5455.

[2] Li, H., Zhang, T., Yu, W., & Wensing, P. M. (2022). Versatile Real-Time Motion Synthesis via Kino-Dynamic MPC with Hybrid-Systems DDP. arXiv preprint arXiv:2209.14138.