增强现实映射系统和相关方法与流程

文档序号:24892760发布日期:2021-04-30 13:20阅读:124来源:国知局
增强现实映射系统和相关方法与流程

相关申请的交叉引用

本申请要求2018年9月14日提交的第16/131,066号美国申请的权益,该申请的公开内容通过引用整体结合于此。

背景

增强现实(ar)设备通常用计算机生成的信息来增强用户的真实世界环境。例如,ar设备可以通过将视觉信息叠加到用户的正常视图上来改变用户对他或她的真实世界环境的感知。通过这样做,ar设备可以为最终用户提供沉浸式体验,而不会完全取代用户对其现实世界环境的看法。

ar设备可用于游戏和其他互动娱乐应用。例如,ar应用经常显示虚拟对象,就像虚拟对象在现实世界中一样。然后,用户可以与虚拟对象进行交互。然而,随着ar设备变得越来越普遍,用户也可能希望使用ar技术来进一步增强他们对现实世界环境的感知。

概述

本发明由独立权利要求限定。在从属权利要求和以下描述中具体说明了进一步的实施例。根据本发明的实施例在所附权利要求中具体公开,涉及计算机实现的方法、系统和计算机可读介质,其中在一个权利要求类别(例如计算机实现的方法)中提到的任何特征也可以在另一个权利要求类别(例如系统)中要求保护。所附权利要求中的从属关系或往回引用仅出于形式原因而选择。然而,也可以要求保护由对任何前面的权利要求的有意往回引用(特别是多项引用)而产生的任何主题,使得权利要求及其特征的任何组合被公开并且可被要求保护,而不考虑在所附权利要求中选择的从属性。可以被要求保护的主题不仅包括如在所附权利要求中阐述的特征的组合,而且还包括在权利要求中的特征的任何其他组合,其中,在权利要求中提到的每个特征可以与在权利要求中的任何其他特征或其他特征的组合相结合。此外,本文描述或描绘的实施例和特征中的任一个可以在单独的权利要求中和/或以与本文描述或描绘的任何实施例或特征的任何组合或以与所附权利要求的任何特征的任何组合被要求保护。

如将在下面更详细描述的,本公开描述了一种ar映射系统,其能够基于来自多个ar设备的输入来映射现实世界环境。在一个示例中,用于执行这种任务的计算机实现的方法可以包括:(1)从环境中的多个设备接收与环境相关联的实时数据,以及(2)从实时数据确定环境的当前映射数据和当前对象数据。当前映射数据可以包括环境的坐标数据,并且当前对象数据可以包括由多个设备检测到的环境中的对象的状态数据和关系数据。该方法还可以包括(3)确定当前映射数据和包括环境特征的基线地图(baselinemap)数据之间的映射增量,以及(4)确定当前对象数据和事件图之间的对象增量。事件图可以包括环境中对象的先前状态数据和先前关系数据。此外,该方法可以包括(5)基于映射增量更新基线地图数据并基于对象增量更新事件图,以及(6)向多个设备发送更新的基线地图数据和更新的事件图数据。

在一些示例中,事件图的状态数据可以包括环境中对象的时空状态数据,其指示环境中对象随时间的位置数据。事件图的关系数据可以包括链接时空状态数据的节点的转换数据。转换数据可以对应于指示环境中的对象之间的交互的事件。

在一些示例中,基于对象增量更新事件图可以进一步包括将对象增量中的对象识别为事件图中的对象,基于来自对象增量的状态数据在事件图中为所识别的对象创建新节点,以及基于来自对象增量的关系数据在事件图中将新节点与所识别的对象的先前节点相链接。

在一些示例中,基线地图数据可以包括环境中的平面图(floorplan)、墙壁、天花板、结构特征或静态家具物品中的至少一个。在一些示例中,环境中的对象可以包括静物(inanimateobject)或人中的至少一个。

在一些示例中,人的状态数据可以包括头部姿势、眼睛状态、音频数据、手状态、呼吸率或心率中的至少一个。在一些示例中,静物的状态数据可以包括对象类型、实例标识、姿势或属性中的至少一个。

此外,相应的ar映射系统可以包括一个或更多个处理器和存储器设备,该存储器设备包括指令,当该指令被一个或更多个处理器执行时,使得该系统从环境中的多个设备接收与该环境相关联的实时数据。这些指令还可以使系统根据实时数据确定环境的当前映射数据和当前对象数据。当前映射数据可以包括环境的坐标数据,并且当前对象数据可以包括由多个设备检测到的环境中的对象的状态数据和关系数据。这些指令还可以使系统确定当前映射数据和包括环境特征的基线地图数据之间的映射增量,并确定当前对象数据和事件图之间的对象增量。事件图可以包括环境中对象的先前状态数据和先前关系数据。这些指令还可以使系统基于映射增量更新基线地图数据,基于对象增量更新事件图,并将更新的基线地图数据和更新的事件图数据发送到多个设备。

