Navigate a vehicle to a destination
Paths. scripts/… and references/… below are relative to the
directory holding this SKILL.md. Your working directory is the user's
project, not that directory, so prefix them with its absolute path or the
command is not found.
Point-to-point autonomous driving. go drives the ego to a destination with a
navigation agent that plans a route and follows it while avoiding obstacles and
obeying (or ignoring, on request) traffic lights. route just plans the path.
This is distinct from the sibling driving skills: control-vehicle
is manual actuator input; control-traffic is the
Traffic Manager making cars roam; this drives one car to a specific place.
Instructions
Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs (incl. agents import)
- [ ] Step 2: Have an ego (spawn-vehicles ego) and a destination (world-data/map-waypoints)
- [ ] Step 3: go (drive) — or route (plan only). Runs a tick loop until arrival/timeout
Commands need CARLA_HOST/CARLA_PORT + CARLA_ROOT from scripts/env.sh.
Negative coordinates: use the = form (--to=-24,-57,0.6).
Step 1: Check prerequisites
bash scripts/check_env.sh
FAILs if the agents package isn't importable — set CARLA_ROOT to a carla
checkout so PythonAPI/carla/agents is on PYTHONPATH.
Step 3: Navigate
source scripts/env.sh
# plan a route and draw it (no driving)
python3 scripts/navigate.py route --from=0,0,1 --to=-24,-57,1 --draw
# drive the ego there (BasicAgent, obeys lights)
python3 scripts/navigate.py go --to=-24,-57,1 --speed 25
# a cautious/aggressive style
python3 scripts/navigate.py go --to=-24,-57,1 --agent behavior --behavior aggressive
# ignore lights (e.g. an emergency run) and give it more time
python3 scripts/navigate.py go --to=100,20,1 --ignore-lights --seconds 120
go targets the ego (role hero) by default; --id/--filter for another
vehicle. It blocks until the car arrives (agent.done()) or --seconds elapses.
Examples
Example 1: drive to a spot
User says: "drive the ego to (−24, −57)"
go --to=-24,-57,1. It plans, drives, and prints "arrived" on success.
Example 2: go to a resolved element
User says: "drive to the 4-way junction in the middle"
map-waypoints junctions --arms 4 → pick its centre → go --to=<centre>.
Example 3: just the route
User says: "what's the route from here to the depot?"
route --from=<here> --to=<depot> --draw → maneuver list + drawn path.
Troubleshooting
Problem: cannot import agents
Cause: the agents package (checkout-only) isn't on PYTHONPATH.
Solution: set CARLA_ROOT to a carla checkout; env.sh adds PythonAPI/carla.
Problem: it never arrives / stops at timeout
Cause: unreachable destination, too little time, or stuck in traffic.
Solution: verify the destination is on a road (map-waypoints waypoint), raise
--seconds, or --ignore-vehicles to push through.
Problem: the car doesn't move in sync mode
Cause: go ticks the world itself in sync mode; if another process also ticks,
they fight.
Solution: run one ticker. In async it just drives.
Problem: it stops at every red light forever
Cause: dense traffic / lights.
Solution: --ignore-lights (and/or the control-traffic-lights skill to free them).
Outputs
Server state — the vehicle drives to the destination (or a planned route + drawn
overlay for route). No file. go reports arrival or timeout.
Detail (agent types, route planner, run-step loop, sync interaction) in
references/navigation.md.