使用多方向相机地图构建空间的制作方法

文档序号:15104907发布日期:2018-08-04 16:38阅读:255来源:国知局

本发明涉及使用多方向相机来地图构建空间。本发明与基于来自单目多方向相机的、在相机的移动期间捕捉的图像序列生成占据图具有特定的但并非排他的相关性。



背景技术:

诸如地板清洁机器人等低成本机器人设备通常依靠有限的感知和简单的算法来导航三维空间(例如,室内空间)。例如,在一种情况下,机器人设备可以包括红外或超声波传感器,该传感器检测地点路线内的物体(之后可躲避该物体)。虽然诸如同步定位和地图构建(SLAM)等技术取得了很大进展,但许多解决方案依赖于对于研究实验室可用的大量计算资源。这使得难以将这些解决方案转换为控制现实世界的商业机器人设备的嵌入式计算装置。此外,某些解决方案需要一套专门的传感器装置,例如,激光探测和测距(LADAR)传感器、结构光传感器或飞行时间深度相机。这些专门的传感器装置增加了费用和复杂性,使其不太适合现实世界的机器人应用。

US2010/0040279A1描述了构建三维网格图以控制自动行进设备的方法和设备。在构建三维图,以识别无人驾驶车辆或移动机器人的当前位置和周围环境时,使用二维定位和三维图像恢复来更加快速地精确构建三维网格图。然而,该解决方案需要使用包括至少两个单独的全向相机装置和相应的立体图像处理的立体全向相机。对于许多家用或低成本的机器人设备,这可能是不实际的或者不是经济有效的。

US2014/0037136A1描述了用于确定用于路上障碍物检测的车载相机的姿态的方法和系统。通过从一组初始图像中确定点对应关系,然后对点对应关系应用两点运动估计来确定相机的一组初始姿态,获得可移动相机相对于环境的姿态。点云由这组初始姿态和点对应关系生成。然后,对于每个下一个图像,确定点对应和相应的姿态,同时更新点云。点云可用于检测机动车辆的环境中的障碍物。然而,其中描述的技术更适用于诸如汽车和其他机动车辆等较大装置,这些装置可以使用发动机驱动的电源,并且可以采用更大、更高规格的计算资源。对于许多家用或低成本的机器人设备,这可能是不实际的或者不是经济有效的。

US2013/0216098A1描述了用于构建拥挤的三维空间(例如,有很多人的环境)的地图的技术。该技术包括:连续图像获取单元,其获得在机器人正在移动时拍摄的图像;局部特征量提取单元,其从图像中提取每个特征点处的量;特征量匹配单元,其在输入图像中的量之中进行匹配,其中,由提取单元提取量;不变特征量计算单元,其计算匹配单元在预定数量的图像之中的匹配量的平均值,作为不变特征量;距离信息获取单元,其基于在获得图像时机器人的位置来计算与每个不变特征量对应的距离信息;以及地图生成单元,其生成本地量度地图作为混合地图。虽然这种技术在拥挤的空间中使用时具有优势,但是在计算资源有限的嵌入式计算装置中使用这种技术是不太合适的。

EP2854104A1描述了一种用于半密集同步定位和地图构建的方法。在该方法中,估计图像获取装置的姿态和深度信息。跟踪图像获取装置的位置和/或取向以及通过确定深度信息进行地图构建的步骤是交错的。深度信息仅针对图像像素的子集来确定,例如,针对其强度变化足够高的那些像素。

虽然上述技术对于特定情况具有某些优点,但是上述技术通常复杂并且需要密集的计算。这使得这些技术难以在例如小型低成本家用机器人设备的嵌入式控制器上实现。因此,需要控制技术超越可用机器人设备的有限感知和简单算法,同时仍然实用并且对于在这些装置上应用足够通用。



技术实现要素:

根据本发明的一个方面,提供了一种机器人设备,包括:单目多方向相机装置,用于从多个角度位置捕捉图像;至少一个移动致动器,用于使机器人设备在空间内移动;导航引擎,用于控制机器人设备在该空间内的移动;可由导航引擎访问的占据图,用于确定空间的可导航部分,其中,所述导航引擎被配置为:使用所述至少一个移动致动器指示机器人设备围绕移动平面内的点的移动;使用单目多方向相机装置,在机器人设备的所指示的移动期间,在多个不同的角度位置处获得图像序列;从图像序列中确定姿态数据,所述姿态数据指示在所指示的移动期间在多个位置处所述单目多方向相机装置的位置和定向,使用在图像序列内检测到的一组特征来确定姿态数据;通过评估图像序列的体积函数和姿态数据来估计深度值,每个深度值表示从所述多方向相机装置到所述空间中的物体的距离;并且处理深度值,以填充该空间的占据图。

在某些示例中,机器人设备包括:图像处理器,用于解包由单目多方向相机装置捕捉的图像并输出全景图像供导航引擎使用。单目多方向相机装置可以包括视频装置,用于捕捉包括帧序列的视频数据。单目多方向相机装置可以包括全向相机。全向相机可以包括全景环形透镜。

在某些情况下,占据图可以包括多维网格,其中,网格中的条目指示以下中的一个:移动平面内的区域包括自由空间,并且该区域可由机器人设备导航,并且移动平面内的区域包括物体,并且该区域不能由机器人设备导航。

在一种情况下,机器人设备可以包括:相机校准器,用于通过处理校准图案的至少一个捕捉图像来校准单目多方向相机装置。相机校准器可以被配置成通过评估检索的校准图案图像特性和所捕捉的图像值的函数来确定相机模型参数。

在一个变化中,单目多方向相机装置包括深度传感器和图像传感器,并且单目多方向相机装置被设置为捕捉深度和图像数据。

在一个实现方式中,机器人设备可以包括:清洁元件,其中,导航引擎被配置为:处理物体占据图,以确定针对空间的空置区域的清洁模式,并且根据清洁模式,指示启动所述清洁元件。在这个实现方式中,清洁元件可以包括真空装置。

根据本发明的第二方面,提供了一种用于确定可由机器人设备导航的空间的物体占据的方法,包括:从耦接至机器人设备的单目多方向相机装置获得图像数据,单目多方向相机装置被设置成从多个角度位置捕捉图像数据,图像数据包括在机器人设备的移动平面内具有视差的图像序列;确定与图像数据对应的姿态数据,姿态数据指示单目多方向相机装置的位置和取向,使用在图像数据内检测到的一组特征来确定姿态数据;通过评估图像数据和姿态数据的体积函数来估计深度值,每个深度值表示从单目多方向相机装置到空间中的物体的距离;并且处理深度值,以填充针对该空间的物体占据图,物体占据图可由机器人设备用于导航空间。

在一个示例中,确定与图像数据对应的姿态数据,包括:检测图像序列中的多个图像中的每个图像中的一个或多个特征;使所述多个图像中的检测到的特征匹配,以确定图像数据内的一组地标;并且为图像序列联合地优化一组相机姿态估计和一组地标位置估计,姿态数据包括在联合优化之后的一组相机姿态估计。联合优化一组相机和地标位置估计可以包括执行捆调整。在某些情况下,联合优化一组相机和地标位置估计可以包括使用于来自机器人设备的里程计数据来约束优化函数。

