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.dev202605082047-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605082047-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605082047-cp314-cp314-macosx_10_15_universal2.whl (42.8 MB view details)

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

gtsam_develop-4.3a1.dev202605082047-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605082047-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605082047-cp313-cp313-macosx_10_15_universal2.whl (42.7 MB view details)

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

gtsam_develop-4.3a1.dev202605082047-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605082047-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605082047-cp312-cp312-macosx_10_15_universal2.whl (42.7 MB view details)

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

gtsam_develop-4.3a1.dev202605082047-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605082047-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605082047-cp311-cp311-macosx_10_15_universal2.whl (42.5 MB view details)

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

File details

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 304ceea9cc18d0715c1d1ab46dfc71a711edcab483fd50d70aa5ccc185ad2207
MD5 37fa702c498aca7f5669779a5f19567f
BLAKE2b-256 3ce217122d639d42f564aa833d0d4b42395f169ac3e247fe02ff5fed39c23d62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 bd4ac852dd928275067408e726e10196a01390f75c5f2d9f85df41497fdbc72f
MD5 166bba211e477d07c75e36f3a17788ea
BLAKE2b-256 f7b0fab84d4efdf8c2dd222f2ad64c06199703811dd813df6c66e7e89de72049

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 fd22aae0a354e53d64dc918d8a6a45f6359d4810381ec29868d836cf2abde91a
MD5 3489a17cce8d21f8b51eb22dbd2567d9
BLAKE2b-256 fc681c1790d61641ed503fbc0e90fe1e19f46544617ac227bb3590150da45603

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c54e3b28163fb4bebb2701bf3f83ee451865ac3016b1dbdf61b39b3b9a8a3998
MD5 7ba80ca0566dc09788ca7fa1538b5e43
BLAKE2b-256 a1819263ec4bdd1e5f8c14896c734db7438541d3763e892448d862ce7471c834

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 e4220241a281ff2a57845502256d18ce738b19a963d7456f35099bab49d2ffcf
MD5 f4ca4937b4e16c52504472a335ebd171
BLAKE2b-256 a240b98151110480cf6e16946a326f34fc60e67987c1ea2c979443877773594b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 603dba93056becec5138a6cb5323d9972ccdda4933f5bea7bdd5c0004bb552fd
MD5 b920266803547a8472515c2466ad03b0
BLAKE2b-256 9f4002dac465b2b9414c161a20396c1edb920acfbbdaa111b812474f27c94bfb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d8d781ded236650cb14f90b7935d5b19e6cef9ad1e46d28b4350d93994d2de92
MD5 77fa4231bbb9285dca829dcbaa0aed2e
BLAKE2b-256 8c91123808010251edf492b28931d8e850a952f27882babdbc7987f478bceb04

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 27a5bee72d83c2900ae9f5947b741531a8db0425c884b1f1a2dbb27cc95d87d1
MD5 de221a6a7c81bdfdc14c4b27cad6e4be
BLAKE2b-256 bf706635f940f15e51478eee8bd27846260840b194a7aa7c9c1080a5c69432e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 01fc65d475e37ce8932495fd6b7b22217f6a3d219e5ae97264e0217de9f01867
MD5 0136b3eb4f2e1844c97d99275cdf2024
BLAKE2b-256 c265aed8000c2117fde2bdfd8368207fe3aee74362266becc7232d7c8f48b620

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 df4b66f6f7cced682fca4700dd1f19f38ea49ac9ed54d12f6c05eda8ce3b3cfe
MD5 10fd8dc2904ab029876d997e9d7960a8
BLAKE2b-256 53377c0c63401a989ae4760be89327ba25e9c9e42a2ff45b8bbed9d31050e8c8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 9baa3c9a99c5a11694f238e9b80ef41e3fb57a061f5c5e4040b11c6d194fd235
MD5 7401aecc44aebc38b96f1354ea331f31
BLAKE2b-256 77c22d39c1c5a56130adbf8f241ce4685df683c121274090dda58007407d81d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605082047-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 27ede4523b09855978d087a6485828b60e7d0bed51eba3f6a434963dd9c5b0d3
MD5 1f81eee2cd3f690ff470ff3370b4d59b
BLAKE2b-256 749c6d4a2c5d70a15062b5f2b653eef3c1ec2b354a63c93236711a42d5775fbf

See more details on using hashes here.

Provenance

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