经典文献阅读之--SRIF-based LiDAR-IMU Localization(SRIF的LiDAR-IMU自动驾驶鲁棒定位)

news2025/4/18 22:30:14

0. 简介

对于车辆来说,我们更希望能够得到一个有效的定位系统,能够保证高精度的同时,拥有较高的鲁棒性,而《Robust SRIF-based LiDAR-IMU Localization for Autonomous Vehicles》就是这样一篇文章,在各种场景中实现了厘米级的精度和高鲁棒性。为了实现鲁棒、准确的点云特征匹配,文中提出了一种从激光雷达点云中提取结构化、高识别力特征的新方法。对于高频运动预测和噪声传播,我们采用增量式流形IMU预积分。我们还采用了多帧滑动窗平方根逆滤波器,使系统在功耗有限的前提下保持数值稳定的结果。为了验证文中的方法,作者还在配备LiDAR-IMU系统的多个应用程序和平台上测试了融合算法。实验结果表明,该融合框架具有较高的定位精度、较高的鲁棒性和较好的泛化能力。

1. 文章贡献

该框架的概述如图1所示。本文的贡献如下:

  1. 本文提出了一种新颖的激光雷达点云特征提取方法。利用这些新颖特征可以在动态或部分改变的环境中实现精确配准和操作。与基于经典迭代最近点(ICP)[5],[31]或基于正态分布变换(NDT)[3],[25]的方法相比表现更好。
  2. 本文的定位框架建立在平方根逆滤波器(SRIF)[27]之上。这使得我们的工作具有数值稳定性和低计算功耗,即使在基于ARM的平台上也可以实现实时操作。
  3. 通过本文的实验结果证明,我们的框架在高度动态的车辆或特征匮乏的场景中表现良好。我们的系统的精度和计算负载也优于最先进的LOAM [31]框架的定位模块。
    在这里插入图片描述

图1. 所提出的多传感器融合框架概述:灰色块表示原始传感器输入;绿色块代表特征提取、分类和聚合模块;蓝色块是离线生成全局地图先验的相应对应部分;SRIF求解器的核心部分在黄色块中。

2. 特征提取

LiDAR数据中对于点级别特征的判别能力较弱,因为LiDAR点是稀疏的且缺乏纹理信息。我们提出了提取多个线和surfel特征,这些特征在图1中用绿色方块表示。与基于ICP的跟踪相比,我们基于高层特征的跟踪器可以减轻计算负荷,同时提高鲁棒性。

3D点云被格式化为一个矩阵,其中列索引表示水平角度,行索引表示垂直光束层。点 p i ; j p_{i;j} pi;j(列索引 i i i和行索引 j j j)的相对时间 D t D_t Dt表示自扫描的第一个点被采样以来经过的时间,并且我们通过 l i ; j l_{i;j} li;j定义 p i ; j p_{i;j} pi;j的深度。在所有点都在该矩阵中注册之后,我们可以进行运动补偿和高级特征提取。

2.1 运动补偿(比较通用的部分)

LiDAR通过周期性扫描环境来获取点云。然而,当LiDAR捕获一个扫描时,LiDAR也在移动,这会扭曲捕获到的点云。去扭曲的过程是将点云与相同时间瞬间进行配准。在这项工作中,我们使用IMU作为辅助设备进行相对运动估计和运动补偿。我们使用成本低廉的MTI-3 MEMS IMU,它输出200 Hz的动态测量值,并通过总线通信与LiDAR进行硬件同步。IMU预积分和LiDAR运动补偿遵循在SO(3)流形上提出的标准预积分方法,如[10]和[9]所建议的那样。

2.2 地面平面识别(比较通用的部分)

对于自动驾驶车辆来说,通常约有三分之一的LiDAR扫描是地面点,这些点无法为特征的提取、描述和跟踪提供独特的信息。为了减轻后续特征提取的复杂性,我们首先借助IMU识别出地面点。我们从IMU预积分中获得当前帧的重力方向ng。我们还知道LiDAR的高度d。有了 n g n_g ng和给定的高度 d d d,如果 d − τ 1 < ∣ [ p i ; j l i ; j ] T n g ∣ < d + τ 1 d-\tau_1 < |[p_{i;j} l_{i;j}]^T n_g| < d +\tau_1 dτ1<[pi;jli;j]Tng<d+τ1,其中 τ 1 \tau_1 τ1是预定义的阈值,我们便可以识别出地面上的点。我们在系统中将地面平面作为另一个Surfel约束添加到位姿估计中。

2.3 LiDAR 特征提取和描述