在一个示例中,通过评估体积函数来估计深度值,包括:从图像序列确定参考图像;确定与参考图像重叠的一组比较图像;确定参考图像的图像值与来自这组比较图像的投影图像值之间的光度误差,其中,每个投影图像值包括使用参考图像的姿态数据和比较图像的姿态数据将比较图像投影到参考图像的视点;并且选择使光度误差最小化的深度值。可以基于归一化的像素光度误差来确定光度误差。

在某些情况下,单目多方向相机装置包括全向相机装置,并且参考图像包括该空间的360°全景图。在这些情况下,处理所述深度值可以包括:为参考图像的每个像素列确定最接近的深度值;并且使用所述最接近的深度值来填充二维占据网格值。

在一个示例中,估计深度值包括:确定所估计的深度值的方差量度,并且处理深度值包括:基于所确定的方差量度来过滤所估计的深度值,其中,基于经过滤的深度值来填充物体占据图。在这个示例中,方差量度可以包括与参考图像相关联的像素深度测量的标准偏差,并且过滤所估计的深度值可以包括使用标准偏差值低于预定义阈值的深度估计。因此,估计深度值可以包括计算空间的半密集深度图。

在某些示例中,可以重复所述方法,用于机器人设备在空间内的多个间隔的圆形运动。在这些示例中,处理深度值以填充物体占据图,包括:整合来自多个深度图的深度值,以填充物体占据图。

该方法可以包括:使用物体占据图来确定机器人设备通过空间的空置区域的导航路径。此外和/或可替换地,机器人设备可以包括清洁元件,并且所述方法可以包括:使用物体占据图来确定针对空间的空置区域的清洁模式,其中,清洁模式表明在空间内要应用清洁元件的位置。

根据本发明的第三方面,提供了一种包括计算机可执行指令的非暂时性计算机可读存储介质,计算机可执行指令在由处理器执行时促使计算装置地图构建空间,其中,指令促使计算装置:从单目多方向相机接收帧序列,多方向相机被设置为从多个角位置捕捉每个帧的图像数据,在空间的移动平面内的不同角位置处捕捉帧序列;通过在帧序列中匹配检测到的特征,来确定针对每个帧的相机的位置和取向估计;捆调整相机的位置和取向估计以及帧序列中的检测到的特征,以生成相机的优化的一组位置和取向估计;从帧序列中确定参考帧;评估参考帧的像素值与来自与参考帧重叠的一组比较图像的投影像素值之间的光度误差函数,所述投影像素值是距相机的物体距离和相机的优化的一组位置和取向估计的函数;基于所评估的光度误差函数来确定与参考帧的不同像素列对应的不同角度位置的物体距离;并且基于确定的物体距离,生成在空间的移动平面内可导航区域的地图。

单目多方向相机可以包括全向相机。在这种情况下,每个帧可以包括解包的全向图像。全向相机可以包括全景环形透镜。可以从空间内周向移动的移动相机接收帧序列。在某些变化中,单目多方向相机可以包括图像传感器和深度传感器,其中,帧序列包括图像数据和深度数据,深度数据与图像数据一起用于确定物体距离。

在其他示例中,非暂时性计算机可读存储介质可以包括计算机可执行指令,计算机可执行指令在由处理器执行时促使诸如机器人设备中的嵌入式计算机或分布式系统中的远程处理器等计算装置执行上面讨论的任何方法。

本发明的进一步的特征和优点将从参考附图进行的仅以示例的方式给出的本发明的优选实施例的以下描述中变得显而易见。

附图说明

图1A和1B是示出机器人设备的两个示例的示意图;

图2A和2B是示出根据示例的机器人设备的运动的示意图;

图3是示出根据示例的占据图的图形表示的示意图;

图4A和4B是示出根据两个示例的用于生成占据图的某些系统部件的示意图;

图5是示出根据示例的导航引擎的某些系统部件的示意图;

图6是示出根据示例的用于确定可由机器人设备导航的空间的物体占据的方法的流程图;

图7是示出根据示例的估计相机装置的姿态数据的方法的流程图;

图8是示出根据示例的估计深度值的方法的流程图;

图9A是来自机器人设备的示例图像,示出了具有不同图像特征的两个区域;

图9B是示出根据示例的针对图9A的两个区域的深度值的示图;以及

图10是示出根据示例的非暂时性计算机可读介质的示意图。

具体实施例

本文描述的某些示例允许机器人设备快速且准确地导航自由空间,例如,例如在内部房间或外部空间内。某些示例使用单目多方向相机装置来获得空间内的多个不同角度位置处的图像序列。对于以近似x-y移动平面移动的基于地板的机器人,这些图像可以包括在所有水平方向上具有视差的紧密间隔的图像的序列。其可以通过执行一些圆形或圆周运动来获得。这些可能是与空间的大小有关的小幅移动。相机装置可以包括单个全向相机。在本文描述的某些示例然后提供针对这些图像的特定处理操作。该处理在机器人设备的嵌入式计算资源内适用。在一个示例中,使用基于特征的方法从图像序列确定姿态数据。一旦已经为该图像序列计算了该姿态数据,则评估图像和姿态数据的体积函数,以确定深度值,例如,表示相机装置与在空间内的物体的距离。这种两步式方法结合了稀疏和密集方法的优点来建模环境,同时选择适当的计算来限制这两种方法的相对缺点。然后,可以处理深度值,以填充该空间的占据图。该占据图可以包括机器人设备可用于导航其环境的二维网格。同样,在本文描述的这种特定示例以允许在有限的计算机资源和/或实时运算上进行快速评估的方式组合二维和三维计算。

当移动机器人设备进入新的房间或外部空间时,可以应用本文描述的某些技术,作为初始化或配置例程。这然后使得机器人设备能够快速填充占据图,例如,在几秒钟之内,这准确地地图构建了自由空间并且可以用于随后的功能,例如,导航、清洁或物品传送。在测试环境中,本文描述的某些方法提供高质量的占据地图,其露出高于使用能够相提并论的LADAR方法检测到的80%的自由空间,同时避开了对昂贵和复杂的LADAR设备的需求。实际上,本文描述的某些示例提供了使用例如红-绿-蓝(RGB)相机的单个低成本无源相机的占据图。这可以使机器人设备能够实时获得对其周围空间的全局理解。在此描述的某些示例也容易扩展,例如,在第一次移动和生成初始占据图之后,可以开始进一步的移动,以更新和改进初始地图。

示例机器人设备

图1A示出了可用于生成如本文所述的占据图的测试机器人设备105的第一示例100。提供这种测试机器人设备,为了便于理解以下示例,并且不应被视为限制;其他不同配置的机器人设备可以同样地应用在下面的段落中描述的操作。图1A的测试机器人设备105包括单目多方向相机装置110,用于从多个角度位置捕捉图像。在使用中,可以一个接一个地捕捉多个图像。在某些情况下,多个角度位置覆盖宽视场。在特定情况下,相机装置110可以包括全向相机,例如,被设置为捕捉大致360°的视场的装置。在这种情况下,全向相机可以包括具有全景环形透镜的装置,例如,该透镜可以关于电荷耦合阵列安装。在图1A的示例中,相机装置110安装在机器人设备上方的可配置臂上;在其他情况下,相机装置110可静态地安装在测试机器人设备105的主体部分内。在一种情况下,单目多方向相机装置可包括被配置成捕捉图像序列的静止图像装置;在另一种情况下,单目多方向相机装置可以包括视频装置,用于捕捉包括视频帧形式的图像序列的视频数据。在某些情况下,视频装置可以被配置为以每秒大约或大于25或30帧的帧速率捕捉视频数据。

