This Docker environment reproduces the results from the paper: "Challenges of SLAM in Extremely Unstructured Environments: The DLR Planetary Stereo, Solid-State LiDAR, Inertial Dataset" by Giubilato et al., IEEE RA-L 2022
The S3LI dataset was recorded on Mt. Etna, Sicily, a planetary analogous environment with:
- 7 sequences covering over 4 kilometers
- Stereo camera (AVT Mako, 688×512 pixels, 30 Hz)
- Solid-State LiDAR (Blickfeld Cube-1, 70°H × 30°V FOV, 4.7 Hz)
- IMU (XSens MTi-G 10, 400 Hz)
- D-GNSS ground truth (centimeter-level accuracy)
Dataset URL: https://datasets.arches-projekt.de/s3li_dataset/
chmod +x run_s3li_evaluation.sh
./run_s3li_evaluation.shThis will:
- Build the Docker image with all SLAM systems
- Start a persistent container (won't close, maintains static ID)
- Mount directories for dataset and results
docker exec -it s3li_slam_eval bashInside the container:
bash /workspace/scripts/download_dataset.shYou can select individual sequences or download all (~50GB total).
bash /workspace/scripts/run_evaluation.shThis will:
- Run all SLAM algorithms on selected sequences
- Compute normalized RMSE and completion ratios
- Generate Table III comparison from the paper
The following SLAM systems are pre-built in the container:
- ORB-SLAM3 (Stereo & Stereo-Inertial)
- VINS-Fusion (Stereo & Stereo-Inertial)
- OpenVINS (Stereo-Inertial)
- BASALT (Stereo-Inertial)
| Sequence | Length | Description |
|---|---|---|
| s3li_traverse_1 | 371 m | Ash slope traverse, severe visual aliasing |
| s3li_traverse_2 | 300 m | Short traverse with panning motions |
| s3li_crater | 1010 m | Long traverse around crater rim |
| s3li_loops | 587 m | Loop closure opportunities on rocky ridges |
| s3li_crater_inout | 1338 m | Long traverse in/out of crater |
| s3li_mapping | 242 m | Dense mapping area |
| s3li_landmarks | 482 m | Traverses between rock formations |
/workspace/
├── dataset/ # Dataset storage
│ ├── s3li_traverse_1/
│ ├── s3li_traverse_2/
│ └── ...
├── results/ # Evaluation results
│ ├── orbslam3_stereo/
│ ├── vins_fusion_stereo/
│ └── ...
├── scripts/ # Evaluation scripts
│ ├── download_dataset.sh
│ ├── run_evaluation.sh
│ ├── evaluate_trajectory.py
│ └── generate_table.py
├── configs/ # SLAM configuration files
├── ORB_SLAM3/ # ORB-SLAM3 source
├── catkin_ws/ # ROS workspace (VINS, OpenVINS)
└── basalt/ # BASALT source
After running evaluations, results are saved to /workspace/results/:
evaluation_<sequence>.csv- Per-sequence resultstable_iii_comparison.csv- Main comparison tabletable_iii_comparison_detailed.csv- Detailed statistics<system>/<sequence>/trajectory.txt- Estimated trajectories<system>/<sequence>/output.log- System logs
To reproduce Table III from the paper:
# Inside container
bash /workspace/scripts/run_evaluation.sh
# Select option: Run all sequences (option 8)
# Wait for completion (may take several hours)
# Results will be in:
cat /workspace/results/table_iii_comparison.csvTo run individual SLAM systems manually:
cd /workspace/ORB_SLAM3
./Examples/Stereo/stereo_euroc \
Vocabulary/ORBvoc.txt \
/workspace/configs/orbslam3_config.yaml \
/workspace/dataset/s3li_traverse_1 \
timestamps.txtcd /workspace/catkin_ws
source devel/setup.bash
roslaunch vins vins_rviz.launch
# In another terminal: play datasetcd /workspace/catkin_ws
source devel/setup.bash
roslaunch ov_msckf pgeneva_ros_eth.launchcd /workspace/basalt/build
./basalt_vio \
--dataset-path /workspace/dataset/s3li_traverse_1 \
--config-path /workspace/configs/basalt_config.json \
--save-trajectorydocker stop s3li_slam_evaldocker start s3li_slam_eval
docker exec -it s3li_slam_eval bashdocker logs -f s3li_slam_evaldocker ps -qf "name=s3li_slam_eval"The container is configured with --restart unless-stopped, ensuring it maintains a static ID and survives system reboots.
docker stop s3li_slam_eval
docker rm s3li_slam_evaldocker rmi s3li_slam:latestConfiguration files for each SLAM system are in /workspace/configs/.
Adjust these to modify algorithm parameters:
orbslam3_config.yaml- ORB-SLAM3 parametersvins_config.yaml- VINS-Fusion parametersopenvins_config.yaml- OpenVINS parametersbasalt_config.json- BASALT parameters
As described in the paper, the evaluation computes:
-
Normalized RMSE: RMSE / trajectory_length
- Accounts for different trajectory lengths
- Lower is better
-
Completion Ratio: estimated_length / groundtruth_length
- Indicates how much of the sequence was successfully processed
- Higher is better (100% = complete sequence)
Results are formatted as: RMSE (Completion%)
The paper demonstrates that:
- Severe visual aliasing challenges place recognition
- Lack of structural features limits LiDAR-only SLAM
- Stereo-inertial systems show best overall performance
- ORB-SLAM3 struggles with feature-poor environments
- OpenVINS and BASALT are more robust to aliasing
- Check network connectivity
- Verify dataset URL is accessible
- Try downloading individual sequences
- Check system logs in
results/<system>/<sequence>/output.log - Verify sufficient memory (8GB+ recommended)
- Adjust parameters in config files
source /opt/ros/noetic/setup.bash
source /workspace/catkin_ws/devel/setup.bashContainer includes pre-built systems, but to rebuild:
cd /workspace/ORB_SLAM3
./build.sh
cd /workspace/catkin_ws
catkin_makeIf you use this dataset or code, please cite:
@article{giubilato2022challenges,
title={Challenges of SLAM in Extremely Unstructured Environments: The DLR Planetary Stereo, Solid-State LiDAR, Inertial Dataset},
author={Giubilato, Riccardo and St{\"u}rzl, Wolfgang and Wedler, Armin and Triebel, Rudolph},
journal={IEEE Robotics and Automation Letters},
volume={7},
number={4},
pages={8721--8728},
year={2022},
publisher={IEEE}
}For dataset issues: https://rmc.dlr.de/s3li_dataset For paper questions: riccardo.giubilato@dlr.de
Dataset and code are provided for research purposes. See individual SLAM system licenses for their respective terms.