经典文献阅读之--NORLAB-ICP(重力约束ICP)

news2024/11/17 13:51:05

0. 简介

最近几年IPC相关的文章也出了不少,最近作者有看到了一篇比较有意思的ICP论文—《Gravity-constrained point cloud registration》,这篇论文将传统的ICP考虑了重力因素,高频率的IMU数据弥补了低频的传感器数据。除此之外,可以从重力向量中获取三自由度姿态中的两个。在视觉里程计中,IMU已经被用来将6自由度位姿估计转换为4自由度。在lidar SLAM中,重力测量在后端优化中经常被用来作为惩罚项来防止地图变形。文中提出了一种基于迭代最近点(ICP)的前端方法,其利用了重力向量提供的旋转可观自由度,并且提供了与重力向量对齐的位姿估计。该方法相比于传统的ICP算法,可以减小30%的定位漂移。这部分代码已经在Github上开源了。这非常便于我们对此进行学习。同时作者提到具体的代码也推送给了libpointmatcher开源库。

1. ICP Mapper

建图以及后续定位工作是使用本问开源的的norlab icp映射器实现的。这是一个轻量化的建图系统,本质上封装了ICP功能,同时执行输入激光雷达数据过滤和点云图内存管理。在我们的设置中没有执行全局优化,点云图随着机器人在环境中导航而增量增长。mapper执行以下步骤:

1)根据初始姿态估计 T ˘ \breve{T} T˘将输入激光雷达扫描图像转换为世界帧
2)使用ICP将扫描图像注册到地图上
3)将扫描图像插入到地图内部

初始估计 T ˘ \breve{T} T˘是由基于机器人里程计的平移向量和基于IMU的方向四元数组成。输入激光雷达扫描通过随机下采样的方式来保持移动机器人对激光点云数据处理的实时性能。输入激光数据的机器人运动失真矫正则也是根据里程计和IMU数据来完成的。最后,只需要将对齐的扫描点的一个子集合并到地图中即可完成建图。
在这里插入图片描述

2. 4-DOF ICP

ICP算法旨在评估一个刚性变换 T ˘ \breve{T} T˘来将最好将一组3d点 Q \mathcal{Q} Q(即地图点云)与第二组3d点 P \mathcal{P} P(即扫描点云),通过最小化误差函数 e \mathcal{e} e:

在这里插入图片描述
在我们的方法中,我们选择将点到面的误差定义为 e \mathcal{e} e[19],因为它在大多数情况下优于点到点定义[9]。然而,4-DOF的修正可以隐式扩展到点到高斯误差定义,因为后者可以转换为点到平面,如Babin 这篇文章[20]所示。我们首先将变换参数 T T T定义为一个4D向量 τ \mathcal{τ} τ:
在这里插入图片描述
其中 γ γ γ是沿 z z z轴的旋转分量, t x , t y t_x, t_y tx,ty t z t_z tz是平动分量。与 e \mathcal{e} e的经典6自由度定义相比, τ \mathcal{τ} τ遗漏了沿x轴和y轴的旋转分量。然后,我们遵循点到平面误差函数的标准定义
在这里插入图片描述
其中 n k n_k nk是表示在点 q k q_k qk处曲面的法向量, R = R ( γ ) \mathbf{R}=R(γ) R=R(γ)是一个旋转矩阵,指数 k k k表示来自 Q \mathcal{Q} Q P \mathcal{P} P的成对点,密切遵循Pomerleau[21]的最小化推导,但修改为4自由度,旋转矩阵 R \mathbf{R} R仅执行偏航旋转。另外两个旋转是不需要的,因为 P \mathcal{P} P点云已经根据最初的 T ˘ \breve{T} T˘姿态估计被映射器预对齐。最小化方法依赖于旋转矩阵线性化。这种线性化可以使用小角度近似来实现:
在这里插入图片描述
I \mathbf{I} I是单位矩阵。在ICP环境下,通过整个配准算法的迭代过程,降低了线性化的影响。结合(3)和(4),我们可以将目标函数近似为
在这里插入图片描述
用标量三重积和重新组织这些项,其中n_k是点q_k所在的平面。将上述的R代入到误差中,可以写成这样
在这里插入图片描述
然后我们可以最小化误差 e \mathcal{e} e关于 r \mathbf{r} r t \mathbf{t} t,并使偏导为零
在这里插入图片描述
我们可以把这些导数组合成线性形式 A τ = b \mathbf{A}τ = \mathbf{b} Aτ=b,把自变量放在方程右边

