用于面向扫描匹配的视觉SLAM的系统和方法与流程

文档序号:19947804发布日期:2020-02-18 09:44阅读:361来源:国知局
用于面向扫描匹配的视觉SLAM的系统和方法与流程

本公开大体上涉及图像处理领域,更具体地,涉及用于基于特征的二维(2d)扫描匹配即时定位与制图(slam)的系统和方法。



背景技术:

本文提供的背景描述是为了总体上呈现本公开的上下文。目前指定的发明人在本背景技术部分中描述的范围内的工作、以及在提交时可能不具有现有技术资格的描述的各方面既不明确也不隐含地被认为是针对本公开的现有技术。

在机器人研究中,即时定位与制图(slam)广泛应用于使用视觉数据的地面机器人和无人驾驶车辆。然而,视觉slam很容易在例如白墙之类的非特征环境中迷失。

因此,本领域中存在未解决的需求来解决上述缺陷和不足。



技术实现要素:

在某些方面,本公开涉及一种用于使用红绿蓝(rgb)图像和深度图像来构建和更新2d网格单元地图或像素地图的方法,以便基于2d网格单元地图有效且准确地实现slam。在某些实施例中,该方法包括:通过计算设备的传感器提供rgb图像和三维(3d)空间的深度图像,该传感器具有外在参数;确定rgb图像中的像素的分数,其中该分数表示rgb图像中的像素位于地平面中的可能性;确定深度图像中的像素的法线方向;基于分数和法线方向确定地平面;将深度图像中的像素投影到地平面以形成投影像素;当2d网格单元地图不可用时,通过将地平面定义为网格单元并将颜色描述符归于每个网格单元来生成2d网格单元地图,其中每个网格单元的颜色描述符是基于该网格单元内的投影像素来计算的;并且当2d网格单元地图可用时,通过将新的颜色描述符归于每个网格单元并基于新的颜色描述符更新该网格单元来更新2d网格单元地图。

在某些实施例中,传感器是rgb深度(rgbd)传感器,并且计算设备是机器人设备。

在某些实施例中,rgb图像中的像素的分数是使用深度学习来确定的。

在某些实施例中,深度图像中的像素的法线方向是使用最近邻法线方向来确定的。

在某些实施例中,确定地平面的步骤包括:基于外在参数定义候选地平面,以及基于深度图像中的像素的法线方向来细化候选地平面以获得地平面。

在某些实施例中,确定地平面的步骤包括:基于外在参数定义候选地平面,并基于深度图像中的像素的法线方向和rgb图像中的像素的分数来细化候选地平面以获得地平面。

在某些实施例中,深度图像中的每个像素沿着穿过像素并垂直于地平面的直线投影到地平面。

在某些实施例中,该方法还包括以下步骤:通过以下操作匹配网格单元和2d网格单元地图:将每个网格单元的距离、翻滚角和颜色描述符与2d地图中的网格单元进行比较。

在某些实施例中,该方法还包括:基于当前图像和2d地图的网格单元之间的匹配来检测环闭合。

在某些实施例中,地平面包括3d空间中的真实地平面和平行于真实地平面并且位于距真实地平面预定距离内的平面。在某些实施例中,预定距离小于100厘米(cm),优选地小于10cm,更优选地小于1cm,并且更优选地小于10毫米(mm)。

在某些实施例中,颜色描述符是颜色直方图、颜色梯度或二进制描述符的形式。

在某些实施例中,该方法还包括:使用多个rgb图像和对应的深度图像来初始化2d地图。

在某些方面,本公开涉及一种方法。在某些实施例中,该方法包括:通过传感器提供rgb图像和3d空间的深度图像;确定深度图像中的像素的法线方向;基于传感器的外在参数确定候选地平面;使用法线方向细化候选地平面;将深度图像中的像素投影到地平面;并且通过将地平面定义为网格单元并将颜色描述符归于每个网格单元来生成2d网格单元地图。每个网格单元的颜色描述符是基于该网格单元内的投影像素来计算的。

在某些实施例中,该方法还包括:当2d网格单元地图可用时,通过将新的颜色描述符归于每个网格单元并基于新的颜色描述符更新2d网格单元地图中的对应网格单元来更新2d网格单元地图。每个网格单元的新的颜色描述符是基于该网格单元内的投影像素来计算的。

在某些实施例中,该方法还包括:在确定候选地平面之后并且在细化候选地平面之前,使用rgb图像中的像素的分数来细化候选地平面,其中该分数表示rgb图像中的像素位于地平面中的可能性。

在某些方面,本公开包括一种用于构建和更新2d网格单元或像素地图的系统。在某些实施例中,该系统包括计算设备(或机器人设备)。该计算设备包括传感器、处理器和存储计算机可执行代码的存储设备,该计算机可执行代码,当在处理器处执行时,被配置成执行上述方法。

在某些方面,本公开涉及一种存储计算机可执行代码的非暂时性计算机可读介质。在某些实施例中,计算机可执行代码,当在计算设备的处理器处执行时,被配置成执行上述方法。

通过结合以下附图及其标题对优选实施例的以下描述,将显而易见本公开的这些和其他方面,但是在不脱离本公开的新颖构思的精神和范围的情况下,可以在其中进行变化和修改。

附图说明

从详细描述和附图中将更全面地理解本公开。这些附图示出了本公开的一个或多个实施例,并且与书面描述一起用于解释本公开的原理。只要有可能,在整个附图中使用相同的附图标记来表示实施例的相同或相似的元件,并且其中:

图1示意性地描绘了根据本公开的某些实施例的用于面向扫描匹配的视觉slam的系统。

图2示意性地描绘了根据本公开的某些实施例的深度图像中的像素的法线方向。

图3示意性地描绘了根据本公开的某些实施例的网格单元地图。

图4示意性地描绘了根据本公开的某些实施例的面向扫描匹配的视觉slam的方法。

图5示意性地描绘了根据本公开的某些实施例的面向扫描匹配的视觉slam的流程图。

具体实施方式

