当前位置: 首页 > news >正文

《论文阅读14》FAST-LIO

 一、论文

  • 研究领域:激光雷达惯性测距框架
  • 论文:FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter
  • IEEE Robotics and Automation Letters, 2021

  • 香港大学火星实验室

  • 论文链接
  • 论文github

二、论文概要

2.1 主要思路

2.2 具体实现

2.3 实验设计

三、论文全文

FAST-LIO:一个快速、鲁棒的紧耦合迭代卡尔曼滤波器LiDAR惯性里程计包

  • 摘要

本文提出了一种计算效率高且鲁棒的激光雷达惯性测距框架。我们融合LiDAR特征点与IMU数据使用紧耦合迭代扩展卡尔曼滤波器,以允许在发生退化的快速运动,嘈杂或混乱的环境中进行鲁棒导航。为了降低大量测量的存在下的计算负荷,我们提出了一个新的公式来计算卡尔曼增益。新公式的计算量取决于状态维而不是测量维。所提出的方法及其实现在各种室内和室外环境中进行测试。在所有测试中,我们的方法实时产生可靠的导航结果:它在四旋翼机载计算机上运行,在一次扫描中融合了1,200多个有效特征点,并在25 ms内完成iEKF步骤的所有迭代。我们的代码在Github 开源。

  • 提出了一个新的公式来计算卡尔曼增益。新公式的计算量取决于状态维而不是测量维
  • 所提出的方法及其实现在各种室内和室外环境中进行测试

  • INTRODUCTION

同时定位和地图绘制(SLAM)是移动的机器人(如无人机(UAV))的基本前提。视觉(惯性)里程计(VO),例如立体式VO [1]和单目镜VO [2,3],由于其重量轻且成本低,通常用于移动的机器人。虽然提供丰富的RGB信息,视觉解决方案缺乏直接的深度测量,并且需要大量的计算资源来重建3D环境进行轨迹规划。此外,它们对光照条件非常敏感。光探测和测距(LiDAR)传感器可以克服所有这些困难,但对于小型移动的机器人来说成本太高(而且体积太大)。

固态LiDAR最近成为LiDAR发展的主要趋势,例如基于微机电系统(MEMS)扫描[4]和旋转棱镜[5]的那些。这些LiDAR具有非常高的成本效益(在类似于全局快门相机的成本范围内),重量轻(可以由小型无人机携带),并且具有高性能(产生主动和直接的远程和高精度的3D测量)。这些特征使得此类LiDAR对于UAV(尤其是工业UAV)是可行的,其需要获取环境的准确3D地图(例如,空中测绘)或可在具有严重照明变化的杂乱环境中操作(例如,灾后搜索和检查)。

尽管潜力巨大,但固态LiDAR给SLAM带来了新的挑战:

1)LiDAR测量中的特征点通常是几何结构(例如,边缘和平面)。当UAV在没有强特征的杂乱环境中操作时,基于LiDAR的解决方案容易退化。当LiDAR具有较小的FoV时,这个问题更加明显。

 2)由于沿着扫描方向的高分辨率,LiDAR扫描通常包含许多特征点(例如,几千)。虽然这些特征点不足以在退化的情况下可靠地确定姿态,但是将如此大量的特征点紧密地融合到IMU测量需要UAV机载计算机负担不起的巨大计算资源

3)由于LiDAR使用几个激光器/接收器对顺序地采样点,因此扫描中的激光点总是在不同时间采样,导致运动失真,这将显著降低扫描配准[6]。UAV螺旋桨和马达的恒定旋转也将显著的噪声引入IMU测量。

为了使激光雷达导航可行的小型移动的机器人,如无人机,我们提出了FAST-LIO,计算效率高,鲁棒的激光雷达惯性测距包。具体而言,我们的贡献如下:

1)为了科普快速运动,嘈杂或混乱的环境,退化发生,我们采用了一个紧耦合迭代卡尔曼滤波器融合LiDAR特征点与IMU测量。我们提出了一个正式的反向传播过程来补偿运动失真;

