Skip to content

Navigate·

one call → a whole sequence of timed move steps (speed presets, room loops); every /control frame still passes the thinker drive-off gatetools/rover_navigate.py, 1 tool.

From the module docstring

🛣️ Earth Rover navigation — batch sequence of move commands.

tool does
rover_navigate Execute a batch sequence of move commands in ONE tool call.

rover_navigate·

rover_navigate(
    steps: List[Dict[str, Any]],
    default_speed: Any = 'normal',
    look_every_n_steps: int = 0,
    look_camera: str = 'front',
    stop_on_error: bool = True,
) -> Dict[str, Any]

Execute a batch sequence of move commands in ONE tool call.

Drastically reduces tool-call overhead for multi-segment journeys (e.g. "go down hallway, turn right, continue 3m"). Each step is a rover_move-equivalent that auto-stops at its end; the whole sequence auto-stops cleanly after the last step.

argument meaning
steps List of step dicts. Each step:
default_speed Named speed ("crawl"/"slow"/"normal"/"fast"/"max") or a 0..1 float applied to any step that omits its own "speed". Lets the agent pick a journey-wide pace (e.g. "crawl" through a cluttered room, "fast" down a clear hallway) and override per-step as needed. Steps that give raw linear/angular WITHOUT "speed" keep full manual control (back-compat).
look_every_n_steps If > 0, capture a camera frame every N steps and inline it in the result so the agent can re-plan. 0 = off.
look_camera "front" or "rear" — which camera for periodic looks.
stop_on_error If True (default), abort remaining steps when one fails. If False, log and continue.

Returns

Dict with overall status, per-step log, total duration, and any
inlined camera frames.

Examples

rover_navigate(steps=[
    {"linear": 0.4, "angular": 0.0, "duration": 2, "label": "fwd"},
    {"linear": 0.0, "angular": 0.5, "duration": 1, "label": "turn left"},
    {"linear": 0.4, "angular": 0.0, "duration": 2, "label": "fwd"},
], look_every_n_steps=2)

source: tools/rover_navigate.py:107