在以下示例中更具体地描述了本公开,这些示例仅用于说明,因为其中的许多修改和变化对于本领域技术人员来说是显而易见的。现在详细描述本公开的各种实施例。参考附图,相似的数字(如果有的话)在全部视图中表示相似的组件。如本文的描述和随后的权利要求中所使用的,“一”、“一个”和“该”的含义包括复数指代,除非上下文另有明确说明。此外,如本文的描述和随后的权利要求中所使用的,“在.....中”的含义包括“在......中”和“在......上”,除非上下文另有明确说明。此外,为了方便读者,可以在说明书中使用标题或副标题,这不会影响本公开的范围。另外,在下面更具体地定义本说明书中使用的一些术语。

本说明书中使用的术语通常在本公开的上下文中以及在使用每个术语的特定上下文中具有其在本领域中的普通含义。在下文或说明书中的其他地方讨论用于描述本公开的某些术语,以向从业者提供关于本公开的描述的附加指导。为方便起见,可以突出显示某些术语,例如使用斜体和/或引号。突出显示的使用对术语的范围和含义没有影响;无论是否突出显示,术语的范围和含义在相同的上下文中是相同的。应当理解,可以以不止一种方式叙述同样的事情。因此,替代语言和同义词可以用于本文所讨论的任何一个或多个术语,并且对于术语是否在本文中详细阐述或讨论也没有任何特殊意义。提供了某些术语的同义词。一个或多个同义词的叙述不排除使用其他同义词。本说明书中任何地方的示例(包括本文中讨论的任何术语的示例)的使用仅是说明性的,并且决不限制本公开或任何示例性术语的范围和含义。同样地,本公开不限于本说明书中给出的各种实施例。

除非另外定义,否则本文使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。在发生冲突的情况下,本文档(包括定义)将主导。

如本文所使用的,“大约”、“约”或“近似”通常表示给定值或范围的20%,优选地10%,更优选地5%。本文给出的数值是近似的,意味着如果没有明确说明,则可以推断出术语“大约”、“约”或“近似”。

如本文所使用的,“多个”意指两个或更多个。

如本文所使用的,术语“包含”、“包括”、“携带”、“具有”、“含有”、“涉及”等应理解为开放式的,即意味着包括但不限于。

如本文所使用的,短语a、b和c中的至少一个应该被解释为使用非排他逻辑or表示逻辑(a或b或c)。应当理解,方法内的一个或多个步骤可以以不同的顺序(或同时)执行,而不改变本公开的原理。

如本文所使用的,术语“模块”或“单元”可以指代以下各项、作为以下各项的一部分或包括以下各项:专用集成电路(asic);电子电路;组合逻辑电路;现场可编程门阵列(fpga);执行代码的处理器(共享、专用或组);提供所述功能的其他合适的硬件组件;或者上述各项中的些或全部的组合(例如在片上系统中)。术语模块或单元可以包括存储由处理器执行的代码的存储器(共享、专用或组)。

如本文所使用的,术语“代码”可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类和/或对象。如上所使用的,术语“共享”意味着可以使用单个(共享)处理器来执行来自多个模块的一些或所有代码。另外,来自多个模块的一些或所有代码可以由单个(共享)存储器存储。如上所使用的,术语“组”意味着可以使用一组处理器来执行来自单个模块的一些或所有代码。另外,可以使用一组存储器来存储来自单个模块的一些或所有代码。

如本文所使用的,术语“接口”通常是指在组件之间的交互点处用于在组件之间执行数据通信的通信工具或装置。通常,接口可以适用于硬件和软件两者的级别,并且可以是单向或双向接口。物理硬件接口的示例可以包括电连接器、总线、端口、电缆、终端和其他i/o设备或组件。与接口通信的组件可以是例如计算机系统的多个组件或外围设备。

本公开可以由计算机系统实现。如附图中所示,计算机组件可以包括物理硬件组件和虚拟软件组件。除非另有说明,否则本领域普通技术人员将理解,这些计算机组件可以用以下形式来实现但不限于以下形式:软件、固件或硬件组件或其组合。

本文描述的装置、系统和方法可以由一个或多个处理器执行的一个或多个计算机程序实现。计算机程序包括存储在非暂时性有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括存储的数据。非暂时性有形计算机可读介质的非限制性示例是非易失性存储器、磁存储设备和光存储设备。

在某些实施例中,2dslam应用于地面机器人和无人驾驶车辆。这些2dslam方法不仅可以通过良好的初始化减少机器人姿势的计算负荷,而且还可以构建人性化的地图。然而,2dslam方法不保持特征检测或特征描述,并且具有在非特征环境中迷失、陷入局部最大值、不适合于即时姿势恢复、难以环闭合以及难以恢复姿势的缺点。相关技术包括密集扫描2dslam、迭代最近点(icp)、gmapping、cartographer,其全部内容以引用方式并入本文中。

在某些方面,为了克服2d扫描匹配slam方法中的即时姿势恢复的限制,提供了面向扫描匹配的视觉slam。面向扫描匹配的视觉slam提供了一种用于将2d扫描与颜色直方图/特征相结合以便使用rbgd相机制图的可靠方式。此外,机器人能够通过即时测量和给定地图恢复其姿势。这种新颖的slam方法可以帮助机器人更好地环闭合触发,并且更容易操作进行初始化。根据本公开的某些实施例的新颖特征尤其包括:(1)从rgb图像、深度图像和外部校准获得地平面信息;(2)通过将深度图像投影到地平面,根据深度图像生成深度扫描测量;(3)将颜色抽象特征与扫描点相结合;(4)通过颜色特征匹配计算扫描匹配并定义匹配误差,以提高匹配准确性,使得匹配方法不再依赖于良好的初始化姿势。与其他2dslam相比,根据本公开的某些实施例的优点包括但不限于:(1)更稳健和准确的定位;以及(2)能够计算数据关联并执行环闭合以进行制图。与视觉slam相比,根据本公开的某些实施例的优点包括但不限于:(1)特征检测更稳定;(2)数据关联误报率更低;以及(3)特征匹配的计算负荷更小。

在某些实施例中,本公开包括(1)地平面检测和点云投影、(2)颜色描述计算、(3)扫描匹配、(4)制图、以及(5)定位和颜色特征验证。

(1)首先,进行地平面检测和点云投影。在某些实施例中,通过检测主地平面方向,然后利用传感器外在参数进行验证来生成地平面检测。在某些实施例中,基于深度学习的方法应用于地平面检测。基于外在参数和地平面提取,从彩色图像和深度图像中减去地平面。在地平面上构建2d网格化单元地图以计算占用空间。在某些实施例中,深度图像被投影到3d空间中,并且针对投影在地平面上的相同的被占用单元中的所有点将rbg图像的像素关联在一起。具体来说,首先将2d深度图像投影到3d空间并形成3d点云,然后投影到地平面。2d地平面也称为2d网格化单元。该步骤生成扫描检测以用于以后的扫描匹配。

