Currently, when eliminating a constrained variable, EliminatePreferCholesky converts every other factors to JacobianFactor before doing the special QR factorization for constrained variables. Unfortunately, after a constrained nonlinear graph is linearized, new hessian factors from constraints, multiplied with the dual variable (-lambda*\hessian{c} terms in the Lagrangian objective function), might become negative definite, thus cannot be converted to JacobianFactors.
Following EliminateCholesky, this version of EliminatePreferCholesky for constrained var gathers all unconstrained factors into a big joint HessianFactor before converting it into a JacobianFactor to be eliminiated by QR together with the other constrained factors.
Of course, this might not solve the non-positive-definite problem entirely, because (1) the original hessian factors might be non-positive definite and (2) large strange value of lambdas might cause the joint factor non-positive definite [is this true?]. But at least, this will help in typical cases.
|
||
|---|---|---|
| .settings | ||
| CppUnitLite | ||
| cmake | ||
| doc | ||
| examples | ||
| gtsam | ||
| gtsam_unstable | ||
| matlab | ||
| package_scripts | ||
| tests | ||
| wrap | ||
| .cproject | ||
| .gitignore | ||
| .project | ||
| CMakeLists.txt | ||
| INSTALL | ||
| LICENSE | ||
| LICENSE.BSD | ||
| README.md | ||
| THANKS | ||
| USAGE | ||
| gtsam.h | ||
| gtsam_extra.cmake.in | ||
| makestats.sh | ||
| matlab.h | ||
README.md
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.
On top of the C++ library, GTSAM includes a MATLAB interface (enable GTSAM_INSTALL_MATLAB_TOOLBOX in CMake to build it). A Python interface is under development.
Quickstart
In the root library folder execute:
#!bash
$ mkdir build
$ cd build
$ cmake ..
$ make check (optional, runs unit tests)
$ make install
Prerequisites:
- Boost >= 1.43 (Ubuntu:
sudo apt-get install libboost-all-dev) - CMake >= 2.6 (Ubuntu:
sudo apt-get install cmake)
Optional prerequisites - used automatically if findable by CMake:
- Intel Threaded Building Blocks (TBB) (Ubuntu:
sudo apt-get install libtbb-dev) - Intel Math Kernel Library (MKL)
Additional Information
See the INSTALL file for more detailed installation instructions.
GTSAM is open source under the BSD license, see the LICENSE and LICENSE.BSD files.
Please see the examples/ directory and the USAGE file for examples on how to use GTSAM.