【文献分享】NASA JPL团队CoSTAR一大力作:直接激光雷达里程计:利用密集点云快速定位

news2024/11/26 13:43:39

论文题目:Direct LiDAR Odometry: Fast Localization With Dense Point Clouds

中文题目:直接激光雷达里程计:利用密集点云快速定位

作者:Kenny Chen, Brett T.Lopez, Ali-akbar Agha-mohammadi

论文链接:https://arxiv.org/pdf/2110.00605.pdf

论文开源代码:https://github.com/vectr-ucla/direct_lidar_odometry

0 笔者个人体会

这篇文章的整体算法的大结构还是与LOAM类似,分成两个部分:scan-to-scan(对应于LOAM的laserOdometry部分),scan-to-map(对应于LOAM的laserMapping部分),但是对于其中非常多的细节进行了创新,我认为这些创新都很有可取之处。比如文中提到的在判断是否添加关键帧时使用的自适应阈值,根据场景大小调整平移距离阈值,这个就可以用到我们的研究开发中;还有那个数据结构重复利用,节省了数据创建释放过程的时间,这个思想看似小改变,但是对于嵌入式设备中的实时性却是有很重要的意义。

个人认为有一个地方还可以进行小改进,注意到两个部分中都是使用了作者的GICP算法进行点云配准,没有进行解耦,scan-to-map阶段提高精度的作用主要体现在匹配点的数量增加,如果使用了两种不同的配准算法,可能会有更精确的效果。

1 效果展示

2 引言

在大型、具有感知挑战性的环境中,准确的状态估计和映射已经成为自主移动机器人的关键能力。基于激光雷达的SLAM性能的瓶颈之一,就是每次扫描的大量数据点很快就会压倒计算有限的处理器(比如嵌入式),这可能导致帧下降,最终导致姿态估计不佳。更具体地说,scan-to-scan的对齐需要两个云之间对应点的配准,但这个过程通常涉及最近邻搜索,随着每次扫描点的数量呈指数增长。基于特征的方法试图通过只使用最突出的点来缓解这种情况,但这些方法通常采用计算密集型的特征提取步骤,可能会意外丢弃数据,否则可能有助于提高下游配准的质量。

本文主要贡献:

  • 一种自适应关键帧系统,该系统通过一种新颖的空间度量来有效地捕获重要的环境信息。
  • 提出了一种基于关键帧的快速子映射方法,该方法通过凸优化生成允许的局部子映射来进行全局姿态优化。
  • NanoGICP,这时一个定制迭代的壁橱点求解器,用于轻量级点云扫描匹配,数据结构回收,消除冗余计算。

3 算法框架

算法框架如下图所示,主要部分就是预处理、scan-to-scan、scan-to-map、地图关键帧管理几个部分。

3.1 预处理

为了最大限度地减少原始传感器数据的信息损失,在预处理过程中只使用了两个滤波器:

  • 首先,我们通过原点周围大小为1 m³的盒子滤波器去除可能来自机器人本身的所有点返回。
  • 然后将生成的云通过分辨率为0.25 m的3D体素网格滤波器发送,以便对后续任务的数据进行轻微采样,同时在周围环境中保持主导结构。

在这项工作中,没有校正运动失真,因为非刚性变换可能会带来计算负担,而是直接使用密集点云,而不是像大多数工作那样提取特征。经过预处理后,每个云平均包含1万个点

3.2 通过Generalized-ICP进行扫描匹配

这个过程通常分两个阶段进行:

  1. 首先提供最佳的瞬时猜测,也就是scan-to-scan的过程
  2. 随后将其改进为与之前的关键帧位置更加全局一致,也就是scan-to-map的过程

1.scan-to-scan

在雷达里程计L中,计算相邻帧的相对变换 X ^ k L \hat X^L_k X^kL:
X ^ k L = a r g m i n ϵ ( X k L P k s , P k t ) \hat X^L_k = argmin \epsilon (X^L_kP^s_k,P^t_k) X^kL=argminϵ(XkLPks,Pkt)

残差项是由GICP计算得到:
ϵ ( X k L P k s , P k t ) = ∑ i N d i T ( C k , i t + X k L C k , i s X k L T ) − 1 d i \epsilon (X^L_kP^s_k,P^t_k)=\sum^N_i d_i^T(C^t_{k,i} + X^L_kC^s_{k,i}X_k^{L^T})^{-1}d_i ϵ(XkLPks,Pkt)=iNdiT(Ck,it+XkLCk,isXkLT)1di
C k , i t C^t_{k,i} Ck,it C k , i s C^s_{k,i} Ck,is分别是第k-1时刻和k时刻点云的协方差矩阵, d t = p i t − X k L p i s d_t=p^t_i-X^L_k p^s_i dt=pitXkLpis表示对应点的距离残差。

