icp算法基本思想
Icp基本思想参考资料:http://www.cnblogs.com/jian-li/articles/4945676.html ,包括点-点,点-面的各种icp变种
Icp算法就是两个点云X、Y之间的匹配,最小化均方误差
其中R是旋转矩阵,t是平移矩阵。
方法:

搜索策略
找到最近点,使用kd-tree,参考资料
http://www.cnblogs.com/xy123001/p/5831116.html
http://blog.sina.com.cn/s/blog_6f611c300101bysf.html

误差函数求解
常见的:基于奇异值分解的方法、四元数方法。
其他参考:
mrpt的icp
http://www.mrpt.org/Iterative_Closest_Point_%28ICP%29_and_other_matching_algorithms


用kd-tree来找最近点,是整个icp算法中最耗时的部分。所以,如果点云密集,就要下采样,下采样默认5
通过ini配置文件,还可以选择icp算法的种类,是经典算法还是LM算法,
经典算法和LM算法的区别就是 经典算法使用的最小二乘法,替换成了LM算法中的非线性最小二乘。
LM加大了计算量。
ICPfastSlam算法
Icp+粒子滤波
祝继华, 郑南宁, 袁泽剑,等. 基于ICP算法和粒子滤波的未知环境地图创建[J]. 自动化学报, 2009, 35(8):1107-1113.
点-平面
下图是点-切平面距离的示意图

与点到点的ICP算法相比,运用点到平面的距离的方法大大减少了计算量以及迭代次数,但是该方法的鲁棒性并不是太好。
由icp迭代后的点求机器人位姿
举个例子。
下图中有两个坐标系A 和 B
B是由A经过平移和旋转得到的。平移矩阵为R,旋转矩阵T
A旋转sita= - 90度(逆时针为正),沿A的x轴平移3之后,得到了B坐标系。
R=[0,1; -1,0] T=[3, 0]
M=[R T;0 1]
一个点在A下为[1;5],在B下为[-5;-2]
M*[-5;2] = [1;5]
Inv(M)*[1 ;5] = [-5;-2]
由此可知,激光扫描到的点,经过icp匹配之后,R 、t就已经得到了,sita tx ty也就知道了,这就相当于 机器人就是坐标原点。
icp算法基本思想的更多相关文章
- ICP算法(Iterative Closest Point迭代最近点算法)
标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许 ...
- ICP算法(迭代最近点)
参考博客:http://www.cnblogs.com/21207-iHome/p/6034462.html 最近在做点云匹配,需要用c++实现ICP算法,下面是简单理解,期待高手指正. ICP算法能 ...
- 【转】ICP算法(Iterative Closest Point迭代最近点算法)
原文网址:https://www.cnblogs.com/sddai/p/6129437.html.转载主要方便随时可以查看,如有版权要求请及时联系. 最近在做点云匹配,需要用c++实现ICP算法,下 ...
- ICP 算法
ICP 算法是一种点云到点云的配准方法. 在SLAM中通过空间点云的配准(可以通过相机或者3D激光雷达获取点云数据),可以估计相机运动(机器人运动,旋转矩阵R与平移向量t),累积配准,并不断回环检测, ...
- 点云匹配和ICP算法概述
Iterative Closest Point (ICP) [1][2][3] is an algorithm employed to minimize the difference between ...
- [PCL]5 ICP算法进行点云匹配
上一篇:http://www.cnblogs.com/yhlx125/p/4924283.html截图了一些ICP算法进行点云匹配的类图. 但是将对应点剔除这块和ICP算法的关系还是没有理解. RAN ...
- ICP算法使用遇到的问题
这几天在学习数据关联的方法,本来想使用ICP算法进行距离测距数据的配准,但是用的过程中出现问题,配的不准,而且偏差更大了. 红色的和黄色的2维激光点进行ICP配准,但将变换矩阵和黄色进行乘之后偏差更大 ...
- PCL点云库:ICP算法
ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法.在VTK.PCL.MRPT.MeshLab等C++库或软件中都有实现,可以参见维基百科中的ICP Alg ...
- 三维点集拟合:平面拟合、RANSAC、ICP算法
ACM算法分类:http://www.kuqin.com/algorithm/20080229/4071.html 一: 拟合一个平面:使用SVD分解,代码里面去找吧 空间平面方程的一般表达式为: A ...
随机推荐
- vi编辑文件E437: terminal capability "cm" required 解决办法
E437: terminal capability "cm" required 这个错误一般是环境变量TERM没有配置或者配置错误所致. 解决办法: 执行export TERM=x ...
- UVa(11292),贪心水题
蓝书P1, 很简单的一个贪心选择,用能力小的去砍小的.本来想双重循环,哎,傻逼了,直接遍历选手,碰到能砍的就砍掉. #include <stdio.h> #include <algo ...
- 2016年7月1日 星期五 --出埃及记 Exodus 14:28
2016年7月1日 星期五 --出埃及记 Exodus 14:28 The water flowed back and covered the chariots and horsemen--the e ...
- 位运算(bit)
位运算(bit) Time Limit:2000ms Memory Limit:64MB [题目描述] lyk最近在研究位运算.它发现除了xor,or,and外还有很多运算.它新定义了一种运算符“ ...
- java配置问题
先安装jdk.然后这样设置:**********************全为系统变量**************************变量名:JAVA_HOME变量值:D:\Program File ...
- iOS静态库和动态库的区别
一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用 ...
- mysql 常用操作指令
(1)centos mysql数据库文件在哪? [root@localhost ~]# find / -name mysql (2)查找数据库备份工具 mysqldump [root@localhos ...
- Cheatsheet: 2014 08.01 ~ 08.31
Web Slow Server? This is the Flow Chart You're Looking For A Strolll Through Node: Introduction .NET ...
- V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)
When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...
- python_way day10 python和其他语言的作用域 、 python2.7多继承和3.5多继承的区别 、 socket 和 socketserver源码(支持并发处理socket,多进程,多线程)
python_way day10 1.python的作用域和其他语言的作用域 2.python2.7多继承和3.5多继承的区别 3.socket和socketserver源码(并发处理socket) ...