GTSAM 2.3.0 Changes (from 2.2.0)
We are pleased to announce GTSAM 2.3.0! Notable changes from 2.2.0 include:
- Added a basic IMU (inertial navigation) factor for estimating 6-dof pose, translational velocity, and IMU/gyro bias (supports both time-varying and constant bias).
- Added an "equivalent summarized" IMU factor with the same capabilities as the basic one, but that precomputes a summary of a large number of IMU measurements to allow for efficient relinearization (following Lupton and Sukkarieh in TRO 2012). Currently uses numerical derivatives, but an update to be released shortly as part of GTSAM 2.3.1 will use analytic derivatives for improved computational efficiency.
- New feature - basic "summarization" of nonlinear systems - Given an existing nonlinear graph and a linearization point, summarization creates a new nonlinear system on a specified subset of variables in the graph. The summarization is obtained by marginalizing out other variables in the linearized system. This new summarized graph can be added back into a nonlinear graph under a linearization assumption.
- Major speed improvements in iSAM2 when dealing with many, >50,000, variables (e.g. very long chains), by improved handling of variable lookups.
- Several new utility factors:
- LinearContainerFactor for adding linear factors to a nonlinear factor graph, with optional approximate relinearization.
- PoseRotationPrior as a shortcut for a prior on only the rotation of a pose (e.g. for orientation sensors).
- PoseTranslationPrior as a shortcut for a prior on only the translation portion of a pose (e.g. for position sensors like GPS).
- ReferenceFrameFactor: Three-variable factor that specifies equality between a variable in two reference frames, while simultaneously optimizing for the reference frame variable (useful for simultaneously optimizing platform poses and sensor extrinsic calibration).
- Build system improvements:
- Generate and install config.h containing the GTSAM_USE_QUATERNIONS flag.
- CMake option to use an external (instead of bundled) Eigen package to improve compatibility for packages linking against GTSAM and separately against Eigen (e.g. when using ROS).
- Can now build shared (DLL) instead of static GTSAM library on Windows.
- Building only the shared GTSAM library by default on all platforms. NOTE that if your project was previously linking against the static GTSAM library, you will now have to either link against the shared library (gtsam-shared CMake target) or enable building the static library (enable GTSAM_BUILD_STATIC_LIBRARY and optionall disable GTSAM_BUILD_SHARED_LIBRARY).
Older change lists: