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

Map sparsification: make your mapping more efficient

Maplab offers several algorithms designed to reduce the computational/memory requirements of the map. That's particularly important when you would like to cover large areas or deal with a large number of mapping sessions.

Let's start with an initial map - one of the maps of a multi-floor dataset: initial

Keyframing

To reduce the number of keyframes in the system (and, as a result, also remove some landmarks), you can use the keyframing command:

kfh

Keyframing is based on multiple criteria:

  • maximum distance: if translation > threshold then adds a keyframe,
  • maximum rotation: if rotation > threshold then adds a keyframe,
  • number of keyframes: forces keyframes at every n-th keyframe,
  • number of coobserved landmarks: adds a keyframe if the landmarks co-observed by two frames is smaller than a threshold.

Those parameters can be adapted using flags:

  • kf_distance_threshold_m, default 0.75
  • kf_rotation_threshold_deg, default 20
  • kf_every_nth_vertex, default 10
  • kf_min_shared_landmarks_obs, default 40

The resulting map should contain significantly fewer keyframes: kfh

Map summarization

Map summarization removes the landmarks using an Integer Linear Programming optimization, using lpsolve solver. It tries to keep the landmarks that are most often observed while also maintaining a good coverage over the entire area.

To summarize to maps and only keep 5000 best landmarks, you can call:

lsparsify --num_landmarks_to_keep 5000

This reduces the number of landmarks and reduces the size of the map: lsparsify

Exporting a localization summary map

Maplab introduces a concept of a compact localization summary map - a minimal map representation that our loopclosure algorithm can operate on. Basically, it consists of landmark 3D positions, observation descriptors and a covisibility graph.

To export a localization summary map that can be used by ROVIOLI, just use the command:

generate_summary_map_and_save_to_disk --summary_map_save_path your_summary_map
Prev
Multi-session use case: CLA, multi-floor use-case
Next
Stereo Dense Reconstruction: EuRoC, multi-session reconstruction use-case