专栏系列文章如下:

一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN博客

二.激光SLAM框架学习之A-LOAM框架---介绍及其演示_goldqiu的博客-CSDN博客

三.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---1.项目文件介绍(除主要源码部分)_goldqiu的博客-CSDN博客

四.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---2.scanRegistration.cpp--前端雷达处理和特征提取_goldqiu的博客-CSDN博客

五.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---3.laserOdometry.cpp--前端雷达里程计和位姿粗估计_goldqiu的博客-CSDN博客

六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)_goldqiu的博客-CSDN博客

七.激光SLAM框架学习之A-LOAM框架---速腾Robosense-16线雷达室内建图_goldqiu的博客-CSDN博客

八.激光SLAM框架学习之LeGO-LOAM框架---框架介绍和运行演示_goldqiu的博客-CSDN博客

九.激光SLAM框架学习之LeGO-LOAM框架---速腾Robosense-16线雷达室外建图和其他框架对比、录包和保存数据_goldqiu的博客-CSDN博客

十.激光SLAM框架学习之LeGO-LOAM框架---算法原理和改进、项目工程代码_goldqiu的博客-CSDN博客

十一.激光惯导LIO-SLAM框架学习之LIO-SAM框架---框架介绍和运行演示

十二.激光SLAM框架学习之livox-loam框架安装和跑数据集_goldqiu的博客-CSDN博客_livox 数据集

十三.激光SLAM框架学习之livox-Mid-70雷达使用和实时室外跑框架_goldqiu的博客-CSDN博客

十四.激光和惯导LIO-SLAM框架学习之惯导内参标定_goldqiu的博客-CSDN博客

十五.激光和惯导LIO-SLAM框架学习之惯导与雷达外参标定(1)_goldqiu的博客-CSDN博客

十六.激光和惯导LIO-SLAM框架学习之配置自用传感器实时室外跑LIO-SAM框架_goldqiu的博客-CSDN博客

IMU

介绍及选型

IMU的全称是惯性测量单元,包括⼀个三轴的加速度计以及一个三轴的陀螺仪,分别测量出物体的加速度和角速度信息,不受周围环境结构,光照等外界因素影响;IMU可以获得当前时刻的角速度和加速度值,通过该值可以对系统状态(位置,速度,姿态)进行推算。

通常IMU的输出频率在100-1000hz之间,远高于相机或者激光雷达的输出频率,一方面可以提高整体系统的输出频率,另一方面,可以在视觉或者激光短期失效的时候提供一段时间的位姿推算。 在大多数的LIO(雷达惯性里程计)或者VIO(视觉惯性里程计)中,关于IMU输出的建模方式为

输出的加速度计和陀螺仪的数据受零偏(ba和bw)以及高斯白噪声(na和nw)的影响,紧耦合的LIO或者VIO都会实时估计IMU的零偏,以实现IMU数据的最大利用率,达到融合效果最大化。

这里的加速度要减去重力加速度或者重力加速度的分量才是实际的加速度,而且传感器测得的是世界坐标系下的加速度,然后左乘一个将世界坐标系转换到机体坐标系的旋转矩阵,得到的才是物体的加速度。

然而,实际的IMU数据并没有这么理想,除了零偏和高斯白噪声,还有可能受到刻度误差,尺度因子,轴向偏差等影响,如果把这些因素都通过建模的方式考虑进来,就显得过于复杂;因此,通常的做法是在IMU选型的时候就最大化避免上述误差的影响。也就是说,在选择IMU型号时除了关注价格(价格很多时候是非常重要甚至是决定性的因素),还需要关心其出厂标定情况,是否做过温度补偿等。

IMU标定

无论是VIO还是LIO,IMU和其他传感器的标定结果往往对最终的里程记和建图性能有着显著的影响。同样,在多传感器融合算法中,传感器之间的标定结果的精度对多传感器融合的效果也有着非常大的影响。在lidar-imu融合的算法中,lidar和IMU之间的外参标定非常重要,在一些数据集上往往有着经过良好标定的结果,然而,绝大多数情况下,传感器之间的外参需要我们自己去标定。

