一个点云是三维空间中点的集合。点云通常是通过激光雷达或Kinect等3d扫描仪获得的®设备。它们在机器人导航和感知、深度估计、立体视觉、视觉配准和高级驾驶员辅助系统(ADAS)等领域都有应用。
点云注册是将同一场景的两个或多个三维点云对齐到一个共同坐标系的过程。映射是构建机器人或传感器周围环境地图的过程。您可以使用注册和映射重建三维场景或构建道路地图进行定位。虽然注册通常先于映射,但也有其他注册应用程序可能不需要映射,例如可变形运动跟踪。计算机视觉工具箱™ 算法提供执行点云注册和映射的功能。工作流包括点云的预处理、注册、漂移校正和对齐。
按照以下步骤在点云序列上执行点云注册和映射。然后你可以在预建地图中定位车辆。
预处理点云-准备点云配准,对它们进行取样并去除不需要的特征和噪声。
注册点云-注册每个点云到它之前的一个。这些注册被用于测程法,即在连续帧上累积配准估计的过程。仅使用里程计可能导致测量和地面真实姿势之间的漂移。
检测回路-执行回路闭合检测以最小化漂移。环路闭合检测是识别传感器返回到以前访问过的位置的过程,该位置在传感器的轨迹中形成一个环路。
正确的漂移-使用检测到的回路来减少漂移构成图优化,包括通过添加节点和边以增量方式构建姿势图,然后在找到足够的循环后优化姿势图。姿势图优化会产生一组优化的绝对姿势。
组装地图-组装一个点云地图,通过使用其优化的绝对姿态对准注册的点云。您可以使用这样的预构建点云地图本地化,这是在地图中定位车辆的过程。
定位-根据组装的地图找到车辆的姿态。
使用这些对象来管理与点云注册和映射工作流相关的数据:
点云
点云对象存储了一组位于三维空间中的点。它使用高效的索引策略来完成最近邻搜索,这是由点云预处理和注册函数利用的。
rigid3d
对象-刚体三维对象存储三维刚体几何变换。在此工作流中,它表示相对和绝对姿势。
pcviewset
点云视图集对象管理与里程计和映射过程相关的数据。它将数据组织为一组视图和视图之间的成对连接。它还构建和更新一个姿势图。
每一个视图由点云和相关的绝对位姿变换组成。每个视图在视图集中都有一个唯一的标识符,并形成姿势图的一个节点。
每一个连接存储将一个视图链接到另一个视图的信息。这包括连接视图之间的相对转换以及计算测量值时涉及的不确定性。每个连接在姿势图中形成一条边。
pcmapndt
object——NDT map对象存储一个压缩的、内存效率高的map表示,用于本地化。该对象将点云地图转换为一组体素(3-D盒),每个体素由3-D正态分布表示。
预处理包括从点云中移除不需要的特征和噪声,并对其进行分段或下采样。预处理可以包括以下功能:
pcdownsample
-下采样点云。
pcsegdist
或segmentLidarData
-将点云数据分割为簇,然后使用选择
函数选择所需的点。
pcfitplane
或segmentGroundFromLidarData
-分割接地面,然后使用选择
函数选择所需的点。
去噪
-移除点云不需要的噪音。
你可以使用pcregisterndt
,pcregistericp
,注册中心
,或PCPD
函数将移动点云注册到固定点云。这些函数使用的配准算法分别基于正态分布变换(NDT)算法、迭代最近点(ICP)算法、相位相关算法和相干点漂移(CPD)算法。有关这些算法的更多信息,请参见参考文献.
当注册点云时,选择表示场景中物体在固定点云和移动点云之间如何变化的转换类型。
转型 | 描述 |
---|---|
刚性 | 刚性变换保留了场景中物体的形状和大小。场景中的物体可以进行平移、旋转或两者兼有。同样的变换适用于所有的点。 |
仿射 | 仿射变换除了进行平移和旋转外,还允许对象剪切和改变规模。 |
非刚性的 | 非刚性变换允许场景中物体的形状改变。点经过不同的变换。位移场表示变换。 |
该表比较点云配准功能选项、它们的转换类型和它们的性能特征。使用此表可帮助您为用例选择适当的注册功能。
注册方法(函数) | 变换类型 | 描述 | 性能特征 |
---|---|---|---|
pcregisterndt |
刚性 |
|
提供一个初始估计以使算法更快地收敛。 |
pcregistericp |
刚性 | 依赖于初始变换估计的局部配准方法。 |
|
注册中心 |
刚性 |
|
减小占用网格的大小,以减少功能的计算需求。 |
PCPD |
刚性、仿射和非刚性 | 不依赖初始变换估计的全局方法 |
慢的注册方法。不推荐用于地图制作。 |
将当前(移动)点云与以前(固定)点云注册将返回arigid3d
表示移动点云在不动点云框架内估计的相对姿态的变换。将这个相对姿态变换与所有先前积累的相对姿态变换组合起来,就可以估计绝对姿态变换。
将移动点云和它的绝对姿态变换形成的视图添加到视图集。可以将视图添加到pcviewset
对象使用addView
函数。
添加测程法的优势,由连续视图之间的连接定义的边,由固定点云和移动点云到目标的相对姿势变换形成pcviewset
对象使用addConnection
函数。
本地注册方法,如使用NDT或ICP的方法(pcregisterndt
或pcregistericp
,需要对更好的性能进行初步估计。要获得一个初始估计,使用另一个传感器,如惯性测量单元(IMU)或其他形式的里程计。
为提高配准结果的准确性,请增加“MaxIterations”
参数,或减小“宽容”
论点。以这种方式更改这些值会降低注册速度。
考虑使用下采样点云pcdownsample
在使用前,pcregisterndt
,pcregistericp
,或PCPD
,以提高注册的效率和准确性。
去噪使用去噪
预注册可以提高注册精度,但会减慢地图构建工作流的执行时间。
单独使用里程计会由于误差的累积而导致漂移。这些误差会导致长距离的严重误差。采用基于图的同步定位与测绘(SLAM)对漂移进行校正。为此,可以使用描述符匹配来查找之前点云中访问过的位置,从而检测循环闭包。闭合回路以纠正漂移。按照以下步骤进行循环检测和闭合:
使用扫描上下文描述符
函数从视图集中的两个点云中提取扫描上下文描述符,用于捕获视图的特殊性。
使用scanContextDistance
函数计算两个扫描上下文描述符之间的描述符距离。如果两个描述符之间的距离低于指定的阈值,则可能是循环闭合。
对点云进行配准,确定视图之间的相对位姿变换和对齐点云之间的欧氏距离的均方根误差(RMSE)。使用RMSE来过滤无效的循环闭包。相对姿态转换表示两个视图之间的连接。由非连续视图之间的连接而形成的边称为边循环闭合边缘.您可以将连接添加到pcviewset
对象使用addConnection
函数。
关于基于分段匹配的循环闭合检测的另一种方法,请参阅findPose
(激光雷达工具箱)函数。
的pcviewset
对象在添加视图和连接时在内部更新姿势图。为了最小化漂移,使用optimizePoses
函数,一旦检测到足够的循环闭包。的optimizePoses
函数返回一个pcviewset
对象,为每个视图优化了绝对姿势转换。
你可以使用createPoseGraph
函数返回的姿态图作为MATLAB®有向图
对象。您可以使用MATLAB中的图形算法来检查、查看或修改姿态图。使用optimizePoseGraph
(导航工具箱)函数来优化修改后的姿势图,然后使用更新视图
函数来更新视图集中的姿态。
使用pcalign
函数使用来自视图集的点云及其优化的绝对姿态转换来构建点云地图。这个点云地图现在可以使用NDT定位算法进行在线定位。
控件将预构建的点云地图转换为NDT地图格式pcmapndt
对象。的pcmapndt
对象以压缩体素表示形式存储地图,可以保存到磁盘并用于在线本地化。使用findPose
用于在地图中定位的函数。
计算机视觉工具箱、导航工具箱和激光雷达工具箱中有可供选择的地图构建和定位工作流程。
Visual SLAM使用计算机视觉工具箱功能-计算相机相对于周围环境的位置和方向,同时映射环境。有关更多详细信息,请参阅视觉大满贯概述.
使用导航工具箱功能构建占用地图-从点云构建占用地图。有关详细信息,请参见使用三维激光雷达点云执行SLAM(导航工具箱).
使用Lidar工具箱功能的段匹配-使用pcmapsegmatch
(激光雷达工具箱)对象。使用findPose
(激光雷达工具箱)用于闭环检测和定位的功能。有关此方法的示例,请参见使用段匹配生成地图并定位(激光雷达工具箱)的例子。这个表格突出了两者之间的异同pcmapndt
和pcmapsegmatch
(激光雷达工具箱)图表示。
工作流 | pcmapndt |
pcmapsegmatch |
---|---|---|
算法 | 正态分布变换 | SegMatch—段匹配方法 |
映射 | 首先构建地图——使用pcviewset .然后,使用pcalign 组装地图并将预构建的地图转换为NDT地图表示。 |
使用增量式构建地图pcmapsegmatch (激光雷达工具箱)-添加视图pcviewset (使用addView )和pcmapsegmatch (激光雷达工具箱)(使用addView (激光雷达工具箱))对于每个点云扫描。使用findPose (激光雷达工具箱)并对累积漂移进行校正optimizePoses . |
局部化相似性 | 选择一个子映射进行本地化,然后使用以下一组选项找到本地化的姿态:
|
|
局部化差异 | 依赖于姿势估计。 | 不依赖于姿态估计。 |
可视化 | 控件可视化映射或选定的子映射显示 的函数pcmapndt 对象还是对象显示 (激光雷达工具箱)的函数pcmapsegmatch (激光雷达工具箱)对象。 |
[1] 点集配准:相干点漂移模式分析与机器智能学报32,第12号(2010年12月):2262-75。https://doi.org/10.1109/TPAMI.2010.46
[2]陈,杨,Gérard Medioni。"多距离图像配准的物体建模"图像及视觉计算10,不。3(1992年4月):145-55。https://doi.org/10.1016/0262 - 8856 (92) 90066 - c.
[3] Besl, pj,和Neil D. McKay。一种三维形状的配准方法模式分析与机器智能学报14,第2号(1992年2月):239-56。https://doi.org/10.1109/34.121791.
[4] 正态分布变换:激光扫描匹配的新方法〉,载于IEEE/RSJ智能机器人与系统国际会议(IROS 2003) (Cat。No.03CH37453), 3:2743-48。拉斯维加斯,内华达州,美国:IEEE, 2003。https://doi.org/10.1109/IROS.2003.1249285.
[5] 三维正态分布变换:配准、表面分析和环路检测的有效表示〉,博士论文,Oĕrebro universitet,2009。http://urn.kb.se/resolve?urn=urn:nbn:se:oru:diva-8458瓮:nbn:se:oru:diva-8458
[6] Dimitrievski,Martin,David Van Hamme,Peter Veelaert和Wilfried Philips.“自动车辆里程计占用地图的稳健匹配”,年第11届计算机视觉、成像和计算机图形学理论与应用联席会议论文集, 626 - 33所示。罗马,意大利:sciestpress -科学技术出版物,2016。https://doi.org/10.5220/0005719006260633.