自述文件 -- 乔治亚理工学院平滑和映射库
重要提示
从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 | |
macOS | clang | |
Windows | MSVC |
在 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,则自动使用。
- 英特尔线程构件 (TBB) (Ubuntu:
sudo apt-get install libtbb-dev
) - 英特尔数学内核库 (MKL) (Ubuntu: 使用 APT 安装。)
- 更多安装信息请参见 INSTALL.md for more installation information
- 请注意,MKL 可能不会在所有情况下都提供加速。请确保在使用和不使用 MKL 的情况下对你的问题进行基准测试。
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 提供 MATLAB 和 Python 包装器的支持。更多详情请参考链接文件。
预集成的 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 许可下的开源软件,请参见 LICENSE
和 LICENSE.BSD
文件。
请参阅 examples/
目录和 USAGE
文件,了解如何使用 GTSAM。
GTSAM 是在 乔治亚理工学院 的 Frank Dellaert 实验室开发的,多年来得到了许多贡献者的帮助,请看 THANKS。
(The first version translated by vz on 2020.09.29)