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

Important Note

As of January 2023, 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.9
    • 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.

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.3a1-cp313-cp313-manylinux_2_28_x86_64.whl (28.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

gtsam-4.3a1-cp313-cp313-manylinux_2_28_aarch64.whl (27.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

gtsam-4.3a1-cp313-cp313-macosx_11_0_arm64.whl (25.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gtsam-4.3a1-cp313-cp313-macosx_10_15_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

gtsam-4.3a1-cp312-cp312-manylinux_2_28_x86_64.whl (28.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

gtsam-4.3a1-cp312-cp312-manylinux_2_28_aarch64.whl (27.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

gtsam-4.3a1-cp312-cp312-macosx_11_0_arm64.whl (25.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gtsam-4.3a1-cp312-cp312-macosx_10_15_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

gtsam-4.3a1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam-4.3a1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam-4.3a1-cp311-cp311-macosx_11_0_arm64.whl (25.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gtsam-4.3a1-cp311-cp311-macosx_10_15_x86_64.whl (27.4 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

gtsam-4.3a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

gtsam-4.3a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (27.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

gtsam-4.3a1-cp310-cp310-macosx_11_0_arm64.whl (25.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gtsam-4.3a1-cp310-cp310-macosx_10_15_x86_64.whl (27.4 MB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

Details for the file gtsam-4.3a1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d21ce07f8c0947fc024c3a87252e32cc728bf2cbfa07a79369f36721d3b54dc8
MD5 4e700a5a7e34c52737f59a2a9b422234
BLAKE2b-256 010607deaaa322035f8d4b5ecaf1f69b30dd8402d39e1415e7954344452d5fe6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp313-cp313-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.3a1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a0028eec654b219143a87c44e1580d08af6094b1ebc7afc875c93277fa0dd00e
MD5 1f7286f1064d416f35b3d714c40a4726
BLAKE2b-256 8adc50bb270ce46c4b944d77dc6847472ea16ab05fc60fe9b1f946bdcfbe7751

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp313-cp313-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.3a1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a62017e457f6ed7708ecb6335e23d316f1730c9af55aa6393cd2eaba71ae0b3c
MD5 3fa7a747b5f46cce394da053b683f744
BLAKE2b-256 42643261dc5c52d830d78ffeb8f2717262099db74bfa99d0e76928474f35c35d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp313-cp313-macosx_11_0_arm64.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.3a1-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6fd83a06b60a069b77422f2eb2a846a85fff0af5c65bf84cf75f131a295f962f
MD5 d6bde76d02c8f0508d1b07a2d7fb7cc0
BLAKE2b-256 820df8f0c716ac7a7b3127d37bf14e049527fcda0997b7f4ca1aa3f4c43aa4d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp313-cp313-macosx_10_15_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.3a1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee5eca37a5736a125541f0c619c4a03483cae04f22d676ecbd258bfe302fee34
MD5 d9a8854b306638040c026c5bb9fc3b13
BLAKE2b-256 52dcd408139a67c548e263c00a5eeb5cdb73d97823214e2f34778f887bed6f35

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp312-cp312-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.3a1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d8991f722d75177133fe391874515313c0e48b50e0d2be874272a2920eb9722c
MD5 914b9f06e5de04c587946af4ee7c6719
BLAKE2b-256 c1b4cf0add807d60090e9f79a32a0222acfaf05ec180268f3dc0a98cc3feb3f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp312-cp312-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.3a1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 671e72ac67e1cc5565c4ef0445a5e02a76c64aeddf20ee98a55da62dd5612f3f
MD5 bd1feb62f5d3c1492b8503ad05238990
BLAKE2b-256 b4a45543420a97bf680a1f72ebf101062a9dfa3856cd1293178eb907801b67bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp312-cp312-macosx_11_0_arm64.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.3a1-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 422ee0933bcbb77a3143afddb54edbd8a28a5049021af85a9cf847e7d39224d9
MD5 670b5f5b854d8955e1ae3ca8282f9c7a
BLAKE2b-256 41051714c12f46c63378884562ea36be736c989e7216c5dc02b020b150d85ba8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp312-cp312-macosx_10_15_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.3a1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4272c32bafdfb8932acc2e5a2da236c4a39ceeae2b54e44c65d3f6a09b3f31e3
MD5 f98926f6e7f64e9cb8ac84064ac6f991
BLAKE2b-256 ddb07abf8783c5cca38b66999fd8852c532d3cdb26d6e6e9f9bfac5fd481f8fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-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.3a1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 bf45cd3dce9dcc1ef7c056e2865cc21c8bf5bb83513bca8e009ca2698501b62e
MD5 74bf5c3c1ddf97db3c24f16e4ad6416a
BLAKE2b-256 5316584756f356cd1754593ca310b5574dd60d434f9a42565e42e139003b36e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-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.3a1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 851cc97d72e7a25930830dae50b8b99d8de5079b3419685f613ff5f2c8e8b5ad
MD5 424782038f354af6c455358f60970f45
BLAKE2b-256 2c3b381ff6bac555c8f67e47490d851e90e30cf98189d092df2968b8801a4b78

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp311-cp311-macosx_11_0_arm64.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.3a1-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 161c1fc138714140544f2109ef31c32b06bbee149b6d142b04863d1f0e806157
MD5 5174c3142996029c61d59b0c63e91e98
BLAKE2b-256 cadd44f01c10ec548c218b1a7f285fcc7e07d97aa8f10e7cd4e76ba387d0890b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp311-cp311-macosx_10_15_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.3a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d627794fca38f830f7dba10d65826545c0df5ec547a1c1120e2a7f2ad11b0a24
MD5 3e76cb3b9b23f225af1e2d327b9f29b4
BLAKE2b-256 3377b9347f6d808e1b4b6450328bbbe555291002ba95c8470a60391a28be297b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_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.3a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f883d2e228899837bb1cef4783c14620395c29605a259dc366944c67ee38c13a
MD5 a0e53193e4120fd4ca5d456e6825da9b
BLAKE2b-256 c2c0b950c7751ce78756557f8986b241f106b6148d19c8df2dba98e5a18d397c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_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.3a1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b4706942e7be469482ad73c4ca62c1052426d4df699e846a5d3aff755811938
MD5 c208cc32f9234947e0203badf67943c3
BLAKE2b-256 fdd4c1f55f91ce61a0f85ef70804b7fdd8aa5e011efdfcf6750cde85ef59ac4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp310-cp310-macosx_11_0_arm64.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.3a1-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.3a1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 517e7b0e2dfc33103ff14010f4b895dbea6837772eb7966a0686ff216bc74ece
MD5 30d11e8eaa59dfc7de04df97392baf1f
BLAKE2b-256 e61cccc3be8c59d27f1a41587fcbf217c09ea03ba74d462baa2ae938f98fe590

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.3a1-cp310-cp310-macosx_10_15_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.

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