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.

Metadata

Release files for gtsam-extended 4.3a2.post202608100449

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.post202608100449
File
gtsam_extended-4.3a2.post202608100449-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.post202608100449-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 Details
gtsam_extended-4.3a2.post202608100449-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.post202608100449-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.post202608100449-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.post202608100449-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.post202608100449-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
gtsam_extended-4.3a2.post202608100449-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
gtsam_extended-4.3a2.post202608100449-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.post202608100449-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.post202608100449-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.post202608100449-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.post202608100449-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.post202608100449-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 489.0 MB

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

Download URL gtsam_extended-4.3a2.post202608100449-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 32.4 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
000753a6333a69cc9b48f49896e1458e7ec5206426c1bafbc05b6acba5c296b8
BLAKE2b-256 checksum
How to use checksums
a0cf308bce13d610800a7846994eabcd5bb9301acc3c87c1e0a47e7e0b7d3d01
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.post202608100449-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 31.2 MB
Tags CPython 3.14 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
00ea465a0a879855cbfeb8a866497a0db67d66682647fc612a78871bedab2251
BLAKE2b-256 checksum
How to use checksums
c687ebce2ac4fc50d5ad283bf345590a2a7222269ed2c2f6027b85601253486a
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.post202608100449-cp314-cp314-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp314-cp314-macosx_10_15_universal2.whl
Size 43.9 MB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
77a56af1a7bc145b74cb050322be36b980b12b1a386dd7b72a8d2b1d899cc441
BLAKE2b-256 checksum
How to use checksums
b9f9e6ff850beee5267ed4260c6b7ac89646a903bef224e0603692c07b61e03b
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.post202608100449-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 32.4 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4d22d4c65a6705112bf422165cc43dd90fed8e21da200b16416fedff0ca76780
BLAKE2b-256 checksum
How to use checksums
3128b65faea2b0ea4b36422d15950610ac6080cc4d50f75eb42528c76da2afb8
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.post202608100449-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 31.2 MB
Tags CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f46bd6a2108c6a9ebd2cfa4e19cf9796d8645a51485aff28284d4f2698976df3
BLAKE2b-256 checksum
How to use checksums
f3aef2728753cd7f3df67da768b918c921ff914bb9c79ecf72d7d2437c37c0f9
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.post202608100449-cp313-cp313-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp313-cp313-macosx_10_15_universal2.whl
Size 43.9 MB
Tags CPython 3.13 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
c72fab2893d4613de27785787e1ce1eabff1d5ce8e39cd6761f76641b051406b
BLAKE2b-256 checksum
How to use checksums
ee504a682bb664fef47fe416202cd2bb1dcb2463ca83da10a7c61687fc5019bf
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.post202608100449-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 32.4 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0ad2b58dabf71dd6bb6f30ec7b3e4dc1a2153a5045c80b09be2942c80631b076
BLAKE2b-256 checksum
How to use checksums
dc9d48f54c3cda1d949891d77587a8daa0b2b7273f9180e8306507119219fb55
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.post202608100449-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Size 31.2 MB
Tags CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
221a1cebe2f089a1833ba6248f3ecd676cf715072f4d3801a771c4c00f5ea0b7
BLAKE2b-256 checksum
How to use checksums
67e446dce4ef154006f1dd67dc2cf71f10a573cb5c6f33f820dbd0db8ea5e96a
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.post202608100449-cp312-cp312-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp312-cp312-macosx_10_15_universal2.whl
Size 43.9 MB
Tags CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
c967f4cb588b01f87b31c9f5fd1c1a57b6b2a1efc6dd546ec46f9d7a97c216f0
BLAKE2b-256 checksum
How to use checksums
92014cff7ce567709e106365f2f45607d34f6a6a4584cfcd944197a47a856e86
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.post202608100449-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 32.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2ff46f8c4eed81246d9b0931db991159b878c70b8c88909799a9123f1976e946
BLAKE2b-256 checksum
How to use checksums
2a9a309fbf3c989f9ba3d579d34806a7caa718817568d410e510600063b06e9a
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.post202608100449-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 30.9 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3f57d06760af21d1594238732c274c784f4f21936f00d9c3df47d31d7bcb171a
BLAKE2b-256 checksum
How to use checksums
53c38735c6819d19d1a5af30066845bc46b188c1c455038bd9a56e204986cbae
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.post202608100449-cp311-cp311-macosx_10_15_universal2.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp311-cp311-macosx_10_15_universal2.whl
Size 43.7 MB
Tags CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
b23dd890edb1e2bdea18db2807df67deeee9811026f6d319d2818ccced73631d
BLAKE2b-256 checksum
How to use checksums
68229a762b200f957483f08bff7accfad953be339c573ff1ff845462339ba5b1
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.post202608100449-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 30.9 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
ed7377fe2d45be0a7b843819d65c9881c9259e01b457c31fb541d2ed30e6d63d
BLAKE2b-256 checksum
How to use checksums
04b011593a6380ffa625782d37c3407910ad63bd83deaec8934bb31b027fbc61
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.post202608100449-cp310-cp310-macosx_14_0_arm64.whl

Download URL gtsam_extended-4.3a2.post202608100449-cp310-cp310-macosx_14_0_arm64.whl
Size 28.6 MB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
54ccf1e3869cbb2b7b2a80f1037d7c773ea0089685b020aa237e58866e6d1226
BLAKE2b-256 checksum
How to use checksums
667e6054d9f254f4423335b6fdb630ba6245d85d02b2c0779363b2955f0bd5d0
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