主要内容

在MATLAB中实现点云大满贯

一个点云是一组点的三维空间。点云通常从三维扫描仪获取,如激光雷达或Kinect®设备。他们已经应用在机器人导航和知觉、深度估计,立体视觉,视觉注册,和高级驾驶员辅助系统(ADAS)。

点云注册的过程是将两个或两个以上的同一场景的三维点云到一个共同的坐标系统。映射是一个过程,构建一个映射一个机器人周围的环境或传感器。您可以使用注册和映射重构三维场景或建立一个地图定位的巷道。而注册通常先于映射,还有其他的注册申请,可能不需要映射,如变形运动跟踪。计算机视觉算法工具箱™提供函数来执行点云注册和映射。工作流由预处理、登记、漂移校正,对齐的点云。

同步定位和映射(大满贯)的过程是指计算车辆的位置和姿态,对周围环境,同时环境的映射。这个过程只使用点云从传感器输入。申请点云大满贯包括机器人和自动驾驶。对于一般的描述为什么摔上,以及它如何适用于不同的应用程序,看看大满贯是什么?

映射和本地化工作流程

按照以下步骤执行点云注册和映射序列的点云。然后你可以本地化的车辆预先构建的地图。

  1. 预处理点云,准备注册的点云,downsample并删除不需要的特性和噪声。

  2. 注册点云——注册每个点云与过去的这一个。这些注册使用测程法,这是积累的过程,一个注册在连续帧估计。单独使用测程法可以导致漂移测量和地面之间的真理。

  3. 检测循环,执行关闭循环检测,以减少漂移。环路闭合检测的过程就是识别传感器的返回到之前访问过的位置,形成一个循环的轨道传感器。

  4. 正确的漂移—使用检测到循环减少漂移构成图优化,包括逐步构建一个姿势图通过增加节点和边,然后优化构成图一旦你已经找到足够的循环。构成图优化的结果是一组优化的绝对的姿势。

  5. 组装图——组装调整点云映射的注册点云优化使用他们绝对的姿势。您可以使用这样一个预先构建的点云地图本地化,这是在地图上定位车辆的过程。

  6. 本地化——找到车辆基于组装的姿势地图。

管理数据的映射和本地化

使用这些对象来管理相关的数据点云注册和映射工作流程:

  • pointCloud对象——点的点云对象存储一组位于三维空间。它使用高效的索引策略来完成最近邻搜索,这是利用点云预处理和注册功能。

  • rigidtform3d对象——刚性三维对象存储三维刚性几何变换。在这种工作流,它代表了相对和绝对的姿势。

  • pcviewset对象——点云视图对象管理与测程法和相关的数据映射过程。它组织数据作为一组视图和视图之间两两连接。它也构成图构建和更新。

    • 每一个视图由一个点云和相关的绝对姿态变换。每个视图都有一个唯一的标识符在视图的设置和形成一个节点构成图。

    • 每一个连接商店一个视图链接到另一个视图的信息。这包括连接视图之间的相对变换和所涉及的不确定性计算测量。每个连接形式构成图像的边缘。

  • scanContextLoopDetector对象——环路闭合检测对象存储扫描上下文描述符对应的视图ID, ID关联检测到循环关闭一个视图pcviewset

  • pcmapndt对象-无损检测地图对象存储压缩,节约内存映射表示本地化。对象将点云映射到一组像素点(三维框),每个立体像素表示为一个三维正态分布。

预处理点云

预处理包括去除不必要的特性和噪声点云,和分段或将采样。预处理可以包括这些功能:

  1. pcdownsample——Downsample点云。

  2. pcsegdistsegmentLidarData点云数据分割成集群,然后使用选择函数来选择所需的点。

  3. pcfitplane,segmentGroundFromLidarData,或segmentGroundSMRF(激光雷达工具箱)——部分地平面,然后使用选择函数来选择所需的点。

  4. pcdenoise从点云,删除不需要的噪声。

注册点云

您可以使用pcregisterndt,pcregistericp,pcregistercorr,pcregisterloam(激光雷达工具箱),或pcregistercpd函数来注册一个移动的点云一个固定的点云。这些函数使用的注册算法都是基于正态分布变换(无损检测)算法,迭代最近点(ICP)算法,相位相关算法,激光雷达测程法和映射(壤土)算法,和相干点漂移(CPD)算法,分别。这些算法的更多信息,请参阅引用

注册点云时,选择转换的类型代表场景中的对象如何改变之间的固定和移动的点云。

