掌桥专利:专业的专利平台
掌桥专利
首页

跨现实系统

文献发布时间:2023-06-19 10:58:46


跨现实系统

相关申请的交叉引用

本申请要求于2018年8月13日提交并且主题为“具有一个或多个坐标框架变换器的一个观看设备或多个观看设备(VIEWING DEVICE OR VIEWING DEVICES HAVING ONE ORMORE COORDINATE FRAME TRANSFORMERS)”的美国临时专利申请序列号62/718,357的优先权和权益,其通过引用全部并入在此。本专利申请还要求享有于2018年10月5日提交并且主题为“坐标框架处理增强现实(COORDINATE FRAME PROCESSING AUGMENTED REALITY)”的美国临时专利申请序列号62/742,237的优先权和权益,其通过引用全部并入在此。本专利申请还要求于2019年3月1日提交并且主题为“合并多个单独地图构建的环境(MERGING APLURALITY OF INDIVIDUALLY MAPPED ENVIRONMENTS)”的美国临时专利申请序列号62/812,935的优先权和权益,其通过引用全部并入在此。2019年3月8日提交并且主题为“具有一个或多个坐标框架变换器的一个观看设备或多个观看设备(VIEWING DEVICE ORVIEWING DEVICES HAVING ONE OR MORE COORDINATE FRAME TRANSFORMERS)”的美国临时专利申请序列号62/815,955,其通过引用全部并入在此。本专利申请还要求于2019年6月28日提交并且主题为“排名和合并多个环境地图(RANKING AND MERGING A PLURALITY OFENVIRONMENT MAPS)”的美国临时专利申请序列号62/868,786的优先权和权益,其通过引用全部并入在此。本专利申请还要求于2019年7月5日提交并且主题为“排名和合并多个环境地图(RANKING AND MERGING A PLURALITY OF ENVIRONMENT MAPS)”的美国临时专利申请序列号62/870,954的优先权和权益,其通过引用全部并入在此。本专利申请还要求于2019年8月8日提交并且主题为“观看系统(A VIEWING SYSTEM)”的美国临时专利申请序列号62/884,109的优先权和权益,其通过引用全部并入在此。

技术领域

本申请总体上涉及跨现实系统。

背景技术

计算机可以控制人类用户界面以创建X Reality(X现实,XR或跨现实)环境,在该环境中,由计算机生成用户所感知的一些或全部XR环境。这些XR环境可以是虚拟现实(VR)、增强现实(AR)和混合现实(MR)环境,其中的一些或所有XR环境可以由计算机部分使用描述环境的数据来生成。例如,该数据可以描述虚拟对象,该虚拟对象可以以用户的感觉或感知为物理世界的一部分的方式渲染,并且可以与虚拟对象进行交互。由于数据是通过用户接口设备(诸如例如头戴式显示设备)渲染和呈现的,因此用户可以体验这些虚拟对象。数据可以显示给用户看,或者可以控制被播放给用户听的音频,或者可以控制触觉(或触知)界面,从而使用户能够体验到用户感觉或感知为感觉到虚拟对象的触摸感觉。

XR系统可以被用于跨科学可视化、医学培训、工程设计和原型、远程操纵和远程呈现以及个人娱乐领域的许多应用。与VR相比,AR和MR包括与物理世界的真实对象相关的一个或多个虚拟对象。虚拟对象与真实对象交互的体验显著地增强了用户使用XR系统的乐趣,并且也为呈现有关如何改变物理世界的现实且易于理解的信息的各种应用打开了大门。

XR系统可以将围绕系统用户的物理世界表示为“网格”。网格可以由多个互连的三角形表示。每个三角形具有在物理世界内的对象的表面上连接点的边,使得每个三角形表示该表面的一部分。有关表面部分的信息,诸如颜色、纹理或其它特性,可以被关联存储在三角形内。在操作中,XR系统可以处理图像信息以检测点和表面,以便创建或更新网格。

发明内容

本申请的各方面涉及用于提供X现实(跨现实或XR)场景的方法和装置。如在此所述的技术可以一起、分开地或以任何合适的组合来使用。

一些实施例涉及包括第一XR设备的XR系统,该第一XR设备包括第一处理器,连接到第一处理器的第一计算机可读介质,存储在第一计算机可读介质上的第一原点坐标框架,存储在计算机可读介质上的第一目的地坐标框架,用于接收表示本地内容的数据的第一数据通道,可由第一处理器执行以将本地内容的定位从第一原点坐标框架变换为第一目的地坐标框架的第一坐标框架变换器,以及第一显示系统,该第一显示系统适于在将本地内容的定位从第一原点坐标框架变换为第一目的地坐标框架之后向第一用户显示本地内容。

一些实施例涉及一种观看方法,该观看方法包括:存储第一原点坐标框架;存储第一目的地坐标框架;接收表示本地内容的数据;将本地内容的定位从第一原点坐标框架变换为第一目的地坐标框架;以及在将本地内容的定位从第一原点坐标框架变换为第一目的地坐标框架之后,向第一用户显示本地内容。

一些实施例涉及一种XR系统,该XR系统包括:地图存储例程,其存储第一地图,该第一地图是具有多个锚点的规范地图,第一地图的每个锚点具有一组坐标;真实对象检测设备,其被定位成检测真实对象的位置;锚点识别系统,其连接到真实对象检测设备,以基于真实对象的位置来检测第二地图的锚点,第二地图的每个锚点具有一组坐标;以及定位模块,其连接到规范地图和第二地图,并且可执行以通过将第二地图的第一锚点与规范地图的第一锚点进行匹配并将第二地图的第二锚点与规范地图的第二锚点进行匹配来将第二地图定位到规范地图。

一些实施例涉及一种观看方法,其包括:存储第一地图,该第一地图是具有多个锚点的规范地图,规范地图的每个锚点具有一组坐标;检测真实对象的位置;基于真实对象的位置,检测第二地图的锚点,第二地图的每个锚点具有一组坐标;以及通过将第二地图的第一锚点与第一地图的第一锚点进行匹配,以及将第二地图的第二锚点与规范地图的第二锚点进行匹配,将第二地图定位到规范地图。

一些实施例涉及一种XR系统,包括:服务器,其可具有:处理器;连接到处理器的计算机可读介质;计算机可读介质上的多个规范地图;与每个相应的规范地图相关联的计算机可读介质上的相应的规范地图标识符,规范地图标识符彼此不同以唯一地识别规范地图;位置检测器,其位于计算机可读介质上并且可由处理器执行以从XR设备接收和存储位置标识符;第一过滤器,其位于计算机可读介质上并且可由处理器执行以将位置标识符与规范地图标识符进行比较,以确定形成第一过滤选择的一个或多个规范地图;以及地图发送器,其位于计算机可读介质上并且可由处理器执行以基于第一过滤的选择向XR设备发送一个或多个规范地图。

一些实施例涉及一种观看方法,该方法包括:将多个规范地图存储在计算机可读介质上,每个规范地图具有与相应规范地图相关联的相应规范地图标识符,规范地图标识符彼此不同以唯一地识别规范地图;采用连接到计算机可读介质的处理器从XR设备接收和存储位置标识符;采用处理器将位置标识符与规范地图标识符进行比较,以确定形成第一过滤选择的一个或多个规范地图;以及采用处理器基于第一过滤选择向XR设备发送多个规范地图。

一些实施例涉及一种XR系统,该XR系统包括:处理器;连接到处理器的计算机可读介质;在计算机可读介质上并且可由处理器执行的多层感知单元,其接收图像的多个特征并将每个特征转换为相应的数字字符串;以及在计算机可读介质上并且可由处理器执行的最大池化单元,其将每个数字字符串的最大值组合成表示图像的全局特征字符串。

一些实施例涉及一种观看方法,该观看方法包括:采用处理器接收图像的多个特征;采用处理器将每个特征转换为相应的数字字符串;以及采用处理器将每个数字字符串的最大值组合成表示图像的全局特征字符串。

一些实施例涉及一种操作计算系统的方法,用于识别被存储在数据库中的一个或多个环境地图以与基于由用户佩戴的设备所收集的传感器数据而计算出的跟踪地图进行合并,其中,设备在计算跟踪地图的同时接收到计算机网络的接入点的信号,该方法包括:基于与接入点的通信特征,确定跟踪地图的至少一个区域属性;基于至少一个区域属性,确定跟踪地图的地理位置;识别存储在数据库中的与所确定的地理位置相对应的一组环境地图;基于与跟踪地图和一组环境地图中的环境地图相关联的网络接入点的一个或多个标识符的相似性来过滤一组环境地图;基于表示跟踪地图和一组环境地图中的环境地图的内容的度量的相似性来过滤一组环境地图;以及基于跟踪地图的一部分与一组环境地图中的环境地图的部分之间的匹配程度来过滤一组环境地图。

一些实施例涉及用于增强现实系统的云计算环境,该增强现实系统被配置为与包括传感器的多个用户设备进行通信,该多个用户设备包括:用户数据库,该用户数据库存储指示在其中使用了多个用户设备的区域的区域标识,该区域标识包括由用户设备在使用中所检测的无线网络的参数;地图数据库,其存储从由多个用户设备提供的数据和相关联的元数据构造的多个环境地图,相关联的元数据包括从提供从中构造地图的数据的多个用户设备的区域标识中导出的区域标识,区域标识包括由提供从中构造地图的数据的用户设备检测的无线网络的参数;非暂态计算机存储介质,其存储计算机可执行指令,该指令在由云计算环境中的至少一个处理器执行时:从多个用户设备接收包括由用户设备检测的无线网络的参数的消息,计算用户设备的区域标识符,并基于所接收的参数和/或所计算的区域标识符来更新用户数据库;以及从多个用户设备接收针对环境地图的请求,确定与请求环境地图的用户设备相关联的区域标识符,至少部分地基于区域标识符从地图数据库中识别一组环境地图,对一组环境地图进行过滤,并向用户设备发送过滤的一组环境地图,其中,过滤一组环境地图是基于由环境地图的请求所源自的用户设备检测的无线网络的参数与针对一组环境地图中的环境地图的地图数据库中的无线网络的参数的相似性。

一些实施例涉及一种XR系统,该XR系统包括:真实对象检测设备,其检测真实世界对象的多个表面;锚点识别系统,其连接到真实对象检测设备以基于真实世界对象生成地图;持久坐标框架(PCF)生成系统,其基于地图生成第一PCF,并将第一PCF与地图相关联;第一XR设备和第二XR设备上的相应的第一存储介质和第二存储介质;以及第一XR设备和第二XR设备的至少第一处理器和第二处理器,其分别将第一PCF存储在第一XR设备的第一存储介质和第二XR设备的第二存储介质中。

一些实施例涉及一种观看方法,该观看方法包括:采用至少一个检测设备检测真实世界对象的多个表面;采用至少一个处理器,基于真实世界对象生成地图;采用至少一个处理器,基于地图生成第一PCF;采用至少一个处理器将第一PCF与地图相关联;以及采用第一XR设备和第二XR设备的至少第一处理器和第二处理器将第一PCF分别存储在第一XR设备的第一存储介质和第二XR设备的第二存储介质中。

一些实施例涉及一种XR系统,该XR系统包括:第一XR设备,其可包括:第一XR设备处理器;第一XR设备存储设备,其连接到第一XR设备处理器;第一XR设备处理器上的一组指令,其包括:下载系统,其可由第一XR设备处理器执行以从服务器下载持久姿势;PCF取得器,其可由第一XR设备处理器执行以基于持久姿势从第一XR设备的第一存储设备取得PCF;以及坐标框架计算器,其可由第一XR设备处理器执行以基于从第一存储设备取得的PCF来计算坐标框架。

一些实施例涉及一种观看方法,该观看方法包括:采用第一XR设备的第一XR设备处理器从服务器下载持久姿势;采用第一XR设备处理器,基于持久姿势,从第一XR设备的第一存储设备取得PCF;以及采用第一XR设备处理器基于从第一存储设备取得的PCF计算坐标框架。

一些实施例涉及一种观看方法,该观看方法包括:服务器,其可包括:服务器处理器;服务器存储设备,其连接到服务器处理器;地图存储例程,其可采用服务器的服务器处理器执行以将第一PCF与地图相关联地存储在服务器的服务器存储设备上;以及地图发送器,其采用服务器处理器,可由服务器处理器执行以向第一XR设备发送地图和第一PCF。本发明还提供一种观看方法,该观看方法包括:采用服务器的服务器处理器将第一PCF与地图相关联地存储在服务器的服务器存储设备上;以及采用服务器的服务器处理器向第一XR设备发送地图和第一PCF。

一些实施例涉及一种观看方法,该观看方法包括:由XR设备的处理器,通过采用固定到用户头部的头戴式框架上的捕获设备捕获环境表面以及确定头戴式框架相对于表面的取向来跟踪头部姿势;由处理器确定是否由于无法确定头戴式框架相对于表面的取向而丢失头部姿势;以及如果丢失头部姿势,则由处理器进入姿势恢复模式以通过确定头戴式框架相对于表面的取向来建立头部姿势。

附图说明

附图并非旨在按比例绘制。在附图中,在各个附图中示出的每个相同或几乎相同的部件由相似的数字表示。为了清楚起见,并非每个部件都可以在每个附图中标记。在附图中:

图1是示出根据一些实施例的跨现实(XR)系统的示意图;

图2是根据一些实施例的图1的XR系统的第一XR设备的框图;

图3是根据一些实施例的示出将原点坐标框架变换为目的地坐标框架以便例如正确地渲染本地XR内容的示意图;

图4是示出根据一些实施例的基于瞳孔的坐标框架的顶视平面图;

图5是示出根据一些实施例的包括所有瞳孔位置的相机坐标框架的顶视平面图;

图6是根据一些实施例的包括附加的第二XR设备的图1的XR系统的框图;

图7是根据一些实施例的图2的显示系统的示意图;

图8是根据一些实施例的可由图2的第一XR设备生成的三维第一本地跟踪地图(地图1)的二维表示;

图9是示出根据一些实施例的从第一XR设备向图6的服务器上传地图1的框图;

图10是示出根据一些实施例的图6的XR系统的示意图,示出在第一用户已经终止第一会话之后第二用户已经使用XR系统的第二XR设备发起第二会话;

图11A是示出根据一些实施例的用于图10的第二XR设备的新会话的框图;

图11B是示出根据一些实施例的用于图10的第二XR设备的跟踪地图的创建的框图;

图11C是示出根据一些实施例的从服务器向图10的第二XR设备下载规范地图的框图;

图11D是示出根据一些实施例创建持久坐标框架(PCF)和附接到该PCF的XR内容的框图;

图12是示出根据一些实施例的将可以由图10的第二XR设备生成的第二跟踪地图(地图2)定位到规范地图的定位尝试的示意图;

图13是示出根据一些实施例的将图12的第二跟踪地图(地图2)定位到规范地图的定位尝试的示意图,该第二跟踪地图可以进一步开发并且具有与地图2的锚点相关联的XR内容;

图14A-图14B是示出根据一些实施例的将图13的地图2成功定位到规范地图的示意图;

图15是示出根据一些实施例的通过将来自图14A的规范地图的一个或多个锚点包括到图13的地图2中而生成的规范地图的示意图;

图16是示出根据一些实施例的图15的规范地图以及第二XR设备上的地图2的进一步扩展的示意图;

图17是示出根据一些实施例的从第二XR设备向服务器上传地图2的框图;

图18是示出根据一些实施例的将地图2与规范地图合并的框图;

图19是示出根据一些实施例的从服务器到第一XR设备和第二XR设备传输新规范地图的框图;

图20是示出根据一些实施例的地图2的二维表示和参考地图2的第二XR设备的头部坐标框架的框图;

图21是根据一些实施例的以二维方式示出可以在六个自由度中发生的头部坐标框架的调节的框图;

图22是示出根据一些实施例的第二XR设备上的规范地图的框图,其中,声音相对于地图2的锚点被定位;

图23和图24是示出根据一些实施例的当第一用户已经终止第一会话并且第一用户已经使用XR系统发起第二会话时XR系统的使用的透视图和框图;

图25和图26是示出根据一些实施例的当三个用户在同一会话中同时使用XR系统时XR系统的使用的透视图和框图;

图27是示出根据一些实施例的表示存储在服务器上的规范地图的纬度和经度的二维视图的框图;

图28是示出根据一些实施例的用于选择规范地图以供服务器传输到XR设备的一系列过滤器的示意图;

图29A-29C是示出根据一些实施例的用于生成图像和/或地图的全局特征字符串的系统的框图;

图29D是示出根据一些实施例的训练神经网络的方法的框图;

图30是示出根据一些实施例的简化的增强现实(AR)场景的示例的示意图;

图31是根据一些实施例的示例性简化AR场景的草图,示出了示例性世界重建用例,包括视觉遮挡、基于物理的交互和环境推理。

图32是示出根据一些实施例的AR系统中的数据流的示意图,该AR系统被配置为提供AR内容与物理世界交互的体验;

图33是示出根据一些实施例的AR显示系统的示例的示意图;

图34A是示出根据一些实施例的当用户通过物理世界环境移动时用户佩戴渲染AR内容的AR显示系统的示意图;

图34B是示出根据一些实施例的观看光学组件和伴随部件的示意图;

图35A是示出根据一些实施例的使用世界重建系统的AR系统的示意图;

图35B是示出根据一些实施例的可通行世界的示意图;

图36是根据一些实施例的示例性环境地图;

图37是示出根据一些实施例的被配置为对多个环境地图进行排名和合并的AR系统的示意图;

图38是示出根据一些实施例的选择多个排名的环境地图的方法的流程图;

图39是示出根据一些实施例的图37的AR系统的示例性地图排名部分的示意图;