2)为了降低大量的LiDAR特征点所造成的计算负荷,我们提出了一个新的公式计算卡尔曼增益,并证明其等价于传统的卡尔曼增益公式。新公式的计算复杂度取决于状态维度而不是测量维度。

3)我们实现我们的配方到一个快速和强大的LiDAR惯性里程计软件包。该系统能够在小型四旋翼机载计算机上运行。

4)我们在各种室内和室外环境中进行实验,并进行实际的无人机飞行测试(图1)。1)验证系统在快速运动或强烈振动噪声存在时的鲁棒性。

其余文件组织如下:在第节中。

第二部分,讨论了相关的研究工作。

第三部分,我们在第节中给予了完整的系统管道和每个关键组件的详细信息。

第四,实验

第五部分是结论

  • RELATED WORKS

关于LiDAR SLAM的现有工作是广泛的。在这里,我们将我们的评论限制在最相关的作品上:仅LiDAR测距和映射,松耦合和紧耦合LiDAR惯性融合方法。

 A. LiDAR Odometry and Mapping

Besl等人[6]提出了一种用于扫描配准迭代最近点(ICP)方法,该方法为LiDAR测距法奠定了基础。ICP对于密集3D扫描表现良好。然而,对于稀疏点云的激光雷达测量,ICP所需的精确点匹配很少存在。为了科普这个问题,Segal et al.[7]提出了一种基于点到平面距离的广义ICP。然后Zhang et al.[8]将这种ICP方法与点到边缘距离相结合,并开发了LiDAR测距和映射(LOAM)框架。此后,开发了许多LOAM变体,例如LeGO-LOAM [9]和LOAM-Livox [10]。虽然这些方法适用于结构化环境和大FoV的LiDAR,但它们非常容易受到无特征环境或小FoV LiDAR的影响[10]。

FOV雷达是指视场角(Field of View)雷达,是一种用于探测目标的雷达系统。视场角是指雷达波束所能够覆盖到的区域大小,通常以角度来衡量。FOV雷达可以通过改变天线的位置和方向来控制其视场角,从而实现对特定区域的探测。

B. Loosely-coupled LiDAR-Inertial Odometry

IMU测量通常用于减轻无特征环境中的LiDAR退化问题。松散耦合的LiDAR-惯性测距(LIO)方法通常分别处理LiDAR和IMU测量结果,并在稍后融合它们的结果。例如,IMU辅助LOAM [8]将从IMU测量积分的姿态作为LiDAR扫描配准的初始估计。Zhen等人[11]使用误差状态EKF融合IMU测量结果和LiDAR测量结果的高斯粒子滤波器输出。Balazadegan等人[12]添加IMU重力模型以估计6-DOF自我运动,以辅助LiDAR扫描配准。Zuo等人[13]使用多状态约束卡尔曼滤波器(MSCKF)将扫描配准结果与IMU和视觉测量融合。松耦合方法的常见过程是通过配准新的扫描来获得姿态测量,然后将姿态测量与IMU测量融合。扫描配准和数据融合之间的分离减少了计算负荷。然而,它忽略了系统的其他状态(例如,速度)和新扫描的姿态。此外,在无特征环境的情况下,扫描配准可能在某些方向上退化,并且在后期阶段导致不可靠的融合。

C. Tightly-coupled LiDAR-Inertial Odometry

与松耦合方法不同,紧耦合LiDAR-惯性测距方法通常将LiDAR的原始特征点(而不是扫描配准结果)与IMU数据融合。紧密耦合LIO有两种主要方法:基于优化和基于过滤器。日内瓦等人[14]使用具有IMU预积分约束[15]和平面约束的图形优化。最近,Ye et al.[17]提出了LIOM包,它使用类似的图形优化,但基于边缘和平面特征。对于基于滤波器的方法,Bry [18]使用高斯粒子滤波器(GPF)来融合IMU和平面2D LiDAR的数据。这种方法也被用于Boston Dynamics Atlas人形机器人。由于粒子滤波器的计算复杂度随着特征点的数量和系统维度的增加而快速增长,因此卡尔曼滤波器及其变体通常更受欢迎,例如扩展卡尔曼滤波器[19],无迹卡尔曼滤波器[20]和迭代卡尔曼滤波器[21]。

