PLICP
介绍
PLICP相比较于普通ICP算法,使用点线之间的距离作为度量,最终找到一个最小化该度量的闭式解(解析解)。 最优结果以平方的速度收敛。相比较于ICP,IDC,MBICP。PLICP更加准确,且需要更少的迭代次数。缺点是对于大的初始化误差无法给出很好的结果。
对于传统的ICP算法,其原理见公式(1),即求解一个位姿使得当前帧通过该位姿变换到参考帧与参考帧间的误差最小化。普通算法无法找到闭式解,由于投影面的任意性以及旋转平移变换的非线性。而迭代之后投影点的计算可以使用上一帧的位姿,最小化当前帧重投影误差。在每一步都可以找到一个闭式解,具体见公式(2)。ICP算法的缺点在于无法解决初始化太差的问题、收敛太慢、外点频繁、不适合概率框架。
该文章使用点线距离作为度量,\(n_i\)为投影点所在平面的法向量,点线度量公式:
公式3
具体算法
- 通过当前估计的位姿(初始化为\(q_0\),可以从里程计中获取),计算第二帧点在第一帧下映射的位置。公式(4)。
- 对于每一个映射过去的点,在第一帧中找到两个最近的点,这两个点可以构成一条线段。
- 使用修剪程序除去外点(文献9)
- 构建误差函数,最小化点到线段之间的距离,优化出新的位姿(公式5)
关于二阶收敛速度:
文献10中已经证明了ICP算法是一阶收敛的(公式6):误差一直降低,存在局部最小值。PLICP的收敛和高斯牛顿法相似(公式7)。
剩下的部分就是一些证明了。
A
既然是闭式解,为什么是迭代优化的方法,这不是数值解?
找到最近点对应的线段后,怎么到法向量\(n_1\)。
PLICP的更多相关文章
- plicp 点云迭代最近邻点配准法
输入参数 点云A的极坐标集合 点云A对应Lidar所在pose 点云B的极坐标集合 点云B对应Lidar所在pose Features 根据两个点云的弧度关系确定找点的起始位置 根据两个点云的弧度关系 ...
- 【High-Speed and Accurate Laser Scan Matching Using Classified Features】
所谓的"分类特征",就是把特征分成 1. 旋转特征:用直线表示 2. 平移特征,用撕裂点和临界点表示 最大的创新点 应该就是下面的分组吧 匹配的时候,用RANSAC 或者动态规划, ...
- [SLAM]2D激光扫描匹配方法
1.Beam Model 2.Likehood field for k=1:size(zt,1) if zt(k,2)>0 d = -grid_dim/2; else d = grid_dim/ ...
- 点云匹配和ICP算法概述
Iterative Closest Point (ICP) [1][2][3] is an algorithm employed to minimize the difference between ...
- icp算法的一些参考资料
1.综述:迭代最近点算法综述,介绍了svd分解和四元数法,其中 svd法:http://blog.csdn.net/kfqcome/article/details/9358853 四元数法:http: ...
- Gmapping笔记
2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM 作者:kint_zhao 原文:https://blog. ...
随机推荐
- TVM部署预定义模型
TVM部署预定义模型 本文通过深度学习框架量化的模型加载到TVM中.预量化的模型导入是在TVM中提供的量化支持之一. 本文演示如何加载和运行由PyTorch,MXNet和TFLite量化的模型.加载后 ...
- Paddle Release Note
Paddle Release Note 重要更新 飞桨paddle框架2.0.0版本有如下重要更新: 编程范式:默认开启动态图模式进行模型开发和训练,通过动转静的方式进行模型部署和训练加速.如果需要使 ...
- OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...
- Imec推出高性能芯片的低成本冷却解决方案
Imec推出高性能芯片的低成本冷却解决方案 Imec unveils low-cost cooling solution for high-performance chips 3D打印冷却器优于传统解 ...
- 痞子衡嵌入式:嵌入式里通用微秒(microseconds)计时函数框架设计与实现
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是嵌入式里通用微秒(microseconds)计时函数框架设计与实现. 在嵌入式软件开发里,计时可以说是非常基础的功能模块了,其应用也非常 ...
- 反汇编EXE添加一个启动时的消息框
反汇编EXE添加一个启动时的消息框 最近有一个要修改PE文件的需求,就先从EXE文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO,主要的思路是将其反汇编得到汇编代 ...
- SpringCloud01:微服务概述
一.什么是微服务 微服务是一种架构风格,是一种架构设计方式,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地 ...
- yum安装时提示“尚未安装任何 GPG 公钥,请下载您希望安装的软件签名公钥并安装”
在Linux操作系统中,安装软件依赖包时,出现了尚未安装任何 GPG 公钥,要求使用rpm --import public.gpg.key导入 问题: [root@server7 yum.repos ...
- WordPress安装篇(3):用宝塔面板在Linux上安装WordPress
前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...
- ES6中的字符串
字符串在编程语言中,一直是使用率很高的数据,虽说函数在js语言中是一等公民,但是字符串,怎么也能算得上是千年老二,下面我就一起和大家探讨一下在es6中的一些新用法和特性,特别是在字符串拼接的时候,会解 ...