robotvision repos from OpenSLAM.org
Branch: master
Clone or download
robotvision
Latest commit 83b5335 Jul 5, 2012
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Camera RELEASE 1.1.0 Aug 25, 2010
csparse fixed csparse issue, included old csparse files Jul 5, 2012
CMakeLists.txt
COPYING Version 1.0.0 Jun 4, 2010
COPYING.LESSER Version 1.0.0 Jun 4, 2010
INSTALL.txt fixed csparse issue, included old csparse files Jul 5, 2012
README.txt documentation update Jun 8, 2010
VERSION.txt RELEASE 1.1.0 Aug 25, 2010
abstract_view.cpp RELEASE 1.1.0 Aug 25, 2010
abstract_view.h RELEASE 1.1.0 Aug 25, 2010
ba_demo.cpp RELEASE 1.1.0 Aug 25, 2010
bundle_adjuster.h RELEASE 1.1.0 Aug 25, 2010
graph_optimizer.h
gui_view.cpp RELEASE 1.1.0 Aug 25, 2010
gui_view.h Version 1.0.0 Jun 4, 2010
gui_window.cpp RELEASE 1.1.0 Aug 25, 2010
gui_window.h RELEASE 1.1.0 Aug 25, 2010
image.cpp RELEASE 1.1.0 Aug 25, 2010
image.h RELEASE 1.1.0 Aug 25, 2010
keble_college.txt Version 1.0.0 Jun 4, 2010
maths_utils.cpp
maths_utils.h RELEASE 1.1.0 Aug 25, 2010
opencv_helper.cpp Version 1.0.0 Jun 4, 2010
opencv_helper.h Version 1.0.0 Jun 4, 2010
quadtree.h
rectangle.h RELEASE 1.1.0 Aug 25, 2010
rss2010_demo.cpp RELEASE 1.1.0 Aug 25, 2010
sim3.h RELEASE 1.1.0 Aug 25, 2010
sparse_cholesky.h RELEASE 1.1.0 Aug 25, 2010
sparse_matrix.cpp
sparse_matrix.h
stopwatch.h RELEASE 1.1.0 Aug 25, 2010
transformations.h RELEASE 1.1.0 Aug 25, 2010

README.txt

For an installation instruction, please look at "INSTALL.txt".

If RobotVision is already install, you can run the demo application
"rss2010_demo" in order to recreate the figures of the paper 

>H. Strasdat, J.M.M. Montiel, A.J. Davision: "Scale Drift-Aware
 Large Scale Monocular SLAM", Proc. of Robotics: Science and
 Systems (RSS), 2010.<

"./rss2010_demo 2" creates Figure 2. Here, the Keble College trajectory before
loop closure is first read from a test file (black curve), then 6 DoF
optimisation (green curve) and 7 DoF optimisation is performed (red curve).

"./rss2010_demo 3" creates Figure 3. Attention, this will take one to two
hours! However, the whole process is visualised.

"./rss2010_demo 4" creates Figure 4. This is a simulation of an aircraft 
flying over a sphere. It performs monocular visual odometry using a 
downward looking camera. In the end, several loop closure constraints 
are identified and 7 DoF optimisation is performed.


Version 1.0 of RobotVision offers Bundle Adjustment (BA) (bundle_adjuster.h) 
pose-graph optimisation (graph_optimizer.h) and 2D/3D visualisation among 
other things. 

In order to get to know the BundleAdjuster and 3D visualisation, please have a look at
the BA toy example: "ba_demo.cpp".

Try out the following:
 - "./ba_demo 0.5 0.0  0" - BA problem with no spurious matches
 - "./ba_demo 0.5 0.05 0" - BA problem with 5% of spurious matches
                            (this should fail!)
 - "./ba_demo 0.5 0.05 1" - BA problem with 5% of spurious matches, but
                            using a robust kernel (this should work!)

The core code of BundleAdjuster is in the method "calcFull". This method is 
rather complex because of the exploitation of its underlying sparseness.
For a more compact implementation of Levenberg-Marquardt, please refer to
"calcStructOnly" and "calcMotionOnly".

BundleAduster and GraphOptimiser are highly generic. They can be used for
various different kind of problems. For instance BundleAdjuster generalises
over different prediction functions using different kinds of transformations, 
different landmark types and different observation dimensions.
An example prediction SE3XYZ which depends of 3D rigid transformation SE3,
3D Euclidean points and 2D observation is provided in "transformations.h".
This could be seen as the default prediction for monocular bundle adjustment.
Writing a different prediction class (as a  sub-class of AbstractPrediction)
-- such as for stereo-camera SLAM or 2D range-bearing SLAM - should be 
straight-forward.