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 is a manifold optimization library

Important Note

The develop branch is officially in "Pre 4.3" mode. We envision several API-breaking changes as we switch to C++17 and away from boost.

In addition, features deprecated in 4.2 will be removed. Please use the stable 4.2 release if you need those features. However, most are easily converted and can be tracked down (in 4.2) by disabling the cmake flag GTSAM_ALLOW_DEPRECATED_SINCE_V42.

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 13-14, Windows 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:

#!bash
mkdir build
cd build
cmake ..
make check  # optional, runs all unit tests
make install

Prerequisites:

  • A modern compiler:
    • Mac: at least xcode-14.2
    • Linux: at least clang-11 or gcc-9
    • Windows: at least msvc-14.2
  • CMake >= 3.16
    • Ubuntu: sudo apt-get install cmake

Optional Boost prerequisite:

Boost is now optional. Two cmake flags govern its behavior:

  • GTSAM_USE_BOOST_FEATURES = ON|OFF: some of our timers and concept checking in the tests still depend on boost.
  • GTSAM_ENABLE_BOOST_SERIALIZATION = ON|OFF: serialization of factor graphs, factors, etc still is done using boost

If one or both of these flags are ON, you need to install Boost >= 1.70 - Mac: brew install boost - Ubuntu: sudo apt-get install libboost-all-dev - Windows: We highly recommend using the vcpkg package manager. For other installation methods or troubleshooting, please see the guidance in the cmake/HandleBoost.cmake script.

Optional prerequisites - used automatically if findable by CMake:

GTSAM 4 Compatibility

GTSAM 4 introduces several new features, most notably Expressions and a Python toolbox. It also introduces traits, a C++ technique that allows optimizing with non-GTSAM types. That opens the door to retiring geometric types such as Point2 and Point3 to pure Eigen types, which we also do. A significant change which will not trigger a compile error is that zero-initializing of Point2 and Point3 is deprecated, so please be aware that this might render functions using their default constructor incorrect.