转换 描述
刚性 刚性变换保留了场景中物体的形状和大小。场景中的对象可以进行翻译,旋转,或两者兼而有之。适用于所有点相同的转换。
仿射 仿射变换允许对象剪切和改变除了进行平移和旋转。
非刚性的 非刚性变换允许场景中物体的形状改变。点接受不同的转换。位移场代表转换。

这个表比较点云注册功能选项,它们的转换类型,他们的性能特征。用这个表来帮助你选择合适的注册功能用例。

注册方法(函数) 转换类型 描述 性能特征
pcregisterndt 刚性
  • 当地注册方法,依赖于初始变换估计

  • 健壮的,离群值

  • 更好的与不同的分辨率和点云密度万博 尤文图斯

提供一个初步估计,使算法收敛更快。
pcregistericp 刚性
  • 当地注册方法,依赖于初始变换估计

pcregistercorr 刚性
  • 注册方法依赖于一个占用网格,网格基于概率分配值Z坐标点的值在每个网格单元

  • 最适合地面车辆导航

减少占用网格的大小减少函数的计算需求。
pcregisterloam(激光雷达工具箱) 刚性
  • 基于功能的注册

  • 万博1manbetx支持组织与旋转的激光雷达点云采集传感器

提供增加控制之间的处理速度和登记的准确性

使用detectLOAMFeatures(激光雷达工具箱)函数在使用前检测特征点pcregisterloam(激光雷达工具箱)

pcregisterfgr(激光雷达工具箱) 刚性
  • FPFH基于功能的全球注册方法

  • 不依赖于初始变换估计

  • 快注册

  • 提供准确的结果与噪声和部分重叠的表面。

pcregistercpd 刚性、仿射和非刚性的
  • 全球的方法,不依赖于初始变换估计

慢的注册方法。不建议用于地图构建。

注册当前(移动)点云对前面的点云返回(固定)rigidtform3d转换表示估计的相对姿态运动点云的框架固定的点云。组成这个相对姿态变换与所有之前积累了相对姿态变换给出一个估计的绝对姿态变换。

添加视图移动点云及其形成的绝对姿态转换到视图设置。您可以添加视图pcviewset对象使用addView函数。

添加测程法的优势优势定义为连续的观点之间的联系,形成了相对姿态变换之间的固定和移动的点云pcviewset对象使用addConnection函数。

提示注册

  • 当地注册方法,比如使用无损检测或ICP (pcregisterndtpcregistericp分别),初步估计需要更好的性能。获得一个初始估计,使用另一个传感器,如惯性测量单元(IMU)或其他形式的测程法。

  • 增加登记结果的准确性,增加的值“MaxIterations”参数或减少的值“宽容”论点。改变这些值以这种方式因此放缓登记速度。

  • 考虑将采样点云使用pcdownsample在使用前,pcregisterndt,pcregistericp,或pcregistercpd的效率和准确性,提高登记。

  • 去噪使用pcdenoise之前注册登记可以提高精度,但它可以减缓地图构建工作流的执行时间。

检测循环

单独使用测程法导致漂移由于积累的错误。这些错误可能导致严重的长距离不准确。使用基于同步定位和映射(大满贯)纠正漂移。为此,检测循环闭包中找到一个位置访问以前的点云使用描述符匹配。使用循环闭包正确累积漂移。遵循以下步骤来检测循环闭包:

  1. 使用scanContextDescriptor函数上下文描述符提取扫描,获取点云的特殊性。

  2. 添加扫描上下文描述符scanContextLoopDetector使用addDescriptor

  3. 使用detectLoop函数来找到潜在循环闭包。

  4. 注册点云来确定之间的相对姿态转换视图和均方根误差(RMSE)之间的欧几里得距离对齐的点云。使用RMSE过滤无效循环闭包。相对姿态变换代表了两种不同的观点之间的联系。优势形成的称为nonsuccessive视图之间的连接循环闭合边缘。您可以添加连接pcviewset对象使用addConnection函数。

另一种方法来关闭循环检测基于线段匹配,请参考findPose(激光雷达工具箱)函数。

正确的漂移

pcviewset对象内部更新的姿势图视图和连接。尽量减少漂移,执行构成图优化利用optimizePoses功能,一旦足够的循环检测到闭包。的optimizePoses函数返回一个pcviewset对象与优化的绝对姿态转换为每个视图。

