Go to file
Richard Roberts f1132359d4 Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
.settings Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
CppUnitLite Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
base Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
colamd Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
doc image with gtsam structure 2010-07-13 05:25:31 +00:00
geometry Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
inference Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
linear Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
m4 update to latest ax_blas.m4; commented ax_blas out (mac is not influenced, but linux needs a new way to check); remove obsoleted --with-blas 2010-04-21 04:15:14 +00:00
matlab Removed the ldl library and added in a configure flag --enable-ldl to pull in ldl. Currently, it's probably a bad idea to actually use ldl, however, and nothing important is effected by its absense. 2010-07-16 18:16:18 +00:00
nonlinear Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
slam Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
spqr_mini Re-organization: moving all files. 2010-07-12 07:16:31 +00:00
tests Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
wrap Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
.cproject Added dummy initialization of LieConfigs from arbitrary other LieConfigs, FusionTupleConfigs can now be created from arbitrary other FusionConfigs. 2010-08-13 19:51:04 +00:00
.project Major check-in: there are now two interchangeable implementations of VectorConfig. 2010-02-17 03:29:12 +00:00
AUTHORS Fixing directory structure 2009-08-21 22:23:24 +00:00
COPYING Fixing directory structure 2009-08-21 22:23:24 +00:00
INSTALL add some documentation 2010-01-27 05:22:17 +00:00
LICENSE Re-organization: moving all files. 2010-07-12 07:16:31 +00:00
Makefile.am Installing headers in subdirectories and converted include directives to match the subdirectory structure (also see email to frankcvs) 2010-08-19 17:23:19 +00:00
README Fix makefiles to refer to $(top_srcdir) to enable parallel build 2010-07-13 19:13:07 +00:00
THANKS Re-organization: moving all files. 2010-07-12 07:16:31 +00:00
USAGE Added USAGE file with a short tutorial 2009-11-13 14:01:51 +00:00
autogen.sh Fixing directory structure 2009-08-21 22:23:24 +00:00
config.h.in Re-organization: moving all files. 2010-07-12 07:16:31 +00:00
configure.ac Removed the ldl library and added in a configure flag --enable-ldl to pull in ldl. Currently, it's probably a bad idea to actually use ldl, however, and nothing important is effected by its absense. 2010-07-16 18:16:18 +00:00
gtsam-broken.h Newly functional build: second part of re-organization. cpp now split into inference and nonlinear. 2010-07-12 16:36:58 +00:00
gtsam.h Newly functional build: second part of re-organization. cpp now split into inference and nonlinear. 2010-07-12 16:36:58 +00:00
myconfigure Fix makefiles to refer to $(top_srcdir) to enable parallel build 2010-07-13 19:13:07 +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. 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 his 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
  ldl					LDL by Tim Davis (will probably go)
  m4					local M4 macros
  spqr_mini		Core frontal solver from SuiteSparse (will probably go as not LGPL)


Boost Dependencies:
------------------
The GTSAM library is based on the 'Boost C++ Libraries' which can be
found here: http://www.boost.org/. 
Donwload the lates version and extract Boost in any place. To this
place the compiler will be linking.

- On Linux BOOST can also be installed with a packaged manager.
- On Mac OS Mac Port can be used.

For example the Boost path could be '/opt/local/include/' on a typical
Mac system, where you should be able to find one of the header files:
/opt/local/include/boost/config.hpp 

If your boost files are on a different place change the path according
to your path.

The path to the Boost files can be set as an environmental variable in
the startup scrip. For a Bash shell the startup file is ~/.bashrc
put the following command in this file:
export BOOST_DIR=/opt/local/include/ 

Installation:
-------------
To finally install the library go into the directory where you unpacked the 
GTSAM library, run the command below for example:
$] ./configure --with-toolbox=$HOME/toolbox/ --with-boost=/opt/local/include/

where the path after --with-toolbox should point to the directory you want to have the gtsam
matlab scripts installed in.

This command will configure the makefile for compiling the GTSAM library.

The 'toolbox' flag sets the path where you want to install the GTSAM Matlab Toolbox.
You have to set it to an existing directory. After successful installation there
will be a gtsam directory with all Matlab GTSAM Toolbox files.

The 'boost' flag sets the path where you installed or copied the BOOST C++ Library.
The path has to be set to the top boost directory. In this directory there are a bunch
of folders (e.g. boost, doc, libs ....).
Set the path to this folder.
  

After configure you makefile you have to compile the library
Type:
$] make
$] make install

Parallel 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.:

$] mkdir build
$] cd build
$] ../configure --with-toolbox=$HOME/toolbox/ --with-boost=/opt/local/include/
$] 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.

The toolbox directory flag is where you want to compile the GTSAM Matlab toolbox.

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.