Skip to content
cccskills
FreePublished on GitHub

debug-draw

Draws points, lines, arrows, boxes, and text over a running CARLA world to visually check positions, paths, and objects. Sets colors and display lifetimes for temporary debugging overlays, without creating persistent actors or output files.

OriginalShow the original description

Draws debug overlays in a running CARLA world via world.debug — points, lines, arrows, bounding boxes, and text strings, each with a colour and lifetime. Use when the user asks to "draw/mark/highlight a point or box in the world", "visualise a path/waypoints", "label a location", or "show something on the map for debugging". Shapes are an overlay, not actors.

See how to install

Good for

  • Marking a world position for inspection
  • Visualizing paths and waypoints
  • Adding a box and label around a target
  • Adjusting how long debugging markers remain visible

Files included (5)

  • SKILL.md4.5 KB
  • references/debug.md3.0 KB
  • scripts/check_env.sh2.1 KB
  • scripts/debug_draw.py4.6 KB
  • scripts/env.sh1.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Draw CARLA debug shapes

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.

Overlay primitives on the running world for visual debugging: points, lines, arrows, boxes, text. They are drawn by the server as a transient overlay — not actors — so they cannot be selected or deleted individually; they expire after their --life. Other skills (e.g. map-waypoints) draw through this same world.debug API.

Instructions

Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: Draw the primitive(s) with a colour and lifetime
- [ ] Step 3: Confirm in a rendered view; redraw if it must persist in sync mode

Commands need CARLA_HOST/CARLA_PORT from scripts/env.sh. Coordinates are world metres X,Y,Z; colours are r,g,b (0-255). Negative coordinates: use the = form (--at=-10,-5,1, --from=-3,0,1) so a leading minus isn't read as a flag.

Step 1: Check prerequisites

bash scripts/check_env.sh

Step 2: Draw

source scripts/env.sh

python3 scripts/debug_draw.py point  --at 10,20,1 --size 0.2 --color 0,255,0 --life 60
python3 scripts/debug_draw.py line   --from 0,0,1 --to 50,0,1 --thickness 0.2 --life 60
python3 scripts/debug_draw.py arrow  --from 0,0,1 --to 10,0,1 --color 0,0,255 --life 60
python3 scripts/debug_draw.py box    --center 30,30,1 --extent 2,4,1.5 --yaw 45 --life 60
python3 scripts/debug_draw.py text   --at 30,30,3 --text "junction 12" --color 255,255,0 --life 60

Step 3: Confirm / persistence

Shapes render on a world tick, in a rendered view. Two gotchas:

  • Headless -nullrhi servers show nothing — there is no render thread. Use a windowed or packaged server to see overlays.
  • Sync mode: nothing appears until the client ticks, and --life is in simulation time. For an overlay that stays up while stepping, redraw each frame (or set --life longer than your tick interval).

On CARLA 0.10.0 (the UE5 line: 5.5 and 5.8)

The HUD variants are gone on 0.10.0. carla.DebugHelper there exposes exactly seven methods — draw_point, draw_line, draw_arrow, draw_box, draw_string, clear_debug_shape, clear_debug_string — so the 0.9.14+ draw_hud_point / draw_hud_line / draw_hud_box family (which drew in screen space, ignoring depth) has no equivalent. Use the world-space calls; they behave the same on both versions.

clear_debug_shape and clear_debug_string exist on both, and are the only way to remove a shape before its lifetime expires.

Examples

Example 1: mark a spot

User says: "mark world position (10, 20)"

point --at 10,20,1 --size 0.2 --color 0,255,0 --life 120.

Example 2: label and box an object

User says: "put a box and a label around (30,30)"

box --center 30,30,1 --extent 2,4,1.5 then text --at 30,30,3 --text "target".

Troubleshooting

Problem: nothing shows up Cause: headless -nullrhi server (no rendering), or sync mode without a tick. Solution: run a windowed/packaged server; in sync mode tick the world.

Problem: shape vanishes immediately Cause: very small --life, or a single-frame draw in sync mode. Solution: raise --life, or redraw each frame for a persistent overlay.

Problem: I can't delete a shape Cause: debug shapes are not actors. Solution: they expire on their own; use a short --life, or reload the world.

Outputs

Transient visual overlay in the rendered world. No file, no persistent actor.

Detail (each primitive's parameters, colour/lifetime semantics, sync-mode behaviour) in references/debug.md.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Add a message type to CARLA's native ROS 2 interface. Create its C++ data structure, serialization code for transmission, type identity hash, registration, and tests, with Docker-based hash calculation and build checks.

  • Adding a standard ROS 2 message type missing from CARLA
  • Defining a custom carla_msgs message
  • Investigating type-hash warnings
carla-simulator/carla14.5KUpdated Oct 18, 2026

Extend CARLA’s native ROS 2 interface to publish sensor data or receive vehicle commands. Covers topic implementation, registration, data connections, and verification, plus adding middleware, the communication layer used to exchange messages.

  • Publish obstacle sensor data to ROS 2
  • Add a topic for vehicle speed commands
  • Integrate another communication middleware
carla-simulator/carla14.5KUpdated Oct 18, 2026

Summarize ScenarioRunner results to see which scenarios passed and which checks failed. Compare runs before and after changes, or analyze recorded driving to produce measurements and plots of vehicle distance and deviation from the lane center.

  • Checking scenario pass and fail results
  • Comparing results before and after controller changes
  • Plotting vehicle distances from a recorded run
carla-simulator/carla14.5KUpdated Oct 18, 2026

audit-carla-docs

FreeSummary

Checks a local CARLA checkout for missing API documentation, outdated references, broken links, and pages absent from navigation. Produces a grouped Markdown report without building the project or running the simulator.

  • Reviewing documentation before a release
  • Finding missing or outdated API references
  • Checking broken links and navigation gaps
carla-simulator/carla14.5KUpdated Oct 18, 2026

bounding-boxes

FreeSummary

Read and display CARLA object bounding boxes, then project them onto a camera image as 2D rectangles. Export an annotated PNG and box coordinates in JSON for object detection annotation work.

  • Adding vehicle boxes to a camera image
  • Exporting box coordinates for detection annotations
  • Checking vehicle dimensions
carla-simulator/carla14.5KUpdated Oct 18, 2026

build-carla-ue4

FreeSummary

Builds CARLA's ue4-dev branch on Linux, producing the Unreal Engine 4.26 editor, server modules, and an installed Python client package. Fetches required content, optionally compiles native ROS 2 support, and verifies the build against a source-built server.

  • Building CARLA ue4-dev from source
  • Compiling CARLA with native ROS 2 support
  • Building the Python client for an existing environment
carla-simulator/carla14.5KUpdated Oct 18, 2026

See all skills by carla-simulator

Report a problem with this skill