图1A的测试机器人设备105还包括至少一个移动致动器115,在这种情况下,该移动致动器115包括相对于测试机器人设备105的主体部分设置的一组从动轮。至少一个移动致动器115(其可以包括耦接至一个或多个轮子、轨道和/或滚轴的至少一个电动机)被设置为在空间内移动机器人设备。稍后参考图2A和2B描述这种空间的示例。测试机器人设备105还包括导航引擎120。其可以包括如图1A中的虚线所示的嵌入式计算装置。例如,导航引擎120可以使用至少一个处理器和存储器和/或一个或多个片上系统控制器来实现。在某些情况下,导航引擎120可以通过机器可读指令的方式来实现,例如,从诸如可擦除可编程只读存储器(EPROM)等只读或可编程存储器中检索的固件。导航引擎120控制测试机器人设备105在空间内移动。例如,导航引擎120可以指示至少一个移动致动器向前或向后推进测试机器人设备105,或者差别地驱动测试机器人设备105的轮子,以便转向或旋转该设备。在图1A中,测试机器人设备105还具有允许测试机器人设备105旋转的可旋转的自由轮125。在操作中,导航引擎120使用占据图(图1A中未示出)来确定空间的可导航部分。例如,导航引擎120可以包括其中存储实现占据图的数据的存储器或其他机器可读介质。在一个实验配置中,使用Pioneer 3DX移动机器人平台来实现测试机器人设备105。

图1B示出了机器人设备155的另一示例150。图1B的机器人设备155包括家庭清洁机器人。类似于测试机器人设备105,清洁机器人设备155包括单目多方向相机装置160。在图1B的示例中,相机装置160安装在清洁机器人设备155的顶部。在一个实现方式中,清洁机器人设备155可具有约10至15cm的高度;然而,其他尺寸是可能的。清洁机器人设备155还包括至少一个移动致动器165;在目前的情况下,这包括至少一个电动机,该电动机被设置成驱动安装在该设备的任一侧上的两组轨道,以向前和向后推进该设备。可以进一步差别地驱动这些轨道,以转向清洁机器人设备155。在其他示例中,可以提供不同的驱动和/或转向部件和技术。如图1A所示,清洁机器人设备155包括导航引擎170和可旋转的自由轮175。

除了图1A所示的测试机器人设备105的部件之外,该清洁机器人设备还包括清洁元件180。该清洁元件180可以包括用于清洁房间地板的元件。其可以包括滚轴或刷子185和/或湿或干的元件。在一种情况下,清洁元件180可以包括真空装置,例如,其被设置成捕捉污垢和灰尘颗粒。在这种情况下,导航引擎可以被配置为使用物体占据图来确定空间的空置区域的清洁模式,并根据清洁模式指示启动清洁元件180。例如,可以启动真空装置,以清洁房间内的自由空间的区域,如由物体占据图所指示的,其中,清洁机器人设备使用物体占据图经过房间内的障碍物。

机器人设备的示例运动

图2A和图2B示意性地示出了根据两个示例的机器人设备205在空间210内的运动200、250。在一些示例中,机器人设备205可以包括如图1A和1B所示的装置。在图2A和2B中,空间210包括内部房间形式的三维空间。在其他示例中,该空间可以是任何内部和/或外部物理空间,例如,房间或地理位置的至少一部分。这些示例中的空间210包括位于空间内的多个实物220。这些物体220尤其可以包括以下中的一个或多个:家具、建筑物部分、设备、活动地板部分、内墙部分、人、电子装置、动物等。虽然图2A和2B中的空间210从上方显示为下表面是平面的,但是在所有实现方式中,都不需要这种情况,例如,环境可以是空中的或者在外空间内。该空间的下表面也不一定是水平面,例如,可以包括倾斜面和/或多级的一系列平面。

在图2A的示例中,机器人设备205适于围绕空间中的点240移动。例如,如图1A或1B所示的导航引擎120或170可以被配置为指示使用至少一个移动致动器(例如,115或165)的移动240。在移动240期间,机器人设备205被配置为使用装配的单目多方向相机装置(例如,图1A或1B中的110或160)在多个不同的角度位置处获得图像序列。例如,移动240可以包括在空间的一部分内的基本上圆形的运动。在某些情况下,移动240可以包括完整的环路,例如,围绕点230旋转360°;在其他情况下,该移动可以包括环路的一部分,例如,围绕点230的小于360°的旋转。移动240不必是圆形的,可以是围绕任何形状(例如,任何多边形,包括具有等边和不等边的多边形)的周边的至少一部分的圆周运动。在大约4或5平方米(例如,平均家庭房间)的较小尺寸的房间中,移动240可以包括大约0.5米的宽度,例如,可以包括直径为0.5米的大致圆形运动。这可能需要10至20秒。在某些测试示例中,对于小型房间,图像序列可以包括大约100或200帧。

通常,在2A的示例中,控制机器人设备205,以便执行至少一个活动,以使得单目多方向相机装置能够捕捉在多个方向上具有差异的至少一个序列的紧密间隔的图像(例如,视频帧)。例如,在具有近似水平地板的空间中,即,形成机器人设备205的移动平面,紧密间隔的图像序列可以在多个水平方向上具有差异。比较而言,在对于移动而言具有倾斜平面的空间中,或者在空中或者地球外空间中,差异可以在与移动平面平行的多个方向上。这个移动240可以被视为简单的解释运动,例如,类似于(潜意识的)人类或动物环视房间以在房间内定位自己的能力。移动240允许机器人设备205快速地获得空间的形状和/或关键特征的整体概念。这在下面的部分中更详细地描述。然后,这给机器人设备205提供了迅速理解房间内的全局自由空间的能力,并有助于对空间的高级智能计划和语义理解。

图2B示出了可以用于较大空间(例如,外部空间和/或多部分内部空间)中的运动250。例如,图2B中的空间255可以包括具有至少一个10至20米的墙的房间。在某些示例中,如图2B所示,空间可以包括由视觉障碍(例如,分隔物260,尤其可以包括部分或全部墙、桌子单元或家具物品)分隔的多个空间部分。在图2B中,运动250包括多个运动270、280和290,例如,在图2A描述的多个移动。在图2B中,显示了三个运动;然而,这不是限制性的。在这种情况下,运动可以包括一组相似或不同的运动,例如,选自围绕一形状的周边的点或至少一部分的一组圆形或圆周运动。对于较大的房间,运动可能比对于较小房间描述的那些运动大,例如,圆形运动的直径可能在1米左右。可以控制多个运动,使得至少部分地环绕视觉遮挡物(例如,分隔物260)。例如,从第一移动270获得的数据可以用于检测分隔物260,并且例如通过导航引擎指示越出该分隔物发生的第二运动280。运动的数量和/或不同运动之间的间隔可以取决于空间的大小和/或空间内的物体的位置。在具有至少一个10至20米的墙的房间中,间距可以约1至3米。在某些情况下,可以执行额外移动,直到已经地图构建了空间的预定部分。在图2B的示例中,机器人设备205被配置为依次构成几个小的圆形扫描,移动到其间的新视点,由此,由于遮挡障碍物被绕行,所以显露出空间的其他部分。从所有这些扫描中获得的自由空间信息然后可以合并为一个全局占据图,如在下面的部分中更详细描述的。

示例占据图

