Skip to content

Releases: borglab/gtsam

Release 4.3a2

Release 4.3a2 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 04 Aug 16:07

GTSAM 4.3a2

GTSAM 4.3a2 is a substantial alpha release that expands continuous-time estimation, constrained and certifiable optimization, hybrid inference, navigation, parallel solvers, and GPU acceleration. It also brings extensive improvements to documentation, notebooks, language wrappers, build tooling, and Python wheel publishing.

The API is not stable for these new additions. Esp. the GPU acceleration and certifiable optimization are still in flux. Once those settle down, we aim to cut a 4.3 release.

Highlights

Continuous-time Gaussian processes

This release introduces a comprehensive continuous-time Gaussian-process framework based on white-noise-on-acceleration (WNOA) models. It includes continuous-time factors, trajectory interpolation, factor-graph construction, Python bindings, and worked notebooks and examples.

The new framework supports continuous-time trajectory estimation while integrating naturally with GTSAM’s nonlinear factor graphs.

Constrained, QCQP, and certifiable optimization

The constrained optimization framework now includes linear programs (LP), quadratic programs (QP), and quadratically constrained quadratic programs (QCQP), together with Python wrappers, examples, and documentation.

QCQP factor-graph conversion provides an intermediate representation for constructing monolithic and chordal semidefinite relaxations. This forms the beginning of a broader certifiable-optimization capability in GTSAM. A new certifiable module adds lifted SDP problems and a Riemannian Staircase solver, with optional MOSEK integration and wrapping.

Hybrid and discrete inference

Hybrid inference received substantial implementation, wrapping, and documentation improvements. These include expanded hybrid documentation and notebooks, improvements to hybrid factors and inference, Python wrapping for DCSAM, and cleanup of the accompanying examples.

The discrete documentation and tutorials were also expanded, including a new discrete-series example tutorial.

Parallel multifrontal inference and performance

A major body of work introduces new linear and nonlinear multifrontal solvers, parallel clique processing, bottom-up clique merging, task and priority schedulers, and TBB-based separator updates.

Related performance work improves nonlinear graph error evaluation, Jacobian-factor operations, Levenberg–Marquardt elimination, covariance recovery, ISAM2 reordering, marginal caching, and batch-factor operations.

Navigation, filtering, and GNSS

Navigation gained new equivariant filtering infrastructure, group actions, EqVIO foundations and filtering, EKF reset support, extended-pose Lie groups, and four-legged state-estimation capabilities.

GNSS support now includes pseudorange, differential pseudorange, carrier-phase, RTK double-difference, PPP, lever-arm, and GNSS/IMU coupling factors. The release also adds a GlobalPositioner and improves trajectory alignment, IMU handling, and navigation documentation.

CUDA-accelerated bundle adjustment

This release introduces an experimental CUDA SFM bundle-adjustment optimizer and CUDA-backed GNC optimization. The CUDA GNC implementation uses the CUDA SFM Levenberg–Marquardt solver as its inner optimizer and demonstrated substantial speedups over the CPU implementation.

Geometry, robustness, and covariance recovery

Geometry additions include PowerLieGroup, variable-dimension product groups, extended poses, improved SL4, Cayley-chart Jacobians for Rot3, SphericalCamera bindings, and self-calibration support.

Robust estimation gained TLS loss functions, René Vidal’s TLS formulation, broader GNC factor support, and improvements to GNC trajectory alignment. Covariance recovery now uses Steiner-tree queries integrated into GaussianBayesTree and exposed through ISAM2.

Documentation, notebooks, and wrappers

Documentation was expanded across hybrid inference, basis functions, constrained optimization, navigation, marginals, and continuous-time Gaussian processes. Numerous Python examples were migrated to standardized notebooks.

Python and MATLAB support gained new wrappers, custom-factor support, numerical derivatives, copy-free matrix views, improved return policies, broader factor coverage, and updated wrapper-generation infrastructure.

Build and packaging improvements include production PyPI publishing, Python 3.14 wheels, faster and more reliable wheel builds, improved Windows Python support, modernized CMake and vcpkg integration, and reduced Boost dependencies.

New Contributors

