Sparser Relative Bundle Adjustment (SRBA)

NOTICE: Since MRPT 1.3.2 (Oct 2015), SRBA is an independent project outside of the MRPT source tree. See its GitHub repo and page.

1. Theory

Bundle adjustment is the name given to one solution to visual SLAM based on maximum-likelihood estimation (MLE) over the space of map features and camera poses. However, it is by no way limited to visual maps, since the same technique is also applicable to maps of pose constraints (graph-SLAM) or any other kind of feature maps not relying on visual information.

The framework of Relative Bundle Adjustment (RBA) was introduced in a series of works by G. Sibley and colleagues:

  • Sibley, G. Relative bundle adjustmentDepartment of Engineering Science, Oxford University, Tech. Rep, 2009. (PDF)
  • Sibley, G. and Mei, C. and Reid, I. and Newman, P. Adaptive relative bundle adjustmentRobotics Science and Systems Conference. 2009. (PDF)

Sparser RBA (SRBA) is the name of the generic and extensible framework for RBA implemented in this C++ library, and introduced in:

  • Blanco, J.L. and Gonzalez, J. and Fernandez-Madrigal, J.A. Sparser Relative Bundle Adjustment (SRBA): constant-time maintenance and local optimization of arbitrarily large maps, IEEE International Conference of Robotics and Automation (ICRA), 2013. (PDF),  ICRA slides (PDF)

2. Documentation

Documentation is now at the GitHub repository for MRPT/srba.

3. Videos

SRBA test 1: Relative Graph SLAM demo

SRBA test 2: dataset_30k_1loop

SRBA test 3: linear trajectory with a stereo camera

  • Pablo

    I have a quick question. I have been playing with the examples provided, and I am currently trying to integrate this into a real-life SLAM system. However, it is clear that I need to provide the “ID” of the feature as I am making calls to the SRBA engine. In real life scenarios, I cannot quite provide the feature ID as I am not sure when loop closure will occur and hence I cannot know to which frame I should attempt to match the existing features.
    the SRBA engine requires ID in order to operate.
    Are there any practical examples of SRBA being applied to a real life problem?

    • Jose Luis Blanco

      Hi Pablo,

      In fact, there is a PhD going on about this topic right now at our lab, so it’s work in progress.

      Anyway, assigning IDs to features are they are detected is something rather “standard” in all SLAM methods. You need new IDs for each different observed features, independently of loop closures, when the detection of loop closure itself consists in repeating the same feature IDs of some observed long ago.

      At present, SRBA limits itself to be a SLAM back-end, so the user-provided front-end is in charge of the hard problem of detecting loop closures.

      Hope it helps.