在一些示例中,事件图的状态数据可以包括环境中对象的时空状态数据,其指示环境中对象随时间的位置数据,并且事件图的关系数据可以包括链接时空状态数据的节点的转换数据。转换数据可以对应于指示环境中的对象之间的交互的事件。

在一些示例中,用于基于对象增量更新事件图的指令还包括用于将对象增量中的对象识别为事件图中的对象、基于来自对象增量的状态数据在事件图中为所识别的对象创建新节点、以及基于来自对象增量的关系数据在事件图中将新节点与所识别的对象的先前节点相链接的指令。

在一些示例中,基线地图数据可以包括环境中的平面图、墙壁、天花板、结构特征或静态家具物品中的至少一个。在一些示例中,环境中的对象可以包括静物或人中的至少一个。人的状态数据可以包括头部姿势、眼睛状态、音频数据、手状态、呼吸率或心率中的至少一个,静物的状态数据可以包括对象类型、实例标识、姿势或属性中的至少一个。

在一些示例中,上述方法可以被编码为计算机可读介质上的计算机可读指令。例如,计算机可读介质可以包括一个或更多个计算机可执行指令,当由计算设备的至少一个处理器执行时,这些指令可以使得计算设备(1)从环境中的多个设备接收与环境相关联的实时数据,以及(2)从实时数据确定环境的当前映射数据和当前对象数据。当前映射数据可以包括环境的坐标数据,并且当前对象数据可以包括由多个设备检测到的环境中的对象的状态数据和关系数据。这些指令还可以使计算设备(3)确定当前映射数据和包括环境特征的基线地图数据之间的映射增量,以及(4)确定当前对象数据和事件图之间的对象增量。事件图可以包括环境中对象的先前状态数据和先前关系数据。这些指令还可以使计算设备(5)基于映射增量更新基线地图数据,并基于对象增量更新事件图,以及(6)向多个设备发送更新的基线地图数据和更新的事件图数据。

在一些示例中,事件图的状态数据可以包括环境中对象的时空状态数据,其指示环境中对象随时间的位置数据,并且事件图的关系数据可以包括链接时空状态数据的节点的转换数据。在一些示例中,转换数据可以对应于指示环境中的对象之间的交互的事件。

在一些示例中,基于对象增量更新事件图可以进一步包括将对象增量中的对象识别为事件图中的对象,基于来自对象增量的状态数据在事件图中为所识别的对象创建新节点,以及基于来自对象增量的关系数据在事件图中将新节点与所识别的对象的先前节点相链接。

在一些示例中,基线地图数据可以包括环境中的平面图、墙壁、天花板、结构特征或静态家具物品中的至少一个。在一些示例中,环境中的对象可以包括静物或人中的至少一个。人的状态数据可以包括头部姿势、眼睛状态、音频数据、手状态、呼吸率或心率中的至少一个,静物的状态数据可以包括对象类型、实例标识、姿势或属性中的至少一个。

根据本文描述的一般原理,来自上述和下述实施例中的任何一个的特征可以彼此结合使用。通过结合附图和权利要求阅读以下详细描述,将会更全面地理解这些和其他实施例、特征和优点。

在一个实施例中,计算机实现的方法可以包括,特别是在服务器处,从在环境中的多个设备,特别是从多个计算设备,接收与该环境相关联的实时数据。该方法还可以包括,特别是在服务器处,从实时数据中确定环境的当前映射数据和当前对象数据,其中当前映射数据可以包括环境的坐标数据,并且当前对象数据可以包括由多个设备检测到的环境中的对象的状态数据和关系数据。该方法还可以包括,特别是在服务器处,确定当前映射数据和可以包括环境特征的基线地图数据之间的映射增量。该方法还可以包括特别是在服务器处确定当前对象数据和事件图之间的对象增量,其中事件图可以包括环境中对象的先前状态数据和先前关系数据。该方法还可以包括特别是在服务器处,基于映射增量更新基线地图数据,并且可以基于对象增量更新事件图。该方法可以进一步包括,特别是从服务器将更新的基线地图数据和更新的事件图数据发送到多个计算设备。

在一个实施例中,该方法可以包括环境中的多个设备,特别是多个计算设备,可以包括传感器,诸如照相机、麦克风和能够检测环境中的特征和/或对象的其他传感器。

在一个实施例中,环境中的多个设备,特别是多个计算设备,可以使用一个或更多个传感器收集实时数据,并且可以通过一个或更多个网络通信地耦合到一个或更多个服务器,其中网络可以包括通过一个或更多个物理连接的任何类型或形式的通信网络。

在一个实施例中,实时数据可以包括视频数据、音频数据、时间戳和/或基于来自计算设备的传感器数据的其他数据。

在一个实施例中,当前映射数据和当前对象数据可以由映射系统确定,该映射系统可以包括人工智能代理。

在一个实施例中,状态数据可以指描述对象关于属性和/或情况的状况的数据。

在一个实施例中,关系数据可以指可以描述对象之间的关系的数据,其中对象之间的关系可以包括例如对象之间的交互,状态变化可以由对象、组合和/或对象之间的其他关联引起,其中交互可以包括例如拿起和/或放下、携带、放置、附着、看、说、听、触摸等。

