一个点云是三维空间中的一组点。点云通常是通过激光雷达或Kinect等3d扫描仪获得的®设备。它们在机器人导航和感知、深度估计、立体视觉、视觉配准和高级驾驶员辅助系统(ADAS)中都有应用。
点云注册是将同一场景的两个或多个三维点云对齐到一个共同的坐标系统的过程。绘制地图是在机器人或传感器周围绘制环境地图的过程。注册和映射可用于重建三维场景或建立一个地图的巷道本地化。虽然注册之后通常是映射,但也有其他使用注册的应用程序,如可变形运动跟踪,它可能不需要映射。计算机视觉工具箱™算法提供执行点云注册和映射的功能。工作流由预处理、配准、漂移校正和点云对齐组成。
按照以下步骤对一系列点云执行点云配准和映射。
预处理点云——为配准准备点云,向下采样并去除不需要的特征和噪声。
注册点云——根据它之前的点云注册每个点云。这些注册被用于测程法,这是一个在连续帧中累积注册估计的过程。单独使用测程法可能导致测量值和地面真实值之间的漂移。
检测回路-为了最小化漂移,你必须识别传感器返回到先前访问的位置,在传感器的轨迹中形成一个回路。这被称为环路闭合检测。
正确的漂移-使用检测到的回路来最小化漂移通过构成图优化,包括逐步构建一个姿势图通过增加节点和边,然后一旦发现足够的循环优化构成图。位姿图优化的结果是一组优化后的绝对位姿。
组装地图-组装地图通过对准注册点云使用他们的优化绝对姿态。
使用这些对象来管理与点云注册和映射工作流相关的数据:
pointCloud
对象-点云对象存储一组位于3-D空间中的点。它使用高效的索引策略来完成最近邻搜索,点云预处理和注册功能利用了这一点。
rigid3d
对象 - 刚性3- d对象存储3-d刚性几何变换。在这个工作流程,它代表的相对和绝对的姿势。
pcviewset
对象——点云视图设置对象管理与测程和映射过程相关的数据。它组织数据作为一组视图和视图之间两两连接。它还构建和更新一个姿态图。
每一个视图由点云和相关的绝对姿态变换组成。每个视图在视图集中都有一个唯一的标识符,并形成姿态图的一个节点。
每一个连接商店一个视图链接到另一个视图的信息。这包括连接视图之间的相对转换和计算测量所涉及的不确定度。每个连接在姿态图中形成一条边。
预处理包括去除点云中不需要的特征和噪声,以及对点云进行分割或向下采样。预处理可以包括以下功能:
pcsegdist
要么segmentLidarData
-将点云数据分割成簇,然后使用选择
函数来选择所需的点。
pcfitplane
要么segmentGroundFromLidarData
- 段地平面,然后用选择
函数来选择所需的点。
pcdenoise
-从点云中去除不需要的噪音。
你可以使用pcregistericp
,pcregistercpd
,pcregisterndt
,或pcregistercorr
功能来注册移动点云到固定点云。这些函数中使用的配准算法分别被相干点漂移(CPD)算法中,正常分布变换(NDT)算法,和一个相位相关算法,基于所述迭代最近点(ICP)算法。有关这些算法的详细信息,请参阅参考。
当记录点云时,选择表示场景中物体之间变化的转换类型。
转型 | 描述 |
---|---|
刚性 | 刚性变换保留场景中的物体的形状和大小。场景中的对象可以进行平移,旋转,或两者兼而有之。相同的变换适用于所有的点。 |
仿射 | 除了平动和旋转之外,仿射变换允许物体剪切和改变尺度。 |
非刚性的 | 非刚性转换允许在场景中改变物体的形状。点进行不同的转换。位移字段表示的转变。 |
下表比较了点云登记功能的选项,他们的转换类型,以及它们的性能特点。使用此表来帮助您选择适合您的使用情况下,相应的注册功能。
注册方法(函数) | 转换类型 | 描述 | 性能特征 |
---|---|---|---|
pcregisterndt |
刚性 |
|
快速登记的方法,但通常比ICP慢 |
pcregistericp |
刚性 | 依赖于一个初始估计变换本地注册方法 |
最快的配准方法 |
pcregistercpd |
刚性,仿射和非刚性 | 不依赖于初始转换估计的全局方法 |
慢的注册方法 |
pcregistercorr |
刚性 | 依赖于占用网格的注册方法,根据Z-每个网格单元内点的坐标值。 | 最适合地面车辆导航 增加占用网格的尺寸增加了函数的计算需求。 |
将当前(移动的)点云与之前的(固定的)点云进行对比,返回arigid3d
表示运动点云在不动点云帧内估计的相对位姿的变换。将该相对位姿变换与之前积累的所有相对位姿变换组合,给出了绝对位姿变换的估计。
添加由移动点云及其绝对姿态变换形成的视图。属性中添加视图pcviewset
对象使用addView
函数。
添加测距边缘,由连续视图之间的连接定义的边缘,由固定点云和移动点云之间的相对位姿转换形成pcviewset
对象使用addConnection
函数。
使用测距唯一通向引起的漂移误差的累积。可能导致长距离严重不准确这些错误。使用基于图形的同步定位和地图创建(SLAM)校正所述漂移。要做到这一点,通过寻找使用描述符匹配之前的点云访问的位置检测环封闭。关闭循环纠正漂移。按照这些步骤进行循环检测和关闭:
使用scanContextDescriptor
函数从视图集中的两个点云中提取扫描上下文描述符,用于捕获视图的特殊性。
使用scanContextDistance
函数来计算所述两个扫描上下文描述符之间的描述符的距离。如果两个描述符之间的距离低于指定阈值,那么这是一个潜在的环路闭合。
配准点云,以确定视图之间的相对位姿转换和对齐点云之间的欧氏距离的均方根误差(RMSE)。使用RMSE过滤无效的循环闭包。相对位姿转换表示两个视图之间的连接。由非连续视图之间的连接形成的边称为边循环闭合边缘。属性中添加连接pcviewset
对象使用addConnection
函数。
的pcviewset
对象在添加视图和连接时在内部更新姿态图。为了最大限度地减小漂移,可以使用optimizePoses
函数,一次充分循环闭包。的optimizePoses
函数返回一个pcviewset
对象与优化的绝对姿态转换为每个视图。
你可以使用createPoseGraph
函数返回的姿态图作为MATLAB®有向图
对象。您可以使用图形算法在MATLAB检查,查看或修改构成图。使用optimizePoseGraph
(导航工具箱)函数从导航工具箱™中优化修改后的姿态图,然后使用updateView
函数更新视图集中的姿态。
使用pcalign
函数来建立一个点云图使用点云从视图集合和他们的优化绝对姿态变换。
本地注册方法,如使用NDT或ICP (pcregisterndt
要么pcregistericp
,分别地),需要初始估计。以获得初始估计,使用另一种传感器,如惯性测量单元(IMU)或其他形式的测距的。改善初步估计可以帮助准算法收敛速度更快。
属性的较高值“MaxIterations”
参数或为较低的值'公差'
属性更精确的配准结果,但速度较慢登记速度。
米罗年科,安德里和宋旭波。点设置配准:相干点漂移。IEEE模式分析与机器智能汇刊32,没有。12(2010年12月):2262-75。
Yang,和Gerard Medioni。多距离图像配准的目标建模。图像和视觉计算10,不。3(1992年4月):145-55。
[3] Besl, P.J,和Neil D. McKay。“三维形状的配准方法。”IEEE模式分析与机器智能汇刊14,没有。2(1992年2月):239-56。
[4]比伯,P,和w,斯特拉瑟。正态分布变换:一种新的激光扫描匹配方法。“在IEEE/RSJ智能机器人与系统国际会议(IROS 2003)论文集(Cat)。No.03CH37453),3:2743-48。拉斯维加斯,内华达州,美国:IEEE,2003。
[5] Magnusson,马丁。三维正态分布变换:配准、表面分析和环检测的有效表示。“Örebro大学出版社,2009年。
Dimitrievski, Martin, David Van Hamme, Peter Veelaert和Wilfried Philips。自动驾驶车辆里程计的占用地图稳健匹配:在计算机视觉,成像和计算机图形学理论与应用研究的联合第11届学术会议论文集, 626 - 33所示。罗马,意大利:SCITEPRESS——科学和技术出版物,2016年。