Quadruped-PyMPC
Python MPC framework for quadruped locomotion with gradient and sampling control
License
BSD-3-Clause
Overview
Quadruped-PyMPC is a Python-based model predictive control framework for quadruped robot locomotion from IIT's Dynamic Legged Systems Lab. It implements the single rigid body model with two complementary approaches: gradient-based optimization via acados (under 5ms on CPU) and massively parallel sampling-based control via JAX (10,000 rollouts in under 2ms on GPU). Published at IROS 2024 and IEEE RAL 2025, validated on real Unitree robots.
Quadruped-PyMPC is a Python MPC framework for quadruped locomotion that offers gradient-based optimization via acados (under 5ms on CPU) and massively parallel sampling-based control via JAX (10,000 rollouts in under 2ms on GPU). It supports multiple gaits, foothold optimization, and real-hardware deployment on Unitree robots.
Why it matters
This project makes state-of-the-art quadruped locomotion control accessible in Python, with published results at IROS 2024 and IEEE RAL 2025. The dual gradient/sampling approach and real-hardware validation from IIT's Dynamic Legged Systems Lab make it a valuable research platform.
Problem it solves
Implementing model predictive control for quadruped locomotion involves complex optimization, contact scheduling, and real-time constraints. This framework provides a clean Python implementation with both gradient and sampling approaches achieving real-time performance.
Key takeaways
- Dual MPC: gradient-based (acados, <5ms) and sampling-based (JAX, 10K rollouts <2ms)
- Supports trot, pace, bound gaits with foothold optimization
- Real-world validated on Unitree quadruped robots
- ROS2 integration for hardware deployment
Who it is for
- Legged robotics researchers working on quadruped control
- Engineers wanting Python-based MPC without writing C++ optimization code
- Teams deploying MPC controllers on Unitree quadruped robots
Limitations
- Based on single rigid body model — a simplification of full dynamics
- Real-world deployment requires Unitree robots and their SDK
- GPU-based sampling requires NVIDIA hardware with JAX CUDA support