Fusion SLAM
Home
  • OVERVIEW AND INTRODUCTION
  • INSTALLING
  • DATASETS
  • TUTORIALS FOR ROVIOLI (ONLINE FRONTEND)
  • TUTORIALS FOR USING MAPLAB (OFFLINE TOOLS) - BASICS
  • TUTORIALS FOR USING MAPLAB (OFFLINE TOOLS) - USE-CASES
  • TUTORIALS FOR USING MAPLAB SERVER (ONLINE)
  • HARDWARE INTEGRATION AND SENSOR CALIBRATION
  • TUTORIALS FOR EXTENDING MAPLAB
  • DEVELOPEMENT GUIDELINES
  • ADDITIONAL FORMATS
Project
  • 简体中文
  • English
Home
  • OVERVIEW AND INTRODUCTION
  • INSTALLING
  • DATASETS
  • TUTORIALS FOR ROVIOLI (ONLINE FRONTEND)
  • TUTORIALS FOR USING MAPLAB (OFFLINE TOOLS) - BASICS
  • TUTORIALS FOR USING MAPLAB (OFFLINE TOOLS) - USE-CASES
  • TUTORIALS FOR USING MAPLAB SERVER (ONLINE)
  • HARDWARE INTEGRATION AND SENSOR CALIBRATION
  • TUTORIALS FOR EXTENDING MAPLAB
  • DEVELOPEMENT GUIDELINES
  • ADDITIONAL FORMATS
Project
  • 简体中文
  • English
  • OVERVIEW AND INTRODUCTION

    • Introduction to the Maplab Framework
    • Main Papers
    • Additional Citations
    • Related Research
    • FAQ
    • Known Issues
  • INSTALLING

    • Installing on Ubuntu
    • Compilation and Debugging
  • DATASETS
  • TUTORIALS FOR ROVIOLI (ONLINE FRONTEND)

    • ROVIOLI Introduction
    • Running ROVIOLI in VIO mode: calibartion files, rostopics, bag/topic mode, visualization
    • Running ROVIOLI in Localization mode
    • Multi-session mapping with ROVIOLI
  • TUTORIALS FOR USING MAPLAB (OFFLINE TOOLS) - BASICS

    • Basic Console Usage
    • Parameters (Gflags)
    • Console map management: load, save, basic visualization
    • Inspecting and visualizing a map
    • Map visualization: see your map in RViz!
    • Preparing a single session map: optimization, loop-closure
    • Understanding loop-closure
    • Optimizing VI-Maps
    • Preparing a multi-session map: map anchoring, loop-closure, pose-graph relaxation
    • Dense Reconstruction: attaching resources to map, available reconstruction tools
    • Resource Importer
  • TUTORIALS FOR USING MAPLAB (OFFLINE TOOLS) - USE-CASES

    • Multi-session use case: CLA, multi-floor use-case
    • Map sparsification: make your mapping more efficient
    • Stereo Dense Reconstruction: EuRoC, multi-session reconstruction use-case
    • External Features
  • TUTORIALS FOR USING MAPLAB SERVER (ONLINE)
  • HARDWARE INTEGRATION AND SENSOR CALIBRATION

    • Sensor Calibration Format: ncamera, imu-sigmas
    • Initial sensor calibration with Kalibr
    • Sensor calibration refinement
    • Intel RealSense ZR300
    • VersaVIS
  • TUTORIALS FOR EXTENDING MAPLAB

    • Using the MapManager
    • Using Timing and Statistics
    • /maplab/docs/pages/tutorials-extending-maplab/C_Coding-Examples:-Creating-a-custom-console-plugin.html
    • /maplab/docs/pages/tutorials-extending-maplab/D_Coding-Examples:-Working-with-the-VI-Map.html
    • Console Plugin System
  • DEVELOPEMENT GUIDELINES

    • Importing maplab to Eclipse
    • Contributing to maplab
    • Header Include Guide
    • Debugging applications
    • Expressing frame transformations in code
    • Verbosity Policy
  • ADDITIONAL FORMATS

Stereo Dense Reconstruction: EuRoC, multi-session reconstruction use-case

This tutorial will show you how to compute a globally consistent multi-map reconstruction based on multiple EUROC datasets

EuRoC consistent 3D reconstruction

Datasets:

In order to obtain the initial maps required for this task, you can either download the EUROC rosbags from the official website and use ROVIOLI to create the maps, or you can download the finished VI maps for reconstruction from the [[Sample Datasets]] page.

If you choose to create the maps yourselves, make sure you use to following flags, such that ROVIOLI attaches the images necessary for dense reconstruction to the map.

 --map_builder_save_image_as_resources=true

Instructions:

In order to merge, optimize and reconstruct these three maps, we are suggesting the following procedure. Open your maplab console and execute the following commands in sequence:

# Load all maps
load --map_folder <dataset_folder>/euroc_ml1
load --map_folder <dataset_folder>/euroc_ml2
load --map_folder <dataset_folder>/euroc_ml3

# Loop-close and optimize each individual map
select_map --map_key euroc_ml1
# Re-triangulate the landmarks
rtl
# OPTIONAL STEP: Optimize the map to get a better initial
#                map state for loop-closure
optvi
# Run loop closure
lc
# Run bundle adjustment
optvi
# Save the optimized map
save --map_folder <dataset_folder>/euroc_ml1_opt

# Repeat the same for map 2 and 3
select_map --map_key euroc_ml2
rtl
optvi
lc
optvi
save --map_folder <dataset_folder>/euroc_ml2_opt
select_map --map_key euroc_ml3
rtl
optvi
lc
optvi
save --map_folder <dataset_folder>/euroc_ml3_opt

# Load all single-mission maps into the same map (which then contains 3 missions)
join_all_maps --target_map_key=euroc_ml1_2_3
# Set the baseframe of the first mission to known to anchor it.
sbk
# Align all missions with respect to one another by modifying
# their baseframe transformation.
aam
# Loop-close and optimize all missions
lc
optvi
save --map_folder <dataset_folder>/euroc_ml1_2_3_opt

# Save the map to a different folder such that you always have
# the optimized version of the map to go back to if something goes wrong
save --map_folder <dataset_folder>/euroc_ml1_2_3_dense
# Stereo dense reconstruction
sdr --flagfile=<path_to_stereo_dense_reconstruction_pkg>/parameter/stereo_params.gflags

# Compute a globally consistent dense reconstruction based on VOXBLOX.
create_tsdf_from_depth_resource --flagfile=<path_to_stereo_dense_reconstruction_pkg>/parameter/stereo_params.gflags

# Compute and export the surface reconstruction to a PLY file.
export_tsdf --dense_result_mesh_output_file=<dataset_folder>/euroc_surface_reconstruction.ply

# Save your map
save --map_folder <dataset_folder>/euroc_ml1_2_3_dense
Prev
Map sparsification: make your mapping more efficient
Next
External Features