Skip to content

GTSAM 4.3.0

Latest

Choose a tag to compare

@dellaert dellaert released this 18 Sep 23:49
· 11 commits to develop since this release
71a25ca

GTSAM 4.3 is a substantial release focused on faster inference, improved correctness and robustness, expanded navigation and estimation capabilities, certifiable and GPU-accelerated optimization, and a more modern developer experience.

Release 4.3 also comes with a substantially expanded MyST documentation site, including new user guides, conceptual documentation, and a growing collection of executable Python notebooks. The examples now cover geometry, SLAM, structure from motion, navigation, filtering, discrete and hybrid inference, continuous-time estimation, certifiable estimation, CUDA optimization, and more, with many notebooks runnable directly in Google Colab.

Contributors

GTSAM 4.3 reflects an unusually broad community effort. The release was driven especially strongly by @dellaert, @varunagrawal, and @ProfFan, with major sustained contributions from @talregev, @p-zach, @Gold856, @DLuminary, @jlblancoc, @jashshah999, and @akshay-krishnan. Their work spans core algorithms, correctness and performance, navigation, geometry, wrappers, documentation and examples, build and CI infrastructure, portability, and modernization of the codebase. The sections below also credit the contributors responsible for major new capabilities.

Major changes in 4.3

Modern C++ and reduced Boost dependence

GTSAM 4.3 moves to C++17 and modern Eigen versions while removing a large amount of legacy Boost usage.

Smart pointers, optionals, tuples, iterators, containers, concepts infrastructure, headers, and other internals were modernized, and code deprecated in GTSAM 4.2 was removed. Boost can now be disabled in substantially more configurations, and support for system-installed dependencies has improved considerably.

Key contributors: @dellaert, @kartikarcot, @varunagrawal, @Gold856, @jlblancoc, @mcm001, @ShuangLiu1992, @jmackay2, @ProfFan.

Faster inference and optimization

A significant amount of work in 4.3 went into making common GTSAM workloads faster. Nonlinear factor-graph error evaluation, Jacobian operations, Levenberg–Marquardt elimination, Lie-group operations, discrete inference, iSAM2 updates, IMU integration, smart factors, and several other hot paths were optimized.

A new multifrontal solver infrastructure adds scheduled and parallel elimination, bottom-up clique merging, task schedulers, parallel separator updates, TBB-based execution, and more memory-efficient parent updates. Additional work introduced matrix-free PCG, compact Schur-complement machinery for bundle adjustment, optional CHOLMOD support, and continuous benchmarking to catch performance regressions.

Key contributors: @dellaert, @ProfFan, @tzvist, @leolrg, @jashshah999, @varunagrawal.

Experimental CUDA acceleration

GTSAM 4.3 introduces experimental CUDA acceleration for both bundle adjustment and more general nonlinear optimization.

The CUDA SFM optimizer provides GPU-backed Levenberg–Marquardt for BAL-style bundle adjustment, CUDA GNC uses the GPU solver as its inner optimizer, and newer CUDA nonlinear solvers support both cuDSS and PCG backends. Python bindings are available for the CUDA LM and GNC paths.

Key contributors: @leolrg, @dellaert.

Navigation, IMU, and filtering expanded substantially

Navigation is one of the areas with the largest amount of new functionality. Highlights include exact zero-order-hold IMU integration, NavState-based Lie-group preintegration, Galilean preintegration and combined Galilean IMU factors, improved handling of sensor offsets and centripetal acceleration, and exact rotating-Earth dynamics.

The release also adds richer NavState Lie-group operations, Galilean-state formulations, EKF and invariant-EKF infrastructure, equivariant filtering and EqVIO support, improved AHRS handling, EKF reset support, gravity-aware IMU factors, and several legged-state-estimation implementations. IMU covariance conventions and residual coordinates also received substantial correctness work.

Key contributors: @dellaert, @scottiyio, @jenniferoum, @rohan-bansal, @mkielo3, @nkhedekar, @arihantb2, @DLuminary, @varunagrawal.

GNSS support became a first-class capability

GTSAM 4.3 significantly expands GNSS estimation support. New factors cover pseudorange, differential pseudorange, carrier phase, RTK double differences, PPP-style measurements, Doppler/range-rate measurements, lever arms, and GNSS/IMU coupling.

The release also adds a GlobalPositioner abstraction and correct Sagnac handling for undifferenced GNSS measurements, with follow-up fixes to the Doppler formulation.

Key contributors: @inuex35, @masoug, @kathirgounder, @mnissov, @scottiyio, @varunagrawal.

Continuous-time Gaussian processes and differentiable splines

A new continuous-time Gaussian-process framework supports white-noise-on-acceleration trajectory models, continuous-time factors, GP interpolation, trajectory factor-graph construction, Python bindings, and worked notebook examples.

GTSAM 4.3 also adds Lie-group-aware differentiable spline curves, extending continuous-time trajectory modeling beyond GP interpolation.

Key contributors: @holmesco, @dellaert.

Constrained and certifiable optimization

Constrained optimization expanded substantially, with support for LP, QP, and QCQP formulations, wrappers, examples, and improved covariance handling under constraints.

QCQP factor graphs can be lifted into optimization problems with monolithic and chordal SDP relaxations, Burer–Monteiro formulations, and recovery back to geometric states. The new certifiable module includes a Riemannian Staircase solver, MOSEK integration in Python and MATLAB, and certifiable applications including Wahba, landmark localization, and rotation-related estimation problems.

