《论文阅读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

 

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

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

相关文章

LeetCode49.字母异味词分组

我一开始的思路就是用1个hashmap<Integer,List<String>>,Integer存的的是字符串所有字母ASCLL值的和&#xff0c;List里面放异位字符串&#xff0c;但是不是异位的字符串的ascll值也可能相同比如acd和abe&#xff0c;所以这个hashmap只能降低一点时间复杂度我还是要…

Vue--》打造个性化医疗服务的医院预约系统(六)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

Web APIs 第六天

正则表达式介绍语法元字符修饰符 一.正则表达式介绍 ① 简介 用来匹配字符串中字符组合的模式在JavaScript中&#xff0c;正则表达式也是对象通常用来查找&#xff0c;替换那些符合正则表达式的文本&#xff0c;许多语言都支持正则表达式 ② 使用场景 验证表单&#xff1a…

算法通关村第4关【白银】| 栈的经典算法问题

1.括号匹配问题 思路&#xff1a;将左括号压入栈中&#xff0c;遍历字符串&#xff0c;当遇到右括号就出栈&#xff0c;判断是否是匹配的一对&#xff0c;不是就返回false&#xff08;因为按照顺序所以当遇到右括号出栈一定要是匹配的&#xff09;。使用Map来简化ifelse clas…

问道管理:放量打拐什么意思?常见的放量打拐三种形态?

成交量一直是股票交易中比较重要的目标&#xff0c;那么&#xff0c;放量打拐是什么意思&#xff1f;常见的放量打拐三种形状是什么&#xff1f;下面问道管理为我们预备了相关内容&#xff0c;以供参阅。 放量打拐什么意思&#xff1f; 放量是指股票成交量与前几个交易日比较显…

安装和配置 Ansible

安装和配置 Ansible 按照下方所述&#xff0c;在控制节点 control.area12.example.com 上安装和配置 Ansible&#xff1a; 安装所需的软件包 创建名为 /home/curtis/ansible/inventory 的静态清单文件&#xff0c;以满足以下要求&#xff1a; node1 是 dev 主机组的成员 node2 …

openGauss学习笔记-43 openGauss 高级数据管理-事件触发器

文章目录 openGauss学习笔记-43 openGauss 高级数据管理-事件触发器43.1 语法格式43.2 参数说明43.3 示例 openGauss学习笔记-43 openGauss 高级数据管理-事件触发器 触发器会在指定的ddl事件发生时自动执行函数。目前事件触发器仅在PG兼容模式下可用。 43.1 语法格式 创建事…

独家!网络机顶盒哪个好?测评员深度对比盘点网络机顶盒排名

网络机顶盒称得上是家家户户必备&#xff0c;每年我都会进行网络机顶盒的测评&#xff0c;今年已经测评过十几款了&#xff0c;后台收到很多私信不知道网络机顶盒哪个好&#xff0c;我本期整理了网络机顶盒排名&#xff0c;大家在选购时可以参考&#xff1a; ◆泰捷WEBOX 60Pro…

Keepalived + Nginx 实现高可用

一、简介 浮动IP、漂移IP地址又叫做VIP&#xff0c;也就是虚拟IP。 Keepalived 是一种高性能的服务器高可用或热备解决方案。 Keepalived 可以用来防止服务器单点故障的发生&#xff0c;通过配合 Nginx 可以实现 web 前端服务的高可用。 Keepalived 以 VRRP 协议为实现基础&a…

【C++】模板template

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ C       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1f6f0;️欢…

Django之定时任务--apscheduler

Django--定时任务apscheduler的使用 apscheduler定时任务的使用1、安装包2、配置settings.py3、在manage.py的文件同级目录下创建文件scheduler.py4、在项目的urls.py中调用这个定时计划5、然后启动项目 python manage.py runserver,在admin中查看就能看到你的定时任务及执行的…

机器学习算法之-逻辑回归(1)

什么是回归 回归树&#xff0c;随机森林的回归&#xff0c;无一例外他们都是区别于分类算法们&#xff0c;用来处理和预测连续型标签的算法。然而逻辑回归&#xff0c;是一种名为“回归”的线性分类器&#xff0c;其本质是由线性回归变化而来的&#xff0c;一种广泛使用于分类问…

Vue 引入 Element-UI 组件库

Element-UI 官网地址&#xff1a;https://element.eleme.cn/#/zh-CN 完整引入&#xff1a;会将全部组件打包到项目中&#xff0c;导致项目过大&#xff0c;首次加载时间过长。 下载 Element-UI 一、打开项目&#xff0c;安装 Element-UI 组件库。 使用命令&#xff1a; npm …

ArcGIS Maps SDK for JavaScript系列之二:认识Map和MapView

目录 Map创建一个 Map 对象的示例代码&#xff1a;Map的常用属性Map的常用方法 MapViewMapView的常用属性MapView的常用方法 在 ArcGIS Maps SDK for JavaScript 中&#xff0c;Map 和 MapView 是两个重要的概念&#xff0c;用于创建和展示地图应用程序。 Map Map 表示一个地图…

【Rust】Rust学习 第十三章Rust 中的函数式语言功能:迭代器与闭包

Rust 的设计灵感来源于很多现存的语言和技术。其中一个显著的影响就是 函数式编程&#xff08;functional programming&#xff09;。函数式编程风格通常包含将函数作为参数值或其他函数的返回值、将函数赋值给变量以供之后执行等等。 更具体的&#xff0c;我们将要涉及&#…

bert,transformer架构图及面试题

Transformer详解 - mathor atten之后经过一个全连接层残差层归一化 class BertSelfOutput(nn.Module):def __init__(self, config):super().__init__()self.dense nn.Linear(config.hidden_size, config.hidden_size)self.LayerNorm nn.LayerNorm(config.hidden_size, epscon…

redis 发布和订阅

目录 一、简介 二、常用命令 三、示例 一、简介 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 &#xff0c;以及订阅这个频道的三个客户…

前端对文件转换处理的一些常用方法

文章目录 0&#xff0c;前言1&#xff0c;将图片的url网络链接(http://) 转为base64格式2&#xff0c;将base64的图片数据转换为file文件3&#xff0c;将以base64的图片数据转换为Blob4&#xff0c;将file文件转化为base645&#xff0c;将file文件转换为Blob6&#xff0c;获取文…

利用Opencv实现人像迁移

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下如何使用Opencv实现人像迁移&#xff0c;欢迎大家一起参与探讨交流~ 本文目录&#xff1a; 一、实验要求二、实验环境三、实验原理及操作1.照片准备2.图像增强3.实现美颜功能4.背景虚化5.图像二值化处理6.人…

item_password-获得淘口令真实url

一、接口参数说明&#xff1a; item_password-获得淘口令真实url &#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_password 名称类型必须描述keyString是调用key&#xff08…