What is SceneLib2?

SceneLib2 is an open-source C++ library for SLAM originally designed and implemented by Andrew Davison and colleagues at the University of Oxford.

Why is it named SceneLib2?

His version, SceneLib 1.0, was released with full source code under the LGPL, and as SceneLib2 is a reimplemented version of it, I gave the same name with a new version number to this library.

Why is it reimplemented?

I reimplemented his version with the following objectives;

  1. Understand his MonoSLAM algorithm in code level.
  2. Replace older libraries (i.e. VW34GLOWVNLPthread) with newer ones (PangolinEigen3Boost).
  3. Support USB camera instead of IEEE1394.
  4. Make it more portable and convenient by using CMake and git repository.


I tried to make it as same as the original version, so that I can easily find any problems that I might have introduced to it by accident (I didn't even change most of functions' and variables' name). But, at the same time, I also tried to make it easier to understand by using different class architectures and various changes.

To give you the same executable example program like MonoSLAMGlow in SceneLib 1.0, I implemented a very similar one called MonoSlamSenceLib1, and again I tried to make it as same as the original version. Please have a look at the following screenshots.

Fig 1. A test result using the same image sequences used by SceneLib 1.0

Fig 2. A test result using the same image sequences used by SceneLib 1.0 (with the Rectify Image Display option)

Fig 3. A test result using a USB camera

Even though my intention is to make it as a cross-platform library, I only added and tested it for the following platforms, but, of course, I will increase its portability continuously (you can check the following platforms list later on).

  • Ubuntu 12.04 LTS - 32bits
  • Ubuntu 12.04 LTS - 64bits (thanks to Prof. Davison for testing it)
  • Mac OS X 10.9

How to download and use?

You can download full source code on GitHub (, and to find out how to use it, please refer to its README.

Notes and Warnings

This library is a research-level software which is still in development. It will be frequently changed without notification to fix bugs, to add more features and to make it better.

Thanks to

I really appreciate Professor Andrew Davison for sharing his great achievement, and I promise him that I will share every findings based on this to help others who are interested in this field as he is doing continuously in various ways. Thank you.