(2)然后,计算颜色描述符。彩色图像和深度图像在像素与像素之间相关联。根据投影的深度像素及其附近的彩色图像,针对每个被占用单元生成颜色描述符。在某些实施例中,描述符包括颜色直方图、颜色梯度和二进制描述符中的任何一个或任何组合,并且表示为扫描中被占用单元的特征的标签。一般而言,距离地面更远的点为单元提供了更好的描述,其受地面上的任意物品的影响较小。

(3)之后,可以执行扫描匹配。在某些实施例中,扫描匹配使用一般方法来比较扫描相似性,例如icp或/和粒子滤波器。颜色描述用作用于比较扫描匹配的附加验证。特征匹配误差有助于扫描匹配协方差。通过这种类型的设计,2dslam漂移得以减少,特别是在具有可变装饰和非常低成本传感器的重复几何环境中。

(4)之后,通过将扫描匹配融合在一起并将颜色描述符存储到地图中来构建地图。在某些实施例中,使用一包字词结构将特征分组在一起,以便易于对它们进行搜索。保存该地图以供以后定位使用。

(5)最后,可以实时进行定位和颜色特征验证。在构建地图之后,机器人可以从任何已知位置初始化。机器人使用rgbd传感器扫描当前位置,计算颜色描述和深度图并将其映射到2d占用地图。通过从一包字词中搜索特征度量,然后制作icp,机器人可以快速获得可靠的初始姿势,以便以后进行导航。

通过将颜色信息添加到2d扫描匹配方法中,本公开的某些实施例提高了导航、姿势恢复和定位的可靠性。

总之,这项创新是一种面向扫描匹配的可视slam方法。创新包括但不限于:地平面探测;扫描投影;投影扫描中的颜色描述符生成和制图;扫描匹配;以及制图和定位。

现在将在下文中参考附图更全面地描述本公开,在附图中示出了本公开的实施例。然而,本公开可以以许多不同的形式实施,并且不应该被解释为限于本文阐述的实施例;相反,提供这些实施例是为了使本公开全面和完整,并且将本公开的范围完全传达给本领域技术人员。

在本公开的某些方面,提供了一种用于基于特征的扫描匹配slam的系统。在某些实施例中,如图1中所示,基于特征的扫描匹配slam系统100不依赖于slam环境中的基准标记,并且包括计算设备110。计算设备110可以是具有rgbd传感器的地面机器人设备、增强现实/虚拟现实(ar/vr)设备、3d重建设备或无人驾驶飞行器(uav)等。在如下所述的某些实施例中,计算设备110和机器人设备110可以互换使用。计算设备110包括处理器112、存储器114、存储计算机可执行代码的存储设备116、rgbd传感器150和可选的imu/车轮编码器170。rgbd传感器150被配置成捕获rgb图像、深度图像或组合的rgb深度图像。imu/车轮编码器170可以包括一个或多个imu,或一个或多个车轮编码器,或imu和车轮编码器两者。imu是惯性传感器,诸如加速度计、陀螺仪和磁力计,其被配置成执行计算设备110的惯性测量;车轮编码器被配置成测量计算设备110行进的距离。在某些实施例中,计算设备110可以不包括imu/车轮编码器170。在某些实施例中,计算设备110可以包括其他必要组件。其他示例性组件可以包括用于与其他设备通信(例如,与中央计算机的无线连接)的交互式接口。

如图1中所示,计算机可执行代码包括扫描匹配slam应用118、配置文件144、以及一个或多个姿势接收模块146,以及可选的其他应用,诸如操作系统。处理器112控制计算设备110的操作。在某些实施例中,处理器112可以是中央处理单元(cpu)。存储器114可以是易失性存储器,诸如随机存取存储器(ram),用于在计算设备110的操作期间存储数据和信息。在某些实施例中,存储器114可以是易失性存储器阵列。在某些实施例中,计算设备110可以在多于一个处理器112和/或多于一个存储器114上运行。存储设备116是用于存储计算设备110的扫描匹配slam应用118的非易失性数据存储介质或设备。存储设备116的示例可以包括闪存、存储卡、usb驱动器或其他类型的非易失性存储设备,诸如硬盘驱动器、软盘、光盘驱动器或任何其他类型的数据存储设备。在某些实施例中,计算设备110可以具有多于一个存储设备116。在某些实施例中,计算设备110还可以包括远程存储设备。扫描匹配slam应用118包括代码或指令,代码或指令当在处理器112处执行时,可以执行某些特征以控制计算设备110的操作。在某些实施例中,扫描匹配slam应用118被配置成基于深度扫描和彩色图像特征执行计算设备110的即时定位与制图(slam)。配置文件144包括rgbd传感器150的校准的外在参数和可选的固有参数。存储在配置文件144中的外在参数可以具有(x、y、z、翻滚、偏航、俯仰)的格式,其定义rgbd传感器150在计算设备110上的相对安装位置。姿势接收模块146被配置成在从扫描匹配slam应用118接收到计算设备110的当前姿势时,基于其当前的姿势实时控制计算设备110的操作。

在某些实施例中,如图1中所示,扫描匹配slam应用118尤其包括图像处理器120、图像地面检测器122、最近邻法线方向检测器124、地平面融合模块126、深度图像投影模块128、颜色描述符生成器130、扫描和描述符组合模块132、扫描和描述符匹配模块134、环闭合模块136、姿势更新模块138、姿势传播模块140和映射模块142。

图像处理器120被配置成从rgbd传感器150接收rgbd图像。在某些实施例中,图像处理器120还可以指示rgbd传感器150在接收rgbd图像之前捕获rgbd图像。接收的rgbd图像可以是分离的rgb图像和深度图像,或者是组合的rgb图像和深度图像。在某些实施例中,组合的rgbd图像包括四个通道:用于存储红色分量的r通道、用于存储绿色分量的g通道、用于存储蓝色分量的b通道、以及用于存储距离的深度通道。在接收到具有四个通道的rgbd图像之后,图像处理器120被配置成分割通道以形成rgb图像(三个通道)和深度图像(一个通道),然后将rgb图像发送到图像地面检测器122,并将深度图像发送到最近邻法线方向检测器124。在某些实施例中,图像处理器120被配置成逐帧发送rgb图像和深度图像。在其他实施例中,例如为了初始化2d地图,图像处理器120还可以发送一批帧。

