点云配准方法--PLICP-程序员宅基地

技术标签: 激光SLAM  


ICP方法存在以下缺点:

  • 依赖初始值,初始值不好时,迭代次数增加;对于较大的初始误差,可能会出现错误的迭代结果
  • ICP是一阶收敛,收敛速度慢。(所以会用kd-tree来加快搜索效率)
  • 会有离群点及噪声

(一)PLICP原理

PLICP是一种改进的ICP算法,标准的ICP算法是点对点配准,PLICP是Point-to-Line,也就是点对线的对准。算法流程如下:

PLICP流程

 

PLICP的流程其实和ICP的流程是一样的,不同的地方在于ICP是找最近邻的一点,以点与点之间的距离作为误差,而PLICP是找到最近邻的两点,两点连线,是以点到线的距离作为误差,所以PLICP的匹配误差比ICP的匹配误差要小的多

PLICP示意图

上面这个示意图很好理解,蓝色的点是t-1时刻的激光点,棕色的线是真实物体(比方说墙面),红色的点是t时刻的点。

(b)图中同心圆的实线表示点与点之间的距离误差----知道一个点P1和一个点之间的距离D,确定另外一个点P2的位置,P2的位置就在一个以P1为圆心,D为半径的圆上。如下图:

(c)图中黑色的线表示的是点与线之间的距离误差

那为什么PLICP的精度会比ICP的精度高呢?

咱们来看看示意图:

假设棕色那条线是实际场景中的墙,蓝色是t时刻的扫描点,红色的点是t+1时刻的扫描点,如果按照ICP的思想,t+1时刻的1点会匹配到t时刻的靠上的点(因为欧式距离更短),但是1点的正确匹配点应该是靠下的点,所以这个匹配就是错误的,所引起的额外的匹配误差是由于ICP本身的算法引起的。因为我们算法强制的认为他们是空间中的同一个点,但是对于激光雷达,前后两帧的激光数据很有可能是打到不同的物体或者说是同一物体的不同部位(类似ICP在点云配准中,前后是匹配的),所以这是ICP算法的缺点。所以最好的方法就是计算离最近邻两点组成的直线的距离,如下图:

I

如(2)式,是ICP算法的目标函数数学表达式;(3)式PLICP算法的目标函数表达式,比ICP多了一个直线的法向量。

可以看做是t时刻的参考帧,看做是k+1时刻经过R和t变化到t时刻的当前帧,这两个之间的差值是一个向量哦~。那么ICP的算法求的就是误差向量1的模的平方,而PLICP算法就是秋误差向量1在法向量ni上的投影(也就是到直线的距离)。目标函数就是求所有这些距离和的最小值,从而得到R和T。

总结PLICP特点:

  • PLICP是二阶收敛,ICP是一阶收敛
  • PLICP对初始值更敏感
  • 以点到线的误差为目标函数,PLICP的求解精度更高

附一张求解时间和迭代次数的对比:


(二)PCLIC的C++代码实现

TODO...

参考代码实现:https://github.com/AndreaCensi/csm

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40863346/article/details/102731212

智能推荐

Linux的内存映像导出接口—kcore-程序员宅基地

