slam框架:紧耦合激光视觉惯性里程计的统一多模态地标点跟踪

article/2025/9/2 22:15:09

论文题目:

Unified Multi-Modal Landmark Tracking for Tightly Coupled Lidar-Visual-Inertial Odometry

紧耦合激光视觉惯性里程计的统一多模态地标点跟踪

参考链接:

【泡泡点云时空】紧耦合激光视觉惯性里程计的统一多模态地标点跟踪

摘要:

我们为移动平台提出了一种高效的多传感器里程计系统,该系统在单个集成因子图中联合优化视觉、激光雷达和惯性信息。 这使用固定滞后平滑以全帧速率实时运行。为了执行这种紧密集成,提出了一种从激光雷达点云中提取 3D 线和平面图元的新方法。这种方法克服了典型的帧到帧跟踪方法的次优性 将图元视为地标并在多次扫描中跟踪它们。 使用激光雷达和相机帧的微妙被动同步,可以实现激光雷达特征与标准视觉特征和 IMU 的真正集成。  3D 功能的轻量级公式允许在单个 CPU 上实时执行。 我们提出的系统已经在各种平台和场景上进行了测试,包括使用腿式机器人进行地下探索和使用动态移动的手持设备进行户外扫描,总持续时间为 96 分钟,行驶距离为 2.4 公里。 在这些测试序列中,仅使用一个外部感受器会导致失败,原因是几何形状受限(影响激光雷达)或由剧烈的光照变化(影响视觉)引起的无纹理区域。 在这些情况下,我们的因子图自然会使用来自每个传感器模式的最佳信息,而无需任何硬开关。

主要贡献:

• 一种新颖的因子图公式,在单个一致的优化过程中紧密融合视觉、激光雷达和 IMU 测量值;

• 一种提取激光雷达特征的有效方法,然后将其优化为地标。 激光雷达和视觉特征共享统一的表示,因为地标都被视为 n 维参数流形(即点、线和平面)。 这种紧凑的表示允许我们以标称帧速率处理所有激光雷达扫描;

• 与更典型的方法相比,在单个传感器模式失败时挣扎的更典型的方法相比,在一系列场景中进行了广泛的实验评估,展示了卓越的鲁棒性。

我们的工作建立在 VILENS 估计系统的基础上 通过添加激光雷达特征跟踪和激光雷达辅助视觉跟踪,在我们之前的作品 [11]、[12] 中引入。 相机和激光雷达的组合即使在剧烈移动时也能在便携式设备上使用,因为它自然地处理场景中的退化(由于缺乏激光雷达或视觉特征)。

主要图:

 

雷达惯导,雷达视觉惯导,和loam,lego-loam对比:

总结:

1 在一个固定步长的平滑窗口内,视觉提取特征点,激光雷达提取线特征和面特征点集。

2 跟踪视觉特征,使用激光雷达提供深度(投影,查找3个像素之内的对应点,计算残差)如上图3。

3 使用海塞正规式来参数化平面p,使用一个单位向量n以及一个d表示其原点的距离。

4 使用一个旋转矩阵R和两个尺度参数a,b来参数化一个直线,R表示直线方向,ab表示直线上距离原点最近的点

5 使用FAST角点检测器检测特征,并使用KLT特征跟踪器跟踪它们,使用RANSAC滤除外点

6 使用imu做先验,对雷达点云去畸变,并转换到最近的相机帧时间,实现同步,如上图6。

7 进行聚类,滤波,计算曲率取角点和平面点(同loam)。

8 跟踪前一帧中的线和面,具体是:

使用imu预测到当前帧中对应的位置,为了帮助局部跟踪,我们使用最大的点到模型的距离对预测的特征位置进行CP和CL分割。然后,我们执行欧几里得聚类(和平面特征的正态过滤),以去除外点。然后,我们使用PROSAC鲁棒拟合算法将模型拟合到分割后的点云上。最后,我们检查了预测的地标和检测到的地标是否足够相似。当两个平面p_i和p_j的法线与距离原点的距离小于阈值时,被认为是匹配的

9 一旦跟踪了一个特征,特征的内点将从相应的候选集中删除,并对剩余的地标重复这个过程。在跟踪完成后,我们将在剩余的候选云中检测到新的地标。首先使用欧氏聚类对点云进行划分,平面采用基于法向的区域增长算法。然后,我们使用与地标跟踪相同的方法来检测每个集群中的新地标。点云特征只有在跟踪了至少多次连续帧后才包含在优化中

10 当平台静止时,为了限制漂移和因子图的增长,当三种模态(相机、激光雷达、IMU)中的两种更新报告没有运动时,我们向图中添加了零速度约束


http://chatgpt.dhexx.cn/article/5jJDGbXL.shtml

相关文章

RF-LIO:面向高动态场景的紧耦合LiDAR惯导融合里程计(IROS 2021)

RF-LIO: 面向高动态场景的紧耦合LiDAR惯导融合里程计 单位:西安交通大学 针对问题: 实际场景中动态因素的引入造成基于静态假设的LIO严重位姿漂移 提出方法: 提出基于自适应的多分辨率Range Image的动态点移除算法,并使用紧耦合的…

经典文献阅读之--Globally Consistent and Tightly Coupled 3D LiDAR Inertial Mapping(紧耦合3D激光雷达)

