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-4.3a2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (32.3 MB view details)

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

gtsam-4.3a2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.0 MB view details)

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

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

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

gtsam-4.3a2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (32.3 MB view details)

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

gtsam-4.3a2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.0 MB view details)

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

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

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

gtsam-4.3a2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (32.3 MB view details)

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

gtsam-4.3a2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (31.0 MB view details)

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

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

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

gtsam-4.3a2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (32.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam-4.3a2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam-4.3a2-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-4.3a2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 847b4a057d29ef68601f9c3883c834b27e80cb6c18aacefea3fea4e7713dadfb
MD5 e693fc560f08903cb0f47ff1de3b08e5
BLAKE2b-256 2c6a10a41f46cf740886b072b44473e71f8d6862019063d6f4a3f5732c445efb

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7e238e3b6a436fea405ab600e0dc918f987d632858fa0a7e650513a85f51ece8
MD5 04bb7afcfa639c44392d587fb33c7e69
BLAKE2b-256 2667fa26deb2c978adfb984d090055ceb8e4ed5f224087742a2cbd9bac9d964c

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 775c95dfe2d0ab6002292742d1f5beea66803c89c93c06ae3bef119d5039df8b
MD5 9106fc01aa278535deb74bbadceb9d54
BLAKE2b-256 ff53632dbe60452e1664d6419581282d646820340712ddc0a480ba1cdaba1029

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7dae8a1f99fd040cf667550dfa05bcf8295f01cd0f47cb2bd6082109c725bd0b
MD5 b9fce2b00f1f0082a6e74f2dbc4ad23e
BLAKE2b-256 74b85697a88e556a9821fad09ab193cc4006f23549bd69cfab60379290eecdc3

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8e435b4e385fde110c99bbc568fe153170f35b70922b916480562bf14e36a49b
MD5 f6fc904f320b9dcfb16011d74d86a1b5
BLAKE2b-256 2aff7a62d5a5eebb36fb295d6837c4a9ffa44a87f3f8fd1cc5d96e27141c749d

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp313-cp313-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 d678d6a69eea8f3575beec899b9fd825cb385e2916817078b486bf123375dd81
MD5 a263442239dba180e846a6a96817744d
BLAKE2b-256 9e78bc5535fbc29358ec1eeca59be8f248c203fc92f9ce8720c2af3da5a406f4

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b251ab73a6458ecc11d375716a27ca920cca92a649e4535d897a8d85be79ac05
MD5 eab7a9f1c5b2269ae862c092baa76602
BLAKE2b-256 d1e5c99fa5540d6be8839978543e047c786922a9b22d67b697c2bb1539bb7786

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fa41a8256cb56fa6426800a08b0aea674f0831aee026091679643c62bd7635c3
MD5 f88b77923dc6af03fe0c4c54624db645
BLAKE2b-256 96941fb68a66fc5833337ce0e0f1c871386581599d803f848a66a20ecc17adae

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp312-cp312-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 8d5d3e58a9ab2e9bba782efa18cfdb162210b93b270606353b2a3e119154dd03
MD5 fcf5cdb6bf816011825097392b3e80cb
BLAKE2b-256 339f13519a77597a50813749f330f6f06e2abebe9b93bcd95eb390b04b6d3dce

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 8bce5e4172dc873e4d1fd24bb7a2873afff0d66db1df7dea044e943e95b21ff9
MD5 3457bb17d99d93ca93c5ebff314bfc74
BLAKE2b-256 9cccf6c7df3d2346951a035b41f5febc0b2134a22648cab5080285021297554a

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 b8792630ef62b820a0b8b8c3ba8578d0f0fce63d8f4ee6c67b65c04ffe3ec886
MD5 0662d0f71374c0854dba666481d800fd
BLAKE2b-256 6366be5a68efe00402852e5274c9741ef438d7d3df47031d64e47e158adb57b5

See more details on using hashes here.

Provenance

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

Publisher: prod-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-4.3a2-cp311-cp311-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam-4.3a2-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 66633294b5a5ff7f59a02867a05a4f0e4b9192dc65e0e4079d5b3a032b3acdff
MD5 6173c3c56594d63eefb6a72f04576970
BLAKE2b-256 41be3a4587ccc2f5dda0cc6f9ff127352b3a234854db56ee00ed60b1ce8f478b

See more details on using hashes here.

Provenance

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

Publisher: prod-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 Pingdom Monitoring Sentry Error logging StatusPage Status page