论文阅读:Correcting Motion Distortion for LIDAR HD-Map Localization
目录
概要
Motivation
整体架构流程
技术细节
小结
论文地址:http://arxiv.org/pdf/2308.13694.pdf
代码地址:https://github.com/mcdermatt/VICET
概要
激光雷达的畸变矫正是一个非常重要的工作。由于扫描式激光雷达传感器需要有限的时间来创建点云,所以一次扫描过程中传感器的运动会导致点云发生畸变,这种现象被称为运动畸变或者卷帘快门。运动畸变校正方法已经存在,但是它们依赖于外部测量或者多次激光雷达扫描上的贝叶斯滤波。本文提出了一种新型算法,其执行快照处理以实现运动畸变校正。
Motivation
- 传统的运动畸变校正方法存在一些局限性,比如依赖于外部测量设备或者贝叶斯滤波器,这些方法可能不够实时或者成本较高。而本文提出的VICET算法通过快照处理技术,直接从当前LIDAR扫描中提取信息,校正运动畸变,不需要额外的设备,因此更具实用性和经济性。
- 提出了一种能够对测量不确定性进行有意义预测的新方法,鲁棒误差边界的计算是自动驾驶乘用车等安全关键导航系统的一个重要方面。
- 通过加入运动畸变补偿来改进NDT算法,以提高配准精度。
整体架构流程
该算法的整体架构流程包括快照处理、初始配准、扩展NDT匹配和优化、校正等关键步骤。首先,通过快照处理技术将当前LIDAR扫描与参考图像进行配准,得到初始的刚性变换估计。然后,利用扩展的NDT算法,同时优化刚性变换和运动失真参数。最后,根据优化后的参数对LIDAR扫描进行校正,以获得准确的校正结果。
考虑放置在矩形房间内的 机械旋转 LIDAR 单元,如图 所示。每次 LIDAR 绕 LIDAR 垂直 (z) 轴旋转 360 ° 时,都会生成 ALIDAR 图像(或扫描)。定义当旋转光束与连接 到 LIDAR 定子的坐标系统中的正 x 方向对齐时开始 LIDAR 扫描,我们将其标记为车身框架。在图中, 激光雷达的起始和结束位置由向量基表示,其中旋转 轴以蓝色显示,扫描起始轴以红色显示。现在考虑三 种情况,一种情况是传感器在扫描期间保持静止(以 标记为 a 的姿势开始和结束),第二种情况其中传感器进行纯平移(从 a 开始并在 b 结束), 第三种情况是传感器同时进行平移和旋转(从 a 开 始并在 c 结束)。这三种情况中的每一种都会创建 一个不同的 LIDAR 点云,如下所示:鸟瞰图,位于 标有"原始点云"(红色)的列中。在所有情况 下,点云中间都会出现一个圆圈,反映高程截止 点,模拟 LIDAR 单元无法生成地平线以下 30 ° 以 下的样本。点云是假设起点和终点之间的运动速率 一致而生成的。重要的是,原始图像是扭曲的(静 止情况除外),因此房间的墙壁不会形成完美的正 方形。然而,考虑到平台运动,点可以从主体坐标 系坐标转移到世界坐标系坐标。未扭曲的点云如图 2 所示。 1 作为标记为"失真校正"的一列图像 (蓝色)。重要的是,这些畸变校正图像都恢复了 正确的房间形状,以方形墙为界。在最后一种情况 (a → c)中,出现了缺失数据的楔形,因为 LIDAR 定子顺时针旋转,与 LIDAR 转子逆时针旋 转相反,这样在单次扫描期间无法看到整个房间。对于地图匹配应用,姿态是相对于参考图像进行估 计的。例如,可以通过记录移动激光雷达的一系列 顺序扫描来构建参考图像,以创建马赛克图像或高 清 (HD) 地图。如果在配准到地图之前可以对当前 扫描(在激光雷达的框架中捕获)进行反扭曲(转 换为世界框架),则该配准操作的性能将大大提 高。在图(1)的矩形房间的情况下,地图看起来非 常像静态情况下的扫描 (a → a)。如果在平移 (a → b) 或组合平移和旋转 (a → c) 过程中生成新的 LIDAR 图像,则生成的原始图像(红色)将与相应 的失真校正图像(蓝色)相比,更难与房间地图对 齐。本文的主要焦点是仅使用当前的激光雷达扫描和地 图就可以进行畸变校正。如果 LIDAR 运动未知,那 么我们可以通过将当前图像配准到地图来推断运 动,同时还测试各种反扭曲变换,以确定导致最佳 对准的配准和反扭曲的组合。
用于研究运动畸变校正的简单测试场景。等距房间视图显示了三个可能的激光雷达位置,标记为a、b和c。
在每个位置上,激光雷达单元的方向由一组正交基向量描述。对于每种配置,假设激光雷达束从红色箭头开始与垂直(蓝色)轴逆时针旋转。在扫描过程中,激光雷达单元可以保持静止(a → a),前向线性运动(a → b),或进行复合平移和旋转(a → c)。在每种情况下,激光雷达束在激光雷达定子的参考系中旋转360度,而定子本身也在移动,导致畸变的原始点云(从上方视角看,用红色表示)。通过补偿定子运动,可以将原始图像转换为固定于房间的坐标系(用蓝色表示),从而恢复出房间的正方形形状。
技术细节
LIDAR 定子(或主体)B 的框架相对于地图框架 M 移 动。出于说明目的,底座以 2D 形式显示(从上方观察)。时 间的进展由灰色阴影箭头表示,激光雷达光束在时间 t = 0 和时 间 t = T 之间扫过一整圈时记录测量结果(红点)。
200 次扫描中每一次的地面实况,叠加在高清地图上
时间戳:可以通过使用光束角度𝜓来近似激光雷达点的时间戳。重要的是不要将记录在不同时间(例如在扫描开始和结束时)的点分组在一起。通过在0°(扫描开始)处定义一个体素边界,然后移除𝜓<0°或𝜓≥360°的偶发异常点来解决混叠问题。
初始化:VICET假设对初始姿态有一个合理的估计。通过首先运行标准的扫描匹配算法(具体为NDT)来获得初始姿态,然后VICET通过补偿运动畸变来改进这个估计。
扩展表面:NDT无法识别墙壁(以及跨越体素边界的其他平面表面)仅在表面法线方向上提供有用信息;为了增强收敛可靠性和准确性,采用ICET 的扩展表面抑制方法。
小结
在静态高清地图上注册 200 个原始 LIDAR 扫描时的平移误差(顶部)和偏航误 差(底部)
在本文中,引入了VICET,这是一种求解单帧激光雷达点云的扫描到地图匹配问题的新型算法。VICET求解了12种状态,其中6种状态描述了将扫描与地图对齐的刚体变换,另外6种状态考虑了在创建点云过程中平台运动所造成的畸变。与其它运动畸变方法相比,本文方法仅需要单帧激光雷达扫描,并且不需要外部传感器数据。
通过在现实世界数据上进行实验,本文证明了VICET比传统的NDT和ICP提高了精度,降低了地图匹配的平移偏差(从6.9cm降低到0.27cm,降低了一个数量级),同时减少了一个sigma变化(从5.4cm到2.6cm)。VICET还降低了姿态估计的偏差和方差。这些改进与精密汽车和城市空中交通应用相关。
相关文章:

论文阅读:Correcting Motion Distortion for LIDAR HD-Map Localization
目录 概要 Motivation 整体架构流程 技术细节 小结 论文地址:http://arxiv.org/pdf/2308.13694.pdf 代码地址:https://github.com/mcdermatt/VICET 概要 激光雷达的畸变矫正是一个非常重要的工作。由于扫描式激光雷达传感器需要有限的时间来创建…...

Git操作笔记
学git已经好多次了。但是还是会忘记很多的东西,一些常用的操作命令和遇到的bug以后在这边记录汇总下 一.github图片展示 图片挂载,我是创建了一个库专门存图片,然后在github的md中用专用命令展示图片,这样你的md就不会全是文字那…...

使用Python进行数据分析的基本步骤
简介: 在当今的数据驱动世界中,数据分析已成为各行各业不可或缺的一部分。Python作为一种强大的编程语言,提供了丰富的库和工具,使得数据分析变得简单易行。本文将带你了解使用Python进行数据分析的基本步骤。 一、数据获取 从外…...

NGINX优化
NGINX优化分为两个方面: 一. nginx应用配置文件的优化: 1.nginx的性能优化: 全局块: 设置工作进程数: work_processes #设置工作进程数 设置工作进程连接数:work_rilmit_nofile #设置每个worker进程最大可…...