我们的方法属于紧密耦合方法。我们采用类似于[21]的迭代扩展卡尔曼滤波器来减轻线性化误差。卡尔曼滤波器(及其变体)的时间复杂度为O (m^2),其中m是测量维度[22],当处理大量LiDAR测量时,这可能导致非常高的计算负载。朴素的下采样将减少测量的数量,但以信息丢失为代价。[21]通过提取和拟合类似于[9]的地平面,减少了测量次数。然而,这不适用于地平面不总是存在的空中应用。

  • 紧密耦合方法
  • 采用类似于[21]的迭代扩展卡尔曼滤波器来减轻线性化误差
  • 卡尔曼滤波器(及其变体)的时间复杂度为O (m^2),其中m是测量维度

  • METHODOLOGY

框架概述

本文将使用表I所示的符号。我们的工作流程概述如图2.

LiDAR输入被馈送到特征提取模块中以获得平面和边缘特征。然后,提取的特征和IMU测量值被馈送到我们的状态估计模块中,以10Hz−50Hz进行状态估计。然后,估计的姿势将特征点配准到全局帧,并将它们与迄今为止构建的特征点图合并。更新后的地图最终用于在下一步骤中配准另外的新点。

1、LiDAR输入被送到特征提取模块中以获得平面和边缘特征;

  • lidar input --> 点积累 --> 特征提取 --> planar and edge 

2、提取的特征和IMU测量值被送到状态估计模块中,以10Hz−50Hz进行状态估计;

3、估计的姿势将特征点配准到全局帧,并将它们与迄今为止构建的特征点图合并;

4、更新后的地图最终用于在下一步骤中配准另外的新点。

System Description

 

相关文章:

《论文阅读14》FAST-LIO

一、论文 研究领域:激光雷达惯性测距框架论文:FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter IEEE Robotics and Automation Letters, 2021 香港大学火星实验室 论文链接论文github 二、论文概…...

Kotlin CompletableDeferred 入门

在 Kotlin 中,CompletableDeferred 是一个用于异步编程的类,它提供了一种实现异步操作和等待操作结果的方式。 CompletableDeferred 是 Deferred 接口的具体实现之一,可以用于表示一个可能会在将来完成的操作。它提供了以下主要功能&#xf…...

stm32g070的PD0/PD2 PA8和PB15

目前在用STM32G070做项目,其中PD2TIMER3去模拟PWM,PD0用作按键检测,测试发现PD0低电平检测没有问题,高电平检测不到,电路图如下图所示: 用万用表测试电平,高电平1.0V左右,首先怀疑硬…...

【数据结构】 链表简介与单链表的实现

文章目录 ArrayList的缺陷链表链表的概念及结构链表的分类单向或者双向带头或者不带头循环或者非循环 单链表的实现创建单链表遍历链表得到单链表的长度查找是否包含关键字头插法尾插法任意位置插入删除第一次出现关键字为key的节点删除所有值为key的节点回收链表 总结 ArrayLi…...

【Leetcode】98. 验证二叉搜索树

一、题目 1、题目描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1: 输入:root = …...

ViewFs And Federation On HDFS

序言 ViewFs 是在Federation的基础上提出的,用于通过一个HDFS路径来访问多个NameSpace,同时与ViewFs搭配的技术是client-side mount table(这个就是具体的规则配置信息可以放置在core.xml中,也可以放置在mountTable.xml中). 总的来说ViewFs的其实就是一个中间层,用于去连接不…...

每日一学——无线基础知识

无线局域网(Wireless Local Area Network,简称 WLAN)是一种使用无线通信技术连接多个无线终端设备的局域网。它通常基于无线电波传输数据,并使用无线接入点(Access Point,简称 AP)来连接无线设备…...

【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像

关于 Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。 Cloud Studio 作为在线IDE,包含代码高亮、自动补全、Gi…...

【Hystrix技术指南】(7)故障切换的运作流程原理分析(含源码)