图3示出了示例占据图300。该占据图300可以由一个或多个机器人设备105、155存储和/或可以基于与图2A和2B中示出的运动200、250相似的运动来生成。占据图300可以由机器人设备的导航引擎访问,以确定空间的可导航部分。

图3的示例占据图300包括多维网格310。在该图中,占据图300包括10×10个单元320的规则二维网格。在其他示例中,占据图300可以是三维网格,并且/或者包括可替换的单元大小、形状或分辨率。在某些测试示例中,占据图单元与空间的具有100mm的边的正方形区域相关联。图3的占据图300具有网格或单元条目,其指示移动平面内的区域包括自由空间,因此,该区域可由机器人设备导航,或者网格或单元条目指示移动平面内的区域包括物体,因此该区域不能被机器人设备导航。在本示例中,图3的占据图300指示图2A中示出的物体220-A至D的占据。因此,第一组阴影单元330-A指示空间的被物体220-A占据的对应区域部分;第二组阴影单元330-B指示空间的被物体220-B占据的对应区域部分;第三组阴影单元330-C指示空间的被物体220-C占据的对应区域部分;第四组阴影单元330-D指示空间的被物体220-D占据的对应区域部分。没有阴影的单元(例如,由数字320表示的单元)表示自由空间,例如,在房间210内。机器人设备(例如,105、155或205)因此可以使用占据图300来避开图2A中的物体220并导航自由空间。

占据图(例如,如图3所示的二维网格)提供了一种简单而有效的方法,以使机器人设备能够地图构建空间。占据图可以作为矩阵和/或阵列数据结构存储在存储器中。在某些情况下,条目可以是二进制的,例如,指示物体的存在或不存在;在其他情况下,条目可以包括指示占据概率的值(例如,以信念的确定性的形式)。在某些情况下,占据图可以涉及三维空间中的x和y维度。因此,占据可以表示空间内的z平面。该z平面可以与移动平面(例如,地板平面)对齐。在某些情况下,如果对应于网格单元的z维度的至少一部分(例如,x-y空间的区域)被物体占据,则网格单元可以被设置为“占据”。

处理管线示例

在如图2A和2B所示的运动的示例之后,并且在如图3所示的示例占据图之后,现在将描述处理操作的某些示例。该处理操作被配置为拍摄在运动期间捕捉的图像序列并生成占据图。

图4A示意性地示出根据示例的用于生成占据图的处理管线400的某些系统部件。在图4A中,可以包括单目多方向相机装置的相机装置410捕捉图像系列或序列420(每个图像用“I”标记)。在机器人设备的至少一个被指示的移动期间,在多个不同的角度位置处,捕捉这些图像420,例如,图像420可以包括从机器人设备以图2A和图2B所示的圆形或圆周运动移动时记录的视频数据的一部分中取得的视频帧。在视频情况下,图像不必是连续的视频帧;相反,可以包括根据至少一个图像处理标准(例如,满足最小对比度和/或焦点量度)来选择的视频帧的子集。

在图4A中,导航引擎430访问图像420。导航引擎430被配置为处理图像420,以生成占据图440。在一个示例中,导航引擎430被配置成根据图像420序列来确定姿态数据。在这种情况下,姿态数据指示在至少一个被指示的移动期间相机装置410在多个位置处的定位和取向。在一种情况下,使用在图像序列内检测到的一组特征来确定姿态数据。导航引擎430还被配置为通过评估姿态数据和图像420序列的体积函数来估计深度值。每个深度值表示从相机装置410到空间中的物体的距离。导航引擎430然后被配置为处理深度值,以填充针对空间的占据图440。

在某些示例中,相机装置410可以包括被设置为捕捉RGB图像(或视频帧)的RGB相机装置。在一种情况下,相机装置410包括电荷耦合装置(CCD)或互补金属氧化物半导体(CMOS)传感器。在一个实验配置中,使用了PointFlea3相机,配备了CMOS传感器。在这个实验配置中,相机装置配备了RPUC2512低剖面全向镜头,以提供多向成像。

在其他情况下,相机装置410可以包括其他可用的数字装置和/或模拟装置,其中,通过转换模拟信号源,生成图像420。每个图像420可以包括测量数据的二维表示。例如,图像420可以包括记录的像素值的二维阵列或矩阵。在图4A的示例中,所有图像420都具有相同的尺寸,虽然在所有示例中不一定如此。对于给定的分辨率(例如,1280×1024),像素值可以包括红、绿、蓝像素值。在其他示例中,可以使用其他色彩空间,和/或图像420可以包括单色或灰度像素值。在一种情况下,图像数据可以包括压缩的视频流或文件。在这种情况下,可以从流或文件重建图像数据帧,例如,作为视频解码器的输出。在对视频流或文件进行预处理之后,可以从存储器位置检索图像数据。

在一种情况下,相机装置410可以被设置成将图像420存储在耦接的数据存储装置中,例如,形成机器人设备的一部分的固态存储器装置。在另一种情况下,相机装置410可以将图像数据420传输到耦接的计算装置。耦接的计算装置可以例如经由通用串行总线(USB)连接而直接耦接,或者间接耦接,例如,可以通过一个或多个计算机网络传输图像420。在又一种情况下,相机装置410可以被配置为跨一个或多个计算机网络传输图像420,用于存储在网络附接的存储装置中。这种传输可以是无线传输,例如,其他无线网络或连接。图像420可以逐帧地或者批量地(例如,多个帧可以捆绑在一起)存储和/或传输。

在某些情况下,导航引擎430可以形成机器人设备的一部分,例如,如图1A和1B所示。在其他情况下,导航引擎430的至少一部分可以分布,例如,位于一个或多个耦接的计算装置上。例如,这些计算装置可以包括充电站和/或网络耦接的计算资源的一部分。

图4B示出了在某些实现方式中可用于生成占据图440的处理管线450的第二示例。在图4B的示例中,相机装置415包括全向相机装置,例如,如可以使用上面陈述的实验配置来实现的。在这种情况下,相机装置415生成原始全向图像460。例如,这些可以包括与观察到的空间半球相关联的圆形图像。处理管线450包括被配置为接收原始全向图像460的图像处理器470。图像处理器470解包由相机装置415捕捉的原始全向图像460,并输出全景图像425供导航引擎435使用。图像处理器470可以使用相机模型参数来执行解包。解包原始全向图像460,有利于随后的姿态和深度估计操作。在一个示例中,图像处理器470可以被配置为使用查找表来实现解包并且从每个原始全向图像创建球形地图构建的全景图像,用于后续处理。在某些情况下,可以使用子像素插值。解包原始全向图像具有以下优点:图像尺寸很好地符合商业上可用的图形处理单元的存储器,并且每个像素表示球体表面上的统一区域。