您可以使用createPoseGraph作为一个MATLAB函数返回构成图®有向图对象。您可以使用图形算法在MATLAB检查,查看或修改构成图。使用optimizePoseGraph(导航工具箱)函数优化修改构成图,然后使用updateView函数来更新视图中的姿势。

组装图

使用pcalign函数来建立一个点云地图使用云的角度设置及其优化绝对姿势的转换。这个点云地图现在可以用于在线使用无损检测定位算法定位。

本地化的车辆在地图

将预先构建的点云映射到无损检测使用的地图格式pcmapndt对象。的pcmapndt对象地图存储在一个压缩体素表示,可以保存到磁盘,用于在线定位。使用findPose功能定位的地图。

备选工作流

替代工作流地图构建和定位在计算机视觉工具箱,导航工具箱™和激光雷达的工具箱™。

  • 使用计算机视觉视觉大满贯工具箱功能——计算摄像机的位置和姿态的环境,同时环境的映射。更多细节,请参阅在MATLAB中实现视觉大满贯

  • 建立一个占用地图使用导航工具特性,构建一个占用地图从点云。有关详细信息,请参见执行大满贯使用3 d激光雷达点云(导航工具箱)

  • 段匹配使用激光雷达工具箱特性-建立一个地图表示的部分和功能使用pcmapsegmatch(激光雷达工具箱)对象。使用findPose(激光雷达工具箱)for循环函数闭包检测和定位。这种方法是健壮的动态障碍和大规模环境的建议。这种方法的一个示例,请参阅使用线段匹配构建地图和定位(激光雷达工具箱)的例子。表强调之间的异同pcmapndtpcmapsegmatch(激光雷达工具箱)图表示。

    工作流 pcmapndt pcmapsegmatch
    算法 正态分布变换(无损检测) SegMatch——段匹配的方法
    映射 首先构建地图,逐步构建地图使用pcviewset。然后,用pcalign组装图和预先构建的映射转换为一个无损检测地图表示。 构建地图逐步使用pcmapsegmatch(激光雷达工具箱)——添加视图pcviewset(使用addView)和pcmapsegmatch(激光雷达工具箱)(使用addView(激光雷达工具箱)为每个点云扫描)。检测循环闭包使用findPose(激光雷达工具箱)积累了漂移的和正确的optimizePoses
    定位相似

    选择本地化的子映射,然后找到定位的姿势使用一套以下选项:

    本地化的区别 依赖于一个姿势估计。 不依赖于一个姿势估计。
    可视化 可视化地图或选择映射中使用显示的函数pcmapndt对象或显示(激光雷达工具箱)的函数pcmapsegmatch(激光雷达工具箱)对象。

引用

[1]Myronenko、安德烈和Xubo歌。“点集登记:相干点漂移”。IEEE模式分析与机器智能32岁的没有。12(2010年12月):2262 - 75。https://doi.org/10.1109/TPAMI.2010.46

[2]陈、杨和杰拉德Medioni。“对象模型通过注册多个图像。”图像和视觉计算10,不。3(1992年4月):145 - 55。https://doi.org/10.1016/0262 - 8856 (92) 90066 - c

[3]Besl P.J.,和Neil D. McKay. “A Method for Registration of 3-D Shapes.”IEEE模式分析与机器智能14日,没有。2(1992年2月):239 - 56。https://doi.org/10.1109/34.121791

[4]Biber, P。,和W. Strasser. “The Normal Distributions Transform: A New Approach to Laser Scan Matching.” In诉讼2003 IEEE / RSJ智能机器人和系统国际会议(2003年——)(猫。No.03CH37453),3:2743-48。美国内华达州拉斯维加斯:IEEE 2003。https://doi.org/10.1109/IROS.2003.1249285

[5]Magnusson,马丁。“三维正态分布变换:一种有效表示注册、表面分析,和循环检测。“博士论文,Örebro古都,2009。

[6]Dimitrievski,马丁,David Van Hamme彼得Veelaert,飞利浦右舵。“鲁棒匹配量距的入住率地图自主车辆。“在学报11日联席会议在计算机视觉,成像和计算机图形学理论和应用程序,626 - 33所示。意大利罗马:SCITEPRESS -科学和技术出版物,2016。https://doi.org/10.5220/0005719006260633

[7],霁,桑吉夫•辛格。“壤土:激光雷达实时测程法和映射。“在机器人:科学和系统X。机器人:科学和系统的基础上,2014年。https://doi.org/10.15607/RSS.2014.X.007。

另请参阅

功能

对象

相关的话题