图40A是示出根据一些实施例的数据库中的跟踪地图(TM)和环境地图的区域属性的示例的示意图;

图40B是示出根据一些实施例的确定用于图38的地理位置过滤的跟踪地图(TM)的地理位置的示例的示意图;

图41是示出根据一些实施例的图38的地理位置过滤的示例的示意图;

图42是示出根据一些实施例的图38的Wi-Fi BSSID过滤的示例的示意图;

图43是示出根据一些实施例的图38的定位的示例的示意图;

图44是示出根据一些实施例的房间和为房间中的各个区域建立的关键框架的示意图;

图45是示出根据一些实施例的基于关键帧的持久姿势的建立的示意图;

图46是示出根据一些实施例的基于持久姿势的持续坐标框架(PCF)的建立的示意图;

图47是示出根据一些实施例的建立和使用PCF的方法的流程图;

图48A至图48I是示出建立和使用图47的PCF的示例的示意图;

图49是示出根据一些实施例的恢复和重置头部姿势的方法的流程图;以及

图50是根据一些实施例的可以在本发明的系统中找到应用的计算机形式的机器的框图。

图51-53是示出根据一些实施例的至少部分地基于深度关键帧(DKF)分析来确定要使用的地图的示例的框图。

具体实施方式

在此描述的是用于提供X现实(XR或交叉现实)场景的方法和装置。为了向多个用户提供逼真的XR体验,XR系统必须了解用户的物理环境,以便正确地将与实际对象相关的虚拟对象的位置进行关联。XR系统可以构建场景的环境地图,该环境地图可以从传感器收集的图像和深度信息创建,该传感器是由XR系统的用户佩戴的XR设备的一部分。

发明人已经认识并理解到用于操作XR系统以通过使XR系统的多个用户中的任何一个用户都能创建、存储和取得持久环境地图来为更具有沉浸感的用户体验提供XR场景的技术。这种持久环境地图可以实现增强XR体验的一个或多个功能。例如,由用户佩戴的可穿戴设备在被打开之后,可以从诸如云存储的持久存储中取得先前创建和存储的适当的环境地图。先前存储的地图可能是基于用户存在的先前一个或多个时间在用户可穿戴设备上采用传感器收集的有关环境的数据。取得持久地图可以实现可穿戴设备的使用,而无需采用可穿戴设备上的传感器扫描物理世界。可替代地或另外地,用户在进入物理世界的新区域时可以类似地取得适当的环境地图。

在多用户XR系统中,一个用户访问的持久环境地图可能已经由另一用户创建和存储和/或可能通过在多个用户所穿戴的可穿戴设备上汇总由传感器收集的有关物理世界的数据而构造,该多个用户以前已经在持久环境地图所表示的至少一部分物理世界中存在。

此外,在多个用户之间共享关于物理世界的数据可以实现虚拟内容的共享用户体验。例如,访问同一持久环境地图的两个XR设备都可以相对于持久环境地图进行定位。一旦定位,用户设备可以通过将位置翻译成由用户设备维护的框架或参考来渲染具有通过参考持久环境地图指定的位置的虚拟内容。用户设备可以使用该本地参考框架来控制用户设备的显示以在指定位置中渲染虚拟内容。

为了支持这些以及其它可能的功能,XR系统可以包括以下部件,该部件基于与用户设备上的传感器收集的有关物理世界的数据,开发、维护和使用一个或多个持久环境地图。这些部件可以例如通过在用户设备的头戴式部分上的一些操作而跨XR系统分布。其它部件可以在计算机上操作,与通过局域网或个人局域网耦合到头戴式部分的用户相关联。还有一些可以在远程位置处(诸如在可通过广域网访问的一个或多个服务器处)操作。

例如,这些部件可以包括可以从由一个或多个用户设备收集的关于物理世界的信息中识别出具有足以被存储为持久环境地图的数量的信息的部件。下面更详细描述的这种部件的示例是图6中的PCF集成单元1300。

作为另一个示例,这些部件可以包括可以帮助确定可以被用户设备取得和使用的适当的持久环境地图的部件。下面更详细描述的这种部件的示例是地图排名部件。例如,这种部件可以从用户设备接收输入,并识别一个或多个持久环境地图,该持久环境地图可能表示该设备在其中操作的物理世界的区域。例如,地图排名部件可以帮助选择该本地设备在渲染虚拟内容,收集有关环境的数据或执行其它动作时要使用的持久环境地图。可替代地或另外地,地图排名部件可以帮助识别随着一个或多个用户设备收集关于物理世界的附加信息而被更新的持久环境地图。

其它部件可以是应用编程接口(API)。构建和维护持久环境地图的平台可以提供一个或多个API,以使单独创建的应用能够获得关于物理世界的信息。

其它部件可以是将关于一个参考框架捕获或描述的信息转换为另一参考框架的变换。例如,传感器可以被附接到头戴式显示器,使得从该传感器读取的数据指示对象相对于佩戴者的头部姿势在物理世界中的位置。可以应用一个或多个变换以将该位置信息和与持久环境地图相关联的坐标框架相关。类似地,可以将指示在持久环境地图的坐标框架中表达时要在何处渲染虚拟对象的数据进行一次或多次变换,以置于用户头部上显示器的参考框架中。如下面更详细描述的,可能存在多个这种变换。可以跨XR系统的部件划分这些变换,使得可以有效地更新它们或将其应用于分布式系统中。

在一些实施例中,可以以可以在用户之间以及包括应用的分布式部件之间容易地共享的方式来表示地图信息。例如,关于物理世界的信息可以被表示为具有一个或多个锚点的坐标框架,其表示在物理世界中识别的特征。这种地图可能是稀疏的,提供少于关于物理世界的所有可用信息的信息,使得它们可以被有效地处理和传递。

在一些实施例中,可以根据由多个用户设备收集的信息来构造持久环境地图。XR设备可以采用在各个位置和时间由系统的用户佩戴的XR设备的传感器收集的信息来构造单独的跟踪地图(TM)。每个TM可以包括点,每个点可以与环境中的真实对象相关联。除了可能提供输入以创建和维护持久环境地图之外,TM还可用于跟踪场景中用户的运动,从而使XR系统能够基于TM估计相应用户的头部姿势。

环境地图的创建与头部姿势的估计之间的该相互依赖性构成了重大挑战。可能需要大量处理才能创建环境地图并同时估计头部姿势。随着对象在场景中移动(例如在桌子上移动杯子)以及随着用户在场景中移动,必须快速完成处理,因为时延使XR体验对用户的沉浸感降低。另一方面,XR设备可以提供有限的计算资源,因为XR设备的重量应当轻以使用户舒适地佩戴。因此,无法采用更多的传感器来补偿计算资源的缺乏。此外,更多的传感器和更多的计算资源会产生热量,这可导致XR设备的变形。

发明人已经认识并理解用于操作XR系统以提供用于更具沉浸感的用户体验的技术的XR场景,诸如以1kHz的频率估计头部姿势,采用较低的计算资源使用率,诸如以30Hz操作的四个视频图形阵列(VGA)相机,以1kHz操作的一个惯性测量单元(IMU),单个高级RISC机器(ARM)内核的计算能力,小于1GB的存储器,以及小于100Mbp的网络带宽。这些技术涉及减少生成和维护环境地图和估计头部姿势所需的处理,以及涉及以低计算开销提供和消费数据。

这些技术可以包括混合跟踪,使得XR系统可以利用以下二者:(1)在环境的连续图像之间的可区分点的基于补丁的跟踪(帧到帧跟踪),以及(2)当前图像的关注点与对应关注点的已知真实世界位置的基于描述符的地图的匹配(地图到帧跟踪)。在帧到帧跟踪中,XR系统可以跟踪真实世界环境中捕获的图像之间的特定关注点(折点),诸如角点。例如,显示系统可以识别当前图像中视觉关注点的位置,该视觉关注点包括在(例如,位于)先前图像中。该识别可以使用例如光度误差最小化过程来完成。在地图到帧的跟踪中,XR系统可以访问地图信息,该信息指示关注点的真实世界位置(例如,三维坐标),并将当前图像中包括的关注点与地图信息中指示的关注点进行匹配。有关关注点的信息作为描述符存储在地图数据库中。然后,XR系统可以基于匹配的视觉特征来计算其姿势。美国专利申请序列号16/221,065描述了混合跟踪,并且通过引用将其全部内容合并于此。

这些技术可以包括减少在构造地图时处理的数据量,诸如通过采用地图构建点和关键帧的集合构造稀疏地图和/或将地图划分为块以实现按块的更新。地图构建点可以与环境中真实对象的三维(3D)世界重建相关联。关键帧可以包括从相机捕获的数据中选择的信息。美国专利申请序列号16/520,582描述了确定和/或评估定位地图,并且通过引用将其全部内容合并于此。

这些技术可以包括基于跨一个或多个会话在真实空间中的一个或多个坐标系创建动态地图,在可以例如经由应用编程接口(API)暴露给XR应用的稀疏地图上生成持久坐标框架(PCF),对由一个或多个XR设备创建的多个地图进行排名和地图构建,在一些实施例中使用深度关键帧分析,以及恢复和重置头部姿势。

在此描述的技术可以与许多类型的设备以及对于许多类型的场景一起或单独使用,包括具有有限的计算资源的提供增强现实场景的可穿戴或便携式设备。

在此描述了用于使用与观看虚拟内容的眼睛的位置无关的XR系统提供虚拟内容的方法和装置。传统上,虚拟内容在显示系统的任何运动时被重新渲染。例如,如果佩戴显示系统的用户观看了显示器上的三维(3D)对象的虚拟表示并围绕3D对象出现的区域走动,则应为每个视点重新渲染3D对象,使得用户具有他或她正围绕占据真实空间的对象走动的感受。然而,重新渲染消耗了系统的大量计算资源,并且由于时延而导致伪像。

发明人已经认识并理解到,头部姿势(例如,佩戴XR系统的用户的位置和取向)可以用于渲染与用户的头部内的眼睛旋转无关的虚拟内容。在一些实施例中,可以基于跨一个或多个会话的真实空间中的多个坐标框架来生成场景的动态地图,使得与动态地图交互的虚拟内容可以被稳健地渲染,而与用户头部内的眼睛旋转无关和/或与例如在高速的计算密集型操作期间生成的热量所引起的传感器变形无关。在一些实施例中,多个坐标框架的配置可以使第一用户所佩戴的第一XR设备和第二用户所佩戴的第二XR设备能够识别场景中的公共位置。在一些实施例中,多个坐标框架的配置可以使佩戴第一和第二XR设备的第一和第二用户能够在场景的相同位置处观看虚拟内容。

在一些实施例中,可以在世界坐标框架中构建跟踪地图,该世界坐标框架可以具有世界原点。当XR设备通电时,世界原点可以是XR设备的第一姿势。世界原点可以与重力对齐,使得XR应用的开发者可以在无需额外工作的情况下进行重力对齐。可以在不同的世界坐标框架中构建不同的跟踪地图,因为跟踪地图可以由在不同的会话中的相同的XR设备和/或由不同的用户佩戴的不同的XR设备捕获。在一些实施例中,XR设备的会话可以从设备通电开始到设备关闭。在一些实施例中,XR设备可以具有头部坐标框架,该头部坐标框架可以具有头部原点。头部原点可以是拍摄图像时XR设备的当前姿势。世界坐标框架的头部姿势与头部坐标框架的头部姿势之间的差异可用于估计跟踪路线。

在一些实施例中,XR设备可以具有相机坐标框架,该相机坐标框架可以具有相机原点。相机原点可以是XR设备的一个或多个传感器的当前姿势。发明人已经认识并且理解到,相机坐标框架的配置使得能够稳健地显示与用户的头部内的眼睛旋转无关的虚拟内容。该配置还使得能够稳健地显示虚拟内容,而与例如由于操作期间生成的热量导致的传感器变形无关。

在一些实施例中,XR设备可以具有头部单元,该头部单元具有用户可固定到其头部的头戴式框架,并且可以包括两个波导,在用户的每只眼睛前面一个。波导可以是透明的,使得来自真实世界的对象的环境光可以透射通过波导,并且用户可以看到真实世界的对象。每个波导可以将来自投影仪的投影光发送到用户的相应眼睛。投影光可以在眼睛的视网膜上形成图像。因此,眼睛的视网膜接收环境光和投影光。用户可以同时看到真实世界的对象以及由投影光创建的一个或多个虚拟对象。在一些实施例中,XR设备可以具有检测用户周围的真实世界对象的传感器。这些传感器例如可以是捕获可被处理以识别真实世界对象的位置的图像的相机。

在一些实施例中,与在世界坐标框架中附加虚拟内容相反,XR系统可以向虚拟内容分配本地坐标框架。此类配置使得虚拟内容能够被附加到更持久的框架位置,诸如持久坐标框架(PCF)。在一些实施例中,当头部姿势会话结束时,可以将本地坐标框架转换为世界坐标框架。在一些实施例中,世界坐标框架可以是相对于当前本地坐标框架已经定位的先前会话的地图的原点。当对象的位置改变时,XR设备可以检测环境地图中的变化并且确定用户佩戴的头部单元相对于真实世界对象的运动。

图1示出根据一些实施例的XR系统10。XR系统可以包括由第一用户14.1佩戴的第一XR设备12.1,以桌子16形式的真实对象,网络18,以及服务器20。

在所示示例中,第一XR设备12.1包括头部单元22、腰包24和电缆连接26。第一用户14.1将头部单元22固定至其头部,并且将远离头部单元22的腰包24固定至其腰部。电缆连接26将头部单元22连接到腰包24。头部单元22包括用于在允许第一用户14.1看到诸如桌子16的真实对象的同时向第一用户14.1显示一个或多个虚拟对象的技术。腰包24主要包括第一XR设备12.1的处理和通信能力。在一些实施例中,处理和通信能力可以全部或部分地驻留在头部单元22中,使得腰包24可以被移除或者可以位于诸如背包的另一设备中。

在所示的示例中,腰包24经由无线连接被连接到网络18。服务器20连接到网络18并保持代表本地内容的数据。腰包24经由网络18从服务器20下载表示本地内容的数据。腰包24经由电缆连接26向头部单元22提供数据。头部单元22可以包括具有光源(例如激光光源或发光二极管(LED)光源)的显示器,以及引导光的波导。

在一些实施例中,第一用户14.1可以将头部单元22安装至其头部,并将腰包24安装至其腰部。腰包24可以通过网络18从服务器20下载图像数据。第一用户14.1可以通过头部单元22的显示器看到桌子16。形成头部单元22的一部分的投影仪可以从腰包24接收图像数据并基于该图像数据生成光。光可以行进通过形成头部单元22的显示器的一部分的一个或多个波导。然后,光可以离开波导并传播到第一用户14.1的眼睛的视网膜上。投影仪可以以在第一用户14.1的眼睛的视网膜上复制的图案生成光。落在第一用户14.1的眼睛的视网膜上的光可以具有所选择的景深,使得第一用户14.1感知在波导之后的预选深度处的图像。另外,第一用户14.1的两只眼睛可以接收稍微不同的图像,使得第一用户14.1的大脑感知到距头部单元22的所选择距离处的一个或多个三维图像。在所示的示例中,第一用户14.1感知桌子16上方的虚拟内容28。虚拟内容28的比例及其相距第一用户14.1的位置和距离由表示虚拟内容28的数据以及用于向第一用户14.1显示虚拟内容28的各种坐标框架确定。

在所示的示例中,虚拟内容28从附图的角度是不可见的,并且通过使用第一XR设备12.1对于第一用户14.1是可见的。虚拟内容28可以最初作为数据结构驻留在腰包24中的视觉数据和算法内。然后,当头部单元22的投影仪基于数据结构生成光时,数据结构可以将自身表现为光。应当理解,尽管虚拟内容28在第一用户14.1前面的三维空间中不存在,但是虚拟内容28仍表示在出于说明目的的三维空间中的图1中。可以在该描述中使用三维空间中的计算机数据的可视化来示出由一个或多个用户感知到有助于渲染的数据结构如何在腰包24中的数据结构内彼此相关。

图2示出根据一些实施例的第一XR设备12.1的部件。第一XR设备12.1可以包括头部单元22,以及形成视觉数据和算法的一部分的各种部件,包括例如渲染引擎30、各种坐标框架32、各种原点和目的地坐标框架34以及各种原点到目的地坐标框架变换器36。

头部单元22可以包括头戴式框架40、显示系统42、真实对象检测相机44、运动跟踪相机46和惯性测量单元48。

头戴式框架40可以具有可固定到图1中的第一用户14.1的头部的形状。显示系统42、真实对象检测相机44、运动跟踪相机46和惯性测量单元48可以安装到头戴式框架40,并且因此与头戴式框架40一起移动。

坐标系统32可以包括本地数据系统52、世界框架系统54、头部框架系统56和相机框架系统58。

本地数据系统52可以包括数据通道62、本地框架确定例程64和本地框架存储指令66。数据通道62可以是内部软件例程,诸如外部电缆或射频接收机的硬件部件,或者诸如打开的端口的混合部件。数据通道62可以被配置为接收表示虚拟内容的图像数据68。

本地框架确定例程64可以连接到数据通道62。本地框架确定例程64可以被配置为确定本地坐标框架70。在一些实施例中,本地框架确定例程可以基于真实世界对象或真实世界位置来确定本地坐标框架。在一些实施例中,本地坐标框架可以基于头部姿势会话的初始化时的原点。在一些实施例中,本地坐标框架可以位于设备被引导的位置,或者可以位于在头部姿势在引导会话期间丢失时的新的地方。在一些实施例中,本地坐标框架可以是头部姿势会话开始时的原点。在一些实施例中,虚拟内容还可以具有相关联的内容坐标框架。在一些实施例中,内容坐标框架可以基于相对于浏览器窗口的底部边缘的顶部边缘、字符的头部或脚、包围虚拟内容的棱柱或边界框的外表面上的节点,或放置定义虚拟内容的面向方向和放置虚拟内容的位置(例如,节点,诸如放置节点或锚定节点)的坐标框架的任何其它合适位置等。