图4B的处理管线450还包括相机校准器480。虽然在图4B中示出了图像处理器和相机校准器,但是在其他示例中,可以分开使用图像处理器和相机校准器。相机校准器480被配置为通过处理校准图案485的至少一个捕捉的图像来校准相机装置415。校准图案485可以存在于空间内,例如,作为在该空间内可见的印刷图案或液晶显示器输出。在一种情况下,校准图案485可以存在于机器人设备的充电和/或插接站上。校准图案485可以包括例如黑色和白色方块的棋盘图案。相机校准器480被配置成通过评估检索的校准图案图像特性和所捕捉的图像值的函数来确定相机模型参数,即,建模相机装置415的特性的参数。从校准图案的检索表示490确定检索的校准图案图像属性。在一种情况下,相机校准器480可以被配置为指示捕捉一系列(例如,十个)图像,同时相机装置415四处移动,以覆盖整个视场。在这种情况下,在每个图像上,提供该图案的粗略位置(例如,由用户或基于已知位置,例如,与插接站的给定距离)。然后,将每个图像解包成矩形贴片,并检测校准图案的角。然后,将角的坐标重新计算到原始图像空间。对于所有的图像序列,重复该过程。由此,利用一组点对和初始参数值,可以应用Levenberg-Marquardt非线性优化来最小化相机模型参数的函数。在示例中,相机模型参数可以包括镜面形状参数、径向和切向失真系数以及针孔相机内部参数中的至少一个。诸如旋转矩阵和平移矢量等外部参数也可以形成相机模型参数的一部分;这些可以使用运动来估计,作为由导航引擎435执行的姿态估计的一部分。在某些情况下,这些外部参数可以表示六个自由度。相机模型可以包括适应的Geyer和/或Barreto折反射相机模型,例如,如在C.Gyer的“Catadioptric Projective Geometry:theory and applications”,宾夕法尼亚大学博士论文,2003年以及J.P.D.A.Barreto的“General central projection systems:Modeling,calibration and visual serving”,Coimbra大学博士论文,2004年中所述。这种相机模型可能类似于针孔模型,增加了确定镜头镜的曲率的额外参数。

导航引擎部件的示例

图5示出了可以用于生成占据图的导航引擎510的示例500。导航引擎510可以用于实现上述导航引擎120、170、430和435中的任何一个。导航引擎510接收图像序列520,例如,如在机器人设备的移动期间所捕捉的,如上所述。图像序列520可以包括解包的全向图像425,如参考图4B所述。导航引擎510包括至少三个系统部件:姿态估计器530、深度估计器540和地图生成器550。

姿态估计器530被配置为接收图像序列530并且生成一组姿态估计T。可以为每个接收到的图像520生成姿态估计,并且可以包括旋转矩阵和平移矢量的值,例如,外部相机模型参数。在某些情况下,诸如由图4B中的相机校准器480执行的配置操作还可以确定机器人设备底座/主体到相机装置的变换,例如,表示相机装置和机器人设备底座之间的安装关系。对于某些静态安装,该机器人设备底座/主体到相机装置的变换可被视为恒等变换。姿态估计器530可以被配置为从图像520中提取特征,以匹配图像520序列上的那些特征,并且为图像520捆调整至少一组初始姿态估计,以便生成这组姿态估计T。

深度估计器540被配置为从姿态估计器530接收图像520序列和这组姿态估计T。在某些情况下,对于序列520内的所有图像,姿态估计可能是不可能的。使用具有可用姿态估计的图像,在本示例中的深度估计器540被配置为估计体积函数,以确定深度估计D。在一种情况下,深度估计器540被配置为评估参考图像周围的密集全向成本体积,该参考图像是从图像520序列中选择的。在这种情况下,可以为参考图像的一组像素计算深度值。可以选择使得与来自图像序列520的一组比较图像的亮度差异最小化的深度值。在一个示例中,当评估深度值时,可以忽略某些像素。这可以被认为是对深度值的过滤或选择,以便仅考虑具有针对生成占据图的相关联的高准确度或置信度的深度估计。稍后参考图9A和9B描述用于执行该过滤的一种示例方法。

地图生成器550被配置为接收深度估计D并且填充占据图560。在一种情况下,如图所示,地图生成器550还可以接收图像I和姿态估计T,或者可以访问该数据。在一种情况下,针对参考图像的像素的深度值可以形成深度图。在解包图像的情况下,例如,如参考图4B所描述的,所估计的深度图的每一列(即,深度值的每一列)表示参考相机装置的不同视角或角度位置。如果使用全向相机装置,则深度图可以与解包的球形图像相关联,并且因此,深度图的每一列表示围绕360°视场的一不同视角或角度位置。在一种情况下,地图生成器550可以被配置成针对每列深度值选择最接近的有效深度测量。对于其中成功找到最接近的深度估计的列,则将其用作自由空间区域的边界点。从参考图像姿态估计到这一点,通过检查线到单元交点并增加相交单元的自由空间计数器,一视线将下面的占据网格单元标记为自由空间。例如,可以投射线,该线被认为是从分析的深度图的参考姿态到特定视角处的估计的深度点的射线或视线。为了在占据图中标记单元,可以执行线到单元的相交测试,其中,单元可以表示为空间中的正方形。因此,几何计算可以用于将该线下面的单元标记为自由,并将该线的终点标记为占据的空间,例如,自由空间地图中的边界点。通过整合来自深度图的多个自由空间边界点,在实现占据图560的占据网格中可以地图构建全局自由空间。

在某些情况下,图像序列520包括来自多个移动(例如,如在图2B的示例中)的成批图像。在这种情况下,姿态估计器530和深度估计器540可以对这些批次中的每一个操作。在一个实现方式中,深度估计器540可以被配置为估计与每个批次的参考图像相关联的深度值,其中,批次对应于运动270、280、290中的一个。在这种情况下,也可以从相应批次的图像中选择比较图像。然后,可以由深度估计器540生成均对应于特定批次和移动的多个深度图,并将其传递到地图生成器550。然后,地图生成器550可以被配置为整合来自多个深度图的最接近的深度估计,表示空间的不同部分的地图,以填充该空间的全局占据图。

系统部件510可以被视为以能够实时地生成占据图而没有繁重的计算需求的方式组合“稀疏”和“密集”图像处理。在这种情况下,姿态估计器530可以被视为应用“稀疏”处理,例如,利用关键点或提取的特征的处理。与可能包含大量体素来建模空间的全体积模型相比,这些关键点和提取的特征具有有限的数量。基于提取、匹配和捆调整特征的“稀疏”处理与能够相提并论的“密集”的姿态估计技术相比,具有更快速的处理的优点。使用参考图像,能够确定相对“密集”的深度图,例如,其中,逐个像素地确定深度值,同时减少计算负载。此外,使用经过滤的深度值或“半密集”深度图,进一步加快了处理速度。基于深度值的准确度或置信度的过滤或“半密集”深度图进一步解决了地图构建具有无纹理区域的空间的问题。在这些情况下,无纹理的区域(例如,空房间的墙壁)可能具有用于深度估计的很少的信息内容。这可能会导致不可靠的估计,这可以导致不正确的占据图。然而,在某些情况下,过滤这种深度值,因此,其不用于生成占据图。

