The idea: wrap what you already have
Your app already knows how to build the scene, reset it and advance one control step. Ballot will ask you to hand over those functions. You don’t restructure your code, and your local loop keeps working.ballot_world.py
Ballot drives these functions from the session. It doesn’t add a second loop or step the physics behind your back.
Controls need a clear entry point
Ballot has to know where pilots’ commands go. For an arm, that’s a function that moves it toward a target. For a rover, a walker, a humanoid or a drone, it’s the controller that turns a velocity or flight command into motion, such as a drive controller or a trained walking policy. A robot driven only by raw joint torques, with nothing that accepts a command, isn’t automatically pilotable. See Upload a robot for the controller interface.Robots
Any robot type can come from a MuJoCo app: arms, rovers, quadrupeds, humanoids and drones. Models with actuators already defined, such as the robots in MuJoCo Menagerie, are a good starting point. A URDF on its own isn’t enough: MuJoCo imports it without actuators, so there’s nothing to control yet.Tasks
A recorded task needs your reset and a rule for when an attempt succeeds or ends. Free play needs neither.Join the waitlist
Tell us about your MuJoCo app. Real projects decide what we support first.