Comprehensive Change List

Read more

Release 4.2.2

Choose a tag to compare

@ProfFan ProfFan released this 30 Jun 07:31
35dd703

What's Changed Here

  • Cherry-picked the hybrid compilation fix (missing include) by @YoshuaNava #2483

What's Changed in 4.2.1

GTSAM 4.2.1 is a patch release on top of 4.2 focused on maintenance fixes, improved Python packaging, and release workflow updates.

Highlights

  • Fixed several ISAM2 issues and added a regression test to ensure marginal-factor updates do not grow the graph unexpectedly.
  • Improved Pose2 Python support by adding Jacobians for component extraction.
  • Updated package metadata so downstream users correctly pick up required dependencies.
  • Backported Python wheel release automation to the 4.2 maintenance line, including:
    • production wheel workflow
    • Python 3.11 through 3.14 build coverage
    • separate macOS arm64 and x86_64 wheel jobs
    • NumPy pinned to <2.0.0 for compatibility with the vendored pybind11 stack
  • Improved compatibility with modern Boost and current CMake behavior in the release build pipeline.
  • Fixed a missing include in testLinearEquality so the full check target passes cleanly on current toolchains.

Notable Changes Since 4.2

Core library and tests:

  • ISAM2 bugfixes
  • regression test for marginal-factor graph growth
  • Pose2 component Jacobians exposed in Python
  • Pose2 accessor behavior restored to the 4.2 API shape

Packaging and release engineering:

  • version bump to 4.2.1
  • updated package.xml dependency metadata
  • backported Python wheel build scripts and release workflow
  • Boost detection adjusted for newer environments while keeping Boost.Filesystem linked
  • wheel bootstrap updated to build the required Boost components
  • NumPy compatibility capped below 2.0.0

Compatibility Notes

  • Python wheels are intended for Python 3.11 to 3.14.
  • macOS wheels are now produced per architecture rather than labeled as universal2.
  • NumPy is constrained to <2.0.0 in this release line.

Full Changelog: 4.2.1...4.2.2

Release 4.2.1

Choose a tag to compare

@ProfFan ProfFan released this 29 Apr 03:39
0a070c2

What's Changed

GTSAM 4.2.1 is a patch release on top of 4.2 focused on maintenance fixes, improved Python packaging, and release workflow updates.

Highlights

  • Fixed several ISAM2 issues and added a regression test to ensure marginal-factor updates do not grow the graph unexpectedly.
  • Improved Pose2 Python support by adding Jacobians for component extraction.
  • Updated package metadata so downstream users correctly pick up required dependencies.
  • Backported Python wheel release automation to the 4.2 maintenance line, including:
    • production wheel workflow
    • Python 3.11 through 3.14 build coverage
    • separate macOS arm64 and x86_64 wheel jobs
    • NumPy pinned to <2.0.0 for compatibility with the vendored pybind11 stack
  • Improved compatibility with modern Boost and current CMake behavior in the release build pipeline.
  • Fixed a missing include in testLinearEquality so the full check target passes cleanly on current toolchains.

Notable Changes Since 4.2

Core library and tests:

  • ISAM2 bugfixes
  • regression test for marginal-factor graph growth
  • Pose2 component Jacobians exposed in Python
  • Pose2 accessor behavior restored to the 4.2 API shape

Packaging and release engineering:

  • version bump to 4.2.1
  • updated package.xml dependency metadata
  • backported Python wheel build scripts and release workflow
  • Boost detection adjusted for newer environments while keeping Boost.Filesystem linked
  • wheel bootstrap updated to build the required Boost components
  • NumPy compatibility capped below 2.0.0

Compatibility Notes

  • Python wheels are intended for Python 3.11 to 3.14.
  • macOS wheels are now produced per architecture rather than labeled as universal2.
  • NumPy is constrained to <2.0.0 in this release line.

Full Changelog: 4.2...4.2.1

Release 4.3a1

Release 4.3a1 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 19 Nov 00:53