图像地面检测器122被配置成使用从图像处理器120接收的当前rgb图像来检测地面。在某些实施例中,图像地面检测器122被配置成使用深度学习或深度神经网络(dnn)根据rgb图像检测地面,并且深度学习为rgb图像中的每个像素生成分数。每个分数表示该像素被包括在地平面中的可能性。在某些实施例中,图像地面检测器122可以不使用深度学习来进行地面检测,而是可以基于每个像素的坐标和描述符来确定分数。例如,图像地面检测器122可以计算每个像素的描述符,将像素的描述符与相邻像素的描述符进行比较,并且当它们的描述符相似时确定像素位于同一平面中。然后,图像地面检测器122针对大平面内的像素给出很大的分数,并且针对位于rgb图像的下部的像素给出很大的分数。在某些实施例中,深度学习方法是优选的。在使用深度学习或非深度学习为每个像素分配分数之后,图像地面检测器122被配置成将分数发送到地平面融合模块126。

最近邻法线方向检测器124被配置成在从图像处理器120接收到深度图像时,确定当前深度图像中的每个像素的法线方向,并将每个像素的法线方向和深度发送到地平面融合模块126。在某些实施例中,最近邻法线方向方法用于确定像素的法线方向。具体地,最近邻法线方向检测器124被配置成选择深度图像中的像素,并选择所选像素周围或紧邻所选像素的八个像素(当可用时)以便一起处理。对九个像素的法线方向进行平均以获得所选像素的法线方向。平均可以是简单的数学平均或加权平均。在某些实施例中,当平均是加权平均时,给予所选像素比其八个相邻像素更多的权重。最近邻法线方向检测器124还被配置成将像素的法线方向和像素的深度(从传感器或相机到该像素的3d位置的距离)发送到地平面融合模块126。在某些实施例中,在一个线程中执行图像地面检测器122,在另一个线程中执行最近邻法线方向检测器124,并且两个线程在由地平面融合模块126执行的地平面融合步骤处接合。

图2示意性地示出了深度像素图像中的目标像素的法线方向的确定。如图2中所示,地平面显示为abc(通过点a、b和c的平面),平面a’b’c’平行于地平面并且在地平面上方,并且到地平面的法线方向是n0。深度图像中的目标像素“5”被八个最近邻像素“1-4”和“6-9”包围。最近邻法线方向检测器124计算由像素1-9确定的平面a’b’d’,并且目标像素“5”的法线方向n1被定义为通过像素“5”并垂直于平面a’b’d’。在某些实施例中,九个像素具有相同的权重以确定平面a’b’d’。在其他实施例中,最近邻法线方向检测器124给予像素“5”更多权重并使平面a’b’d’刚好通过像素“5”。

地平面融合模块126被配置成在从图像地面检测器122接收到rgb图像像素的分数、从最近邻法线方向检测器124接收到深度图像像素的法线方向并且从配置文件144接收到rgbd传感器150的外在参数时,融合信息以确定地平面。在某些实施例中,获得深度图像中的像素的法线方向,并且对于同一平面上的像素,它们的法线方向彼此相同或彼此接近。因此,地平面融合模块126可以根据从最近邻法线方向检测器124接收的法线方向确定一个或多个平面,每个平面具有彼此靠近且具有相同或相似法线方向的大量像素。在某些实施例中,可以将平面中与其他平面相比包含最大数量的像素并且位于深度图像的下部的一个平面确定为候选地平面。此外,存储在配置文件144中的外在参数定义rgbd传感器150在计算设备110上的相对位置。外在参数可以具有(x、y、z、翻滚、偏航、俯仰)的格式,其指示rgbd传感器150相对于机器人设备110的相对位置。因此,地平面融合模块126可以基于从配置文件144获得的外在参数来确定计算设备110的底表面。在操作期间,计算设备110的底表面通常靠近地平面。基于地平面与机器人设备110的底表面之间的接近度,地平面融合模块126将基于法线方向的一个或多个平面与基于外在参数的计算设备110的底表面进行比较。当基于深度图像的一个或多个平面中的一个靠近计算设备110的底表面时,地平面融合模块126确定该平面是真实地平面或者接近真实地平面,并且被命名为深度图像中的地平面。同时,地平面融合模块126处理来自具有所有像素的分数的rgb图像的像素。该分数表示像素属于地平面的可能性。地平面融合模块126被配置成检查像素的分数,并将高分和基本连续的像素分组以形成一个或多个平面。一个或多个平面可以包括地板、墙壁、门等。基于根据深度图像确定的地平面,地平面融合模块126从rgb图像中的一个或多个平面中选择一个平面作为rgb图像中的地平面。因此,rgb图像中的地平面对应于深度图像中的地平面。此外,因为rgb图像中的像素对应于深度图像中的像素,所以地平面融合模块126也可以使用该对应关系来辅助地平面融合。具体地,基于高分辨率rgb像素对基于深度图像确定的地平面中的像素进行进一步滤波,以便从使用深度图像确定的地平面去除噪声。确定的地平面是场景的地板或地面,或地面上方的一小段距离,例如,地面上方10mm。在某些实施例中,地平面融合模块126使用地平面模型表示地平面,其中x,y,z是计算设备110的初始3d空间的坐标,并且a,b,c和d是系数。地平面融合模块126然后将确定的地平面和深度图像发送到深度图像投影模块128。在某些实施例中,地平面确定的过程如下:首先,基于相机外在参数,该过程获得哪个3d点可能属于地面(点的高度类似于0)。其次,该过程将地面上具有相似法线的点分组在一起,并将法线与地面的法线进行比较(地面的法线也来自相机外部)。第三,该过程提取地面点并使地平面与地面平面模型适应并将其设置为地面。在某些实施例中,基于rgbd传感器150的外在参数粗略估计地平面。在某些实施例中,基于rgbd传感器150的外在参数估计地平面,然后使用来自深度图像的像素的法线方向来细化地平面。在某些实施例中,基于rgbd传感器150的外在参数确定地平面,使用来自深度图像的像素的法线方向来细化地平面,并且使用来自rgb图像的像素的分数进一步细化地平面。在某些实施例中,地平面融合模块126还通过将地平面划分为网格单元来在地平面上定义2d网格单元地图。