在一个实施例中,关系数据可以描述对象状态的变化。

在一个实施例中,状态数据可以进一步用于确定关系数据。

在一个实施例中,可以相对地定义映射增量,例如通过识别哪些特征已经改变并确定到它们的新坐标的平移。

在一个实施例中,对象增量可以由状态和关系相比于事件图中的先前状态和先前关系的变化来定义。

附图简述

附图示出了多个示例性实施例,并且是说明书的一部分。这些附图连同下面的描述一起展示并解释了本公开的各种原理。

图1是根据本公开的方面的用于ar映射的示例性方法的流程图。

图2是根据本公开的方面的ar映射系统的示例性系统的框图。

图3是根据本公开各方面的ar映射系统的示例性网络的框图。

图4是根据本公开各方面的ar映射系统的示例性流水线的示意图。

图5a-图5b是根据本公开的方面的ar映射系统的示例性映射层。

图6是根据本公开的方面,对应于ar映射系统的事件图的图。

图7是根据本公开的方面的具有更新数据的图6的事件图。

在所有附图中,相同的参考标记和描述表示相似但不一定相同的元件。虽然本文所述的示例性实施例容许各种修改和替代的形式,但是特定的实施例在附图中作为示例被示出并且在本文将被详细描述。然而,本文描述的示例性实施例并不旨在受限于所公开的特定形式。更确切地,本公开覆盖了落入所附权利要求的范围内的所有修改、等同物和替代物。

示例性实施例的详细描述

本公开总体涉及ar映射系统。如下文将更详细解释的,本公开的实施例可以包括从多个设备接收与现实世界环境相关联的实时数据。ar映射系统可以基于实时数据来确定环境的当前映射数据和当前对象数据。ar映射系统然后可以使用当前映射数据和当前对象数据来更新基线地图数据和事件图。通过聚集从多个设备接收的实时数据,ar映射系统可以提供包括环境中的对象的改进的映射能力。该系统还可以通过提供用于聚集实时数据的有效系统和用于表示现实世界对象和它们之间的交互的数据的改进存储来改进计算设备的功能。该系统可以通过提供能够实时感知环境中的对象的系统来进一步改进映射技术。此外,系统可以通过聚集来自多个ar设备的数据来增强每个ar设备,从而改进ar技术。

下面将详细描述更新图1中的ar映射系统的示例性过程。图2描绘了示例性ar映射系统。图3描绘了ar映射系统的示例性网络环境。图4描绘了ar映射系统的示例性数据流水线。图5a-图5b描绘了对应于由ar映射系统维护的数据的示例性层。图6-图7描绘了ar映射系统的示例性事件图。

图1是用于更新ar映射系统的示例性计算机实现的方法100的流程图。图1所示的步骤可以由任何合适的计算机可执行代码和/或计算系统(包括图2和/或图3所示的系统)来执行。在一个示例中,在图1中所示的步骤中的每一个可以表示算法,其结构包括多个子步骤和/或由多个子步骤表示,将在下面更详细地提供子步骤的示例。

如图1所示,在步骤110,本文描述的一个或更多个系统可以从环境中的多个设备接收与该环境相关联的实时数据。

在一些实施例中,术语“实时”可以指没有显著和/或不可避免的延迟而发生的操作。实时操作可能受到例如设备传感器处理速度、网络通信速度、系统处理速度等的限制。实时数据可以包括视频数据、音频数据、时间戳和/或基于来自环境的传感器数据的其他数据。

本文描述的系统可以以多种方式执行步骤110。图2是用于维护ar映射系统的示例系统200的框图。如该图所示,示例系统200可以包括用于执行一个或更多个任务的一个或更多个模块202。如下文将更详细解释的,模块202可以包括接收模块204、当前数据模块206、映射增量模块208、对象增量模块210、更新模块212和发送模块214。尽管被示为独立的元件,但是图2中的一个或更多个模块202可以代表单个模块或应用的部分。

在某些实施例中,图2中的一个或更多个模块202可以表示一个或更多个软件应用或程序,当由计算设备执行时,这些软件应用或程序可以使计算设备执行一项或更多项任务。例如,如将在下面更详细描述的,一个或更多个模块202可以表示被存储和配置为在诸如图3所示的设备(例如,计算设备302(1)-(n)和/或服务器306)的一个或更多个计算设备上运行的模块。图2中的一个或更多个模块202也可以代表被配置成执行一项或更多项任务的一个或更多个专用计算机的全部或部分。

如图2所示,示例系统200还可以包括一个或更多个存储器设备(诸如存储器240)。存储器240通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器240可以存储、加载和/或维护一个或更多个模块202。存储器240的示例包括但不限于随机存取存储器(ram)、只读存储器(rom)、闪存、硬盘驱动器(hdd)、固态驱动器(ssd)、光盘驱动器、高速缓存、一个或更多个上述存储器的变型或组合、和/或任何其他合适的储存存储器。

