经典文献阅读之--DLIO(基于连续时间运动校正的轻量级激光雷达惯性导航系统)

0. 简介

一般来说,当系统经过不规则的地形时候,机器人自身会存在激烈运动会导致激光雷达扫描中的运动畸变,从而可能降低状态估计和建图的精度。虽然已经有一些方法用于缓解这种影响,但它们仍然过于简单或计算成本过高,难以应用于资源受限的移动机器人。之前这个团队开发了《经典文献阅读之–DLO》这套方法。该团队在23年又提出了《Direct LiDAR-Inertial Odometry: Lightweight LIO with Continuous-Time Motion Correction》一文。该轻量级激光雷达惯性导航系统算法,采用一种新的粗到细的方法构建连续时间轨迹以进行精确的运动校正。该方法的关键在于构建一组仅由时间参数化的解析方程,使得逐点去畸变的过程可以快速且可并行化。这种方法之所以可行,是因为我们的非线性几何观察器具有强大的收敛性质,可以为IMU的敏感积分步骤提供可靠的状态估计初始化。相关代码可以在GIthub上找到。

在这里插入图片描述

1. 主要贡献

本文提出了一种名为Direct LiDAR-Inertial Odometry (DLIO)的快速可靠的里程计算法,它提供了精确的定位和详细的三维建图(见图1),具有四个主要贡献。

  1. 首先,我们提出了一种新的粗到细的技术,用于构建连续时间轨迹,其中导出了一组具有恒定加加速度和角加速度运动模型的解析方程,以进行快速和可并行化的逐点运动校正。
  2. 其次,提出了一种新的简化结构,将运动校正和先验构建合并为一步,并直接执行扫描到地图的配准,大大降低了算法的总体计算负载。(Point-LIO也在做这个工作)
  3. 第三,我们利用了一种新的非线性几何观察器[10],它具有强大的性能保证,对于实现前两个贡献至关重要,在管道中以最小的计算复杂度鲁棒地生成机器人完整状态的准确估计。
  4. 最后,我们通过使用多个数据集对最先进的技术进行广泛的实验验证,证明了我们方法的有效性。

2. 系统概述

DLIO是一种轻量级的LIO算法,通过一个包含两个主要组件和三个创新的独特架构生成机器人状态估计和几何地图(见图2)。第一个组件是一个快速的扫描匹配器,通过与提取的局部子地图进行对齐,将密集的、经过运动校正的点云注册到机器人的地图上。在 W W W中逐点进行连续时间积分,确保修正后的点云具有最大的图像保真度,同时为GICP优化建立先验。在第二个组件中,一个非线性几何观察器[10]使用第一个组件的姿态输出更新系统状态,提供高速和可靠的姿态、速度和传感器偏差估计,这些估计具有全局收敛性。然后,这些估计将初始化下一个运动校正、扫描匹配和状态更新的迭代。

在这里插入图片描述

图2. 系统架构。DLIO的轻量级架构将运动校正和先验构建合并为一步,并去除了以前用于基于激光雷达的里程计所需的扫描对扫描模块。在W中逐点进行连续时间积分,确保修正后的点云具有最大的保真度,并通过自定义的基于GICP的扫描匹配器注册到机器人的地图上。随后,系统的状态由一个具有强大收敛性质的非线性几何观察器[10]进行更新,这些姿态、速度和偏差的估计然后初始化下一次迭代。

3. 符号表示

假设在时间 t k t_k tk开始的单次激光雷达扫描的点云表示为 P k P_k Pk,并用 k k k进行索引。点云 P k P_k Pk由相对于扫描开始时间的时间差 ∆ t k n ∆t^n_k tkn 测量的点 p k n ∈ R 3 p^n_k∈\mathbb{R}^3 pknR3组成,其中 n = 1 , … , N n = 1,…,N n=1N N N N是扫描中的总点数。世界坐标系表示为 W W W,机器人坐标系表示为 R R R,位于其重心,其中 x x x指向前方, y y y指向左侧, z z z指向上方。IMU的坐标系表示为 B B B,激光雷达的坐标系表示为 L L L,机器人在索引 k k k处的状态向量 X k X_k Xk定义为元组。

