LIO-SAM超级详细源码流程图
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超级详细源码流程图相关推荐
- 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)
简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...
- 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)
概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...
- 超级签名源码_苹果iOS超级签名源码技术解析
随着苹果对于企业分发证书的频繁吊销和日益收紧,代签名行业也随之迭代出了黑科技,即所谓的超级签名源码. 签名原理 签名原理其实就一句话,使用了苹果提供给开发者的Ad-Hoc分发通道,把安装设备当做开发设 ...
- 实战|Python轻松实现动态网页爬虫(附详细源码)
用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识. 项目背景 事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码) ...
- JUC.Condition学习笔记[附详细源码解析]
JUC.Condition学习笔记[附详细源码解析] 目录 Condition的概念 大体实现流程 I.初始化状态 II.await()操作 III.signal()操作 3个主要方法 Conditi ...
- set在python中的用法_python中set的用法:详细源码示例
这篇文章主要为大家详细介绍了python中set的用法:详细源码示例,具有一定的参考价值,可以用来参考一下. set函数基本用法感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. python ...
- beautifulsoup解析动态页面div未展开_实战|Python轻松实现动态网页爬虫(附详细源码)...
用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识.项目背景事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码)&g ...
- 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...
一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage ...
- 维吉尼亚密码破解(Python完整详细源码)
维吉尼亚密码破解(Python完整详细源码) 欢迎大家访问我的GitHub博客 https://lunan0320.github.io/ 文章目录 维吉尼亚密码破解(Python完整详细源码) 1.写 ...
最新文章
- [mqtt]mqtt嵌入式移植
- 目前学什么专业的人在搞SLAM?各有什么优势?
- python文件替换一行_python基础_文件操作实现全文或单行替换的方法
- 用 Flask 来写个轻博客 (34) — 使用 Flask-RESTful 来构建 RESTful API 之三
- 《我在51CTO微职位学软考——奋发之路》
- 展示使用 boost bind 和 phoenix 处理删除的不同方法的测试程序
- Qtum量子链漏洞赏金计划正式开启
- Primefaces Spring和Hibernate集成示例教程
- oracle游标fetch_SQL游标@@ FETCH_STATUS函数概述
- Java实现网页滑动验证与短信验证码案例精析
- 【mean teacher】RuntimeError: Integer division of tensors using div or / is no longer suppor的解决
- 最大化参数 火车头_火车采集器,您身边的的网页数据采集专家!
- java 实现创建拨号_电话拨号盘的实现
- 一本通1548【例 2】A Simple Problem with Integers
- uni-app实现支付及项目打包上传
- PIC16F15323单片机 (中断与定时器Timer0)
- 智能制造学习纪录片和书籍
- 算法:最小公倍数的求解方法
- POJ 3264 线段树
- web前端 day11今日大纲
热门文章
- win10操作系统系统,小米路由器,小米3 的问题
- C语言练习——跑步锻炼
- 2003 r2 远程管理html,在 System x 3850 M2上安装 Windows 2003 Server R2 x86 64
- vue antvG6树图的摸索总结—新手入门
- 计算机在化工设计中的应用论文,计算机软件技术在化工设计的应用-软件技术论文-计算机论文(9页)-原创力文档...
- Synopsys的FPGA综合软件Synplify 2019版在Windows系统上的下载安装教程
- Python爱好者社区历史文章列表(每周append更新一次)
- 隐马尔可夫模型(HHM)学习笔记2
- 读书记:《结构思考力》
- 历史微博,阅读量查看,微博热搜查看,批量监控微博刷量...盘点西瓜微数新功能!