LIO-SAM中,作者推荐了一个Lidar-IMU标定的功能包来实现lidar和IMU之间的外参标定。

https://github.com/chennuo0125-HIT/lidar_imu_calib​github.com/chennuo0125-HIT/lidar_imu_calib

通常来讲,lidar和IMU之间的旋转外参相比于平移外参对里程记的性能有着更显著的影响。因此,条件有限的情况下,可以只标定lidar和IMU之间的旋转外参,平移外参则可以通过手工测量等方式获取。

该旋转标定算法本质上是⼀个手眼标定算法,即先计算出两帧lidar之间的旋转(通过ICP、NDT等点云配准算法),然后计算出两帧IMU之间的旋转(IMU陀螺仪积分),然后通过手眼标定的方式求解出外参,和VINS-Mono中相机IMU旋转外参初始化的过程⼀致,具体方式为:

  1. 使用四元数来表示旋转,四元数的乘法可以通过一个公式转成矩阵的乘法。
  2. 收集若干组IMU和lidar的相对旋转和平移,联立求解,相当于已知一个4n×4大小的矩阵,求出⼀个4×1向量的最优解,通常n>4;这是一个基本的超定方程求解问题,通常使用SVD方法求解,即将A矩阵进行SVD分解。求解出来的x转换成四元数即为所求的旋转。

前面讲过IMU内参的标定和外参的标定,外参用的是瑞士苏黎世理工大学-自动驾驶实验室开源的lidar_align工程进行标定。

链接如下:

goldqiu:十五.激光和惯导LIO-SLAM框架学习之惯导与雷达外参标定(1)

IMU预积分

为什么需要预积分

当k时刻的状态发生变化时,通过imu积分得到的k+1时刻的状态也会发生相应的变化,而在基于滑窗的后端优化或者因子图的优化中,对一些状态量进行调整是必然发生的。如果每次状态发生调整时imu的积分过程都会重新执行一遍,则实时性无法得到保证。因此,预积分理论就是为解决这个问题而提出的,其核心思想就是IMU积分的结果和上⼀时刻系统的状态无关。这样,当系统状态在优化过程中发生调整的时候,就不需要对下⼀时刻的系统状态重新积分。

关于零偏的建模

通常来说,IMU的零偏会随着时间的变化而偏移,因此为了系统的准确性,零偏也是系统的优化变量之一。预积分量虽然和两帧的具体位姿和速度等状态量无关,但是和零偏相关,因此,当零偏作为优化变量被优化后,预积分量也会发生相应的变化,那么此时我们是否需要重新积分呢?答案是不用的。 为了避免零偏的变化导致预积分量重新积分,通常认为零偏的变化在短时间内(100ms)非常小,因此,我们可以使用一阶泰勒展开来进行近似。

预积分量对于零偏的雅克比矩阵会在预积分计算的时候一并用于计算,因此,当零偏被优化调整之后, 会计算预积分量对于零偏的雅克比矩阵,然后进行预积分时更新过去即可(即更换预积分量对于零偏的雅克比矩阵)。

离散时间的预积分更新

实际系统是离散的IMU数据,我们的目的是得到两个关键帧(视觉 or lidar)之间的预积分结果,而IMU的频率是远大于雷达和相机的。常见的做法就是每收到⼀帧新的IMU数据就更新⼀次预积分量,这是⼀个求和而非连续积分的过程,而到了相机或者雷达的数据帧后,就用当前更新的预积分量去融合。

预积分在优化问题中的建模

预积分量约束相邻两帧的状态量(位置、速度、姿态),同时考虑到IMU零偏的性质(即短时间内变换速率比较缓慢,可以认为两帧之间的零偏不变)也就是还可以约束两帧的零偏变化。在slam问题中,IMU预积分约束通常会和其他传感器的约束一起构建一个优化问题。

视觉VIO中预积分和视觉的优化建模

这里黄色代表IMU预积分,只对相邻帧发生约束,五角星代表视觉地图点,同一个地图点可以通过视觉重投影误差对多个关键帧的位姿形成约束。

