Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

GTSAM: Georgia Tech Smoothing and Mapping Library

C++ API Docs

GTSAM manifold optimization workflow: build a factor graph, linearize and solve in tangent spaces, retract to manifolds, and iterate to convergence.

Development branch

The develop branch contains changes intended for the next GTSAM release and may include API changes. For production use, choose the latest stable version from the GTSAM releases. Current development builds require C++17; Boost support is optional and controlled by CMake options.

What is GTSAM?

GTSAM is a C++ library that implements smoothing and mapping (SAM) in robotics and vision, using Factor Graphs and Bayes Networks as the underlying computing paradigm rather than sparse matrices.

CI Status Platform Compiler
Python CI Ubuntu 22.04, macOS 15, Windows 2022 GCC/Clang/MSVC
vcpkg Latest Windows/Ubuntu/Mac -
Build Wheels for Develop See pypi files; no Windows -

On top of the C++ library, GTSAM includes wrappers for MATLAB & Python.

Documentation

Quickstart

In the root library folder execute:

cmake -S . -B build
cmake --build build --target check  # optional, runs all unit tests
cmake --build build --target install

Prerequisites:

  • CMake 3.16 or newer
  • A compiler with C++17 support. The continuously tested toolchains are:
    • Linux: GCC 11, 13, 14, or 15 and Clang 11, 14, or 16
    • macOS: Xcode 16
    • Windows: MSVC toolset 14.40

Older C++17-capable toolchains may work but are not continuously tested.

Optional Boost prerequisite:

Boost is optional. Two CMake flags govern its use:

  • GTSAM_USE_BOOST_FEATURES=ON|OFF controls the remaining Boost-dependent features.
  • GTSAM_ENABLE_BOOST_SERIALIZATION=ON|OFF controls Boost serialization of factor graphs, factors, and related types.

Both options default to ON for ordinary CMake builds and OFF inside ROS 2 builds (colcon, or an install prefix under /opt/ros/). If either option is ON, install Boost 1.70 or newer:

  • macOS: brew install boost
  • Ubuntu: sudo apt-get install libboost-all-dev
  • Windows: use vcpkg, or see cmake/HandleBoost.cmake for manual-installation hints.

Optional prerequisites:

  • oneTBB is searched for when GTSAM_WITH_TBB=ON, which is the default. On Ubuntu, install libtbb-dev.
  • Intel oneMKL is used only when GTSAM_WITH_EIGEN_MKL=ON. See INSTALL.md for setup instructions, and benchmark your workload with and without MKL.

GTSAM 4 Compatibility

GTSAM 4 introduced Expressions, a Python toolbox, and traits that allow optimization with non-GTSAM types. Point2 and Point3 are Eigen vector aliases; their default constructors do not initialize their coefficients, so initialize them explicitly before use.

GTSAM_ALLOW_DEPRECATED_SINCE_V43 controls APIs deprecated for the GTSAM 4.3 release and defaults to ON. Disable it while migrating code to identify APIs scheduled for removal after 4.3.

Wrappers

We provide support for MATLAB and Python wrappers for GTSAM. Please refer to the linked documents for more details.

Citation

If you are using GTSAM for academic work, please use the following citation:

@software{Dellaert26zenodo_GTSAM_4_3,
  author       = {Dellaert, Frank and GTSAM Contributors},
  title        = {GTSAM 4.3.0},
  month        = sep,
  year         = 2026,
  publisher    = {Zenodo},
  version      = {4.3.0},
  doi          = {10.5281/zenodo.22866773},
  url          = {https://doi.org/10.5281/zenodo.22866773},
}

To cite the Factor Graphs for Robot Perception book, please use:

@book{factor_graphs_for_robot_perception,
    author={Frank Dellaert and Michael Kaess},
    year={2017},
    title={Factor Graphs for Robot Perception},
    publisher={Foundations and Trends in Robotics, Vol. 6},
    url={http://www.cs.cmu.edu/~kaess/pub/Dellaert17fnt.pdf}
}

If you are using the IMU preintegration scheme, please cite:

@inproceedings{Forster-RSS-15,
    author    = {Christian Forster and Luca Carlone and Frank Dellaert and Davide Scaramuzza},
    title     = {IMU Preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation},
    booktitle = {Proceedings of Robotics: Science and Systems},
    year      = {2015},
    address   = {Rome, Italy},
    month     = {July},
    doi       = {10.15607/RSS.2015.XI.006}
}

The Preintegrated IMU Factor

GTSAM includes a state of the art IMU handling scheme based on

  • Todd Lupton and Salah Sukkarieh, "Visual-Inertial-Aided Navigation for High-Dynamic Motion in Built Environments Without Initial Conditions", TRO, 28(1):61-76, 2012. [link]

Our implementation improves on this using integration on the manifold, as detailed in

  • Christian Forster, Luca Carlone, Frank Dellaert, and Davide Scaramuzza, "IMU Preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation", Robotics: Science and Systems (RSS), 2015. [link]

If you are using the factor in academic work, please cite the publications above.

In GTSAM 4 a new and more efficient implementation, based on integrating on the NavState tangent space and detailed in this document, is enabled by default. To switch to the RSS 2015 version, set the flag GTSAM_TANGENT_PREINTEGRATION to OFF.

Additional Information

There is a GTSAM users Google group for general discussion.

Read about important GTSAM concepts. A primer on GTSAM Expressions, which support efficient automatic differentiation, is available in doc/expressions.md.

See the INSTALL file for more detailed installation instructions. Our CI/CD process is detailed in workflows.md.

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.

GTSAM was developed in the lab of Frank Dellaert at the Georgia Institute of Technology, with the help of many contributors over the years, see THANKS.

Metadata

Release files for gtsam-develop 4.3.2.dev202610182229

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for gtsam-develop 4.3.2.dev202610182229
File
gtsam_develop-4.3.2.dev202610182229-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
gtsam_develop-4.3.2.dev202610182229-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
gtsam_develop-4.3.2.dev202610182229-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_develop-4.3.2.dev202610182229-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
gtsam_develop-4.3.2.dev202610182229-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
gtsam_develop-4.3.2.dev202610182229-cp313-cp313-macosx_10_15_universal2.whl CPython 3.13 CPython 3.13 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_develop-4.3.2.dev202610182229-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
gtsam_develop-4.3.2.dev202610182229-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
gtsam_develop-4.3.2.dev202610182229-cp312-cp312-macosx_10_15_universal2.whl CPython 3.12 CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_develop-4.3.2.dev202610182229-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
gtsam_develop-4.3.2.dev202610182229-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
gtsam_develop-4.3.2.dev202610182229-cp311-cp311-macosx_10_15_universal2.whl CPython 3.11 CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64) Details

Total release size: 461.2 MB

Release files / gtsam_develop-4.3.2.dev202610182229-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 34.9 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
694670fc0adaa8e1ec9ff969fcd0032acad4547c3d904b9052ebfbce19b6727f
BLAKE2b-256 checksum
How to use checksums
b8c9a6325c8d3d1346234a84e0af604f4091923acf1ef29514bf812d0a888831
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.6 MB
Tags CPython 3.14 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e865119f678dde1e763517568fb4cbd314b06cde92214de7dd5db67c3598bbef
BLAKE2b-256 checksum
How to use checksums
22f6c7c76bf76d871b43d7792e733614b8cec722dc0eec35660465357709d903
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp314-cp314-macosx_10_15_universal2.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp314-cp314-macosx_10_15_universal2.whl
Size 47.2 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
5c5a90ead7a985f5a520562312fb23efb4b99c69e4828956c3fa603d7e49a1b0
BLAKE2b-256 checksum
How to use checksums
faa7d727ab9474a40467f5029d201a54e26ac0c089ffa485651ff28bfc00d2d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 34.9 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
52346aee62d0c915c62db8406d86d9eee3b4bc5386ff083b8ac6c4bf1df5c65f
BLAKE2b-256 checksum
How to use checksums
ec10f8661c869802c2aaa88d543e9286d44f00896d52573283076a0fe06a867d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.5 MB
Tags CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dc070793e03d389610feea6f799739b590e15a74b18f574a46e7a6895d340b6f
BLAKE2b-256 checksum
How to use checksums
a32c1e5520a9408c62cee95cd1b330193251279303ed926b3ab94cec129350a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp313-cp313-macosx_10_15_universal2.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp313-cp313-macosx_10_15_universal2.whl
Size 47.2 MB
Tags CPython 3.13 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
ff7cc88239d45497dc65518c1c111009bbcebc02414a2002af18f6efd82c0f93
BLAKE2b-256 checksum
How to use checksums
a7900905117b40ac3f76aef1f74239fdbc86e8fef0104ca4ee299982d1bf942c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 34.9 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
93a9c1c7116ab55e8cd354fa8590e9bf0528f44e4a43e84394cf9c07471a719d
BLAKE2b-256 checksum
How to use checksums
98fde749071c2e27dc062746d409580fb007e40d8978b1084c7eb927a7a4a3b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.6 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
873223a6740cd9cadcf3436ff15d73bc343d0a9685687e1895896fb135645860
BLAKE2b-256 checksum
How to use checksums
e52067de8e65737bbfd07d1ac2af02bd805397b7110be6778fdc423c3feff05d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp312-cp312-macosx_10_15_universal2.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp312-cp312-macosx_10_15_universal2.whl
Size 47.2 MB
Tags CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
bdbef6f70bde444c5d7dd9336352c5354925a7294b3337ebf1f56d7a8ec2f208
BLAKE2b-256 checksum
How to use checksums
a3ef58c2a910e6c39b2f9173e58b1efdcdf60ca9e20f23d5e7e4379ae1b44f42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 34.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f650e1e2f04b26856069841b041755e0f7606f7021c1fcb4e566ee8377c5eeaf
BLAKE2b-256 checksum
How to use checksums
d811f30cf73a67649b57a8ed5b5628f5fb46f24297856d62edb87f0da4c934fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 32.9 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3c4d105900ba7b47004b2bac706f915e5e6f034deefbf1b6ceb599b8d39f52b4
BLAKE2b-256 checksum
How to use checksums
7b9921a7c72f9c6ab6155461565bcb51c9d35ed9654ea071e84fa6f9ab0ff1de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / gtsam_develop-4.3.2.dev202610182229-cp311-cp311-macosx_10_15_universal2.whl

Download URL gtsam_develop-4.3.2.dev202610182229-cp311-cp311-macosx_10_15_universal2.whl
Size 47.0 MB
Tags CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
10187c0d351239bc7c8a0d3f55113e2dcb2b50d504ef1e4938648ac1caf00e8f
BLAKE2b-256 checksum
How to use checksums
834c1745f31cec59fbad4da98ffaf206e1c37d3f5e9ace4fffc7cdc78f723d18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page