FAST-Sync initialization and Shonan certificate handling were also improved.

Key contributors: @dellaert, @yetongumich, @zhexin1904, @avinashresearch1, @ProfFan.

Robust estimation

Robust estimation gained new loss functions, broader GNC support, TLS losses including the René Vidal formulation, GNC-enabled trajectory alignment, and robust CUDA optimization.

The release also includes riSAM, a robust incremental smoothing and mapping implementation built on extensions to iSAM2.

Key contributors: @DanMcGann, @hkhanuja, @akshay-krishnan, @leolrg, @dellaert, @ProfFan.

Better incremental inference, marginalization, and covariance recovery

iSAM2 and the fixed-lag smoothers received numerous fixes and improvements, particularly around marginalization, factor removal, reintroduced variables, adaptive reordering, constrained gradients, tree statistics, timestamps, and state cleanup.

IncrementalFixedLagSmoother moved from gtsam_unstable into the stable library. Marginals and covariance recovery were substantially reworked as well, including Bayes-tree cache handling, Steiner-tree covariance queries, direct covariance recovery through GaussianBayesTree and iSAM2, preservation of joint-marginal key order, and fixes for deep-tree recursion.

Key contributors: @dellaert, @varunagrawal, @gradyrw, @ProfFan, @NewThinker-Jeffrey, @jashshah999, @Ellon, @DLuminary, @tandede, @talfeiner-mc, @admin123-abc.

Lie groups and geometry received a major overhaul

The SO(3), SE(3), and SE₂(3) exponential/logarithm machinery and Jacobians were reworked around faster and more systematic kernels. SO(3) logarithms received both accuracy and performance improvements, especially near difficult rotations.

New or substantially expanded abstractions include Galilean3, SL4, PowerLieGroup, variable-dimension product groups, generic tangent groups, extended SE_k(3) poses, and improved Similarity2/Similarity3. Geometry additions also include Sim3 trajectory alignment, spherical-camera support, fundamental and essential transfer factors, self-calibration factors, and additional QCQP lifts for geometric states.

Key contributors: @dellaert, @mkielo3, @yluo5820, @akshay-krishnan, @AlessandroFornasier, @DLuminary, @inuex35, @kathirgounder.

Hybrid and discrete inference matured considerably

The hybrid and discrete inference stack received a broad overhaul covering factors, conditionals, Bayes nets, nonlinear inference, pruning, sampling, marginalization, smoothing, relinearization, incremental inference, and Python wrapping.

TableFactor provides an efficient sparse representation for discrete factors, while DecisionTree operations, discrete elimination, k-best search, discrete-continuous smoothing and mapping, and hybrid iSAM were substantially improved. Discrete constraints were promoted to the stable API, with new sparse AllDiff support and faster generic multiplication through TableFactor.

Key contributors: @varunagrawal, @dellaert, @ProfFan, @ywkim0606, @arutkowski.

Python, MATLAB, wrappers, packaging, and build support

The Python interface received extensive attention, including broader API coverage, generated type hints, PEP 561 support, NumPy compatibility updates, newer pybind11 integration, better return policies, reduced copies across the wrapper boundary, and many new examples.

A particularly large late-release wrapper push filled gaps in navigation, iSAM2, fixed-lag smoothing, noise-model introspection, subset extraction, CustomFactor, and stub generation.

MATLAB gains CustomFactor, numerical derivatives, revamped bindings, and MOSEK SDP support. Wheel generation, Windows support, Apple Silicon builds, vcpkg integration, CMake configuration, ROS/colcon behavior, and CI reliability were also substantially improved.

Key contributors: @ProfFan, @DLuminary, @varunagrawal, @p-zach, @talregev, @Gold856, @yambati03, @mvanhorn, @zcjhao, @thatdudegrantt, @dellaert, @jlblancoc.

Important correctness and robustness improvements

This release contains substantial correctness work across core inference, marginalization, fixed-lag smoothing, iSAM2, robust objectives, noise models, geometry, IMU preintegration, Jacobians, constraints, serialization, wrappers, and numerical edge cases.

Noise-model validation was tightened, long-standing geometry and Jacobian issues were fixed, robust objective and linearization behavior was made more consistent, covariance-frame conventions were documented, Lie-group Jacobians in prior and between factors are now enabled correctly by default, and numerous memory-safety, serialization, and platform-specific bugs were addressed.

Key contributors: @dellaert, @ProfFan, @varunagrawal, @DanMcGann, @jashshah999, @DLuminary, @gradyrw, and many others.

Documentation and examples

The new MyST-based documentation substantially expands coverage of inference, SLAM, SFM, navigation, geometry, hybrid and discrete models, constrained and certifiable optimization, CUDA solvers, basis functions, marginals, continuous-time Gaussian processes, and the linear solver stack.

Examples and notebooks were reorganized by GTSAM module, with new walkthrough notebooks for wrapped APIs and dedicated examples for newer functionality such as continuous-time estimation, certifiable optimization, navigation, and CUDA solvers.

Key contributors: @p-zach, @dellaert, @CodeXTL, @Robert-Jia00129, @rohan-bansal, @holmesco, @truher, @zcjhao, and many others.

Notable (merged) PRs:

Full Changelog: 4.2.0...4.3.0