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.dev202608100404-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.dev202608100404-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.1 MB view details)

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

gtsam_develop-4.3a2.dev202608100404-cp314-cp314-macosx_10_15_universal2.whl (43.8 MB view details)

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

gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.1 MB view details)

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

gtsam_develop-4.3a2.dev202608100404-cp313-cp313-macosx_10_15_universal2.whl (43.8 MB view details)

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

gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.1 MB view details)

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

gtsam_develop-4.3a2.dev202608100404-cp312-cp312-macosx_10_15_universal2.whl (43.8 MB view details)

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

gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a2.dev202608100404-cp311-cp311-macosx_10_15_universal2.whl (43.6 MB view details)

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

File details

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 008bf15daf9d67ea3b3c48477fb8eeda9d098002f057efdf7744d50785ffda99
MD5 ac0f43c7be5d5339b8856a4645147915
BLAKE2b-256 ef8221f8e9ed78573dcbedbd3e8c37b233f7b7871c9d5e6f268803dd6d8496e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11069bf8ad712347f99b574cf0a22b95eebcc8db0ed84c84d4db1a18e70e4f44
MD5 890acc3de2fa3bb0169f05759c6e3ae2
BLAKE2b-256 1f973f1f779281b55fac347c0b9095e672cef3a4c33d4c94840113259e19c5fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 aae214e73b6ec25f624d65fd2b38815a563d3cfc94dbb6437e3d2e8d7df0e4ab
MD5 f0cdf8e193dfa8940979ae7b51f7ba89
BLAKE2b-256 b7ccb91a3e7736a7eda06c41b849a8a8680f21911db6e8d56edfb85ac8536ebd

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2d2e3291b339d6e8760e62953d06a6621d25da6567cb29ada1e4281fc3fd6d4a
MD5 d046871e19ec7273ffa35e58810153d9
BLAKE2b-256 9b737ad89eecf0bcdc933b679c196edbd95ec853a6337a9ad553d628d016e26e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 742ab24a8decc61fa1d22be43dbe978369b986408633425c5956328dcbdd6414
MD5 545be38d63edbed685ce08d78ee9c18a
BLAKE2b-256 1364e729494ee84b186e26f69d078fce6df6a108a65e58dfc497d25d26ac3262

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp313-cp313-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 1bd49089011d63062298c5036d8bf5f0913e05ed8752c8b5a335e7c00b6d1c54
MD5 5f4a6356889d4e944b4bbf8c2a6fbe28
BLAKE2b-256 138bacd8d7e8b9f7cba9b90bb49b7e8098dde5b5e395bde4a607ce88b2816c1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9e7103872d2f19a1414d8515c363c708e826a6d6df0de380c846fbf22c00136
MD5 a88c12c7b269a0914c9776688cc69167
BLAKE2b-256 85fa6ce287870ed62e9b40a264e35a5112a111d2bd4aaa9b3048b48435bf0efb

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 777ae2aa9f0a480b9252da832bcd38bf518ab6665ed4227ab8c5f45e81eeb0a8
MD5 ca1a611665582163c79ff73a66e8096f
BLAKE2b-256 9e344bcb79052a892d188f2411e291e5edfea59dfe49a41c91e2dd9539130849

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp312-cp312-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 9ca3e487885a77b08e7afbe1eed206452a78467b2e926ef927a9c6cdbe4f53bc
MD5 a01f5d9b5f9578efdabdbf206ac29381
BLAKE2b-256 bb65ab6081230421887437162ecdedb234e7aea50b496e4cea9830c5e1537454

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 1fe6694d9510fe8b2967c1b82dfab861f31f10071c7219c1d316c77932cf02f3
MD5 8052a815fec2b47fcdda692011f856e3
BLAKE2b-256 0712a04144c5de02115acd41d2f6880c2d78506489b73418efbad75005df6a3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 293ae630ca9b2e1725addc19b7d471446fcf3eb51bb63b53dd6bc95831828c99
MD5 29f29c7aa733458dc30c7ec737b6742f
BLAKE2b-256 e22cda67051a551f9ec60b4b45fa8d8a16b11f036140ef8601ae15fb1cdaceff

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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.dev202608100404-cp311-cp311-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608100404-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 a0fe67b31b9a189ce71b04aa1c3a078c2ca6f78216483bc71b147528d4befac4
MD5 8254f4954ce41144d98cc539e42117d6
BLAKE2b-256 39920cd7a4dc98c98c67c42e651815324b1772435deed0e586cc0aee5518626b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a2.dev202608100404-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