SLAM TOOLBOX FOR MATLAB
LATEST NEWS
Upgrade
2015/08/05: Added
Graph-SLAM using key-frames and non-linear
optimization.
Older upgrades and news
Upgrade 2012/04/22: Added support for
Omni-directional cameras for ahmPnt and eucPnt points.
From
2011/09/03 to 2011/09/08: a bug in the package released between these 5 days
caused the toolbox to completely fail. Download the
current version below.
2010/09/04: BUG FIX: Corrected
bug in code for IDP. If you just want the bug fix, click here. Toolbox versions after 2011/09/08 are
already fixed.
See the TROUBLESHOOTING section below for
some fixes related to old Matlab versions.
INTRODUCTION
We present two toolboxes sharing a number of features, but using two
radically different approaches to SLAM: EKF, and nonlinear
optimization via graphical models. They are provided for free under
the GPL license (please read the file COPYING and make sure you
agree in the terms and conditions before using them).
EKF-SLAM: The first toolbox performs 6DOF SLAM using the
classical EKF implementation. It is conceived as an
"active-search" SLAM. With points:
and with lines:
Graph-SLAM: The second toolbox substitutes the EKF by a
non-linear optimizer based on factor graphs and matrix
factorization. Currently, QR, Cholesky, and Schur factorizations
are implemented. It works with points:
USING THE TOOLBOX
Users employing the toolbox for
scientific research should cite in their scientific communications
one of the papers of the authors (especially SOLA-ETAL-IJCV-11,
SOLA-ETAL-TRO-08) appearing in the References
section of the documentation, and also acknowledging the use of
this toolbox.
DOWNLOAD AND INSTALLATION
- Read the README.txt
file in the GitHub repository for installation instructions.
- Download the 6DOF SLAM
toolbox for Matlab, using one of the GitHub facilities to do
so:
- git clone, if you have git in your machine
- zip download, if you do not have git.
- Read the pdf
doc to have an idea of the toolbox, focused on EKF-SLAM
implementation.
- Read this other
doc for a complete tutorial on GraphSLAM. See this file for the
objects organization in graphSLAM.
ADDITIONAL INFORMATION
- Please email me with
feedback, I will appreciate.
- Features - EKF:
- Full 6DOF.
- Points and lines, with many different parametrizations.
Consult the IJCV'11
paper on landmark parametrization.
- 3D graphics - highly customizable.
- Works with any number of robots and sensors.
- Monocular and stereo systems are treated alike.
- Supports extrinsic self-calibration of multi-camera rigs as
in our TRO'08
paper.
- The toolbox supports undelayed
initialization of the following landmark types:
- ahmPnt
: Anchored homogeneous
points. See video. This
parametrization performs equivalently to Inverse-depth
points in filter consistency.
- idpPnt
: Inverse-Depth points,
with conversion to Euclidean points (eucPnt)
after confirming linearity. This follows Civera's TRO-08
paper on Inverse-depth parametrization. See video. Also
called Anchored Modified-polar points (AMPP) in SOLA-IJCV'11.
- hmgPnt
: Homogeneous points.
See video.
- fhmPnt
: Framed Homogeneous
points. We follow a work by Simone
Ceriani et. al.,
2011.
- aplLin
: Anchored Plucker lines.
See video.
- idpLin
: Inverse-depth points
lines. See video.
Also called Anchored Modified-polar points lines (AMPPL) in
SOLA-IJCV'11.
- hmgLin
: Homogeneous-points lines.
See video.
- ahmLin
: Anchored
homogeneous-points lines. See video.
- Features - GraphSLAM
- Full 6DOF.
- 3D graphics - highly customizable.
- Verified to work with 1 robot, 1 image+depth sensor,
Euclidean points. Upgrades for greater generalization may come
up in the future.
- Cholesky, QR and Schur complement matrix factorizations for
the solver.
BUG FIXES
BUG (fixed in
toolbox releases after 2011/09/08): The Jacobians of the idpPnt initialization function
were incorrect. This derived in a poor performance of idpPnt points. Now, idpPnt and ahmPnt show equivalent
performance.
FIX:
follow these simple steps:
- Download this
file. Unzip it.
- Copy files idp2ahp.m and
ahp2idp.m to toolbox folder
%SLAMTB/Points/
- Copy file retroProjIdpPntFromPinHoleOnRob.m
to
toolbox
folder
%SLAMTB/Observations/
- Delete the obsolete bugged file %SLAMTB/Points/idpS2idpW.m
from the toolbox.
TROUBLESHOOTING
Expression or
statement is incorrect--possibly unbalanced (, {, or [.
In version 2009b and after, MATLAB introduced the tilde return
operator '~' to ignore unwanted return parameters and avoid
creating variables in memory that are not going to be used.
If you happen to be running this toolbox on older versions of
Matlab, you will encounter the following kind of error:
" Expression or
statement is incorrect--possibly unbalanced (, {, or [."
Your best option is to do the following:
- Run slamtb as many
times as you have errors of this kind.
- Each time,
navigate to the error line, and substitute the tilde '~' by a dummy
variable name such as tmp, unused, dummy,
or whatever you prefer.