iit-DLSLab/Quadruped-PyMPC

A model predictive controller for quadruped robots based on the single rigid body model and written in python. Gradient-based (acados) or Sampling-based (jax)

What it solves

It provides a high-performance model predictive controller (MPC) for quadruped robots, enabling them to perform complex movements like trotting, pacing, and bounding while maintaining stability and robustness.

How it works

The project implements a controller based on a single rigid body model using Python. It offers two distinct computational approaches:

  1. Gradient-based MPC: Uses acados for fast computation (under 5ms on CPU), featuring optional foothold optimization, ground reaction force smoothing, and stability criteria.
  2. Sampling-based MPC: Uses jax to run thousands of parallel rollouts on a GPU (under 2ms), supporting strategies like MPPI and CEMPPI with various control parametrizations (zero-order, linear, or cubic splines).

Who it’s for

It is designed for robotics researchers and engineers working on legged locomotion who need a flexible, Python-based MPC framework compatible with Mujoco and real-world hardware.

Highlights

  • Dual implementation supporting both gradient-based (CPU) and sampling-based (GPU) optimization.
  • Extremely low latency: <5ms for gradient-based and <2ms for sampling-based rollouts.
  • Supports advanced control strategies including MPPI, CEMPPI, and Feedback-MPPI.
  • Compatible with Mujoco simulation and real-world deployment via Unitree robot communication tools.

Related

  • Project
  • Project
  • Project
  • Dispatch
  • Project