Go to file
Frank Dellaert 93465945e9 Large gtsam refactoring
To support faster development *and* better performance Richard and I pushed through a large refactoring of NonlinearFactors.

The following are the biggest changes:

1) NonLinearFactor1 and NonLinearFactor2 are now templated on Config, Key type, and X type, where X is the argument to the measurement function.

2) The measurement itself is no longer kept in the nonlinear factor. Instead, a derived class (see testVSLAMFactor, testNonlinearEquality, testPose3Factor etc...) has to implement a function to compute the errors, "evaluateErrors". Instead of (h(x)-z), it needs to return (z-h(x)), so Ax-b is an approximation of the error. IMPORTANT: evaluateErrors needs - if asked - *combine* the calculation of the function value h(x) and the derivatives dh(x)/dx. This was a major performance issue. To do this, boost::optional<Matrix&> arguments are provided, and tin EvaluateErrors you just  says something like

	if (H) *H = Matrix_(3,6,....);

3) We are no longer using int or strings for nonlinear factors. Instead, the preferred key type is now Symbol, defined in Key.h. This is both fast and cool: you can construct it from an int, and cast it to a strong. It also does type checking: a Symbol<Pose3,'x'> will not match a Symbol<Pose2,'x'>

4) minor: take a look at LieConfig.h: it help you avoid writing a lot of code bu automatically creating configs for a certain type. See e.g. Pose3Config.h. A "double" LieConfig is on the way - Thanks Richard and Manohar !
2010-01-13 22:25:03 +00:00
CppUnitLite fixed the compilation warnings in CppUnitLite 2010-01-06 18:59:14 +00:00
colamd Fixing directory structure 2009-08-21 22:23:24 +00:00
cpp Large gtsam refactoring 2010-01-13 22:25:03 +00:00
m4 Fixing directory structure 2009-08-21 22:23:24 +00:00
matlab Small changes 2009-12-16 19:02:40 +00:00
wrap You can now just type the name of a variable in MATLAB and press return, and it will display 2009-12-12 04:10:59 +00:00
.cproject 1) add a compose function that compose all the poses in a factor graph given the spanning tree 2010-01-12 16:12:25 +00:00
.project change no. of build processes in eclipse to 2 2010-01-08 07:51:29 +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 Fixing directory structure 2009-08-21 22:23:24 +00:00
LICENSE Fixing directory structure 2009-08-21 22:23:24 +00:00
Makefile.am Fixing directory structure 2009-08-21 22:23:24 +00:00
README Added USAGE file with a short tutorial 2009-11-13 14:01:51 +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
configure.ac Initializing libtool correctly in gtsam (see email to frankcvs with same subject) 2009-12-29 20:01:38 +00:00
myconfigure oops, when I fixed the typo I had the optimized version uncommented. 2009-12-11 05:11:14 +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

Directory structure:

  cpp	  C++ source 
  matlab  MATLAB proxy classes and wrappers


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

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.