【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
【LeetCode刷题】Day 13 题目1:852.山脉数组的峰顶索引思路分析:思路1:暴力枚举O(N)思路2:二分查找O(logN) 题目2:162.寻找峰值思路分析:思路1:二分查找O(logN) 题目1:852.山脉数组的…...

《Python学习》-- 实操篇一
一、文件操作 1. 1 读取文本文件 # 文件操作模式 # r (默认) - 只读模式。文件必须存在,否则会抛出FileNotFoundError。在这种模式下,你只能读取文件内容,不能写入或追加。 # w - 写入模式。如果文件存在,内容会被清空ÿ…...

C# 集合(二) —— List/Queue类
总目录 C# 语法总目录 集合二 List/Queue 1. List2. Queue 1. List List有ArrayList和LinkedList ArrayList 类似数组,查找快,插入删除慢(相对)LinkedList 类似双向链表,查找慢(相对),插入删除快 //ArrayList //ArrayList Arr…...

【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC
功能 读取P1.4电压,显示到口袋板显示屏,电压越高亮灯越多。 部分程序 while (1){ADC10CTL0 | ENC ADC10SC; // Sampling and conversion startLPM0;adcvalue ADC10MEM; //原始数据 0到1023adtest (float) adcvalue / 1024.…...

知乎x-zse-96、x-zse-81
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872 本文章未…...

【Linux】Linux工具——yum,vim
1.Linux 软件包管理器——yum Linux安装软件: 源代码安装(不建议)rpm安装(类似Linux安装包,版本可能不兼容,不推荐,容易报错)yum安装(解决了安装源,安装版本&…...

ES 生命周期管理
一 .概念 ILM定义了四个生命周期阶段:Hot:正在积极地更新和查询索引。Warm:不再更新索引,但仍在查询。cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。Dele…...

【JavaScript脚本宇宙】揭秘HTTP请求库:深入理解它们的特性与应用
深度揭秘:六大HTTP请求库的比较与应用 前言 在这篇文章中,我们将探讨六种主要的HTTP请求库。这些库为处理网络请求提供了不同的工具和功能,包括Axios、Fetch API、Request、SuperAgent、Got和Node-fetch。通过本文,你将对每个库…...

【强化学习】DPO(Direct Preference Optimization)算法学习笔记
【强化学习】DPO(Direct Preference Optimization)算法学习笔记 RLHF与DPO的关系KL散度Bradley-Terry模型DPO算法流程参考文献 RLHF与DPO的关系 DPO(Direct Preference Optimization)和RLHF(Reinforcement Learning f…...

vue3 todolist 简单例子
vue3 简单的TodList 地址: https://gitee.com/cheng_yong_xu/vue3-composition-api-todo-app-my 效果 step-1 初始化项项目 我们不采用vue cli 搭建项目 直接将上图文件夹,复制到vscode编辑器,清空App.vue的内容 安装包 # 安装包 npm…...

Linux项目编程必备武器!
本文目录 一、更换源服务器二、下载man开发手册(一般都自带,没有的话使用下面方法下载) 一、更换源服务器 我们使用apt-get等下载命令下载的软件都是从源服务器上获取的,有些软件包在某个服务器上存在,而另一个服务器不存在。所以我们可以添加…...

AndroidStudio编译很慢问题解决
如果gradle同步、编译下载很慢,可以换一下仓库阿里云镜像 repositories {maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/jcenter } maven { url https://maven.aliyun.com/repository/public } goog…...

PHAR反序列化
PHAR PHAR(PHP Archive)文件是一种归档文件格式,phar文件本质上是一种压缩文件,会以序列化的形式存储用户自定义的meta-data。当受影响的文件操作函数调用phar文件时,会自动反序列化meta-data内的内容,这里就是我们反序…...

Rust安装
目录 一、安装1.1 在Windows上安装1.2 在Linux下安装 二、包管理工具三、Hello World3.1 安装IDE3.2 输出Hello World 一、安装 1.1 在Windows上安装 点击页面 安装 Rust - Rust 程序设计语言 (rust-lang.org),选择"下载RUSTUP-INIT.EXE(64位)&qu…...

513.找树左下角的值
给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路: 深度最大的叶子结点一定是最后一行。 优先左边搜索,记录深度最大的叶子节点,此时就是树的最后一行最左边的值 代码: class Solution:def fi…...

docker基础,docker安装mysql,docker安装Nginx,docker安装mq,docker基础命令
核心功能操作镜像 Docker安装mysql docker run -d --name mysql -p 3306:3306 -e TZAsia/Shanghai -e MYSQL_ROOT_PASSWORDlcl15604007179 mysql docker的基本操作 docker rm 容器名称即可 docker ps 查看当前运行的容器 docker rm 干掉当前容器 docker logs 查看容器命令日…...

MyBatis二、搭建 MyBatis
MyBatis二、搭建 MyBatis 开发环境MySQL 不同版本的注意事项驱动程序(Driver)JDBC URL连接参数MyBatis配置文件版本兼容性常见问题与解决方案示例(MySQL 8.x与MyBatis连接) 创建 Maven 工程打包方式:Jar引入依赖创建数…...

昵称生成器
package mainimport ("math/rand" )// 随机昵称 形容词 var nicheng_tou []string{"迷你的", "鲜艳的", "飞快的", "真实的", "清新的", "幸福的", "可耐的", "快乐的", "冷…...

mysql仿照find_in_set写了一个replace_in_set函数,英文逗号拼接字符串指定替换
开发中使用mysql5.7版本数据库,对于英文逗号拼接的字符串,想要替换其中指定的字符串,找不到数据库函数支持,自己写了一个,实测好用! /*类似find_in_set,按英文逗号拆分字段,找出指定的旧字符串,替换成新字…...

机械设计手册第一册:公差
形位公差的标注: 形位公差框格中,不仅要表达形位公差的特征项目、基准代号和其他符号,还要正确给出公差带的大小、形状等内容。 1.形位公差框格: 形位公差框格由两个框格或多个格框组成,框格中的主要内容从左到右按…...

如何把图片保存成16位png格式?
在进行图像处理的过程中,见过8位和24位的图片,然而还没见过16位的,其实也有,比如对于灰度图,就是相当于利用65535个灰度级进行灰度存储。而8位就是256个位置存储。相当于就是0-255. 今天尝试了巨久,用pyth…...

vue 关闭页面前释放资源
mounted() {window.addEventListener(beforeunload, e > this.handleBeforeUnload(e)) }beforeDestroy() {//监听-关闭页面的时候释放资源window.removeEventListener(beforeunload, e > this.handleBeforeUnload(e))},methods: {handleBeforeUnload(event){event.preven…...

堡垒机,日志审计系统,行为管理,漏洞扫描的作用
堡垒机 日志审计 行为管理 漏洞扫描 堡垒机和防火墙的区别主要体现在以下几个方面: 功能不同:堡垒机主要用于管理和控制服务器访问权限,提供安全的登录通道和权限控制,还可以记录并监控用户对服务器的所有操作,为后…...

JVM学习-自定义类加载器
为什么要自定义类加载器 隔离加载类 在某些框架内进行中间件与应用的模块隔离,把类加载到不同的环境,如Tomcat这类Web应用服务器,内部自定义了好几种类加载器,用于隔离同一个Web应用服务器上的不同应用程序 修改类加载的方式 …...

NDIS Filter开发-OID 请求
NDIS 定义对象标识符 (OID) 值来标识适配器参数,其中包括操作参数,例如设备特征、可配置的设置和统计信息。 Filter驱动程序可以查询或设置基础驱动程序的操作参数,或过滤/覆盖顶层驱动程序的 OID 请求。 NDIS 还为 NDIS 6.1 及更高版本的Fi…...

软考 系统架构设计师之考试感悟2
接前一篇文章:软考 系统架构设计师之考试感悟 今天是2024年5月25号,是个人第二次参加软考系统架构师考试的正日子。和上次一样,考了一天,身心俱疲。天是阴的,心是沉的,感觉比上一次更加沉重。仍然有诸多感悟…...