背景介绍 目前对于一些非核心操作,如增减库存后保存操作日志发送异步消息时(具体业务流程),一旦出现MQ服务异常时,会导致接口响应超时,因此可以考虑对非核心操作引入服务降级、服务隔离。 Hystrix说明 官方…...

Springboot 整合MQ实现延时队列入门

延时队列 添加依赖配置文件队列TTL代码架构图交换机、队列、绑定配置文件代码生产者代码消费者代码延时队列优化添加普通队列配置代码生产者发送消息是进行设置消息的ttl 通过MQ 插件实现延时队列代码架构图配置交换机生产者代码消费者代码测试发送 添加依赖 <!-- rabbitMQ …...

前端基础(Vue框架)

前言&#xff1a;前端开发框架——Vue框架学习。 准备工作&#xff1a;添加Vue devtools扩展工具 具体可查看下面的这篇博客 添加vue devtools扩展工具添加后F12不显示Vue图标_MRJJ_9的博客-CSDN博客 Vue官方学习文档 Vue.js - 渐进式 JavaScript 框架 | Vue.js 目录 MV…...

【实用插件】ArcGIS for AutoCAD插件分享下载

ArcGIS包含一系列功能&#xff0c;其中ArcGIS for AutoCAD一个免费的可下载的AutoCAD插件&#xff0c;它可简化将CAD和GIS数据整合在一起的过程提供互操作性。 ArcGIS for AutoCAD互操作性平台将连接AutoCAD和 ArcGIS&#xff0c;以增强使用地理环境设计CAD工程图时的用户体验…...

GaussDB数据库SQL系列-子查询

目录 一、前言 二、GaussDB SQL子查询表达式 1、EXISTS/NOT EXISTS 2、IN/NOT IN 3、ANY/SOME 4、ALL 三、GaussDB SQL子查询实验示例 1、创建实验表 2、EXISTS/NOT EXISTS示例 3、IN/NOT IN 示例 4、ANY/SOME 示例 5、ALL示例 四、注意事项及建议 五、小结 一、…...

Kafka 什么速度那么快

批量发送消息 Kafka 采用了批量发送消息的方式&#xff0c;通过将多条消息按照分区进行分组&#xff0c;然后每次发送一个消息集合&#xff0c;看似很平常的一个手段&#xff0c;其实它大大提升了 Kafka 的吞吐量。 消息压缩 消息压缩的目的是为了进一步减少网络传输带宽。而…...

环形链表笔记(自用)

环形链表 不管怎么样slow最多走半圈了&#xff0c; 快慢指针slow走一步&#xff0c;fast走两步最合适&#xff0c;因为假设fast和slow相差n每一次他们前进&#xff0c;就会相差n-1步&#xff0c;这样他们一定会相遇&#xff0c;如果是环形链表的话。 代码 /*** Definition for…...

js循环中发起请求数据不一致问题

项目场景&#xff1a; 在公司的一个项目中需要使用循环更改查询条件&#xff0c;然后查询子表数据&#xff0c;但是在查询过程中for下面的key变化了之后&#xff0c;查询中的key却并没有变化&#xff0c;导致查询的参数不一致&#xff0c;从未结果数据出错 for(let i 0;i<…...

工作流自动化:提升效率、节约成本的重要工具

在现代社会中&#xff0c;软件和技术的运用使得我们的日常活动变得更加简单和高效。然而&#xff0c;这些技术也有自身的特点和独特之处。尽管我们使用这些工具来简化工作&#xff0c;但有时仍需要一些人工干预&#xff0c;比如手动数据录入。在工作场所中&#xff0c;手动数据…...

仿牛客论坛项目day7|Kafka

一、阻塞队列 创建了一个生产者线程和一个消费者线程。生产者线程向队列中放入元素&#xff0c;消费者线程从队列中取出元素。我们可以看到&#xff0c;当队列为空时&#xff0c;消费者线程会被阻塞&#xff0c;直到生产者线程向队列中放入新的元素。 二、Kafka入门 发布、订阅…...

[SpringCloud] 组件性能优化技巧

