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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605250243-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.dev202605250243-cp314-cp314-macosx_10_15_universal2.whl (43.2 MB view details)

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

gtsam_develop-4.3a1.dev202605250243-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605250243-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.dev202605250243-cp313-cp313-macosx_10_15_universal2.whl (43.2 MB view details)

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

gtsam_develop-4.3a1.dev202605250243-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605250243-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.dev202605250243-cp312-cp312-macosx_10_15_universal2.whl (43.2 MB view details)

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

gtsam_develop-4.3a1.dev202605250243-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605250243-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.dev202605250243-cp311-cp311-macosx_10_15_universal2.whl (43.0 MB view details)

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

File details

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c9a1e89f507777d21797213a0811b2e17d348b9d10cbac3758b75a62a7630c65
MD5 b22a6bccfd9e59e405edb732d0511d96
BLAKE2b-256 ba58aa4501a7ced813212819041a05b63a2c34291190111acad45f0e364a88cc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 0d39ecf258b7483b7f5ab4c79c6ab36ac8a0f0508cf64cfb6f295592291e785a
MD5 7e66d8dec211fe0d49655845f0580554
BLAKE2b-256 3ccc8799287710d1541937e0a444e7c4cfba5e77329d23de9bd9f30dde09649e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 1248694bdc7d1eafdcc48484573f137245bb21493a338e5be72d0e50fc17c813
MD5 12c68c83f439a0dc934b1f828a477f17
BLAKE2b-256 9d0e4d102b7f1e28e4bcbf871dc40c89bc64c6e0c5502f7fa00910d2bcee9a1c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5c1d3029ed72b751f4a43a73f2c3d77f3c94cc653e6a65611425da47061fa9c1
MD5 bea685a2d0936f5de5e27a5b44550d61
BLAKE2b-256 12b43cfb99b59fa2c5ccbabeafb4b08de83a6d1a939afc2be220a993d155c6b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 ed12f2d921726e44d8e2ded864db85db564cc01e207227eb360298a20eb2f773
MD5 8a38147c8330680a958e95e0360d60e7
BLAKE2b-256 19a63028329dd7b7b17dabc73b0bd128485fbd4b51c12caa2300b7b62ef69776

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 fb2b10a6cbfe7cfcea4b0f7ac525e0d1fa9ed5481b4cb91f4662c9c5029cfad8
MD5 6163cc4d2fe85fec638b0d391f554f5c
BLAKE2b-256 9e96591396077d0c2b3c10b51484e859ff95d54162b8ce6c08e5f5a7b490f24a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c05e701e82a94c508fd1b8f282f6604ace12f71c8d5c110239755d9d144044cf
MD5 65777c46fc39b3de8cd4d65c26c1d940
BLAKE2b-256 8c66365ba52e631abb73c0a74c9bfc87c5b53e7e4a4c5124e0d2dbc03fad25f6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 4a3ca5e8bf1a578f4dcafba7cc5d31209be40fd84d4fc8a24b8e0cef0c16a37a
MD5 d9e715a86cebb93a15582a6aaf1d80ad
BLAKE2b-256 4a8c33fc905544f7aa30f33dac937f9b5120e19040f0bdad67a4745f8a803693

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 df8da4bb479a540151132c432a0e1b3c745767e8147db625d4ebba05bd2f3939
MD5 96f79b44ea9d445c2fe0169235ad21f6
BLAKE2b-256 43fe3d6ec2a503773e5b9d62c3a07d580167c91e26432bd2dcfc1206e7ffd12e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f47ad4707a87d843fa3f47d8f5b44015954f8ee8a560e7ccdc4634b40eae4f09
MD5 9cd8c007a9bac20cb85bb27c394757b3
BLAKE2b-256 7f89e50fe4629119f7465124f0da1e6962217e8f801249d919c53e4cd5a836d9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 13a20b6512386f96cabeed6bf883d263f89c8972f1e52732864726533bb2ddeb
MD5 d956d7f66a4f9740ae51b6e92a66dd4f
BLAKE2b-256 d2931354ede21478746ef0f6ecd0b54009cfdf325dc7bfe41135ffa191a86c0e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605250243-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 94aa918259acc6462143b9dffdde3a98569eccb899bc57e1c7b2f0aa5bae89db
MD5 21cf8109d7b752db45b6d251831b7ddb
BLAKE2b-256 5009ef25dc2087fb8ac50ac882c0a1ea10457583e2e0952aa29726db5a1662f0

See more details on using hashes here.

Provenance

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