slam学习笔记8---fastlio2运行效率高缘由

前言:lio里面,fastlio2的精度和速度表现很显眼。有必要总结一下运行效果高的缘由。参考各大家,从个人对fastlio2理解,汇总所得。

Fast-LIO2 运行速度快的主要原因可以归结为以下几个方面:

🔹 1. 采用增量式 KD 树(IKD-Tree),高效管理点云

● IKD-Tree(Incremental KD-Tree) 允许动态添加和删除点,而不像传统 KD-Tree 需要完全重建索引。
● 加速最近邻搜索(Nearest Neighbor Search),提高点云匹配效率。
● 避免构建全局地图,只维护局部滑动窗口地图,减少计算量。
✅ 优化点云匹配,使得 LIO 计算更快。

🔹 2. 采用扩展卡尔曼滤波(EKF),替代 BA 优化

● 传统 LIO-SAM 等方法采用 因子图优化(Batch Optimization),计算量较大。
● Fast-LIO2 采用基于扩展卡尔曼滤波(EKF)的递推估计,可以逐帧更新状态,而无需全局优化。
● 不需要回溯优化,减少计算复杂度,使得每帧 LiDAR 数据处理更快。
✅ 利用 EKF 避免大规模优化,使实时性更强。

🔹 3. 采用紧耦合(Tightly Coupled)IMU 预积分,提高初始估计

● IMU 预积分(Preintegration) 可以在 LiDAR 里程计计算前,提供一个较为精准的先验估计。
● 减小点云匹配的计算压力,提高匹配成功率,减少错误匹配带来的优化迭代次数。
● 在高速运动或激光雷达点云稀疏的场景下(如固态雷达),IMU 提供更稳定的姿态估计,减少点云畸变的影响。
✅ IMU 预积分降低点云计算负担,提高里程计算效率。

🔹 4. 直接在状态空间中优化,减少点云拟合计算

● 传统 LOAM 采用点到线、点到面优化,需要迭代拟合多个特征方程。
● Fast-LIO2 直接在状态空间中优化位姿,而不是单独优化点云误差。
● 避免额外的非线性优化,提高计算效率。
✅ 减少不必要的计算步骤,使 LIO 更加实时。

🔹 5. 仅维护局部地图,避免大规模点云存储

● 传统 LIO-SAM 维护 全局点云地图,数据量大,计算慢。
● Fast-LIO2 仅保留局部滑动窗口地图,并通过 IKD-Tree 实现动态更新,无需全量重建地图。
● 旧点云自动移除,降低内存使用,提高查询速度。
✅ 只保留关键数据,减少冗余计算。

🔹 6. 高效的多线程并行处理

● Fast-LIO2 采用多线程架构,不同任务可以并行计算:
○ IMU 预积分(并行执行)
○ 点云去畸变(异步处理)
○ 点云匹配(主线程计算)
○ 状态更新 & 地图维护(后台线程)
○ 充分利用多核 CPU 资源,加速计算。
✅ 多线程架构减少等待时间,提高吞吐量。

🔹 7. 轻量级 C++ 实现,优化 CPU 使用

● 采用 轻量级 C++ 代码,减少不必要的运算和内存占用。
● 相比 LIO-SAM,Fast-LIO2 依赖更少,代码更加紧凑。
● 适合嵌入式计算设备,如 Jetson TX2、树莓派、低功耗 CPU。
✅ 高效 C++ 代码 + 精简实现,提升计算效率。

🔹 8. 针对高动态环境优化

● 传统 LIO 方法在高速运动时(如无人机、自动驾驶)可能会出现漂移。
● Fast-LIO2 结合 IMU 进行动态补偿,减少运动畸变对点云匹配的影响。
● 在高速场景下,仍能保持高精度,且计算量不增加。
✅ 适用于高动态环境,如无人机、自动驾驶。

🔹 总结:Fast-LIO2 为什么快?

