Judo: A User-Friendly Open-Source Package for Sampling-Based Model Predictive Control
Albert H. Li, John Zhang, Jan Bruedigam, Brandon Hung, Aaron Ames, Jiuguang Wang, Simon Le Cleac'h, Preston Culbertson
AI summary
Problem
The robotics community lacks shared, user-friendly tools for prototyping, benchmarking, and deploying sampling-based MPC controllers, which hinders reproducibility and rapid algorithm development.
Approach
The authors introduce judo, a modular Python library that integrates MuJoCo for high-performance simulation, offers an interactive GUI for real-time parameter tuning, and uses asynchronous architecture to streamline simulation-to-hardware transfer.
Key results
- Open-source Python library with extensible task and optimizer interfaces
- Benchmark suite of 10 contact-rich tasks with standardized performance metrics
- Real-time computational speed matching or exceeding existing C++ frameworks on consumer hardware
- Successful real-world hardware deployments for in-hand manipulation and quadrupedal loco-manipulation
Why it matters
Enables robotics researchers and engineers to rapidly prototype, evaluate, and deploy sampling-based controllers without managing complex, specialized software stacks.
Abstract
Sampling-based model predictive control (MPC) is experiencing a resurgence in robotics following both recent hardware successes and advancements in parallelized physics simulation. However, to build on this progress, the robotics community needs to develop shared tools for prototyping, benchmarking, and deploying sampling-based controllers. We introduce judo, a software package designed to address this need. To facilitate rapid prototyping and evaluation, judo provides robust implementations of common sampling-based MPC algorithms and a comprehensive suite of benchmark tasks. It emphasizes usability with simple but extensible inter- faces for controller and task definitions, asynchronous execution for straightforward simulation-to-hardware transfer, and a highly customizable interactive GUI for tuning controllers interactively. While the high-level library is written in Python, judo leverages MuJoCo as its physics backend to achieve real- time performance. We present example benchmarking results using judo to compare standard sampling-based controllers across its tasks. We also provide real-world case studies in deploying judo on hardware for two contact-rich tasks: in- hand cube rotation and quadrupedal loco-manipulation. Code at https://github.com/bdaiinstitute/judo.