Skip to content
Back to skills

Debug Navmesh

ASecurity

Visualises and validates a map's pedestrian navigation mesh by sampling walkable locations (get_random_location_from_navigation) and drawing them as debug points. Use when the user asks to "show/visualise the pedestrian navmesh", "check walkable areas", "validate pedestrian navigation after a map import", or "why won't my walkers move". Confirms the navmesh loaded and how far it covers.

  • 14,461 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentspythonbashawsapi

Works with

  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add carla-simulator/carla --skill debug-navmesh --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Debug Navmesh?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Debug Navmesh
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/carla-simulator-debug-navmesh-carla/badge)](https://www.skillsdirectory.com/skills/carla-simulator-debug-navmesh-carla)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: debug-navmesh
description: Visualises and validates a map's pedestrian navigation mesh by sampling walkable locations (get_random_location_from_navigation) and drawing them as debug points. Use when the user asks to "show/visualise the pedestrian navmesh", "check walkable areas", "validate pedestrian navigation after a map import", or "why won't my walkers move". Confirms the navmesh loaded and how far it covers.
license: MIT
compatibility: Any OS with the CARLA PythonAPI installed for the active interpreter and a reachable, already-running CARLA server. Drawing needs a rendered view; validation works headless. Tested against CARLA 0.9.16.
metadata:
  group: python-api
  prerequisites: scripts/check_env.sh
  reference: references/navmesh.md
---

# Debug the pedestrian navmesh

> **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.

CARLA does not expose navmesh geometry, but every location from
`get_random_location_from_navigation()` sits on the walkable mesh. Sampling many
of them **validates** the navmesh loaded and **visualises** its coverage — the
check to run after importing a map, or when walkers refuse to move.

## Instructions

```
Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: Validate — confirm the navmesh exists and its extent
- [ ] Step 3: (rendered view) Sample + draw to see the walkable area
```

Commands need `CARLA_HOST`/`CARLA_PORT` from `scripts/env.sh`.

### Step 1: Check prerequisites

```bash
bash scripts/check_env.sh
```

### Step 2: Validate (works headless)

```bash
source scripts/env.sh
python3 scripts/navmesh.py validate --count 500
```

PASS reports the number of valid points, unique locations, and the walkable span.
FAIL (exit 1) means `get_random_location_from_navigation()` returned nothing — no
usable navmesh, so pedestrians with a `WalkerAIController` will not navigate.

### Step 3: Visualise (rendered server)

```bash
python3 scripts/navmesh.py sample --count 2000 --life 120
```

Draws the sampled points via `world.debug`; the dotted region is walkable. Needs a
windowed/packaged server (headless `-nullrhi` draws nothing — see debug-draw).

## Examples

**Example 1: after importing a map**

User says: "I imported a town — did the pedestrian nav build?"

`validate` → PASS with a sensible span means yes; FAIL means the nav mesh is
missing and must be rebuilt during import.

**Example 2: walkers won't move**

User says: "my pedestrians just stand still"

`validate`. If it FAILs, the navmesh is the cause; if it PASSes, look at the
WalkerAIController wiring (owned by the walker-spawning skill), not the map.

**Example 3: see the walkable area**

User says: "show me where pedestrians can walk"

`sample --count 3000 --life 180` on a rendered server; inspect the point cloud.

## Troubleshooting

**Problem: `validate` FAILs on a freshly imported map**
Cause: pedestrian navigation was not generated/exported for the map.
Solution: rebuild the map's nav mesh in the import pipeline; then re-validate.

**Problem: `sample` prints a count but nothing is visible**
Cause: headless `-nullrhi` server, or the camera is far from the coverage bounds.
Solution: use a rendered server and move the spectator over the reported bounds.

**Problem: very few unique locations**
Cause: navmesh is tiny or degenerate (a sliver of walkable area).
Solution: check the source geometry / sidewalks in the imported map.

## Outputs

- `validate`: a PASS/FAIL report with coverage bounds and walkable span.
- `sample`: a transient point overlay of the walkable area (rendered view).

Detail (navmesh basics, WalkerAIController link, import checklist) in
[references/navmesh.md](references/navmesh.md).

Files in this skill

  • SKILL.md3.8 KB
  • references/navmesh.md2.1 KB
  • scripts/check_env.sh2.1 KB
  • scripts/env.sh1.1 KB
  • scripts/navmesh.py4.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…