本地框架存储指令66可以连接到本地框架确定例程64。本领域技术人员将理解,软件模块和例程通过子例程、调用等彼此“连接”。本地框架存储指令66可以将本地坐标框架70存储为原点和目的地坐标框架34内的本地坐标框架72。在一些实施例中,原点和目的地坐标框架34可以是可被操纵或变换以使虚拟内容在会话之间持续存在的一个或多个坐标框架。在一些实施例中,会话可以是XR设备的启动和关闭之间的时间段。两个会话可以是单个XR设备的两个启动和关闭时间段,或者是两个不同的XR设备的启动和关闭时间段。

在一些实施例中,原点和目的地坐标框架34可以是为了使第一用户的XR设备和第二用户的XR设备识别公共位置所需的一个或多个变换中涉及的坐标框架。在一些实施例中,目的坐标框架可以是应用于目标坐标框架的一系列计算和变换的输出,以便第一和第二用户在相同位置中观看虚拟内容。

渲染引擎30可以连接到数据通道62。渲染引擎30可以从数据通道62接收图像数据68,使得渲染引擎30可以至少部分地基于图像数据68渲染虚拟内容。

显示系统42可以连接到渲染引擎30。显示系统42可以包括将图像数据68变换为可见光的部件。可见光可以形成两个图案,每只眼睛一个。可见光可以进入图1中的第一用户14.1的眼睛,并且可以在第一用户14.1的眼睛的视网膜上被检测到。

真实对象检测相机44可以包括可以从头戴式框架40的不同侧捕获图像的一个或多个相机。运动跟踪相机46可以包括可以在头戴式框架40的侧面上捕获图像的一个或多个相机。可以使用一组一个或多个相机代替表示真实对象检测相机44和运动跟踪相机46的两组一个或多个相机。在一些实施例中,相机44、46可以捕获图像。

在一些实施例中,可以将由相机44、46捕获的图像计算为一个或多个关键帧(例如,图11D中的关键帧1、2)。关键帧可以对应于相机姿势。关键帧可以包括以相机姿势捕获的一个或多个相机图像。在一些实施例中,XR系统可以确定以相机姿势捕获的相机图像的一部分是无用的,并且因此不将该部分包括在关键帧中。因此,使用关键帧将新图像与场景的早期知识对齐可以减少XR系统计算资源的使用。在一些实施例中,关键帧可以是在具有方向/角度的位置处的图像或图像数据。在一些实施例中,关键帧可以是可以从其中观察到一个或多个地图点的位置和方向。在一些实施例中,关键帧可以是具有ID的坐标框架。美国专利申请序列号15/877,359描述了关键帧,并且通过引用将其全部内容合并于此。

惯性测量单元48可以包括用于检测头部单元22的运动的多个设备。惯性测量单元48可以包括重力传感器、一个或多个加速度计以及一个或多个陀螺仪。惯性测量单元48的传感器组合地跟踪头部单元22在至少三个正交方向中以及围绕至少三个正交轴的运动。

在所示的示例中,世界框架系统54包括世界表面确定例程78、世界框架确定例程80和世界框架存储指令82。世界表面确定例程78连接到真实对象检测相机44。世界表面确定例程78接受基于由真实对象检测相机44捕获的图像的图像和/或关键帧,并且处理图像以识别图像中的表面。深度传感器(未示出)可以确定到表面的距离。因此,这些表面由包括他们的大小、形状和与真实对象检测相机的距离的三个维度的数据表示。

在一些实施例中,世界表面确定例程78可以将一个或多个关键帧转换为持久姿势(例如,图11D中的持久姿势1、2)。持久姿势可以是例程78的输出。在一些实施例中,持久姿势可以是具有一个或多个相关联关键帧的坐标位置和/或方向。在一些实施例中,可以在用户已经行进一定距离(例如三米)之后,自动创建持久姿势。在一些实施例中,持久姿势可以在定位期间用作参考点。在一些实施例中,由世界表面确定例程78确定的数据可以被存储在可通行世界中(例如,物理世界中的真实对象的数字表示,其可以被存储并随着物理世界中的真实对象的变化而被更新)。

在一些实施例中,可通行世界可以包括一个或多个规范地图或由一个或多个规范地图创建,每个规范地图可以包括对应的世界坐标框架。规范地图可以源自跟踪地图(TM)(例如,图40A中的TM 1102),该跟踪地图可以在TM会话结束后被转换为规范地图。在一些实施例中,TM可以是XR设备的头部姿势稀疏地图。在一些实施例中,XR设备可以将一个或多个TM发送到云,以与由XR设备在不同时间或由其它XR设备捕获的附加TM合并。

在一些实施例中,持久框架确定例程80可以连接到世界表面确定例程78,并且可以确定持久坐标框架(PCF)84。PCF可以包括多个PCF锚点(例如,图11D中的PCF锚点1-5)。可以基于不同PCF锚点之间允许的预定义距离来确定新的PCF锚点。世界表面确定例程78可以在可通行世界中存储可以构成PCF的PCF锚点。在一些实施例中,世界框架确定例程80可以在用户行进预定距离(例如,五米)时将一个或多个持久姿势转换为PCF锚点。在一些实施例中,例如,在可通行世界中,PCF锚点可以与一个或多个世界坐标框架86相关联。在一些实施例中,世界坐标框架86可以被存储在原点和目的地坐标框架34内。

在一些实施例中,虚拟内容自己的内容坐标框架(即,独立于其真实世界位置而附加到虚拟内容的坐标框架)可以与一个或多个PCF锚点相关联。发明人已经认识并理解到,与直接针对世界坐标框架进行测量相反,将虚拟内容与PCF锚点相关联可以赋予虚拟内容更持久的框架位置。例如,如果将虚拟灯放置在桌子上,则桌子上可能有多个数据点,以提供用于虚拟灯的相对定位的放置输入,该位置输入基本上不会随时间推移改变。相比之下,如果根据特定取向和位置创建了世界地图,并且用户改变了位置或取向,因此需要新的世界坐标框架,则虚拟灯可能会继续利用相同的本地坐标框架,而不是调节到可能会在灯的外观中引入抖动或位置偏移的新的世界框架。

在一些实施例中,持久框架存储指令82可以连接到持久框架确定例程80,以从持久框架确定例程80接收持久坐标框架84。在一些实施例中,持久框架存储指令82可以存储本地和/或云中的数据库的持久坐标框架84(例如,可取决于安全设置)。

头部框架系统56可以包括头部框架确定例程90和头部框架存储指令92。头部框架确定例程90可以连接到运动跟踪相机46和惯性测量单元48。头部框架确定例程90可以使用来自运动跟踪相机46和惯性测量单元48的数据来计算头部坐标框架94。例如,惯性测量单元48可以具有确定相对于头部单元22的重力方向的重力传感器。运动跟踪相机46可以连续地捕获由头部框架确定例程90用来细化头部坐标框架94的图像。当图1中的第一用户14.1移动他们的头部时,头部单元22移动。运动跟踪相机46和惯性测量单元48可以连续地将数据提供给头部框架确定例程90,使得头部框架确定例程90可以更新头部坐标框架94。

头部框架存储指令92可以连接到头部框架确定例程90,以从头部框架确定例程90接收头部坐标框架94。头部框架存储指令92可以将头部坐标框架94存储为原点和目的地坐标框架34中的头部坐标框架96。头部框架存储指令92可以在头部框架确定例程90重新计算头部坐标框架94时,将更新的头部坐标框架94重复存储为头部坐标框架96。在一些实施例中,头部坐标框架可以是可穿戴XR设备12.1相对于本地坐标框架72的位置。

相机框架系统58可以包括相机内在特性98。相机内在特性98可以包括作为其设计和制造特征的头部单元22的尺寸。相机内在特性98可用于计算存储在原点和目的地坐标框架34内的相机坐标框架100。

在一些实施例中,相机坐标框架100可以包括图1中的第一用户14.1的左眼的所有瞳孔位置。当左眼从左向右或上下移动时,左眼的瞳孔位置位于相机坐标框架100内。另外,右眼的瞳孔位置位于右眼的相机坐标框架100内。在一些实施例中,相机坐标框架100可以包括当拍摄图像时相机相对于本地坐标框架的位置。

原点到目的地坐标框架变换器36可以包括本地到世界坐标变换器104、世界到头部坐标变换器106和头部到相机坐标变换器108。本地到世界坐标变换器104可以接收本地坐标框架72并将本地坐标框架72变换为世界坐标框架86。本地坐标框架72到世界坐标框架86的变换可以表示为在世界坐标框架86内的变换为世界坐标框架110的本地坐标框架。

世界到头部坐标变换器106可以从世界坐标框架86变换为头部坐标框架96。世界到头部坐标变换器106可以将变换为世界坐标框架110的本地坐标框架变换为头部坐标框架96。该变换可以表示为在头部坐标框架96内变换为头部坐标框架112的本地坐标框架。

头部到相机坐标变换器108可以从头部坐标框架96变换为相机坐标框架100。头部到相机坐标变换器108可以将变换为头部坐标框架112的本地坐标框架变换为在相机坐标框架100内的变换为相机坐标框架114的本地坐标框架。可以将变换为相机坐标框架114的本地坐标框架输入到渲染引擎30中。渲染引擎30可以基于变换为相机坐标框架114的本地坐标框架来渲染表示本地内容28的图像数据68。

图3是各种原点和目的地坐标框架34的空间表示。在该图中表示了本地坐标框架72、世界坐标框架86、头部坐标框架96和相机坐标框架100。在一些实施例中,与XR内容28相关联的本地坐标框架可以定义虚拟内容的位置和旋转(例如可以提供节点和面向方向),然后当虚拟内容被放置在真实世界中使得虚拟内容可以被用户观看时可以将其变换为本地和/或世界坐标框架和/或PCF。每个相机可以具有包含一只眼睛的所有瞳孔位置的其自己的相机坐标框架100。附图标记104A和106A分别表示由图2中的本地到世界坐标变换器104、世界到头部坐标变换器106和头部到相机坐标变换器108进行的变换。

图4描绘了根据一些实施例的用于从头部坐标框架变换到相机坐标框架的相机渲染协议。在所示的示例中,单只眼睛的瞳孔从位置A移动到位置B。要显现为静止的虚拟对象将取决于瞳孔的位置投影到两个位置A或B之一的深度平面上(假设相机被配置为使用瞳孔作为其坐标框架)。结果,当眼睛从位置A移动到位置B时,使用变换为头部坐标框架的瞳孔坐标框架将导致静止的虚拟对象的抖动。该情况称为视图相关的显示或投影。

如图5所示,相机坐标框架(例如CR)被放置并包含所有瞳孔位置,并且无论瞳孔位置A和B如何,对象投影现在都将是一致的。头部坐标框架变换为CR框架,该CR框架被称为视图独立显示或投影。可以将图像重新投影应用于虚拟内容以解决眼睛位置的变化,然而,由于渲染仍处于相同位置,因此可以最小化抖动。

如图6中所示,可以与第一XR设备12.1处于相同场景中的第二XR设备12.2可以包括永久坐标框架(PCF)集成单元1300、生成图像数据68的应用1302以及框架嵌入生成器308。在一些实施例中,可以将地图下载系统126、锚点识别系统128、地图2、定位模块130、规范地图合并器132、规范地图133和地图发布者136集合为可通行世界单元1304。PCF集成单元1300可以连接到可通行世界单元1304和第二XR设备12.2的其它部件,以允许PCF锚点的取得、生成、使用、上传和下载。由PCF锚点组成的坐标框架可以在不断改变的世界(例如,人们可以进出场景并且诸如门的对象相对于场景移动的世界)中实现更大的持久,需要更少的存储空间和传输速率,并实现使用各个PCF锚点及其相对于彼此的关系和/或PCF锚点的集成星座来对场景进行地图构建。

在一些实施例中,PCF集成单元1300可以包括先前存储在第二XR设备12.2的存储单元上的数据存储中的PCF锚点1306、PCF跟踪器1308、持久姿势获取器1310、PCF检查器1312、PCF生成系统1314、坐标框架计算器1316、持久姿势计算器1318和包括跟踪地图和持久姿势变换器1320、持久姿势和PCF变换器1322以及PCF和图像数据变换器1324的三个变换器。

在一些实施例中,PCF跟踪器1308可以具有由应用1302可选择的打开提示和关闭提示。应用1302可以由第二XR设备12.2的处理器可执行,以例如显示虚拟内容。应用1302可以具有经由打开提示来打开PCF跟踪器1308的调用。当PCF跟踪器1308打开时,PCF跟踪器1308可以生成PCF锚点。应用1302可以具有可以经由关闭提示来关闭PCF跟踪器1308的后续调用。当PCF跟踪器1308关闭时,PCF跟踪器1308终止PCF生成。

在一些实施例中,服务器20可包括先前已经与规范地图120相关联地保存的多个持久姿势1332和多个PCF锚点1330。地图发送器122可将规范地图120与持久姿势1332和/或PCF锚点1330一起发送到第二XR设备12.2。持久姿势1332和PCF锚点1330可以与规范地图133相关联地存储在第二XR设备12.2上。当地图2定位到规范地图133时,可以与地图2相关联地存储持久姿势1332和PCF锚点1330。

在一些实施例中,持久姿势获取器1310可以获取地图2的持久姿势。PCF检查器1312可以连接到持久姿势获取器1310。PCF检查器1312可以基于由持久姿势获取器1310取得的持久姿势从PCF锚点1306取得PCF锚点。由PCF检查器1312取得的PCF锚点可以形成初始组的PCF锚点,该初始组的PCF锚点用于基于PCF锚点的图像显示。

在一些实施例中,应用1302可能需要生成附加PCF锚点。例如,如果用户移动到之前未地图构建的区域,则应用1302可以打开PCF跟踪器1308。PCF生成系统1314可以连接到PCF跟踪器1308,并且随着地图2开始扩展而开始基于地图2生成PCF锚点。由PCF生成系统1314生成的PCF锚点可以形成第二组PCF锚点,该第二组PCF锚点可以用于基于PCF的图像显示。

坐标框架计算器1316可以连接到PCF检查器1312。在PCF检查器1312取得PCF锚点之后,坐标框架计算器1316可以调用头部坐标框架96以确定第二XR设备12.2的头部姿势。坐标框架计算器1316还可调用持久姿势计算器1318。持久姿势计算器1318可直接或间接连接到帧嵌入生成器308。在一些实施例中,帧嵌入生成器308可输出全局特征字符串316,该全局特征字符串316可用作图像(例如帧或关键帧)的数据表示。在一些实施例中,可以将图像/帧指定为与先前的关键帧相距阈值距离(例如3米)行进之后的关键帧。持久姿势计算器1318可以基于多个(例如,三个)关键帧生成持久姿势。在一些实施例中,持久姿势可以基本上是多个关键帧的坐标框架的平均值。

跟踪地图和持久姿势变换器1320可以连接到地图2和持久姿势计算器1318。跟踪地图和持久姿势变换器1320可以将地图2变换为持久姿势以确定相对于地图2的原点处的持久姿势。

持久姿势和PCF变换器1322可以连接到跟踪地图和持久姿势变换器1320,并进一步连接到PCF检查器1312和PCF生成系统1314。持久姿势和PCF变换器1322可以将(跟踪地图已经变换到的)持久姿势从PCF检查器1312和PCF生成系统1314变换为PCF锚点,以确定相对于持久姿势的PCF。

PCF和图像数据变换器1324可以连接到持久姿势和PCF变换器1322以及数据通道62。PCF和图像数据变换器1324将PCF变换为图像数据68。渲染引擎30可以连接到PCF和图像数据变换器1324以相对于PCF锚点向用户显示图像数据68。

PCF集成单元1300可以将采用PCF生成系统1314生成的附加PCF锚点存储在PCF锚点1306内。PCF锚点1306可以相对于持久姿势存储。当地图发布者136向服务器20发送地图2时,地图发布者136可以取得PCF锚点1306和与PCF锚点1306相关联的持久姿势,地图发布者136还向服务器20发送与地图2相关联的PCF和持久姿势。当服务器20的地图存储例程118存储地图2时,地图存储例程118还可以存储由第二观看设备12.2生成的持久姿势和PCF锚点。地图合并算法124可以采用与规范地图120相关联并分别存储在持久姿势1332和PCF锚点1330内的地图2的持久姿势和PCF锚点来创建规范地图120。

第一XR设备12.1可以包括与第二XR设备12.2的PCF集成单元1300相似的PCF集成单元。当地图发送器122向第一XR设备12.1发送规范地图120时,地图发送器122可以发送与规范地图120相关联并且源自第二XR设备12.2的持久姿势1332和PCF 1330。第一XR设备12.1可以将PCF锚点和持久姿势存储在第一XR设备12.1的存储设备上的数据存储内。然后,第一XR设备12.1可以利用源自第二XR设备12.2的持久姿势和PCF锚点以用于相对于PCF锚点的图像显示。另外地或替代地,第一XR设备12.1可以以类似于如上所述的第二XR设备12.2的方式取得、生成、使用、上传和下载PCF锚点和持久姿势。

图44示出针对房间生成的关键帧。在所示示例中,针对房间左墙壁上的门生成了第一关键帧KF1。针对房间的地板、左墙壁和右墙壁相交的角落区域生成第二关键帧KF2。针对房间右墙壁上的窗户区域生成第三关键帧KF3。在墙壁的地板上,在地毯的远端区域生成第四关键帧KF4。针对地毯的最接近用户的区域生成第五关键帧KF5。

