slamplay:用C++实现的SLAM工具集
0. 项目简介
slamplay 是一个功能强大的工具集合,可用于开始使用 C++ 来玩和试验 SLAM。这是一项正在进行的工作。它在单个 cmake 框架中安装并提供一些最重要的功能
-
后端框架(g2o、gtsam、ceres、se-sync 等)、
-
前端工具(opencv、pcl等)、
-
代数和几何库(eigen、sophus、cholmod 等),
-
即工具(pangolin、imgui 等)、
-
闭环框架(DBOW3、iBOW 等)、
以及一些很好的示例,以便轻松快速地开始使用所有这些工具。
我为最近教授的计算机视觉课程创建了 slamplay。我在空闲时间出于兴趣开始开发它,并从网络上的一些存储库中获取灵感。



该存储库由以下主要文件夹构成(具有不言自明的名称):
- algebra_geometry
- backend
- data
- dense_mapping
- docs
- frontend
- full_slam
- io
- loop_closure
- dense_mapping
- scripts
- utils
- viz
1. 快速启动
安装基本依赖项:
$ ./install_dependencies.sh
在本地文件夹中安装 OpenCV:
$ ./install_local_opencv.sh
(如果需要,请跳过此步骤并使用本地 OpenCV 路径设置 config.sh 中的变量 OpenCV_DIR )
构建框架:
$ ./build.sh
一切构建完成后,您可以进入 build 文件夹并测试不同的示例。特别是,您可以在 full_slam 文件夹中输入:
配置文件 config/kitti.yaml (或 config/euroc.yaml )
并运行 VO 应用 app/run_kitti_stereo (或 app/run_euroc_stereo )
2. 自己的教程
请参阅很好的 ascii 快速参考。
3. 后端
关于后端框架的一些注释。
3.1 GTSAM 示例
安装标签4.2a9
文档
请参阅 docs 文件夹以获取更多文档。
问题显然,为了避免退出时 gtsam 出现双重释放或损坏错误,我们需要在构建使用 gtsam 的应用程序时禁用编译选项 -march=native 。这可以通过修改文件夹级别的编译标志并删除 gtsam 相关文件的 March 本机优化来在本地完成。更多详细信息请参见以下链接:
- https://bitbucket.org/gtborg/gtsam/issues/414/compiling-with-march-native-results-in
- https://groups.google.com/g/gtsam-users/c/jdySXchYVQg
3.2 谷神星的例子
安装标签2.1.0
文档
请参阅 docs 文件夹以获取更多文档。
3.3. g2o 示例
已安装标签 20230223_git。请参阅相关示例。
Issues: 问题:
-
构建的依赖于 g2o 的二进制文件链接到系统 g2o(而不是本地编译和安装的 g2o),这会导致崩溃(链接了不同的 g2o 版本)。这个问题有不同的解决方案:
-
标准一(不舒服):使用
LD_LIBRARY_PATH使构建的二进制文件正确链接到本地编译和安装的 g2o。 -
否则,我们可以在构建时使用和设置
RPATH(而不是RUNPATH)。特别是,这可以通过使用一些编译器选项来完成。这是我在 cmake 配置中设置的: set(MY_FLAGS “${MY_FLAGS} -Wl,–disable-new-dtags”) https://stackoverflow.com/questions/47117443/dynamic-linking-with-rpath-not-working-under-ubuntu-17-10 此配置由我添加的 cmake 选项标志SET_RPATH启用/禁用。
-
-
如果您在 g2o 中遇到双重释放或损坏错误(退出时),则很可能您在编译此项目时使用了
-march=native选项,但没有使用相同的选项来构建 g2o 本身。这可能会导致 g2o 和本项目之间出现一些对齐不一致的情况。然后,在这种情况下,使用-march=native构建 g2o (即使用 cmake 选项-DBUILD_WITH_MARCH_NATIVE=ON)
…详情请参照古月居
更多推荐
所有评论(0)