在MATLAB中实现点云大满贯
一个点云是一组点的三维空间。点云通常从三维扫描仪获取,如激光雷达或Kinect®设备。他们已经应用在机器人导航和知觉、深度估计,立体视觉,视觉注册,和高级驾驶员辅助系统(ADAS)。
点云注册的过程是将两个或两个以上的同一场景的三维点云到一个共同的坐标系统。映射是一个过程,构建一个映射一个机器人周围的环境或传感器。您可以使用注册和映射重构三维场景或建立一个地图定位的巷道。而注册通常先于映射,还有其他的注册申请,可能不需要映射,如变形运动跟踪。计算机视觉算法工具箱™提供函数来执行点云注册和映射。工作流由预处理、登记、漂移校正,对齐的点云。
同步定位和映射(大满贯)的过程是指计算车辆的位置和姿态,对周围环境,同时环境的映射。这个过程只使用点云从传感器输入。申请点云大满贯包括机器人和自动驾驶。对于一般的描述为什么摔上,以及它如何适用于不同的应用程序,看看大满贯是什么?
映射和本地化工作流程
按照以下步骤执行点云注册和映射序列的点云。然后你可以本地化的车辆预先构建的地图。
预处理点云,准备注册的点云,downsample并删除不需要的特性和噪声。
注册点云——注册每个点云与过去的这一个。这些注册使用测程法,这是积累的过程,一个注册在连续帧估计。单独使用测程法可以导致漂移测量和地面之间的真理。
检测循环,执行关闭循环检测,以减少漂移。环路闭合检测的过程就是识别传感器的返回到之前访问过的位置,形成一个循环的轨道传感器。
正确的漂移—使用检测到循环减少漂移构成图优化,包括逐步构建一个姿势图通过增加节点和边,然后优化构成图一旦你已经找到足够的循环。构成图优化的结果是一组优化的绝对的姿势。
组装图——组装调整点云映射的注册点云优化使用他们绝对的姿势。您可以使用这样一个预先构建的点云地图本地化,这是在地图上定位车辆的过程。
本地化——找到车辆基于组装的姿势地图。
管理数据的映射和本地化
使用这些对象来管理相关的数据点云注册和映射工作流程:
pointCloud
对象——点的点云对象存储一组位于三维空间。它使用高效的索引策略来完成最近邻搜索,这是利用点云预处理和注册功能。rigidtform3d
对象——刚性三维对象存储三维刚性几何变换。在这种工作流,它代表了相对和绝对的姿势。pcviewset
对象——点云视图对象管理与测程法和相关的数据映射过程。它组织数据作为一组视图和视图之间两两连接。它也构成图构建和更新。每一个视图由一个点云和相关的绝对姿态变换。每个视图都有一个唯一的标识符在视图的设置和形成一个节点构成图。
每一个连接商店一个视图链接到另一个视图的信息。这包括连接视图之间的相对变换和所涉及的不确定性计算测量。每个连接形式构成图像的边缘。
scanContextLoopDetector
对象——环路闭合检测对象存储扫描上下文描述符对应的视图ID, ID关联检测到循环关闭一个视图pcviewset
。pcmapndt
对象-无损检测地图对象存储压缩,节约内存映射表示本地化。对象将点云映射到一组像素点(三维框),每个立体像素表示为一个三维正态分布。
预处理点云
预处理包括去除不必要的特性和噪声点云,和分段或将采样。预处理可以包括这些功能:
pcdownsample
——Downsample点云。pcsegdist
或segmentLidarData
点云数据分割成集群,然后使用选择
函数来选择所需的点。pcfitplane
,segmentGroundFromLidarData
,或segmentGroundSMRF
(激光雷达工具箱)——部分地平面,然后使用选择
函数来选择所需的点。pcdenoise
从点云,删除不需要的噪声。
注册点云
您可以使用pcregisterndt
,pcregistericp
,pcregistercorr
,pcregisterloam
(激光雷达工具箱),或pcregistercpd
函数来注册一个移动的点云一个固定的点云。这些函数使用的注册算法都是基于正态分布变换(无损检测)算法,迭代最近点(ICP)算法,相位相关算法,激光雷达测程法和映射(壤土)算法,和相干点漂移(CPD)算法,分别。这些算法的更多信息,请参阅引用。
注册点云时,选择转换的类型代表场景中的对象如何改变之间的固定和移动的点云。
转换 | 描述 |
---|---|
刚性 | 刚性变换保留了场景中物体的形状和大小。场景中的对象可以进行翻译,旋转,或两者兼而有之。适用于所有点相同的转换。 |
仿射 | 仿射变换允许对象剪切和改变除了进行平移和旋转。 |
非刚性的 | 非刚性变换允许场景中物体的形状改变。点接受不同的转换。位移场代表转换。 |
这个表比较点云注册功能选项,它们的转换类型,他们的性能特征。用这个表来帮助你选择合适的注册功能用例。
注册方法(函数) | 转换类型 | 描述 | 性能特征 |
---|---|---|---|
pcregisterndt |
刚性 |
|
提供一个初步估计,使算法收敛更快。 |
pcregistericp |
刚性 |
|
|
pcregistercorr |
刚性 |
|
减少占用网格的大小减少函数的计算需求。 |
pcregisterloam (激光雷达工具箱) |
刚性 |
|
提供增加控制之间的处理速度和登记的准确性 使用 |
pcregisterfgr (激光雷达工具箱) |
刚性 |
|
|
pcregistercpd |
刚性、仿射和非刚性的 |
|
慢的注册方法。不建议用于地图构建。 |
注册当前(移动)点云对前面的点云返回(固定)rigidtform3d
转换表示估计的相对姿态运动点云的框架固定的点云。组成这个相对姿态变换与所有之前积累了相对姿态变换给出一个估计的绝对姿态变换。
添加视图移动点云及其形成的绝对姿态转换到视图设置。您可以添加视图pcviewset
对象使用addView
函数。
添加测程法的优势优势定义为连续的观点之间的联系,形成了相对姿态变换之间的固定和移动的点云pcviewset
对象使用addConnection
函数。
提示注册
当地注册方法,比如使用无损检测或ICP (
pcregisterndt
或pcregistericp
分别),初步估计需要更好的性能。获得一个初始估计,使用另一个传感器,如惯性测量单元(IMU)或其他形式的测程法。增加登记结果的准确性,增加的值
“MaxIterations”
参数或减少的值“宽容”
论点。改变这些值以这种方式因此放缓登记速度。考虑将采样点云使用
pcdownsample
在使用前,pcregisterndt
,pcregistericp
,或pcregistercpd
的效率和准确性,提高登记。去噪使用
pcdenoise
之前注册登记可以提高精度,但它可以减缓地图构建工作流的执行时间。
检测循环
单独使用测程法导致漂移由于积累的错误。这些错误可能导致严重的长距离不准确。使用基于同步定位和映射(大满贯)纠正漂移。为此,检测循环闭包中找到一个位置访问以前的点云使用描述符匹配。使用循环闭包正确累积漂移。遵循以下步骤来检测循环闭包:
使用
scanContextDescriptor
函数上下文描述符提取扫描,获取点云的特殊性。添加扫描上下文描述符
scanContextLoopDetector
使用addDescriptor
。使用
detectLoop
函数来找到潜在循环闭包。注册点云来确定之间的相对姿态转换视图和均方根误差(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循环函数闭包检测和定位。这种方法是健壮的动态障碍和大规模环境的建议。这种方法的一个示例,请参阅使用线段匹配构建地图和定位(激光雷达工具箱)的例子。表强调之间的异同pcmapndt
和pcmapsegmatch
(激光雷达工具箱)图表示。工作流 pcmapndt
pcmapsegmatch
算法 正态分布变换(无损检测) SegMatch——段匹配的方法 映射 首先构建地图,逐步构建地图使用 pcviewset
。然后,用pcalign
组装图和预先构建的映射转换为一个无损检测地图表示。构建地图逐步使用 pcmapsegmatch
(激光雷达工具箱)——添加视图pcviewset
(使用addView
)和pcmapsegmatch
(激光雷达工具箱)(使用addView
(激光雷达工具箱)为每个点云扫描)。检测循环闭包使用findPose
(激光雷达工具箱)积累了漂移的和正确的optimizePoses
。定位相似 选择本地化的子映射,然后找到定位的姿势使用一套以下选项:
的
selectSubmap
和findPose
的功能pcmapndt
对象。的
selectSubmap
(激光雷达工具箱)和findPose
(激光雷达工具箱)的功能pcmapsegmatch
(激光雷达工具箱)对象。
本地化的区别 依赖于一个姿势估计。 不依赖于一个姿势估计。 可视化 可视化地图或选择映射中使用 显示
的函数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。
另请参阅
功能
pcregistercorr
|pcregisterndt
|pcregistericp
|pcregistercpd
|pcalign
|scanContextDistance
|scanContextDescriptor
|findPose
|显示
|segmentGroundSMRF
(激光雷达工具箱)
对象
相关的话题
- 大满贯是什么?
- 有组织的和无组织的点云是什么?(激光雷达工具箱)
- 建立一个地图使用大满贯从激光雷达数据
- 在MATLAB中实现视觉大满贯
- 设计激光雷达SLAM算法使用虚幻引擎模拟环境(自动驾驶工具箱)
- 三维点云登记和缝合
- 从激光雷达数据建立一个映射
- 使用线段匹配构建地图和定位(激光雷达工具箱)