…详情请参照古月居

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

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

相关文章

4K分辨率搭配光学变焦功能,极米H6成旗舰家用投影首选

近几年,我国投影机市场产品竞争日趋激烈,以极米为代表的国产品牌迅速崛起并逐步超越国际品牌成为中国投影机市场的领跑者。虽然目前国产投影仪品牌比较多,但其中极米科技旗下的产品最受消费者青睐。IDC数据显示,2022年上半年&…

easyexcel导出中自定义合并单元格,通过重写AbstractRowWriteHandler

针对 阿里的easyexcel 自定义处理 任意单元格合并 官方给出的合并单元格 只给出固定规律的单元格合并,当然官方也指出可以自定义合并单元格的策略,我们跟进LoopMergeStrategy 这个合并策略的实例类,发现里面继承了AbstractRowWriteHandler,官方示例代码如下 /*** 合并单元格…

揭秘!Chrome 调试的11+隐藏技巧,让你在开发中如虎添翼!

前言 chrome 浏览器作为前端童鞋的老婆,相信你一定不陌生。调页面、写BUG、画样式、看php片少了它整个世界都不香了。 不信?一起来看看我们的老婆有多厉害… 1、一键重新发起请求 在与后端接口联调或排查线上 BUG 时,你是不是也经常听到他…

Python中的主函数

在Python代码中,我们常常看到主函数是以if __name__ __main__开头的,比如 它的原理是什么呢? 首先要知道,__name__是内置变量,用于表示当前模块的名字。在一个模块中运行以下语句,你会发现输出的是__main…

CSS:横向导航栏

横向导航栏&#xff08;盗版导航栏&#xff0c;B站仿写。&#xff09; 原视频链接 <html><head><title>demo</title><style>*{margin: 0;padding: 0;list-style: none;text-decoration: none;}body{display: flex;justify-content: center;a…

模型蒸馏与压缩简单介绍

目录 一、概述 二、DistilBERT模型介绍 2.1 基本结构 2.2 知识蒸馏方法 一、概述 预训练语言模型虽然在众多自然语言任务中取得了很好的效果&#xff0c;但通常这类模型的参数量较大&#xff0c;很难满足实际应用中的时间和空间需求。 下图给出了常见预训练语言模型参数量的…

JDK11 下载与安装、环境配置(全网最详情,值得收藏)

目录 一、下载JDK11 二、安装JDK11 三、配置环境变量 四、验证环境配置是否成功 五、答疑&#xff0c;为什么不配置 CLASSPATH 什么是JDK JDK是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心&#xff0…

【算法训练(day3)】快速排序模版选择及不同版本快排对比

目录 一.划分区间的选取 二.代码实现lomuto版本快速排序 三.hoare版本快速排序 四.竞赛模板的选取 五.竞赛模板的代码实现 一.划分区间的选取 目前市面上常用的有两种划分区间&#xff0c;一种是hoare划分另一种是Lomuto划分。常见快速排序实现模版比如挖坑法和经典快速排…

第三章(2):深入理解NTLK库基本使用方法

第三章&#xff08;2&#xff09;&#xff1a;深入理解NTLK库基本使用方法 本节主要介绍了NLTK库的基本使用方法&#xff0c;其中对NLTK的安装与配置进行了介绍。随后&#xff0c;对文本处理中常用的分词、句子分割和词性标注这三个任务进行了详细讲解。 如果感觉有用&#xff…

《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议

密码协议是指两个或者两个以上参与者使用密码算法时&#xff0c;为了达到加密保护或安全认证目的而约定的交互规则。 密钥交换协议 公钥密码出现之前&#xff0c;密钥交换很不方便&#xff0c;公钥密码可以在不安全信道上进行交换&#xff0c;交换的密码协议是为了协商会话密钥…

实现开机动画和自定义Toolbar的高级写法

需求是自定义一个Toolbar和全屏展示一个第一次激活App的开机动画 1自定义Toolbar的使用 1仍然是先将工程的theme.xml中设置成NoActionBar <resources xmlns:tools"http://schemas.android.com/tools"><!-- Base application theme. --><style name&…

Oracle11g全新讲解之PLSQL编程

一、PLSQL编程 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言.通过增加变量、控制语句&#xff0c;使我们可以写一些逻辑更加复杂的数据库操作. 语法结构 declare--声明变量 变量名称 v_ 开头&#xff0c;规范 begin--执行具体的语句--异常处理 …

Spring原理学习(五):一篇讲清楚动态代理(jdk和cglib)的使用、原理和源码

目录 一、jdk动态代理的基本使用 二、cglib动态代理的基本使用 2.1 方法一&#xff1a;method.invoke() 方法反射调用 2.2 方法二&#xff08;spring使用的这个方法&#xff09;&#xff1a; methodProxy.invoke() 2.3 方法三&#xff1a;methodProxy.invokeSuper() 三、…

(Linux驱动入门)字符设备

一、设备相关概念 1.1 设备号 内核中通过类型dev_t来描述设备号&#xff0c;其实质是unsigned int 32位整数&#xff0c;其中高12位为主设备号&#xff0c;低20位为次设备号。设备号也是一种资源&#xff0c;当我们需要时可以调用函数去申请。 ​​​​​​​int register_c…

光伏发电数据监控的运维平台

摘要&#xff1a;全球化经济社会的快速发展,加快了传统能源的消耗,导致能源日益短缺,与此同时还带来了严重的环境污染。因此,利用没有环境污染的太阳能进行光伏发电获得了社会的普遍关注。本文根据传统式光伏电站行业的发展背景及其监控系统的技术设备,给出了现代化光伏电站数据…

Vue3通透教程【十二】TS类型声明优势

文章目录 &#x1f31f; 写在前面&#x1f31f; 上篇文章解惑&#x1f31f; JS函数中的隐患&#x1f31f; 函数中的类型&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 V…

计算机视觉 | 八斗人工智能 (中)

目录 卷积&滤波1.一个没有任何效果的卷积核2.平均均值滤波3.图像锐化4.soble边缘检测 卷积的三种填充模式1.padding --> same模式 最常用的模式2.full和valid模式三通道卷积 canny边缘检测算法&#xff08;效果最好&#xff09;Sobel算子、Prewitt算子 相机模型畸变矫正…

新能源汽车和数字化转型

工业时代的代表产品是交通运输设备&#xff0c;核心桂冠是发动机。信息时代的代表产品是智能手机&#xff0c;核心桂冠是芯片。 汽车是个很有代表性产品&#xff0c;因为它既属于复杂高精密金属机械设备&#xff0c;又属于大规模使用的大件消费品。所以这100年来&#xff0c;汽…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II 、55. 跳跃游戏 、45.跳跃游戏II

文章目录 122.买卖股票的最佳时机II55. 跳跃游戏45.跳跃游戏II:star: 122.买卖股票的最佳时机II 遇到每天正利润就收集&#xff0c;负利润就不收集 链接:代码随想录 解题思路&#xff1a; ①因为可以多次买卖&#xff0c;所以考虑到最终把最终利润进行分解 如假如第0天买入&am…

垃圾收集算法面试总结

垃圾收集算法 标记 - 清除算法 首先标记出所有需要被回收的对象&#xff0c;标记完后统一回收所有被标记的对象。 后续的收集算法都是基于这种思路并对其不足进行改进而得到的。 这种方法主要有两个缺点&#xff1a; 一个是效率问题&#xff0c;标记和清除两个过程的效率都…