Local Simulation
The fastest sanity check for LAV2 remains the local MuJoCo runner.
Quick Start
Install the project first via Installation, then launch the local runner:
uv run lav2
You can also invoke the module directly:
uv run -m lav2.controllers
Runtime Notes
- The interactive runner loads the selected robot's registered MuJoCo scene. LAV2 remains the default; select ATMO with
--robot ATMO. --mode flight(default) runs the rotor stack and--mode groundruns the differential ground stack.- Launch ground gamepad driving with
uv run lav2 --mode ground --gamepad. Left-stick vertical commands forward speed, right-stick horizontal commands yaw rate, and the A button switches between flight and ground. Stick commands are scaled by the platform ground-speed and yaw-rate limits and return to zero when the axes are released. scripts/isaaclab/run.pyandscripts/genesis/run.pyaccept the same--gamepad,--mode, and--control-modeoptions as the interactive MuJoCo runner. Their gamepad input uses the same target scaling and A-button flight/ground switch.- Flight gamepad bindings depend on
--control-mode:cmd_posuses left vertical for altitude increments, left horizontal for heading increments, and the right stick for horizontal position;cmd_velandcmd_accuse left vertical for vertical motion, left horizontal for yaw rate, and the right stick for horizontal motion;cmd_ctattuses the left stick for throttle/yaw rate and the right stick for roll/pitch attitude;cmd_ctbrkeeps the same stick layout but commands roll/pitch body rates. - Without
--gamepad, ground mode tracks position and heading targets: keys1/2change the world X target,3/4change world Y, and7/8change heading. uv run lav2 --robot ATMO --mode ground --gamepaduses the same differential controller for ATMO. Ground mode commands the arm position actuators toward 90 degrees, while flight mode commands 0 degrees. The position target is rate-limited byTiltWheelVehicleParams.arm_tilt_speed; its default completes a full transition in about four seconds. Ground mode immediately drives one velocity actuator per side while the arms transform; MJCF joint equalities synchronize each side's front and rear wheels.- If the simulation saturates or diverges, check in order: (1) that
lav2/assets/LAV2/mjcf/scene.xmland referenced mesh files are present; (2) that the MuJoCo rendering backend is functional; (3) controller gains inVehicleParams(especially position/velocity P-gains and integration limits); (4) rotor parameters such asmax_rpm, thrust coefficient, and motor time constants.
What To Read Next
- Read Assets to see where the MuJoCo scene, MJCF robot file, meshes, and USD assets are stored.
- Read Dynamics to understand how VehicleParams, RotorDynamics, and joint actuators define simulated behavior.
- Read Controllers to trace the control loops built around FlightController, DifferentialDriveController, and Mixer.