为了使系统在动态场景下更加稳健,提取点云特征并将它们放入正确的类别中是至关重要的。我们首先将点分为两类:角点和普通点,对于这些点,我们依赖于几何属性。我们不使用曲率来定义点的平滑度,而是简单地考虑目标点和相邻两个点之间形成的线段的角度的反余弦。它由以下公式给出:
在这里插入图片描述
如图2所示,拐角点进一步分为4类:左拐角点、右拐角点、单一拐角点和普通拐角点。四种拐角类型定义如下:

  1. 左拐角点和右拐角点(参见图2(a)和图2(b),通常出现在建筑物或大型庇护所中)。对于一个左拐角点,激光束例如扫描车辆右侧的建筑物,只有部分LiDAR扫描将覆盖该建筑物。位于第 i i i个水平层上且仍位于建筑物上的最左点被定义为左拐角点,表示为 p i , j p_{i,j} pi,j。让 p i , j − m p_{i, j−m} pi,jm p i , j p_{i,j} pi,j左边的第一个有效点。左拐角点应满足以下条件之一:
    在这里插入图片描述
    τ 2 τ_2 τ2 τ 3 τ_3 τ3是两个预设的阈值。类似地,右角点需要满足以下条件之一:
    在这里插入图片描述
    其中n的定义是这样的: p i , j + n p_{i,j + n} pi,j+n是扫描行 i i i中往右第一个有效的点。在我们的系统中, τ 2 = 5 τ_2=5 τ2=5 τ 3 = 0.5 m τ_3=0.5m τ3=0.5m

  2. 单个角点(见图2©):描述像树干或电线杆这样的类似杆的对象。单角点必须同时满足两个条件:
    在这里插入图片描述
    相邻的点被忽略,不会用于构成特征。

  3. 普通角点(见图2(d)):普通角点是最常见的角点。当激光束扫描建筑物时,可能会扫描两个相邻的非平行表面。两个表面相交处的点将被识别为普通角点。它们满足以下约束:
    在这里插入图片描述
    在我们的系统中, τ 4 = 134 ° τ4 = 134° τ4=134° τ 5 = 143 ° τ5 = 143° τ5=143°

没有被分类为角点或地面点的剩余点被标记为普通surfel点。我们称这样的点为surfel,并通过聚类策略对它们进行聚合。
在这里插入图片描述

图2. LiDAR的四种角线类型:左右角代表部分可见的物体,单角表示类似杆子的物体,正常角表示常见的边缘。

2.4 线和Surfel的聚合

我们再次使用格点网格将3D点进一步划分为单元格,以便快速和精确地将点聚合成更高级别的特征。这是顺序地针对线和Surfel完成的。点云中的每一层被分成 x x x个角度区间(这里称为单元格),根据它们是否包含特定类型的点,将它们标记为空或占用。如果在相邻层中满足某些兼容性条件,则在相同的角度索引处聚合占用单元格(参见算法2和1)。对于线、正常以及地面Surfel点,我们在每个扫描行中使用了180、72和36个单元格。定义 G i , j G_{i,j} Gi,j为第 i t h i_{th} ith层中的第 j t h j_{th} jth个单元格。
在这里插入图片描述
在这里插入图片描述
我们根据原始点的角点类型将标记点聚类成四种类型的线(左线、右线、单线和正常线)和两种类型的Surfel(正常Surfel和地面Surfel)。

3. 地图生成器

由于我们进行基于地图的定位,全局地图的质量对于定位精度至关重要。因此,我们使用一辆专门装备有高级XW-GI5651惯性导航系统(INS)、RTK系统、32层和两个16层Robosense激光雷达以及一组编码器的车辆。这样一辆设备齐全的车辆可以提供高精度的点云地图。我们使用与第二部分相同的方法来获取全局地图中的线和surfel特征。

4. 特征提取