深度图像投影模块128被配置成在接收到地平面表示和深度图像时将深度图像像素投影到地平面。如上所述,地平面可以是2d网格单元地图的形式。在某些实施例中,2d网格单元地图建立在地平面或距地平面的一小段距离处。深度图像投影模块128可以从每个深度像素朝向地平面并垂直于地平面绘制直线以确定投影像素。因此,无论计算设备110(或机器人设备)的姿势如何,地平面中仅有一个点对应于每个深度像素。即使计算设备110在操作期间倾斜,深度像素的投影像素也不会改变地平面上的位置;但是对于地平面的倾斜部分,对应的像素垂直于该倾斜部分,而不是垂直于海平面。基于这些信息,深度图像投影模块128被配置成沿着垂直于地平面的方向将深度图像中的每个深度像素投影到地平面。如图3中所示,位于地平面上的所有像素和地平面上的在特定网格单元320内的投影像素310由该单位单元320的(距离,翻滚角)表示。这里,距离在机器人设备110和单位单元320(单位单元的中心或单位单元的一个特定角)之间,并且翻滚角是机器人设备110朝向单位单元(相对于例如原点)的方向。对于地平面的每个网格单元单位,深度图像投影模块128将正好在网格单元上方并垂直于网格单元平面的那些深度像素投影到网格单元中。在某些实施例中,地平面可以包括不同的地平面部分,并且对于地平面的每个部分(其可以不与地平面的其他部分齐平),沿着地平面部分的法线方向的像素被投影到地平面部分。换句话说,即使计算设备110在操作期间倾斜,每个网格单元也始终仅沿网格单元的法线方向保持正好在网格单元上方的深度像素信息。尽管在图3中示出了多个像素,但是不需要在每个单元中存储像素的确切数量或位置。每个网格单元的像素的数量和分布可以仅由一个参数表示,即颜色描述符。在构造之后,深度图像投影模块128将具有机器人姿势的2d网格单元发送到扫描和描述符组合模块132。

颜色描述符生成器130被配置成在从rgbd传感器150接收到rgb图像并且从深度图像投影模块128接收到网格单元中的像素和投影像素时,生成网格单元的颜色描述符并将颜色描述符发送到扫描和描述符组合模块132,使得扫描和描述符组合模块132将描述符与在当前帧处观察到的网格单元相关联。具体地,每个网格单元对应于位于地平面上的多个像素和在网格单元的位置处投影到地平面的像素,这些像素在rgb图像中具有对应的rgb信息,并且颜色描述符130生成对应于那些像素的一个颜色描述符。在一个示例中,颜色描述符可以是颜色直方图的形式。

扫描和描述符组合模块132被配置成在从深度图像投影模块128接收到扫描结果并且从颜色描述符生成器130接收颜色描述符之后,组合该信息以形成当前图像的地平面的扫描和描述符。因此,地平面现在包括网格单元和对应于每个网格单元的颜色描述符,其形式为(距离、翻滚角、颜色描述符),其中距离和翻滚角表示网格单元与机器人设备110之间的关系,并且颜色描述符表示对应于网格单元的所有颜色像素的颜色信息。为了便于描述,那些具有对应颜色描述符的2d网格单元被命名为投影颜色网格单元或混合网格单元。

扫描和描述符匹配模块134被配置成在从映射模块142接收到2d网格单元地图并且接收到混合网格单元时,将混合网格单元与2d网格单元地图进行匹配。在2d网格单元地图中,每个网格单元具有三种状态,即,占用、空或未知,并且每个被占用的网格单元具有颜色描述符分量,并且被表征为(距离、翻滚角、颜色描述符)。然后,扫描和描述符匹配模块134针对2d网格单元地图搜索每个混合网格单元以定位对应的匹配网格单元。在某些实施例中,通过搜索距离和翻滚角参数来执行搜索,然后用颜色描述符进行确认。因为在2d地图上匹配,所以过程很快。此外,因为每个混合网格单元和2d网格单元地图中的被占用的网格单元不仅具有距离和翻滚角,而且还具有颜色描述符,因此搜索和匹配是准确的。在某些实施例中,使用当前帧中的所有混合网格单元执行匹配,并且评估所有混合网格单元与2d网格单元地图中的对应网格单元之间的匹配,并且当所有混合网格单元的整体匹配都很好时找到匹配。在某些实施例中,扫描和描述符匹配模块134还可以将当前帧或图像中的网格单元与紧邻的先前帧或紧邻的先前关键帧进行匹配,并通过关键帧中的网格单元与2d网格单元地图之间的对应关系将当前帧中的那些网格单元与地图相关联。在匹配之后,扫描和描述符匹配模块134记录匹配的混合网格单元并将匹配发送到环闭合模块136和姿势更新模块138。

环闭合模块136被配置成在从映射模块142接收到2d网格单元地图并且从扫描和描述符匹配模块134接收到匹配扫描时,使用匹配的信息和2d网格单元地图来检测环闭合,即,检测环境中先前访问过的位置。在某些实施例中,通过将新获得的网格单元与网格单元地图中的网格单元进行匹配来执行环闭合检测。因为针对每个混合网格单元包括颜色描述符,所以新网格单元和2d网格单元地图之间的准确和快速匹配是可能的,并且因此,有效地执行环闭合。此时,匹配的信息尚未合并到2d网格单元地图中,并且匹配的信息和检测到的环闭合将用于更新机器人姿势,然后更新地图。在环闭合检测之后,环闭合模块136还被配置成将检测到的环闭合信息发送到姿势更新模块138,以更新机器人设备110的姿势。

在某些实施例中,图像地面检测器122使用当前rgb图像在一个线程中执行其功能,最近邻法线方向检测器124使用当前深度图像在另一个线程中执行其功能,并且环闭合模块136使用接收到的扫描和描述符匹配和地图在另一线程中执行其功能,并发送环闭合信息以更新机器人姿势。

