SLAM Scan-Matching/Registration
转载自:https://blog.csdn.net/MyArrow/article/details/80605118
1. 概念
- SLAM:它根据两帧扫描数据,基于环境的外形和扫描匹配来计算刚体变换。
- 仅仅基于里程计传感器(Odometry Sensors provided by wheel encoders)或IMU传感器创建的地图是不准确的,因为里程计传感器存在累计误差,所以LDS(Laser Distance Sensor)使用Scan-Matching/Registration算法使新扫描的激光数据与已有地图或激光扫描数据重新对齐,从而获得更加准确的机器人位姿(Pose)和地图(Map)。
- Scan-Matching性能评估指标
- 计算量
- 结果的直观性
- Scan-Matching问题描述
1.1 SLAM定位方法
- SLAM定位方法流派:概率方法(probabilistic methods)、
- 概率方法
- Extended Kalman Filter (EKF)
- Particle filter
- Monte-Carlo (stochastic)
- Olson (brute-force)
- Hough (analysis-oriented)
- Maximum Likelihood
- 匹配法 (Scan Matching):通过匹配两帧点云数据(即把两帧点云数据对齐)来计算机器人的刚体变换
- ICP及各种变体
- Scan-to-Scan
- Scan-to-Map
- Feature-based
- RANSAC for outlier rejection
- Correlative matching
- Iterative Dual Correspondence
2. 迭代最近点 Iterative closest Point (ICP)
- 基本原理:试图迭代地找到两次扫描之间的变换(平移TT+旋转RR),以使两次扫描(scan frame)的最近邻居之间的距离最小化。
- 算法组成:对应点搜索和位姿求解。它的目的是寻求点集之间的匹配关系,求解的结果是两点集之间的平移及旋转量。
- 实现方法:没有特征提取的条件下,把两次scan frame进行对齐
- 缺点:速度慢速度慢 (因为需要使用所有的点云(point cloud)数据来找到最优变换)
- 输入:
- 参考激光扫描数据
- 新的激光扫描数据
- 输出:
- 匹配的精确度(the accuracy of the matching)
- 扫描匹配的协方差矩阵(covariance of the scan matching):常用于做闭环检测(loop closing)
- a
2.1 实现步骤
- 1) moving
通过变换矩阵(初始变换矩阵通过Odom或IMU计算得到、其它时候为上一次的迭代结果),使两个Scan frame位于同一个坐标系 - 2) matching
为每一个new scan frame 中的点在reference scan frame中找到一个距离最近的点(逐点搜索或kd-tree optimized search) - 3) weighting
根据一定的标准(匹配的距离大小、指定点的不确定性)为每个激光点赋予不同的权重,因为它不能提高收敛速度,一般很少使用 - 4) rejection
由于移动和遮挡,两个scan frame不可能完全相同,假设有80%是相同的激光点。其它20%为异常点(如距离过大被认为是误匹配、多个新激光点匹配到同一个旧的激光点,则只保留距离最小的激光点),则把它们拒绝掉 - 5)minimization
- 它返回使两次扫描误差最小的变换矩阵
- 最小化常使用点到线段的距离(point-to-segment distance), 因为每次观察同一个位置,激光点不一定是同一个点,但这些点总是在同一条直线上
- 最小化点到点的距离(point-to-point)将导致坏的收敛或收敛速度慢
- 误差最小化可通过CholeskydecompositionCholeskydecomposition实现
- Loop以上5步,直到满足以下任一条件为止:
- 收敛(converges)
- 结果振荡
- 达到最大迭代次数
2.2 Metric-based ICP (MbICP)
- 目标:通过improve matching算法来提高性能
- 基本原理:发现一个变换使用距离dd最小
- 算法:与ICP相比,只有计算距离的公式有变化(考虑了旋转因素)
- LL是一个与长度等同的设计参数,通过取L=3L=3较佳
2.3 协议差矩阵(Covariance Matrix)
- 用途:用于描述ICP匹配输出的变换的准确度(accuracy)
- 2D空间
- 每一个Pose有三个参数(x,y,θ)(x,y,θ)
- 协方差矩阵为3×33×3
- 3D空间
- 每一个Pose有三个参数(x,y,z,α,β,γ)(x,y,z,α,β,γ)
- 协方差矩阵为6×66×6
- 计算方法
- Bruteforce Method
- Closed Form Covariance of a Minimization Algorithm
- a
- a
- a
--------------------- 本文来自 Arrow 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/MyArrow/article/details/80605118?utm_source=copy
SLAM Scan-Matching/Registration相关推荐
- Real-Time Correlative Scan Matching 翻译和总结
Olson E B . Real-time correlative scan matching[C]// Robotics and Automation, 2009. ICRA '09. IEEE I ...
- 【论文阅读记录】Real-Time Correlative Scan Matching
这篇文章是谷歌的Cartograph中实现real_time_correlative_scan_matcher的论文 Real-Time Correlative Scan Matching Edwin ...
- 扫描自己进入VR中 SLAM Scan 3D引擎将做到
扫描自己进入VR中 SLAM Scan 3D引擎将做到 2016-03-22 10:58:09我要纠错 把17173装进手机神评论0 只需要点击拍照就可以将你的脸上传到虚拟现实世界中 瑞士软件初创公司 ...
- The Normal Distributions Transform: A New Approach to Laser Scan Matching
这篇论文一共是十一个部分,第一部分和第二部分对应简介和前人的工作,第三四五主要是介绍了算法的实现细节,分别是正态分布的建立过程.点云的匹配和位姿的优化,之后第六和第七两部分介绍了算法的实际应用,在轨迹 ...
- ICRA2021 SLAM方向论文汇总
ICRA 2021会议也已经开完了, 所以对原来总结SLAM方向相关的文章进行了重新整理和补全,由于总结比较广泛,大约有200多篇,本文对论文进行了分类,并给出了下载地址和开源代码地址,希望对一起做S ...
- SLAM: SLAM的发展历程(WIKI)
参考维基百科: https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping 你们叫他SLAM,我还是习惯叫他三维重建.... ...
- ICRA2022 SLAM相关论文整理
目录 视觉SLAM相关 线.面.3Dfeature 多相机系统 VIO+GPS 其他 数据集 三维重建 语义SLAM Special sensor Lidar相关 视觉SLAM相关 线.面.3Dfea ...
- ICRA 2021| SLAM方向论文汇总
作者丨wanghy@知乎 来源丨https://zhuanlan.zhihu.com/p/371744210 编辑丨3D视觉工坊 最近扫读了下ICRA 2021 SLAM方向相关的文章,由于总结比较广 ...
- SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中. 由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件.控制等各方面并 ...
最新文章
- 在html文档中应如何书写注释文字,html 注释_HTML基础笔记
- python数据类型详解
- 中文数据集有奖公开征集
- python udp客户端 服务器实现方式_python3实现UDP协议的简单服务器和客户端
- c++中BOOL和bool的区别
- Flask框架项目实例:**租房网站(二)
- 阿里程序员受邀去华为面试,却因这点没被录取。
- 使用Huploadify上传文件并动态传递参数到后台
- python06-常用模块
- U3d中实现A*寻路,附源文件
- [Swift]LeetCode1043. 分隔数组以得到最大和 | Partition Array for Maximum Sum
- geek软件是干什么的_极客是什么?
- return view前端怎么获取_Web 前端路由原理解析和功能实现
- npm介绍及与Node.js关联
- 对话|俞栋:在人工智能的很多应用场景,语音识别是一个入口
- IOS清理缓存的几种方法
- Intel Atom移动处理器惨败,还被用户和经销商起诉
- TP5.1实现数组内容的分页和数据渲染
- XFS (dm-0) I/O error问题修复
- bae java mysql_在百度bae云平台中使用JAVA连接MySQL数据库
热门文章
- 计算机科学与技术讲座psd,计算机科学的技术基本.ppt
- php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析
- 攻防世界 适合做桌面_FIFA足球世界球员特性解析:精神篇
- getbytes方法_关于C#中识别和查找中英文字符串的解决方法和字符串处理方式的笔记...
- Promise基础用法
- JQuery EasyUi之界面设计——前言与界面效果(一)
- VS.net2008正式版发布了
- 数据库备份与还原处理
- 某40岁程序员找工作,因技术老旧被拒绝,竟泪洒当场!
- 为什么 P8 程序员的代码你写不出来?零拷贝了解一下