Go to file
Richard Roberts 0d2a9018e3 Merged sub-branch into 2.0_prep branch 2012-02-08 22:05:24 +00:00
.settings Merged simplelinear branch into trunk 2010-10-08 22:04:47 +00:00
CppUnitLite Added a variety of options to the cmake build, working on automating wrap execution/install 2012-01-31 19:59:15 +00:00
cmake Updated paths for cmake find scripts 2012-01-28 04:07:37 +00:00
doc Mathematica files -one per class- that explains specific symbolic optimizations, e.g. inlined derivatives of compound functions like project. 2012-01-08 18:08:52 +00:00
examples Merged sub-branch into 2.0_prep branch 2012-02-08 22:05:24 +00:00
gtsam Split up serialization unit tests into subdirectories to speed up 2012-02-08 21:53:02 +00:00
m4 Doxygen integration in autotools - type 'make doxygen-doc' 2011-10-03 04:01:10 +00:00
tests Merged sub-branch into 2.0_prep branch 2012-02-08 22:05:24 +00:00
wrap apply bug fixes in MATLAB wrapper shared_ptr return from trunk. All tests work now. 2012-02-06 03:29:14 +00:00
.cproject Merged sub-branch into 2.0_prep branch 2012-02-08 22:05:24 +00:00
.project Merged sub-branch into 2.0_prep branch 2012-02-08 22:05:24 +00:00
CMakeLists.txt Added flag to link against local convenience libraries for tests 2012-01-31 19:59:19 +00:00
COPYING Fixing directory structure 2009-08-21 22:23:24 +00:00
Doxyfile doxygen documentation no longer build with autotools, added makedoc.sh to build it in top-level directory 2012-01-10 22:25:12 +00:00
DoxygenLayout.xml Nick's README file updates, doxygen page layout modification 2011-10-25 03:41:40 +00:00
INSTALL Updated gtsam readme and example configure scripts 2011-05-20 15:38:00 +00:00
LGPL added LGPL license 2010-10-14 14:21:04 +00:00
LICENSE Updated Readme and Licence with details of the 3rdparty inclusions and relevant licensing details 2011-06-17 16:08:58 +00:00
Makefile.am doxygen documentation no longer build with autotools, added makedoc.sh to build it in top-level directory 2012-01-10 22:25:12 +00:00
README Nick's README file updates, doxygen page layout modification 2011-10-25 03:41:40 +00:00
THANKS adding people 2010-10-21 14:00:49 +00:00
USAGE Config -> Values 2010-10-22 23:26:16 +00:00
aminclude.am doxygen documentation no longer build with autotools, added makedoc.sh to build it in top-level directory 2012-01-10 22:25:12 +00:00
autogen.sh Fixing directory structure 2009-08-21 22:23:24 +00:00
configure.ac doxygen documentation no longer build with autotools, added makedoc.sh to build it in top-level directory 2012-01-10 22:25:12 +00:00
gtsam.h fix typo in "newDrecreaseThresholds" in NonlinearOptimizationParams 2012-02-05 23:00:57 +00:00
makedoc.sh doxygen documentation no longer build with autotools, added makedoc.sh to build it in top-level directory 2012-01-10 22:25:12 +00:00
myconfigure Updated configure flags for gtsam 2012-01-16 15:26:20 +00:00
myconfigure.ardrone ARDrone configure script 2011-11-22 18:37:58 +00:00
myconfigure.matlab Updated configure flags for gtsam 2012-01-16 15:26:20 +00:00
myconfigure.overo Changed myconfigure files 2010-11-01 17:17:42 +00:00
myconfigure.profiling Removed unnecessary commands from myconfigure scripts 2011-06-15 18:43:55 +00:00
myconfigure.timing Removed unnecessary commands from myconfigure scripts 2011-06-15 18:43:55 +00:00

README

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. 

GTSAM is not (yet) open source: See COPYING & LICENSE
Please see USAGE for an example on how to use GTSAM.

The code is organized according to the following directory structure:
 
  3rdparty    local copies of third party libraries - Eigen3 and CCOLAMD
  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
  
This library contains unchanged copies of two third party libraries, with documentation 
of licensing in LICENSE and as follows: 
  - CCOLAMD 2.73: Tim Davis' constrained column approximate minimum degree ordering library
    - http://www.cise.ufl.edu/research/sparse
    - Licenced under LGPL v2.1, provided in gtsam/3rdparty/CCOLAMD/Doc/lesser.txt
  - Eigen 3.0.3:  General C++ matrix and linear algebra library
    - Licenced under LGPL v3, provided in gtsam/3rdparty/Eigen/COPYING.LGPL
  
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, which test the entire library:  
  
  tests       more involved tests that depend on slam
  examples    Demo applications as a tutorial for using gtsam

Finally, there are some local libraries built needed in the rest of the code:

  CppUnitLite unit test library
  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)
 - Automake
 - libtool

2)
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 and makes problems much easier
to find.

NOTE:  The native Snow Leopard g++ compiler/library contains a bug that makes
it impossible to use _GLIBCXX_DEBUG.  MacPorts g++ compilers do work with it though.

NOTE:  If _GLIBCXX_DEBUG is used to compile gtsam, anything that links against
gtsam will need to be compiled with _GLIBCXX_DEBUG as well, due to the use of
header-only Eigen.  

3)
Putting the above together, here are some sample ./configure commands for
compiling gtsam:

NOTE: If checked out from SVN, before attempting to compile run the command ./autogen.sh

For Debugging (native Snow Leopard g++ compiler):
./configure CXXFLAGS="-fno-inline -g -Wall" \
    LDFLAGS="-fno-inline -g -Wall" 

For Debugging (Linux or MacPorts g++ compilers):
./configure CXXFLAGS="-fno-inline -g -Wall -D_GLIBCXX_DEBUG" \
    LDFLAGS="-fno-inline -g -Wall" 

For Performance:
./configure CXXFLAGS="-DNDEBUG -O3" LDFLAGS="-O3" 

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

if you want to install:

$] ../configure ..... (command as above)
$] make install

or if you dont want to install then you can:

$] ../configure ..... (command as above)
$] ../configure --disable-shared
$] make (or make check)

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.