Replay Module¶
The replay module provides replay and visualization of evaluation results, with trajectory rendering, observation rendering, and info panel display.
Overview¶
The replay module is used for:
- Trajectory Visualization - Display navigation trajectory on the map
- Observation Replay - Replay observation images per step
- Info Panel - Show evaluation metrics and status
- Video Generation - Generate replay video files
Core Components¶
- DataRecorder - Records episode data during evaluation (trajectory, observations, actions)
- ReplayLoader - Loads recorded replay data
- VideoReplayer - Generates visualization videos combining trajectory and observations
- Renderers - trajectory_renderer, observation_renderer, info_panel_renderer
Replay Data Format¶
Replay data is stored in the evaluation results directory:
eval_results/
├── episode_001/
│ ├── replay_data.json # Replay data
│ ├── trajectory.json # Trajectory data
│ └── observations/ # Observation images
│ ├── step_000_rgb.png
│ ├── step_001_rgb.png
│ └── ...
└── ...
Replay Data JSON¶
{
"episode_id": "001",
"scene_id": "scene_001",
"start_position": [0.0, 0.0, 0.0],
"start_rotation": [1.0, 0.0, 0.0, 0.0],
"goal_position": [5.0, 0.0, 0.0],
"trajectory": [
{
"step": 0,
"position": [0.0, 0.0, 0.0],
"rotation": [1.0, 0.0, 0.0, 0.0],
"action": {"x": 0.5, "y": 0.0, "yaw": 0.0}
}
],
"observations": [
{
"step": 0,
"rgb": {
"face": "base64_encoded_image",
"left": "base64_encoded_image",
"right": "base64_encoded_image"
}
}
],
"metadata": {
"success": true,
"path_length": 4.2,
"geodesic_distance": 3.0,
"num_steps": 42
}
}
Using the Replay Tool¶
Command-Line Tool¶
Single Episode Replay¶
Batch Replay¶
Custom Parameters¶
python scripts/replay_eval.py \
--episode 001 \
--results eval_results/ \
--output replay.mp4 \
--fps 15 \
--resolution 1920x1080
Command-Line Arguments¶
| Argument | Description | Default |
|---|---|---|
--episode EPISODE_ID | Episode ID (single replay) | - |
--results RESULTS_DIR | Evaluation results directory | ./eval_results |
--output OUTPUT_PATH | Output path | ./replay.mp4 |
--fps FPS | Video frame rate | 15 |
--resolution WIDTHxHEIGHT | Video resolution | 1920x1080 |
--show-trajectory | Show trajectory | true |
--show-info | Show info panel | true |
Python API¶
Basic Usage¶
from navarena_bench.replay import BaseReplayer
from navarena_bench.replay.loader import ReplayLoader
# Load replay data
loader = ReplayLoader("eval_results/episode_001")
replay_data = loader.load()
# Create replayer
replayer = BaseReplayer.init("video", loader)
# Generate replay video
replayer.replay(output_path="replay.mp4")
Custom Replayer¶
from navarena_bench.replay.base import BaseReplayer
from navarena_bench.replay.loader import ReplayLoader
@BaseReplayer.register("my_replayer")
class MyReplayer(BaseReplayer):
def __init__(self, loader, **kwargs):
super().__init__(loader, **kwargs)
# Initialize
def replay(self, output_path):
"""Generate replay"""
# Replay logic
pass
Replay Renderers¶
TrajectoryRenderer¶
Renders the navigation trajectory on the map.
from navarena_bench.replay.renderers.trajectory_renderer import TrajectoryRenderer
renderer = TrajectoryRenderer(
pgm_map_path="scene_001_transformed.pgm",
yaml_config_path="scene_001_transformed.yaml"
)
image = renderer.render(
trajectory=trajectory,
start_position=start_pos,
goal_position=goal_pos
)
ObservationRenderer¶
Renders observation images.
from navarena_bench.replay.renderers.observation_renderer import ObservationRenderer
renderer = ObservationRenderer()
image = renderer.render(
observations=observations,
camera_names=["face", "left", "right"]
)
InfoPanelRenderer¶
Renders the evaluation info panel.
from navarena_bench.replay.renderers.info_panel_renderer import InfoPanelRenderer
renderer = InfoPanelRenderer()
image = renderer.render(
metadata={
"success": True,
"path_length": 4.2,
"geodesic_distance": 3.0,
"num_steps": 42
}
)
Replay Video Layout¶
The replay video includes:
- Trajectory View - Top left: map and trajectory
- Observation View - Top right: multi-camera observations
- Info Panel - Bottom: evaluation metrics
Video Layout¶
┌─────────────────┬─────────────────┐
│ │ │
│ Trajectory │ Observations │
│ (Map+Traj) │ (Multi-cam) │
│ │ │
├─────────────────┴─────────────────┤
│ Info Panel │
│ Success: ✓ Path Length: 4.2m │
└─────────────────────────────────────┘
Replay Configuration¶
replay:
fps: 15
resolution: [1920, 1080]
show_trajectory: true
show_observations: true
show_info_panel: true
trajectory_style:
line_color: [255, 0, 0]
line_width: 2
start_marker: "circle"
goal_marker: "star"
FAQ¶
Replay data not found
Ensure trajectory saving was enabled during evaluation (save_trajectories: true).
Video generation failed
Check output path permissions and disk space.
Trajectory display incorrect
Verify occupancy grid map file exists and coordinate transform is correct.
Observation images missing
Ensure observation images were saved during evaluation and paths are correct.
See also: Extending · Evaluator Module · Environment Module