将新帧 F k \mathbb{F}_k Fk 融合到滑动窗口 W k − 1 \mathbb{W}_{k-1} Wk1 中,需要根据空间距离和类型关联同类型特征。设 l i w = ( c i w , n i w , s i w ) l^w_i = (c^w_i , n^w_i , s^w_i ) liw=(ciw,niw,siw)为滑动窗口中的第 i i i个特征,其中 c i w c^w_i ciw 是特征 l i w l^w_i liw 的中心点, n i w n^w_i niw 是相应的法线, s i w s^w_i siw 是特征类型。因此,当前帧 F k \mathbb{F}_k Fk 的第 j j j个特征由 l j f l^f_j ljf 表示。将滑动窗口帧 W k − 1 \mathbb{W}_{k-1} Wk1 与帧 F k − 1 \mathbb{F}_{k-1} Fk1 重合。对于新帧 F k \mathbb{F}_k Fk,IMU提供了从 F k \mathbb{F}_k Fk F k − 1 \mathbb{F}_{k-1} Fk1(因此是 W k − 1 \mathbb{W}_{k-1} Wk1 )的相对姿态。设 R k , k − 1 R_{k,k-1} Rk,k1 t k , k − 1 t_{k,k-1} tk,k1 分别表示从 W k − 1 \mathbb{W}_{k-1} Wk1 F k \mathbb{F}_k Fk 的旋转和平移。对于当前帧中的每个特征 l i f l^f_i lif,我们首先在滑动窗口内找到其10个最近的邻居 N ( l i f ) N(l^f_i ) N(lif),并根据它们的空间距离进行匹配。与 N ( l i f ) N(l^f_i ) N(lif)中第 j j j 个邻居特征的匹配得分为:
在这里插入图片描述
其中, I ( ) I() I()是相同特征类型的指示函数(如果 s j w = = s i f s^w_j == s^f_i sjw==sif,则 I ( s j w , s i f ) = 1 I(s^w_j ,s^f_i ) = 1 I(sjw,sif)=1,否则 I ( s j w , s i f ) = 0 ) I(s^w_j ,s^f_i ) = 0) I(sjw,sif)=0) g ( ) g() g()表示法向量偏差。在我们的系统中, g ( n 1 , n 2 ) = ∣ n 1 T n 2 ∣ g(n_1,n_2) = |n^T_1 n_2| g(n1,n2)=n1Tn2。我们通过最大化来找到特征匹配。
在这里插入图片描述

…详情请参照古月居

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

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

相关文章

起名大师,支持多种取名方式,根据自己的喜好去选择

软件功能&#xff1a; 1.参考宝宝姓氏、性别、生辰八字、天格、地格辅助用户为宝宝取名。 2.一次可生产数千个好名字&#xff0c;您还可根据笔画数、拼音、五行等筛选喜欢的名字。 3.提供10余种方法供起名选择&#xff0c;比如指定取名&#xff0c;谐音取名&#xff0c;生日取…

【百度】判断ip地址是否合法

在LeetCode上没有看到这个题目&#xff0c;加上对String的API记得不清楚&#xff0c;导致这个题目没有写得很好&#xff0c;许愿面试官能够仁慈一点 一个合法的ip地址应该有&#xff1a; 三个点将字符串划分为4个数字数字的大小[0,255]&#xff0c;且数字不能为空 合理应用St…

mycat 垂直分库与水平分表使用详解

说明 在了解mycat的常用分片规则之前,有必要再对涉及到分片规则相关的几个配置文件做深入的了解,包括:schema.xml,server.xml,rule.xml等, 其中最核心的schema.xml文件是配置分片规则的入口文件,有必要对该配置文件中的关键参数做了解,且看下面这幅图,回顾下里面的配置…

【C++】二叉搜索树KV模型

最典型的一个场景&#xff0c;自动翻译软件&#xff0c;输入中文&#xff0c;输出对应的英文&#xff0c;输入英文&#xff0c;输出对应的中文。 可以用一颗搜索二叉树来实现这一功能。 K->key V->val 基础结构和普通搜索二叉树保持一致&#xff0c;只是成员多了一个_val…

关于Tab制表符,点击一次跳很多字符的问题解决

首先在出现问题的地方右键鼠标&#xff0c;出现后点击段落。 进入后点击左下角的制表位 进入后点击全部清除&#xff0c;然后确认&#xff0c;问题就解决了&#xff08;哪里有问题就处理哪里&#xff09;

天纵竞赛系统助力江苏省“苏小登杯”不动产登记技能竞赛暨首届全国赛省级选拔赛

7月14日&#xff0c;第四届江苏省“苏小登杯”不动产登记技能竞赛暨首届全国赛省级选拔赛在苏州广播电视总成功举办。天纵竞赛系统提供核心软件技术及其配套硬件支持。 本次竞赛由江苏全省13支队伍、52名一线不动产登记人员参加比赛&#xff0c;竞赛环节包括笔试、现场竞答、代…

性能测试 —— JMeter分布式测试及其详细步骤

性能测试概要 性能测试是软件测试中的一种&#xff0c;它可以衡量系统的稳定性、扩展性、可靠性、速度和资源使用。它可以发现性能瓶颈&#xff0c;确保能满足业务需求。很多系统都需要做性能测试&#xff0c;如Web应用、数据库和操作系统等。 性能测试种类非常多&#xff0c…

windows操作小技巧1:文件批操作更改类型

