0 写在前面

本系列文章是对LIO-SAM源码的学习总结,难免有错漏之处,如果哪里有问题欢迎私聊或者留言指出,感激不尽。

LIO代码已经完整阅读了,还需要对其进行消化总结,后续的文章会在这个专栏持续更新,能点个关注最好啦,关注不迷路^_^,整个流程图在最下面,童叟无欺

1 概述

上图来自LIO-SAM的论文,为整个系统关键的因子图,总体来看,变量结点为机器人的位姿(包含旋转和平移),因子有:1)Lidar Odometry 2)imu preintegration 3)gps 4)loop closure等四种因子。

总的来说LIO-SAM的源码就是在不停的计算上面提到的四种因子,并将其按照一定的规律添加到因子图中,进行优化然后更新,一直这样循环往复的过程。读者要理解好这个过程,在这样的宏观框架下去进行阅读和理解,就会容易很多。下面简单说一下除GPS外三种因子约束的构建:

2 因子约束的构建

1 lidar odometry

LIO激光里程计的处理类似于LOAM,也是对点云提取角点和面点,对于角点和面点分别将点到直线、点到面的距离作为损失函数,利用非线性优化的方法迭代获取优化后的位姿;优化的初始值由imu里程计提供(或者imu数据)

2 imu preintegration

imu预积分使用了来自激光里程计的位姿估计,利用其进行初始化,并且其也作为imu部分因子图的一个因子参与到因子图的求解当中去。除此之外imu偏置也作为一个因子参与优化,偏置更新后要进行重传播

3 回环检测

LIO的回环使用的是基于欧式距离的方法,对关键帧查找与其相邻的关键帧计算其距离,当距离小与一定的阈值则认为是回环,然后利用icp匹配,获取位姿变换添加到因子图。

3 代码结构

这里代码看的是详细中文注释的版本,注释写得很不错,地址如下:

GitHub - smilefacehh/LIO-SAM-DetailedNote: LIO-SAM源码详细注释,3D SLAM融合激光、IMU、GPS

如图所示为代码文件结构、核心文件为src下面的四个cpp文件,我主要是对这四个文件进行讲解。按照从上到下的顺序讲解。各个文件的主要功能如下图所示。

4 上图

整个图直接拿去,慢慢看哈哈哈喜欢的话点个赞,点个关注

LIO-SAM超级详细源码流程图相关推荐

  1. 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)

    简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...

  2. 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)

    概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...

  3. 超级签名源码_苹果iOS超级签名源码技术解析

    随着苹果对于企业分发证书的频繁吊销和日益收紧,代签名行业也随之迭代出了黑科技,即所谓的超级签名源码. 签名原理 签名原理其实就一句话,使用了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设 ...

  4. 实战|Python轻松实现动态网页爬虫(附详细源码)

    用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识. 项目背景 事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码) ...

  5. JUC.Condition学习笔记[附详细源码解析]

    JUC.Condition学习笔记[附详细源码解析] 目录 Condition的概念 大体实现流程 I.初始化状态 II.await()操作 III.signal()操作 3个主要方法 Conditi ...

  6. set在python中的用法_python中set的用法:详细源码示例

    这篇文章主要为大家详细介绍了python中set的用法:详细源码示例,具有一定的参考价值,可以用来参考一下. set函数基本用法感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. python ...

  7. beautifulsoup解析动态页面div未展开_实战|Python轻松实现动态网页爬虫(附详细源码)...

    用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识.项目背景事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码)&g ...

  8. 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...

    一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage ...

  9. 维吉尼亚密码破解(Python完整详细源码)

    维吉尼亚密码破解(Python完整详细源码) 欢迎大家访问我的GitHub博客 https://lunan0320.github.io/ 文章目录 维吉尼亚密码破解(Python完整详细源码) 1.写 ...

最新文章

  1. [mqtt]mqtt嵌入式移植
  2. 目前学什么专业的人在搞SLAM?各有什么优势?
  3. python文件替换一行_python基础_文件操作实现全文或单行替换的方法
  4. 用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三
  5. 《我在51CTO微职位学软考——奋发之路》
  6. 展示使用 boost bind 和 phoenix 处理删除的不同方法的测试程序
  7. Qtum量子链漏洞赏金计划正式开启
  8. Primefaces Spring和Hibernate集成示例教程
  9. oracle游标fetch_SQL游标@@ FETCH_STATUS函数概述
  10. Java实现网页滑动验证与短信验证码案例精析
  11. 【mean teacher】RuntimeError: Integer division of tensors using div or / is no longer suppor的解决
  12. 最大化参数 火车头_火车采集器,您身边的的网页数据采集专家!
  13. java 实现创建拨号_电话拨号盘的实现
  14. 一本通1548【例 2】A Simple Problem with Integers
  15. uni-app实现支付及项目打包上传
  16. PIC16F15323单片机 (中断与定时器Timer0)
  17. 智能制造学习纪录片和书籍
  18. 算法:最小公倍数的求解方法
  19. POJ 3264 线段树
  20. web前端 day11今日大纲

热门文章

  1. win10操作系统系统,小米路由器,小米3 的问题
  2. C语言练习——跑步锻炼
  3. 2003 r2 远程管理html,在 System x 3850 M2上安装 Windows 2003 Server R2 x86 64
  4. vue antvG6树图的摸索总结—新手入门
  5. 计算机在化工设计中的应用论文,计算机软件技术在化工设计的应用-软件技术论文-计算机论文(9页)-原创力文档...
  6. Synopsys的FPGA综合软件Synplify 2019版在Windows系统上的下载安装教程
  7. Python爱好者社区历史文章列表(每周append更新一次)
  8. 隐马尔可夫模型(HHM)学习笔记2
  9. 读书记:《结构思考力》
  10. 历史微博,阅读量查看,微博热搜查看,批量监控微博刷量...盘点西瓜微数新功能!