关键优化点 :作用
IKD-Tree :动态点云管理,快速最近邻搜索
EKF 递推优化 :避免全局优化,减少计算量
IMU 预积分 :先验估计,提高匹配效率
状态空间优化 : 直接优化位姿,减少非线性计算
局部地图维护 : 仅存储关键点,减少内存和计算负担
多线程并行 : 提高 CPU 资源利用率
轻量级 C++ 实现 :适用于嵌入式设备,降低计算开销
高动态环境优化 : 适应无人机、自动驾驶等高速运动场景
✅ Fast-LIO2 通过高效的数据结构(IKD-Tree)、优化方法(EKF)和并行计算,极大提升了 LiDAR 里程计的计算速度

###################
好记性不如烂笔头
积跬步期千里
觉得不错的话,记得点赞收藏

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

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

相关文章

【C++高并发服务器WebServer】-13:多线程服务器开发

本文目录 一、多线程服务器开发二、TCP状态转换三、端口复用 一、多线程服务器开发 服务端代码如下。 #include <stdio.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <pthread.h>s…

SpringCloud面试题----Nacos和Eureka的区别

功能特性 服务发现 Nacos&#xff1a;支持基于 DNS 和 RPC 的服务发现&#xff0c;提供了更为灵活的服务发现机制&#xff0c;能满足不同场景下的服务发现需求。Eureka&#xff1a;主要基于 HTTP 的 RESTful 接口进行服务发现&#xff0c;客户端通过向 Eureka Server 发送 HT…

在 Open WebUI+Ollama 上运行 DeepSeek-R1-70B 实现调用

在 Open WebUI Ollama 上运行 DeepSeek-R1-70B 实现调用 您可以使用 Open WebUI 结合 Ollama 来运行 DeepSeek-R1-70B 模型&#xff0c;并通过 Web 界面进行交互。以下是完整的部署步骤。 1. 安装 Ollama Ollama 是一个本地化的大模型管理工具&#xff0c;它可以在本地运行 …

免费地理位置信息查询接口

地理位置信息查询接口V1 1. 接口简介 本接口用于查询指定经纬度的地理位置信息&#xff0c;包括省、市、区、街道等详细信息。 报文编码格式&#xff1a;UTF-8接口分组&#xff1a;交通地理创建者&#xff1a;何生最后编辑人&#xff1a;何生更新时间&#xff1a;2025-01-16…

使用 Axios 进行高效的数据交互

一、前言 1. 项目背景与目标 Axios 的重要性: Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js,简化了与服务器的通信。Axios 提供了丰富的功能,如拦截器、并发请求管理、取消请求等。2. 环境搭建 开发工具准备: 推荐使用 VSCode 或 WebStorm。安装必要的…

「vue3-element-admin」告别 vite-plugin-svg-icons!用 @unocss/preset-icons 加载本地 SVG 图标

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

C#中深度解析BinaryFormatter序列化生成的二进制文件

C#中深度解析BinaryFormatter序列化生成的二进制文件 BinaryFormatter序列化时,对象必须有 可序列化特性[Serializable] 一.新建窗体测试程序BinaryDeepAnalysisDemo,将默认的Form1重命名为FormBinaryDeepAnalysis 二.新建测试类Test Test.cs源程序如下: using System; us…

Python进阶-在Ubuntu上部署Flask应用

随着云计算和容器化技术的普及&#xff0c;Linux 服务器已成为部署 Web 应用程序的主流平台之一。Python 作为一种简单易用的编程语言&#xff0c;适用于开发各种应用程序。本文将详细介绍如何在 Ubuntu 服务器上部署 Python 应用&#xff0c;包括环境准备、应用发布、配置反向…

mysql8 用C++源码角度看客户端发起sql网络请求,并处理sql命令

MySQL 8 的 C 源码中&#xff0c;处理网络请求和 SQL 命令的流程涉及多个函数和类。以下是关键的函数和类&#xff0c;以及它们的作用&#xff1a; 1. do_command 函数 do_command 函数是 MySQL 服务器中处理客户端命令的核心函数。它从客户端读取一个命令并执行。这个函数在…

深度学习在医疗影像分析中的应用

引言 随着人工智能技术的快速发展&#xff0c;深度学习在各个领域都展现出了巨大的潜力。特别是在医疗影像分析中&#xff0c;深度学习的应用不仅提高了诊断的准确性&#xff0c;还大大缩短了医生的工作时间&#xff0c;提升了医疗服务的质量。本文将详细介绍深度学习在医疗影像…

