经典文献阅读之--LOCUS 2.0(LiDAR为中心的多传感器LSLAM)

0. 简介

在20年DARPA地下挑战赛中CoSTAR队伍提出了LOCUS这个深度学习模块,在两年后LOCUS2.0出世,LOCUS 2.0包括一种新的基于法线的广义迭代最近点(GICP)公式,该公式减少了点云对齐的计算时间,一种自适应体素网格滤波器,无论环境的几何结构如何,都能保持所需的计算负荷,以及一种滑动窗口建图方法,该方法限制了内存消耗。发布了LOCUS 2.0作为一个开放源代码库,具体在Github中可以找到。与主流的算法相比,表现优异。
在这里插入图片描述

1. 主要贡献

激光雷达里程计算法旨在利用扫描匹配来恢复机器人在连续激光雷达获取之间的运动。通过对固定环境特征的重复观测,机器人可以同时估计其运动、构建未知环境的地图并利用该地图跟踪其在其中的位置。虽然许多激光雷达里程计算法可以实现令人瞩目的准确性,但它们的计算成本仍可能对计算受限平台不利,从而减少了它们在异构机器人系统中的适用范围,其中一些机器人的计算资源可能非常有限。此外,许多现有方法为了定位目的而在内存中维护全局地图,使它们不适用于内存中地图大小显著增加的大规模探索。

本文的先前工作[1]介绍了LOCUS 1.0,这是一种多传感器激光雷达中心的高精度里程计和实时三维地图方案,具备一个多阶段的扫描匹配模块,配备了健康感知传感器集成,以松散耦合方案融合其他感知模态。虽然在感知退化环境中实现了令人瞩目的准确性和鲁棒性,但LOCUS 1.0的先前版本:

  1. 具有更大的计算负载

  2. 在内存中维护全局地图

  3. 对更广泛的传感器故障不够鲁棒,例如一个激光雷达传感器出现故障。

LOCUS 2.0提出了算法和系统级改进,以减少计算负载和内存需求,使系统能够在挑战性的感知条件下,在严格的计算和内存约束下,实现大规模探索的准确和实时的自我运动估计。本文的新特点和贡献包括:

  1. 基于法向量的GICP:一种新的广义迭代最近点(GICP)公式,利用点云法向量来近似点协方差计算,从而提高计算效率
  2. 自适应体素格滤波器,确保确定性和近似恒定的运行时间,独立于周围环境和激光雷达
  3. 两种滑动窗口地图存储数据结构的改进和评估:多线程八叉树、ikd树[2]

2. 系统概述

LOCUS 2.0提供了一种准确的基于广义迭代最近点(GICP)算法[17]的多阶段扫描匹配单元和一个健康感知的传感器集成模块,以松耦合的方式鲁棒地融合其他感应方式。如图2所示,该架构包含三个主要组件:i)点云预处理器,ii)扫描匹配单元,iii)传感器集成模块。点云预处理器负责管理多个输入激光雷达流以产生统一的3D数据产品,该产品可以被扫描匹配单元有效地处理。预处理模块包括点云的运动畸变校正(MDC),该模块使用IMU测量校正了由机器人运动引起的扫描期间传感器旋转的点云畸变。

在这里插入图片描述

接下来,点云合并器通过将来自机器人框架的不同激光雷达传感器的点云组合起来,扩大了机器人的视野。为了使多个激光雷达数据可靠地合并,我们引入了一个基于超时的健康监视器,动态更新哪些激光雷达应在点云合并器中进行组合(即如果其消息太延迟,则忽略激光雷达)。接下来,滤波器将会删除属于机器人的三维点。并通过自适应体素网格滤波器维护一定数量的体素化点,以管理CPU负载并确保确定性行为。与LOCUS 1.0相比,自适应体素网格滤波器将点云降采样策略从固定栅格叶大小和随机滤波这种盲目的体素化策略改为自适应系统

扫描匹配单元执行GICP来完成scan-to-scan和scan-to-submap的策略,以估计机器人的6-DOF运动。LOCUS 2.0与其前身相比,不会重新计算协方差,而是利用一种新颖的GICP公式来使用法向量,这些法向量只需要计算一次并存储在地图中。在具有多模态感知的机器人中,如果可用,LOCUS 2.0 使用来自传感器集成模块的非激光雷达源的初始估计,来简化scan-to-scan匹配阶段中GICP的收敛,通过使用近似最优的种子来初始化优化,提高精度并减少计算,增强实时性能。

LOCUS 2.0 还包括一种更有效的地图存储技术。该系统采用滑动窗口方法,因为大规模区域无法在内存中维护。例如,在这里展示的其中一个洞穴数据集中,1厘米分辨率的全局地图需要50 GB的内存,远远超过小型移动机器人上通常可用的内存。这种方法需要高效的计算解决方案来进行插入、删除和搜索。

…详情请参照古月居

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PowerTCP Sockets for .NET 6.1.5 Crack

PowerTCP Sockets for .NET PowerTCP Sockets for .NET 包含易于使用的 TCP 和 UDP 组件,可帮助您创建 Internet 客户端应用程序,只需几行代码和方便的事件。Ping 组件使用 ICMP、UDP 和 TCP 启用服务器验证,而跟踪组件执行异步跟踪路由以实…

三、数据链路层

(一)纠错与检错1、奇偶校验码(再研究下,原理知道,具体过程无法重现)分为奇校验和偶校验,奇偶校验位在首部或尾部,奇偶校验满信息位奇偶校验位(1)原理&#xf…

多线程 (七) 阻塞队列的使用及其实现

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

科大奥瑞物理实验——交流电桥