如图2所示,示例性系统200还可以包括一个或更多个物理处理器,例如物理处理器230。物理处理器230通常表示能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器230可以访问和/或修改存储在存储器240中的一个或更多个模块202。附加地或替代地,物理处理器230可以执行一个或更多个模块202,以便于维护映射系统。物理处理器230的示例非限制地包括微处理器、微控制器、中央处理单元(cpu)、实现软核(softcore)处理器的现场可编程门阵列(fpga)、专用集成电路(asic)、这些部件中的一个或更多个部件的部分、这些部件中的一个或更多个部件的变型或组合、和/或任何其他合适的物理处理器。

如图2所示,示例系统200还可以包括一个或更多个附加元素220,诸如实时数据250、基线地图数据256和事件图260。实时数据250、基线地图数据256和/或事件图260可以存储在诸如存储器240的本地存储设备上,或者可以远程访问。实时数据250可以表示从环境中的设备接收的数据,并且可以包括当前映射数据252和当前对象数据254,这将在下面进一步解释。在某些实施方式中,实时数据250还可以包括与实时数据250的源设备相关的数据。事件图260可以表示对应于环境中的对象和它们之间的关系的数据,并且可以包括状态数据262和关系数据264,这将在下面进一步解释。

基线地图数据256可以包括对应于环境的映射数据的数据。基线地图数据256可以包括关于包括但不限于墙壁、地板、天花板、窗户、门、大桌子等的环境静态特征的数据。基线地图数据256可以进一步包括静态特征的坐标数据,其可以定义静态特征的位置。坐标数据的坐标系可以是相对的,诸如相对于环境中特定点的坐标。例如,如果映射系统覆盖的环境被限制在建筑物的单楼层或一层,则坐标数据可以相对于该层上的特定点来定义。或者,坐标系可以是全局的,诸如由纬度和经度定义的。另外,坐标系可以包括两个以上的维度。坐标系也可以是3d的,并且可以包括特征的高度位置。

图2中的示例系统200可以以多种方式实现。例如,示例系统200的全部或一部分可以代表图3中的示例网络环境300的部分。

图3示出了实现本公开各方面的示例性网络环境300。网络环境300包括计算设备302(1)-(n)、网络304和服务器306。计算设备302可以是客户端设备或用户设备,诸如ar设备(例如,ar眼镜)、台式计算机、膝上型计算机、平板设备、智能手机或其他计算设备。计算设备302可以包括可以是一个或更多个处理器的物理处理器330、可以存储诸如实时数据250的数据的存储器340、能够从环境中检测实时数据250的传感器370以及显示器380。在一些实施方式中,计算设备302可以表示ar设备,使得显示器380将图像覆盖在用户对他或她的本地环境的视图上。例如,显示器380可以包括透明介质,该透明介质允许来自用户环境的光穿过,使得用户可以看到环境。显示器380然后可以在透明介质上绘制以覆盖信息。或者,显示器380可以将图像投影到透明介质上和/或用户的眼睛上。在一些实施方式中,计算设备302还可以包括用于声音输出的扬声器382。

传感器370可以包括一个或更多个传感器,诸如照相机、麦克风和能够检测环境中的特征和/或对象的其他传感器。计算设备302能够使用传感器370收集实时数据250以发送给服务器306。

服务器306可以代表或包括能够托管映射系统的一个或更多个服务器。映射系统可以处理来自计算设备302(1)-(n)的实时数据250,以构建、维护和/或更新基线地图数据256和事件图260。在一些示例中,映射系统可以表示ar映射系统,其可以处理数据以在ar设备上显示。服务器306可以包括物理处理器330(其可以包括一个或更多个处理器)、可以存储模块202的存储器340以及附加元素220,诸如基线地图数据256和事件图260。

计算设备302可以通过网络304通信耦合到服务器306。网络304可以代表任何类型或形式的通信网络(诸如互联网),并且可以包括一个或更多个物理连接,诸如lan,和/或无线连接,诸如wan。

回到图1,在一个示例中,系统200和/或服务器306的接收模块204可以从环境中的一个或更多个计算设备302接收与该环境相关联的实时数据250。实时数据250可以与环境中的对象相关联,该对象可以包括静物、人和/或由计算设备302检测到的其他可识别的对象。例如,计算设备302可以位于建筑物的单层中,收集和发送该建筑物层的实时数据250。

图4示出了描绘映射系统的数据流的示例性流水线400。如该图所示,图4可以包括对应于系统200和/或服务器306的映射系统406,以及对应于计算设备302的本地设备402。映射系统406可以接收原始数据450,其可以对应于实时数据250。原始数据450可以包括从环境收集的视频数据、音频数据和/或其他传感器数据。原始数据450还可以包括来自源设备的位置和/或取向数据。在一些示例中,原始数据450可能需要由映射系统406进一步处理。

回到图1,在步骤120,本文描述的一个或更多个系统可以根据实时数据来确定环境的当前映射数据和当前对象数据。例如,系统200和/或服务器306的当前数据模块204可以根据实时数据250确定当前映射数据252和当前对象数据254。