在一种情况下,导航引擎510可以经由图像获取接口获取图像520序列。这可以耦接至先前示例的相机装置110、160、410、415。图像获取接口可以包括诸如USB或网络接口等硬件接口以及实现软件驱动器的计算机程序代码。在一种情况下,导航引擎510可以被配置为对流数据(例如,实时视频数据)进行操作。在另一种情况下,导航引擎510可以通信地耦接至相机装置,并且被设置成将从相机装置接收到的图像520存储在持久和非持久数据存储器中的一个或多个中,例如,数据帧可被复制到存储器中和/或可被存储在硬盘驱动器或固态存储器中。在另一种情况下,图像520可以以给定的文件格式存储在导航引擎510的外部,例如,在数据存储装置中可访问的一个或多个文件中。在这种情况下,导航引擎510可以使用或实现文件系统的一部分,以至少从该一个或多个文件中读取数据。导航引擎510可以包括专用处理电子设备和/或可以通过由至少一个计算装置的处理器执行的计算机程序代码来实现。在图1A和1B所示的情况下,导航引擎510可以包括一个或多个嵌入式计算装置。这可以包括与存储器关联操作的至少一个处理器,以执行加载到计算机可读介质上的计算机程序代码。该介质可以包括诸如可擦除可编程只读存储器等固态存储器,并且计算机程序代码可以包括固件。在其他情况下,导航引擎510可以包括适当配置的片上系统、专用集成电路和/或一个或多个适当编程的现场可编程门阵列。在一种情况下,导航引擎510可以通过移动计算装置和/或桌面计算装置中的专用处理电子设备和/或计算机程序代码来实现;在这种情况下,导航引擎510可以被配置为接收从机器人设备传输的图像和/或将生成的占据图传输回机器人设备。分布式计算的其他实现方式也可以在不偏离本文描述的示例的情况下使用。在一种情况下,导航引擎510可以由执行计算机程序代码的一个或多个图形处理单元全部或部分地实现,与先前的情况一样或者替代先前的情况。在某些情况下,导航引擎510可以例如,在图形处理单元的多个处理器和/或内核上,通过并行实现的一个或多个功能来实现。

确定物体占据的示例方法

图6示出根据示例的用于确定可由机器人设备导航的空间的物体占据的方法600。该方法可以由前述导航引擎示例或任何其他合适的计算装置来应用。

在方框610,从耦接至机器人设备的单目多方向相机装置获得图像数据。如在先前的示例中那样,单目多方向相机装置被设置为从多个视点或角度位置捕捉图像数据。图像数据包括图像序列,例如,在机器人设备的移动平面内具有差异(例如,针对位于地板的装置的水平差异)的一组视频帧。

在方框620,确定与图像数据对应的姿态数据。姿态数据表明单目多方向相机装置的位置和取向,例如,达六个自由度的旋转和平移参数值。在某些情况下,自由度可能受到限制,例如,在某些实现方式中,可以假设移动驻留在地板平面内,因此,可以不沿着z轴平移,并且旋转可以被限制为围绕z轴。在本示例中,使用在图像数据内检测到的一组特征来确定姿态数据。

在方框630,通过评估来自方框620的姿态数据和来自方框610的图像数据的体积函数来估计一组深度值。在这种情况下,每个深度值表示从单目多方向相机装置到空间中的物体的距离。

最后,在方框640,处理深度值,以填充该空间的物体占据图。物体占据图可由机器人设备用于导航该空间。例如,在一种情况下,物体占据图可以用于确定机器人设备通过空间的空置区域的导航路径,例如,以避开占据网格中被标记为占据的区域。在一种情况下,机器人设备可以包括清洁元件。在这种情况下,该方法可以包括使用物体占据图来确定用于空间的空置区域的清洁模式,其中,清洁模式表明清洁元件将应用于空间内的位置。例如,清洁模式可以表明清洁元件将应用于自由空间的区域(例如,在占据网格上未被标记为占据的区域)。

图7示出了在某些实现方式中可以用于实现方框620的方法700。

在方框710,在方框610处获得的图像序列中的多个图像中的每个图像中,检测一个或多个特征。在一种情况下,可以用FAST(来自加速分段测试的特征,Fearures from Accelerated Segment T)角检测器来检测特征,如E.Rosten和T.Drummond在2006年Proceedings of the European Conference on Computer Vision(ECCV)的“Machine learning for high speed corner detection”中所述。这提供适合于实时视频处理的高速特征检测。可以在例如视频数据的每一帧或图像的选定子集(例如,视频馈送的每第x帧)的每个图像中检测特征。可以使用尺度不变特征变换(SIFT)描述子来描述特征,例如,如D.G.Lowe在International Journal of Computer Vision(IJCV),60(2):91-110,2004中的“Distinctive image features from scale invariant keypoints”中所述。可以使用其他特征检测器和/或描述子。

在方框720,跨多个图像对来自框720的检测到的特征进行匹配,以确定图像数据内的一组地标。在这种情况下,地标包括图像之间的对应点,例如,地标可以涉及当机器人设备在空间周围移动时,在几个连续的图像中捕捉该空间内的物体的静态部分(例如,一件家具的角、墙上的照片或椅子的一部分)。该方框可以包括基于特征的运动估计操作,该操作迭代运行,并且对于每个新图像(例如,视频数据的新帧),将新图像中新检测到的特征与现有地标特征的列表或地图匹配。如果没有找到匹配,例如,如果检测到的特征包括全新的特征,则可以添加列表或地图中的新地标条目。基于图像平面内的再投影误差和SIFT描述子距离,可以在针对当前地标列表或地图的内部过滤环路中匹配特征。

在方框730,联合优化图像序列的一组相机姿态估计和一组地标位置估计。然后,在图6中的方框620输出的姿态数据包括在联合优化之后的一组相机姿态估计。联合优化可以包括利用在相机姿态估计、地标位置及其相应的匹配特征之间施加约束的至少视觉部分最小化能量函数。能量函数可以包括表明在图像j中是否看见特定特征i的二元项。能量函数的视觉部分可以评估预测特征值(例如,与图像j的特征i相关联的预测像素值)和实际特征值(例如,与图像j的特征i相关联的实际像素值)之间的差异。可以在n个特征和m个图像上评估这种差异。可以基于应用于地标位置的旋转矩阵减去应用于平移矢量的旋转矩阵的、使用相机参数的投影,来计算预测特征值。这可以使用图像序列中的每个图像的初始姿态估计来应用,每个初始姿态估计包括对于图像的旋转矩阵和平移矢量的初始值。视觉部分可以使用Huber范数对差异进行归一化。

在实现方式中,来自机器人设备的里程计数据可以用于约束优化函数。里程计是使用来自运动传感器的数据来估计位置随时间的变化。里程计数据可能源自机器人设备的至少一个移动致动器,例如,跟踪图1A和1B中的轮子115或轨道165的位置。优化函数可以包括上述能量函数。在这种情况下,能量函数可以具有额外的里程计部分(例如,里程计项)。里程计部分可以评估连续图像之间的平移矢量的变化与捕捉连续图像的次数相关的里程计矢量的变化之间的差异。这等同于考虑如由平移矢量所表明的移动与如里程计数据所表明的移动之间的差异,在两个连续图像的捕捉之间发生移动(例如,视频数据的图像或帧之间的距离)。即使未使用图像捕捉来捕捉里程计,也可以应用该方法,这减少了对高级控制处理的需要。另外或可替换地,里程计数据(如果可用的话)可以用于初始化一个或多个姿态估计,例如,在联合优化内。与精度矩阵的标准偏差可用于对能量函数中的两项都进行加权。使用柯西损失函数可以对里程计部分的差异进行加权并使其稳健。所描述的能量函数可以使用迭代Levenberg-Marquardt函数来优化,通过自动微分来计算雅可比行列式。

在一个实现方式中,联合优化可以包括捆调整。捆调整可以是由BillTriggset等人在“Bundle adjustment-a modern synthesis”,Vision algorithms:theory and practice,Springer Berlin Heidelberg,2000,298-372中所描述的。这可能会使用非线性优化。