🚀 GTSAM 4.3a1 is a major incremental release featuring:
• Significant documentation expansion and new docs site
• New Lie groups, kernels, and IMU EKF infrastructure
• Strong Hybrid, Discrete, and Navigation improvements
• Broad Python wrapping advances
• A large number of bug fixes, CI upgrades, and toolchain improvements
• We removed GeographicLib as a 3rd party vendor

🧰 Core Features & New Math
• Matrix Lie Group infrastructure (MatrixLieGroup, traits, kernels) and SO(3) kernels.
• New Lie groups: Gal3, SL4, major updates to Similarity2/3.
• ExtendedPriorFactor, ConcentratedGaussian, FrobeniusBetweenFactorNL.
• Exact Zero-Order Hold IMU integration, centripetal-accel tests, and NavState + IMU EKF.
• Gal3 IMU EKF implementation.
• Constrained optimizers added.
• Discrete-Continuous Smoothing and Mapping.
• DiscreteScenario framework.

📚 Documentation & Examples
• Major docs refresh: navigation, discrete, geometry (Cal3_S2, Cal3DS2_Base, Cal3_S2Stereo, StereoCamera), concepts, IMU EKF, Invariant EKF draft.
• New notebooks: LQR, iLQR, discrete examples, Python examples, standardized formats.
• Ported StereoVOExample (small & large), added small bearing-range example.
• Many contributions from new authors throughout.

🧩 Wrapping & Python
• Large set of wrap updates: HybridValues, HybridBayesNet/HybridConditional, Cal3DS2_Base, Gal3, SL4, Similarity2/3, more.
• Added GTSAM_USE_SYSTEM_PYBIND, updated to pybind11 3.0.1.
• Added templates for IMU backend selection (no compiler flags).
• Improved custom wrapper extension instructions.
• Fixed python wheel building.

🔧 Bug Fixes & Cleanup
• Removed static identity matrices in LAGO (memory-safety fix).
• Fixed memory bugs in Hybrid tests.
• Fixed constructor reset issues, bias handling, IMU factors example, preintMeasCov reset.
• Many compile-warning cleanups across GCC/Clang/MSVC.
• Fixed shadowed operators, size_t misuse for Key, Eigen5 compatibility, and misc timing issues.
• Removed obsolete fields in Cal3, dimensional cleanup.
• Numerous link and doc fixes (Pose2 docs, README, notebooks).
• Eliminated outdated brew taps, cephes linking issues, and boosted robustness of discrete modules.

🏗️ CI, Build, and Tooling
• Massive CI overhaul: vcpkg improvements, sccache for Windows, Docker-based CI, faster pipelines.
• Added vcpkg CI, fixed macOS build, improved cache, reinstated eigen3.
• Windows: /permissive- enabled, excluded flaky tests, fixed single-exe linking.
• Removed dependency on Boost in ROS package.xml.
• Introduced QP tests without Boost.
• Better timing with TBB and GCC fixes.
• Added logs-on-failure, fixed merge CI, updated INSTALL docs.

Full change list

Read more

4.3a0

4.3a0 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 19 May 13:44
3ad4b4c

GTSAM 4.3a0 is a significant pre-release, packed with major modernizations, new features, and numerous improvements. This alpha release incorporates over 2k commits since GTSAM 4.2.

Key Highlights:

  • C++17 Standard & Boost Removal: GTSAM now requires C++17. A monumental effort has been made to remove Boost dependencies throughout the library, replacing them with C++17 standard library features or internal implementations. This was a large collaborative effort, with major contributions from @kartikarcot and @varunagrawal.
  • Hybrid Inference Overhaul: Substantial enhancements to hybrid (discrete-continuous) inference capabilities, including new factors, improved elimination, and API refinements, primarily driven by @varunagrawal.
  • Discrete Factor & Inference Improvements: Introduction of the TableFactor (by @ywkim0606) for sparse discrete factors, along with significant optimizations to DecisionTreeFactor and discrete elimination strategies (led by @varunagrawal).
  • Python Wrapper Enhancements: The Python bindings have seen extensive updates, including the generation of type hint stub files (.pyi) for better IDE support and the adoption of cibuildwheel for building and distributing Python wheels (thanks to @varunagrawal, @ProfFan, @p-zach, @yambati03).
  • Eigen 3.4.0 Upgrade: The core linear algebra library Eigen has been updated to version 3.4.0.
  • ISAM2 Fixes: Important fixes related to ISAM2 marginalization and updates (by @gradyrw, @ProfFan, @varunagrawal).