当前映射数据252可以包括符合基线地图数据256的坐标系的坐标数据,并且描述环境内对象的位置和/或取向。具体地,当前映射数据252可以包括环境中的静态特征的坐标数据和当前对象数据254所表示的对象的坐标数据。例如,坐标数据可以包括由计算设备302检测到的环境中的人、家具物品和/或结构特征的当前坐标数据。

当前对象数据254可以包括由计算设备302检测到的环境中的对象的状态数据和关系数据。状态数据可以例如描述对象的状况。具体地,状态数据可以对应于对象的属性、特性和/或其他区别特征。如下文所详述的,该状态数据与坐标数据相结合,可以使ar映射系统能够生成在环境中的对象(包括它们的位置、取向、状态等)的完整再现,以例如用于在ar设备上显示。

在一些实施例中,术语“状态数据”可以指可以描述对象关于属性和/或情况的状况的数据。人的状态数据可以包括例如头部姿势、眼睛状态、音频数据、手的状态、呼吸率、心率和/或其他生理属性,以及许多其他潜在的示例。静物的状态数据可以包括例如对象类型、实例标识、姿势和/或对象类型特有的属性,如门是否打开,以及许多其他潜在的示例。状态数据可以提供环境的完整状态。

在一些实施例中,术语“关系数据”可以指可以描述对象之间关系的数据。对象之间的关系可以包括例如对象之间的交互、由对象引起的状态变化、组合和/或对象之间的其他关联。交互可以包括,例如,拿起和/或放下、携带、放置、附着、看、说、听、触摸等。例如,一个人可能会抓起一把椅子,建立一种关系。在一些示例中,关系数据可以描述对象状态的变化。状态数据可以进一步用于确定关系数据。例如,跟踪人的手、眼睛和/或声音可以帮助识别人的交互的目标对象。

本文描述的系统可以以多种方式执行步骤120。在一个示例中,映射系统406的人工智能(ai)代理432可以使用机器学习来处理原始数据450。ai代理432可以以软件和/或硬件的方式实现。ai代理432可以从视频数据中识别对象和结构特征。ai代理432的数据流水线可以分为地图处理器434和对象处理器436。在一些示例中,地图处理器434和/或对象处理器436可以与ai代理432集成,或者可以用单独的硬件和/或软件来实现。

地图处理器434可以通过计算识别的对象和结构特征之间的距离来确定坐标数据,并且可以使用原始数据450的源设备的位置和/或取向来确定坐标数据。例如,来自原始数据450的视频数据可用于计算对象之间的距离。使用对象和一个或更多个参考点(诸如源设备的位置)之间的距离可以确定对象的坐标数据。

对象处理器436可以识别对象和结构特征,并且可以进一步使用机器学习来识别对象和结构特征的状态数据。例如,通过分析来自原始数据450的视频数据,对象处理器436可以使用机器学习来识别和分类对象以及确定对象的状态数据。其他数据可用于确定状态数据,诸如音频数据、源设备的位置和/或取向、对象之间的接近度等。

返回图1,在步骤130,本文描述的一个或更多个系统可以确定当前映射数据和包括环境特征的基线地图数据之间的映射增量。例如,系统200和/或服务器306的映射增量模块208可以确定当前映射数据252和基线地图数据256之间的映射增量。

基线地图数据256可以包括表示环境静态特征(诸如建筑物的单层)的数据。基线地图数据256可以包括环境的静态特征,诸如平面图、墙壁、地板、天花板、大桌子、门、窗、静态家具物品和环境的结构特征。静态特征可以例如通过定义对象可以移动或放置的限制并且进一步通过定义或提供坐标系的参考来定义环境。

在某些实施方式中,基线地图数据256可以被划分成粒度级别。例如,第一级别或最低级别可以对应于环境的平面图。第二级别可以包括填充第一级别的稀疏特征集。更高级别可以包括结构元素的类别、结构元素的纹理以及结构元素的实例。实例可以对应于特定的对象。在其他实施方式中,可以有更少或更多的级别。

基线地图数据256可以例如通过将已知的平面图和静态特征输入作为基线地图数据256来预先建立。替代地或附加地,基线地图数据256可以由环境中的设备的连续扫描建立。换句话说,基线地图数据256可以是先前接收的映射数据的集合。

图5a示出了基础级别501,其可以对应于基线地图数据256的2d表示,并且可以不按比例示出。基础级别501可以类似于平面图,并且可以包括结构特征510、静态家具512和静态元素514。结构特征510可以包括墙壁、门、窗户和环境的其他结构特征。静态家具512可以包括桌子和其他通常不移动的家具,诸如长凳、沙发、书桌等。静态元素514可以包括可以保持静态的其他特征,例如大型植物、雕像以及环境中的其他装饰和/或功能元素。