在某些情况下,特征可以首先通过推定匹配来匹配。然后,可以对这些推定匹配进行初步的捆调整。如果其重投影误差太大,则可以拒绝推定匹配。在进行最后的捆调整之前,这种选择和拒绝可以重复多次。在一种情况下,为了生成新地标,图像分成多个贴片(例如,16个)。然后,可以按照以下方式来选择关键点形式的特征,使得在每个贴片中保留至少预定义数量的特征(例如,5个),每个与所有其他至少相距给定数量的像素(例如,10个像素)。这种特定的操作可以有助于高质量特征的统一分配,用于跟踪。新地标可以被初始化为给定的距离(例如,7.5m,取决于环境),并且当稍后匹配时,其被捆调整到正确的深度。

图8示出了在某些实现方式中可用于实现方框630的另一方法800。方法800可以与方法700一起或者独立地实现。

在方框810,从方框610处获得的图像序列确定参考图像。在一种情况下,如果沿着圆形或圆弧移动路径捕捉图像,则可以从圆形或圆弧的中间附近选择参考图像,使得存在对应于参考图像的任一侧的额外图像(例如,在所确定的参考图像之前和之后所捕捉的)。在其他情况下,例如,使用全向和/或全圆运动的那些情况下,参考图像可以从所捕捉的图像中随机选择或者基于一个或多个图像质量量度来选择。在方框820,确定与参考图像重叠的一组比较图像。重叠可被定义为比较图像中的至少一个像素包含也在参考图像的像素中从一不同取向和/或位置(尽管该像素的位置可以在参考图像和比较图像之间变化)成像的例如来自空间的一部分的图像数据。在方框830,确定参考图像的图像值与来自这组比较图像的投影图像值之间的光度误差。光度误差可以基于归一化的像素光度误差。

每个投影图像值包括使用参考图像的姿态数据和比较图像的姿态数据将比较图像投影到参考图像的视点,例如,将比较图像数据重投影到参考图像的视点。在方框840,选择使光度误差最小化的深度值。例如,比较图像的投影可以包括标量深度项d。光度误差可涉及从参考图像取得的像素值中减去使用深度项的(重)投影像素值、相机参数和姿态估计。这可以使用Huber范数进行归一化,并且对每个比较图像进行评估,总误差是这组比较图像的误差的总和。光度误差可以通过许多成功(重)投影来加权。为了选择深度值,可以搜索针对不同深度值d的一组光度误差,直到定位最小光度误差,其中,针对像素选择与最小光度误差相关联的深度值。

方法800可以被视为使用“成本体积”,其中,每个体素累积图像之间的平方光度误差。方法800可以被视为R.A.Newcombe、S.Lovegrove和A.J.Davison在Proceedings of the International Conference on Computer Vision(ICCV),2011年,在“DTAM:Dense Tracking and Mapping in Real-Time”中所描述的方法的适应。

在某些情况下,当应用例如图8中(800)方法时,可以应用正则化成本项来获得平滑且完全密集的深度图。这种正则化可以使用Huber Rudin-Osher-Fatemi(ROF)全变量(TV)L1正则化矩阵来执行。然而,这可能会导致某些图像区域对深度估计的条件不良的问题。例如,这可能是图像区域缺乏纹理的情况。甚至在应用正则化时,这些图像区域也可能导致不可靠的深度值估计。基于此,在某些实现方式中,为估计的深度值确定一个或多个方差量度;然后,使用这些方差量度来过滤所估计的深度值,其中,基于过滤的深度值填充物体占据图。这然后用于仅提取有用或准确的深度信息,例如,以“半密集”表示的形式,其中,仅使用深度值的子集。这可以减轻执行正则化的需要,从而简化了方法并减少了计算需求。还使用诸如Huber ROF TV L1正则化矩阵等正则化矩阵,可能导致在具有大量无纹理区域的空间(例如,表示(空)房间中的空白墙壁)中性能较差和/或导致过度平滑。通过使用如本文所述的“半密集”方法,仅使用具有高置信度或可靠性的准确(例如“可信”)测量。甚至在具有缺乏(例如,由像素变化表示)实质性纹理的大面积的空间中(例如,空房间或具有空白墙壁或分隔物的房间),这也导致良好的性能。在测试中发现,许多环境导致大部分三维深度图具有不可靠的测量。通过使用本示例的方法,这些不可靠的测量不用于填充占据图。

在图8的示例中,过滤或选择估计的深度值可以包括仅选择为参考图像计算的像素深度值的子集。在某些情况下,方差量度包括与参考图像相关联的像素深度测量的标准偏差。在这些情况下,过滤所估计的深度值,包括:使用具有低于预定义阈值的标准偏差值的深度估计。

图9A示出了示例图像部分900。图像部分900可以形成如本文所述的解包的全景图像(例如,参考图像)的一部分。图像部分900具有两个突出显示的区域:第一区域910和第二区域920。第一区域910相对平滑且无纹理(例如,低质感);其捕捉桌面单元的墙壁的背面的图像。因此,第一区域910可能不会生成准确的深度测量。第二区域920具有可用于生成准确的深度测量的细节(例如,高纹理)。在图9A中,第二区域920捕捉书架的一部分的图像。这两个区域910、920在其相应的成本体积深度采样中具有不同的能量响应。

在一种情况下,可以通过将图形拟合到成本函数来估计深度估计的标准偏差。图9B示出了图9A的两个区域910、920的成本函数的输出930。y轴上的成本函数值对于x轴上的深度值(例如,d或z值)绘制。示出了第一区域910的第一输出940。可以看出,第一输出940具有较小的成本函数值,以近似线性的方式具有从大约0.025到0.005的范围。然后,显示第二区域920的第二输出950。可以看出,第二输出950不同于第一输出940:具有大约0.1的成本值的变化,成本函数的下降在z值大约20附近。

在上述方法中,可以通过选择成本函数的最小值来估计深度值。如在图9B中可以看出的,对于相对平坦的第一输出940来说这是困难的。然而,对于第二输出950,在深度值20附近存在明显的最小值。通过将抛物线函数拟合到第一输出940和和第二输出950,可以确定可以用于深度估计的最小值以及可以用于过滤深度估计的标准偏差。此外,拟合抛物线函数允许子像素深度分辨率(例如,因为抛物线的最小值可以被选为连续值)。图9B示出了拟合到第一输出940的第一抛物线945,拟合到第二输出的第二抛物线955。通过将二次函数拟合到成本函数的输出,可以按照函数(例如,y=ax2+bx+c)的‘a’参数形式确定抛物线的形状。由此,可以将逆深度域中的像素的标准偏差计算为‘a’参数的平方根的倒数。然后,这可以通过除以深度估计的平方(例如,与拟合的二次函数的最小值相关联的子像素深度值)而被转换成深度域中的标准偏差。尽管在这个示例中,在其他示例中使用二次/抛物线函数,但是可以替代地拟合其他适当的函数,这取决于图像的性质。在计算深度域中的标准偏差之后,可以应用阈值处理用于随后的占据图确定,其中,丢弃(例如,滤出)标准偏差高于给定阈值的深度估计。在一种情况下,可以应用阈值处理,来保留特定百分比的图像区域(例如,50%)。在过滤深度值之后,例如,与参考图像的像素相关联的深度值,深度值的子集保留,例如,对应于所述像素的子集,从而产生对于自由空间推断更可靠的“半密集”深度图。在某些实现方式中,深度可以按照逆形式表示和/或深度范围可以采样到多个成本体积仓内(例如,在一个测试示例中,64个)。

