Skip to content
cccskills
FreePublished on GitHub

replay-recording

Replay a recorded CARLA simulation in full or over a selected time range. Change playback speed, follow a particular vehicle, restore recorded weather, or regenerate sensor data to examine the run again.

OriginalShow the original description

Replays a CARLA .log recorded by the recorder — the whole run or a time window, at any speed, following a chosen actor, optionally regenerating sensors and restoring weather. Use when the user asks to "replay the recording", "play back the run", "watch it again in slow motion / at 2x", "follow vehicle N during replay", or "replay onto a different map".

See how to install

Good for

  • Watching a recorded simulation again
  • Following a vehicle in slow motion
  • Reviewing a selected time range at double speed
  • Regenerating camera frames from a recording

Files included (5)

  • SKILL.md5.7 KB
  • references/replay.md2.1 KB
  • scripts/check_env.sh2.1 KB
  • scripts/env.sh1.3 KB
  • scripts/replay.py9.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Replay a CARLA recording

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.

Play back a .log produced by record-simulation. The server re-creates the recorded scene; play prints its summary. Confirm the replay by watching the followed actor or by inspecting the same log with query-recording.

The scene, the holders and the clock

play puts the world into the state a replay needs, in this order:

  1. Stops local spawn holders. spawn-vehicles / spawn-walkers / a held create-sensor stay resident by design, and each removes its own actors and restores the clock in a finally, so they are sent SIGINT rather than killed. --keep-scene skips all of this.
  2. Puts the world back to asynchronous. The replayer runs server-side, so no client has to tick anything. If a client still owned a synchronous clock the replay would advance only as fast as that client ticked; worse, with the holder gone and the world left synchronous, nothing ticks at all and the replay appears to do nothing.
  3. Clears the scene. A replay RECREATES the actors in the log, so it adds to the world rather than replacing it: replaying a 50-car log into a live 50-car scene gives 100 vehicles driving through each other. Traffic signs and the spectator survive — they belong to the map, not the scene.

The corollary for recording: the recorder is free to be the synchronous client. Capturing under a fixed timestep is what makes a log reproducible, and it costs the replay nothing, because playback is driven by the server.

Holder detection reads /proc argv rather than matching a command-line substring — a shell whose own command line merely quotes vehicles.py spawn --hold matches a substring search and gets signalled, which kills the caller by accident.

Instructions

Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: (optional) inspect the log first (query-recording) to pick times/ids
- [ ] Step 3: Play — whole log, or a window; set speed / follow as asked
- [ ] Step 4: Stop when done (decide keep-actors)

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

Step 1: Check prerequisites

bash scripts/check_env.sh

Step 3: Play

source scripts/env.sh

# whole log at real time
python3 scripts/replay.py play --file /tmp/run.log

# a 10s window from t=5s, following actor 87, at 2x
python3 scripts/replay.py play --file /tmp/run.log --start 5 --duration 10 --follow 87 --time-factor 2.0

# regenerate sensors and restore the recorded weather
python3 scripts/replay.py play --file /tmp/run.log --replay-sensors --replay-weather

# change speed of the running replay, e.g. slow motion
python3 scripts/replay.py speed --factor 0.25

--start is seconds from the beginning (negative counts from the end), --duration 0 plays to the end, --follow 0 means don't move the spectator.

Step 4: Stop

python3 scripts/replay.py stop                 # remove replayed actors
python3 scripts/replay.py stop --keep-actors   # leave them in the world

Examples

Example 1: watch it back

User says: "replay that run"

play --file /tmp/run.log. Server summary prints; watch in the CARLA window.

Example 2: slow-mo on one car

User says: "replay following car 87 at quarter speed"

play --file /tmp/run.log --follow 87 --time-factor 0.25.

Example 3: regenerate camera data from a recording

User says: "I need camera frames from that recording"

Re-attach the sensors you want (create-sensor / read-sensor skills), then play --file /tmp/run.log --replay-sensors. The recorder stored no images; they are regenerated now.

Troubleshooting

Problem: play prints a file-not-found / parse error Cause: the .log is not on the server at that path. Solution: use the server-side path; a relative name resolves under CarlaUE4/Saved/. Verify with query-recording info first.

Problem: replay shows nothing / wrong map Cause: the log was recorded on a different map than the one loaded. Solution: replay loads the recorded map automatically; for OpenDRIVE-only logs use --map-override <Name>.

Problem: no sensor images during replay Cause: --replay-sensors not set, or no sensors attached. Solution: attach sensors, then replay with --replay-sensors.

Problem: actors vanish when replay ends Cause: stop removes replayed actors by default. Solution: stop --keep-actors to keep them.

Outputs

Server state: the recorded scene re-enacted on the running server. Optionally regenerated sensor data (with --replay-sensors). No file is produced.

Detail (time window semantics, sensors/weather, map override, sync interaction) in references/replay.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