姿势更新模块138被配置成在从扫描和描述符匹配模块134接收到匹配的混合网格单元时,并且当从环闭合模块136接收到可用的环闭合信息,以及可选地从配置文件144接收到外在参数时,计算当前姿势与上一次机器人姿势测量之间的相对旋转和平移,并更新机器人设备110的姿势。姿势更新模块138在当前时间将机器人姿势呈现为全局框架中的(x、y、偏航),其中x、y是地图中机器人设备110的坐标,而偏航是地图中机器人设备110相对于原点的方向。在某些实施例中,还考虑基于imu/车轮编码器170的相对姿势变化以更新机器人姿势,由于其准确性,机器人姿势可能是高度加权的。姿势更新模块138还被配置成将机器人姿势发送到姿势传播模块140、映射模块142和姿势接收模块146。

姿势传播模块140被配置成在从姿势更新模块138接收当前时间的全局框架中的机器人姿势(x、y、偏航)时,将当前帧中的机器人姿势传播到下一帧。在某些实施例中,姿势传播模块140被配置成将机器人姿势传播到深度图像投影模块128,以便在下一帧中进行计算。

映射模块142被配置成在从姿势更新模块138接收当前时间的全局框架中的机器人姿势(x、y、偏航),以及从环闭合模块136接收可能的环闭合信息时,使用新的扫描网格单元以更新网格单元地图。更新的地图包含2d的网格单元,每个网格单元具有三种状态中的一种:占用、空和未知。每个被占用的网格单元用网格单元地图中的坐标(x、y)和(距离、翻滚角、颜色描述符的)表征来表示。映射模块142还被配置成将更新的网格单元地图发送到环闭合模块136,以用于在环闭合模块136接收到下一批匹配的扫描和描述符时检测环闭合,并将更新的网格单元地图发送到扫描和描述符匹配模块134,使得扫描和描述符匹配模块134将新的扫描网格单元与网格单元地图中的网格单元匹配。在上述实施例中,地图是网格单元地图,并且每个网格单元的描述符对应于投影到该单元中的所有像素。在其他实施例中,地图可以是包括具有颜色描述符的扫描像素的像素地图。当地图的单位是网格单元而不是像素时,整个过程更有效。

在某些实施例中,当初始化扫描匹配slam应用118,并且还没有可用的地图时,映射模块142被配置成基于前几个捕获的图像或帧来构建2d地图。基本上,rgbd传感器150捕获多个(至少两个)图像。对于每个图像或帧,图像处理器120将图像分离成rgb图像和深度图像,图像地面检测器122检测rgb图像中在地面上的像素的分数,最近邻法线方向检测器124检测深度图像中的每个像素的法线方向,地平面融合模块126组合外在参数、像素的分数和法线方向以确定属于地平面的像素,深度图像投影模块128将地平面划分为网格单元并将扫描像素投影到地平面上的网格单元,颜色描述符生成器130针对rgb图像中与每个网格单元相对应的像素生成颜色描述符,扫描和描述符组合模块132将计算的描述符与对应的网格单元相关联。在分析了所有前几个图像之后,映射模块142对那些图像中的网格单元进行匹配,并使用网格单元构建网格单元地图。对于每个网格单元,网格单元中的投影像素被组合在一起,并且一个颜色描述符就足够了。在其他实施例中,可以使用其他类型的占用地图或甚至像素地图。在某些实施例中,机器人设备110的姿势也可以添加到2d地图。

配置文件144存储rgbd传感器150的校准的外在参数。参数定义rgbd传感器150到机器人设备110的取向和位置(相对姿势)。在某些实施例中,扫描匹配slam应用118还被配置成基于像素地图或网格单元地图来校准rgbd传感器150的姿势,并用校准的参数更新配置文件144。在某些实施例中,配置文件144还可以存储rgbd传感器150的固有参数,其可以包括光学中心、镜头失真和焦距。

姿势接收模块146被配置成在从姿势更新模块138接收到当前时间的全局框架中的机器人姿势(x、y、偏航)时,基于当前机器人姿势执行其功能,例如,基于当前机器人姿势控制机器人设备110的操作。

图3示意性地示出了根据本公开的某些实施例的网格单元地图的一部分。如图3中所示,网格单元地图是具有(x、y)坐标的2d地图。图3中所示的网格单元地图中的(x、y)具有预定的距离单位,诸如1cm或1毫米(mm),并且网格单元的xi或yi中的每一个可以是整数的实数。网格单元地图的每个网格单元包括地平面上和网格单元内的所有像素的信息、以及当投影到地平面时也位于网格单元内的地平面上方的像素的信息。组合并计算与每个网格单元相对应的那些像素的rgb信息,以针对该网格单元提供一个颜色描述符。

图3中所示的网格单元地图3是2d地图,因此网格单元到2d地图的搜索和匹配比网格单元到3d地图的搜索和匹配快得多。另一方面,颜色描述符包括在2d地图中,并且当考虑2d扫描和颜色描述符时,搜索和匹配更准确。

在某些方面,本公开涉及一种面向扫描匹配的视觉slam的方法,其将2d扫描与颜色直方图/特征进行组合以使用rgbd相机进行制图。图4示意性地描绘了根据本公开的某些实施例的面向扫描匹配的视觉slam的方法。在某些实施例中,如图4中所示的方法400可以在如图1中所示的计算设备110上实现。应特别注意,除非在本公开中另有说明,否则该方法的步骤可以以不同的顺序排列,因此不限于如图4中所示的顺序。

在某些实施例中,在图4中所示的过程之前,该方法可能需要初始化2d像素地图或2d网格单元地图。具体地,当初始化扫描匹配slam应用118,并且还没有可用的地图时,映射模块142被配置成基于前几个捕获的帧构建2d地图。基本上,rgbd传感器150捕获多个(至少两个)图像或帧,图像处理器120处理图像以获得rgb图像和深度图像,图像地面检测器122使用rgb图像来计算表示像素位于地平面上的可能性的分数,最近邻法线方向检测器124检测深度图像像素的法线方向,地平面融合模块126基于rgbd传感器150的外在参数、分数、法线方向以及rgb图像像素与深度图像像素之间的对应关系确定地平面,深度图像投影模块128将地平面定义为2d网格单元并将深度图像像素投影到地平面的网格单元,颜色描述符生成器针对每个网格单元中的像素生成颜色描述符,扫描和描述符组合模块132将颜色描述符与2d网格单元相关联,姿势更新模块138基于多个帧之间的投影像素对应关系来计算2d空间中的机器人姿势,并且映射模块142基于机器人姿势和多个帧之间的对应关系构建2d地图。构建的2d地图还可以包括关键帧(图像)和与每个关键帧相对应的制图设备的姿势。在某些实施例中,可以不预先准备2d网格单元地图。取而代之地,当深度图像投影模块128以2d网格单元的形式定义地平面时,形成2d网格单元。

