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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-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.dev202605212028-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 fa447b46175b0f827cf44a66efabc6e34824142c87482b6ec2aebaa03ee5892e
MD5 0026b85eb849cf0e464041710d170455
BLAKE2b-256 e24676a952b711e651fd439df44bcda3bc640dae4ecff11e87017375f7f828fa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 3e5fe5b09451d1895a90cd99a8e2c913f2c9ed5cb04518672e9eef4ca90e5091
MD5 54a71bcf0b9e9d3b7af195c8b93e9acd
BLAKE2b-256 362e1f061a8b202db4494820300097e2484da8390cea57c3321deace09672178

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 072b0208d0fef2f3f38a6d2ed3a9093104ce179f2eeb8bfd352453966a87f7f4
MD5 caa6674fb3bfeb2bac46f149774a8035
BLAKE2b-256 75669712d900afd49540c48adea1bc355e0098f317c1791c07a1fd4e754b474f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7902f6ec2ffc90cfa61f898f90906441292a2a2df9bacc87de9a87c99cc1b885
MD5 3cbe241e234f31cc2a65ed49a4a3dc57
BLAKE2b-256 f3fe4090bdcf45ad662ebd0e695ec48205c5847b0b5ebcbfa253a46be24c2026

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 0bf5d1871c11f3520a3d521f3beaf2e9160ed4c770b1bca614bc03d46e5fee9a
MD5 bb25219f14e9b6f1c6bb6063de53e766
BLAKE2b-256 1bd4b3c474dfb12a0c65c0239eb7fc64790fff52d77acabf5a8daa3f179464e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 0bcff529a55ccbe8c2ebea16883aac44f27065394feddb8ed0860f4f1972d568
MD5 34a985a807c4500942fb3b33f9cfad12
BLAKE2b-256 e4d2a064695da5592bd004c3e04a20806aaaf4987a7b44337c54b2837440f3fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e51a69c452500e78d3012f4a06d02f20972eb7e53e904c2cc095a7ac39f7ba75
MD5 0ce0254e2e33176ffb26b48a9f859ca8
BLAKE2b-256 d676f7a73e1ead9705454d5dd34e10a1a50812e9b1a97b753ad1db00c7292919

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 d56cfc56c921d421a8383059d1c2e1e783d4dca93feb5ea988cb3264ad3172d8
MD5 e2e71c85c2fd2734510f2ae688359a9b
BLAKE2b-256 f380799f13c8309de47cb15088c349b776dfef523b65a9639afb466f717b31d4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 09f8e82e581eea17cb21301f3a28c6f83f5538ff6b5418a42139c89b4dfe5a69
MD5 9ac39a29835b5299d13ed3e227de916e
BLAKE2b-256 b405b32c7743a2189ee3d0fb1ce7c7c0a4acb7e9e9162e6c0c353233dd5cc023

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 288c0bdec908c3783128e120dd0c8bda22e09c7bb94a12bfb7fcdf76617807a3
MD5 f16be5a335bf31bee554445b62e7aaa9
BLAKE2b-256 3de55ec0a37924593a33c34de82070f668c5b195f22be9a24a65f34b1fb5afc2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 a69fecef77ee476d02b5190aa39d5fdfb9f95876d1342ac3fe3003a1a1b85c93
MD5 7689003ba4022d6e9bb99fcdfe3fc426
BLAKE2b-256 dc7624b4cc27a5fc9e4237c51bd5b2ab6e44bed1aa2d71058ef1ee279ad6f053

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605212028-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 b9c3aedda2f2d84662f8f111c03c4704972aa53347a57205a7ecf4f5e7e98045
MD5 a43893a67d8f5d7eb8a650df5e0f7fce
BLAKE2b-256 a11097303b4af0dafcf52f7448d90ead308a2635f464192f7acdcd05248a62c9

See more details on using hashes here.

Provenance

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