0. 简介 传统的地图生成方法一般是依靠Lidar和IMU结合的,但是问题在于,目前Lidar和IMU的紧耦合主要集中在前端里程计,基本没有涉及到后端全局优化以及建图的融合。为此文章《Globally Consistent and Tightly Coupled 3D LiDAR Inertial Map…

MD5加密的应用

简单介绍一下MD5加密的使用方法; MD5的全称是Message-Digest Algorithm 5(信息-摘要算法); 特点是不可逆的,一般解密不了; MD5Util工具类: package com.java.util;import java.io.UnsupportedE…

python md5加密解密_python md5加密解密

md5加密以后的字符串长度 我下了一段用JAVA实现MD5加密的算法,不管输入字符串多长,加密后的字符加密后为128位(bit),按照16进制(4位一个16进制数)编码后,就成了32个字符。MD5并不是加密算法zhidao,而是摘要算法。加密算法是可逆的,摘要算法是理专论上不可逆的,详细…

Java MD5 加密工具类

一、MD5简介 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确…

为什么md5不可逆,却还可能被md5免费解密网站解密

md5在网络安全中起到非常重要的作用,它被用于保证数据的完整性,以及数据不被篡改。同时,md5还被用来进行密码加密。一些朋友不了解为什么md5不可逆,却还可能被号称能解密md5的网站解密。因此,有人说md5不够安全&#x…

matlab中进行多行注释,取消

在MATLAB中可以在行首部加 1 %来进行注释, 2 加%%空格来进行划分不同的程序段。 但在进行多行注释时,针对单行进行操作过于麻烦,可以利用快捷键进行多行注释。 可以先选中需要注释的行,然后按“ctrlR”进行注释, 多…

Matlab多行注释单行程序分行写

2019独角兽企业重金招聘Python工程师标准>>> 一、Matlab注释 1)、单行注释:当然是行首加‘%’了。 2)、多行注释: a、选中你要加注释的内容,然后选择工具菜单“text|comment”就可以了, 快捷键是…

funcode游戏实训,java及C/C++,网上整理

软件,常见错误都有。 所有资源可到公众号获取(源码也是),不再直接分享

funcode环境配置(亲测有效)

vmware 虚拟机版本是15.5.1 虚拟机版本链接 win7专业版镜像文件 迅雷(打开迅雷复制即可) ed2k://|file|cn_windows_7_enterprise_with_sp1_x64_dvd_u_677685.iso|3265574912|E9DB2607EA3B3540F3FE2E388F8C53C4|/ 过程可供参考 vc2012任何版本均可 设置过程: 打…

funcode实验--海底世界(c++实现)

C语言课程设计一海底世界 一、实验内容 海底有若干条鱼,其中若干条相同的鱼向一个方向游动,另一条来回随机游动,由玩家用键盘W A S D控制另外一条游动。 要求如下: 1、 来回游动的鱼,从屏幕左边游进来,…

FunCode太空战机C++实现

仅供交流学习使用,因博主水平有限,有错误欢迎批评指正 作者(即博主本人): Akame Qixisi / Excel Bloonow IDE:Code::Blocks 17.12 编译器需要支持C14或以上标准(Code::Blocks如何设置见附录Ⅰ&…

基于funcode的闯关小游戏(山东省齐鲁软件设计大赛三等奖)给自己留个纪念

背景: (链接文档在最后) 19年的暑假,同学喊我参加山东省齐鲁软件设计大赛,报上名之后有这个funcode课题。d但是从来没有接触过funcode,网上的参考资料也不多,靠着自己摸索和同学交流半懂半做了这…

基于Funcode设计C语言游戏–迷你高尔夫

Funcode设计 文章目录 Funcode设计前言一、Funcode下载地址二、C语言课程设计--迷你高尔夫1.效果图2.部分代码 总结 前言 基于Funcode设计的C语言游戏。 提示:以下是本篇文章正文内容,下面案例可供参考 一、Funcode下载地址 Win10版本 提取码&#xf…

2021年Funcode游戏制作二等奖作品

之前发的有关funcode游戏更多的则是对游戏流程有一个大概的了解,以及如何编写游戏循环,判定游戏的各种触发条件,较为简陋。 这一次看到有人问funcode游戏的制作,就把搁置了许久的 项目拿给大家作为参考建议。 素材来源&#xff1a…

【致敬童年】Funcode实现坦克大战

【2023年5月26日】 带10个需求的资源已上传至Funcode实现坦克大战(十个需求) 【效果图】 【写在前面的话】 1、虚函数哪里很难受,最后在Commclass里面加了一个无参构造才搞定 2、bug很多,比如世界边界,子弹都有问题。…

Funcode游戏设计C语言小飞虫

Funcode游戏制作 文章目录 Funcode游戏制作前言一、基于Funcode的小飞虫二、使用步骤1.游戏效果图2.游戏代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要&…

【C++FunCode】基于Funcode使用C++语言编写小游戏(小鲨鱼历险记)

一、前言 大一暑假参加了山东省软件设计大赛,基于FunCode平台使用C语言编写了大鱼吃小鱼游戏,其美名曰小鲨鱼历险记,哈哈。比赛成绩惨烈,只拿了一个省三,赛后也进行了分析总结,主要还是太不重视比赛&#…

Funcode实现坦克大战(十个需求)

【写在前言】 1、操作 先按数字(1~0)10个 表示选择某一需求(对应文件的需求) 再按K 表示执行该需求(控制台有输出) 2、写此文为方便大家的学习,希望不要一抄了事,真心希望&#xff0…