在这里插入图片描述

其中 p W ∈ R 3 p^W ∈ \mathbb{R}^3 pWR3是机器人的位置, q W q^W qW是四元数编码的方向,采用Hamilton符号表示,位于 S 3 \mathbb{S}^3 S3 v W ∈ R 3 v^W ∈\mathbb{R}^3 vWR3是机器人的速度, b a ∈ R 3 b^a ∈ \mathbb{R}^3 baR3是加速度计的偏差, b ω ∈ R 3 b^ω ∈ \mathbb{R}^3 bωR3是陀螺仪的偏差。IMU的测量值 a ^ \hat{a} a^ ω ^ \hat{ω} ω^被建模为

在这里插入图片描述

并用 i = 1 , … , M i = 1,…,M i=1M进行索引,表示在时钟时间 t k − 1 t_{k-1} tk1 t k t_k tk之间的 M M M次测量。为了简单起见,除非另有说明,否则索引 k k k i i i 分别出现在激光雷达和IMU速率上,并以这种方式书写。原始传感器测量值 a i a_i ai ω i ω_i ωi包含偏差 b i b_i bi和白噪声 n i n_i ni g g g是旋转后的重力向量。在本文中,我们解决以下问题:给定来自激光雷达的累积点云 P k P_k Pk 和由IMU在接收到每个扫描之间采样的测量值 a i a_i ai **和 ** ω i ω_i ωi,估计机器人的状态 X ^ i W \hat{X}^W_i X^iW和几何地图 M ^ k W \hat{M}^W_k M^kW

4. 预处理

DLIO的输入是由360度机械LiDAR(如Ouster或Velodyne(10-20Hz))收集的稠密的3D点云,以及来自6轴IMU的时间同步的线性加速度和角速度测量,IMU速率要比雷达高得多(100-500Hz)。在下游任务之前,所有传感器数据都通过外部校准转换为位于机器人重心处的 R R R对于IMU,必须考虑将刚体上的线性加速度测量位移的影响,如果该传感器与重心不重合,则通过考虑所有线性加速度在 R R R处通过角速度和IMU偏移之间的叉积来完成。为了最小化信息丢失,除了在原点周围使用 1 m 3 1m^3 1m3的框滤波器以删除可能来自机器人本身的点,并使用轻量级体素滤波器进行更高分辨率的点云处理外,我们不对点云进行预处理。这使我们的工作与其他试图检测特征(例如角落、边缘或surfels)或通过体素滤波器大量下采样云的工作区分开来。


5. 带联合先验的连续时间运动校正(重点内容)

旋转LiDAR传感器收集的点云在移动过程中会因旋转激光阵列在扫描过程中的不同时刻收集点而受到运动失真的影响。我们不再假设简单的运动(例如,恒定速度)来捕捉精细的运动,而是使用更准确的恒定加速度和角加速度模型通过两步粗到细的传播方案为每个点计算唯一的变换。此策略旨在最小化由于IMU的采样率和IMU与LiDAR点测量之间的时间偏移而引起的误差。在W中通过数值IMU积分[29]首先粗略构建扫描的轨迹,随后通过解决一组解析连续时间方程来进行细化(图3)。

在这里插入图片描述

图3. 粗到细的点云去畸变。通过两步过程去畸变扭曲的点 p L 0 ( A ) p^{L_0}(A) pL0(A),首先在扫描之间积分IMU测量,然后在连续时间中求解独特的变换(C)以将原始点 p L 0 p^{L_0} pL0去畸变为 p ∗ p^∗ p(B)

假设 t k t_k tk是接收到具有 N N N个累积点的点云 P k R P^R_k PkR的时钟时间,并且 t k + ∆ t k n t_k + ∆t^n_k tk+tkn是云中点 p k n p^n_k pkn的时间戳。为了近似每个点在 W W W中的位置,我们首先通过在 t k − 1 t_{k-1} tk1 t k + ∆ t k N t_k + ∆t^N_k tk+tkN之间积分IMU测量来获得运动估计:

对于 i = 1 , … , M i = 1,…,M i=1M,其中 M M M是两个扫描之间IMU测量的数量,其中 j ^ i = 1 ∆ t i ( R ^ ( q ^ i ) a ^ i − R ^ ( q ^ i − 1 ) a ^ i − 1 ) \hat{j}_i = \frac{1}{∆t_i}(\hat{R}(\hat{q}_i)\hat{a}_i - \hat{R}(\hat{q}_{i-1})\hat{a}_{i-1}) j^i=ti1(R^(q^i)a^iR^(q^i1)a^i1) α ^ i = 1 ∆ t i ( ω ^ i − ω ^ i − 1 ) \hat{α}_i = \frac{1}{∆t_i}(\hat{ω}_i - \hat{ω}_{i-1}) α^i=ti1(ω^iω^i1)分别是估计的线性jerk和角加速度。与 p ^ i \hat{p}_i p^i q ^ i \hat{q}_i q^i相对应的一组齐次变换 T ^ i W ∈ S E ( 3 ) \hat{T}^W_i∈\mathbb{SE}(3) T^iWSE3然后定义了扫描期间粗略的离散时间轨迹。然后,从最近的前置变换到每个点 p k n p^n_k pkn的解析连续时间解决方案恢复特定于点的去畸变变换 T ^ n W ∗ \hat{T}^{W∗}_n T^nW,使得

在这里插入图片描述

其中, i − 1 i-1 i1 i i i分别对应于最近的前一个和后一个IMU测量, t t t是点 p k n p^n_k pkn和最近的前一个IMU之间的时间戳, T ^ n W ∗ \hat{T}^{W∗}_n T^nW是对于 p k n p^n_k pkn所对应的 p ∗ p^∗ p q ∗ q^∗ q的变换(图4)。请注意,(5)仅由 t t t参数化,因此可以查询任何所需时间的变换以构建连续时间轨迹。

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01-单节点部署clickhouse及简单使用

1、下载rpm安装包: 官网:https://packages.clickhouse.com/rpm/stable/ clickhouse19.4版本之后只需下载3个rpm安装包,上传到节点目录即可 2、rpm包安装: 安装顺序为conmon->server->client 执行 rpm -ivh ./clickhouse-…

美团面试:Redis 除了缓存还能做什么?可以做消息队列吗?

这是一道面试中常见的 Redis 基础面试题,主要考察求职者对于 Redis 应用场景的了解。 即使不准备面试也建议看看,实际开发中也能够用到。 内容概览: Redis 除了做缓存,还能做什么? 分布式锁:通过 Redis 来做分布式锁是一种比较常见的方式。通常情况下,我们都是基于 Re…

JMeter的使用——傻瓜式学习【下】

目录 前言 1、自动录制脚本 1.1、原理 1.2、JMeter脚本录制 2、JMeter直连数据库 2.1、直连数据库的作用 2.2、JMeter直连数据库的步骤 案例: 3、JMeter的逻辑控制器 3.1、if控制器 案例: 3.2、循环控制器 案例: 3.3、ForEach控…

22吉林大学软件需求分析与规范(Software Requirements Analysis Specification)

写在前面: 4w多字笔记,可能显示有问题,带图片完整pdf版暂定10r一份,需要的同学可以加wx:fanaobo,备注软件需求笔记。 chapter 0 课程简介 课程简介: ◼ 软件工程专业核心课程之一 ◼ 软件工程课程体系最…

大数据毕业设计选题推荐-热门旅游景点数据分析-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

基于蜜獾算法的无人机航迹规划-附代码

基于蜜獾算法的无人机航迹规划 文章目录 基于蜜獾算法的无人机航迹规划1.蜜獾搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用蜜獾算法来优化无人机航迹规划。 1.蜜獾搜索算法 …

HTTPS的加密方式超详细解读

在了解https的加密方式之前,我们需要先行了解两个特别经典的传统加密方式: 1、对称加密 1.1、定义 需要对加密和解密使用相同密钥的加密算法。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解…

