LIO-EKF: High Frequency LiDAR-Inertial Odometry using Extended Kalman Filters
一、论文摘要
里程计估计是每个需要在未知环境中导航的自主系统的关键要素。在现代移动机器人中,3D LiDAR 惯性系统通常用于执行此任务。通过融合 LiDAR 扫描和 IMU 测量,这些系统可以减少因顺序注册各个 LiDAR 扫描而引起的累积漂移,并提供稳健的姿态估计。尽管有效,激光雷达惯性测距系统需要部署适当的参数调整。在本文中,我们提出了 LIO-EKF,一种基于点对点配准和经典扩展卡尔曼滤波器方案的紧耦合 LiDAR 惯性里程计系统。我们提出了一种自适应数据关联,考虑相对位姿不确定性、地图离散化误差和激光雷达噪声。通过这种方式,我们可以大大减少针对给定类型环境进行调整的参数。实验评估表明,所提出的系统的性能与最先进的激光雷达惯性里程计管道相当,但计算里程计的速度明显更快。
备注:代码基于EKF,相比其他开源代码,结构简单,计算量小。
二、代码连接
代码下载连接:
YibinWu/LIO-EKF: Maybe the simplest LiDAR-inertial odometry that one can have. (github.com)
编译步骤:
- cd ~/catkin_ws/src
- git clone git@github.com:YibinWu/LIO-EKF.git
- cd ../
- catkin_make
- source ~/catkin_ws/devel/setup.bash
运行步骤:
Replace the path to the rosbag (bagfile) in the launch files with your own path.
- roslaunch lio_ekf urbanNav20210517.launch
- roslaunch lio_ekf street_01.launch
- roslaunch lio_ekf short_exp.launch
相关文章:
LIO-EKF: High Frequency LiDAR-Inertial Odometry using Extended Kalman Filters
一、论文摘要 里程计估计是每个需要在未知环境中导航的自主系统的关键要素。在现代移动机器人中,3D LiDAR 惯性系统通常用于执行此任务。通过融合 LiDAR 扫描和 IMU 测量,这些系统可以减少因顺序注册各个 LiDAR 扫描而引起的累积漂移,并提供稳…...
Shell脚本学习笔记(更新中...)
一、什么是shell shell的作用是: 解释执行用户输入的命令程序等。 用户输入一条命令,shell就解释一条。 键盘输入命令,LInux给与响应的方式,称之为交互式。 shell是一块包裹着系统核心的壳,处于操作系统的最外层&a…...
leetcode 210.课程表II
思路:拓补排序 其实就是对于第一个题的问题变了一个问法,上一个题本质上是求有没有环,这道题本质上就是让你求出来符合没有环的路径输出而已,本质上没有什么区别。 不同就在于这里需要你额外开一个数组用来存储你遍历这个有向图…...
SpringBootTest测试框架五
示例 package com.xxx;import com.xxx.ut.AbstractBasicTest; import com.xxx.ut.uttool.TestModel; import...
赛事|基于SprinBoot+vue的CSGO赛事管理系统(源码+数据库+文档)
CSGO赛事管理系统 目录 基于SprinBootvue的CSGO赛事管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3参赛战队功能模块 4合作方功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…...
线性化技巧:绝对值变量的线性化
文章目录 1. 问题2. 线性化3. 缺少 x i x i − 0 x_i^ \times x_i^- 0 xixi−0 有什么问题4. 延伸思考5. 参考文献 1. 问题 以方述诚老师课件中的案例为例: m a x 3 x 1 − 2 x 2 − 4 ∣ x 3 ∣ s . t . − x 1 2 x 2 ≤ − 5 3 x 2 − x 3 ≥ 6 2 x 1 …...
List基本使用(C++)
目录 1.list的介绍 2.list的使用 list的构造 list的size() 和 max_size() list遍历操作 list元素修改操作 assign()函数 push_front(),push_back 头插,尾插 pop_front() pop_back 头删尾删 insert()函数 swap()函数 resize()函数 clear()函数 list类数…...
ELK 日志监控平台(一)- 快速搭建
文章目录 ELK 日志监控平台(一)- 快速搭建1.ELK 简介2.Elasticsearch安装部署3.Logstash安装部署4.Kibana安装部署5.日志收集DEMO5.1.创建SpringBoot应用依赖导入日志配置文件 logback.xml启动类目录结构启动项目 5.2.创建Logstash配置文件5.3.重新启动L…...
工作中写单片机代码,与学校里有什么不同?
来聊聊我的经历,提供几个提升方向,亲测有效,希望能让你少走几年弯路。 10几年前,还没参加工作的时候,主要是玩玩开发板,也接触不到实际产品的代码,很好奇那些产品级的代码是怎样的。 第一份工作…...
Unity LayerMask避坑笔记
今天使用Physics2D.OverlapAreaNonAlloc进行物理检测时候,通过LayerMask.NameToLayer传入了int值的LayerMask,结果一直识别不到,经过Debug才找到问题,竟是LayerMask的“值”传输有问题,记录一下。 直接贴代码输出结果&…...
(原创)从右到左排列RecycleView的数据
问题的提出 当我们写一个Recycleview时,默认的效果大概是这样的: 当然,我们也可以用表格布局管理器GridLayoutManager做成这样: 可以看到,默认的绘制方向是: 从左到右,从上到下 那么问题来了…...
【C语言】数据指针地址的取值、赋值、自增操作避坑
【C语言】数据指针的取值、赋值、自增操作避坑 文章目录 指针地址指针自增指针取值、赋值附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函数 指针地址 请看下列代码&#…...
Java进阶-SpringCloud使用BeanUtil工具类简化对象之间的属性复制和操作
在Java编程中,BeanUtil工具类是一种强大且便捷的工具,用于简化对象之间的属性复制和操作。本文将介绍BeanUtil的基本功能,通过详细的代码示例展示其应用,并与其他类似工具进行对比。本文还将探讨BeanUtil在实际开发中的优势和使用…...
【ES6】ECMAS6新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
🔥 个人主页:空白诗 🔥 热门专栏:【JavaScript】 文章目录 🌿 引言一、 let 和 const - 变量声明的新方式 🌟📌 var的问题回顾📌 let的革新📌 const的不变之美 二、 Arro…...
刷题之从前序遍历与中序遍历序列构造二叉树(leetcode)
从前序遍历与中序遍历序列构造二叉树 前序遍历:中左右 中序遍历:左中右 前序遍历的第一个数必定为根节点,再到中序遍历中找到该数,数的左边是左子树,右边是右子树,进行递归即可。 #include<vector>…...
微信小程序--微信开发者工具使用小技巧(3)
一、微信开发者工具使用小技巧 1、快速创建小程序页面 在app.json中的pages配置项,把需要创建的页面填写上去 2、快捷键使用 进入方式 1: 文件–>首选项–> keyboard shortcuts 进入快捷键查看与设置 进入方式 2: 设置–>快捷键…...
JDBC的 PreparedStatement 的用法和解释
文章目录 前言1、封装数据库连接和关闭操作数据库配置文件 config.properties 2、批量添加操作3、查询操作4、修改和删除操作总结 前言 PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 1、封装数据库连接和关闭操作 package org.springblade.m…...
LeetCode 面试150
最近准备面试,我以前不愿意面对的 现在保持一颗本心,就是专注于算法思想,语言基础的磨炼; 不为速成,不急功近利的想要比赛,或者为了面试。 单纯的本心,体验算法带来的快乐,是一件非常…...
xmake+xrepo自建仓库添加交叉编译工具链
xmakexrepo自建仓库添加交叉编译工具链 最近想将交叉编译工具链放到xrepo自建仓库中,在xmake中引用,方便多个电脑快速实现交叉编译。 xmake官方文档感觉不够详细,折腾了好久,这里做个记录。 基本步骤如下: 添加自建…...
论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023
《论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023 前言 简介研究现状任务定义模型架构Learning to know myselfLearning to avoid Misidentification损失函数实验结果消融实验 前言 亲身阅读感受分享,细节画图解释…...
嵌入式 AI 助手的三层意图识别架构:如何在“快、准、稳“之间取得平衡
背景 我在开发一个项目协同平台的嵌入式 AI 助手。它不是独立的 chatbot,而是嵌在业务页面里的——用户可以在首页、项目详情页、任务抽屉等不同位置唤起它,用自然语言完成任务查询、创建、删除等操作。 和通用对话 AI 不同,这个助手有两个硬…...
10点滑动平均滤波器:嵌入式零依赖高效实现
1. 项目概述MovingAverageFilter 是一个轻量级、零依赖的嵌入式数字滤波器实现,专为资源受限的微控制器环境设计。其核心功能是执行固定长度(10点)的滑动平均(Moving Average)运算,并在每次新采样输入后立即…...
OpenClaw+gemma-3-12b-it:学术论文自动摘要与分类系统
OpenClawgemma-3-12b-it:学术论文自动摘要与分类系统 1. 为什么需要自动化论文处理 作为一名经常需要阅读大量文献的研究者,我深刻体会到手动处理论文的痛点。每周需要从arXiv、PubMed等平台下载数十篇论文,然后逐篇阅读摘要、分类归档。这…...
幻境·流金惊艳生成:从织梦令到流金光影汇聚的全过程效果对比
幻境流金惊艳生成:从织梦令到流金光影汇聚的全过程效果对比 1. 开篇:当技术遇见艺术的美妙邂逅 想象一下,你脑海中浮现出一个绝美的画面:赛博朋克都市中霓虹流淌的街道,或是水墨意境中的玄金山水。传统方式需要数小时…...
智慧教育——解读AI一体化智慧校园解决方案【附全文阅读】
适应人群为学校管理人员、教师、学生、技术运维人员及教育信息化建设相关从业者。主要内容围绕 AI 一体化智慧校园建设,阐述总体规划及革命性意义(提升教学管理水平、降低成本等);介绍八大应用中心(教学管理、物联网管控、校园安全等),涵盖智能选课排课、校园安防监控等…...
三相光伏逆变器研发深度解析:全源代码解读与性能优化指南
三相10Kw光伏并网逆变器。包含全套理图/PCB/源代码一、概述 本文档详细解读基于TI F28379D DSP芯片的三相10kW光伏并网逆变器代码系统。该代码采用模块化设计,涵盖核心控制、硬件抽象、参数配置、驱动适配等多个功能层级,支持交流开环、电流环独立逆变、…...
Perl环境变量设置全攻略:从银河麒麟V10到CentOS的通用配置方法
Perl环境变量跨平台配置实战指南 在混合云和异构系统环境中,Perl作为系统管理和应用开发的重要工具,其环境配置的一致性直接影响脚本的跨平台运行能力。本文将深入探讨从银河麒麟V10到CentOS等主流Linux发行版的Perl环境变量配置方法论,帮助运…...
个人简介及未来展望
前言(自我介绍):各位浏览者,大家好:我是来自辽宁工程技术大学 电气与控制工程学院 自动化专业的大一新生王阔遒,现在也就是2026年4月5日,我开始书写我的人生第一篇博客,我对编程有着…...
效率提升300%:Qwen3.5-9B在OpenClaw中的批量文件处理技巧
效率提升300%:Qwen3.5-9B在OpenClaw中的批量文件处理技巧 1. 为什么需要批量文件处理自动化 作为一个经常需要处理大量文档的技术写作者,我过去每周要花至少8小时在重复的文件整理上——重命名几百个截图、合并多个Markdown文档、批量转换PDF为可编辑格…...
STM32开发中printf重定向的两种实现方法
1. STM32开发中的printf重定向需求解析在嵌入式开发中,调试信息的输出是开发过程中不可或缺的一环。对于STM32这类ARM Cortex-M系列微控制器而言,标准库中的printf函数默认是无法直接使用的,因为这类设备通常没有像PC那样的标准输出设备。这就…...