Other Notable Changes:

  • New Factors & Capabilities: Including support for fisheye camera models (@kkelchte), BATA translation averaging for SfM (@akshay-krishnan), fundamental matrix factors, the Galilean3 Lie group (@mkielo3), and GPS factors with lever-arm correction (@mnissov), and making NavState into a fully fledged $SE_2(3)$.
  • Navigation & Filtering: Significant improvements to AHRS, new (Invariant) EKF examples, and more accurate Lie group Jacobians (contributions from @andre-michelin, @mkielo3, @BrettRD).
  • Build System & CI: Numerous modernizations to CMake, improved TBB handling, and more robust CI pipelines across platforms (many contributors including @varunagrawal, @jlblancoc, @talregev).
  • Documentation Revamp: Migration to a new MyST-based documentation site with improved content and structure, plus automated docstring generation for Python (led by @p-zach).

We are excited for the community to try it out and surface issues to be fixed in new pre-releases soon, leading up to 4.3 main release!

New Contributors

Full Changelog: 4.2...4.3a0

Release 4.2

Choose a tag to compare

@dellaert dellaert released this 04 Sep 02:41
4f66a49

This is the long-awaited release 4.2. Develop has been in pre-4.3 for a while now, but 4.2 kept evolving alongside it (mostly with cherry-picks) as roboticsbook.org uses it and we wanted to wait another semester of teaching it to make sure it was very stable.

The biggest changes are:

  • hybrid factor graph inference
  • much more extensive python and Matlab wrappers
  • Shonan averaging

GTSAM 4.2 can be used from python using pip install gtsam. All available wheels can be found on pypi.

Detailed changes below:

What's Changed (Since 4.1.1)

What's Changed (Since 4.2a1)

What's Changed (Since 4.2a2)

What's Changed (Since 4.2a3)

What's Changed (Since 4.2a4)

What's Changed (Since 4.2a5)

What's Changed (Since 4.2a6)

Read more

Release 4.2a9

Release 4.2a9 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 30 Jan 02:04

This is hopefully the last 4.2 pre-release. I had planned to cut 4.2 this weekend but there were still apparently some issues with the wrapper when used in Georgia tech's CS 3630 course (325 students using GTSAM) and so I'd rather wait another week for these things to settle down. In the meantime, though, we needed a pre-release so %pip install gtbook works on Google Colab and installs 4.2a9 in the process. All works now, as evidenced at roboticsbook.org.

The biggest changes are:

  • moved away from boost utilities to c++ initializers in all tests and examples.
  • a cleaned up and correctly working hybrid inference framework. Thanks @varunagrawal and @ProfFan !
  • template-magical NoiseModelFactorN which allows an arbitrary number of variables connected to factors. Thanks @gchenfc !
  • several important bug-fixes and edits, by many new contributors, listed below:

New Contributors

Detailed Changes

Full Changelog: 4.2a8...4.2a9

4.2a8

4.2a8 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 30 Nov 16:34
9902ccc

What's Changed

  • Lots of development in hybrid, still WIP
  • some changes for GTSFM
  • Lots of bug fixes, esp. in MATLAB wrapper
  • Work on IMU factor

New Contributors

Thanks to our many new contributors!

Detailed Changes

Full Changelog: 4.2a7...4.2a8

4.2a7

4.2a7 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 13 May 21:30

Many new changes since April 08.

Many thanks to contributors @varunagrawal, @shteren1, @ProfFan, @d-vo, @magicbycalvin, @gchenfc, @jlblancoc, @johnwlambert, @senselessDev, @akshay-krishnan !!!!

What's Changed

New Contributors

Full Changelog: 4.2a6...4.2a7

4.2a6

4.2a6 Pre-release
Pre-release

Choose a tag to compare

@dellaert dellaert released this 08 Apr 17:30

A bit of a bigger pre-release since development of book slowed a bit.

What's Changed

New Contributors

Full Changelog: 4.2a5...4.2a6