A standalone Python script for visualizing SLAM (Simultaneous Localization and Mapping) pipeline outputs using the rerun-sdk. This tool provides an interactive 3D visualization of point clouds, camera trajectories, floor detection, closest point analysis, and video synchronization.
- Point Cloud Rendering: Static and temporal point cloud visualization with color support
- Camera Trajectory: 3D camera path with temporal playback
- Floor Detection: Floor plane visualization with grid overlay
- Closest Point Analysis: Real-time proximity warnings with distance visualization
- Video Synchronization: Synchronized video playback with trajectory data
- Segmentation Support: Color point clouds by segmentation class IDs
- Warning System: Multi-level proximity alerts (Normal, Caution, Strong, Critical)
- Directional Guidance: Human-readable direction descriptions
- View Cones: Camera field-of-view visualization
- Spatial Subsampling: Memory-efficient point cloud rendering
- Floor Highlighting: Automatic floor point identification and highlighting
- Real-time Plots: Distance and warning level charts
- Color-coded Warnings: Visual proximity alerts with appropriate colors
- Temporal Playback: Step-through trajectory with synchronized data
- Separate Segmentation Views: Individual class visualization options
- Python 3.7+
- rerun-sdk
- numpy
- plyfile
pip install rerun-sdk numpy plyfileFor enhanced point cloud processing:
pip install open3dpython visualize_slam_output.py /path/to/slam_analysis_output_dirpython visualize_slam_output.py --color_pointcloud_by_classIds --show_segmentation_masks_separately --show-yolo-detections /path/to/slam_analysis_output_dir--no-point-cloud # Disable point cloud visualization
--no-trajectory # Disable trajectory visualization
--no-floor # Disable floor plane visualization
--no-closest-points # Disable closest points analysis
--no-view-cones # Disable view cone visualization
--no-trajectory-path # Disable static trajectory path
--no-distance-lines # Disable distance lines to closest points
--no-highlight-floor # Disable floor point highlighting
--no-video # Disable video visualization--color_pointcloud_by_classIds # Enable coloring by class IDs
--show_segmentation_masks_separately # Show segmentation classes separately
--subsample-percentage 0.5 # Percentage of points to keep (0.0-1.0)
--no-subsampling # Disable point cloud subsampling--warning-distance-critical 0.2 # Critical warning threshold (meters)
--warning-distance-strong 0.4 # Strong warning threshold (meters)
--warning-distance-caution 0.6 # Caution warning threshold (meters)
--no-warnings # Disable proximity warning system
--no-directional-warnings # Disable directional warnings--floor-threshold 0.05 # Floor point identification threshold
--grid-size 2.0 # Floor grid size (meters)
--cone-angle 45.0 # View cone angle (degrees)
--cone-length-factor 1.5 # View cone length factor
--max-cone-length 2.0 # Maximum cone length (meters)python visualize_slam_output.py --color_pointcloud_by_classIds --show_segmentation_masks_separately ./outputs python visualize_slam_output.py ./enhanced_slam_outputs/slam_analysis_20240115_143045python visualize_slam_output.py ./outputs --no-view-cones --no-floor --no-videopython visualize_slam_output.py ./outputs --color_pointcloud_by_classIds --show_segmentation_masks_separatelypython visualize_slam_output.py ./outputs --warning-distance-critical 0.15 --warning-distance-caution 0.8python visualize_slam_output.py ./outputs --subsample-percentage 0.8python visualize_slam_output.py ./outputs --no-warningsThe script automatically detects and loads the following file types:
slam_analysis_pointcloud.plyincremental_analysis_detailed_pointcloud.ply- Intermediate step point clouds:
intermediate/step_*/pointcloud.ply
slam_analysis_trajectory.txtincremental_analysis_detailed_trajectory.txt
slam_analysis_floor_data.json/.csvincremental_analysis_detailed_floor_data.json/.csv
slam_analysis_closest_points.json/.csvincremental_analysis_detailed_closest_points.json/.csv
- Automatically loaded from pipeline configuration
- Supports rerun-compatible MP4 files
metadata.json: Pipeline configuration and file paths
The visualizer includes a sophisticated proximity warning system with four levels:
| Level | Distance | Color | Description |
|---|---|---|---|
| Normal | >0.6m | Green | Safe distance |
| Caution | 0.4-0.6m | Yellow | Moderate proximity |
| Strong | 0.2-0.4m | Orange | Close proximity |
| Critical | <0.2m | Red | Immediate danger |
When enabled, the system provides human-readable direction descriptions:
- "Object 0.3m ahead-right"
- "Object 0.15m to your left"
- "Object 0.25m behind-below"
- Percentage-based: Configurable reduction (default: 50%)
- Final step preservation: Always shows 100% of points in final temporal step
- Spatial consistency: Maintains point distribution across space
- Memory management: Automatic subsampling for large datasets
- Step mapping: Intelligent mapping between trajectory poses and point cloud steps
- Video synchronization: Step-based frame mapping for smooth playback
- Memory efficiency: Temporal point clouds only show current frame
# Start rerun viewer manually
rerun --serve-web
# Then run the script
python visualize_slam_output.py ./outputs# Convert video for rerun compatibility
python convert_videos_for_rerun.py Data/Videos/# Reduce subsampling percentage
python visualize_slam_output.py ./outputs --subsample-percentage 0.3
# Or disable subsampling entirely
python visualize_slam_output.py ./outputs --no-subsampling- Check that the output directory contains the expected SLAM analysis files
- Verify file naming conventions match the supported patterns
- Ensure metadata.json is present for automatic configuration
- Use
--subsample-percentagefor large point clouds - Disable unused visualizations with
--no-*flags - Enable
--color_pointcloud_by_classIdsfor better segmentation visualization - Use
--show_segmentation_masks_separatelyfor detailed class analysis
The script automatically reads pipeline configuration from metadata.json:
- View cone settings from
IncrementalClosestPointFinderComponent - Video paths from
MAST3RSLAMVideoDataset - File paths and analysis parameters
- Floor threshold: 0.05m
- Grid size: 2.0m
- View cone angle: 45°
- Subsampling: 50% for temporal steps
- Warning distances: 0.2m, 0.4m, 0.6m
The visualizer creates an interactive 3D scene in the rerun web viewer with:
- World coordinate system: All spatial data in 3D space
- Timeline controls: Playback controls for temporal data
- Scene tree: Organized visualization hierarchy
- Real-time plots: Distance and warning level charts
- Text overlays: Warning messages and status information