在过程402处,提供rgbd传感器150和imu/车轮编码器170。rgbd传感器150的外在参数和可选的固有参数存储在配置文件144中。外在参数可以定义rgbd传感器150相对于机器人设备110的取向和位置,并且固有参数可以包括rgbd传感器150的光学中心、失真和焦距。rgbd传感器150的外在参数可以是(x、y、z、翻滚、偏航、俯仰)的形式,其指定机器人框架中的rgbd传感器150的位置,也就是说,rgbd传感器150的参数(x、y、z、翻滚、偏航、俯仰)相对于机器人设备110。rgbd传感器150捕获环境的rgbd图像,并且imu/车轮编码器170分别记录特定力和速度/距离/位置以获得机器人设备110的行进距离。rgbd图像可以具有rgb图像和深度图像的组合信息作为不同的层,或者分别包括rgb图像和深度图像。在该步骤中,rgbd传感器150捕获当前rgbd图像或帧,并且imu/车轮编码器170记录紧接在捕获前一图像之后到紧接在捕获当前图像之后行进的距离。然后rgbd传感器150将当前rgbd图像发送到图像处理器120。imu/车轮编码器170将行进距离发送到姿势更新模块138。

在过程404处,在接收到当前rgbd图像时,图像处理器120将当前rgbd图像分割为rgb图像和深度图像。在某些实施例中,rgbd图像可以包括r层、g层、b层和深度层,并且图像处理器120提取r层、g层和b层以形成rgb图像,并且提取深度层作为深度图像。在某些实施例中,rgbd传感器150可以分别捕获并存储rgb图像和深度图像,并且过程404不是必需的。在该实施例中,图像处理器120是扫描匹配slam应用118的一部分。在其他实施例中,图像处理器120也可以是rgbd传感器150的一体部分。在从当前rgbd图像获得rgb图像和深度图像之后,图像处理器120将rgb图像发送到图像地面检测器122,并将深度图像发送到最近邻法线方向检测器124。

在过程406处,在接收到rgb图像时,图像地面检测器122计算rgb图像中的像素的分数,其中分数表示像素位于地平面中的可能性。图像地面检测器122可以确定当前rgb图像中的每个像素的特征,识别诸如边缘、角落、斑点和脊等的那些特征,并基于所识别的特征确定不同的平面。在某些实施例中,图像地面检测器122使用深度学习算法确定平面。深度学习算法针对每个rgb图像像素提供分数。彼此接近并具有相似分数的像素形成平面。形成的平面可以包括地平面、墙壁、门、窗等。在某些实施例中,使用执行分类的dnn,例如yolo2。因为rgb图像通常具有高分辨率,所以从rgb图像确定的平面具有准确的尺寸和边缘;换言之,可以将rgb图像中的像素准确地分配给平面或非平面区域中的一个。然而,很难知道平面在现实世界中所面对的确切方向,并且并不容易将地平面与其他确定的平面区分开。在确定像素或平面的分数之后,图像地面检测器122将分数或/和确定的平面发送到地平面融合模块126。

在过程408处,在接收到深度图像时,最近邻法线方向检测器124检测深度图像中的每个像素的法线方向。在某些实施例中,通过分析像素的相邻像素来确定像素的法线方向。在某些实施例中,对于每个目标像素,最邻近法线方向检测器124选择2d深度图像中的八个相邻像素,并计算包含八个相邻像素和目标像素的平面。然后,最邻近法线方向检测器124将目标像素的法线方向定义为穿过目标像素并垂直于计算出的平面的直线。

在某些实施例中,过程406和408是在不同的线程中执行的,以便提高扫描匹配slam应用118的性能效率。

在过程410处,在接收到rgb图像像素的分数和深度图像像素的法线方向时,并且基于rgb图像像素和深度图像像素之间的对应关系以及rgbd传感器150的外在参数,地面平面融合模块126确定地平面。在某些实施例中,获得深度图像像素的法线方向,并且地平面融合模块126通过投票确定深度图像中的平面。具体地,首先,基于相机外在参数,该过程获得哪些3d点(具有类似于0的高度的点)可能属于地面。其次,该过程将地面上具有相似法线的点分组在一起,并将法线与地面法线进行比较。第三,该过程提取地面点并使地平面与上述地面平面模型适应并将其设置为地面。可以通过找到具有相同法线方向的像素的数量来执行投票,并且数量越大,投票中的排名越高。例如,地面上的所有像素具有相同的法线方向,并计算这些像素的数量;墙壁上的所有像素都具有相同的法线方向,并对这些像素的数量进行计数;门上的所有像素具有相同的法线方向,并对这些像素的数量进行计数。可以通过地面上的像素的数量>墙壁上的像素的数量>门上的像素的数量来对像素的数量进行排序。通过投票,地平面、墙壁的平面和门的平面被确定为地平面的候选平面。然后,地平面融合模块126基于rgbd传感器的外在参数和rgbd传感器的当前姿势确定机器人设备110的底表面,这是因为rgbd传感器相对于机器人设备110的底表面的相对位置可以基于外在参数来定义。地平面融合模块126然后比较候选平面和机器人设备110的底表面,并确定候选平面中在投票中排名高并且靠近机器人设备110的底表面的一个平面作为地平面。深度图像通常比rgb图像具有更多噪声。因此,在确定深度图像中的地平面之后,地平面融合模块126将深度图像中的地平面与rgb图像中的像素的分数进行比较,以定位rgb图像中的平面位置。因为rgb图像通常具有高分辨率,所以地平面融合模块126基于rgb图像中与深度图像中的地平面相对应的像素来定义地平面。通过该操作,可以滤除深度图像中固有存在的噪声,并且准确地定义地平面。然后,地平面融合模块126将确定的地平面发送到深度图像投影模块128和颜色描述符130。在某些实施例中,地平面融合模块126还在地平面上构建2d网格化单元地图。在某些实施例中,地平面融合模块126使用rgbd传感器150的外在参数来估计地平面,并使用来自深度图像的法线方向来细化估计的地平面。在某些实施例中,地平面融合模块126使用rgbd传感器150的外在参数来估计地平面,使用来自深度图像的法线方向来细化估计的地平面,然后使用来自rgb图像的分数来进一步细化估计的地平面。