计算机领域QPM、TPM分别是什么并发指标,还有其他类似指标吗?

在计算机领域&#xff0c;QPM和TPM是两种不同的并发指标&#xff0c;它们分别用于衡量系统处理请求的能力和吞吐量。 QPM&#xff08;每分钟请求数&#xff09; QPM&#xff08;Query Per Minute&#xff09;表示每分钟系统能够处理的请求数量。它通常用于衡量系统在单位时间…

python基础入门:3.2字典(Dict)与集合(Set)

Python高效数据管理&#xff1a;字典与集合深度剖析 # 快速导航 config {"数据结构": "字典", "特性": ["键值对", "快速查找"]} unique_nums {1, 2, 3, 5, 8} # 集合自动去重一、字典核心操作全解 1. 键值对基础操作 …

celery

&#x1f525; 太棒了&#xff01;兄弟&#xff0c;你的学习欲望真的让我佩服得五体投地&#xff01;&#x1f680; 既然你已经完全掌握 background_tasks 了&#xff0c;那我们就来深入解析 Celery&#xff01;&#x1f331;&#x1f680; 1. Celery 解决了什么问题&#xff…

【安当产品应用案例100集】036-视频监控机房权限管理新突破:安当windows操作系统登录双因素认证解决方案

一、机房管理痛点&#xff1a;权限失控下的数据泄露风险 在智慧城市与数字化转型浪潮下&#xff0c;视频监控系统已成为能源、金融、司法等行业的核心安防设施。然而&#xff0c;传统机房管理模式中&#xff0c;值班人员通过单一密码即可解锁监控画面的操作漏洞&#xff0c;正…

Unity抖音云启动测试:如何用cmd命令行启动exe

相关资料&#xff1a;弹幕云启动&#xff08;原“玩法云启动能力”&#xff09;_直播小玩法_抖音开放平台 1&#xff0c;操作方法 在做云启动的时候&#xff0c;接完发现需要命令行模拟云环境测试启动&#xff0c;所以研究了下。 首先进入cmd命令&#xff0c;CD进入对应包的文件…

< OS 有关 > 利用 google-drive-ocamlfuse 工具,在 Ubuntu 24 系统上 加载 Google DRIVE 网盘

Created by Dave On 8Feb.2025 起因&#xff1a; 想下载 StableDiffusion&#xff0c;清理系统文件时把 i/o 搞到 100%&#xff0c;已经删除到 apt 缓存&#xff0c;还差 89MB&#xff0c;只能另想办法。 在网上找能不能挂在 Google 网盘&#xff0c;百度网盘&#xff0c;或 …

【LITS游戏——暴力DFS+剪枝优化】

题目 代码 #include <bits/stdc.h> using namespace std; using pll pair<int, int>; #define x first #define y second const int N 51; pll d[4][4][4] {{{{0, 0}, {1, 0}, {2, 0}, {2, 1}}, {{0, 0}, {1, 0}, {1, -1}, {1, -2}}, {{0, 0}, {0, 1}, {1, 1},…

Redisson全面解析:从使用方法到工作原理的深度探索

文章目录 写在文章开头详解Redisson基本数据类型基础配置字符串操作列表操作映射集阻塞队列延迟队列更多关于Redisson详解Redisson 中的原子类详解redisson中的发布订阅模型小结参考写在文章开头 Redisson是基于原生redis操作指令上进一步的封装,屏蔽了redis数据结构的实现细…

Chrome 浏览器:互联网时代的浏览利器

Chrome 浏览器&#xff1a;互联网时代的浏览利器 引言 在互联网时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的工具。作为全球最受欢迎的浏览器之一&#xff0c;Chrome 浏览器凭借其出色的性能、丰富的扩展程序和简洁的界面&#xff0c;赢得了广大用户的喜爱。本文…

网络爬虫技术如何影响网络安全的

随着网络的发展和网络爬虫技术的普及&#xff0c;一些人收集某些需要的信息&#xff0c;会使用网络爬虫进行数据抓取。网络爬虫一方面会消耗网络系统的网络资源&#xff0c;同时可能会造成核心数据被窃取&#xff0c;因此对企业来讲如何反爬虫显得非常重要。 一、什么是网络爬…