LIBVISO2: Library for VISual Odometry 2
Author: Andreas GeigerInstitute of Measurement and Control Systems
Karlsruhe Institute of Technology
Please send any feedback or bugreports to: geiger@kit.edu
IV 2011 StereoScan Special Demonstration ...
Introduction
LIBVISO2 (Library for Visual Odometry 2) is a very fast cross-platfrom (Linux, Windows) C++ library with MATLAB wrappers for computing the 6 DOF motion of a moving mono/stereo camera. The stereo version is based on minimizing the reprojection error of sparse feature matches and is rather general (no motion model or setup restrictions except that the input images must be rectified and calibration parameters are known). The monocular version is still very experimental and uses the 8-point algorithm for fundamental matrix estimation. It further assumes that the camera is moving at a known and fixed height over ground (for estimating the scale). Due to the 8 correspondences needed for the 8-point algorithm, many more RANSAC samples need to be drawn, which makes the monocular algorithm slower than the stereo algorithm, for which 3 correspondences are sufficent to estimate parameters. The most significant differences to libviso 1 are as follows:- No dependencies on external libraries anymore
- Higher feature density (up to 15.000 feature matches)
- Feature matching speed-up of factor 10 (1.000 features take ~35 ms)
- Visual odometry speed-up of factor 100 (4 ms at 1.000 features)
- Also supports monocular egomotion estimation now
- Monocular scale estimated by assuming a fixed camera height over ground
- Features can be tracked over a short period of time
- Structure-from-Motion pipeline (3d reconstruction)
3d reconstruction videos are available in the supplementary material.




Coordinate System Definition

Changelog
- 20.04.2012: Fixed a bug in the gain estimation utility function (doesn't affect visual odometry computation). Thanks to Alan Sambol for reporting.
- 20.03.2012: Updated the monocular demonstration file for MATLAB, which now also handles small motions by waiting for larger ones (via replace=true).
- 01.03.2012: Solved a couple of bugs and a memory violation: Now the Windows version should run properly also for the monocular case. The non-windows headers have been removed for compilation using Visual Studio. The bug when directly passing matches into the odometry mechanism has been resolved. The odometry class now also supports returning the inlier indices. Thanks to Bernd Kitt and Alan Sambol for reporting these issues!
- 13.02.2012: For usability reasons libviso2 has been completely refactored. Now, images or matches can be passed to the library, resulting directly in differential motion estimates. A weighting scheme for the stereo part has been added to make the algorithm more robust to slight miscalibrations. Since I got many requests for a c++ usage sample, I wrote a commented c++ demo program, which takes one of the Karlsruhe dataset sequences as input and outputs motion estimates to the command line. I am looking forward to your feedback!
- 15.04.2011: First version of libviso2 is available for download. Please note that this version is still very beta-ish, e.g., it has not been tested under Windows/MacOS or 32 bit systems. Your bugreports are highly appreciated. Also note that the 3d fusion part is not included yet. We will probably upload this part in a couple of weeks.
Prerequisites
- MATLAB (if you want to use the MATLAB wrappers)
- gcc / Visual Studio (if you want to use the code as part of your c++ project)
Downloads
- Libviso2 for Linux/Windows including demo code: libviso2.zip
- Stephan Wirth from UIB wrote a ROS wrapper to libviso2! You can find his wiki page here!
Datasets: Video Sequences with Ground Truth Odometry
- The datasets used in our paper are available for download here.
- Figure 7a: 2009_09_08_drive_0010
- Figure 7b: 2009_09_08_drive_0016
- Figure 7c: 2009_09_08_drive_0021
Using this Code as part of your Software
This code is published under the GNU General Public License. If you distribute software that uses libviso, you have to distribute it under GPL with the source code. Another option is to contact us to purchase a commercial license.If you find this software useful or if you use this software for your research, we would be happy if you cite the following related publication:
LATEX BIBTEX CITATION ENTRY:
@INPROCEEDINGS{Geiger11,
author = {Andreas Geiger and Julius Ziegler and Christoph Stiller},
title = {StereoScan: Dense 3d Reconstruction in Real-time},
booktitle = {IEEE Intelligent Vehicles Symposium},
year = {2011},
month = {June},
address = {Baden-Baden, Germany}
}
Disclaimer
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.Please send any feedback or bugreports to: geiger@kit.edu