今日更新一个Windows操作小技巧: 日常生活中我们有批量操作更改文件后缀名&#xff08;类型&#xff09;的需要&#xff1a; 比如这有五个.txt文本文件&#xff0c;我要想将其批量改为.html该如何操作呢&#xff1f; 首先新建文本文档&#xff1a; 其次在新建的文本文档输入以…

B 端软件:常见知识梳理

前言 我一直从事企业级软件研发工作&#xff0c;也就是我们通常称之为 B 端软件。近年来&#xff0c;我的工作重心主要在研发低代码平台和 aPaaS 平台&#xff0c;这使我对 B 端软件有了更深入的理解。 和 B 端软件对应的就是我们熟悉的 C 端软件&#xff0c;我们手机中安装的那…

VsCode添加Vue模版代码片段

文章目录 VsCode添加Vue模版代码片段1. 复制一段已有要制作模板的Vue代码&#xff0c;比如&#xff1a;2. 粘贴到下方链接的工具网站&#xff0c;可自动生成模板代码的片段3. VsCode中设置代码片段3-1 打开菜单&#xff1a;首选项-用户片段3-2 出现如下的搜索栏&#xff0c;搜索…

简易注册中心监控NAS断电断网

日常使用NAS过程中&#xff0c;偶尔会出现家里断电或者断网的情况&#xff0c;NAS自带网络断开的通知功能&#xff0c;但需要是恢复网络链接后才会通知&#xff0c;而此时都恢复了&#xff0c;再通知也就没那么重要&#xff0c;还有断电情况下也是需要回家才能知道&#xff0c;…

opencv -12 图像运算之按 《位或》 运算(图像融合图像修复和去除)

位或运算 或运算的规则是&#xff0c;当参与或运算的两个逻辑值中有一个为真时&#xff0c;结果就为真。其逻辑关系可以类比为如图 所示的并联电路&#xff0c;两个开关中只要有任意一个闭合时&#xff0c;灯就会亮。 3-5 对参与或运算的算子的不同情况进行了说明&#xff0c;…

浅谈设计模式之工厂模式

0 工厂模式的介绍 工厂模式属于创建型模式&#xff0c;是Java中最常见的设计模式之一。工厂模式提供了一种将对象的实例化过程封装在工厂类的方式&#xff0c;通过工厂模式可以屏蔽掉对象的创建过程&#xff0c;对外提供了一种统一的接口来创建不同类型的对象。 优点&#xf…

数据结构01-线性结构-链表栈队列-队列篇

文章目录 参考&#xff1a;总结大纲要求线性结构-队列QQ号码解密 参考&#xff1a; 总结 本系列为C数据结构系列&#xff0c;会介绍 线性结构&#xff0c;简单树&#xff0c;特殊树&#xff0c;简单图等。本文为线性结构部分。 大纲要求 线性结构 【 3 】链表&#xff1a;单…

在线版PS就选这5个!能免费使用

虽然AdobePhotoshop作为专业的图形编辑工具为设计师带来了很多便利&#xff0c;但是它下载繁琐&#xff0c;费用昂贵的特性也让很多设计师望而却步。本文精心整理了5款能作为在线PS使用的设计工具&#xff0c;不仅能减轻操作设备的内存负担&#xff0c;而且可以免费使用&#x…

Java阶段五Day07

Java阶段五Day07 文章目录 Java阶段五Day07问题解析dubbo和nacos Dubbo负载均衡负载均衡介绍准备一个负载均衡的环境Dubbo负载均衡策略配置负载均衡的方式dubbo配置负载均衡优先级微服务阶段性架构 Spring Boot Starter自定义配置准备一个starter案例项目Spring框架版本迭代案例…

K8S安全风险及防护建议

Kubernetes&#xff08;K8S&#xff09;是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。一个Kubernetes集群通常包含跨多台计算机运行的控制平面和多个工作节点&#xff08;node&#xff09;&#xff0c;控…

415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将输入的字符串转换为整数形式。 示例 1&#xff1a; 输入&#xff…

被问懵了,加密后的数据如何进行模糊查询?

我们知道加密后的数据对模糊查询不是很友好&#xff0c;本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路&#xff0c;希望对大家有所启发。 为了数据安全我们在开发过程中经常会对重要的数据进行加密存储&#xff0c;常见的有&#xff1a;密码、手机号、电话号码、…

【中危】Apache Accumulo 身份认证过程缺陷

漏洞描述 Apache Accumulo是一个排序分布式的 Key-Value 存储应用。 在Apache Accumulo 2.1.0版本中&#xff0c;AccumuloClient 在构造新的实例时移除了自动身份验证机制&#xff0c;身份验证始终在 shell 中进行。当 shell 闲置时间过长&#xff0c;需要重新进行身份验证时&…