码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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
    
    • 1

    在本地文件夹中安装 OpenCV:

    $ ./install_local_opencv.sh
    
    • 1

    (如果需要,请跳过此步骤并使用本地 OpenCV 路径设置 config.sh 中的变量 OpenCV_DIR )

    构建框架:

    $ ./build.sh
    
    • 1

    一切构建完成后,您可以进入 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

    • https://github.com/borglab/gtsam/tree/4.2a9/examples

    文档

    • https://gtsam.org/docs/
    • https://gtsam.org/tutorials/intro.html

    请参阅 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

    • https://ceres-solver.googlesource.com/ceres-solver/+/refs/tags/2.1.0/examples/

    文档

    • http://ceres-solver.org/tutorial.html

    请参阅 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 )

    4. IO

    4.1. chrono

    https://www.modernescpp.com/index.php/the-three-clocks

    三种不同时钟之间的差异?

    std::chrono::sytem_clock:这是系统范围的实时时钟(挂钟)。时钟具有辅助函数 to_time_t 和 from_time_t 将时间点转换为日期。

    std::chrono::steady_clock:仅作为时钟提供您无法调整它的保证。因此, std::chrono::steady_clock 是等待一段时间或直到某个时间点的首选时钟。

    std::chrono::high_resolution_clock:这是精度最高的时钟,但它可以是时钟的 std::chrono::system_clock 或 std::chrono::steady_clock 的同义词。

    C++ 标准不提供有关时钟精度、起始点或有效时间范围的保证。通常,std::chrono:system_clock 的起点是 1.1.1970,即所谓的 UNIX 纪元。对于 std::chrono::steady_clock,通常是 PC 的启动时间。

    通俗来说,steady_clock 与 system_clock 之间有什么区别?

    如果你手里拿着一个 system_clock,你会称它为手表,它会告诉你现在是什么时间。

    如果你手里拿着一个 stable_clock,你会称它为秒表,它会告诉你某人跑了一圈有多快,但它不会告诉你现在是什么时间。

  • 相关阅读:
    数据库编程
    jupyter渲染网页的3种方式
    java微服务项目整合skywalking链路追踪框架
    数据库最基础命令的大集合,四类分别有DDL、DCL、DQL、DML,让我给你解释一下吧
    面试-Redis常见场景
    深入学习Linux中的“文件系统和日志分析”
    分布式事务的背景
    【ROS导航Navigation】四 | SLAM与导航 | 自主移动的地图构建 (更新ing)
    web网页设计期末课程大作业——香格里拉旅游网页设计 5页 HTML+CSS+JavaScript
    类和对象(2)
  • 原文地址:https://blog.csdn.net/lovely_yoshino/article/details/133636152
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号