go1.run([...]) executes open-loop, with no model in
the loop. With one, each Step is run under the strategy’s control.
Sequential: think then move
Single-threaded “guard while you act”. For each action, a guardian (default:
VLAGuardian, a small VLM on the forward camera) watches for obstacles. On a
detection mid-action:
- The current step is cut short at whatever fraction completed.
- The guardian emits an avoidance sequence (turn / side-step / wait).
- Avoidance runs with the guardian off (no recursive interrupts).
- The original action resumes with the remaining distance, bounded by
retriesso the robot can’t thrash.
| Param | Description |
|---|---|
show_camera | Show the guardian’s live camera window. |
model_id | Override the guardian’s VLM checkpoint. |
min_resume_distance_m | If less than this remains after an interrupt, drop the action instead of resuming. |
retries | Max VLA interrupts per step before abandoning (None = ∞). |
guardian | Custom detector: a class, factory, or instance. |
logging | Path to a JSON-Lines event log (for later training). |
ChainOfThought: think while you move
Concurrent inference and execution. While the robot executes action N, a
background worker is already running the next inference pass to produce N+1, so
there’s no dead time waiting on the model.
model is any WorldModelAdapter. sense is a list
of modalities merged into each observation.
Any trigger Step you pass to run() hands control to the orchestrator.