[SLAM]2D激光扫描匹配方法
1.Beam Model
Beam Model我将它叫做测量光束模型。个人理解,它是一种完全的物理模型,只针对激光发出的测量光束建模。将一次测量误差分解为四个误差。
$ph_{hit}$,测量本身产生的误差,符合高斯分布。
$ph_{xx}$,由于存在运动物体产生的误差。
...
2.Likehood field
似然场模型,和测量光束模型相比,考虑了地图的因素。不再是对激光的扫描线物理建模,而是考虑测量到的物体的因素。
似然比模型本身是一个传感器观测模型,之所以可以实现扫描匹配,是通过划分栅格,步进的方式求的最大的Score,将此作为最佳的位姿。
for k=1:size(zt,1)
if zt(k,2)>0
d = -grid_dim/2;
else
d = grid_dim/2;
end
phi = pi_to_pi(zt(k,2) + x(3));
if zt(k,1) ~= Z_max
ppx = [x(1),x(1) + zt(k,1)*cos(phi) + d];
ppy = [x(2),x(2) + zt(k,1)*sin(phi) + d];
end_points = [end_points;ppx(2),ppy(2)]; wm = likelihood_field_range_finder_model(X(j,:)',xsensor,...
zt(k,:)',nearest_wall, grid_dim, std_hit,Z_weights,Z_max);
W(j) = W(j) * wm;
else
dist = Z_max + std_hit*randn(1);
ppx = [x(1),x(1) + dist*cos(phi) + d];
ppy = [x(2),x(2) + dist*sin(phi) + d];
missed_points = [missed_points;ppx(2),ppy(2)];
end
set(handle_sensor_ray(k),'XData', ppx, 'YData', ppy)
end
function q = likelihood_field_range_finder_model(X,x_sensor,zt,N,dim,std_hit,Zw,z_max)
% retorna probabilidad de medida range finder :)
% X col, zt col, xsen col
[n,m] = size(N); % Robot global position and orientation
theta = X(3); % Beam global angle
theta_sen = zt(2);
phi = pi_to_pi(theta + theta_sen); %Tranf matrix in case sensor has relative position respecto to robot's CG
rotS = [cos(theta),-sin(theta);sin(theta),cos(theta)]; % Prob. distros parameters
sigmaR = std_hit;
zhit = Zw(1);
zrand = Zw(2);
zmax = Zw(3); % Actual algo
q = 1;
if zt(1) ~= z_max
% get global pos of end point of measument
xz = X(1:2) + rotS*x_sensor + zt(1)*[cos(phi);
sin(phi)];
xi = floor(xz(1)/dim) + 1;
yi = floor(xz(2)/dim) + 1; % if end point doesn't lay inside map: unknown
if xi<1 || xi>n || yi<1 || yi>m
q = 1.0/z_max; % all measurements equally likely, uniform in range [0-zmax]
return
end dist2 = N(xi,yi);
gd = gauss_1D(0,sigmaR,dist2);
q = zhit*gd + zrand/zmax;
end end
3.Correlation based sensor models相关分析模型
XX提出了一种用相关函数表达马尔科夫过程的扫描匹配方法。
互相关方法Cross-Correlation,另外相关分析在进行匹配时也可以应用,比如对角度直方图进行互相关分析,计算变换矩阵。
参考文献:A Map Based On Laser scans without geometric interpretation
circular Cross-Correlation的Matlab实现
% Computes the circular cross-correlation between two sequences
%
% a,b the two sequences
% normalize if true, normalize in [,]
%
function c = circularCrossCorrelation(a,b,normalize) for k=:length(a)
c(k)=a*b';
b=[b(end),b(:end-)]; % circular shift
end if normalize
minimum = min(c);
maximum = max(c);
c = (c - minimum) / (maximum-minimum);
end
4.MCL
蒙特卡洛方法
5.AngleHistogram
角度直方图
6.ICP/PLICP/MBICP/IDL
属于ICP系列,经典ICP方法,点到线距离ICP,
7.NDT
正态分布变换
8.pIC
结合概率的方法
9.线特征
目前应用线段进行匹配的试验始终不理想:因为线对应容易产生错误,而且累积误差似乎也很明显!
[SLAM]2D激光扫描匹配方法的更多相关文章
- 综述 | SLAM回环检测方法
本文作者任旭倩,公众号:计算机视觉life成员,由于格式原因,公式显示可能出问题,建议阅读原文链接:综述 | SLAM回环检测方法 在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿 ...
- halcon三种模板匹配方法
halcon有三种模板匹配方法:即Component-Based.Gray-Value-Based.Shaped_based,分别是基于组件(或成分.元素)的匹配,基于灰度值的匹配和基于形状的匹配,此 ...
- SSM-Spring-12:Spring中NameMatchMethodPointcutAdvisor名称匹配方法切入点顾问
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- advice 是通知advisor 是顾问 顾问(Advisor) 通知Advice是Spring提供的一种切 ...
- 基于HALCON的模板匹配方法总结
注:很抱歉,忘记从转载链接了,作者莫怪.... 基于HALCON的模板匹配方法总结 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多 ...
- myeclipse 快捷键,从步骤开始的大括号定位到匹配方法结束的大括号
myeclipse 快捷键,从方法开始的大括号定位到匹配方法结束的大括号转至匹配的括号 Ctrl+Shift+P ctr+shift+r 文件名搜索文件 ctr+h 搜索文件里 ...
- 基于HALCON的模板匹配方法总结 (转)
很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多的练习和实验,并对基于HDevelop的形状匹配算法的参数优化进行了研究,写了一篇& ...
- 使用Opencv中matchTemplate模板匹配方法跟踪移动目标
模板匹配是一种在图像中定位目标的方法,通过把输入图像在实际图像上逐像素点滑动,计算特征相似性,以此来判断当前滑块图像所在位置是目标图像的概率. 在Opencv中,模板匹配定义了6种相似性对比方式: C ...
- FreeAnchor:抛弃单一的IoU匹配,更自由的anchor匹配方法 | NIPS 2019
论文抛弃以往根据IoU硬性指定anchor和GT匹配关系的方法,提出FreeAnchor方法来进行更自由的匹配,该方法将目标检测的训练定义为最大似然估计(MLE)过程,端到端地同时学习目标分类.目标检 ...
- [SLAM]2D激光线特征提取
Nguyen, V., et al. (2007)."A comparison of line extraction algorithms using 2D range data for i ...
随机推荐
- 如何在2016年成为一个更好的Node.js开发者
本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员.遵循本文提供的这些建议,能够让你更好的进行日常的开发工作. St ...
- gulp完全开发指南 => 快来换掉你的Grunt吧
最近一直在构建Angular应用,通过bower管理前端包依赖,然后通过gulp和它配合.发现gulp相比于grunt真的很轻,现在我的项目中已经取代了grunt.这里把我的一些实践贴记录下来和大家分 ...
- LinearLayout 垂直滚动条
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android=" ...
- phpunit测试成功 phpunit测试实践代码
16:12 2015/12/8phpunit测试成功,代码写在www目录下,以类名命名代码文件,我的文件名为 ArrayTest.php,类名为ArrayTest,内部写了简单的测试代码:<?p ...
- 【HDU】4405 Aeroplane chess
http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:每次可以走1~6格,初始化在第0格,走到>=n的格子就结束.还有m个传送门,表示可以从X[i] ...
- Linux 下安装mysql 链接库
1.mysql 客户端 开发 链接库 1.1)CentOS yum install mysql-devel
- Linux_linux中profile、bashrc、bash_profile之间的区别和联系(转)
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/p ...
- attrs 中的 uid
Odoo View视图默认是不认识attrs中的uid的,其原因在于后台将xml转化为html的过程中对attrs调用了python的eval方法,而对于eval函数来说,我们传入的形如[(' ...
- 拿到添加对象的id号方法
以前Hibernate添加对象,想拿到id号的时候都是根据id排序拿到第一条 ,才知道 这样也可以 /** * @Description: 添加一个角色信息 * @ret ...
- 关于html页面布局
之前做的一个网站,结果今天这几天测试发现在19寸屏幕和手机屏幕上页面布局全乱了,今天刚刚改好,发现还是自己经验不足,做个小总结. 一.div布局要固定宽高 当div不设计长宽高而是自动由内部控件”撑“ ...