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.16
    • 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_extended-4.3a1.post202607011404-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_extended-4.3a1.post202607011404-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

gtsam_extended-4.3a1.post202607011404-cp314-cp314-macosx_10_15_universal2.whl (43.4 MB view details)

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

gtsam_extended-4.3a1.post202607011404-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_extended-4.3a1.post202607011404-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

gtsam_extended-4.3a1.post202607011404-cp313-cp313-macosx_10_15_universal2.whl (43.4 MB view details)

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

gtsam_extended-4.3a1.post202607011404-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_extended-4.3a1.post202607011404-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

gtsam_extended-4.3a1.post202607011404-cp312-cp312-macosx_10_15_universal2.whl (43.4 MB view details)

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

gtsam_extended-4.3a1.post202607011404-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_extended-4.3a1.post202607011404-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_extended-4.3a1.post202607011404-cp311-cp311-macosx_10_15_universal2.whl (43.2 MB view details)

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

gtsam_extended-4.3a1.post202607011404-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

gtsam_extended-4.3a1.post202607011404-cp310-cp310-macosx_14_0_arm64.whl (28.2 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6ca82f92a0a713bb27eafc60aaffb9a210e64bdfb53cf325bc5874e351702fb8
MD5 2ff2b659ad3e30fd93cb6e9c7ff33379
BLAKE2b-256 829f85884346a4e83dfa44921f4984c378cfe046eb3900ec03b1cc733261057f

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 e5964cfa78ac61f08bbee912d5bb47dd6dfd64cadfa591a5221eaf342a4e21c0
MD5 a8fe2996b78905a5793ab05d52317f3d
BLAKE2b-256 9d63b9e99cca0c7dd9eae1a7042da88fd6ed0d2027e4af6d8db6ca8e5f4c2e1b

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp314-cp314-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 d26b2879ae988d651f1c7f71686729f851ca5bf98213dc0db8f3c5ca22d5d657
MD5 82de5f300a3430486f8d7618e533990a
BLAKE2b-256 58c09bcecea20be0722a9144e344b411dad823a40a2a89aea76ac4a40755d7ed

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0bd6e97b0b46413bc4018b9f970317e2dce5bd7ed7ec350483eabbd75f922c12
MD5 13c486f82210ce57bbee5dcc2cd54bae
BLAKE2b-256 56ef9d469b2911948354c70fe63a442ff1827318024416c24500768b8bc65712

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 067a635c137d67ed82e4a3cf4789358ad428e0d186f3c468ecda006c29d55225
MD5 df8154f77add0a9e6ba0b196532796ab
BLAKE2b-256 dc83605add9bf04ebe29582a10143ec2cddd91af4f081b91bcbd329b1db9a90e

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp313-cp313-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 6b540c0d7b90a4c1ffff792d7cb35eec33f67031cc5abb99836b79a0bd8bd3a6
MD5 268c0ba598fe013fb5f52cf8ba9cc274
BLAKE2b-256 1e78217de4087ba15026ecf480e341b32221504f2cc72fbc7108af82dfafeb54

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 567d63927629c38c0f72f48f65064aece5ccb5fdfa8136cf0729c735754de6ec
MD5 0de28755898738c43f50d6129dda8f26
BLAKE2b-256 a55de61164247045507b9582f479f1caf8d8d9e3daa17b42ab9354d58c3deaf2

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 a73d6726d31c97a385f5c692187a8b13fd94fcdf624e0b7990340bc4de41a021
MD5 d1b8893bc1159237a0d92f9bca6f6d20
BLAKE2b-256 76185885cbfc8a1b68942b136358951cb7c2d13adbddcda60ebc65548003f087

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp312-cp312-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 c619f611b616a095dbc55c6c8b7b3bd4ebf0d605b2e903a44efa3ebb8aa07023
MD5 09ea6b93cdac6b4a0b6e3818d0c304d7
BLAKE2b-256 8241224862f90c7e5489cd5c88bd87d75bd7647b543f75007474e7e09cfcaf7c

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f2d261a46cd58de4193534850ee386ef2dbddf7e396ff823fd1d95f37b30fbf8
MD5 bf7721866be066141bd1386a29e7ed91
BLAKE2b-256 ce669a7dc917f7cccdf193766b09bd3469c4e98822d7b9e0b904d3d8f82323a3

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 b0526594dffb8838ecece6211a2faaa8cffb928d66fb5cd2490de424977bdf09
MD5 a2fd2502de0bf030fdc0a805bd285c12
BLAKE2b-256 8eabbe32d2ecf67d04d1d797c591b264a38f04024aa84121b77e09b820af4136

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp311-cp311-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 157fd22d58d69678349ef1f2f9775ba25e5d98806ff5a909f67686d85d8e86ff
MD5 f3f564d6c493f95e7cd8e4ea0b4bd769
BLAKE2b-256 26c5fe6cdfb8c916c3c314a0770cb4b43dacb4914b81b4ec6b4f3ebbae39b17e

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8848c2567217643a09fed1d310a4453f00952ba3ecd4d53ccac0e7dbc7714a4a
MD5 16500fde7d74113e50dc53844179dd6b
BLAKE2b-256 d76d33d6074f45bb5f58b4bb4db7de1ec32219ef56ca38ae3926f7330ec3f4c3

See more details on using hashes here.

File details

Details for the file gtsam_extended-4.3a1.post202607011404-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam_extended-4.3a1.post202607011404-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1e0a2feda2bbf7d93f2f14a5148b2ee3bc3fced6ffd8bc25ad8e061e99b5e0da
MD5 97cf7d0a06514f0f957e57cec8d16ed0
BLAKE2b-256 88ae7c33a8f9c44c2e7cd6e9799e100d531a21bb2c63bac86de26f2102529516

See more details on using hashes here.

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