There is a flag GTSAM_ALLOW_DEPRECATED_SINCE_V43 for newly deprecated methods since the 4.3 release, which is on by default, allowing anyone to just pull version 4.3 and compile.

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{gtsam,
  author       = {Frank Dellaert and GTSAM Contributors},
  title        = {borglab/gtsam},
  month        = May,
  year         = 2022,
  publisher    = {Georgia Tech Borg Lab},
  version      = {4.2a8},
  doi          = {10.5281/zenodo.5794541},
  url          = {https://github.com/borglab/gtsam)}}
}

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:

@book{imu_preintegration,
    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},
    year={2015}
}

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

  • Luca Carlone, Zsolt Kira, Chris Beall, Vadim Indelman, and Frank Dellaert, "Eliminating conditionally independent sets in factor graphs: a unifying perspective based on smart factors", Int. Conf. on Robotics and Automation (ICRA), 2014. [link]
  • 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 here. A primer on GTSAM Expressions, which support (superfast) automatic differentiation, can be found on the GTSAM wiki on BitBucket.

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (32.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

gtsam_develop-4.3a2.dev202608102339-cp314-cp314-macosx_10_15_universal2.whl (43.9 MB view details)

Uploaded CPython 3.14macOS 10.15+ universal2 (ARM64, x86-64)

gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (32.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

gtsam_develop-4.3a2.dev202608102339-cp313-cp313-macosx_10_15_universal2.whl (43.9 MB view details)

Uploaded CPython 3.13macOS 10.15+ universal2 (ARM64, x86-64)

gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (32.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

gtsam_develop-4.3a2.dev202608102339-cp312-cp312-macosx_10_15_universal2.whl (43.9 MB view details)

Uploaded CPython 3.12macOS 10.15+ universal2 (ARM64, x86-64)

gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (32.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a2.dev202608102339-cp311-cp311-macosx_10_15_universal2.whl (43.7 MB view details)

Uploaded CPython 3.11macOS 10.15+ universal2 (ARM64, x86-64)

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fe88d5d340e21e9889eecfaa38de4a9bf1611a6e18fcf01bea4657bcc0c08340
MD5 9b996d6a63e0e3ad73d6386f8bd0fe37
BLAKE2b-256 38579d80264566f658a617372e87ba70e234b39037a1a711c3b71cee0b0a8155

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1e22bc8b4c8af21ad37e3395086adcec857352548046ab800a20bcd2c1408f63
MD5 3f71c34eebc7a804d149e4449251e478
BLAKE2b-256 e3505ee064edfdcd3cfba6c2538951b5419cf02701ac655bb6118bb91e65150b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 1df0cfb3fcbc624ca54b8896c1436a08473ec66245f4408557402885c8485c01
MD5 8b1c8381cce2be3af09110c4d8988f29
BLAKE2b-256 9b92d91d0fdc5a7e7a7320aa89dc1ce3763b3a431a12adaa45cbe46855701472

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp314-cp314-macosx_10_15_universal2.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a0fb6f2b1b90d80f5038ecfba70ea806449b690ca1c11cebeb126933ccfcda62
MD5 6859b9e6204f9403aeef0c20c2c2cd18
BLAKE2b-256 76daaa33ae14d45711b50ab7370007312203e3e51bb67031299d75f556ef3e8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 79e8220fc1b7502b7dc294d7819bb4815a39c1fa8fe315c61588537831d003be
MD5 328c2b021305be47ed51ad92b41bec11
BLAKE2b-256 f0c34bce9f9422b69aa180d888699bc22575e080209ced2759ecee351c6aa3af

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp313-cp313-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 b27e9bc558220561dd121cd37c24758d33d7b4e2612ff53b3e3382f159422365
MD5 c636f11a7446d1e5024bc2b980294985
BLAKE2b-256 68324acd8693c4d87a7396b1e067dac95b0a6f791420742f7fff5aecacc33f17

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp313-cp313-macosx_10_15_universal2.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e89647672f5ba59ef99f11d5bd787f083c8f7c6e68aa1beea12c36eec14c1dc2
MD5 9e1068362c0c5e3b92e935e2ee5ec69c
BLAKE2b-256 907b4e6d601a93a777d3fde0ee1e750983f6f61fca4200619b11a0a1dc77c085

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 519365a836f4e6c82c13592e2d390f17ba82af1612404b55d2315c9367bd2d99
MD5 4355b07643cd08386162f191a7bab313
BLAKE2b-256 119dde24636c86033977a1422dee84820d7c90ebc4f41ac4db947e4822c5cf5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp312-cp312-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 ba9d87025958ce46a556b4c1b4e49e5e8fbbe3c45f4be8961a2ff1b749a446f3
MD5 05c34e225d1b07a45392186931e00e62
BLAKE2b-256 d57a07f1ed5154cc071748283ed347cf66b5150873bbb7e60d4922eca768e9d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp312-cp312-macosx_10_15_universal2.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 34ed0a6bb6d6076631a7650a1ab1c76606e04df4eef0e7f29836547d8297f6ef
MD5 5cb69673c1ed6e277e6c4adc2e6ecf50
BLAKE2b-256 57b9ee880b2a7e881522128f50bd6c95bd8df953e591dedadd5d57365a03ffd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 65145abdbfe1100441326a1c863f1cb13a76de9ef47fc0ce3a26f41ca4441441
MD5 72650c478f4c9db581b51c60c65b40dd
BLAKE2b-256 3382db79238efae3c3e523009f0b8986421775fd3c0c5f70a3ed491c04b11187

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gtsam_develop-4.3a2.dev202608102339-cp311-cp311-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608102339-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 cd6f06f8ccca87470256209e81af629f1302559a72aaa80dce1301c21fd47193
MD5 1e4cd2b404df6e087be00310fb088f6f
BLAKE2b-256 92f706db9cc1b86dfc1705d23b8bce393f36571c95f42969aa79891cb191930c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608102339-cp311-cp311-macosx_10_15_universal2.whl:

Publisher: build-cibw.yml on borglab/gtsam

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page