ORB-SLAM3 mapping parts breakdown

admin2024-07-10  6

The mapping part of visual SLAM can indeed be divided into two components: photometric and geometric. These components leverage different types of information to build and refine the map.

Photometric Mapping

Photometric mapping involves using the intensity and color information from images to aid in the mapping process. This typically includes feature extraction, matching, and visual descriptor management.

Relevant Parts in ORB-SLAM3:
  1. Feature Extraction:

    • ORB features (Oriented FAST and Rotated BRIEF) are extracted from the images.
    • Classes and Methods: ORBextractor, Frame::ExtractORB.
  2. Feature Matching:

    • Matching features between frames to find correspondences.
    • Classes and Methods: ORBmatcher, Frame::SearchByProjection, Frame::SearchForInitialization.
  3. Descriptors Storage:

    • Storage and comparison of ORB descriptors for keyframes and map points.
    • Classes and Methods: KeyFrame::mDescriptors, Frame::mDescriptors.
  4. KeyFrame Database:

    • Storing and retrieving keyframes based on visual information for loop closure and relocalization.
    • Classes and Methods: KeyFrameDatabase, KeyFrameDatabase::add, KeyFrameDatabase::DetectLoopCandidates.

Geometric Mapping

Geometric mapping involves the spatial and structural aspects of the environment. It includes the representation and optimization of the 3D structure of the environment, such as the positions of keyframes and map points.

Relevant Parts in ORB-SLAM3:
  1. MapPoints:

    • 3D points in the environment that are observed by multiple keyframes.
    • Classes and Methods: MapPoint, Map::mspMapPoints.
  2. KeyFrames:

    • Keyframes that store the camera poses and observed map points.
    • Classes and Methods: KeyFrame, Map::mspKeyFrames.
  3. Pose Graph Optimization:

    • Optimizing the poses of keyframes and the positions of map points to minimize reprojection error.
    • Classes and Methods: Optimizer::PoseOptimization, Optimizer::GlobalBundleAdjustment.
  4. Covisibility Graph:

    • Graph representing the co-visibility relationship between keyframes.
    • Classes and Methods: KeyFrame::mConnectedKeyFrameWeights, KeyFrame::AddConnection.
  5. Spanning Tree:

    • A minimum spanning tree used for efficient loop closures.
    • Classes and Methods: KeyFrame::mspChildrens, KeyFrame::mpParent.
  6. Local Mapping:

    • Managing the addition of new keyframes and map points, and performing local bundle adjustment.
    • Classes and Methods: LocalMapping, LocalMapping::Run, LocalMapping::ProcessNewKeyFrame.


By dividing the mapping tasks into photometric and geometric components, we can better understand the specific roles and data types involved in ORB-SLAM3:

  • Photometric Mapping: Deals with image-based data such as features and descriptors to establish correspondences and build the map incrementally.
  • Geometric Mapping: Focuses on the 3D spatial relationships, optimizing the structure of the map, and maintaining the integrity of the overall map.

Here is a breakdown of the relevant parts in ORB-SLAM3:

Photometric MappingGeometric Mapping
ORB ExtractorMapPoints
Feature MatchingKeyFrames
Descriptors StoragePose Graph Optimization
KeyFrame DatabaseCovisibility Graph
Spanning Tree
Local Mapping

By understanding these components, developers can more effectively optimize and enhance the mapping processes in ORB-SLAM3, potentially integrating advanced data structures like VDB for the geometric component to improve efficiency and scalability.