0. Set up
1. The world model (policy.py)
The model turns each observation into a named action. Proximity is a modality
that injects target_dist into every observation. HeadingPolicy reads it,
turns toward the target, walks, and sits when within 0.6 m.
policy.py
2. The mission (run_patrol.py)
Build a Scene, compile it to an XML the stack can
load via xml_path, then run the loop.
run_patrol.py
3. Run it
(-2.78, 0.22), within the 0.6 m arrival
radius of the (-3.0, 0.0) target, and sat.
4. Watch it (optional)
Everything above is headless. To see the same scene in the MuJoCo viewer, drop this besiderun_patrol.py (needs a display):
watch.py
Where to take it next
Swap in a real VLA
Replace
HeadingPolicy.propose_actions with calls into your trained model.Add perception
Add a vision/depth
Modality and reason over observation['camera'].Harder terrain
Add slopes, a
snake of boxes, or dynamic (fixed=False) objects.Ship to hardware
Drive the physical Go1 with the same action vocabulary.