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.dev202610012057

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.dev202610012057
File
gtsam_develop-4.3.2.dev202610012057-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
gtsam_develop-4.3.2.dev202610012057-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
gtsam_develop-4.3.2.dev202610012057-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.dev202610012057-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.dev202610012057-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
gtsam_develop-4.3.2.dev202610012057-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.dev202610012057-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.dev202610012057-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.dev202610012057-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.dev202610012057-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.dev202610012057-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.dev202610012057-cp311-cp311-macosx_10_15_universal2.whl CPython 3.11 CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64) Details

Total release size: 458.5 MB

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 34.6 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
34a01b03ddded1acf6e7ca40a3e99ffc4a13d7c22b7d40c7698ae1f01e057f5d
BLAKE2b-256 checksum
How to use checksums
e94c1e311caee8468bd9633f038148c61cf7ef6ea86c65c3fd59eb7ac7cd7b98
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.3 MB
Tags CPython 3.14 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
36fd53ef0f4eff766e46212a6e0ef9b0709f5c0066e298b79a52fc7935be2942
BLAKE2b-256 checksum
How to use checksums
4f2a71e4a316cc67871ce33b3a3bf94f77bdeb25f731b016e0fc44807cd909f8
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp314-cp314-macosx_10_15_universal2.whl
Size 47.0 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
7b18ee3b79eb21929a27b56d6969145a15b232d58db0d827204c62617afad912
BLAKE2b-256 checksum
How to use checksums
fc0bbec4e231afdd56e10a24d67d6b1f14a2ef0546f627b67f6682207a6c7fb1
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 34.6 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4a1e20bc97cfefa22ddbd7e383f495457974c0915983e67f5fc96fff280a31e9
BLAKE2b-256 checksum
How to use checksums
edcff80ea875a05720a82513df295cbb4def3ac828ec62a9a903f342daba4188
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.3 MB
Tags CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b4365d9c5dcae153a67c356d0a86049cf87be1a1f9de85e37acf2a527b837d59
BLAKE2b-256 checksum
How to use checksums
84943a1907b07836e7c8c6e5a4367b2b7b9b97a8a4b3b177a937d32bcb9f2a71
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp313-cp313-macosx_10_15_universal2.whl
Size 47.0 MB
Tags CPython 3.13 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
cbd8b1bb053f11c404eb34e72646d101173a9e310e09c05dc02de2ae97af340e
BLAKE2b-256 checksum
How to use checksums
d4f8e7e1395987739126b60cfe4b9735995f3747047f9e8086885f4284703bff
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 34.6 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7768be4a1e4f3e09673d1358a24c14711c39d5f6feaf2d1a09a305207fcef551
BLAKE2b-256 checksum
How to use checksums
083797a79ea8c839a2ac701522ee370c2b60e44954ce7177cb152affc4dfff7b
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.3 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f87ae47a45a2dea8a16e07767178aaf79e0091d19364541dd85e46c7044010c7
BLAKE2b-256 checksum
How to use checksums
b2cbb0e6a366d6493e71495e6a82304df6f040355f166d50790c5e9d5d894ab5
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp312-cp312-macosx_10_15_universal2.whl
Size 47.0 MB
Tags CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
15d87fa8eea7450b203bf2ef92b29fed9ed30a434b66b98f8df42a77b14a9197
BLAKE2b-256 checksum
How to use checksums
710d2896ebcb8f4e42e730ab7d21fbe7c66f788534dd36da41145004e0eeb07f
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 34.3 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
98b49c9262640f4f809c4ee60164e32663a38bbf20113bb32f7a9aeb9c06d353
BLAKE2b-256 checksum
How to use checksums
a5023d020d5ca348c9f0c6d96bc9cdd69d7a9db4c38993f55c673fc72a7fa335
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 32.7 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
b5a697c68af91d8a899becf48638d106e69622af087fd3e4bcbc29cf673ff130
BLAKE2b-256 checksum
How to use checksums
de879645ef95be0674461d97f585972f2e0a0f740bc3f0440fad89285d37f32a
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 1, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610012057-cp311-cp311-macosx_10_15_universal2.whl
Size 46.8 MB
Tags CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
02f03df1df14ffee9706b975ee4603ecccce413b87de73076720f65cfb242030
BLAKE2b-256 checksum
How to use checksums
09ab833a95d4ab130cd3421758add2c22b445239fe5f549dbc912a5523bd1a6e
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 1, 2026.

Transparency log

Release history Release notifications | RSS feed

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