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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-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.dev202608091815-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b528597e48158d0b2aa35896c752de74b6064de641e1d4a5aad70c037f23188a
MD5 a798b62f28987495ceba66d6687a2485
BLAKE2b-256 35fbc08cfbb02d901abf95eebbc1cc539874cd33a4b068965b085dc50d13d1e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4d6e4a3858945222417f55c6a68d4a307f393b759db46b6aa406cc0de639fd9
MD5 fc9772ebbb34cf4a00de7a889c5e392d
BLAKE2b-256 e6b47962e05b91a1d613aeea5c6f8cad5d646fb49cd1bc38c1c44e504764a7f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e8f7fcf38bcdcd864099beec128929781763ba558cc8bbd6071fc42456f8ea75
MD5 e19b03e6f636765ac3afe222be4a450e
BLAKE2b-256 e21970a0d51b5537c19689432eb25a4aa779186cd0edd0581b2a9a683931436f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 828987f353ab6d12d5ea0df48dde7d9ba0e41aea9e7eaece54d60b7f4c6a6595
MD5 4936f916151190374ef260821577d3bf
BLAKE2b-256 4d9d4e5fa404eac240d41cf4f2d8727189581709b62c57c5de6fe1e5f972cc70

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 337d6aeb6727f80cdc1ff1e3678c5652aa4e428c40d848e9187ea72e9f635175
MD5 6b699b3bdb26d5e263f8019c54582c5b
BLAKE2b-256 f9c8e59825199f2ad78da8437e33c9be1f70c3f59de5cb59bbebcebc453e9b6a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 4f1644c782b4a6f1bac9c5f90d4b076cdb451c5a680e12c0484dbe503d12182d
MD5 ab0d4d8c70c7a24f619d8752fd0b0423
BLAKE2b-256 3a754b467ae280fa5d14be04c0e1597339461acdf765593b4867b064099ae2df

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5be2ebb1751524cde3313ac7c3035d5a08049650964fedf2fcead4789682904e
MD5 b5efe84877648d8bd2052fdd33039334
BLAKE2b-256 1f4ad200fcbfa4c61ee552bfa545d202d97def0fc70513e50653435387371176

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 28506b09d5586759018fbde14426a9d8b138feac8ad91941f166145b12c3c2ff
MD5 d30240c62b71c1ed3e9d928f96985c13
BLAKE2b-256 74ce17dea69c1e7e4e3bda65b339ac0aaabd61fd631b0cb8a0608ee429238fea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 0f3f6da7b9cb161235727c0aa92117dae911570b3192bf8d1d9a9e368bd8fe25
MD5 166852ebead2cd2d88b607a53730a641
BLAKE2b-256 95b7aa4e95d5b7fecc9c43ca4437cc93b4e5acb88c0f3da950640a2a331dbfbd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b2314029a3e85a9a0ba6d0e59faeb98634271a36cd67b945edcc88f239f9412e
MD5 190e54a7c2cf53eb6bf0cd5bf36b3205
BLAKE2b-256 9bc79e72991ed5c71607365eaa52f1820c59b82e48c6725d88c9728d54ec81bb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 c5424b9aa4557cd43d04d1703ceeb385ebbaba0edb2c3563a771a44369e68117
MD5 bc790e4539565e4a4e35267f0e8d2c2a
BLAKE2b-256 bb302ac1a546bc6dc6c7547cf5d1483293a4423465e34c8d2faf84c4be6fad97

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608091815-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 6adcd622443bf9cc37bffd61ef072839f3293f13a951a59c2a0d1fe7388ce2f6
MD5 2195feb51f68809cd851bde8cd178b1a
BLAKE2b-256 d06e99d9a683312a69aba1ba19808358b98ad1e20dadb94a8f6e424a93893a0c

See more details on using hashes here.

Provenance

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