图45示出用户环境中的持久姿势PP1和PP2。在一些实施例中,当设备测量行进的阈值距离时,和/或当应用请求新的持久姿势时,创建新的持久姿势。在一些实施例中,阈值距离可以是3米、5米、20米或任何其它合适的距离。选择较小的阈值距离(例如1m)可导致计算负荷的增加,因为与较大的阈值距离相比,可以创建和管理较大数量的PP。选择较大的阈值距离(例如40m)可导致增加的虚拟内容放置错误,因为将创建较少数量的PP,这将导致创建的较少PCF数量,意味着附加到PCF锚点的虚拟内容可能是远离PCF锚点相对较大的距离(例如30m),并且误差随着从锚点到虚拟内容的增加距离而增加。

在一些实施例中,可以在新会话开始时创建PP。该初始PP可以被认为是零,并且可以可视化为具有等于阈值距离的半径的圆的中心。当设备到达圆的周长,并且在一些实施例中,应用请求新的PP时,可以将新的PP放置在设备的当前位置(在阈值距离处)。在一些实施例中,如果设备能够在距设备新位置的阈值距离内找到现有的PP,则不会在阈值距离处创建新的PP。在一些实施例中,当创建新的PP时,设备将一个或多个最接近的关键帧附加到PP。在一些实施例中,PP相对于关键帧的位置可以基于在创建PP时设备的位置。在一些实施例中,当设备行进阈值距离时将不会创建PP,除非应用请求PP。

在一些实施例中,当应用具有要显示给用户的虚拟内容时,应用可以从设备请求PCF。来自应用的PCF请求可触发PP请求,并且在设备行进阈值距离后将创建新的PP。图45示出第一永久姿势PP1,其可以具有附加的最接近的关键帧(例如,KF1、KF2和KF3)。图45还示出第二永久姿势PP2,其可以具有附加的最接近的关键帧(例如,KF4和KF5)。

图46示出可以包括PP1和PP2的PCF锚点。如上所述,PCF可以用于显示相对于PCF的图像数据。在一些实施例中,每个PCF可以在另一个坐标框架(例如,世界坐标框架)和描述符中具有坐标。在一些实施例中,PCF锚点的各种星座可以以持久的方式被组合以表示真实世界,并且这需要更少的数据和更少的数据传输。

图47示出根据一些实施例的建立和使用持久坐标框架的方法4700。方法4700可以从使用XR设备的一个或多个传感器捕获关于场景的图像(动作4702)开始。可以使用多个相机,并且一个相机可以生成多个图像。方法4700可以包括:从捕获的图像中提取(4704)特征;针对所提取的特征生成(动作4706)描述符;基于描述符生成(动作4708)关键帧;以及基于关键帧生成(动作4710)持久姿势。在一些实施例中,可以基于图像中的每个图像来生成关键帧,并且可以使用所有相机的所有图像的关键帧的平均值来生成持久姿势。方法4700可以包括基于持久姿势来生成(动作4712)锚点。锚点可以包括一个或多个持久姿势。方法4700可以包括将要由XR设备显示的虚拟内容的图像数据与锚点中的至少一个锚点相关联(步骤4714)。

图48A至48I是示出建立和使用持久坐标框架的示例的示意图,该示例可以实现XR设备之间的数据共享。图48A示出具有尚未定位到规范地图的相应的本地跟踪地图4804A、4804B的两个用户4802A、4802B。各个用户的原点4806A、4806B由其相应区域中的坐标系(例如,世界坐标系)来描绘。在一些实施例中,TM 4802A可以包括持久姿势(PP)4808A;TM4802B可以包括PP 4808B。图48B示出由相应的用户4802A、4802B所佩戴的XR设备可以基于PP 4808A、4908B来创建本地PCF锚点4810A、4810B。图48C示出持久内容4812(例如,虚拟内容)现在可以附加到PCF锚点4810A、4810B。图48D示出两个设备都接收到例如来自云的规范地图1814。图48E示出两个设备都定位到相应设备上的规范地图4814。图48F示出每个设备在相应设备上的本地PCF锚点(例如,PCF锚点4810A、4810B)之间创建到规范地图上的相应持久姿势(例如,PP 4818A、4818B)的附加(例如,附加4816A、4816B)。图48G示出从规范地图到本地跟踪地图的持久姿势快照。如可以看出的,本地跟踪地图经由持久姿势彼此连接。图48H示出由用户4802A佩戴的设备上的PCF锚点4810A可在用户4802B佩戴的设备中访问。图48I示出所有地图最终可能合并,并且PCF可能在连接的星座中“联合”。

图6更详细地示出根据一些实施例的第一XR设备12.1以及第二XR设备12.2和服务器20的视觉数据和算法。尽管未示出,但是第一XR设备12.1可以被配置为与第二XR设备12.2相同。

服务器20可以具有地图存储例程118、规范地图120、地图发送器122以及地图合并算法124。

在所示的示例中,第一XR设备12.1生成本地跟踪地图(以下称为“地图1”),并且地图存储例程118从第一XR设备12.1接收地图1。然后,地图存储例程118将地图1作为规范地图120存储在服务器20的存储设备上。

第二XR设备12.2包括地图下载系统126、锚点识别系统128、定位模块130、规范地图合并器132、本地内容定位系统134以及地图发布者136。

在使用中,地图发送器122将规范地图120发送到第二XR设备12.2,并且地图下载系统126从服务器20下载并存储规范地图120作为规范地图133。

锚点识别系统128连接到世界表面确定例程78。锚点识别系统128基于由世界表面确定例程78检测到的对象来识别锚点。锚点识别系统128使用锚点生成第二地图(地图2)。如循环138所示,锚点识别系统128继续识别锚点并继续更新地图2。基于由世界表面确定例程78提供的数据,将锚点的位置记录为三维数据。世界表面确定例程78从真实对象检测相机44接收图像并且从深度传感器135接收深度数据,以确定表面的位置以及它们与深度传感器135的相对距离。

定位模块130连接到规范地图133和地图2。定位模块130重复尝试将地图2定位到规范地图133。规范地图合并器132连接到规范地图133和地图2。当定位模块130将地图2定位到规范地图133时,规范地图合并器132将规范地图133合并到地图2的锚点中。然后,采用规范地图中包括的丢失数据来更新地图2。

本地内容定位系统134连接到地图2。本地内容定位系统134例如可以是用户可以在世界坐标框架内的特定位置定位本地内容的系统。然后,本地内容将自身附加到地图2的一个锚点。本地到世界坐标变换器104基于本地内容定位系统134的设置将本地坐标框架变换为世界坐标框架。已经参考图2描述了渲染引擎30、显示系统42和数据通道62的功能。

地图发布者136将地图2上传到服务器20。服务器20的地图存储例程118然后将地图2存储在服务器20的存储介质内。

地图合并算法124将地图2与规范地图120合并。当已经存储了多于两个的地图(例如,三个或四个地图)时,地图合并算法124将所有地图合并到规范地图120中以渲染新规范地图120。然后,地图发送器122将新规范地图120发送到位于由新规范地图120表示的区域中的任何和所有设备12.1和12.2。当设备12.1和12.2将它们相应的地图定位到规范地图120时,规范地图120成为升级的地图。

图7更详细地示出显示系统42。显示系统42包括立体分析器144,该立体分析器144连接到渲染引擎30并形成视觉数据和算法的一部分。

显示系统42进一步包括左投影仪166A和右投影仪166B以及左波导170A和右波导170B。左投影仪166A和右投影仪166B连接到电源。每个投影仪166A和166B具有用于将要提供给相应投影仪166A或166B的图像数据的相应输入。相应的投影仪166A或166B在通电时生成二维图案的光并从中发出光。左波导170A和右波导170B被定位成分别接收来自左投影仪166A和右投影仪166B的光。左波导170A和右波导170B是透明波导。

在使用中,用户将头戴式框架40安装到他们的头部。头戴式框架40的部件可例如包括围绕用户的头部的后面缠绕的带子(未示出)。左波导170A和右波导170B然后位于用户的左眼220A和右眼220B的前面。

渲染引擎30将其接收的图像数据输入到立体分析器144中。该图像数据是图1中本地内容28的三维图像数据。该图像数据被投影到多个虚拟平面上。立体分析器144分析图像数据,以基于用于投影到每个深度平面上的图像数据确定左图像数据集和右图像数据集。左图像数据集和右图像数据集是表示二维图像的数据集,该二维图像以三维进行投影以给予用户深度感。

立体分析器144将左图像数据集和右图像数据集输入到左投影仪166A和右投影仪166B。然后,左投影仪166A和右投影仪166B创建左照明图案和右照明图案。显示系统42的部件以平面图示出,但是应当理解,当以正视图示出时,左图案和右图案是二维图案。每个光图案包括多个像素。为了说明的目的,示出了来自两个像素的光线224A和226A离开左投影仪166A并进入左波导170A。光线224A和226A从左波导170A的侧面反射。示出了光线224A和226A通过内部反射在左波导170A内从左向右传播,但是应当理解,光线224A和226A也使用折射和反射系统在一定方向中传播到纸中。

光线224A和226A通过瞳孔228A离开左光波导170A,并且然后通过左眼220A的瞳孔230A进入左眼220A。然后,光线224A和226A落在左眼220A的视网膜232A上。以该方式,左光图案落在左眼220A的视网膜232A上。给用户的感觉是,形成在视网膜232A上的像素是用户感知为在左波导170A的与左眼220A相对的一侧上的某个距离处的像素234A和236A。深度感知是通过操纵光的焦距来创建的。

以类似的方式,立体分析器144将右图像数据集输入到右投影仪166B中。右投影仪166B透射右光图案,该右光图案由光线224B和226B形式的像素表示。光线224B和226B在右波导170B内反射并通过瞳孔228B出射。光线224B和226B然后通过右眼220B的瞳孔230B进入并且落在右眼220B的视网膜232B上。光线224B和226B的像素被感知为右波导170B后面的像素134B和236B。

在视网膜232A和232B上创建的图案被分别感知为左图像和右图像。由于立体分析器144的功能,左图像和右图像彼此略有不同。左图像和右图像在用户的脑海中被感知为三维渲染。

如所提及的,左波导170A和右波导170B是透明的。来自诸如左波导170A和右波导170B的与眼睛220A和220B相对的一侧上的桌子16的真实对象的光可以投影通过左波导170A和右波导170B并落在视网膜232A和232B上。

图8示出第一XR设备12.1上的地图1和本地内容(内容123和内容456)。地图1包括许多锚点(锚点a至锚点d)。从第一XR设备12.1的角度来看,锚点a例如具有(0,0,0)的X、Y和Z坐标,并且锚点b具有X、Y和Z坐标(-1,0,0)。内容123与锚点a相关联。在本示例中,内容123具有相对于(1,0,0)的锚点a的X、Y和Z关系。内容456具有相对于锚点b的关系。在本示例中,内容456具有相对于锚点b的(1,0,0)的X、Y和Z关系。地图1也具有原点(原点1)。

在图9中,第一XR设备12.1将地图1上传到服务器20。服务器20现在具有基于地图1的规范地图。第一XR设备12.1具有在该阶段为空的规范地图。为了讨论的目的,并且在一些实施例中,服务器20除了地图1之外不包括其它地图。第二XR设备12.2上没有存储地图。

第一XR设备12.1还向服务器20发送其Wi-Fi签名数据。服务器20可以使用Wi-Fi签名数据基于从其它设备收集的情报来确定第一XR设备12.1的大致位置,该其它设备过去已经与已记录的这类其它设备的GPS位置一起连接到服务器20或其它服务器。

第一XR设备12.1现在可以结束第一会话(参见图1),并且可以与服务器20断开连接。

图10和图11A示出第二用户14.2发起第二会话。因为第一用户14.1的第一会话已经结束,所以以虚线示出了第一用户14.1。第二XR设备12.2开始记录对象。服务器20可以使用具有不同粒度的各种系统来确定第二XR设备12.2的第二会话与第一XR设备12.1的第一会话在相同的附近处。例如,第一XR设备12.1和第二XR设备12.2中可以包括Wi-Fi签名数据、全球定位系统(GPS)定位数据、基于Wi-Fi签名数据的GPS数据或指示位置的任何其它数据,以记录他们的位置。可替代地,由第二XR设备12.2识别的锚点可以显示与地图1的锚点的相似性。

如图11B中所示,第二XR设备启动并开始收集数据,诸如来自一个或多个相机44、46的图像1110。如图11D中所示,在一些实施例中,XR设备(例如第二XR设备12.2)可以收集一个或多个图像1110并执行图像处理以提取一个或多个特征/关注点1120。每个特征可以转换为描述符1130。在一些实施例中,描述符1130可以用于描述关键帧1140,该关键帧1140可以具有附加的关联图像的位置和方向。一个或多个关键帧1140可以对应于单个持久姿势1150,该单个持久姿势1150可以在距先前持久姿势1150阈值距离(例如3米)之后被自动生成。一个或多个持久姿势1150可以对应于单个PCF 1160,该单个PCF 1160可以在预定距离(例如,每5米)之后被自动生成。随着时间推移,随着用户继续在用户的环境周围移动,并且XR设备继续收集更多的数据(诸如图像1110),可能创建附加PCF锚点(例如PCF锚点4,5和PCF锚点3)。一个或两个应用1180可以在XR设备上运行,并将虚拟内容1170提供给XR设备以呈现给用户。虚拟内容可以具有关联的内容坐标框架,该内容坐标框架可以相对于一个或多个PCF锚点放置。如图11B中所示,第二XR设备12.2创建三个PCF锚点。在一些实施例中,第二XR设备12.2可以尝试定位到存储在服务器20上的一个或多个规范地图。在一些实施例中,如图11C中所示,第二XR设备12.2可以从服务器20下载规范地图120。第二XR设备12.2上的地图1包括锚点a至d和原点1。在一些实施例中,服务器20可以具有用于各个位置的多个规范地图,并且可以确定在第一会话期间第二XR设备12.2位于与第一XR设备12.1附近相同的附近处,并向第二XR设备12.2发送该附近的规范地图。

图12示出第二XR设备12.2开始识别锚点以用于生成地图2。第二XR设备12.2仅识别了单个锚点,即PCF 1,2。第二XR设备12.2的PCF 1,2的X、Y和Z坐标可以是(1,1,1)。地图2具有其自己的原点(原点2),该原点可以基于当前头部姿势会话的设备2的头部姿势。在一些实施例中,第二XR设备12.2可以立即尝试将地图2定位到规范地图。在一些实施例中,因为系统不能识别两个地图之间的任何或足够的重叠,所以地图2可能不能定位到规范地图(地图1)中(即,定位可能失败)。在一些实施例中,系统可以基于本地地图和规范地图之间的锚点/PCF比较来定位。在一些实施例中,系统可以基于本地地图和规范地图之间的持久姿势比较来定位。在一些实施例中,系统可以基于本地地图和规范地图之间的关键帧比较来定位。

图13示出第二XR设备12.2识别出地图2的其它锚点(PCF 1、2,PCF 3,PCF 4、5)之后的地图2。第二XR设备12.2再次尝试将地图2定位到规范地图。由于地图2已扩展为与规范地图的至少一部分重叠,因此定位尝试将成功。在一些实施例中,本地跟踪地图、地图2和规范地图之间的重叠可以由PCF/锚点、持久姿势、关键帧或任何其它合适的中间或派生构造来表示。

此外,第二XR设备12.2已将内容123和内容456与地图2的PCF 1、2和PCF 3相关联。内容123具有相对于的PCF 1、2的X、Y和Z坐标(1,0,0)。

类似地,相对于地图2中的PCF 3,内容456的X、Y和Z坐标为(1,0,0)。

图14A和图14B示出地图2到规范地图的成功定位。地图1410的重叠区域/体积/截面表示地图1和规范地图的共同部分。由于地图2在定位之前创建了PCF 3和4、5,而规范地图在创建地图2之前创建了锚点a和c,因此创建了不同的锚点/PCF以表示实际空间中的相同体积(例如,在不同的地图中)。

如图15中所示,第二XR设备12.2扩展了地图2,以包括来自规范地图的锚点a-d。包括锚点a-d表示地图2到规范地图的定位。在一些实施例中,XR系统可以执行优化步骤以从重叠区域去除重复的锚点/PCF,诸如1410中的PCF,PCF 3和PCF 4、5。在地图2定位后,虚拟内容(诸如内容456和内容123)的放置将予更新的地图2中最接近的更新的锚点/PCF相关联。虚拟内容相对于用户出现在相同的真实世界位置中,尽管更改了内容的PCF附加,并且尽管更新了地图2的锚点。

如图16中所示,第二XR设备12.2继续扩展地图2,例如当用户围绕真实世界走动时,第二XR设备12.2会识别出其它锚点(锚点e、f、g和h)。还应注意,地图1在图15和图16中没有扩展。

参考图17,第二XR设备12.2将地图2上传到服务器20。服务器20将地图2与规范地图一起存储。在一些实施例中,当针对第二XR设备12.2的会话结束时,地图2可以上传到服务器20。

服务器20内的规范地图现在包括锚点i,该锚点i不包括在第一XR设备12.1上的地图1中。当第三XR设备(未示出)将地图上传到服务器20并且该地图包括锚点i时,服务器20上的规范地图可能已扩展为包括锚点i。

在图18中,服务器20将地图2与规范地图合并以形成新的规范地图。服务器20确定锚点a至d对于规范地图和地图2是共同的。服务器扩展规范地图以包括锚点e至h和来自地图2的PCF 1、2,以形成新的规范地图。第一XR设备12.1和第二XR设备12.2上的规范地图基于地图1,并且已过时。

