| name | navigate-to |
| description | Use when the user asks the robot to move, go somewhere, drive to a location, come closer, back up, or navigate to a named place or person. Triggers on "go to", "move to", "drive to", "navigate to", "come here", "back up", "turn around", "follow me", "move forward", "turn left", "turn right", "move back", "approach the", "get closer to".
|
| version | 1.1 |
| requires | ["control","drive"] |
| consent | required |
| tools | ["get_camera_frame","get_distance","get_telemetry","move"] |
| max_iterations | 8 |
Navigate To Skill
Move the robot to a target location safely using sensor feedback.
Protocol 66 — MANDATORY
You MUST request user consent before ANY movement.
Do NOT call move() until the user has explicitly confirmed ("yes", "confirm", "proceed", "go ahead").
If consent is not yet granted: describe the planned movement and ask for confirmation. Stop there.
Steps
1. Pre-flight check
- Call
get_distance() — if distance < 0.3m, report obstacle and abort
- Call
get_telemetry() — check battery > 10%, motors healthy
- If any check fails: report the issue and do NOT proceed
2. Request consent
Describe the intended movement clearly:
"I plan to [move forward X metres / turn left / navigate to table]. Shall I proceed?"
Wait for explicit confirmation. Do NOT continue without it.
3. Execute (after consent)
- Move in increments: 0.3–0.5m steps maximum
- After each step: call
get_distance() to check for new obstacles
- If obstacle detected (< 0.4m): stop immediately, report position
- Continue until target reached or obstacle prevents further movement
4. Confirm arrival
Report final position and any obstacles encountered.
Safety rules (always enforced)
- NEVER move if distance < 0.3m in direction of travel
- NEVER exceed speed 0.3 m/s unless explicitly asked
- ALWAYS stop on any sensor error — do not assume path is clear
- If unsure about surroundings: ask for camera confirm before moving
References
See references/named-locations.md for pre-mapped location names.
See references/movement-primitives.md for move() parameter patterns.
Gotchas
- Distance sensor dead angle — most ultrasonic/ToF sensors have a ±15° cone; objects at a sharp angle to the sensor may be missed; when navigating near shelving or walls, use visual confirmation too
- "Come here" is ambiguous — don't guess the user's position; ask "Where are you relative to me?" or use camera to locate them
- Carpet/rug transitions — wheel encoders can slip on soft surfaces; reported position may drift; recalibrate against a visible landmark after each room transition
- "Turn around" ≠ 180° spin — on narrow paths a 3-point turn may be safer than an in-place rotation; check lateral clearance before spinning
- Battery warning at 15% — navigation tasks can be battery-intensive; report low battery before starting a long movement, not in the middle of it
- Overshoot — incremental 0.3m steps reduce overshoot, but on smooth floors the robot may coast a few cm past the target; this is normal, not an error
Example
User: "Go to the table"
→ get_distance() → 1.2m clear
→ "I plan to drive forward approximately 0.8 metres toward the table. Shall I proceed?"
→ User: "yes"
→ move(linear=0.3) → check → move(linear=0.3) → check → arrive → report