如上所述的深度图可以形成图6中的方框640处的处理的基础。使用一个或多个深度图,可以推断参考图像相机姿态周围的自由空间区域的量以填充占据图。在一种情况下,在占据图将用于推断相对小的机器人设备(例如,如图1A、1B、2A和2B所示)的可驱动或可导航的自由空间的情况下,方框640可以以低于地平线行的列值开始。这在桌子或其他悬挂式家具下方存在自由空间的情况下可能是有用的。如果在地平线下方没有发现有效的深度测量,则可以检查地平线上方的列值,假设某些垂直壁在相机高度处可能是空白的,但是具有更高的有用纹理。如果在整个列中不存在幸免于标准偏差阈值处理的深度估计值,则可以选择默认或故障安全深度值(例如,0.5m)。如果选择了默认值或故障安全值,则空间的相关区域可能不是真正测量的,而是机器人的宽度的安全通道加上一些余量(例如,由本地传感器提供)表示我们可以将其从占据图中移除。

在测试情况下,使用计算统一装置体系结构(CUDA)兼容的图形处理单元来执行在本文描述的图形处理。图像序列中的图像的数量可以变化,例如,可能是30、100或160个图像。使用方差过滤的某些测试示例产生比能够相提并论的图像梯度阈值处理更好的结果,其中,发现后者产生噪声输出并留下水平边缘,其中,深度估计没有实际的差异。另一方面,方差过滤方法靠近更接近相机装置(在成本体积中具有更精细的深度采样)并表现出垂直边缘的更好估计区域。甚至在新涂漆的空房间(例如,缺乏有用的纹理),测试地图构建从单个小的圆形运动揭露房间的超过50%的自由空间。

在某些情况下,可以为一个或多个移动选择多个参考图像。在这些情况下,可以基于这些参考图像生成多个(过滤的)深度图。其中的每一个都可以整合到单个占据图中。在具有多个移动的情况下,可以全局地捆调整整个轨迹,以确定全局一致的姿态,例如,关于所有运动的图像序列。这还允许在每个移动位置恢复的自由空间信息逐渐融合,最终覆盖整个房间的自由空间。在某些情况下,可能重复移动,直到揭露预定量的空间。在本文描述的某些示例在现实世界的条件下以及与LADAR系统相比表现良好,尽管需要具有一小部分成本的设备。因此,在本文讨论的这种方法可以被改装到具有相机的现有机器人设备内,而不需要(大量的)硬件变化。在本文描述的方法可以在低成本的嵌入式平台上运行,并且因此适用于小型、低成本的机器人设备,例如,家用机器人。通过能够使用(单目)RGB相机进行操作,可以在实际成本、尺寸、功率和/或分辨率约束内使用本文的示例。

在某些情况下,全向相机在扩展的移动期间提供宽视场覆盖范围和对应关系的容易性,而所描述的示例使得当使用这种装置时可能经历的较低角分辨率和难以校准的投影特性的影响最小化。某些示例还克服了使用多方向相机所发现的非常规几何实现工作方法的挑战。能够相提并论的方法已经考虑从多个相机生成高分辨率全景图像,然而,这些对于由机器人设备进行导航不太有用。在本文描述的某些示例中,基于特征的匹配和捆调整过程提供每个图像的姿态的准确估计。然后,这些用于构建全向的光一致性成本体积,例如,基于100至160帧。成本体积用于生成全向深度图,该全向深度图可以转化为密集的三维顶点图。本文描述的某些示例使得能够在具有无纹理区域的空间中在室内进行被动重构,并且使得甚至在应用正则化时其中也具有深度不可靠的不良估计的区域的全向深度图(以及相应的密集三维几何估计)的问题最小化。在这些示例中,深度标准偏差可以根据成本体积数据和应用于仅提取半密集高质量信息的阈值来估计。此外,这个过程避开了正规化的需要。为了在室内导航中使用,在该估计之后,可以减少到二维和可见性推理,其中,可以估计二维规则网格中的单元的占据。

虽然某些能相提并论的方法允许进行深度估计,但这些方法通常需要先进的硬件,例如,深度相机、激光扫描仪或立体视觉系统。本文描述的某些示例克服了使用标准RGB无源相机装置提供用于导航的信息的挑战。此外,大多数能相提并论的方法(即使并非不可能)难以对于嵌入式计算装置实时地实现。相反,本文描述的某些示例提供了可以用于实时地图构建和导航的精确的占据图。

示例机器可读指令

在本文描述的某些系统部件和方法可以通过可存储在非暂时性存储介质上的计算机程序代码来实现。图10示出了包括至少一个处理器1010的系统的特定示例1000,处理器1010被设置为从计算机可读存储介质1020检索数据。该系统可以包括如上所述的移动或机器人设备的一部分。计算机可读存储介质1020包括存储在其上的一组计算机可读指令1030。本示例中的计算机可读存储介质1020还被配置成存储图像数据1040的帧和占据图1050。占据图1050可以包括占据图,如图3中示意性示出的占据图。在其他示例中,部件1030、1040和1050可以存储在单独的介质中。在使用时,至少一个处理器1010被配置为将指令1030加载到存储器中,用于处理。指令1030被设置成促使至少一个处理器1010执行一系列活动。这些活动包括促使处理器在指令1060处接收来自单目多方向相机的帧序列1040。在该示例中,多方向相机被设置为从多个角度位置捕捉每个帧的图像数据,在空间的移动平面内的不同角度位置处捕捉帧的序列。这些活动进一步包括促使处理器通过在帧序列上匹配检测到的特征来在指令1065处确定针对每个帧的相机的位置和取向估计。然后,指令1070包括捆调整相机的位置和取向估计以及帧的序列上的检测到的特征,以生成相机的优化的一组位置和取向估计。

在捆调整之后,指令1075导致动作以根据帧序列确定参考帧。然后,指令1080导致动作,以评估参考帧的像素值与来自与参考帧重叠的一组比较图像的投影像素值之间的光度误差函数。在这种情况下,所述投影像素值是距相机的物体距离和相机的优化的一组位置和取向估计的函数。经由指令1085,处理器1010被配置为基于估计的光度误差函数来确定与参考帧的不同像素列对应的不同角位置的物体距离。经由指令1090,然后指示处理器基于所确定的物体距离在空间的移动平面内生成可导航区域的地图。因此,机器可读指令1030可用于执行上述某些示例,例如,作为机器人设备的固件的一部分。

在某些情况下,单目多方向相机包括全向相机,并且每个帧包括解包的全向图像。全向相机可以包括全景环形透镜。可以从在空间内周向移动的移动摄像机接收帧序列。

上述示例应被理解为说明性的。设想了进一步示例。在一种情况下,除上述示例中描述的(RGB)图像传感器之外,机器人设备还可以包括深度传感器。深度传感器可以包括单目多方向相机装置的一部分。在这种情况下,帧序列可以包括图像数据和深度数据。然后,深度数据可与图像数据一起使用,以估计深度值,即,确定物体距离。例如,深度数据可以用作体积函数内的额外约束。深度传感器可以用于提供深度图像或点云以及所描述的单目图像。应当理解,关于任何一个示例描述的任何特征可以单独使用,或者与描述的其他特征组合使用,并且也可以与任何其他示例或者任何其他示例的任何组合的一个或多个特征组合使用。此外,在不脱离在所附权利要求书中限定的本发明的范围的情况下,也可以采用以上没有描述的等同物和修改。

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