转载自: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相关推荐

  1. Real-Time Correlative Scan Matching 翻译和总结

    Olson E B . Real-time correlative scan matching[C]// Robotics and Automation, 2009. ICRA '09. IEEE I ...

  2. 【论文阅读记录】Real-Time Correlative Scan Matching

    这篇文章是谷歌的Cartograph中实现real_time_correlative_scan_matcher的论文 Real-Time Correlative Scan Matching Edwin ...

  3. 扫描自己进入VR中 SLAM Scan 3D引擎将做到

    扫描自己进入VR中 SLAM Scan 3D引擎将做到 2016-03-22 10:58:09我要纠错 把17173装进手机神评论0 只需要点击拍照就可以将你的脸上传到虚拟现实世界中 瑞士软件初创公司 ...

  4. The Normal Distributions Transform: A New Approach to Laser Scan Matching

    这篇论文一共是十一个部分,第一部分和第二部分对应简介和前人的工作,第三四五主要是介绍了算法的实现细节,分别是正态分布的建立过程.点云的匹配和位姿的优化,之后第六和第七两部分介绍了算法的实际应用,在轨迹 ...

  5. ICRA2021 SLAM方向论文汇总

    ICRA 2021会议也已经开完了, 所以对原来总结SLAM方向相关的文章进行了重新整理和补全,由于总结比较广泛,大约有200多篇,本文对论文进行了分类,并给出了下载地址和开源代码地址,希望对一起做S ...

  6. SLAM: SLAM的发展历程(WIKI)

    参考维基百科: https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping 你们叫他SLAM,我还是习惯叫他三维重建.... ...

  7. ICRA2022 SLAM相关论文整理

    目录 视觉SLAM相关 线.面.3Dfeature 多相机系统 VIO+GPS 其他 数据集 三维重建 语义SLAM Special sensor Lidar相关 视觉SLAM相关 线.面.3Dfea ...

  8. ICRA 2021| SLAM方向论文汇总

    作者丨wanghy@知乎 来源丨https://zhuanlan.zhihu.com/p/371744210 编辑丨3D视觉工坊 最近扫读了下ICRA 2021 SLAM方向相关的文章,由于总结比较广 ...

  9. SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别

    本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中. 由于参与分享汇报的同事有许多是做其他方向的机器人工程师(包括硬件.控制等各方面并 ...

最新文章

  1. 在html文档中应如何书写注释文字,html 注释_HTML基础笔记
  2. python数据类型详解
  3. 中文数据集有奖公开征集
  4. python udp客户端 服务器实现方式_python3实现UDP协议的简单服务器和客户端
  5. c++中BOOL和bool的区别
  6. Flask框架项目实例:**租房网站(二)
  7. 阿里程序员受邀去华为面试,却因这点没被录取。
  8. 使用Huploadify上传文件并动态传递参数到后台
  9. python06-常用模块
  10. U3d中实现A*寻路,附源文件
  11. [Swift]LeetCode1043. 分隔数组以得到最大和 | Partition Array for Maximum Sum
  12. geek软件是干什么的_极客是什么?
  13. return view前端怎么获取_Web 前端路由原理解析和功能实现
  14. npm介绍及与Node.js关联
  15. 对话|俞栋:在人工智能的很多应用场景,语音识别是一个入口
  16. IOS清理缓存的几种方法
  17. Intel Atom移动处理器惨败,还被用户和经销商起诉
  18. TP5.1实现数组内容的分页和数据渲染
  19. XFS (dm-0) I/O error问题修复
  20. bae java mysql_在百度bae云平台中使用JAVA连接MySQL数据库

热门文章

  1. 计算机科学与技术讲座psd,计算机科学的技术基本.ppt
  2. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析
  3. 攻防世界 适合做桌面_FIFA足球世界球员特性解析:精神篇
  4. getbytes方法_关于C#中识别和查找中英文字符串的解决方法和字符串处理方式的笔记...
  5. Promise基础用法
  6. JQuery EasyUi之界面设计——前言与界面效果(一)
  7. VS.net2008正式版发布了
  8. 数据库备份与还原处理
  9. 某40岁程序员找工作,因技术老旧被拒绝,竟泪洒当场!
  10. 为什么 P8 程序员的代码你写不出来?零拷贝了解一下