Skip to main content

Georgia Tech Smoothing And Mapping library

Project description

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.

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

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

Uploaded CPython 3.11

gtsam-4.2-cp311-cp311-macosx_12_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.11 macOS 12.0+ x86-64

gtsam-4.2-cp311-cp311-macosx_12_0_arm64.whl (20.1 MB view details)

Uploaded CPython 3.11 macOS 12.0+ ARM64

gtsam-4.2-cp311-cp311-macosx_11_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.11 macOS 11.0+ x86-64

gtsam-4.2-cp310-cp310-manylinux2014_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.10

gtsam-4.2-cp310-cp310-macosx_12_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.10 macOS 12.0+ x86-64

gtsam-4.2-cp310-cp310-macosx_12_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

gtsam-4.2-cp310-cp310-macosx_11_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.10 macOS 11.0+ x86-64

gtsam-4.2-cp39-cp39-manylinux2014_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.9

gtsam-4.2-cp39-cp39-macosx_12_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.9 macOS 12.0+ x86-64

gtsam-4.2-cp39-cp39-macosx_12_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.9 macOS 12.0+ ARM64

gtsam-4.2-cp39-cp39-macosx_11_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.9 macOS 11.0+ x86-64

gtsam-4.2-cp38-cp38-manylinux2014_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.8

gtsam-4.2-cp38-cp38-macosx_12_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.8 macOS 12.0+ x86-64

gtsam-4.2-cp38-cp38-macosx_12_0_arm64.whl (19.9 MB view details)

Uploaded CPython 3.8 macOS 12.0+ ARM64

gtsam-4.2-cp38-cp38-macosx_11_0_x86_64.whl (21.6 MB view details)

Uploaded CPython 3.8 macOS 11.0+ x86-64

File details

Details for the file gtsam-4.2-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3793d5524a0417924fddb9d9662afc8129357fd52f07c422776024ddab3780c1
MD5 98d873629d20eb793c8d00ce398ea8d0
BLAKE2b-256 518ea1cf54ea59c81b300d31f407270d8fe8b7e6fdcfd4c7353b0a0857602808

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp311-cp311-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp311-cp311-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 473978b6d32ab45903433a745ca166f0441058a726c7f26e9f51ce5aa2a03721
MD5 055fd1c0489a218bdf3325ef0932750b
BLAKE2b-256 bdbad7b3ddccb179ca28db84edb7dd223aba6733ae9f59015b6263391bc8976b

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp311-cp311-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp311-cp311-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 0dc13b8a76ef862359a15ea9feec7cfd7df9d2bf2545b5f96297592c63e76aad
MD5 6bbc0de74abb3ff4d77b6962f0d8a970
BLAKE2b-256 ae41a7e26b58289f0f634123615fffa3c7eefd9b559cc1709d7c6ae67da7c87d

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2996c349f03182df739f284adc62f455337b5272c4227bb970cbac7622b1d8e8
MD5 38f8e5b787c1a0e181da7617cf21919b
BLAKE2b-256 0e25b380725edd25c7ab50814a544ffaa748af41fe639d5294818cf4e67b2584

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 979b7c886724ac403d5c323613fd9800c8ac7ab224e2909faa8b266e5de742b2
MD5 2997531d5b512cf99e7b5e1f5a9e900c
BLAKE2b-256 898095d842fa51fef2223f3920f82ffea241bcc6f6b6ba6d7aa96c6e46e19474

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp310-cp310-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp310-cp310-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 59d452e645f7ca598e89170785c9e8ac1b5a2b0a0d32bcda2c279b7b51bb379f
MD5 d32e97f8db670ed4664c8ad91377e793
BLAKE2b-256 9de18c87e6cc713f18be917fd110570e0646a132ab189781c551e4347d175170

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b89d231f1de264d475ce1c0fcac320fdccb1260e2df01f8fb8775cdaddf57fb0
MD5 af914b9ac7de2b71e36d49f529085bf8
BLAKE2b-256 11d8ab317fdedeca03362d316c1b5c32cabc06f7a8948363f1c96d4a7f3fca8d

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 e1c2958b5e8895ff5822114119e9b303fc12b2ded4c9ede0a7a6844f6eb7be1a
MD5 78e8f348f00122b5b70d9f50e2a14537
BLAKE2b-256 bc3f6325c300cc92ca2495570e41ab5dffc3147837d5fce77e243714c1d646dd

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e254e531223c2319194d19e7a267bb5274c22b8f7c7d91ba34ede0ddd9598268
MD5 4f17a055673ae821fad7989c5128b357
BLAKE2b-256 3d7b1339f0d0e6f973d5047512ec12382baba484ce8dbbe4e2a7fb3c34d3df47

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp39-cp39-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp39-cp39-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 637d5fddba9d53ffaf1d7c2c68f952f6b2cb56afab2f789475918417b6dce7d2
MD5 726e6781563aed38130f3ddf1391bb83
BLAKE2b-256 e2bc8860b7d9b328db82c2f26e7ed10b84643cc92b7e5ac7e8ac0dbcf2acfde7

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp39-cp39-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp39-cp39-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 71a7346da5698dbd9cc3585124f55f722e72db47acf89d236bc9d743fad92ced
MD5 a13d2da3bf0ab90008ab22c6d1695d07
BLAKE2b-256 0a40f6f4397937f349c43ce591603da828ad6c81b2e2776b89bcb0353a512cd3

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 a36505c70e5034fe5ea03f4095c9e5b573c63ede6ebbe0bf0e5ca55874918656
MD5 d0b67eab03d3ecd69409a05a3ca9574c
BLAKE2b-256 de29d4bfd5e2a6d430ad4ae2ac4d403e20db1548ad311ab06240d9e06a93d722

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76938ebfa2b2ad8a50bec8a5b01ea8d12fc38794474fedf1a883825aa4ea2941
MD5 3dad944775d75d80c6574d7c32d3e037
BLAKE2b-256 2d714ec384f32fb3863a58f1f1e1b12303e9a7afb1e0b0da84180ee7191c1356

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp38-cp38-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp38-cp38-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 b3327a7b90675302d116f9540beee9d1f2e6cd8e919c2ae132c502db7888e639
MD5 55dd546d522c8e71d05d3e0cbb90beb4
BLAKE2b-256 def8f344bf01b8748caaedcdeccd7936a722f498628a8b4824e332ef3c7b23da

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp38-cp38-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp38-cp38-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 81ebf58ba427a8b66443b39dcac82f94450dc50b7cb6d7e455be1eeb28c23669
MD5 bc5da2215bdcdac1f7c1c136617dec7e
BLAKE2b-256 8ff405853a791aad8a797c503555097e8c9ad0f4cf9be160bebff23cd1e160f9

See more details on using hashes here.

File details

Details for the file gtsam-4.2-cp38-cp38-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for gtsam-4.2-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 0ae302c3b352af48eef8493ff7632215bed11015305b1e81cd2889ef66b80cfc
MD5 4fd1a2199ed6c00454199c49c7282c51
BLAKE2b-256 7156b8c533a104e32041a8a8d6d3e23ea27fd60d16ed40f5acd94a74acdca1f0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page