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 manifold optimization workflow: build a factor graph, linearize and solve in tangent spaces, retract to manifolds, and iterate to convergence.

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.dev202608130219-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.6 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.3 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp314-cp314-macosx_10_15_universal2.whl (45.7 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.6 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.3 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp313-cp313-macosx_10_15_universal2.whl (45.6 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.6 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.3 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp312-cp312-macosx_10_15_universal2.whl (45.6 MB view details)

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

gtsam_develop-4.3a2.dev202608130219-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (33.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a2.dev202608130219-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (31.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a2.dev202608130219-cp311-cp311-macosx_10_15_universal2.whl (45.4 MB view details)

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

File details

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 477049ff60b880df9fb28267df859902184d68ceb70e55be59d3e435e44e0dad
MD5 be1ff09d148db250207bd54eae430a69
BLAKE2b-256 390b48e701fa8aeab43865bcc61dc22f34cdf611d11d152bc035a30e3097039a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 758a26c8f94260772bd521a5d7977801b90bc7777ef0ba31a3595effb49ba52a
MD5 e7b8597c395adeb0518fa1143e7aebc4
BLAKE2b-256 091fd53f3517b3d8619995eaa6268a6ee57b4781fe98f80322c525494993dbc1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 a8cb84881ee2b1400c602a0a4a5d5167cba3ef6b319c98ffdf01af75c5caa70e
MD5 fb401d96d912149a3e1d908812ea9ab7
BLAKE2b-256 be10aa6c3c6706deda55a13e587cc0f6ed33d591103320a028a641b80088194d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d96dd935c2e1f354132f0cf825e8297a8ea62e088f8a178d8d6b5dd48a0682d5
MD5 9e473ac88b9cac01f2d92fb3ab24767e
BLAKE2b-256 f7f3c9bb83d7b1fc2d2e21fc503eafb1718c1787de976e8bdbef6ca88503af0d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3b7fe9b49933e9d9ddeb874e3c0f7008f435e5546b075af51e0448bc6bda2a3d
MD5 a7737d271e779149d27929d87f4152e6
BLAKE2b-256 f2591739a5e0ac4c83652ff8ad3c79d633d71b25a8ea06e6123301dc325c938c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 eb3f01461d583a97d907d8120fe5e13d4ecaa0eb625b491fd3b020dd64215f59
MD5 e109fbdd4dce3e7d24824c7da0eac6a9
BLAKE2b-256 b0816d0dc6fa0dfea48e2582724fbf46fc39347eea56766e215d518cd5408865

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a0772d9c8fd27fb0cae39525bee90890adbeb4698c25cf48c20cdab547ba5cd
MD5 d806b1b37cae3bc3cb1f620130762b7c
BLAKE2b-256 a11972560bb5b50dc7e1760ac4893a63990e04cc77442fc319631a2cdd1536a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9a0a0ff71f68c4d0a8d62fb05eafa01076c8fe3fe04de6bc0fea2f2e4ca195f7
MD5 34de3b0205d406e646fcc6ce0c38be9d
BLAKE2b-256 f1eda40db72167506302d41934df9dbbdc5ea9923f28d38491f12e6b09a268d0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 6117c7c19f4605af43c8fd8a5021aea860d3b16bc0a82f73647bfd16f11a4e0d
MD5 1ef7970303fdd8bb7dbe0760812c3087
BLAKE2b-256 c46a5cf0cfab0932ea4a36a5dfe8ee71ad32a34359c17e1e57339036b2b4f5c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9751bd285e43d6050d7afe67ba66f188273dd7ca3127f80e13c264941329d922
MD5 8cb640dd1c8205b3374b21726023723e
BLAKE2b-256 bce82b61204128be24c7e5bd0e909fce83a8dce7cc62e794c63e6247698d2338

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 eb84d310004490c4068467a7b61d023a789eb051ab874e66ce58289fc01f7200
MD5 afc60b4c0c122a4804c46c2366541025
BLAKE2b-256 dccd398f0da381e3d6a3c980052cf7f585b0e9f908f68cfe130680664255123d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a2.dev202608130219-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 9e4dff0ade9d3ab587b20ded4a2ea13aa08fa94078f9d4ed85e9fba7e39998c1
MD5 fd120970af36b8c7280e4a77e6975320
BLAKE2b-256 f5311f301efb3eb67ed73bde285fc9a3725dad74db926097d1bcfa5843a29f3b

See more details on using hashes here.

Provenance

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