Feign 配置优化hystrix配置 优化ribbon 优化Servlet 容器 优化Zuul配置 优化 文章目录 1.Servlet 容器 优化2.Feign 配置优化3.Zuul配置 优化4.hystrix配置 优化5.ribbon 优化 1.Servlet 容器 优化 默认情况下, Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器, 可以将 We…...

okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp

okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp 1、引入Maven1.1、okhttp发起请求官网Demo 2、下载文件3、扩充&#xff0c;读写 txt文件内容3.1读写内容 示例 http客户端 用的是 okhttp&#xff0c;也可以用 UrlConnetcion或者apache …...

Oracle/PL/SQL奇技淫巧之Json转表

在Oracle中&#xff0c;有些时候我们需要在一个json文档中查数据 这个时候我们可以通过JSON_TABLE函数来把 json文档 提取成一张可以执行正常查询操作的表 先看JSON_TABLE函数的基础用法&#xff1a; JSON_TABLE(json_data, $.json_path COLUMNS (column_definitions))其中&a…...

每日一学——网络安全

网络安全设计、原则、审计等知识点的精讲如下&#xff1a; 网络安全设计与原则&#xff1a; 网络安全设计是指在系统或网络的设计过程中考虑到安全性&#xff0c;并采取相应的安全措施来保护系统或网络不受威胁。安全设计原则包括最小权限原则&#xff08;Least Privilege Prin…...

python中的lstm:介绍和基本使用方法

python中的lstm&#xff1a;介绍和基本使用方法 未使用插件 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;专门用于处理序列数据。LSTM 可以记忆序列中的长期依赖关系&#xff0c;这使得它非常适合于各…...

【Flink】Flink窗口触发器

数据进入到窗口的时候,窗口是否触发后续的计算由窗口触发器决定,每种类型的窗口都有对应的窗口触发机制。WindowAssigner 默认的 Trigger通常可解决大多数的情况。我们通常使用方式如下,调用trigger()方法把我们想执行触发器传递进去: SingleOutputStreamOperator<Produ…...

深度云化时代,什么样的云网络才是企业的“心头好”?

科技云报道原创。 近年来企业上云的快速推进&#xff0c;对云网络提出了更多需求。 最初&#xff0c;云网络只是满足互联网业务公网接入。 随着移动互联网的发展&#xff0c;企业对云上网络安全隔离能力和互访能力、企业数据中心与云上网络互联、构建混合云的能力&#xff0…...

【快应用】快应用广告学习之激励视频广告

【关键词】 快应用、激励视频广告、广告接入 【介绍】 一、关于激励视频广告 定义&#xff1a;用户通过观看完整的视频广告&#xff0c;获得应用内相关的奖励。适用场景&#xff1a;游戏/快游戏的通关、继续机会、道具获取、积分等场景中&#xff0c;阅读、影音等应用的权益体系…...

国产化系统中遇到的视频花屏、卡顿以及延迟问题的记录与总结

目录 1、国产化系统概述 1.1、国产化操作系统与国产化CPU 1.2、国产化服务器操作系统 1.3、当前国产化系统的主流配置 2、视频解码花屏与卡顿问题 2.1、视频解码花屏 2.2、视频解码卡顿 2.3、关于I帧和P帧的说明 3、国产显卡处理速度慢导致图像卡顿问题 3.1、视频延…...

go内存管理机制

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池&#xff0c;只不过内部做了很多优化&#xff1a;自动伸缩内存池大小&#xff0c;合理切割内存块。 基本概念&#xff1a; Page&#xff1a;页&#xff0c;一块 8 K大小的内存空间。Go向操作系统申请和…...

【Python】Web学习笔记_flask(5)——会话cookie对象

HTTP是无状态协议&#xff0c;一次请求响应结束后&#xff0c;服务器不会留下对方信息&#xff0c;对于大部分web程序来说&#xff0c;是不方便的&#xff0c;所以有了cookie技术&#xff0c;通过在请求和响应保温中添加cookie数据来保存客户端的状态。 html代码&#xff1a; …...

用友U8+CRM 任意文件上传+读取漏洞复现

0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件&#xff0c;旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 getemaildata.php 文件存在任意文件上传和任意文件读取漏洞&#xff0c;攻击…...