在过程412处,在接收到确定的地平面时,深度图像投影模块128将深度图像中的像素投影到地平面。深度图像是3d图像,但是深度图像像素到地平面的投影将3d信息折叠成2d信息。投影过程也称为扫描。因为准确地确定了地平面,所以深度图像投影模块128可以将每个深度图像像素投影到地平面中的相同位置,无论机器人设备110是否倾斜。在某些实施例中,在投影之前,地平面融合模块126或深度图像投影模块128可以首先将地平面划分为网格单元,然后深度图像投影模块128将深度图像中的像素沿着地平面的垂直方向投影到对应的网格单元。

此外,在过程414处,在接收到确定的地平面和每个网格单元中的投影像素时,颜色描述符生成器130针对每个网格单元生成颜色描述符。具体地,每个投影的深度图像像素具有对应的rgb图像像素。对于一个网格单元中的所有像素,来自rgb图像的对应rgb信息以某些方式组合以形成一个描述符。换句话说,2d网格单元地图(如果不是空的)中的每个网格单元由颜色描述符表征。在投影深度图像像素并提供对应rgb图像像素的颜色描述符之后,扫描和描述符组合模块132将颜色描述符与地平面上的网格单元相关联。然后,扫描和描述符组合模块132将具有从当前帧获得的相关联的颜色描述符的网格单元发送到扫描和描述符匹配模块134。现在,地平面中的每个网格单元具有(距离、翻滚角、描述符)的形式,其表示网格单元的位置及其描述符。

在过程416处,在从扫描和描述符组合模块132接收到具有相关联的颜色描述符的网格单元(2d扫描)(混合网格单元)并从映射模块142接收到网格单元地图时,扫描和描述符匹配模块134将那些混合网格单元匹配到网格单元地图。该地图包括具有被占用状态、空状态和未知状态的网格单元。被占用状态表示包含至少一个像素的网格单元,诸如家具的固体表面;空状态表示不包含像素的网格单元,诸如空的空间;并且未知状态表示机器人设备110尚未扫描的网格单元。对于具有被占用状态的每个网格单元,网格单元由(距离、翻滚角、颜色描述符)定义,其包含在网格单元中所包括或投影的像素的信息。扫描和描述符匹配模块134基于距离、翻滚角将具有颜色描述符的扫描网格单元匹配到地图中的被占用的网格单元,然后使用颜色描述符进行验证。在某些实施例中,扫描和描述符匹配模块134还可以将混合网格单元匹配到前一帧或前一关键帧中的混合网格单元。由于高分辨率的rgb图像,因此颜色描述符具有高分辨率,并且每个网格单元中的像素的分布是特定的。因此,在匹配期间添加颜色描述符提高了匹配的准确性。在将当前帧中的地平面上的混合网格单元匹配到网格单元地图中的网格单元之后,扫描和描述符匹配模块134将匹配结果发送到环闭合模块136和姿势更新模块138。

在过程418处,在从扫描和描述符匹配模块134接收到匹配结果并从映射模块142接收到地图时,环闭合模块136基于扫描网格单元与地图的匹配来检测可能的环闭合;并且姿势更新模块138在全局框架中计算机器人设备110的当前姿势,并基于匹配结果和检测到的环闭合来更新机器人姿势和占用的网格单元位置。这里全局框架意谓2d地图的坐标系。在某些实施例中,来自imu/车轮编码器170的信息还用于机器人姿势和网格单元位置更新。当更新的姿势可用时,姿势更新模块138通过姿势传播模块140传播机器人姿势,并将机器人姿势发送到姿势接收模块146。姿势传播模块140将更新的机器人姿势传播到下一帧,使得深度图像投影模块128可以使用当前帧中的机器人姿势来估计下一帧中的机器人姿势。姿势接收模块146可以基于更新的机器人姿势来操作其功能。

此外,姿势更新模块138将更新的机器人姿势和匹配的网格单元发送到映射模块142,使得在过程420处,映射模块142用颜色描述符更新2d扫描地图。具体地,现在将更新的机器人姿势和更新的占用网格单元位置记录在地图中,并且将不匹配的混合网格单元添加到地图中。在该实施例中,地图是网格单元地图的形式。在某些实施例中,地图还可以是其他类型的占用地图或像素地图。

在另一方面,本公开涉及存储计算机可执行代码的非暂时性计算机可读介质。当在计算设备的处理器处执行时,代码可以执行如上所述的方法400。在某些实施例中,非暂时性计算机可读介质可以包括但不限于任何物理或虚拟存储介质。在某些实施例中,非暂时性计算机可读介质可以实现为机器人设备110的存储设备116,如图1中所示。

图5示意性地描绘了根据本公开的某些实施例的面向扫描匹配的slam的示例性工作流程。如图5中所示,当前帧的工作流程类似于上述方法400;从上一帧到当前帧并从当前帧到下一帧传播机器人姿势;并且针对每个帧更新网格单元地图或像素地图。

总之,本公开的某些实施例相对于现有技术尤其具有以下优点。

首先,基于深度图像像素的法线方向、rgb图像像素的颜色描述符和rgbd传感器的外在参数来确定环境的地平面。确保确定的地平面的正确性和准确性。

其次,深度图像像素的3d信息被投影到2d网格单元地图或像素地图,并且基于地图的进一步操作(例如,将像素匹配到地图)更有效。

第三,颜色信息与深度图像信息相关联,并且进一步提高了像素与地图之间的匹配准确性。

第四,使用不同的线程执行图像地面检测器、最近邻法线方向检测器和环闭合模块,这提高了应用的操作效率。

已经仅出于说明和描述的目的呈现了本公开的示例性实施例的前述描述,并且不旨在穷举或将本公开限制于所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。

选择和描述实施例是为了解释本公开的原理及其实际应用,以使得本领域其他技术人员能够利用本公开和各种实施例以及适合于预期的特定用途的各种修改。在不脱离本公开的精神和范围的情况下,替代实施例对于本公开所属领域的技术人员将变得显而易见。因此,本公开的范围由所附权利要求限定,而不是前面的描述和其中描述的示例性实施例限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1