Skip to main content

README - Georgia Tech Smoothing and Mapping Library

Important Note

As of Dec 2021, the develop branch is officially in "Pre 4.2" mode. A great new feature we will be adding in 4.2 is hybrid inference a la DCSLAM (Kevin Doherty et al) and we envision several API-breaking changes will happen in the discrete folder.

In addition, features deprecated in 4.1 will be removed. Please use the last 4.1.1 release if you need those features. However, most (not all, unfortunately) are easily converted and can be tracked down (in 4.1.1) 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.

The current support matrix is:

Platform Compiler Build Status
Ubuntu 18.04 gcc/clang Linux CI
macOS clang macOS CI
Windows MSVC Windows CI

On top of the C++ library, GTSAM includes wrappers for MATLAB & Python.

Quickstart

In the root library folder execute:

#!bash
mkdir build
cd build
cmake ..
make check (optional, runs unit tests)
make install

Prerequisites:

  • Boost >= 1.65 (Ubuntu: sudo apt-get install libboost-all-dev)
  • CMake >= 3.0 (Ubuntu: sudo apt-get install cmake)
  • A modern compiler, i.e., at least gcc 4.7.3 on Linux.

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_V42 for newly deprecated methods since the 4.2 release, which is on by default, allowing anyone to just pull version 4.2 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.

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.

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-4.2.2-cp314-cp314-manylinux_2_28_x86_64.whl (22.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

gtsam-4.2.2-cp314-cp314-manylinux_2_28_aarch64.whl (21.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

gtsam-4.2.2-cp314-cp314-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gtsam-4.2.2-cp314-cp314-macosx_10_15_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gtsam-4.2.2-cp313-cp313-manylinux_2_28_x86_64.whl (22.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

gtsam-4.2.2-cp313-cp313-manylinux_2_28_aarch64.whl (21.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

gtsam-4.2.2-cp313-cp313-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gtsam-4.2.2-cp313-cp313-macosx_10_15_x86_64.whl (21.7 MB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

gtsam-4.2.2-cp312-cp312-manylinux_2_28_x86_64.whl (22.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

gtsam-4.2.2-cp312-cp312-manylinux_2_28_aarch64.whl (21.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

gtsam-4.2.2-cp312-cp312-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gtsam-4.2.2-cp312-cp312-macosx_10_15_x86_64.whl (21.7 MB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

gtsam-4.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (22.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam-4.2.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (21.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam-4.2.2-cp311-cp311-macosx_11_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gtsam-4.2.2-cp311-cp311-macosx_10_15_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

File details

Details for the file gtsam-4.2.2-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6575bb910b38d2e6161c4a54db059efc50980c63206c226ba32f7800e21d5176
MD5 95871570a4dcf4a4373a21067f145ef0
BLAKE2b-256 bd1beaf681dacc630dd529f99df06d7347d8b02b1b9815dcccd22e254828a0f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: prod-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-4.2.2-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6d32271ecb64fc9a8ca6e2c65617e6c2687c18d05be85fa5346ca49c9abe6b52
MD5 cabbe7f94d0c69103487c1bbd934295f
BLAKE2b-256 dcf8541ab631cc149513dd1b66d4733b7ad8458f12d86a55bebf5179365795fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: prod-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-4.2.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fa1132c3bf1fc5646efe5f0bc383b7bd63809afa92c602b9f53588b4f5b6bff0
MD5 031435c1f83a1a5b0bae3917bd022d1c
BLAKE2b-256 824a7fe5bc6dc83033a73a5b8a26c95cc369065aae3da212e53b7ea9cd051b04

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: prod-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-4.2.2-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 81625de7f5ed04ac7968bfa426e9ebaad44f634238ef8020480c60e9a62a735d
MD5 b4634bf84adc814043952b00bbb7cd19
BLAKE2b-256 f53ebe910086b2cc59fdad4692c5a67374042b9351cb033dcda7e641b6c5ea11

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: prod-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-4.2.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bbba43e407ddf41119a105d0137078b0b8b58a106a3aa128fa736217758c5409
MD5 ee10e4028d9b347cd7b0bad4495f0324
BLAKE2b-256 95680defcf800354fb618cbcca44cd22a89396c612406ec3acc5e1841441b756

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: prod-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-4.2.2-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9dad9d51f5b5514c41a08fa86c844c5fa79562e4968a843a7dc81cccd4fdef8d
MD5 6b22b782072dc04f0c7eaf770976d7c7
BLAKE2b-256 13b7a5b5297ead3ec0baab0d3ee4a4fb16996f76d1e84b8e2040756520da5d32

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: prod-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-4.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5920b1ce7a970dcab0e4fe4baffb7bd12e96ac6e4f28a5cc33d980357239b6cf
MD5 f6dcaf5f4a169507d72db9e950337089
BLAKE2b-256 d8e32b7bd87bd35f5f8b56ea07cef820675b2308b36dbab8057a30952a6aae7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: prod-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-4.2.2-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f184b93a319a88149dcad42802cc818cedb905be34288c7a421cc70c18314e0e
MD5 2e8b017f23463534c28d874a0ec77b3c
BLAKE2b-256 f89d44d8fdf393206bdf7111e639ef0a35667e8bc96e84ce2d9e5fefd9ace68d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp313-cp313-macosx_10_15_x86_64.whl:

Publisher: prod-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-4.2.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 541d084d9f242a0964586136b243d57b8fdc29607a5d290bd3c7d21c8e4b57b7
MD5 d3f0e21a574fcb03b1008fe320969d1d
BLAKE2b-256 a97c8abbe686740f22fc1625c903e5c66ca69b2f22a91579d0fab3ae81420dc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: prod-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-4.2.2-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54b741b53153de0231b37166f9632ab6b2b278848f9561775c94c29d2df3babc
MD5 6abb33a3d539b3baa7eaffb1e1519fea
BLAKE2b-256 188a45a1b8fe843b932435cb54f54713e6d55fd8fe52212baf0a71963c4f353f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: prod-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-4.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a827f3ec0dabe6458d08ee28e6c05270994f239f26e646d0dd963853c9d39c99
MD5 d55b75085b6451e0617c9d8802f96f0d
BLAKE2b-256 06c324a2974cd11ad2b8d7e9168d57cdec93551f5839e7c78578af456fee0dc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: prod-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-4.2.2-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 25d0ad0da90c996509fc3738acd754e41757da193b02d30b37f27439cf19daa3
MD5 6a1e89465a11c8e2989b1a38d7a5f81b
BLAKE2b-256 ac894ef2ca6fd122a13ee15553102894e5e0d183286750bf27db647420b90c52

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: prod-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-4.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9b87157ad4df0788e4b48c41ecaa3e8b9857027add7e5ffdfcfc17983ae62c55
MD5 aac36c0164a72a46ae6f2dc0ef387244
BLAKE2b-256 d7fca53a8c0e93e962e026f75f55cc119f55263057d823d231c771a906d8dd08

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: prod-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-4.2.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 4ac3a906b7d4def8b042b8e2133119bc57244a49b7c4fa91227cffae7cc4002d
MD5 354db176d7bdc517daef5fb20f875875
BLAKE2b-256 c655372377417a808d493d0b5dd1796d410499c7864d5e3848f2a1b5b2219e79

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: prod-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-4.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9eafcd887ec35a448ebb1bdbd7e7dad34ba8fa855289868b5579353d03e5f52
MD5 bbdeccc0054c025a03c46bb51c158581
BLAKE2b-256 eeb57fede2119da2b98fd4b91cdb71c6b4278329723e2ebab6798333f0ec8842

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: prod-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-4.2.2-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2.2-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d4877aa9d89d1207ba123cb8ec526c1c0d36192adebfaed4be77cc476bc41090
MD5 685909f0633ccd5e777fd990461ef8a9
BLAKE2b-256 6831649efee8f68d8769119058e679759a3ea60e8c90a0d07c6929bafff61baa

See more details on using hashes here.

Provenance

The following attestation bundles were made for gtsam-4.2.2-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: prod-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