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

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605120221-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605120221-cp314-cp314-macosx_10_15_universal2.whl (42.7 MB view details)

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

gtsam_develop-4.3a1.dev202605120221-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605120221-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605120221-cp313-cp313-macosx_10_15_universal2.whl (42.7 MB view details)

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

gtsam_develop-4.3a1.dev202605120221-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605120221-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605120221-cp312-cp312-macosx_10_15_universal2.whl (42.7 MB view details)

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

gtsam_develop-4.3a1.dev202605120221-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (31.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

gtsam_develop-4.3a1.dev202605120221-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (30.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

gtsam_develop-4.3a1.dev202605120221-cp311-cp311-macosx_10_15_universal2.whl (42.5 MB view details)

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

File details

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9424b9100d41e4c1ea926e1263c680c11920d417723ee34124073255d4e9531e
MD5 ca6536a5d72ebe43eea103117367f819
BLAKE2b-256 bb22b5288886a68495d1d84328824c2ef111e8b321c7f482c13b4ae2322592c4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 f476a50e11b63b5a807904094533ac00fbd08075f431fe7d6efa5696fa071b1a
MD5 caea52279b03fa4333d553a1dcce4689
BLAKE2b-256 61c73ff933752f499fa778ff4059b1a23ee54d1ac97de0dc81ad48dffb24d2e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp314-cp314-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 4e00f78abc51846743cd14bf16fff64709d6b46805354d498c8b463a3daf566d
MD5 eeaf8cec13abbb5682c9f81a1e3b1113
BLAKE2b-256 030aebe46086865b4f66d41c13349921a4f59ca9c0d983a117b84f2ae1d642e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3652442cda64cf81baa91a8907db11f4275b2cb1813cd54673db6e9016cce569
MD5 90d113c6082e08efa68ae697bdcde529
BLAKE2b-256 a1924d34e66c5ba6aeb127ced13e0ed6b1ec24b4aaaf87db81df1a6ab8e03afb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 ba4660bb7cec4e867f74306df6dc895a740d74e81239fff1fcfdc8a22e87678d
MD5 d35a5ec4878edb233a5455afe9bca0af
BLAKE2b-256 f9107e56f73fc61bb0cf90fa239b8144b09e88d7080926caa13d9299337796b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp313-cp313-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 c1935ee8bc281f4ce8c41638e88042cf3dce9987e16ca64878aaaec063969a90
MD5 d49a42cb2f120c9304bcb12359e07c7d
BLAKE2b-256 51fa6b3c5049cd17dbb8630426cf7dd0238a0f027026875c1bd76772f987cb78

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4c8f6548427dc30439f21afb563bfbf7a01bc20276113afefe3ea55ff133b447
MD5 0b1160dd170c410dc6a8a20844d92e03
BLAKE2b-256 bfd78775a5e7d0c65c5ec7ba34c2f56ae742e8b1641c5c1287a69152b947b717

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 93930f0bcadd1a48aa002dd5a4237583616abfad8caf622197e2133ef449ab73
MD5 e2365acb60ce1c0cd07a170c3eddb580
BLAKE2b-256 be6e7853e86e55c069f254264968db76fec22b9e945a58b0a13c5d38572105c6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp312-cp312-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 dbc02b696a0d45650ad7eae807ba95b392b0166469d2e7133f1201550e8648a8
MD5 04416edde7f94687457be0d11c77f624
BLAKE2b-256 4a5725300870490ce42048ee496f8344562e41eaeea9c80132a44631e845e584

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 707b6b678e471ecf6472c1360558a79cc21d2c2a51d425498c7f36d364b13a9b
MD5 da0c21147e4909519388ec00172b7595
BLAKE2b-256 beea5b36b3112f82faa59435f4b9bdacace64e07d7c9dfbf6e31267810458a30

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 5633f4249afd96569b5813f1064306a98922d05d28bcc522a64604f85a179f75
MD5 5f62c124f529f29490462113c0a2575d
BLAKE2b-256 9454f97926f06fd36b115e06f33b7135a0a711dff16d3299a7f12e214ad9bccd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gtsam_develop-4.3a1.dev202605120221-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 68f8292acf8f3fce85f41156c443070f70214c3587640228741cc007eb26c241
MD5 9879d2d325e52df280f752b8654a4268
BLAKE2b-256 fb790b9d546f734bd3d8987a14e63fff5fa49b7898b7e4d7f7333bc08436e394

See more details on using hashes here.

Provenance

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