在图19中,服务器20将新的规范地图发送到第一XR设备12.1和第二XR设备12.2。在一些实施例中,当第一XR设备12.1和第二设备12.2试图在不同的或新的或随后的会话期间进行定位时,这可能发生。第一XR设备12.1和第二XR设备12.2如上所述进行,以将其相应的本地地图(分别为地图1和地图2)定位到新的规范地图。

如图20中所示,头部坐标框架96或“头部姿势”与地图2中的锚点相关。在一些实施例中,地图的原点,原点2,是基于会话开始时的第二XR设备12.2的头部姿势。在会话期间创建锚点时,将相对于本地坐标框架原点2放置锚点。地图2的锚点用作相对于世界坐标框架的持久坐标框架,其中世界坐标框架可以是前一会话的本地坐标框架(例如,图8中的地图1的原点1)。先前已经参考图2讨论了从世界坐标框架到头部坐标框架96的变换。图20中所示的头部坐标框架96仅具有两个正交轴,该两个正交轴相对于地图2的锚点处于特定的坐标位置中,以及相对于地图2处于特定的角度。然而应当理解,头部坐标框架96相对于地图2的锚点位于三维位置,并且在三维空间内具有三个正交轴。

在图21中,头部坐标框架96已相对于地图2的锚点移动。由于第二用户14.2已移动其头部,因此头部坐标框架96已移动。用户可以以六个自由度(6dof)移动其头部。头部坐标框架96因此可以在6dof(即,从其在图20中的先前位置在三维中,以及相对于地图2的锚点围绕三个正交轴)中移动。当图2中的真实对象检测相机44和惯性测量单元48分别检测头部单元22的真实对象和运动时,头部坐标框架96被调节。关于头部姿势跟踪的更多信息公开在题为“用于显示设备的增强姿势确定(Enhanced Pose Determination for DisplayDevice)”的美国专利申请序列号16/221,065中,并且通过引用全部并入在此。

图22示出声音可以与一个或多个锚点相关联。用户可以例如佩戴具有立体声的头戴式耳机或耳机。通过耳机的声音位置可以使用传统技术进行模拟。声音的位置可以位于固定位置,使得当用户将其头部向左旋转时,声音的位置向右旋转,使得用户感知到来自真实世界中相同位置的声音。在本示例中,声音的位置由声音123和声音456表示。为了便于讨论,图22在分析方面与图16相似。当第一用户14.1和第二用户14.2在相同或不同时间位于同一房间时,他们感知到声音123和声音456来自真实世界中的相同位置。

图23和图24示出上述技术的另一实现方式。如参考图1所述,第一用户14.1已经发起了第一会话。如图23中所示,第一用户14.1已经终止了第一会话,如虚线所示。在第一会话结束时,第一XR设备12.1将地图1上传到服务器20。第一用户14.1现在已在比第一会话更晚的时间发起了第二会话。由于地图1已经存储在第一XR设备12.1上,因此第一XR设备12.1不会从服务器20下载地图1。如果丢失了地图1,则第一XR设备12.1从服务器20下载地图1。然后,第一XR设备12.1继续构建地图2的锚点,定位到地图1,并进一步开发如上所述的规范地图。然后,如上所述,地图2用于关联本地内容、头部坐标框架、本地声音等。

参考图25和图26,也有可能多于一个的用户在同一会话中与服务器交互。在本示例中,第一用户14.1和第二用户14.2由第三用户14.3与第三XR设备12.3结合在一起。每个XR设备12.1、12.2和12.3开始生成自己的地图,即分别是地图1,地图2和地图3。当XR设备12.1、12.2和12.3继续开发地图1、2和3时,地图被增量上传到服务器20。服务器20合并地图1、2和3以形成规范地图。然后将规范地图从服务器20发送到XR设备12.1、12.2和12.3中的每个XR设备。

图27示出存储在服务器20的计算机可读介质上的数据存储器中的多个规范地图120。每个规范地图120具有与其相关联的多个规范地图标识符。这些规范地图标识符包括地球上由经度和纬度的范围表示的区域。规范地图标识符还包括全局特征字符串。

由于规范地图120可能存在于地球表面,因此以二维方式在地理上说明规范地图120。经度和纬度彼此不同,以唯一地识别规范地图。服务器20具有位置检测器,该位置检测器接收位置数据,包括经度和纬度、Wi-Fi指纹以及由相应的观看设备12.1或12.2拍摄的图像的特征。然后,位置检测器存储位置标识符。并非所有观看设备都向服务器20提供经度和纬度作为位置标识符。然而,观看设备通常会包括Wi-Fi指纹和图像特征作为位置标识符。

图28示出规范地图120和一系列过滤器,包括服务器20执行以确定发送给观看设备的一个或多个地图的相邻区域过滤器300、Wi-Fi指纹过滤器302和关键帧过滤器304,之后是如上所述在观看设备上的定位306。

规范地图120可以具有许多规范地图,诸如数千种规范地图。在一些实施例中,由于带宽限制,不可能将所有规范地图发送到观看设备。

在一些实施例中,相邻区域过滤器300可以选择覆盖经度和纬度的至少一个匹配规范地图120,该经度和纬度包括从观看设备接收到的位置标识符的经度和纬度,只要在该经度和纬度处存在至少一个地图即可。在一些实施例中,相邻区域过滤器300进一步选择覆盖与匹配规范地图相邻的经度和纬度的至少一个相邻规范地图。在一些实施例中,相邻区域过滤器300可以选择多个匹配的规范地图和多个相邻的规范地图。相邻区域过滤器300可以例如将规范地图的数量从数千减少到例如130,以形成第一过滤选择。在一些实施例中,相邻区域过滤器300可以被配置为减少规范地图120的数量。换句话说,进入相邻区域过滤器300的规范地图的数量可以大于离开相邻区域过滤器300的规范地图的数量。

在一些实施例中,Wi-Fi指纹过滤器302形成第二过滤器。Wi-Fi指纹过滤器302基于从观看设备接收的作为位置标识符的一部分的Wi-Fi指纹来确定纬度和经度。然后,Wi-Fi指纹过滤器302将来自Wi-Fi指纹过滤器302的纬度和经度与规范地图120的纬度和经度进行比较,以确定一个或多个规范地图,该一个或多个规范地图在由相邻区域过滤器300建立的第一过滤选择内形成第二过滤选择。第二过滤选择例如可以将规范地图的数量减少到50个形成第二选择的规范地图,该第二选择基于第二过滤选择之外的第一过滤选择而不包括任何规范地图。因此,在此示例中,第一过滤选择包括130个规范地图,并且第二过滤选择包括130个规范地图中的50个规范地图,而不包括130个规范地图中的其它80个规范地图。

关键帧过滤器304将规范地图的数量进一步减少为例如五个规范地图。关键帧过滤器304可以是计算机视觉过滤器,该计算机视觉过滤器将由观看设备捕获的图像表示的数据与表示规范地图120的数据进行比较。关键帧过滤器304因此提供第三过滤选择作为输出,该第三过滤选择仅包括在第二过滤选择之后识别的50个规范地图中的五个规范地图。然后,地图发送器122将基于第三过滤选择的一个或多个规范地图发送到观看设备。在该示例中以及在一些实施例中,观看设备接收五个规范地图,并且在306处尝试定位到所有五个规范地图。

图29A-29C示出帧嵌入生成器308,在一些实施例中,该帧嵌入生成器308可用于服务器20内(或观看设备12.1和12.2中的一个内),以从初始大小(例如76,800个字节)到最终大小(例如256字节/一比特)生成图像的唯一且缩减的数据表示。在一些实施例中,帧嵌入生成器可以被配置为生成图像的数据表示,该图像可以是关键帧或帧。在一些实施例中,帧嵌入生成器308可以被配置为将特定位置和取向处的图像转换为唯一的256字节的数字字符串。由观看设备拍摄的图像320可以由观看设备处理以检测图像320中的特征324(例如,使用深度稀疏特征方法),并且每个特征322可以由32个数字的字符串326表示。由框310共同示出特征322。例如,可以存在n=100个特征,并且每个特征由32个数字的字符串表示。

在一些实施例中,帧嵌入生成器308可以包括多层感知器单元312和最大(最大的)池化单元314。在一些实施例中,多层感知器(MLP)单元312可以包括多层感知器,该多层感知器可以包括神经网络。在一些实施例中,MLP单元312可以被配置为执行矩阵乘法。多层感知器单元312接收图像320的多个特征322,并将每个特征转换为256个数字的相应字符串。在本示例中,可能存在100个特征,并且每个特征由256个数字的字节大小表示。在该示例中,可以创建具有100个水平行和256个垂直列的矩阵。每行具有一系列256个数字,它们大小不同,其中一些较小,而另一些较大。在一些实施例中,MLP的输出可以是n×256矩阵328,其中n表示从图像提取的特征的数量。

在一些实施例中,MLP可以包括神经网络,该神经网络可以具有训练阶段(例如用于确定模型参数)以及使用阶段。在一些实施例中,如图29D中所示,可以训练MLP。输入的训练数据可以包括三个一组的数据,该三个一组包括1)查询图像,2)正样本,以及3)负样本。查询图像可以被认为是参考图像。正样本可以包括与查询图像相似的图像。例如,在一些实施例中,相似可以是在查询和正样本图像二者中具有相同但是从不同的角度观看的对象。在一些实施例中,相似可以是在查询图像和正样本图像二者中具有相同但是具有相对于另一图像的对象偏移(例如,左、右、上、下)的对象。负样本可以包括与查询图像不相似的图像。例如,在一些实施例中,不相似可以是在查询图像中具有对象,但在样本图像中没有对象。在一些实施例中,不相似可以是在查询图像中具有大部分对象(例如,>50%或>75%),但是在负样本中仅具有相同对象的一小部分(例如,<10%,1%)。在一些实施例中,可以从输入训练数据中的图像中提取特征(例如,稀疏特征),并且可以将其转换为描述符。在一些实施例中,如美国专利申请16/190,948中所述,可以使用深度稀疏特征(DSF)处理来生成描述符(例如,DSF描述符、特征描述符)。在一些实施例中,DSF描述符是n×32维。然后可以通过模型/MLP传递描述符,以创建256字节的输出。在一些实施例中,模型/MLP可以是图29A-29C中描述的MLP。然后,可以将来自MLP模型的256字节输出发送到三元组边界损失模块(并且只能在训练阶段期间使用,而不能在MLP神经网络的使用阶段期间使用)。在一些实施例中,三元组边界损失模块可以被配置为最小化从查询图像输出的256字节与从正样本输出的256字节之间的差异,以及最大化从查询图像输出的256字节与从负样本输出的256字节之间的差异。在一些实施例中,训练阶段可以包括将多个三元组输入图像馈送到学习过程(例如,MLP模型)中以确定模型参数。

最大池化单元314分析每个列以确定相应列中的最大数字。最大池化单元314将每列数字的最大值组合成具有256个数字的全局特征字符串316。全局特征字符串316是相对较小的数字,其占用相对较少的存储器并且易于搜索。因此可以搜索图像而无需分析来自相机的每个原始帧,并且存储256字节而不是完整的帧也更便宜。

在一些实施例中,图28中的关键帧过滤器304可以基于规范地图120的全局特征字符串316和基于由观看设备捕获的图像(例如,可能是用户的本地跟踪地图一部分的图像)的全局特征字符串316来过滤规范地图120。因此,图27中的规范地图120中的每个规范地图具有与其相关联的一个或多个全局特征字符串316。在一些实施例中,当观看设备向服务器20提交图像或特征细节并且服务器20处理图像或特征细节以生成用于规范地图120的全局特征字符串316时,可以获取全局特征字符串316。在一些实施例中,服务器20可以接收由观看设备捕获的实时/新的/当前图像的特征细节,服务器20可以生成用于实时图像的全局特征字符串316,并基于实时全局特征字符串316过滤规范地图120。在一些实施例中,可以在本地观看设备上生成全局特征字符串。在一些实施例中,可以例如在云或服务器20上远程生成全局特征字符串。在一些实施例中,观看设备可以拍摄一个或多个图像,执行图29C中所示的过程,并将全局特征字符串316附加到本地跟踪地图。在一些实施例中,全局特征字符串316可以是本地设备或云上的本地跟踪地图或规范地图中的帧或关键帧的数据表示。

在一些实施例中,服务器20可以将过滤的规范地图连同与过滤的规范地图相关联的全局特征字符串316一起发送到观看设备。在一些实施例中,当观看设备将其跟踪地图定位为规范地图时,它可以通过将本地跟踪地图的全局特征字符串316与规范地图的全局特征字符串进行匹配来做到这一点。

在此描述的是用于在X现实(XR)系统中对多个环境地图(例如规范地图)进行排名和合并的方法和装置。为了向用户提供逼真的XR体验,XR系统必须了解用户的物理环境,以便正确关联虚拟对象相对于真实对象的位置。可以从用户位置的环境地图中获得有关用户实际环境的信息。可以根据采用由XR系统的用户佩戴的XR设备的一部分的传感器收集的图像和深度信息来创建环境地图。可以采用由系统的用户在各个位置和时间所佩戴的传感器收集的信息来构造环境地图。每个环境地图可以包括地图构建点,每个地图构建点都与环境中真实对象的三维(3D)世界重建相关联。

发明人已经认识到并且理解到,XR系统可以通过实现有效地共享由多个用户收集的真实/物理世界的环境地图来向共享包括真实和/或虚拟内容的相同世界的多个用户提供增强的XR体验,无论这些用户是在同一时间还是在不同时间出现在世界中。然而,在提供这种系统方面存在重大挑战。这样的系统可以存储由多个用户生成的多个地图和/或系统可以存储在不同时间生成的多个地图。对于可能采用先前生成的地图执行的操作(诸如例如如上所述的定位),可能需要进行大量处理才能从XR系统中收集的所有环境地图中识别同一世界(例如,相同的真实世界位置)的相关环境地图。在一些实施例中,诸如在图8-26中描述的那些实施例中,可能仅存在设备可以访问的少量环境地图以例如用于定位。在一些实施例中,诸如例如上面相对于图27-29C所描述的,可以存在设备可访问的大量的环境地图。发明人已经认识并理解用于快速且准确地对来自所有可能的环境地图(诸如例如图28中的所有规范地图120的宇宙)中的环境地图的相关性进行排名的技术。然后可以选择高排名地图以进行进一步处理,诸如在用户显示器上渲染虚拟对象,使其与用户周围的物理世界进行现实交互,或者将该用户收集的地图数据与存储的地图合并以创建更大或更准确的地图。

在一些实施例中,可以通过基于多个标准过滤存储的地图来识别与在物理世界中的位置处的用户的任务有关的存储的地图。诸如例如以上关于图27-29C所描述的,这些标准可以指示由用户的可穿戴设备在该位置中生成的跟踪地图与存储在数据库中的候选环境地图的比较。可以基于与地图相关联的元数据(诸如由生成地图的设备检测到的Wi-Fi指纹和/或在形成地图的同时设备所连接到的一组BSSID)来执行比较。还可以基于地图的压缩或未压缩内容执行比较。诸如例如图29A-29C中所述,可以通过比较从地图内容计算出的矢量来执行基于压缩表示的比较。例如,可以通过在存储的地图内定位跟踪地图来执行基于未压缩地图的比较,反之亦然。可以基于减少要考虑的候选地图的数量所需的计算时间来按顺序执行多次比较,其中与需要更多计算的其它比较相比,涉及较少计算的比较将按顺序更早地执行。

如在此所述的技术可以与许多类型的设备(包括具有提供XR场景的有限的计算资源的可穿戴或便携式设备)以及对于许多类型的场景一起或与单独使用。在一些实施例中,可以通过形成XR系统的一部分的一个或多个服务来实现该技术。

图30和图31示出此类场景。为了说明的目的,AR系统被用作XR系统的示例。图32-35示出示例性AR系统,其包括可以根据在此描述的技术操作的一个或多个处理器、存储器、传感器和用户界面。

参考图30,描绘了室外AR场景354,其中AR技术的用户看到了物理世界的类似公园的设置356,其特征是人、树、背景中的建筑物以及混凝土平台358。除了这些项目之外,AR技术的用户还感知到他们“看到”了站在物理世界混凝土平台358上的机器人雕像357,以及似乎是大黄蜂的头像的飞行着的卡通般的头像角色352,即使这些元素(例如,头像角色352和机器人雕像357)在物理世界中不存在。由于人类视觉感知和神经系统的极端复杂性,产生一种对于在其它虚拟或物理世界图像元素中促进舒适、自然感觉、丰富的虚拟图像元素呈现的AR技术具有挑战性。

这样的AR场景可以通过包括世界重建部件的系统来实现,该系统可以构建和更新用户周围的物理世界表面的数字表示。该表示可用于在基于物理学的交互中用于遮挡渲染,放置虚拟对象,以及用于虚拟角色路径计划和导航,或用于使用有关物理世界的信息的其它操作。图31描绘了根据一些实施例的室内AR场景400的另一个示例,示出了示例性世界重建用例,包括视觉遮挡402、基于物理的交互404和环境推理406。