二叉树采用二叉链表存储:编写计算二叉树最大宽度的算法(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)

二叉树采用二叉链表存储:编写计算二叉树最大宽度的算法 (二叉树的最大宽度是指二叉树所有层中结点个数的最大值) 和二叉树有关的代码,基本都逃不过“先中后层”,这四种遍历 而我们这里是让你计算最大宽度&#xff0c…

如何使用Selenium处理Cookie,今天彻底学会了

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

【Linux】Nignx的入门使用负载均衡动静分离(前后端项目部署)---超详细

一,Nignx入门 1.1 Nignx是什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它使用事件驱动的异步框架,可同时处理大量请求,支持负载均衡、反向代理、HTTP缓存等常见Web服务场景。Nginx可以作为一个前端的Web服务器,也可…

VUE2和VUE3思维导图知识体系总结大对比

VUE2知识体系 VUE3知识体系 思维导图原件下载地址

前端难学还是后端难学?系统安全,web安全,网络安全是什么区别?

系统安全,web安全,网络安全是什么区别?三无纬度安全问题 系统安全,可以说是电脑软件的安全问题,比如windows经常提示修复漏洞,是一个安全问题 网页安全,网站安全,比如,…

【t5 pytorch版源码学习】t5-pegasus-pytorch源码学习

0. 项目来源 中文生成式预训练模型,以mT5为基础架构和初始权重,通过类似PEGASUS的方式进行预训练。 bert4keras版:t5-pegasus pytorch版:t5-pegasus-pytorch 本次主要学习pytorch版的代码解读。 项目结构: train…

Unity地面交互效果——3、曲面细分基础知识

大家好,我是阿赵。   之前介绍了使用动态法线贴图混合的方式模拟轨迹的凹凸感,这次来讲一下更真实的凹凸感制作。不过在说这个内容之前,这一篇先要介绍一下曲面细分着色器(Tessellation Shader)的用法。 一、为什么要做曲面细分 之前通过法…

canal+es+kibana+springboot

1、环境准备 服务器:Centos7 Jdk版本:1.8 Mysql版本:5.7.44 Canal版本:1.17 Es版本:7.12.1 kibana版本:7.12.1 软件包下载地址:链接:https://pan.baidu.com/s/1jRpCJP0-hr9aI…

【计算机网络】网络层:数据平面

一.网络层概述 每台路由器的数据平面的主要功能时从其输入链路向其输出链路转发数据报,控制平面的主要功能是协调这些本地的每路由转发动作,使得数据报沿着源和目的地主机之间的路由器路径最终进行端到端传送。 网络层不运行运输层和应用层协议。 转发是…

Pytorch网络模型训练

现有网络模型的使用与修改 vgg16_false torchvision.models.vgg16(pretrainedFalse) # 加载一个未预训练的模型 vgg16_true torchvision.models.vgg16(pretrainedTrue) # 把数据分为了1000个类别print(vgg16_true) 以下是vgg16预训练模型的输出 VGG((features): S…

FFmpeg直播能力更新计划与新版本发布

// 编者按:客户端作为直接面向用户大众的接口,随着技术的发展进化与时俱进,实现更好的服务是十分必要的。FFmpeg作为最受欢迎的视频和图像处理开源软件,被相关行业的大量用户青睐,而随着HEVC标准的发布到广泛使用&am…

【jvm】虚拟机栈

目录 一、背景二、栈与堆三、声明周期四、作用五、特点(优点)六、可能出现的异常七、设置栈内存大小八、栈的存储单位九、栈运行原理十、栈帧的内部结构10.1 说明10.2 局部变量表10.3 操作数栈10.4 动态链接10.5 方法返回地址10.6 一些附加信息 十一、代…

整理10个地推拉新app接单平台,免费一手推广渠道平台干货分享

1. 聚量推客: “聚量推客”汇聚了众多市场上有的和没有的地推网推拉新接单项目,目前比较火热,我们做地推和网推从业者如果长期在这行业去做推广可以使用这个平台,价格高数据也好,大部分拉新项目也都是官签一手资源 一…