实验名称:交流电桥 1. 实验目的: 掌握电桥平衡原理、平衡条件;理解交流电桥构造,熟悉交流电桥平衡方法;分析平衡过程中各桥臂调节顺序,判断最佳平衡点;理解复阻抗概念,电桥平衡时复…

虚拟机centos7配置Hadoop单节点伪分布配置教程

系列文章目录 centos7配置静态网络常见问题归纳_张小鱼༒的博客-CSDN博客 centos7克隆虚拟机完成后的的一些配置介绍_张小鱼༒的博客-CSDN博客 文章目录 目录 系列文章目录 文章目录 前言 一、前期准备 二、Hadoop介绍 2.1、Apache Hadoop 2.2、Cloudera Hadoop 2.3…

基于Vision Transformer的图像去雾算法研究与实现(附源码)

基于Vision Transformer的图像去雾算法研究与实现 0. 服务器性能简单监控 \LOG_USE_CPU_MEMORY\文件夹下的use_memory.py文件可以实时输出CPU使用率以及内存使用率,配合nvidia-smi监控GPU使用率 可以了解服务器性能是否足够;运行时在哪一步使用率突然…

第一个vue-cli项目

第一个vue-cli项目 12.1、什么是vue-cli vue-cli官方提供的一个脚手架,用于快速生成一个vue的项目模板;   预先定义好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个骨架项目,这个估计项目就是脚手架&…

编写一个函数,输入一个日期,计算其距年底的时间

--编写一个函数,输入一个日期,计算其距年底的时间 create or replace function f_end(i_date varchar2) return number is/*声明四个变量,v_end:存放输入的日期的年底日期 v_date:存放经过转化为日期型的输入字符串 v_minus:存放两个日期之差…

Springboot怎么实现WebSocket通信(二)

前言上一篇文章分享了单机模式下,websocket的基本使用方法,但在实际的业务中,通常是不会这样使用的,大部项目都是分布式部署的,一个工程布署了多个服务节点,前端并不直接请求具体服务节点,而是先…

xijs更新指南(v1.2.1)

xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用函数逻辑问题, 帮助开发者更高效的开展业务开发.接下来就和大家一起分享一下v1.2.1 版本的更新内容以及后续的更新方向.1. 添加算法模块分类该模块主要由 WangLei802 贡献, 添加内容如下:添加冒泡排序算法及其…

什么是工程项目管理工作?其特点是什么?

什么是工程项目管理工作?其特点是什么? 工程项目管理是为了实现工程项目的有效、高效和可持续管理而进行的一系列活动。 工程项目的管理就像是驾驭一艘巨大的船只,需要一位经验丰富的船长来领导整个团队。 通过工程项目管理,项…

fiddler(抓包)的用法和HTTP 协议的基本格式

目录 fiddler(抓包)用法: HTTP 协议的基本格式 HTTP请求: 首行 认识HTTP方法 GET和POST的典型区别: 认识请求“报头”(header) HTTP 响应 HTTP状态码: 状态码的分类: 认识响应 …

python语法基础

🐟在本次博客主要想大家介绍一些简单的python语法的注意事项,从代码缩进到注释规则,从标准输入到标准输出,以及位运算符等方面了解python的基础使用方法。那么我们接下来直接开始步入正题,开始我们的python语法的讲解吧…

【SpringCloud】SpringCloud Nacos详解(集群配置)

目录前言一.Nacos集群逻辑图二.Nacos集群搭建1.搭建数据库,初始化数据库表结构2.下载Nacos3.配置Nacos3.启动Nacos4.配置启动nginx5.测试是否成功6.设置服务的nacos地址7.新增一个配置,查看数据看是否进行持久化了前言 在我前面两篇讲的都是单个nacos&a…

c++11 多线程使用

文章目录创建线程异常导致死锁实现两个线程交互的打印奇数和偶数(面试题)创建线程 1.创建线程的方式: 1.拷贝构造禁止了2.允许移动构造3.无参构造后我们可以对对象进行赋值操作4.传递可调用对象(例如包装器,泛函数,lambda,普通函数,静态成员函数) 参数列表 进行创建 2.样例…

第17章_触发器

第17章_触发器 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某公…

JavaEE简单示例——SpringMVC的简单数据绑定

简单介绍: 在前面我们介绍过如何将我们自己创建的类变成一个servlet来处理用户发送的请求,但是在大多数的时候,我们在请求 的时候会携带一些参数,而我们现在就开始介绍我们如何在Java类中获取我们前端请求中携带的参数。首先&…

SpringBoot自定义注解+异步来实现日志管理

一、前言 我们在企业级的开发中,必不可少的是对日志的记录,实现有很多种方式,常见的就是基于AOP注解进行保存,同时考虑到程序的流畅和效率,我们可以使用异步进行保存! 二、基础环境 1. 导入依赖 我这里…

C#,码海拾贝(06)——连分式(Continued Fraction)曲线插值算法,《C#数值计算算法编程》源代码升级改进版

一、连分式法 连分式法是一种有理函数逼近法,其基本出发点是:将原型展开成连分式,然后截取前面几个起主要作用的偏系数构成简化模型,连分式法计算简便,拟合精度较高,是一种很有效的传递函数简化法。 Cont…

【Spring Cloud Alibaba】5.创建服务消费者(Feign)

文章目录简介什么是 Feign开始搭建创建项目修改POM文件添加启动类创建 Feign 接口添加Controller添加配置文件启动项目测试访问Nacos访问接口测试负载均衡通过终端启动多个服务提供者实例简介 接下来我们创建一个服务消费者,通过Feign来进行与服务提供者交互&#…