示例性场景400是具有墙壁、在墙壁的一侧上的书架、在房间的拐角的落地灯、地板、沙发和地板上的咖啡桌的客厅。除了这些物理物品外,AR技术的用户还可以感知虚拟对象,诸如沙发后面的墙壁上的图像,飞过门的鸟儿,从书架上窥视的鹿,以及以放置在咖啡桌上的风车形式的装饰品。对于墙壁上的图像,AR技术不仅需要有关墙壁表面的信息,还需要有关房间内对象和表面的信息(诸如灯的形状),该信息会遮挡图像以正确渲染虚拟对象。对于飞翔的鸟类,AR技术需要有关房间周围所有对象和表面的信息,以便以逼真的物理效果渲染鸟类,以避开对象和表面或避免在鸟类碰撞时反弹。对于鹿,AR技术需要有关表面(诸如地板或咖啡桌)的信息,以计算鹿的放置位置。对于风车,系统可以识别出是与桌子分离的对象,并且可以确定其是可移动的,而架子的拐角或墙壁的拐角可以被确定为是静止的。这种区别可用于确定在各种操作中的每个操作中使用或更新场景的哪些部分。

可以经由包括多个部件的系统向用户呈现场景,该多个部件包括可以刺激一种或多种用户感觉(包括视觉、声音和/或触摸)的用户界面。另外,该系统可以包括一个或多个传感器,该传感器可以测量场景的物理部分的参数,包括用户在场景的物理部分内的位置和/或运动。此外,该系统可以包括一个或多个计算设备,以及相关联的计算机硬件,诸如存储器。这些部件可以集成到单个设备中,或可以跨多个互连设备分布。在一些实施例中,这些部件中的一些或全部可以集成到可穿戴设备中。

图32描绘了根据一些实施例的AR系统502,其被配置为提供与物理世界506交互的AR内容的体验。AR系统502可以包括显示器508。在所示的实施例中,显示器508可以由用户作为头戴式耳机的一部分来佩戴,使得用户可以像一副护目镜或眼镜一样将显示器戴在他们的眼睛上。显示器的至少一部分可以是透明的,使得用户可以观察到透视现实510。透视现实510可以对应于处于AR系统502的当前视点内的物理世界506的部分,在用户戴上结合了AR系统的显示器和传感器的头戴式耳机以获取有关物理世界的信息的情况下,这可以与用户的视点相对应。

AR内容也可以呈现在显示器508上,覆盖在透视现实510上。为了在显示器508上提供AR内容和透视现实510之间的准确交互,AR系统502可以包括被配置为捕获有关物理世界506的信息的传感器522。

传感器522可包括输出深度图512的一个或多个深度传感器。每个深度图512可具有多个像素,每个像素可表示距在特定方向中相对于深度传感器的物理世界506中的表面的距离。原始深度数据可来自深度传感器以创建深度图。该深度图可以与深度传感器可以形成新图像的速度一样快地被更新,其可以是每秒成百上千次。然而,该数据可能是嘈杂的和不完整的,并且在所示的深度图上具有示为黑色像素的孔。

该系统可以包括其它传感器,诸如图像传感器。图像传感器可以获取单眼或立体信息,该信息可以被处理为以其它方式表示物理世界。例如,可以在世界重建部件516中对图像进行处理以创建网格,该网格表示物理世界中对象的连接部分。有关这种对象的元数据(包括例如颜色和表面纹理)可以类似地采用传感器获取,并作为世界重建的一部分进行存储。

系统还可以获取关于用户相对于物理世界的头部姿势的信息。在一些实施例中,传感器522可包括可用于计算和/或确定头部姿势514的惯性测量单元。用于深度图的头部姿势514可指示例如以六个自由度(6DoF)捕获深度图的传感器的当前视点,但是头戴式耳机514可用于其它目的,诸如将图像信息与物理世界的特定部分相联系或将佩戴在用户头部上的显示器的位置与物理世界相联系。在一些实施例中,头部姿势信息可以以不同于IMU(诸如分析图像中的对象)的其它方式来导出。

世界重建部件516可以从传感器接收深度图512和头部姿势514以及任何其它数据,并将该数据集成到重建518中。重建518可以比传感器数据更完整并且噪声更少。世界重建部件516可以使用随时间推移的来自多个视点的传感器数据的空间和时间平均来更新重建518。

重建518可以包括一种或多种数据格式(包括例如体素、网格、平面等)的物理世界的表示。不同格式可以表示物理世界的相同部分的替代表示或可以表示物理世界的不同部分。在所示的示例中,在重建518的左侧,物理世界的部分被呈现为全局表面;在重建518的右侧,物理世界的部分被呈现为网格。

重建518可以用作地图或被处理成地图,该地图提供关于由重建表示的物理世界的部分的信息。该地图可以指示关键点和/或结构(诸如边缘和/或平面)的位置。另外,地图可以包括关于用户的姿势的信息,用户可以从该信息中观察到点或结构,在一些实施例中,可以将其称为关键帧或关键绑定。在所示的实施例中,地图表示物理世界中存在单个可穿戴设备的用户的部分。结合表征物理世界的那部分的内容,地图可以包括元数据。元数据例如可以指示捕获用于形成地图的传感器信息的时间。可替代地或另外地,元数据可以指示在捕获用于形成地图的信息时传感器的位置。位置可以直接表示,诸如采用来自GPS芯片的信息,也可以间接表示,诸如采用Wi-Fi签名,该Wi-Fi签名指示在收集传感器数据的同时从一个或多个无线接入点接收到的信号的强度,和/或采用收集传感器数据的同时用户设备连接到的无线接入点的BSSID。

重建518可以用于AR功能,诸如产生用于遮挡处理或基于物理的处理的物理世界的表面表示。该表面表示可能随着用户移动或真实世界中的对象改变而改变。重建518的各方面可以例如由在世界坐标中产生改变的全局表面表示的部件520使用,其可以由其它部件使用。

可以基于该信息,诸如通过AR应用504来生成AR内容。AR应用504可以是例如游戏程序,其基于关于物理世界的信息来执行一个或多个功能,诸如视觉遮挡、基于物理的交互和环境推理。它可以通过查询来自世界重建部件516所产生的重建518的不同格式的数据来执行这些功能。在一些实施例中,部件520可以被配置为当物理世界的关注区域中的表示改变时输出更新。例如,该关注区域可以被设置为近似于系统用户附近的物理世界的一部分,诸如用户视野内的部分,或者被投影(预测/确定)为进入用户的视野内。

AR应用504可以使用该信息来生成和更新AR内容。AR内容的虚拟部分可以结合透视现实510呈现在显示器508上,从而创建真实的用户体验。

在一些实施例中,可以通过可穿戴显示系统向用户提供AR体验。图33示出可穿戴显示系统580(以下称为“系统580”)的示例。系统580包括头戴式显示设备562(以下称为“显示设备562”),以及支持显示设备562的功能的各种机械和电子模块和系统。显示设备562可以耦合至框架564,该框架564可由显示系统用户或观看者560(以下称为“用户560”)佩戴,并被配置为将显示设备562定位在用户560的眼前。根据各种实施例,显示设备562可以顺序显示。显示设备562可以是单眼的或双眼的。在一些实施例中,显示设备562可以是图32中的显示器508的示例。

在一些实施例中,扬声器566耦合到框架564并定位在用户560的耳道附近。在一些实施例中,未示出的另一扬声器定位在用户560的另一耳道附近,以提供立体声/可塑声音控制。显示设备562诸如通过有线导线或无线连接568可操作地耦合到本地数据处理模块570,该本地数据处理模块570可以以各种配置安装,诸如固定地附接到框架564,固定地附接到用户560所戴的头盔或帽子,嵌入耳机中或以其它方式可移除地附接到用户560(例如,以背包式配置,以腰带耦合式配置)。

本地数据处理模块570可以包括处理器以及诸如非易失性存储器(例如,闪存)的数字存储器,这二者都可以用于协助数据的处理、缓存和存储。数据包括:a)从传感器(例如,可以可操作地耦合到框架564)捕获或以其它方式附接到用户560的数据,诸如图像捕获设备(诸如相机)、麦克风、惯性测量单元、加速度计、指南针、GPS单元、无线电设备和/或陀螺仪;和/或b)使用远程处理模块572和/或远程数据存储库574获取和/或处理,可能在该处理或取得之后传递给显示设备562的数据。

本地数据处理模块570可以通过通信链路576、578(诸如经由有线或无线通信链路)相应地可操作地耦合到远程处理模块572和远程数据存储库574,使得这些远程模块572、574彼此可操作地相互耦合并且可用作本地数据处理模块570的资源。在一些实施例中,图32中的世界重建部件516可以至少部分地在本地数据处理模块570中实现。例如,本地数据处理模块570可以被配置为执行计算机可执行指令以至少部分地基于数据的至少一部分来生成物理世界表示。

在一些实施例中,处理可以跨本地和远程处理器分布。例如,对于世界重建部件516,可以基于采用该用户设备上的传感器收集的传感器数据,使用本地处理来在用户设备上构造地图(例如,跟踪地图)。此类地图可由该用户设备上的应用使用。另外,先前创建的环境地图(例如,世界地图和/或规范地图)可以存储在远程数据存储库574中。在合适的存储环境地图可用的情况下,可以代替跟踪地图使用或在跟踪地图之外再使用它。可能将环境地图加载到用户设备上,以允许用户设备渲染虚拟内容而没有与扫描位置和根据在扫描期间获取的传感器数据构建跟踪地图相关联的延迟。可替代地或另外地,可以将跟踪地图与先前存储的环境地图合并以扩展或改善那些环境地图的质量。确定合适的先前创建的环境地图是否可用和/或将跟踪地图与一个或多个存储的环境地图合并的处理可以在本地数据处理模块570或远程处理模块572中完成。

在一些实施例中,本地数据处理模块570可以包括被配置为分析和处理数据和/或图像信息的一个或多个处理器(例如,图形处理单元(GPU))。在一些实施例中,本地数据处理模块570可以包括单个处理器(例如,单核或多核ARM处理器),这将限制本地数据处理模块570的计算预算,但是实现更小型的设备。在一些实施例中,世界重建部件516可以使用小于单个高级RISC机器(ARM)核心的计算预算来在非预定义空间上实时生成物理世界表示,使得单个ARM核心的剩余计算预算可以访问以用于其它用途,诸如例如提取网格。

在一些实施例中,远程数据存储库574可以包括数字数据存储设施,该数字数据存储设施可以通过互联网或“云”资源配置中的其它联网配置而可用。在一些实施例中,所有数据被存储在并且所有计算在本地数据处理模块570中执行,从而允许来自远程模块的完全自主的使用。在一些实施例中,所有数据被存储并且所有或大多数计算在远程数据存储库574中执行,从而允许较小的设备。例如,世界重建可以全部或部分地存储在该存储库574中。

在其中数据被远程存储并且可以通过网络访问的实施例中,数据可以被增强现实系统的多个用户共享。例如,用户设备可以上传他们的跟踪地图,该跟踪地图可以被存储在环境地图的数据库中。在一些实施例中,跟踪地图上传在会话结束时发生。在一些实施例中,跟踪地图上传可以在预定义时间,从先前上传开始的预定义时间段之后,或者在被事件触发时,连续、半连续、间歇地发生。无论基于来自该用户设备还是任何其他用户设备的数据,任何用户设备上传的跟踪地图都可用于扩展或改善先前存储的环境地图。同样,下载到用户设备的环境地图可以基于来自该用户设备或任何其他用户设备的数据。以该方式,用户可以容易地获得高质量的环境地图以改善他们在AR系统中的体验。

在一些实施例中,本地数据处理模块570可操作地耦合到电池582。在一些实施例中,电池582是可移动电源,诸如在计数器电池上方。在其它实施例中,电池582是锂离子电池。在一些实施例中,电池582既包括在系统580的非操作时间期间可由用户560充电的内部锂离子电池,又包括可移除的电池,使得用户560可以在更长的时间段内操作系统580,而不必连接到电源以为锂离子电池充电,或者不必关闭系统580以更换电池。

图34A示出当用户530移动通过物理世界环境532(以下称为“环境532”)时,用户530佩戴渲染AR内容的AR显示系统。用户530将AR显示系统放置在位置534处,并且AR显示系统记录相对于位置534(诸如与地图构建特征或定向音频输入相关的姿势)的可通行世界的环境信息(例如,物理世界中的真实对象的数字表示,其可以被存储并随着物理世界中真实对象的变化而更新)。位置534被汇总到数据输入536,并且至少由可通行世界模块538处理,该可通行世界模块538可以例如通过在图33的远程处理模块572上的处理来实现。在一些实施例中,可通行世界模块538可以包括世界重建部件516。图35B描绘了根据一些实施例的PW的部件架构。

可通行世界模块538至少部分地确定如从数据输入536确定的AR内容540可以被放置在物理世界中的位置和方式。AR内容通过经由用户界面呈现物理世界呈现和AR内容二者来“放置”在物理世界中,AR内容渲染为好像与物理世界中的对象进行交互,并且物理世界中的对象呈现为好像AR内容在适当时掩盖了用户对这些对象的观看。在一些实施例中,可以通过从重建(例如重建518)中适当地选择固定元素542(例如桌子)的部分来确定AR内容540的形状和位置来放置AR内容。作为示例,固定元素可以是桌子,并且虚拟内容可以定位成使得其看起来好像在该桌子上。在一些实施例中,可以将AR内容放置在视野544中的结构内,该视野可以是当前视野或估计的未来视野。在一些实施例中,AR内容可以持续相对于物理世界的地图构建(例如网格)模型546。

如所描绘的,固定元素542用作可存储在可通行世界模块538中的物理世界内的任何固定元素的代理(例如,数字副本),使得用户530可以感知固定元素542上的内容而无需每次用户530看到固定元素542时系统都必须地图构建到固定元素542。因此,固定元素542可以是来自先前建模会话的地图构建网格模型,或者可以由单独的用户确定但是仍然存储在可通行世界模块538上,以供多个用户将来参考。因此,可通行世界模块538可以从先前地图构建的环境中识别环境532并显示AR内容,而无需用户530的设备首先对环境532的全部或一部分进行地图构建,从而节省了计算过程和周期并避免了任何渲染的AR内容的时延。

可以通过AR显示系统来创建物理世界的地图构建网格模型546,并且可以将用于交互和显示AR内容540的适当的表面和度量进行地图构建并存储在可通行世界模块538中,以供用户530或其他用户将来取得,而无需完全或部分地重新地图构建或建模。在一些实施例中,数据输入536是诸如地理位置、用户标识和当前活动的输入,以向可通行世界模块538指示一个或多个固定元素中的哪个固定元素542可用,哪个AR内容540最后被放置在固定元素542上,以及是否显示该相同的内容(无论用户如何观看特定的可通行世界模型,这种AR内容都是“持久”内容)。

即使在其中对象被认为是固定的(例如,厨房桌子)实施例中,可通行世界模块538也会不时更新,以考虑到物理世界中变化的可能性。固定对象的模型可能以非常低的频率更新。物理世界中的其它对象可能正在移动或以其它方式不被认为是固定的(例如厨房椅子)。为了渲染具有真实感的AR场景,AR系统可以以比用于更新固定对象的频率高得多的频率来更新这些非固定对象的位置。为了能够准确跟踪物理世界中的所有对象,AR系统可以从多个传感器(包括一个或多个图像传感器)中获取信息。

图34B是观看光学组件548和伴随部件的示意图。在一些实施例中,指向用户眼睛549的两个眼睛跟踪相机550检测用户眼睛549的度量,诸如用户眼睛549上的眼睛形状、眼睑闭塞、瞳孔方向和闪烁。在一些实施例中,传感器之一可以是深度传感器551,诸如飞行时间传感器,其向世界发射信号并检测来自附近对象的那些信号的反射以确定与给定对象的距离。深度传感器例如可以由于那些对象的运动或用户姿势的变化而快速确定对象是否已经进入用户的视野。然而,关于对象在用户视野中的位置的信息可以可替代地或另外地由其它传感器收集。深度信息例如可以从立体视觉图像传感器或全光传感器获得。

在一些实施例中,世界相机552记录大于外围的视图以对环境532进行地图构建并检测可影响AR内容的输入。在一些实施例中,世界相机552和/或相机553可以是灰度和/或彩色图像传感器,该传感器可以以固定的时间间隔输出灰度和/或彩色图像帧。相机553可以在特定时间进一步捕获用户视野内的物理世界图像。即使基于帧的图像传感器的像素的值不变,也可以重复对其像素进行采样。世界相机552、相机553和深度传感器551中的每一个具有相应的视野554、555和556,以从诸如图34A中描绘的物理世界环境532的物理世界场景中收集数据并记录该物理世界场景。

惯性测量单元557可以确定观看光学组件548的运动和取向。在一些实施例中,每个部件可操作地耦合到至少一个其它部件。例如,深度传感器551可操作地耦合到眼睛跟踪相机550,以相对于用户眼睛549正在注视的实际距离来确认所测量的适应。

应当理解,观看光学组件548可以包括图34B中所示的一些部件,并且可以包括代替所示部件或除了所示部件之外的部件。例如,在一些实施例中,观看光学组件548可以包括两个世界相机552而不是四个。可替代地或另外地,相机552和553不需要捕获其全部视野的可见光图像。观看光学组件548可以包括其它类型的部件。在一些实施例中,观看光学组件548可以包括一个或多个动态视觉传感器(DVS),其像素可以异步地响应超过阈值的光强度的相对变化。

在一些实施例中,基于飞行时间信息,观看光学组件548可以不包括深度传感器551。例如,在一些实施例中,观看光学组件548可以包括一个或多个全光相机,其像素可以捕获光强度和入射光的角度,由此可以确定深度信息。例如,全光相机可以包括覆盖有透射衍射掩模(TDM)的图像传感器。可替代地或另外地,全光相机可以包括图像传感器,该图像传感器包含角度敏感像素和/或相位检测自动聚焦像素(PDAF)和/或微透镜阵列(MLA)。代替深度传感器551或除了深度传感器551之外,这种传感器可以用作深度信息源。