回到图1,本文描述的系统可以以多种方式执行步骤130。在一个示例中,ai代理432通过地图处理器434可以确定地图数据库456(其可以对应于基线地图数据256)和来自原始数据450的当前映射数据之间的差异。映射增量可以相对地定义,例如通过识别哪些特征已经改变并确定到它们的新坐标的平移。可选地,映射增量可以由具有不同于地图数据库456中的坐标的任何特征来定义。

在某些情况下,映射增量可能在源设备之间存在不一致和/或冲突。当多个设备发送数据时,第一设备关于特征的数据可能不同于第二设备关于相同特征的数据。例如,第一设备可能在第二设备之前记录了该特征,因此发送了过时的数据。不一致可以通过对数据进行优先排序来解决。例如,具有较新时间戳的数据可能比具有较旧时间戳的数据优先。类似地,来自更接近所讨论的特征或具有更高分辨率检测能力的源设备的数据可以优先。在某些实施方式中,可以组合不一致,例如使用基于优先级的加权平均。

在步骤140,本文描述的一个或更多个系统可以确定当前对象数据和事件图之间的对象增量,该事件图包括环境中对象的先前状态数据和先前关系数据。例如,系统200和/或服务器306的对象增量模块210可以确定当前对象数据254和事件图262之间的对象增量。

事件图260可以包括状态数据262和关系数据264。事件图260可以包括在环境中检测到的所有对象的数据。状态数据262可以包括环境中对象的时空状态数据。时空状态数据可以指示环境中对象随时间的位置数据。状态数据262因此可以包括对象的先前状态数据,从而跟踪对象状态的变化。关系数据264可以包括链接对象的各种状态的转换数据(transitiondata)。转换数据可以对应于指示环境中的对象之间的交互的事件。事件图260可以存储为多维矩阵或能够存储时空数据和转换数据的其他数据结构。

图6示出了事件图600,其可以对应于事件图260的图形表示。事件图600可以包括节点602和边604。事件图600可以具有两个维度,在图6中被描绘为时间轴和空间轴,尽管在其他实现方式中,事件图600可以包括更多维度,例如附加的空间维度和对应于状态数据的属性的维度。

节点602可以对应于对象的状态。在沿时间轴的给定时间,对象的空间(例如位置)可以由节点602表示。链接节点602的边604可以对应于由节点602表示的状态之间的转换数据。转换可以指示交互,诸如移动或被移动。节点602的收敛可以指示相应的对象已经交互。

图5b描绘了示例活动层502,其可以对应于事件图260的简化2d环境表示,并且可以不按比例示出。活动层502可以表示环境中的动态或非静态对象。活动层502可以包括人520、先前状态522、对象524和人526。虽然图5b示出了对象的简化形式,但是因为状态数据和关系数据可以包括姿态和取向数据,所以可以获得对象的鲁棒3d表示。先前状态522可以指示人520的先前状态,诸如先前位置。因此,先前状态522可以显示人520已经行进的地方。人526被示为靠近对象524。人526和对象524的状态已经改变,这可以指示交互。具体地,人526可能已经重新定位了对象524。

在某些实施方式中,环境中的设备可以表示为不同的对象,或者可以与另一个对象密切相关。例如,人可能佩戴了ar设备,这可以与没有ar设备的人区分开来。另外,佩戴ar设备的人可以包括状态和关系数据更新的一致流。

回到图1,本文描述的系统可以以多种方式执行步骤140。在一个示例中,ai代理432通过对象处理器436可以确定来自原始数据450的当前对象数据和事件图460之间的差异,事件图460可以对应于事件图260。对象数据库462可以包括来自环境的所有被识别的对象。在一些实施方式中,对象数据库462可以结合在事件图460和/或地图数据库456中。对象增量可以通过状态和关系与事件图460中的先前状态和先前关系相比的变化来定义。类似于上述映射增量,对象增量可能在源设备之间具有不一致和/或冲突,这可以通过对数据进行优先级排序来解决。例如,具有较新时间戳的数据可能优先。类似地,来自更接近所讨论的特征或具有更高分辨率检测能力的源设备的数据可以优先。在某些实施方式中,可以组合不一致,例如使用基于优先级的加权平均。

在步骤150,本文描述的一个或更多个系统可以基于映射增量更新基线地图数据,并且基于对象增量更新事件图。例如,系统200和/或服务器306的更新模块212可以基于映射增量更新基线地图数据256,并且可以基于对象增量更新事件图260。

本文描述的系统可以以多种方式执行步骤150。在一个示例中,ai代理432可以通过地图处理器434来更新地图数据库456。另外,ai代理432可以通过对象处理器436来更新事件图460。在某些实施方式中,对象处理器436也可以更新对象数据库462。

基于对象增量更新事件图还可以包括将对象增量中的对象识别为事件图460中的对象,基于来自对象增量的状态数据在事件图460中为识别的对象创建新节点,以及基于来自对象增量的关系数据将新节点与事件图460中识别的对象的先前节点相链接。例如,图7示出了事件图700,其可以是图6中的事件图600的更新版本。在图7中,可以添加新节点702,并且新边704可以将新节点连接到先前节点。对象增量可以指示对象已经从其在事件图600中的最近节点移动。对象的移动可以在事件图700中以放置新节点702和新边704来表示,新边704连接到对象的次新节点。随着对象的状态随时间变化,可以为每个新状态向事件图700添加额外的节点和边。

