diff --git a/README b/README index 568112606..a7bd77a88 100644 --- a/README +++ b/README @@ -16,7 +16,7 @@ Directory structure: matlab MATLAB proxy classes and wrappers -Boost Depedencies: +Boost Dependencies: ------------------ The GTSAM library is based on the 'Boost C++ Libraries' which can be found here: http://www.boost.org/. diff --git a/USAGE b/USAGE new file mode 100644 index 000000000..5b80375f6 --- /dev/null +++ b/USAGE @@ -0,0 +1,66 @@ +USAGE - Georgia Tech Smoothing and Mapping library +--------------------------------------------------- + +What is this file? + + This file explains how to make use of the library for common SLAM tasks, + using a visual SLAM implementation as an example. + + +Getting Started +--------------------------------------------------- +Install: + Follow the installation instructions in the README file to build and + install gtsam, as well as running tests to ensure the library is working + properly. + +Compiling/Linking with gtsam: + The installation creates a binary "libgtsam" at the installation prefix, + and an include folder "gtsam". These are the only required includes, but + the library has also been designed to make use of XML serialization through + the Boost.serialization library, which requires the the Boost.serialization + headers and binaries to be linked. + +Examples: + To see how the library works, examine the unit tests provided. + + +Overview +--------------------------------------------------- +The gtsam library has three primary components necessary for the construction +of factor graph representation and optimization which users will need to +adapt to their particular problem. + +FactorGraph: + A factor graph contains a set of variables to solve for (i.e., robot poses, + landmark poses, etc.) and a set of constraints between these variables, which + make up factors. +Config: + A configuration is a single object containing labeled values for all of the + variables. Currently, all variables are labeled with strings, but the type + or organization of the variables can change +Factors: + A nonlinear factor expresses a constraint between variables, which in the + SLAM example, is a measurement such as a visual reading on a landmark or + odometry. + + +VSLAM Example +--------------------------------------------------- +The visual slam example shows a full implementation of a slam system. The example contains +derived versions of NonlinearFactor, NonlinearFactorGraph, and a Config, in classes +VSLAMFactor, VSLAMGraph, and VSLAMConfig, respectively. + +The clearest example of the use of the graph to find a solution is in +testVSLAMGraph. The basic process for using graphs is as follows (and can be seen in +the test): + - Create a NonlinearFactorGraph object (VSLAMGraph) + - Add factors to the graph (note the use of Boost.shared_ptr here) (VSLAMFactor) + - Create an initial configuration (VSLAMConfig) + - Create an elimination ordering of variables (this must include all variables) + - Create and initialize a NonlinearOptimizer object (Note that this is a generic + algorithm that does not need to be derived for a particular problem) + - Call optimization functions with the optimizer to optimize the graph + - Extract an updated configuration from the optimizer + + \ No newline at end of file