还应当理解,图34B中的部件的配置被示为示例。观看光学组件548可以包括具有任何适当配置的部件,该适当配置可以设定为向用户提供对于一组特定部件实际可行的最大视野。例如,如果观看光学组件548具有一个世界相机552,则该世界相机可以放置在观看光学组件的中心区域而不是侧面。

来自观看光学组件548中的传感器的信息可以耦合到系统中的一个或多个处理器。处理器可以生成可以被渲染以便使用户感知与物理世界中的对象交互的虚拟内容的数据。可以以任何合适的方式来实现该渲染,包括生成描绘物理和虚拟对象二者的图像数据。在其它实施例中,可以通过调制用户在物理世界中浏览的显示设备的不透明度来在一个场景中描绘物理和虚拟内容。可以控制不透明度以便创建虚拟对象的外观,并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施例中,当通过用户界面观看时,图像数据可以仅包括虚拟内容,该虚拟内容可以被修改以使得虚拟内容被用户感知为与物理世界现实地交互(例如,剪辑内容以考虑遮挡)。无论如何向用户呈现内容,都需要物理世界的模型,使得可以正确计算可受到物理对象影响的虚拟对象的特性,包括虚拟对象的形状、位置、运动和可见性。在一些实施例中,模型可以包括物理世界的重建,例如重建518。

可以根据从用户的可穿戴设备上的传感器收集的数据来创建该模型。但是,在一些实施例中,可以从多个用户收集的数据中创建模型,该数据可以在远离所有用户的计算设备中汇总(并且该数据可以在“云中”)。

模型可以至少部分地由世界重建系统创建,例如,图35A中更详细地描绘的图32的世界重建部件516。世界重建部件516可以包括感知模块660,该感知模块660可以生成、更新和存储物理世界的一部分的表示。在一些实施例中,感知模块660可以将传感器的重建范围内的物理世界的部分表示为多个体素。每个体素可以对应于物理世界中预定体积的3D立方体,并且包括表面信息,该表面信息指示在体素表示的体积中是否存在表面。可以为体素分配值,该值指示是否已经确定了它们的对应体积以包括物理对象的表面,确定为空的还是尚未用传感器测量,并且因此其值是未知的。应当理解,不需要明确地存储指示被确定为空或未知的体素的值,因为可以以任何合适的方式将体素的值存储在计算机存储器中,包括不存储被确定为空或未知的体素的信息。

除了生成用于持久世界表示的信息之外,感知模块660还可以识别并输出AR系统的用户周围的区域中的变化的指示。这种变化的指示可以触发对作为持久世界的一部分存储的体积数据的更新,或者触发其它功能,诸如触发生成AR内容以更新AR内容的触发部件604。

在一些实施例中,感知模块660可以基于符号距离函数(SDF)模型来识别变化。感知模块660可以被配置为接收诸如例如深度图660a和头部姿势660b的传感器数据,并且然后将传感器数据融合到SDF模型660c中。深度图660a可以直接提供SDF信息,并且图像可以被处理以获得SDF信息。SDF信息表示距用于捕获该信息的传感器的距离。由于那些传感器可以是可穿戴单元的一部分,因此SDF信息可以从可穿戴单元的角度以及因此从用户的角度表示物理世界。头部姿势660b可以使SDF信息能够与物理世界中的体素相关。

在一些实施例中,感知模块660可以生成、更新和存储在感知范围内的物理世界的部分的表示。感知范围可以至少部分地基于传感器的重建范围来确定,该传感器的重建范围可以至少部分地基于传感器的观察范围的限制来确定。作为特定示例,使用主动IR脉冲操作的主动深度传感器可以在一定距离范围内可靠地操作,从而创建传感器的观察范围,该观察范围可以从几厘米或几十厘米到几米。

世界重建部件516可以包括可以与感知模块660交互的附加模块。在一些实施例中,持久世界模块662可以基于由感知模块660获取的数据来接收对物理世界的表示。持久世界模块662还可以包括物理世界的各种格式的表示。在一些实施例中,物理世界的表示可以是图像、来自图像的特征、特征的描述符、关键帧/关键绑定、持久姿势、PCF和/或全局特征字符串。例如,可以存储诸如体素的体积元数据662b以及网格662c和平面662d。在一些实施例中,可以保存其它信息,诸如深度图。

在一些实施例中,感知模块660可以包括以各种格式生成用于物理世界的表示的模块,这些格式包括例如网格660d、平面和语义660e。这些模块可以基于在生成表示时一个或多个传感器的感知范围内的数据以及在先前时间捕获的数据和持久世界模块662中的信息来生成表示。在一些实施例中,这些部件可以关于采用深度传感器捕获的深度信息来操作。然而,AR系统可以包括视觉传感器,并且可以通过分析单眼或双眼视觉信息来生成这种表示。

在一些实施例中,这些模块可以在物理世界的区域上操作。当感知模块660检测到物理世界的子区域中的物理世界的变化时,可以触发那些模块以更新物理世界的子区域。例如,可以通过在SDF模型660c中检测新的表面或其它标准(例如改变表示子区域的足够数量的体素的值)来检测这种变化。

世界重建部件516可以包括可以从感知模块660接收物理世界的表示的部件664。关于物理世界的信息可以由这些部件根据例如来自应用的使用请求来提取。在一些实施例中,可以诸如经由对预识别区域中的变化或感知范围内的物理世界表示的变化的指示,将信息推送到使用部件。部件664可以包括例如游戏程序和执行用于视觉遮挡、基于物理的交互以及环境推理的处理的其它部件。

响应于来自部件664的查询,感知模块660可以一种或多种格式发送用于物理世界的表示。例如,当部件664指示该使用是用于视觉遮挡或基于物理的交互时,感知模块660可以发送表面的表示。当部件664指示该使用是用于环境推理时,感知模块660可以发送物理世界的网格、平面和语义。

在一些实施例中,感知模块660可以包括格式化信息以提供部件664的部件。这种部件的示例可以是射线广播部件660f。使用部件(例如,部件664)例如可以从特定的视点查询关于物理世界的信息。射线广播部件660f可以从该视点从视野内的物理世界数据的一种或多种表示中选择。

从以上描述中应当理解,感知模块660或AR系统的另一部件可以处理数据以创建物理世界的部分的3D表示。可以通过如下方式来减少要处理的数据:至少部分地基于相机视锥和/或深度图像来挑选3D重建体积的一部分,提取和保留平面数据,捕获、保留和更新块中的3D重建数据,该块在保持邻居一致性的同时允许本地更新,向生成这种场景的应用提供遮挡数据,其中遮挡数据从一个或多个深度数据源的组合中得出,和/或执行多阶段网格简化。

世界重建系统可以从物理世界的多个视点随时间推移集成传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于传感器的框架姿势及其与其它姿势的关系是已知的,因此可以将物理世界的这些多个视点中的每个视点一起融合成单独的组合重建。通过使用空间和时间平均(即,随时间推移从多个视点对数据进行平均)或任何其它合适的方法,重建可以比原始传感器数据更完整且噪声更少。

重建可以包含不同复杂度的数据,包括例如原始数据(诸如实时深度数据),融合体积数据(诸如体素)和计算数据(诸如网格)。

可通行世界(PW)(例如,PW 538)可以包括至少部分地基于由多个用户佩戴的AR设备的世界重建系统重建的数据而创建的环境地图。在AR体验的会话期间,各个AR设备(诸如以上结合图33描述的可穿戴设备)可以创建跟踪地图(TM)。在一些实施例中,跟踪地图可以包括AR设备的扫描环境的头部姿势的稀疏地图以及关于在该环境内检测到的对象的信息。AR设备可以将跟踪地图发送到云,以例如与从存储在云中的环境地图中选择的环境地图合并。在一些实施例中,可以将所选的环境地图从云发送到AR设备以进行合并。

环境地图可以提供关于由被处理以创建相应地图的重建数据表示的物理世界的部分的信息。图36描绘了根据一些实施例的示例性环境地图700。环境地图700可以包括由点702表示的在对应的物理世界中的重建物理对象的平面图706。环境地图700还可以包括跟踪路线710,收集关于点702的数据的设备沿着该路线710行进。跟踪路线710可以包括关键绑定704,该关键绑定704可以表示AR设备上传重建数据和相关联的元数据(诸如头部姿势和/或图像数据)的位置。在一些实施例中,关键绑定也可以称为关键帧。在示出的示例中,环境地图包括两个跟踪路线710a和710b,这可以指示通过合并两个跟踪地图来创建环境地图700:一个沿着跟踪路线710a被创建;另一个沿着跟踪路线710b被创建。在一些实施例中,两个跟踪地图可以由两个不同的AR设备在同一时间创建,由两个不同的AR设备在不同的时间创建,或者由相同的AR设备在不同的时间创建。在一些实施例中,两个跟踪地图可以由一个AR设备创建并通过两个网络接入点上传到云,每个网络接入点可以在指定区域范围内接入。

环境地图可以取决于例如环境地图的存储位置而具有多种格式中的任何一种,该环境地图包括例如AR设备的本地存储和远程存储。例如,远程存储中的地图可比本地存储中的地图具有更高的分辨率。为了将更高分辨率的地图从远程存储发送到本地存储,可以对地图进行下采样或以其它方式转换为适当的格式。在一些实施例中,来自远程存储的高分辨率地图的切片或部分被发送到本地存储,其中切片或部分未被下采样。

当创建新的跟踪地图时,可以更新环境地图的数据库。为了确定数据库中可能非常大量的环境地图中的哪一个环境地图将被更新,更新可以包括有效地选择数据库中存储的与新的跟踪地图有关的一个或多个环境地图。可以通过相关性对所选的一个或多个环境地图进行排名,并且可以选择最高排名的地图中的一个或多个地图以进行处理,以将较高排名的所选环境地图与新的跟踪地图合并以创建一个或多个更新的环境地图。

图37描绘了根据一些实施例的被配置为对一个或多个环境地图进行排名和合并的AR系统800。AR系统可以包括AR设备的可通行世界模型802。填充可通行世界模型802的信息可来自AR设备上的传感器,该传感器可包括存储在处理器804(例如,本地数据处理模块570)中的计算机可执行指令,该处理器可执行一些或全部处理以将传感器数据转换为地图。这种地图可以是跟踪地图,因为当AR设备在区域中操作时可以一边收集传感器数据一边构建跟踪地图。与该跟踪地图一起,可以提供区域属性,以便指示该跟踪地图表示的区域。这些区域属性可以是地理位置标识符,诸如表示为纬度和经度的坐标,或者是AR系统用来表示位置的ID。可替代地或另外地,区域属性可以是对于该区域具有唯一的很高的可能性的被测量的特性。区域属性例如可以从在该区域中检测到的无线网络的参数导出。在一些实施例中,区域属性可以与AR系统在附近和/或连接到的接入点的唯一地址相关联。例如,区域属性可以与5G基站/路由器、Wi-Fi路由器等的MAC地址或基本服务集标识符(BSSID)相关联。

在图37的示例中,可以将跟踪地图与环境的其它地图合并。地图排名部分806从设备PW 802接收跟踪地图,并与地图数据库808通信以选择和排名从地图数据库808中选择的环境地图。将排名较高的所选择地图发送到地图合并部分810。

地图合并部分810可以对从地图排名部分806发送的地图执行合并处理。合并处理可能需要将跟踪地图与一些或所有排名地图合并,并将新的合并地图发送到可通行世界模型812。可通行世界模型812可以是云模型,该云模型可以由多个AR设备共享。可通行世界模型812可以存储或以其它方式访问地图数据库808中的那些环境地图。在一些实施例中,当更新先前计算的环境地图时,可以删除该地图的先前版本,以便从数据库中删除过时的地图。在一些实施例中,当更新先前计算的环境地图时,该地图的先前版本可以被存档,从而使得能够取得/观看环境的先前版本。在一些实施例中,可以设置许可,使得只有具有某些读/写访问权限的AR系统才可以触发地图的先前版本被删除/存档。

从由一个或多个AR设备/系统提供的跟踪地图创建的这些环境地图可以由AR系统中的AR设备访问。地图排名部分806也可以用于向AR设备提供环境地图。AR设备可以发送请求其当前位置的环境地图的消息,并且地图排名部分806可以用于选择和排名与请求设备有关的环境地图。

在一些实施例中,AR系统800可以包括被配置为从云PW 812接收合并的地图的下采样部分814。从云PW 812接收的合并的地图可以是用于云的存储格式,其可以包括密集的信息。下采样部分814可以被配置为将云格式地图下采样为适合于存储在AR设备上的格式。设备格式地图可能很稀疏以适应AR设备的有限本地计算能力和存储空间。

题为“合并多个单独地图构建的环境(Merging a Plurality of IndividuallyMapped Environments)”的美国临时专利申请序列号62/812,935描述了合并环境地图的示例性方法和装置。美国申请序列号62/812,935的提交版本的副本作为附件被附上,并且出于所有目的通过引用整体并入在此。该申请中描述的技术可以用于合并环境地图。

图38是示出根据一些实施例的选择一个或多个排名的环境地图的方法900的流程图。在所示的实施例中,对正在创建跟踪地图的用户的AR设备执行排名。因此,跟踪地图可用于对环境地图进行排名。在其中跟踪地图不可用的实施例中,可以使用不明确依赖于跟踪地图的环境地图的选择和排名的一些或全部部分。

方法900可以从动作902开始,其中可以访问位于形成跟踪地图的位置附近的环境地图(有时称为规范地图)数据库中的一组地图,并且然后过滤以便排名。另外,在动作902处,确定用户的AR设备正在其中操作的区域的至少一个区域属性。在用户的AR设备正在构造跟踪地图的场景中,区域属性可对应于在其上创建跟踪地图的区域。作为特定示例,可以在AR设备正在计算跟踪地图的同时基于从接入点到计算机网络的接收信号来计算区域属性。

图39描绘了根据一些实施例的AR系统800的示例性地图排名部分806。地图排名部分806可以是云计算环境,因为它可以包括AR设备的一部分和诸如云的远程计算系统的部分。地图排名部分806可以被配置为执行方法900的至少一部分。

图40A描绘了根据一些实施例的数据库中的跟踪地图(TM)1102和环境地图CM1-CM4的区域属性AA1-AA8的示例。如图所示,环境地图可以与多个区域属性相关联。区域属性AA1-AA8可以包括由AR设备计算跟踪地图1102检测到的无线网络的参数,例如,AR设备所连接的网络的基本服务集标识符(BSSID)和/或通过例如网络塔1104到无线网络的接入点的接收信号的强度。无线网络的参数可以符合包括Wi-Fi和5G NR的协议。在图9中所示的示例中,区域属性是用户AR设备在其中收集传感器数据以形成跟踪地图的区域的指纹。

图40B描绘了根据一些实施例的跟踪地图1102的所确定的地理位置1106的示例。在所示的示例中,确定的地理位置1106包括质心点1110和围绕质心点环绕的区域1108。应当理解,本申请的地理位置的确定不限于所示出的格式。所确定的地理位置可以具有任何合适的格式,包括例如不同的区域形状。在该示例中,使用将区域属性与地理位置相关联的数据库,从区域属性确定地理位置。数据库是可商购的,例如,将Wi-Fi指纹与表达为纬度和经度的位置相关联并且可用于该操作的数据库。

在图38的实施例中,包含环境地图的地图数据库还可以包括那些地图的位置数据,包括地图所覆盖的纬度和经度。在动作902处的处理可能需要从该数据库中选择一组环境地图,该环境地图覆盖针对跟踪地图的区域属性确定的相同纬度和经度。

动作904是对在动作902中访问的一组环境地图的第一过滤。在动作902中,基于与跟踪地图的地理位置的接近度,将环境地图保留在该组中。可以通过比较与该组中的跟踪地图和环境地图相关联的纬度和经度来执行该过滤步骤。

图41描绘了根据一些实施例的动作904的示例。每个区域属性可以具有对应的地理位置1202。该组环境地图可以包括具有至少一个区域属性的环境地图,该至少一个区域属性具有与跟踪地图的确定的地理位置重叠的地理位置。在所示的示例中,一组识别的环境地图包括环境地图CM1、CM2和CM4,每个环境地图都具有至少一个区域属性,该区域属性具有与跟踪地图1102的确定的地理位置重叠的地理位置。与区域属性AA6相关联的CM3未包括在该组中,因为它在跟踪地图的确定的地理位置之外。

还可以对该组环境地图执行其它过滤步骤,以减少/排名该组中最终被处理的环境地图的数量(诸如,用于地图合并或向用户设备提供可通行世界信息)。方法900可以包括基于与跟踪地图和该组环境地图的环境地图相关联的网络接入点的一个或多个标识符的相似性来过滤(动作906)该组环境地图。在地图的形成期间,可以将收集传感器数据以生成地图的设备通过网络接入点(诸如通过Wi-Fi或类似的无线通信协议)连接到网络。接入点可以通过BSSID来识别。当用户设备移动通过收集数据的区域以形成地图时,用户设备可以连接到多个不同的接入点。同样,当多个设备提供信息以形成地图时,该设备可能已通过不同的接入点进行连接,因此出于该原因,在形成地图时也可能会使用多个接入点。因此,可能存在与地图相关联的多个接入点,并且该组接入点可以是地图位置的指示。

在一些实施例中,基于网络接入点的一个或多个标识符的相似性来过滤该组环境地图可以包括:基于网络接入点的一个或多个标识符,将与跟踪地图的至少一个区域属性具有最高Jaccard相似性的环境地图保留在该组环境地图中。图42描绘了根据一些实施例的动作906的示例。在所示的示例中,可以将与区域属性AA7相关联的网络标识符确定为跟踪地图1102的标识符。动作906之后的该组环境地图包括:环境地图CM2,其可具有与AA7更高的Jaccard相似性内的区域属性;以及环境地图CM4,其还包括区域属性AA7。环境地图CM1不包括在该组中,因为它具有与AA7最低的Jaccard相似性。

