A set of tools for running and checking MuJoCo simulations in a reliable, repeatable way.
This project focuses on the “engineering side” of robot learning systems—making sure simulations behave consistently, break early when something goes wrong, and can be evaluated in a clean and controlled way.
It provides a collection of utilities for building and testing MuJoCo environments in a way that is:
- deterministic (same input → same result)
- stable (detects failures early)
- measurable (easy to analyze and compare runs)
- robust to edge cases and simulation tricks
The goal is not to design robots or policies, but to make sure the environment they run in is trustworthy.
Simulations are checked in layers, from basic structure to full behavior:
-
Model validation
Checks that the simulation structure is valid and physically consistent. -
Physics sanity checks
Makes sure dynamics behave as expected (no explosions, invalid states, or broken constraints). -
Rollout evaluation
Runs full simulations and evaluates stability, progress, and overall behavior over time. -
Robustness testing
Re-runs scenarios under small changes (mass, friction, initial state) to see if results still hold.
The system is designed to catch problems early instead of letting simulations silently fail.
It monitors things like:
- NaN or infinite values appearing in the state
- sudden spikes in velocity or energy
- objects passing through each other incorrectly
- drift in energy conservation over time
When something looks wrong, it flags it immediately instead of continuing blindly.
A core goal of this project is making simulations fully reproducible.
That means:
- identical runs produce identical results
- randomness is fully controlled through seeds
- simulation state can be fully restored and replayed
- time steps are strictly tracked and consistent
This makes debugging, testing, and comparison much more reliable.