文章浏览阅读77次。/proc/kcore文件提供了整个机器的内存映像,和vmcore不同的是,它提供了一个运行时的内存映像,为此和vmcore一样,内核提供了一个类似的但是稍显简单的kcore_list结构体,我们比较一下它们: struct kcore_list { struct kcore_list *next; unsigned long addr; size_t size; ..._kcore 内存

Linux下gdb调试用法_linux gdb调试-程序员宅基地

文章浏览阅读1k次。Linux下gdb调试用法_linux gdb调试

基于Matlab实现标准规划问题求解(源码+数据)_matlab规划求解-程序员宅基地

文章浏览阅读426次。基于Matlab实现标准规划问题求解(源码+数据)_matlab规划求解

.Net Framework 4.6.2升级/ 指定的信任提供程序不认识或不支持使用者的指定格式_指定的信任提供程序不认识或不支持使用者的指定格式。-程序员宅基地

文章浏览阅读1.5w次,点赞3次,收藏2次。1.打开官方地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=53345选择“下载”:2.下载文件,点击下载完成的文件,点击运行:3.勾选“同意安装”:4.按道理应该安装成功了。如果出现如下安装提示:那么建议使用离线版的进行安装:https://www.microsof_指定的信任提供程序不认识或不支持使用者的指定格式。

深入讲解Java!专属于Java程序员的学习福音,Java面试题汇总-程序员宅基地

文章浏览阅读49次。前言众所周知,Java开发人员的生存环境可谓是与以前大相径庭,以IT行业发展来说,在十几年前的时候,IT行业的技术人才是稀缺的,程序员最初的招聘行情,只要你会敲“holle world”、会点技术,能做出点东西,就能入职月薪过万的大厂岗位。而到了今年2021年,初级人才已经不稀缺了。“IT初级人才招聘市场上”除了每年新入行的人,还有几年内、大几年内入行后技术没有进步的人,这些人被辞退、或跳槽找工作,找的也是“IT初级程序员”岗位……以互联网巨头阿里的招聘信息来看,首先对于工作经验有一定的要求,在我看来

c++11/14/17标准你了解多少_c++ 11 和 14-程序员宅基地

文章浏览阅读7.6w次,点赞15次,收藏187次。我们常用的c++,你对它的标准了解多少呢?本文就带你一探c++11新标准。官网链接:https://msdn.microsoft.com/zh-cn/library/hh567368.aspx#featurelist C++11 功能列表 C++11 核心语言功能表 C++11 核心语言功能表:并发 C++11 核心语言功能:C99 ..._c++ 11 和 14

随便推点

springboot 与swagger整合出现Unable to infer base url.This is common when using dynamic的解决办法_springboot 集成swagger unable to infer base url. thi-程序员宅基地

文章浏览阅读8.2k次,点赞2次,收藏2次。今天在springboot与swagger整合测试的时候跳出如下所示界面经查资料发现有两种解决办法,1.直接把@EnableSwagger2注解加在主启动类就可以,这样虽然能解决问题,但是这样会扫到使用的框架的接口,这种方法要慎用。2.主启动类加上@ComponentScan("swagger配置类所在包"),以保证配置类被扫描到最后解决问题之后就可以访问 你的配置文..._springboot 集成swagger unable to infer base url. this is common when using d

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/util/POILogFactory-程序员宅基地

文章浏览阅读3.7k次。Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/util/POILogFactoryException in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/util/POILogFactory at org.a..._java.lang.noclassdeffounderror: org/apache/poi/util/poilogfactory

我常用的Latex中文报告模板(一)-程序员宅基地

文章浏览阅读1.6k次。不得不说,使用Latex编写文档效率会提升很多。但是,如果没有好的模板,自己从零开始动手完成一份Latex文档还是得花费不少时间和精力的,所以,为了提高文档和技术报告的编写效率,我为自己准备了以下的Latex模板,并附图如下(注意,在Texlive中需要自己安装黑体(hei)和楷体(kai)等中文字体,具体安装方法我会在下一篇博客中介绍。\documentclass[a4paper, 11..._用latex写报告模版包括但不限于标题、字号和正文

SAP 后继物料简介-程序员宅基地

文章浏览阅读555次。通常情况下当一个物料被停用以后需要更换成另外的一个物料,我们首先想到的就是去更改BOM,的确这也是一种可行的办法,但是这样做会带来BOM的维护人员的工作量,另一个方面是不知道在什么时间点去更改BOM,需要替换的物料在什么时候消耗完。我们可以看到100206的这个物料在被上面的需求消耗一个以后,还剩下库存1PC,是不满足需求的,紧接着根据物料主数据上面的后继物料100208被扣除库存需求1PC。所以在物料永久的替换的业务中,我们可以通过物料主数据上面的后继物料来实现,当物料库存消耗完以后替换成新物料。_sap 后继物料

跨考计算机之路,2014考研心得:零基础跨考之路-程序员宅基地

文章浏览阅读216次。2014考研心得:零基础跨考之路2013-12-02 14:03来源:新东方网作者:我就读于华南农业大学生态学专业,报考的是华南理工大学经济与贸易学院的国民经济学专业。华南理工大学是一所985、211工程院校,而我是跨校跨专业考研,此次考研成绩总分387,政治71,英语一65,数学三117,专业课134。我准备考研是从2012年的三月份,之前一直在徘徊着,不确定要不要跨专业,后来在家人的鼓励下毅然..._生态学跨考计算机

OpenMPI(一) 点对点通信-程序员宅基地

文章浏览阅读579次。为什么80%的码农都做不了架构师?>>> ..._节点如何在 openmpi 中通信

推荐文章

热门文章

相关标签