可以基于与地图相关联的元数据来执行动作902-906的处理,而无需实际访问存储在地图数据库中的地图的内容。其它处理可涉及访问地图的内容。动作908指示在基于元数据过滤之后访问保留在子集中的环境地图。应当理解,如果可以对所访问的内容执行后续操作,则可以在该过程中的较早或较晚时执行该动作。

方法900可以包括基于表示跟踪地图和一组环境地图的环境地图的内容的度量的相似性来过滤(动作910)一组环境地图。表示跟踪地图和环境地图的内容的度量可以包括从地图的内容计算出的值的矢量。度量可以从在动作908处取得的地图来计算,或者可以被预先计算并存储为与那些地图相关联的元数据。在一些实施例中,基于表示跟踪地图和一组环境地图的环境地图的内容的度量的相似性来过滤一组环境地图可包括:将跟踪地图的特征矢量与表示一组环境地图中的环境地图的矢量之间具有最小矢量距离的环境地图保留在一组环境地图中。

方法900可以包括:基于跟踪地图的一部分与一组环境地图的环境地图的部分之间的匹配程度来进一步过滤(动作912)一组环境地图。匹配程度可以被确定为定位过程的一部分。作为非限制性示例,可以通过在跟踪地图和环境地图中识别与它们可以表示物理世界的相同部分足够相似的临界点来执行定位。在一些实施例中,关键点可以是特征、特征描述符、关键帧/关键绑定、持久姿势和/或PCF。然后,可能将跟踪地图中的一组临界点对齐以与环境地图中的该组临界点产生最优适配。可能计算对应的临界点之间的均方距离,并且如果低于跟踪地图的特定区域的阈值,则用作指示跟踪地图和环境地图表示物理世界的相同区域。

在一些实施例中,基于跟踪地图的一部分与一组环境地图的环境地图的部分之间的匹配程度来过滤一组环境地图可包括:计算由跟踪地图表示的物理世界的体积,该跟踪地图也表示在一组环境地图的环境地图中;以及将具有比从一组中过滤出的环境地图更大的计算体积的环境地图保留在一组环境地图中。图43描绘了根据一些实施例的动作912的示例。在示出的示例中,在动作912之后的一组环境地图包括环境地图CM4,该环境地图CM4具有与跟踪地图1102的区域匹配的区域1402。环境地图CM1不包括在该组中,因为它不具有与跟踪地图1102的区域匹配的区域。

在一些实施例中,可以按照动作906、动作910和动作912的顺序来过滤该组环境地图。在一些实施例中,可以基于动作906、动作910和动作912来过滤该组环境地图,可以根据从最低到最高的,基于执行过滤所需的处理的顺序来执行该动作906、动作910和动作912。

方法900可以包括加载(动作914)该组环境地图和数据。

在所示的示例中,用户数据库存储指示使用AR设备的区域的区域标识。区域标识可以是区域属性,该区域属性可以包括AR设备在使用中检测到的无线网络的参数。地图数据库存储由AR设备提供的数据和相关联的元数据构造的多个环境地图。相关联的元数据可以包括从提供数据的AR设备的区域标识中导出的区域标识,环境地图从该数据中构造。AR设备可以向PW模块发送消息,指示创建或正在创建新的跟踪地图。PW模块计算用于AR设备的区域标识符,并基于接收到的参数和/或计算出的区域标识符来更新用户数据库。PW模块还可以确定与请求环境地图的AR设备相关联的区域标识符,基于区域标识符从地图数据库中识别该组环境地图,过滤该组环境地图,并且向AR设备发送过滤的一组环境地图。在一些实施例中,PW模块可以基于一个或多个标准来过滤该组环境地图,该标准包括例如跟踪地图的地理位置,与跟踪地图以及该组环境地图的环境地图相关联的网络接入点的一个或多个标识符的相似性,表示跟踪地图和该组环境地图的环境地图的内容的度量的相似性,以及跟踪地图的一部分与该组环境地图的环境地图的部分之间的匹配程度。

至此已经描述了一些实施例的几个方面,应当理解,本领域技术人员将容易想到各种改变、修改和改进。

作为一个示例,结合增强(AR)环境来描述实施例。应当理解,在此描述的一些或全部技术可以在MR环境中或更普遍地在其它XR环境和VR环境中应用。

作为另一个示例,结合诸如可穿戴设备的设备来描述实施例。应当理解,可以经由网络(诸如云)、分立应用和/或设备、网络和分立应用的任何合适的组合来实现在此描述的一些或全部技术。

此外,图38提供了可用于过滤候选地图以产生一组高排名地图的标准的示例。代替所描述的标准或除了所描述的标准之外,可以使用其它标准。例如,如果多个候选地图具有用于过滤掉不太理想的地图的度量的相似值,则候选地图的特性可以用于确定哪些地图被保留为候选地图或被过滤掉。例如,更大或更密集的候选地图可以优先于较小的候选地图。在一些实施例中,图27-28可以描述图37-39中描述的全部或部分的系统和方法。

图51-53描述了根据一些实施例的至少部分地基于深度关键帧(DKF)分析来确定要使用的地图的示例。DKF分析可以是确定XR设备要使用的环境地图和/或基于由XR设备生成的TM确定用于用户的当前头部姿势(例如,用户头部的位置和/或取向)的过程的一部分。在一些实施例中,DKF分析通过提供TM的关键帧作为对诸如神经网络的深度学习架构的输入,来采用合适的深度学习技术来预测或以其它方式确定要使用的合适的环境地图。在一些实施例中,DKF分析被用作对环境地图(也称为规范地图(CM))进行排名的过程的一部分。例如,可以基于TM与被分析为候选的每个CM之间的DKF描述符的相似性程度来对CM进行排名。如在图53的示例中所示,DKF分析可以是用于选择CM的分层(例如,多层)分析的一部分,在该CM中,执行地理位置过滤(例如,首先)作为顶层分析,执行Wi-Fi BSSID过滤作为下一层,并且然后执行DKF分析作为第三(例如最终)层来对CM排名。最高排名的CM或一组CM可被提供给XR设备以被使用和/或进一步分析。排名分析可以在云中执行(例如,使用如图51-53的示例中所示的SPIFF分析模块)。在每层,可以对该组候选CM进行过滤(例如减少),直到在基于DKF的底层分析之后剩下单个地图(或地图的子集)为止。图51中所示的地图排名模块可以执行排名,并将结果传递到如上所述的地图合并模块。

美国专利申请序列号16/520,582和美国临时专利申请序列号62/702,829通过引用并入在此,并描述了基于地图质量、共同可视性图形地图卫生以及从相机图像创建可定位地图的地图共享的更多细节。

图49示出根据一些实施例的用于恢复和/或重置头部姿势的观看方法的方面。在所示的示例中,在动作1400处,观看设备被通电。在动作1410处,响应于通电,发起新的会话。在一些实施例中,新的会话可以包括建立头部姿势。通过首先捕获环境的图像并且然后从图像确定表面,在固定到用户头部的头戴式框架上的一个或多个捕获设备捕获环境的表面。表面数据也与来自重力传感器的数据相结合以建立头部姿势。

在动作1420处,观看设备的处理器输入用于跟踪头部姿势的例程。当用户移动其头部以确定头戴式框架相对于表面的取向时,捕获设备继续捕获环境的表面。

在动作1430处,处理器确定头部姿势是否已经丢失。头部姿势可能由于“边缘”情况而丢失,诸如可导致低特征获取的过多的反射表面、弱光、空白的墙壁、在室外等;或者由于诸如移动和形成地图的一部分的人群的动态情况而丢失。在1430处的例程允许经过一定量的时间,例如10秒,以允许足够的时间来确定头部姿势是否已经丢失。如果头部姿势尚未丢失,则处理器返回到1420,并再次进入对头部姿势的跟踪。

如果在动作1430处头部姿势已经丢失,则处理器在1440处进入例程以恢复头部姿势。如果由于弱光导致头部姿势丢失,则将通过观看设备的显示器向用户显示诸如以下消息的消息:

系统正在检测弱光条件。请移动到光线更充足的区域。

系统将继续监视是否有足够的光可用以及是否可以恢复头部姿势。该系统可以可替代地确定表面的低纹理正在导致头部姿势丢失,在这种情况下,在显示器中向用户给出以下提示,作为改善表面捕获的建议:

系统无法检测到具有精细纹理的足够的表面。请移动至表面纹理较不粗糙以及纹理更精细的区域。

在动作1450处,处理器进入例程以确定头部姿势恢复是否已经失败。如果头部姿势恢复没有失败(即,头部姿势恢复已经成功),则处理器通过再次输入对头部姿势的跟踪来返回动作1420。如果头部姿势恢复已经失败,则处理器返回到动作1410以建立新的会话。作为新会话的一部分,所有缓存的数据均无效,此后重新建立头部姿势。

图50示出根据一些实施例的计算机系统1900的示例性形式的机器的示意图,在该机器内可以执行一组指令以使该机器执行在此讨论的方法中的任何一个或多个方法。在替代实施例中,该机器作为独立设备操作,或者可以连接(例如,联网)到其它机器。此外,虽然仅示出了单个机器,但是术语“机器”也应被理解为包括机器的任何集合,该机器单独地或共同地执行一组(或多组)指令以执行在此讨论的任何一个或多个方法。

示例性计算机系统1900包括经由总线1908彼此通信的处理器1902(例如,中央处理单元(CPU)、图形处理单元(GPU)或二者)、主存储器1904(例如,只读存储器(ROM)、闪存,诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等的动态随机存取存储器(DRAM))和静态存储器1906(例如闪存、静态随机存取存储器(SRAM)等)。

计算机系统1900可以进一步包括磁盘驱动器单元1916和网络接口设备1920。

磁盘驱动器单元1916包括机器可读介质1922,在其上存储体现在此所述方法或功能中的任何一个或多个方法或功能的一组或多组指令1924(例如,软件)。在计算机系统1900执行软件期间,软件还可以全部或至少部分地驻留在主存储器1904内和/或处理器1902内,主存储器1904和处理器1902也构成机器可读介质。

还可以经由网络接口设备1920在网络18上发送或接收软件。

计算机系统1900包括用于驱动投影仪以生成光的驱动器芯片1950。驱动器芯片1950包括其自己的数据存储1960及其自己的处理器1962。

虽然在示例性实施例中将机器可读介质1922示为单个介质,但是术语“机器可读介质”应理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的缓存和服务器)。术语“机器可读介质”也应被认为包括能够存储、编码或携带一组指令以供机器执行并且使机器执行本发明的任何一种或多种方法的任何介质。因此,术语“机器可读介质”应被认为包括但不限于固态存储器、光学和磁性介质以及载波信号。

至此已经描述了一些实施例的几个方面,应当理解,本领域技术人员将容易想到各种改变、修改和改进。

作为一个示例,结合增强(AR)环境来描述实施例。应当理解,在此描述的一些或全部技术可以在MR环境中或更普遍地在其它XR环境和VR环境中应用。

作为另一个示例,结合诸如可穿戴设备的设备来描述实施例。应当理解,可以经由网络(诸如云)、分立应用和/或设备、网络和分立应用的任何合适的组合来实现在此描述的一些或全部技术。

此外,图38提供了可用于过滤候选地图以产生一组高排名地图的标准的示例。代替所描述的标准或除了所描述的标准之外,可以使用其它标准。例如,如果多个候选地图具有用于过滤掉不太理想的地图的度量的相似值,则候选地图的特性可以用于确定哪些地图被保留为候选地图或被过滤掉。例如,更大或更密集的候选地图可以优先于较小的候选地图。

这种改变、修改和改进旨在是本公开的一部分,并且旨在处于本公开的精神和范围内。此外,尽管指示了本公开的优点,但是应当理解,并非本公开的每个实施例将包括每个描述的优点。在一些情况下,一些实施例可能不实现在此描述为有利的任何特征。因此,前面的描述和附图仅作为示例。

本公开的上述实施例可以以多种方式中的任何一种方式来实现。例如,可以使用硬件、软件或其组合来实现实施例。当以软件实现时,软件代码可以在任何合适的处理器或处理器集合上执行,无论是在单个计算机中提供还是在多个计算机中分布。这种处理器可以被实现为集成电路,在集成电路部件中具有一个或多个处理器,包括本领域已知的可商购的集成电路部件,其名称诸如CPU芯片、GPU芯片、微处理器、微控制器或协处理器。在一些实施例中,可以在定制电路(诸如ASIC)或者在通过配置可编程逻辑器件而产生的半定制电路中实现处理器。作为另一替代方案,处理器可以是较大的电路或半导体设备的一部分,无论是可商购的,半定制的还是定制的。作为特定示例,一些可商购的微处理器具有多个核心,使得这些核心中的一个或子集可以构成处理器。但是,可以使用任何适当格式的电路来实现处理器。

此外,应当理解,计算机可以以多种形式中的任何一种形式来体现,诸如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可以被嵌入通常不被认为是计算机但具有合适的处理能力的设备中,该设备包括个人数字助理(PDA)、智能电话或任何其它合适的便携式或固定电子设备。

此外,计算机可以具有一个或多个输入和输出设备。这些设备尤其可以用于呈现用户界面。可以用于提供用户界面的输出设备的示例包括用于视觉呈现输出的打印机或显示屏,以及用于听觉呈现输出的扬声器或其它声音生成设备。可以用于用户界面的输入设备的示例包括键盘和指向设备,诸如鼠标、触摸板和数字化平板计算机。作为另一个示例,计算机可以通过语音识别或其它可听格式接收输入信息。在所示的实施例中,输入/输出设备被示为与计算设备物理上分开。然而,在一些实施例中,输入和/或输出设备可以物理地集成到与处理器或计算设备的其它元件相同的单元中。例如,键盘可能实现为触摸屏上的软键盘。在一些实施例中,输入/输出设备可以与计算设备完全断开,并且通过无线连接在功能上集成。

这种计算机可以通过任何适当形式的一个或多个网络互连,包括作为局域网或诸如企业网络或互联网的广域网。这种网络可以基于任何适当的技术,并且可以根据任何适当的协议进行操作,并且可以包括无线网络、有线网络或光纤网络。

此外,在此概述的各种方法或过程可以被编码为可在采用多种操作系统或平台中的任何一种操作系统或平台的一个或多个处理器上执行的软件。另外,可以使用多种合适的编程语言和/或编程或脚本工具中的任何一种来编写此类软件,并且还可以将其编译为可执行的机器语言代码或在框架或虚拟机上执行的中间代码。

在这方面,本公开可以体现为采用一个或多个程序编码的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩光盘(CD)、光盘、数字视频盘)(DVD)、磁带、闪存、现场可编程门阵列或其它半导体设备或其它有形计算机存储介质中的电路装置),该程序在一个或多个计算机或其它处理器上执行时将执行实现以上讨论的本公开的各种实施例的方法。从前述示例显而易见,计算机可读存储介质可以将信息保留足够的时间,以提供非暂态形式的计算机可执行指令。这种一个或多个计算机可读存储介质可以是可移动的,使得可以将存储在其上的一个或多个程序加载到一个或多个不同的计算机或其它处理器上,以实现如上所述的本公开的各个方面。如在此所使用的,术语“计算机可读存储介质”仅涵盖可以被认为是制品(即,制造品)或机器的计算机可读介质。在一些实施例中,本公开可以体现为除计算机可读存储介质之外的计算机可读介质,诸如传播信号。

在一般意义上在此使用术语“程序”或“软件”来指代可用于对计算机或其它处理器进行编程以实现如上所述的本公开的各个方面的计算机代码或计算机可执行指令集。另外,应当理解,根据该实施例的一方面,当被执行时执行本公开的方法的一个或多个计算机程序不需要驻留在单个计算机或处理器上,而是可以以模块化的方式在多个不同的计算机或处理器之间分布,以实现本公开的各个方面。

计算机可执行指令可以具有许多形式,诸如由一个或多个计算机或其它设备执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常,在各种实施例中,程序模块的功能可以根据需要进行组合或分布。

此外,数据结构可以以任何合适的形式存储在计算机可读介质中。为了简化说明,可以示出数据结构具有通过数据结构中的位置而相关的字段。同样地,可以通过传达字段之间的关系的在计算机可读介质中的位置为字段分配存储来实现此类关系。然而,可以使用任何合适的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签或在数据元素之间建立关系的其它机制。

本公开的各个方面可以单独、组合或在前述实施例中未具体讨论的各种布置中使用,并且因此,在其应用中不限于在前面的描述中阐述或在附图中示出的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其它实施例中描述的方面组合。

此外,本公开可以体现为一种方法,已经提供了方法的一个示例。作为该方法的一部分执行的动作可以以任何合适的方式排序。因此,可以构造实施例,其中以与所示出的顺序不同的顺序执行动作,即使在说明性实施例中被示为顺序动作,该动作也可以包括同时执行一些动作。

在权利要求中使用诸如“第一”、“第二”、“第三”等序数术语来修改权利要求元素本身并不表示一个权利要求元素相对于执行方法动作的另一个顺序或临时顺序的任何优先级、优先权或顺序,但仅用作标记,以区分具有某些名称的一个权利要求元素与具有相同名称的另一个元素(但用于序数词)来区分权利要求元素。

另外,在此使用的措词和术语是出于描述的目的,并且不应被视为限制。在此“包括”、“包含”或“具有”、“包含了”、“涉及”及其变体的使用旨在涵盖其后列出的项目及其等同物以及其它项目。

相关技术
  • 跨现实系统
  • 具有跨深度平面分布的不等数量的分量彩色图像的虚拟和增强现实系统和方法
技术分类

06120112752929