LIO-SAM中预积分和lidar位姿的优化建模

这里蓝色圆圈代表关键帧位姿,蓝色矩形代表关键帧速度和零偏,橙色矩形代表IMU预积分约束,它可以约束相邻帧的位姿、速度和零偏,绿色矩形代表lidar里程记的帧间约束,其约束相邻两帧的位置和姿态。这里包括了lidar里程计因子和预积分因子,是预积分节点因子图的优化模型。

十七.激光和惯导LIO-SLAM框架学习之IMU和IMU预积分相关推荐

  1. 十九.激光和惯导LIO-SLAM框架学习之项目工程代码介绍---代码框架和一些文件解释

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  2. 十五.激光和惯导LIO-SLAM框架学习之惯导与雷达外参标定(1)

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  3. 十四.激光和惯导LIO-SLAM框架学习之惯导内参标定

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  4. 十六.激光和惯导LIO-SLAM框架学习之配置自用传感器实时室外跑LIO-SAM框架

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  5. LVI-SAM:紧耦合的激光视觉惯导SLAM系统(Tixiao Shan新作,已开源)

    论文地址:在公众号「3D视觉工坊」,后台回复「LVI-SAM」,即可直接下载. 我相信很多人对激光视觉惯导融合的系统都是这样设计的,但是最难的是把自己的想法保质保量的实现出来.我们做不到但是大佬可以! ...

  6. 九.激光SLAM框架学习之LeGO-LOAM框架---速腾Robosense-16线雷达室外建图和其他框架对比、录包和保存数据

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  7. 3D惯导Lidar SLAM

    3D惯导Lidar SLAM LIPS: LiDAR-Inertial 3D Plane SLAM 摘要 本文提出了最近点平面表示的形式化方法,并分析了其在三维室内同步定位与映射中的应用.提出了一个利 ...

  8. LIO-SAM: 紧耦合的激光与惯导里程计方案

    点云PCL免费知识星球,点云论文速读. 标题:LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 作者 ...

  9. 十二.激光SLAM框架学习之livox-loam框架安装和跑数据集

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

最新文章

  1. 1351.统计有序矩阵中的负数
  2. 模拟post请求--测试api是否可用--再交给ios开发
  3. winrar压缩文件但是排除指定目录
  4. pat天梯赛L1-050. 倒数第N个字符串
  5. 绝地求生12月18日服务器信息,绝地求生12月18号几点更新维护完 2019绝地求生12月18日更新维护开服时间...
  6. java整数的因式分解_如何在Java中找到整数的质数-因式分解
  7. linux indent命令: 调整C原始代码文件的格式
  8. spring框架中@PostConstruct的实现原理
  9. svg 动画_根据AI导出的SVG path制作SVG线条动画
  10. python多线程调度_python并发编程之进程、线程、协程的调度原理(六)
  11. C11中gets()的函数被删除
  12. 杭电5253连接的管道
  13. 想让照片里的美女“回头”?清华MIT谷歌用AI帮你实现了
  14. Halcon 学习总结——仿射变换
  15. 安全漏洞之host头攻击漏洞
  16. ASC19 T4 CESM
  17. QuickTime不支持播放HEVC编码mp4/mov视频
  18. oracle rebuild online,rebuild online 请慎用
  19. win10系统双屏如何设置不同的桌面
  20. Maya导出ASCII格式的FBX文件

热门文章

  1. 算法心得1:由$nlogn$复杂度的LIS算法引起的思考
  2. ecshop 订单-》订单状态 2
  3. MOSS2007服务器端的安装与基本配置
  4. 3G了 由PC-手机 我们想了些什么呢
  5. chrome 发送请求出现:Provisional headers are shown 提示
  6. 10 个非常有用的 SVG 动画的 JavaScript 库
  7. 详解c++指针的指针和指针的引用
  8. 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.6.2 使用StAX解析器
  9. 将中国标准时间转换成标准格式的代码
  10. maven项目多模块部署的时候构建顺序