Skip to main content

Georgia Tech Smoothing And Mapping library

Project description

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.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. 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.

Project details


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.3a1.dev202605181631-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605181631-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605181631-cp314-cp314-macosx_10_15_universal2.whl (43.3 MB view details)

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

gtsam_develop-4.3a1.dev202605181631-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605181631-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605181631-cp313-cp313-macosx_10_15_universal2.whl (43.3 MB view details)

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

gtsam_develop-4.3a1.dev202605181631-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605181631-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605181631-cp312-cp312-macosx_10_15_universal2.whl (43.3 MB view details)

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

gtsam_develop-4.3a1.dev202605181631-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (32.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605181631-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605181631-cp311-cp311-macosx_10_15_universal2.whl (43.1 MB view details)

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

File details

Details for the file gtsam_develop-4.3a1.dev202605181631-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 42ffc47b218769b6694ce5817b53b597ee9e83732a1033a558330fe11b9e948e
MD5 50b1dbf748c9b53591f6d37043f522ab
BLAKE2b-256 5ec706ab78096b16e233785e58197c0571ec8935a46b38b22db11b61e00e5cbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 d0fc3ec986a8ee7249747e852d85ebf6c1cc7beb2be5a14c2addbf83cf1f5090
MD5 2ddbcc4685a3fd9fb8e677ff96349fc7
BLAKE2b-256 1beb8e4b7fdda02e3908166853a944860debec5558f8d5a89198d296f88a9d9b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 d7a2bddcdbe6be883ffe312acde5ad747fbf97efa8bfca8e24c145852d045020
MD5 807cae909c122e9384682f0f8d8f03a4
BLAKE2b-256 6b2009754483ed5a88fe879c66d2c176b1e20dbabafc2e7f5a618077b497ed10

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a1.dev202605181631-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.3a1.dev202605181631-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c50a11375728d6559e17eb1b9b22a098ca3d5fe79c94feee04d5d1478e86aae7
MD5 e1f648a2381c4fb0cad6beb15ec7856a
BLAKE2b-256 895d3db70579dac7c868fb076e6132a971d1a525246af1bc9622fa54f6217941

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 e6fab95205dae15d07fdff507df22d4e4bc3b5de9365d3bdf2e09f6e3ceaa414
MD5 f54caea3d8df17eec49ed9ad695d245f
BLAKE2b-256 7102e85a84746c2cf350a45cf85d8aefab4ae8eee9d10e0c67fcbda8fd534e2f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 8ff4b450d61e876a5cf330ede7aab634fdc21392d5c3123a09a3ab89dc92fd7f
MD5 9afa9f5164d75d88d3703dbb8e303cc1
BLAKE2b-256 a5d84c15920d9f9a77ce855abb1f1cf8bc7c49be25710e19419d4f9ddd262720

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 407ec3ca7ddfdd812f8714b8fd2a68a72f2216e070017e488a3e55902459f29e
MD5 f82ab0ae22d2228b3a5a7d014c6865e2
BLAKE2b-256 b24d147633933ac5c7c548d5e3c9e0e01dcdb2eec59f4bb43ec30bfd5399a6b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 f15c382e3f04931f2828245a606e6717b320c33c8553449e32fd9ec948925454
MD5 0daa4fd15618e21898e45e8bbdefb3bc
BLAKE2b-256 a45b8c38a7a4f5d5c233db461a33f23fb37343b4d5679964ac29cc5feff6f807

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 b2966bf967d6a749d86f98cb579e2d1559a78cd3dafd53addeefb067b5e4788a
MD5 5c99331641c5272022fb78fa4b6c22b0
BLAKE2b-256 cf58eb858e987d7905fb9f000fcb716b3fe176eb003ec4bd8c67d96fd889b284

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2398ba03866ca746d413a34ea02f5eecba35e19e22911178973248eb89f2f6de
MD5 4a4f6338625beca1996c85b3471bf5f4
BLAKE2b-256 39b12a47753dc0a647fab2c11833541980cdaada8654a6843e9a061c1478e6bf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 bbfbbb092fda8b0eecfd5509ce0adc391126ad0c1415fba2bb412d7cad1f069d
MD5 17f35a5ea9c67f8fa1d825f8f9bdbce4
BLAKE2b-256 cf01d9b46317ed7a8b54b8cb94e76e9f31ca87aa849fdef7a0cc9ea9cacf3162

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605181631-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 77928024b86cb93a54ee3e962c1e15e42ca956a0e0a9adcda073e29d823be1b3
MD5 5814f9f3f7f18baf75f232b0eeeca464
BLAKE2b-256 dafc3f01645ef5008315d25b96e1325e2c1c15123e563b4bf0a4789858f3f2b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam_develop-4.3a1.dev202605181631-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 Pingdom Monitoring Sentry Error logging StatusPage Status page