更新基线地图数据256可以确保基线地图数据256包括环境的最新结构特征。例如,在图5中,更新基础层501可以导致映射出附加的结构特征510。更新事件图260可以确保事件图260包括环境中对象的最新状态数据262和关系数据264。另外,基线地图数据256和事件图260最初可以用最少的数据来播种,因为随着时间的推移,环境中的设备可以提供基线地图数据256和事件图260中缺失的区域和/或对象的数据。

在一些示例中,基线地图数据256和事件图260可以以分布式方式更新。环境中的多个设备可以比单个设备跟踪更多的环境。另外,这些设备可以在整个环境中移动,允许对不同于静态设备的区域进行更新。映射系统可以协调数据的聚集,使得每个单独的设备不需要向环境中的另一个单独的设备请求数据。

可以分析事件图260以进一步确定对象的特征和/或它们之间的关系。通过分析特定对象随时间的移动和/或关系模式,可以推断特定对象的当前和/或未来状态和关系。例如,如果对象丢失(例如,其当前位置未知),分析最后已知的位置和可能的移动可以提供其当前位置的准确预测。如果人倾向于在一天中的某个时间沿着某条路径行走,则可以在一天中的类似时间预测人的位置。事件图260的进一步分析可以揭示对象的附加特征。

可以分析事件图260的其他方面。例如,可以分析特定的时间窗口以确定发生什么类型的交互、哪些位置变得拥挤等。可以监测环境的变化以确定其影响。改变结构特征(诸如改变墙壁和/或门和/或其他通常静态的特征)可能会导致对象交互的改变。然后可以将这些交互与结构变化之前的交互进行比较。

在某些实施方式中,事件图260可以包括虚拟对象。虚拟对象可能是环境中的设备未检测到的对象。例如,预测的对象位置可以由虚拟对象来表示。另外,用户可以在环境中放置虚拟对象,例如供其他用户交互。

回到图1,在步骤160,本文描述的一个或更多个系统可以向多个设备发送更新的基线地图数据和更新的事件图数据。例如,系统200和/或服务器306的发送模块214可以向计算设备302发送基线地图数据256的部分和事件图260的部分。

本文描述的系统可以以多种方式执行步骤160。在一个示例中,映射系统406可以将地图数据库456、事件图460和/或对象数据库462的部分发送到本地设备402,本地设备402可以对应于计算设备302。

本地设备402可以包括本地ai代理433、本地地图数据库457、本地事件图461和本地对象数据库463。本地地图数据库457可以是地图数据库456的子集。本地事件图461可以是事件图460的子集。本地对象数据库463可以是对象数据库462的子集。本地ai代理433可以从映射系统406接收数据并更新本地数据库。本地数据库可以允许本地设备402维护其自己对环境的本地表示。

所公开的映射系统可用于跟踪环境中的对象。用户可能能够跟踪他或她的财产。例如,用户可能能够定位丢失的对象,诸如他或她的钥匙、膝上型电脑等。即使映射系统缺少丢失的对象的最新数据,用户也能够确定最后已知位置,以找到丢失的对象。或者,用户可以检查丢失对象的先前位置,以跟踪它们的移动并推断它们的当前位置。如果用户正在使用ar设备,用户可能能够环顾四周的环境,并在视觉上定位丢失的对象。例如,ar设备可以在用户面对对象时突出显示该对象,或者可以显示方向指示符(indicator)以将用户指向该对象。

用户还能够确定哪些对象和/或人已经与对象交互。例如,用户可能看到在膝上型电脑丢失之前,第二个人使用了用户的膝上型电脑。用户然后可以询问第二个人关于膝上型电脑的当前位置。用户也能够定位第二个人。例如,如果第二个人佩戴了ar设备,则用户能够实时看到第二个人在哪里,并确定第二个人去过哪里,以及第二个人与谁或什么进行了交互。如果第二个人没有佩戴ar设备,则用户可能能够确定第二个人已经在哪里,第二个人在整个环境中的运动习惯,并且估计第二个人当前在哪里。

用户还可以创建虚拟对象供其他用户交互。例如,用户可以创建虚拟笔记并将其留在墙上。第二个用户使用ar设备,可能能够看到虚拟笔记。

如上所述,所公开的映射系统可以从环境中的多个设备收集关于环境的数据。该映射系统可以包括环境的几乎所有设备可检测方面的数据表示,这些数据表示可以随着时间进一步保存。因此,映射系统可以以其当前配置以及过去的配置重建环境。这也允许分析环境随时间的变化。映射系统可以向环境中的设备发送数据,使得这些设备具有比单个设备通常可获得的更大的环境视图。即使无法检测整个环境,设备也可以重建整个环境。因此,映射系统可以利用多个设备,进而能够比环境中的单个设备所允许的那样更有效地重建环境。

