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

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.dev202610202203
File
gtsam_develop-4.3.2.dev202610202203-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.dev202610202203-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.dev202610202203-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.dev202610202203-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
gtsam_develop-4.3.2.dev202610202203-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.dev202610202203-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.dev202610202203-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.dev202610202203-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.dev202610202203-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.dev202610202203-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.dev202610202203-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.dev202610202203-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.0 MB

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
8e60981bf8e3b492f7b4e3c3e7e993a4a41bc917999c53de3acb68374386c46b
BLAKE2b-256 checksum
How to use checksums
7548bbecd695a298bb8ed54b9411b60f4bf95a700771488e8f433de61cd1bbbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
ed00910fdfa7cd56650944801caaa9e8a7e39b51ed93021f874fb631e6384029
BLAKE2b-256 checksum
How to use checksums
f6772ec3d93dfdb5f8465539a6478642a60904c36453ca17e231d12d611b67e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
981016f3dd0a7dc6e8f2a5ec64744f323e6c6a75924dc81d5f22359b09f9f88e
BLAKE2b-256 checksum
How to use checksums
51f36cca6c571b7d263c80b4a597526fe2c326caa1af17b7f45c518c6e007acc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
cf1db08e60decbed72b36945a308af670936caa38196ec7490ba583ddd935865
BLAKE2b-256 checksum
How to use checksums
317d27f8bc70b47f971e0e99dacc76dd49f7de4b6446a47d81e55f159f91d51e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
fb25feeec200122133d20dc874fcb9ed2a01fe1741ffe5752b849689f918e7e8
BLAKE2b-256 checksum
How to use checksums
016f064e85845f6751078e3d89b926def402725edb2505715d6366f97a438a2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
f97d0852aa6c507835f4ba68a803b0255ed8a2667ad6faf99554dd412c3f8d75
BLAKE2b-256 checksum
How to use checksums
72327caf4aaa3b9df68f16807ccb5cb9d2ea7c7c378446f7bbe8002b8626bb6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
9ca2c62d6455b412ec76f262c786251db6ac7c02e4cf227c52489e8b8cfcd943
BLAKE2b-256 checksum
How to use checksums
7ecba45d341c1bce078ffe49cebd45afe85635772b2c4ba6dbd1133591a925ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 33.5 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b6a1e85c488367af925fb07b826bd55f266f751dbc875c0c57c07edb745835e2
BLAKE2b-256 checksum
How to use checksums
1dd58664d2237dcc271c73a95470aa1f902a1d5beba395c5bfcddb2b92dfc7f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

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

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
882227186926cfa5a81a38fb3abf4799ccbb9555689e555b8cd1f5363074ca02
BLAKE2b-256 checksum
How to use checksums
183053365c0b4f41bcdd7e612e3e323de82cdf71db488c886baf728d3231f2b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
645c59deb159c3e6db83d0c6af1e689db08a55691b779507414cf8b7a7bbbdd0
BLAKE2b-256 checksum
How to use checksums
a28ed2ef1b129026b1b3923d1e53508d424cc51d8dfb4f3d515f69cedffa3e04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

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

Download URL gtsam_develop-4.3.2.dev202610202203-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
6bc2535f04dd0a4a721e4b6b4bf1e4983491d0b87f680191ac9125ea1a6de37c
BLAKE2b-256 checksum
How to use checksums
ed89ddee0f5344c45cec81e12702760fad206813a0aad895ed16802c202d5151
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 20, 2026.

Transparency log

Security for gtsam-develop 4.3.2.dev202610202203

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.

Full provenance

All 12 files in this release have been uploaded with provenance metadata.

Select from 12 files

Attestation for gtsam_develop-4.3.2.dev202610202203-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

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 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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