135 lines
5.2 KiB
Plaintext
135 lines
5.2 KiB
Plaintext
README - Georgia Tech Smoothing and Mapping library
|
|
---------------------------------------------------
|
|
|
|
What is GTSAM ?
|
|
|
|
GTSAM is a library of C++ classes that implement smoothing and
|
|
mapping (SAM) in robotics and vision, using factor graphs and Bayes
|
|
networks as the underlying computing paradigm rather than sparse
|
|
matrices. A set of MATLAB mex wrappers is included.
|
|
|
|
GTSAM is not (yet) open source: See COPYING & LICENSE
|
|
|
|
The code is organized according to the following directory structure:
|
|
|
|
base provides some base Math and data structures, as well as test-related utilities
|
|
geometry points, poses, tensors, etc
|
|
inference core graphical model inference such as factor graphs, junction trees, Bayes nets, Bayes trees
|
|
linear inference specialized to Gaussian linear case, GaussianFactorGraph etc...
|
|
nonlinear non-linear factor graphs and non-linear optimization
|
|
slam SLAM and visual SLAM application code
|
|
|
|
All of the above contain code and tests, and build local shared libraries that are then
|
|
bundled in a top-level shared library libgtsam.la. After this is built, you can also run
|
|
the more involved tests that test the entire library:
|
|
|
|
tests more involved tests that depend on slam
|
|
|
|
Furthermore the MATLAB wrapper generator code is run as well
|
|
|
|
wrap MATLAB wrapper generation code
|
|
gtsam.h interface file for which wrappers will be generated
|
|
toolbox MATLAB proxy classes and wrappers generated
|
|
matlab examples and tests of the above
|
|
|
|
Finally, there are some local libraries built needed in the rest of the code:
|
|
|
|
colamd COLAMD and CCOLAMD by Tim Davis needed for re-ordering
|
|
CppUnitLite unit test library
|
|
doc documentation
|
|
m4 local M4 macros
|
|
|
|
|
|
Important Installation Notes Specific to GTSAM
|
|
----------------------------------------------
|
|
|
|
1)
|
|
GTSAM requires the following libraries to be installed on your system:
|
|
- BOOST version 1.40 or greater (install through Linux repositories or MacPorts)
|
|
- BLAS, ATLAS, and LAPACK (libblas, libatlas, and liblapack in Debian/Ubuntu
|
|
repositories, on Mac these should already installed
|
|
with the OS)
|
|
|
|
2)
|
|
GTSAM uses CCOLAMD to find good variable elimination orders. You can download
|
|
it from Tim Davis's website: http://www.cise.ufl.edu/research/sparse/ccolamd/
|
|
Then, pass the following arguments (paths are just examples) to ./configure:
|
|
--with-ccolamd-inc=/usr/local/include
|
|
--with-ccolamd-lib=/usr/local/lib
|
|
|
|
3)
|
|
GTSAM makes extensive use of debug assertions, even for checking input of
|
|
the functions you will call. These assertions are disabled when NDEBUG is
|
|
defined. Thus, we strongly recommend compiling GTSAM and your own code without
|
|
this symbol during debugging.
|
|
|
|
After debugging, GTSAM will run much faster when compiled with NDEBUG defined,
|
|
so that debug checks are disabled.
|
|
|
|
Another useful debugging symbol is _GLIBCXX_DEBUG, which enables debug checks
|
|
and safe containers in the standard C++ library. We suggest testing your code
|
|
with this symbol defined, as it will make problems much easier to find.
|
|
NOTE: The native Snow Leopard g++ compiler/library contains a bug that makes
|
|
it impossible to use this symbol. The MacPorts g++ compilers work fine with it
|
|
though.
|
|
|
|
4)
|
|
Putting the above together, here are some sample ./configure commands for
|
|
compiling gtsam:
|
|
|
|
For Debugging (native Snow Leopard g++ compiler):
|
|
./configure CXXFLAGS="-fno-inline -g -Wall" \
|
|
LDFLAGS="-fno-inline -g -Wall" --enable-blas --enable-lapack \
|
|
--with-toolbox=$HOME/toolbox/
|
|
|
|
For Debugging (Linux or MacPorts g++ compilers):
|
|
./configure CXXFLAGS="-fno-inline -g -Wall -D_GLIBCXX_DEBUG" \
|
|
LDFLAGS="-fno-inline -g -Wall" --enable-blas --enable-lapack \
|
|
--with-toolbox=$HOME/toolbox/
|
|
|
|
For Performance:
|
|
./configure CXXFLAGS="-DNDEBUG -O3" LDFLAGS="-O3" --enable-blas \
|
|
--enable-lapack --with-toolbox=$HOME/toolbox/
|
|
|
|
After that (this would be for an in-source build, see next for out-of-source):
|
|
$ make
|
|
$ make check (optional, runs unit tests)
|
|
$ make install
|
|
|
|
|
|
Out-of-source build:
|
|
--------------------
|
|
The above will put object files and executables in the source directories. If you like, it is
|
|
very easy to configure the libraries to put all these in a parallel build tree so they do not
|
|
clutter the source tree. To do this, instead of running configure in the gtsam directory itself,
|
|
run it in sub-directory of choice, e.g., starting out in the main GTSAM folder:
|
|
|
|
$] mkdir build
|
|
$] cd build
|
|
$] ../configure ..... (command as above)
|
|
$] make install
|
|
|
|
|
|
Built-in Unit Tests:
|
|
--------------------
|
|
There is one more optional step in which you can invoke the unit tests included in the gtsam libraries.
|
|
$] make check
|
|
By verifying all the test results are positive, you can make sure that the functionalities of the GTSAM
|
|
libraries are correct.
|
|
|
|
|
|
Compile Matlab Toolbox:
|
|
-----------------------
|
|
1) Start Matlab
|
|
2) Go to File->Set Path and add the toolbox directory where you installed the
|
|
GTSAM Matlab Toolbox
|
|
3) Change your current directory to the GTSAM Matlab Toolbox
|
|
4) Type 'make_gtsam' at the Command Window
|
|
|
|
|
|
Run Matlab Unit Tests:
|
|
-----------------------
|
|
In the matlab command window, change directory to $gtsam/matlab and then type 'run_tests', which will
|
|
invoke the matlab unit tests.
|
|
|