如上面所详述的,本文描述和/或示出的计算设备和系统广泛地表示能够执行计算机可读指令(例如在本文描述的模块中包含的那些指令)的任何类型或形式的计算设备或系统。在它们的最基本的配置中,这些计算设备(一个或多个)可以各自包括至少一个存储器设备和至少一个物理处理器。

在一些示例中,术语“存储器设备”通常指能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器设备可以存储、加载和/或维护本文描述的模块中的一个或更多个。存储器设备的示例包括但不限于随机存取存储器(ram)、只读存储器(rom)、闪存、硬盘驱动器(hdd)、固态驱动器(ssd)、光盘驱动器、高速缓存、这些部件中的一个或更多个的变形或组合或者任何其他合适的储存存储器。

在一些示例中,术语“物理处理器”通常指能够解析和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器可以访问和/或修改存储在上述存储器设备中的一个或更多个模块。物理处理器的示例包括但不限于微处理器、微控制器、中央处理单元(cpu)、实现软核处理器的现场可编程门阵列(fpga)、专用集成电路(asic)、这些部件中的一个或更多个的部分、这些部件中的一个或更多个的变形或组合或者任何其他合适的物理处理器。

尽管被示为单独的元件,但是本文描述和/或示出的模块可以表示单个模块或应用程序的部分。此外,在某些实施例中,这些模块中的一个或更多个可以表示一个或更多个软件应用或程序,其当由计算设备执行时可以使计算设备执行一个或更多个任务。例如,本文描述和/或示出的模块中的一个或更多个可以表示被存储和配置为在本文描述和/或示出的计算设备或系统中的一个或更多个上运行的模块。这些模块中的一个或更多个还可以表示被配置为执行一个或更多个任务的一个或更多个专用计算机的全部或部分。

此外,本文描述的模块中的一个或更多个可以将数据、物理设备和/或物理设备的表示从一种形式转换成另一种形式。例如,本文所述的一个或更多个模块可以接收要转换的实时数据,转换实时数据,使用转换的结果来确定具有基线地图数据的映射增量和具有事件图的对象增量,并存储转换的结果来更新基线地图数据和事件图。附加地或可替代地,本文所述的模块中的一个或更多个可以通过在计算设备上执行、在计算设备上存储数据、和/或以其他方式与计算设备交互来将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式转换成另一种形式。

在一些实施例中,术语“计算机可读介质”通常指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例非限制地包括传输型介质(例如载波)以及非暂时性介质(例如磁性存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光学存储介质(例如,光盘(cd)、数字视频盘(dvd)和蓝光光盘)、电子存储介质(例如,固态驱动器和闪存介质)以及其他分布系统)。

本公开的实施例可以包括人工现实系统或者结合人工现实系统来实现。人工现实是一种在呈现给用户之前已经以某种方式进行了调整的现实形式,其可以包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mixedreality,mr)、混杂现实(hybridreality)或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或者与所捕获的(例如,现实世界)内容组合的所生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,它们中的任何一个都可以在单个通道或多个通道(例如向观看者产生三维效果的立体视频)中呈现。此外,在一些实施例中,人工现实还可以与应用、产品、附件、服务或其某种组合相关联,这些应用、产品、附件、服务或其某种组合用于例如在人工现实中创建内容和/或在人工现实中以其他方式被使用(例如在人工现实中执行活动)。可以在各种平台(包括连接到主计算机系统的头戴式显示器(hmd)、独立的hmd、移动设备或计算系统、或者能够向一个或更多个观众提供人工现实内容的任何其他硬件平台)上实现提供人工现实内容的人工现实系统。

本文描述和/或说明的过程参数和步骤顺序仅作为示例给出,并且可以根据需要改变。例如,虽然本文所示和/或所述的步骤可以以特定顺序示出或讨论,但是这些步骤不一定需要以所示或讨论的顺序执行。本文描述和/或示出的各种示例性方法也可以省略在本文描述或示出的一个或更多个步骤,或者包括除了那些所公开的步骤之外的附加步骤。

提供前面的描述以使本领域中的其他技术人员能够最好地利用本文公开的示例性实施例的各种方面。该示例性描述并不旨在是穷尽的或受限于所公开的任何精确形式。在不脱离本公开的精神和范围的情况下,许多修改和变化是可能的。本文公开的实施例应该被认为在所有方面都是说明性的,而不是限制性的。在确定本公开的范围时,应当参考所附权利要求及其等同物。

除非另有说明,否则说明书和权利要求书中使用的术语“连接到”和“耦合到”(及其派生词)应被解释为允许直接和间接(即,通过其他元件或组件)连接。此外,如在说明书和权利要求中使用的术语“一个(a)”或“一个(an)”应被解释为意指“...中的至少一个”。最后,为了便于使用,说明书和权利要求书中使用的术语“包括(including)”和“具有”(及其派生词)可与词语“包括(comprising)”互换并具有相同的含义。

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