GTSAM

GTSAM 是一个 C++ 类库,它实现了机器人和视觉中的平滑和映射(SAM),使用因子图和贝叶斯网络作为底层计算范式,而不是稀疏矩阵。「GTSAM is a library of C++ classes that implement smoothing and mapping (SAM) in robotics and vision, using factor graphs and Bayes networks as the underlying computing paradigm rather than sparse matrices.」

Github星跟蹤圖

自述文件 -- 乔治亚理工学院平滑和映射库

重要提示

从2020年8月1日起,开发分支正式进入 "Pre 4.1" 模式,4.0 中废弃的功能已经被删除。如果你需要这些功能,请使用上一个 4.0.3 版本

然而,大多数功能都可以轻松转换,并且可以通过禁用 cmake 标志GTSAM_ALLOW_DEPRECATED_SINCE_V4 来追踪(在 4.0.3 中)。

GTSAM 是什么?

GTSAM 是一个 C++ 库,它实现了机器人和视觉中的平滑和映射(SAM),使用因子图和贝叶斯网络作为底层计算范式,而不是稀疏矩阵。

目前的支持矩阵是:

平台 编译器 构建状态
Ubuntu 18.04 gcc/clang Linux CI
macOS clang macOS CI
Windows MSVC Windows CI

在 C++ 库的基础上,GTSAM 包含了 MATLAB 和 Python 的封装器。

快速入门

在根库文件夹下执行:

#!bash
$ mkdir build
$ cd build
$ cmake ..
$ make check (可选,运行单元测试)
$ make install

前提条件

  • Boost >= 1.58 (Ubuntu: sudo apt-get install libboost-all-dev)
  • CMake >= 3.0 (Ubuntu: sudo apt-get install cmake)
  • 一个现代的编译器,例如:在 Linux 上至少是 gcc 4.7.3。

可选的先决条件 -- 如果可以找到 CMake,则自动使用。

GTSAM 4 的兼容性

GTSAM 4 引入了一些新的功能,最著名的是 Expressions 和 Python 工具箱。它还引入了 traits,一种允许用非 GTSAM 类型进行优化的 C++ 技术。这为我们打开了一扇门,让诸如 Point2 和 Point3 这样的几何类型回退为纯 Eigen 类型,我们也是这么做的。一个不会引发编译错误的重要变化是,Point2 和 Point3 的零初始化已被废弃,所以请注意这可能会导致使用其默认构造函数的函数不正确。

GTSAM 4 还废弃了一些遗留功能和错误命名的方法。如果你使用的是 4.0.X 版本,你可以定义标志 GTSAM_ALLOW_DEPRECATED_SINCE_V4 来使用被废弃的方法。

GTSAM 4.1 增加了一个新的 pybind 封装器,并删除了过时的功能。有一个标志 GTSAM_ALLOW_DEPRECATED_SINCE_V41 是针对 4.1 版本以来新废弃的方法的,默认情况下是开启的,允许任何人只需拉出 4.1 版本并进行编译。

封装器

我们为 GTSAM 提供 MATLABPython 包装器的支持。更多详情请参考链接文件。

预集成的 IMU 因子

GTSAM 包括一个基于以下方面的先进的 IMU 处理方案。

  • Todd Lupton和Salah Sukkarieh,"Visual-Inertial-Aided Navigation for High-Dynamic Motion in Built Environments Without Initial Conditions",TRO,28(1):61-76,2012。[[链接]]

我们的实现使用流形上的集成对此进行了改进,如中所述:

  • 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. [[链接]]
  • Christian Forster、Luca Carlone、Frank Dellaert和Davide Scaramuzza,"IMU Preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation",Robotics: Science and Systems(RSS),2015. [[链接]

如果您在学术工作中使用该因子,请引用上述出版物。

在 GTSAM 4 中,默认启用了一个新的、更有效的实现,基于 NavState 切线空间的集成,并在 本文档中 详细介绍。要切换到 RSS 2015 版本,请将 GTSAM_TANGENT_PREINTEGRATION 标志设置为 OFF。

其他信息

有一个 GTSAM 用户谷歌小组供一般讨论。

在这里阅读重要的 GTSAM-Concepts。在 BitBucket 上的 GTSAM wiki 上可以找到关于 GTSAM Expressions 的初级介绍,该 Expressions 支持(超快)自动区分。

更详细的安装说明请参见 INSTALL 文件。

GTSAM 是 BSD 许可下的开源软件,请参见 LICENSELICENSE.BSD 文件。
请参阅 examples/ 目录和 USAGE 文件,了解如何使用 GTSAM。

GTSAM 是在 乔治亚理工学院Frank Dellaert 实验室开发的,多年来得到了许多贡献者的帮助,请看 THANKS


(The first version translated by vz on 2020.09.29)

主要指標

概覽
名稱與所有者borglab/gtsam
主編程語言C++
編程語言CMake (語言數: 15)
平台Linux, Mac, Windows
許可證Other
所有者活动
創建於2017-03-27 17:12:06
推送於2025-04-26 14:48:11
最后一次提交2023-09-03 19:21:18
發布數45
最新版本名稱4.2.0-ros (發布於 2024-08-29 09:59:34)
第一版名稱0.9.1-r4448 (發布於 2010-10-28 18:22:33)
用户参与
星數2.9k
關注者數61
派生數822
提交數18.9k
已啟用問題?
問題數652
打開的問題數93
拉請求數1256
打開的拉請求數25
關閉的拉請求數132
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?

gcc/clang: Build Status MSVC: Build status

README - Georgia Tech Smoothing and Mapping library

What is GTSAM?

GTSAM is a library of C++ classes that implement smoothing and
mapping (SAM) in robotics and vision, using factor graphs and Bayes
networks as the underlying computing paradigm rather than sparse
matrices.

On top of the C++ library, GTSAM includes a MATLAB interface (enable
GTSAM_INSTALL_MATLAB_TOOLBOX in CMake to build it). A Python interface
is under development.

Quickstart

In the root library folder execute:

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

Prerequisites:

  • Boost >= 1.43 (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 will introduce several new features, most notably Expressions and a python toolbox. We will also deprecate some legacy functionality and wrongly named methods, but by default the flag GTSAM_ALLOW_DEPRECATED_SINCE_V4 is enabled, allowing anyone to just pull V4 and compile. To build the python toolbox, however, you will have to explicitly disable that flag.

Also, GTSAM 4 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 will also do. A significant change which will not trigger a compile error is that zero-initializing of Point2 and Point3 will be deprecated, so please be aware that this might render functions using their default constructor incorrect.

Wrappers

We provide support for MATLAB and Python wrappers for GTSAM. Please refer to the linked documents for more details.

The Preintegrated IMU Factor

GTSAM includes a state of the art IMU handling scheme based on

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. (https://ieeexplore.ieee.org/abstract/document/6907483)
  • 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. (http://www.roboticsproceedings.org/rss11/p06.pdf)

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 docs/ImuFactor.pdf, 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.