如果有IMU,则使用IMU预积分提供一个先验初始猜测,如果没有IMU则设置先验猜测为单位矩阵I,以减少收敛到次优局部最小值的可能,文章中有一些关于IMU预积分的说明,这里就不多说了。

2.scan-to-map

这部分的目标不是计算两个瞬时点云之间的相对变换,而是通过与局部子图匹配的方式,进一步改进前一步的运动估计,使其更加全局一致。
换句话说,这里的任务是计算当前源云 P k s P^s_k Pks和某些子图 S k S_k Sk之间的最优变换 X k W X^W_k XkW,使得:

X ^ k W = a r g m i n ϵ ( X k W P k s , S k ) \hat X^W_k = argmin \epsilon (X^W_k P^s_k,S_k) X^kW=argminϵ(XkWPks,Sk)
残差项是与scan-to-scan类似:
X k W = a r g m i n ∑ j M d j T ( C k , j S + X k W C k , j s X k W T ) − 1 d j X^W_k=argmin \sum^M_j d_j^T(C^S_{k,j} + X^W_k C^s_{k,j}X_k^{W^T})^{-1}d_j XkW=argminjMdjT(Ck,jS+XkWCk,jsXkWT)1dj
这个公式使用前一节从L到W的scan-to-scan的结果进行初始化,即: X k W = X k − 1 W ∗ X k L X^W_k = X^W_{k−1} * X^L_k XkW=Xk1WXkL,以便该先验运动可以与历史地图数据进行比较,以获得全局一致性。

3.基于关键帧的快速子图

这项工作的一个关键创新在于如何管理地图信息,并在scan-to-map匹配中快速生成局部子地图,以进行全局自运动细化。作者没有直接使用点云并将点存储到典型的八叉树数据结构中,而是保留了要在其中搜索的关键帧的历史记录,其中每个关键帧都以键值对的形式链接到相应的点云帧。然后通过连接关键帧子集的相应点云来生成用于scna-to-map匹配的局部子地图,而不是直接在机器人当前位置的某个半径内检索局部点。

这种设计选择的含义是双重的:首先,通过在“关键帧空间”而不是“点云空间”中搜索,得到了一个计算上更容易处理的问题。

此外,与基于范围的方法相比,基于关键帧的方法构建了更宽松的子地图。也就是说,由于从关键帧点云导出的子图的大小完全依赖于激光雷达传感器的距离,而不是预定的距离,派生的子图可以与当前扫描有更大的重叠。

固定半径r = 20 m的子图(图a)与当前扫描没有充分重叠,并且由于只包含空间附近的点,可能会随着时间的推移而引入漂移;然而,基于关键帧的方法(图b)涵盖了当前扫描的大部分内容,这有助于更好地实现扫描到映射的对齐。

1)通过kNN和凸包选择关键帧:设 K k K_k Kk为所有关键帧点云的集合,如下:将子地图 S k S_k Sk定义为K个最近邻关键帧扫描 Q k Q_k Qk和L个最近邻凸包扫描 H k H_k Hk的连接,使得 S k = Q k ⊕ H k S_k = Q_k⊕H_k Sk=QkHk

2)自适应关键帧:关键帧节点添加通常使用固定阈值(例如,每1米或10◦的平移或旋转变化),但最佳位置可能高度依赖于周围环境的结构。更具体地说,在大规模环境中,点云扫描捕捉到的特征更加突出,可以在更长的时间内依赖。相反,对于狭窄或小规模的环境,需要更小的阈值来持续捕获子地图中的小规模特征(即紧角),以获得更好的定位。因此,需要根据瞬时点云扫描中的“空间”来缩放新关键帧的平移阈值,定义为 m k = α m k − 1 + β M k m_k = \alpha m_{k−1} + \beta M_k mk=αmk1+βMk,其中 M k M_k Mk为预处理点云中原点到每个点的中值欧式距离,α = 0.95, β = 0.05, m k m_k mk为用于缩放关键帧阈值 t h k th_k thk的平滑信号,在k时刻使:

t h k = { 10 m ,      i f   m k > 20 m 5 m ,        i f   m k > 10 m & m k ≤ 20 m 1 m ,        i f   m k > 5 m & m k ≤ 10 m 0.5 m ,     i f   m k ≤ 5 m th_k =\left\{ \begin{array}{l} 10m,\ \ \ \ if\ m_k>20m\\ 5m, \ \ \ \ \ \ if\ m_k>10m\&m_k≤20m\\ 1m, \ \ \ \ \ \ if \ m_k>5m\&m_k≤10m\\ 0.5m, \ \ \ if \ m_k≤5m\\ \end{array} \right. thk= 10m,    if mk>20m5m,      if mk>10m&mk20m1m,      if mk>5m&mk10m0.5m,   if mk5m

旋转阈值固定在30°。下图展示了关键帧添加以及自适应关键帧的效果,这个操作有助于增强对环境维度变化的鲁棒性。

3.3 算法优化

1.扫描拼接子地图法线

广义icp涉及最小化两个云之间的平面距离,其中这些平面通过扫描中每个点的计算协方差来建模。文章不是在每次迭代中计算子地图中每个点的法线,而是假设子地图协方差 C k S C^S_k CkS可以通过将构成子地图的n个关键帧中的法线 C k , n S C^S_{k,n} Ck,nS拼接起来来近似,即 C k S ≈ ∑ n N C k , n S C^S_k≈\sum^N_n C^S_{k,n} CkSnNCk,nS。因此,不需要显式地计算每个子地图的法线集,而只需将先前计算的法线集拼接在一起即可重建。

2数据结构回收利用

在上述基础上,当前LiDAR里程计的几个算法步骤可以从数据结构共享和重用中受益,通过消除不必要和冗余的操作,大大降低了整体系统开销。如下表所示,该系统总共需要8个元素才能成功执行scna-to-scan和scna-to-map的匹配。

在四个必需的kdtree数据结构中,只有两个需要显式构建。也就是说,源(输入)云 T k s o u r c e T^{source}_k Tksource的树可以在每次扫描采集时只构建一次,并在两个模块之间共享(因为两个源都使用相同的扫描)。对于scan-to-scan的目标树 T k t a r g e t T^{target}_k Tktarget,这仅仅是前一次迭代的扫描到扫描的源树 T k − 1 s o u r c e T^{source}_{k-1} Tk1source,因此可以传播。scna-to-map的目标树需要显式地构建,但由于子地图是从一组关键帧派生的,因此只有当通过我们的kNN和凸包策略选择的关键帧集从一次迭代到下一次迭代发生变化时,才需要执行此构建,例如 S k ≉ = S k − 1 S_k≉= S_{k−1} Sk=Sk1。否则,可以再次重用数据结构以节省额外的计算量。另一方面,GICP所需的点协方差 C k C_k Ck只需在每次扫描采集中计算一次,其数据可以直接在其他三个实例中共享。

3.双NanoGICP

为了促进扫描匹配模块之间的交叉对话,作者开发了NanoGICP,这是一种自定义迭代最近点求解器,它结合了FastGICP和NanoFLANN开源软件包,并对数据结构共享进行了额外的修改。
NanoGICP使用NanoFLANN高效构建KD-tree,用FastGICP进行点云对应匹配。

4 实验与结果

4.1 组件评估

1.基于关键帧的子图创建

比较了三种子映射方案的绝对姿态误差(APE)、处理时间和CPU负载,包括:基于半径(r = 10 m)、基于1m静态阈值的关键帧,以及基于自适应阈值的关键帧。

在图中可以看出:关键帧空间中的子地图可以通过考虑更远的点来显著减少位置误差,否则这些点将超出基于半径的方法的范围。处理时间和CPU负载显示出类似的趋势:基于半径的处理每次扫描明显慢于每次扫描74.2 ms,平均CPU负载为37.5%,而静态和自适应方案分别为21.6 ms / 10.2%和19.1 ms / 9.1%。

2.数据结构回收利用

测量和比较不同回收方案之间的处理时间和CPU使用率通过箱线图和下降的百分比扫描数据集。

回收kdtrees而不回收协方差可以略微改善处理时间和CPU百分比,而回收协方差而不回收kdtrees可以提供更显著的性能提升;这是合理的,因为文中的协方差回收方案比kdtree重用更具主动性。最后,使用表中详细说明的完整方案显着降低了这两个指标,平均处理时间为21.9 ms, CPU负载为9.5%,这可以防止任何LiDAR帧丢失。

3.NanoGICP

该基准测试测量了在100次运行中对齐两个LiDAR扫描的平均收敛时间,并与PCL的GICP实现以及FastGICP的多线程实现进行了比较。可以观察到,与FastGICP (72.88 ms)和PCL的GICP (178.24 ms)相比,NanoGICP的平均收敛速度(42.53 ms)更快。

4.2 基准测试结果

为DLO的测程精度和CPU负载与几种LiDAR和LiDAR-imu测程方法(包括BLAM, Cartographer,LIO-Mapping,LOAM和LOCUS)进行了比较,使用来自地下挑战赛城市电路的Alpha和Beta课程数据集,结果如下表所示。

结果所示:提出的方法的CPU负载被测量为远低于任何其他算法,平均和峰值使用不到一个核心。除了内部数据结构的广泛重用之外,这可能是系统生成子地图的结果。这一观察结果也可以解释DLO的绝对姿势误差(APE)和平均误差(ME)要低得多,相对姿势误差也有类似的趋势。有了这个更快的处理时间,文中的方法在Alpha和Beta过程中都优于所有其他方法,即使没有运动失真校正,在Beta过程中对于max, mean和standard deviation的精度也是两倍以上。除了更宽松的子地图方法之外,所提出的方法比其他方法更不可能掉帧,并且有处理资本以更高的分辨率匹配密集的点云。

4.3 田野实验

使用Ouster OS1将DLO集成到飞行器(上图a)上,使用Velodyne VLP-16将DLO集成到Boston Dynamics Spot(上图b)上,在两个具有感知挑战性的环境中进行了手动和自动遍历:在肯塔基州列克星敦的地下石灰岩洞穴和加利福尼亚州洛杉矶的废弃地铁中(下图)。

这两个地点都包含经常挑战感知系统的环境属性,包括光线条件差,没有特色的走廊,以及灰尘或雾等微粒的存在。尽管在废弃的地铁中穿越了超过850米的三个不同的楼层,文中的系统仅报告了10厘米的端到端漂移,这主要归功于DLO强大的关键帧方案,该方案适用于大小空间。在地下矿井的试验表明:虽然洞穴深处的环境没有任何外部照明,但DLO仍然可以在348米的自主飞行中可靠地跟踪飞行器。这些结果证明了文中的方法在现实世界中的可靠性。

5 总结

这项工作提出了Direct LiDAR Odometry (DLO),这是一种轻量级和精确的前端定位解决方案,在极端环境下长期遍历的计算开销最小。一个关键创新是我们如何有效地使用关键帧-点云对数据库派生出用于全局姿态优化的局部子地图。这反过来又允许大量的求解器数据结构在系统模块之间共享和重用,所有这些都可以使用我们定制的NanoGICP云注册包来实现。

未来将会将研究重点放在与IMU的紧耦合上。

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

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

相关文章

如何使用Plex在Windows系统上搭建一个全能私人媒体影音站点

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…

WebSocket Day03 : SpringMVC整合WebSocket

前言 在现代Web应用程序中,实时性和即时通信变得越来越重要。传统的HTTP请求-响应模式无法满足实时数据传输和双向通信的需求。随着技术的发展,WebSocket成为了一种强大而灵活的解决方案。 WebSocket是HTML5提供的一种新的通信协议,它通过一…

基于蛇优化算法的无人机航迹规划-附代码

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

在jupyter中使用R

如果想在Jupyter Notebook中使用R语言,以下几个步骤操作可行: 1、启动Anaconda Prompt 2、进入R的安装位置,切换到R的安装位置:D:\Program Files\R\R-3.4.3\bin,启动R,具体代码操作步骤如下,在…

noip模拟赛多校第八场 T4 不要翻墙 (矩阵乘法优化DP, 动态DP)

题目描述 简要题意:太长了,就不总结了,自己看吧。 分析 我们首先考虑 m 1 m 1 m1 的情况: T > 0 T > 0 T>0 时,显然我们可以 O ( n ) O(n) O(n) 的维护一个 前缀积 和 前缀积的逆元&#xff0c…

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

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

x86汇编代码学习-计算机工作原理1

文章目录 前言1.CPU架构2.8086寄存器3. 指令流水线4.内存模型5.总线6.硬盘7 计算机启动过程BIOS8.BootLoader9.地址映射10.为什么boot loader要放在0x7c00这个位置?11 显卡是如何显示的12.汇编指令1.环境搭建 12 程序13 x86 汇编指令介绍 前言 x86汇编 详解x86汇编…

虚拟机联网 | 虚拟机连接Xshell

目录 一,打开网络虚拟编辑器二,打开网络设置三,最终设置四,测试有没有连上网五,测试连接工具Xshell 一,打开网络虚拟编辑器 1. 点击"编辑",打开"虚拟网络编译器" 2. 选择更…

SHEIN要求卖家完成德国EPR合规,逾期将强制下架——站斧浏览器

EPR是卖家在欧盟自由销售的通行证之一,如果没有,是不允许在欧盟国家销售产品的。 近期根据SHEIN官方邮件通知,卖家需要在收到邮件后5天内完成申报,逾期申报产品将会在德国站点下架。 因此,建议卖家尽快通过合规的服务…

第八章《搞懂算法:逻辑回归是怎么回事》笔记

8.1 如何理解逻辑回归 逻辑回归根据给定的自变量数据集来估计事件的发生概率,由于结果是一个概率,因此因变量的范围在 0 和 1 之间。 逻辑回归的与线性回归一样,也是以线性函数为基础的;而与线性回归不同的是,逻辑回…

智能安全配电装置在银行配电系统中的应用

【摘要】银行是国家重点安全保护部分,关系到社会资金的稳定,也是消防重点单位,消防安全保障工作是银行工作的重要方面。智能安全配电装置应用在银行配电系统中,可以提升银行智能化管控水平和有效防范电气火灾的发生。 【关键词】…

【QT】QT自定义C++类

在使用Qt的ui设计时,Qt为我们提供了标准的类,但是在很多复杂工程中,标准的类并不能满足所有的需求,这时就需要我们自定义C类。 下面以自定义的QPushButton作一个很简单的例子。 先新建默认Qt Widgets Application项目 一、自定义…

从传统货架到智能货架电子标签PTL仓储亮灯系统的革新

在现代物流仓储行业中,仓库的管理和物料的寻找一直是一个难题。仓库内物料数量种类繁多,寻找物料耗时长、困难大,盘点更是耗费人力多、成本高、速度慢。此外,货物存储位置不清晰,经常性找不到物料。多发、少发、错料现…

首个流体力学大模型背后,是昇腾的大模型“造林”逻辑

作者 | 曾响铃 文 | 响铃说 一个飞机模型在试验风洞里,空气从它的机翼与机身流过,形成一层又一层稳定的气流,当风速加快,空气的流线开始波浪式摆动,最终随着速度增大而相互混合、形成不再能分辨的湍流,看…

大模型的实践应用5-百川大模型(Baichuan-13B)的模型搭建与模型代码详细介绍,以及快速使用方法

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用5-百川大模型(Baichuan-13B)的模型搭建与模型代码详细介绍,以及快速使用方法。 Baichuan-13B 是由百川智能继 Baichuan-7B 之后开发的包含 130 亿参数的开源可商用的大规模语言模型,在权威的中文和英文 benchmark 上均…

【寒武纪(3)】媒体处理系统的系统控制、视频输入和后处理子系统

系统控制 文章目录 系统控制1、配置视频缓存池Video Pool2、配置硬件IP为在线工作(不通过DDR数据交互)/ 离线工作(写入DDR)模式3、硬IP可以使用 非Video Block (VB)内存4、配置是否启动内存传递的压缩 视频…

Elasticsearch:搜索架构

Elasticsearch 全文检索的复杂性 为了理解为什么全文搜索是一个很难解决的问题,让我们想一个例子。 假设你正在托管一个博客发布网站,其中包含数亿甚至数十亿的博客文章,每个博客文章包含数百个单词,类似于 CSDN。 执行全文搜索…

c++-红黑树

文章目录 前言一、红黑树1、红黑树的概念2、红黑树的性质3、红黑树节点的定义4、红黑树结点插入4.1 情况1:cur为红,p为红,g为黑,存在且为红4.2 情况2:cur为红,p为红,g为黑,u不存在/u…

Unity之NetCode多人网络游戏联机对战教程(6)--NetworkTransform组件

文章目录 前言NetworkTransform是什么玩家移动脚本NetworkTransform字段讲解Synchronizing ("Syncing")ThresholdsLocal spaceInterpolationSlerp PositionUse Quaternion SynchronizationUse Quaternion CompressionUse Half Float PrecisionAuthority modesServer …

银河E8,吉利版Model 3:5米大车身、45寸大屏、首批8295座舱芯

作者 | Amy 编辑 | 德新 吉利银河E8在曝光后多次引爆热搜,李书福更是赞誉有加,称其为「买了就直接享受」。这款备受瞩目的车型于 10月30日晚首次亮相。 虽然新车外观在今年上海车展上早已曝光,但这次的发布会却带来了不少惊喜。新车架构以及…