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.

Metadata

Release files for gtsam-extended 4.3a2.post202608130654

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for gtsam-extended 4.3a2.post202608130654
File
gtsam_extended-4.3a2.post202608130654-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
gtsam_extended-4.3a2.post202608130654-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
gtsam_extended-4.3a2.post202608130654-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_extended-4.3a2.post202608130654-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
gtsam_extended-4.3a2.post202608130654-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
gtsam_extended-4.3a2.post202608130654-cp313-cp313-macosx_10_15_universal2.whl CPython 3.13 CPython 3.13 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_extended-4.3a2.post202608130654-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
gtsam_extended-4.3a2.post202608130654-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
gtsam_extended-4.3a2.post202608130654-cp312-cp312-macosx_10_15_universal2.whl CPython 3.12 CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_extended-4.3a2.post202608130654-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
gtsam_extended-4.3a2.post202608130654-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
gtsam_extended-4.3a2.post202608130654-cp311-cp311-macosx_10_15_universal2.whl CPython 3.11 CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64) Details
gtsam_extended-4.3a2.post202608130654-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
gtsam_extended-4.3a2.post202608130654-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 506.6 MB

Release files / gtsam_extended-4.3a2.post202608130654-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 33.6 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a638f02ec7394df9c6edfb77c4335201135f5e376fd63bdeac34af72870c2661
BLAKE2b-256 checksum
How to use checksums
a266446af84a64aaa892db49e363c05f9071fba22da01092691b8795e4b69ee5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 32.3 MB
Tags CPython 3.14 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e223ba8d7b0eb39f31d6e1abd33b98eb59454f04029e7e07a407630d25690400
BLAKE2b-256 checksum
How to use checksums
1d4ea058f24968821ab1ca9002c265980013747d228557c1f9c467c7584b9da6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp314-cp314-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp314-cp314-macosx_10_15_universal2.whl
Size 45.7 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
15fedd582cd0cc0bb3f40c8008919f6189e7d1c8d68e2ca76fb0e75b9ec9f887
BLAKE2b-256 checksum
How to use checksums
5bb684fc9c1274a7eb2453909f821c863e6319da3ffc66cb518f02be483c1861
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 33.6 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
33ef19dc0325f13c87e684f509fd8c874bf213487983288ad07b89870fa76b9d
BLAKE2b-256 checksum
How to use checksums
0d1cc0316bc871015a26acbcf0a146d87a7b1599ef8c4e5d27b92eba4940aa03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 32.3 MB
Tags CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cba3b436b1e6523a9362b283aa9f0fdf8a292331748a08744b36cbdf7398996d
BLAKE2b-256 checksum
How to use checksums
42952f6c690a791f4fd727afc0a35f1eca0dc1904ad6464418f96aff8d14fd60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp313-cp313-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp313-cp313-macosx_10_15_universal2.whl
Size 45.7 MB
Tags CPython 3.13 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
22609fb4ccae3b2775794330a887806095a4c2162f21194e4bcfba5033ae6b6d
BLAKE2b-256 checksum
How to use checksums
b794341f7ff6f6d5af4ee1ddabff31aee1d28fae592e68494b555d2e526b0f6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 33.6 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c47bc9f644ab650cd156e3107e3c49d9ac0058a260f1956b7fe9d7b78f24487f
BLAKE2b-256 checksum
How to use checksums
1d61ba5ba6f2bae392f753dfbcf37a008790bf6bc1f400b1f4969562155d2f32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 32.3 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
26c6a85bb1fa5d401a45bcfe171170a4bc6c92a6e5f8c1fab4915df187a442a5
BLAKE2b-256 checksum
How to use checksums
63757ec7011ec37c808f7224a4e3b2dd41400d60051e640ba059963fd0de4bac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp312-cp312-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp312-cp312-macosx_10_15_universal2.whl
Size 45.7 MB
Tags CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
8300c91aa83f66c564a322b8b5602a39a74aff16e62d296c5456e9fa2625e64e
BLAKE2b-256 checksum
How to use checksums
bb7a2f177752658aaac6eb6505ffbb0d86bcf1d3943d9364749f363749a75247
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 33.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b9b491e868577861d26d4a8851e59c8081932c6ad47446ba69dd04df3dc176c5
BLAKE2b-256 checksum
How to use checksums
d689bb683060482687cb2c46c87990159b22354f55e667560f3564be5ffd2904
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 31.8 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
116c9c6f9feb8e0e0c8f9dd6feb2f9bdd30d02b974937e041aaf5185fb2e1a01
BLAKE2b-256 checksum
How to use checksums
0ac7560d171a00f27b574d519cefac3978237dd5d461c306b6e7ec344909e8d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp311-cp311-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp311-cp311-macosx_10_15_universal2.whl
Size 45.5 MB
Tags CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
a3ba08e8c3c19b8517c80c6ffa99d73ee4e966c327449dc86ea7778e8bd94fd0
BLAKE2b-256 checksum
How to use checksums
0a8c33d707c1d375ae6c60cfefa19d8af2d7e2ed0e1a1a8c5d395f856024de66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 31.8 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4c438a4b68eaf8bfaa78a7ab7e152e371ba2c18eb7b44218a6cd5bc6214075f3
BLAKE2b-256 checksum
How to use checksums
d8c8fc4e43c03adc86d2860a76970d679478bc448f04ccefef74c103098c12de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / gtsam_extended-4.3a2.post202608130654-cp310-cp310-macosx_14_0_arm64.whl

Download URL gtsam_extended-4.3a2.post202608130654-cp310-cp310-macosx_14_0_arm64.whl
Size 29.3 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
b5c08a2b763f5f6a29d259698b9807de42bb54fcd765437ea9728a500f6677c4
BLAKE2b-256 checksum
How to use checksums
9d6b36b6d79255bc25e2cf49cebaa14c5948a56593f085521f66c295c3e8f0ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page