CN115803788A - 用于大规模环境的交叉现实系统 - Google Patents
用于大规模环境的交叉现实系统 Download PDFInfo
- Publication number
- CN115803788A CN115803788A CN202180045830.4A CN202180045830A CN115803788A CN 115803788 A CN115803788 A CN 115803788A CN 202180045830 A CN202180045830 A CN 202180045830A CN 115803788 A CN115803788 A CN 115803788A
- Authority
- CN
- China
- Prior art keywords
- map
- persistent
- electronic device
- user
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 440
- 230000002085 persistent effect Effects 0.000 claims abstract description 373
- 230000008569 process Effects 0.000 claims abstract description 278
- 230000005484 gravity Effects 0.000 claims abstract description 214
- 230000009466 transformation Effects 0.000 claims description 249
- 238000003860 storage Methods 0.000 claims description 58
- 230000004807 localization Effects 0.000 claims description 54
- 239000013598 vector Substances 0.000 claims description 54
- 238000005259 measurement Methods 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 20
- 230000008093 supporting effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 145
- 210000003128 head Anatomy 0.000 description 144
- 238000010586 diagram Methods 0.000 description 71
- 230000000875 corresponding effect Effects 0.000 description 63
- 238000000844 transformation Methods 0.000 description 48
- 238000001914 filtration Methods 0.000 description 43
- 230000006870 function Effects 0.000 description 40
- 230000033001 locomotion Effects 0.000 description 39
- 238000013528 artificial neural network Methods 0.000 description 31
- 230000008859 change Effects 0.000 description 31
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 27
- 238000012549 training Methods 0.000 description 25
- 230000015654 memory Effects 0.000 description 24
- 238000009877 rendering Methods 0.000 description 24
- 230000008447 perception Effects 0.000 description 21
- 230000004044 response Effects 0.000 description 19
- 230000009471 action Effects 0.000 description 18
- 230000007613 environmental effect Effects 0.000 description 18
- 230000000644 propagated effect Effects 0.000 description 16
- 230000001960 triggered effect Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 230000002829 reductive effect Effects 0.000 description 14
- 230000000007 visual effect Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 12
- 238000013442 quality metrics Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 12
- 230000014616 translation Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 9
- 230000002688 persistence Effects 0.000 description 9
- 238000004441 surface measurement Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000000605 extraction Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000012935 Averaging Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 7
- 230000003190 augmentative effect Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 7
- 230000001976 improved effect Effects 0.000 description 7
- 238000010606 normalization Methods 0.000 description 6
- 238000011176 pooling Methods 0.000 description 6
- 210000001525 retina Anatomy 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 210000001747 pupil Anatomy 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 101150064138 MAP1 gene Proteins 0.000 description 4
- 230000004931 aggregating effect Effects 0.000 description 4
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000012913 prioritisation Methods 0.000 description 4
- 230000001902 propagating effect Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000001953 sensory effect Effects 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 238000012800 visualization Methods 0.000 description 4
- 241000282994 Cervidae Species 0.000 description 3
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000007596 consolidation process Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000007717 exclusion Effects 0.000 description 3
- 230000004418 eye rotation Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 229910001416 lithium ion Inorganic materials 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 101100206190 Arabidopsis thaliana TCP20 gene Proteins 0.000 description 2
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 2
- 101100082494 Oryza sativa subsp. japonica PCF1 gene Proteins 0.000 description 2
- 101100045761 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) TFC4 gene Proteins 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 210000000613 ear canal Anatomy 0.000 description 2
- 230000004438 eyesight Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 230000000704 physical effect Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000035807 sensation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000256837 Apidae Species 0.000 description 1
- 241000256836 Apis Species 0.000 description 1
- 101100459256 Cyprinus carpio myca gene Proteins 0.000 description 1
- 101100459261 Cyprinus carpio mycb gene Proteins 0.000 description 1
- 206010012586 Device interaction Diseases 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- XSQUKJJJFZCRTK-UHFFFAOYSA-N Urea Chemical compound NC(N)=O XSQUKJJJFZCRTK-UHFFFAOYSA-N 0.000 description 1
- 230000004308 accommodation Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000003705 background correction Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000004202 carbamide Substances 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002022 differential scanning fluorescence spectroscopy Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 210000000744 eyelid Anatomy 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011045 prefiltration Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000016776 visual perception Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/338—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/012—Head tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
- G06F3/013—Eye tracking input arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/75—Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
- G06V10/753—Transform-based matching, e.g. Hough transform
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Processing Or Creating Images (AREA)
- Image Analysis (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
交叉现实系统使便携式设备能够访问存储地图并有效且准确地渲染关于这些地图指定的虚拟内容。该系统可以处理利用便携式设备获取的图像,以通过基于持久地图的估计重力方向和定位请求中的数据进行姿势设置所在的坐标系来约束定位结果,而快速且准确地将便携式设备定位到持久地图。系统可以在定位处理期间主动将定位请求中的数据与估计的重力方向对齐,和/或便携式设备可以建立坐标系,在该坐标系中定位请求中的数据与估计的重力方向对齐成姿势,使得随后获取的包含在定位请求中的数据,当在该坐标系中成姿势时,被动地与估计的重力方向对齐。
Description
相关申请的交叉引用
本申请要求2020年4月29日提交的题为“CROSS REALITY SYSTEM FOR LARGESCALE ENVIRONMENTS(用于大规模环境的交叉现实系统)”的美国临时专利申请序列号63/017,227的优先权和权益,该申请的全部内容通过引用并入本文。
技术领域
本申请总体上涉及交叉现实系统。
背景技术
计算机可以控制人类用户界面以创建交叉现实(XR)环境,在该环境中,由计算机生成用户所感知的一些或全部XR环境。这些XR环境可以是虚拟现实(VR)、增强现实(AR)和混合现实(MR)环境,其中的一些或所有XR环境可以由计算机部分使用描述环境的数据来生成。例如,该数据可以描述虚拟对象,该虚拟对象可以以用户的感觉或感知为物理世界的一部分的方式渲染,以使得用户可以与虚拟对象进行交互。由于数据是通过用户接口设备(诸如例如头戴式显示设备)渲染和呈现的,因此用户可以体验这些虚拟对象。数据可以显示给用户看,或者可以控制被播放给用户听的音频,或者可以控制触觉(或触知)界面,从而使用户能够体验到用户感觉或感知为感觉到虚拟对象的触摸感觉。
XR系统可以被用于跨科学可视化、医学培训、工程设计和原型、远程操纵和远程呈现以及个人娱乐领域的许多应用。与VR相比,AR和MR包括与物理世界的真实对象相关的一个或多个虚拟对象。虚拟对象与真实对象交互的体验显著地增强了用户使用XR系统的乐趣,并且也为呈现有关如何改变物理世界的现实且易于理解的信息的各种应用打开了大门。
为了现实地渲染虚拟内容,XR系统可以建立围绕系统的用户的物理世界的表示。例如,此表示可以通过对利用可穿戴设备上的传感器获取的图像进行处理来构建,其中的可穿戴设备形成XR系统的一部分。在这样的系统中,用户可以通过环顾用户打算在其中使用XR系统的房间或其他物理环境,直到系统获得足够的信息来构建该环境的表示,来执行初始化例程。随着系统运行且用户在环境中移动或移动到其他环境,可穿戴设备上的传感器可以获取其他信息以扩展或更新物理世界的表示。
发明内容
本申请的方面涉及用于提供交叉现实(XR)场景的方法和设备。如本文所述的技术可以一起、单独或以任何合适的组合使用。
一些实施例涉及一种XR系统,其支持相对于持久地图数据库中的一个或多个持久地图指定虚拟内容的位置。所述XR系统包括定位服务,所述定位服务包括:通信部件,其被配置为从便携式电子设备接收关于三维(3D)环境的图像中的多个特征集合的信息,所述信息包括在坐标系中表达的所述多个特征集合的特征的位置;以及至少一个处理器,其被配置为执行计算机可执行指令,所述计算机可执行指令实现被连接到所述通信部件的定位部件。所述定位部件被配置为:相对于估计重力方向关联所述坐标系的取向;通过对所述多个特征集合中的每个特征集合执行将所述特征集合与所述持久地图数据库中的持久地图的部分之间的变换确定为候选定位的过程,针对所述多个特征集合计算多个候选定位;以及基于所述多个候选定位之间的共识,生成所述便携式电子设备的定位。所述持久地图的所述部分具有相关联的估计重力方向。基于所述坐标系的所述取向来约束所述确定的过程,以确定将所述坐标系与所述相关联的估计重力方向对齐的变换。
一些实施例涉及一种XR系统,其支持相对于持久地图数据库中的持久地图指定虚拟内容的位置。所述XR系统包括定位服务,所述定位服务包括:通信部件,其被配置为从便携式电子设备接收关于三维(3D)环境的图像中的多个特征集合的信息,所述信息包括在坐标系中表达的所述多个特征集合的特征的位置,所述坐标系具有相对于估计重力方向对齐的维度;以及至少一个处理器,其被配置为执行计算机可执行指令,所述计算机可执行指令实现被连接到所述通信部件的定位部件。所述定位部件被配置为:通过对所述多个特征集合中的每个特征集合执行将所述特征集合与所述持久地图数据库中的持久地图的部分之间的变换确定为候选定位的过程,针对所述多个特征集合计算多个候选定位,以及基于所述多个候选定位之间的共识,生成所述便携式电子设备的定位。所述持久地图的所述部分具有相关联的估计重力方向。所述确定的过程被约束为确定将所述特征集合的重力方向与所述持久地图的所述部分的所述相关联的估计重力方向对齐的变换。
一些实施例涉及一种被配置为在交叉现实系统内操作的电子设备。所述电子设备包括:一个或多个传感器,其被配置为捕获关于三维(3D)环境的信息,所捕获的信息包括多个图像;以及至少一个处理器,其被配置为执行计算机可执行指令。所述计算机可执行指令包括用于以下的指令:从所述3D环境的所述多个图像中提取多个特征集合;相对于所述电子设备本地的坐标系确定估计重力方向;在所述坐标系中表达所述多个特征集合的特征的位置;向所述交叉现实系统的定位服务发送关于所述多个特征集合的信息,所述信息指示所述多个特征集合的特征的位置和相对于所述坐标系的所述估计重力方向;以及从所述定位服务接收所述电子设备相对于持久地图数据库中的持久地图的姿势,其中,所述电子设备的所述姿势在向所述定位服务发送之后不到10秒内被接收。
前述概述是通过说明的方式提供的,并非旨在进行限制。
附图说明
附图并非旨在按比例绘制。在附图中,在各个附图中示出的每个相同或几乎相同的部件由相似的数字表示。为了清楚起见,并非每个部件都可以在每个附图中标记。在附图中:
图1是示出根据一些实施例的简化的增强现实(AR)场景的示例的示意图;
图2是根据一些实施例的示例性简化AR场景的示意图,示出了XR系统的示例性使用情况;
图3是示出根据一些实施例的用于AR系统中的单个用户的数据流的示意图,该AR系统被配置为向用户提供与物理世界交互的AR内容的体验;
图4是示出根据一些实施例的示例性AR显示系统的示意图,该示例性AR显示系统为单个用户显示虚拟内容;
图5A是根据一些实施例的示出了当用户穿着AR显示系统时,该AR显示系统在用户移动穿过物理世界环境时渲染AR内容的示意图;
图5B是示出根据一些实施例的观看光学组件和伴随部件的示意图;
图6A是示出根据一些实施例的使用世界重建系统的AR系统的示意图;
图6B是示出根据一些实施例的维持可通行世界的模型的AR系统的部件的示意图;
图7是由设备遍历穿过物理世界的路径形成的跟踪地图的示意图。
图8是示出根据一些实施例的感知虚拟内容的交叉现实(XR)系统的用户的示意图;
图9是根据一些实施例的在坐标系之间进行变换的图8的XR系统的第一XR设备的部件的框图;
图10是根据一些实施例的示出将原点坐标框架示例性变换为目的地坐标框架以便正确地渲染本地XR内容的示意图;
图11是示出根据一些实施例的持久坐标系(PCF)的创建以及XR内容到PCF的附接的框图;
图12是示出根据一些实施例的建立和使用PCF的方法的流程图;
图13是根据一些实施例的包括第二XR设备的图8的XR系统的框图;
图14是示出根据一些实施例的房间和为房间中的各个区域建立的关键帧的示意图;
图15是示出根据一些实施例的基于关键帧的持久姿势的建立的示意图;
图16是示出根据一些实施例的基于持久姿势的持久坐标系(PCF)的建立的示意图;
图17A至图17C是示出根据一些实施例的创建PCF的示例的示意图;
图18是示出根据一些实施例的用于为单个图像和/或地图生成全局描述符的系统的框图;
图19是示出根据一些实施例的计算图像描述符的方法的流程图;
图20是示出根据一些实施例的使用图像描述符的定位方法的流程图;
图21是示出根据一些实施例的训练神经网络的方法的流程图;
图22是示出根据一些实施例的训练神经网络的方法的框图;
图23是示出根据一些实施例的被配置为对多个环境图进行排名和合并的AR系统的示意图;
图24是示出根据一些实施例的存储在远程存储介质上的多个规范地图的简化框图;
图25是示出根据一些实施例的选择规范地图以例如在一个或多个规范地图中定位新的跟踪地图和/或从规范地图获得PCF的方法的示意图;
图26和图27是根据一些实施例的与服务交互的XR系统的框图,该服务根据由用户设备提供的跟踪地图构建多个环境地图,并提供用于将用户设备与环境地图相关的定位信息;
图28是示出根据一些实施例的以规范形式创建物理世界的环境地图的方法的框图;
图29A和29B是示出根据一些实施例的通过用新的跟踪地图更新图7的跟踪地图以规范形式创建的环境地图的示意图;
图30A至30F是示出根据一些实施例的合并地图的示例的示意图;
图31和图32是示出根据一些实施例的当三个用户在同一会话中同时使用XR系统时XR系统的使用的透视图和框图;
图33是示出根据一些实施例的恢复和重置头部姿势的方法的流程图;
图34是根据一些实施例的示例XR系统的示意图,其中多个设备中的任一个可以访问定位服务;
图35是根据一些实施例的用于操作便携式设备的示例处理流程,其中的便携式设备作为提供基于云的定位的XR系统的一部分;
图36A、图36B和图36C是根据一些实施例的用于基于云的定位的示例处理流程;
图37、图38、图39、图40和图41是当佩戴XR设备的用户穿越3D环境时构建跟踪地图的便携式XR设备的一系列示意图,其中,跟踪地图具有带有无线指纹的多个图块(tile);
图42是示出根据一些实施例的操作便携式XR设备以生成无线指纹的方法的流程图;
图43是根据一些实施例的可以作为利用位置元数据的本地或远程定位的一部分来执行的示例性过程的流程图;
图44是根据一些实施例的生成包含位置元数据的跟踪地图的便携式设备的示例的概念图;
图45是根据一些实施例的使用位置元数据来定位便携式设备的示意图;
图46是根据一些实施例的用于交叉现实平台的示例架构的框图;
图47是根据一些实施例的用于将从设备捕获的地理位置数据合并到地理位置数据库中的示例性过程的流程图;
图48是描绘根据一些实施例的包括便携式设备的代表性系统的框图,该便携式设备被配置为在第一XR系统中操作并且适于在第二XR系统中操作;
图49是描绘根据一些实施例的代表性过程的流程图,其中配置成在第一XR系统中操作的便携式设备可以通过基于云的定位服务与在第二XR系统中操作的其他便携式设备共享空间信息;
图50是描绘根据一些实施例的远程定位服务可以向XR设备提供定位信息的代表性过程的流程图;
图51是根据一些实施例的提供大规模定位的XR系统的框图;
图52是示出根据一些实施例的关于由图64的XR系统处理的物理世界的信息的示意图;
图53是根据一些实施例的图64XR系统的包括匹配对应(correspondence)质量预测组件和姿势估计组件的的子系统的框图;
图54是示出根据一些实施例的生成用于训练图66的子系统的数据集的方法的流程图;
图55是示出根据一些实施例的训练图66的子系统的方法的流程图;
图56示出了根据一些实施例的重力保持(gravity-preserving)的地图合并过程。
图57是根据一些实施例的XR系统的定位部件的框图;
图58是根据一些替代实施例的XR系统的定位部件的替代实施例;
图59是根据一些实施例的XR系统的重力辅助定位部件的框图;
图60是根据一些实施例的以第一替代模式操作的图59的重力辅助定位部件的框图;
图61是根据一些实施例的以第二替代模式操作的图Xl的重力辅助定位部件的框图;以及
图62是根据一些实施例的可以应用在本发明系统中的计算机形式的机器的框图。
具体实施方式
本文描述了用于提供XR场景的方法和设备。为了向多个用户提供逼真的XR体验,XR系统必须知道用户在物理世界内的位置,以便正确关联虚拟对象与真实对象的位置。发明人已经认识并意识到以减少的时间和提高的准确性来在大规模和超大规模环境(例如,邻里、城市、国家、全球)中定位XR设备的方法和设备。
XR系统可以构建场景的环境地图,该环境地图可以根据用传感器收集的图像和/或深度信息来创建,传感器是由XR系统的用户佩戴的XR设备的一部分。每个XR设备都可以通过集成来自设备运行时收集的一个或多个图像的信息来开发其物理环境的本地(local)地图。在一些实施例中,当设备首次开始扫描物理世界(例如,开始新的会话)时,该地图的坐标系与设备的位置和/或取向相关联。当用户与XR系统交互时,设备的该位置和/或取向可能会随着会话的变化而变化,无论不同的会话与不同的用户相关联,每个用户都有自己的可穿戴设备,可穿戴设备带有扫描环境的传感器,还是同一个用户在不同时间使用同一设备。
XR系统可以实施一种或多种技术以便能够基于持久空间信息进行操作。例如,这些技术可以通过允许XR系统的多个用户中的任何一个用户创建、存储和检索持久空间信息,为单个或多个用户提供计算效率更高和沉浸式体验的XR场景。持久空间信息还可以以计算有效的方式快速恢复和重置一个或多个XR设备中的每一个XR设备上的头部姿势。
持久空间信息可以由持久地图来表示。持久地图可以存储在远程存储介质中。例如,用户佩戴的可穿戴设备在被打开之后,可以从诸如云存储的持久存储中检索先前创建和存储的适当地图。先前存储的地图可能是基于在先前会话期间通过用户可穿戴设备上的传感器收集的有关环境的数据。检索存储的地图可以启用可穿戴设备的使用,而无需用可穿戴设备上的传感器完成对物理世界的扫描。替代地或附加地,设备在进入物理世界的新区域时,可以类似地检索适当的存储地图。
存储的地图可以以规范形式表示,每个XR设备上的本地参考框架可以与该规范形式相关。在多设备XR系统中,一个设备访问的存储地图可能是由另一个设备创建和存储的,和/或可能是通过聚合多个可穿戴设备上的传感器收集的有关物理世界的数据构建的,多个可穿戴设备之前至少存在于由存储地图表示的物理世界的一部分。
在一些实施例中,可以以可以在用户之间以及在包括应用的分布式组件之间容易地共享的方式来表示持久空间信息。规范地图可以提供关于物理世界的信息,例如,作为持久坐标系(PCF)。PCF可以基于在物理世界中识别的一组特征来定义。可以选择特征,使得它们在XR系统的用户会话之间可能是相同的。PCF可以是物理世界的稀疏表示,提供的关于物理世界的可用信息少于所有可用信息,以使得它们可以被有效地处理和传输。
用于处理持久空间信息的技术可以包括跨一个或多个会话基于一个或多个设备的本地坐标系创建动态地图。这些地图可以是稀疏地图,基于在用于形成地图的图像中检测到的特征点的子集来表示物理世界。持久坐标系(PCF)可以根据稀疏地图生成,并且可以通过例如应用编程接口(API)暴露给XR应用。这些能力可由用于通过合并由一个或多个XR设备创建的多个地图来形成规范地图的技术支持。
可以通过定位过程来确定每个设备的本地地图和规范地图之间的关系。可以基于选择并发送到设备的一组规范地图,在每个XR设备上执行该定位过程。替代地或附加地,可以在远程处理器上提供定位服务,例如可以在云中实现定位服务。
在多个设备之间共享关于物理世界的数据可以实现虚拟内容的共享用户体验。例如,访问同一存储地图的两个XR设备都可以相对于存储地图进行定位。一旦被定位,用户设备可以通过将通过参考存储地图指定的位置转换成由用户设备维护的参考框架来渲染具有该位置的虚拟内容。用户设备可以使用该本地参考框架来控制用户设备的显示以在指定位置中渲染虚拟内容。
为了支持这些以及其它功能,XR系统可以包括以下组件,该组件基于与用户设备上的传感器收集的有关物理世界的数据,开发、维护和使用持久空间信息(包括一个或多个存储地图)。这些组件可以例如通过在用户设备的头戴式部分上的一些操作而跨XR系统分布。其它组件可以在计算机上操作,与通过局域网或个人局域网耦合到头戴式部分的用户相关联。还有一些可以在远程位置处(诸如在可通过广域网访问的一个或多个服务器处)操作。
例如,这些组件可以包括能够从由一个或多个用户设备收集的关于物理世界的信息中识别具有足够质量以存储为持久地图或存储在持久地图中的信息的组件。下面更详细描述的这种组件的示例是地图合并组件。例如,这样的组件可以接收来自用户设备的输入并确定输入的要用于更新持久地图的适用性部分。例如,地图合并组件可以将由用户设备创建的本地地图分割成多个部分,确定一个或多个部分到持久地图的可合并性,并将满足合格可合并性标准的部分合并到持久地图。例如,地图合并组件还可以将来自用户设备的未与持久地图合并的本地地图提升为单独的持久地图。
作为另一个示例,这些组件可以包括可以帮助选择一个或多个持久地图的适当集合的组件,适当集合可能表示物理世界的同一区域,如用户设备提供的位置信息所表示的那样。下面更详细描述的此类组件的示例是地图排名和地图选择组件。例如,这样的组件可以接收来自用户设备的输入并且识别可能表示物理世界中的该设备正在其中操作的区域的一个或多个持久地图。例如,地图排名组件可以帮助选择本地设备在渲染虚拟内容、收集关于环境的数据、或执行其他动作时要使用的持久地图。可替代地或附加地,地图排名组件可以帮助识别要随着关于物理世界的附加信息被一个或多个用户设备收集而被更新的持久地图。
其他组件可以确定将关于一个参考系所捕获或描述的信息变换到另一参考系的变换。例如,传感器可以被附接到头戴式显示器,以便从这些传感器读取的数据指示物理世界中的对象相对于佩戴者的头部姿势的位置。可以应用一种或多种变换来将该位置信息与和持久环境地图相关联的坐标系相关。类似地,当在持久环境地图的坐标系中表示时,指示虚拟对象将被渲染在哪里的数据可以经过一个或多个变换以位于用户的头部上的显示器的参考系中。如下文更详细描述的,可以存在多个这样的变换。这些变换可以跨XR系统的组件进行分区,以便它们可以有效地更新和/或应用于分布式系统。
在一些实施例中,可以根据由多个用户设备收集的信息来构造持久地图。XR设备可各自捕获本地空间信息并利用由每个XR设备的传感器在不同位置和时间收集的信息构建单独的跟踪地图。每个跟踪地图可以包括点,每个点可以与可能包括多个特征的真实对象的特征相关联。除了可能为创建和维护持久地图提供输入之外,跟踪地图还可用于跟踪用户在场景中的运动,使XR系统能够相对于该用户设备上的跟踪地图建立的参考系来估计相应的用户的头部姿势。
地图的创建和头部姿势的估计之间的这种相互依赖构成了重大挑战。可能需要大量处理来同时创建地图和估计头部姿势。当对象在场景中移动(例如,移动桌子上的杯子)和用户在场景中移动时,必须快速完成处理,因为延迟使XR体验对用户来说不太真实。另一方面,XR设备可以提供有限的计算资源,因为XR设备应该是轻量级的,以便用户佩戴舒适。使用更多传感器无法弥补计算资源的不足,因为添加传感器也会增加重量。此外,更多的传感器或更多的计算资源会导致热量,这可能会导致XR设备的变形。
XR系统可以被配置为以低计算资源使用率和/或低延迟来创建、共享和使用持久空间信息,以提供更加身临其境的用户体验。一些这样的技术可以实现空间信息的有效比较。例如,这种比较可以作为定位的一部分出现,其中来自本地设备的一组特征与规范地图中的一组特征相匹配。类似地,在地图合并中,可以尝试将来自设备的跟踪地图中的特征的一个或多个集合与规范地图中的对应特征进行匹配。将跟踪地图合并到一组规范地图中的后续处理可以基于该比较的结果。
精简空间信息比较的技术可以包括通过数字描述符来整体(in toto)表示特征或图像帧。描述符可以具有由经过训练的神经网络分配的数值,能够以较低的计算负担进行快速比较。
将图像帧和图像内的特征点表示为描述符使得能够将新图像信息有效地匹配到存储的图像信息。XR系统可以连同持久地图一起存储持久地图下的一个或多个帧的描述符。由用户设备获取的本地图像帧可以类似地转换为这样的描述符。通过选择具有与本地图像帧的描述符相似的描述符的存储地图,可以用相对少量的处理来选择可能表示与用户设备相同的物理空间的一个或多个持久地图。在一些实施例中,可以为本地地图和持久地图中的关键帧计算描述符,进一步减少比较地图时的处理。这样的有效比较可用于例如简化寻找持久地图以加载到本地设备中或寻找持久地图以基于利用本地设备获取的图像信息进行更新。
即使使用将图像帧整体进行比较的技术,特征点集的比较仍然可以用于一些操作并且可能是计算密集型的。例如,具有匹配帧描述符的两个帧可以仅在找到那些帧中的特征点集之间具有足够低误差的对应关系之后才被确定为匹配。找到具有低误差的特征点集之间的对应关系可以用作确认从本地设备接收的特征点集与存储的地图相匹配。替代地或附加地,比较可以导致特征点集的对齐,使得可以确定包含那些特征点集的两个地图之间的变换。相反,即使包含这些特征点的帧的描述符指示相似性,当特征点集之间的对应关系无法在误差没有超过阈值的情况下实现时,来自本地设备的特征点也可能与存储地图中的特征点不匹配。在找不到匹配之后,处理可能会继续以找到匹配的其他特征点集。
匹配过程中的不确定性可能需要大量处理以在来自设备和存储的地图中的特征集之间找到合适的匹配。使计算要求进一步复杂化的是,持久地图中的特征点的数量随着环境规模的增大而增加,这反过来又增加了可能进行比较的特征点集的数量,从而以足够的置信度确定两个特征点集匹配。例如,图像帧可能会产生数百个特征点,这些特征点被合并到地图中。单个房间的地图可能有许多框架。建筑物可能有许多房间。除了街道和公园等室外区域外,社区还可能包括许多建筑物。城市可能包括许多社区等。
发明人已经认识到并理解到,以可以确定相对于重力的取向的格式生成和维护空间信息可以加速找到空间信息之间的对应关系。这样的格式可以限制用于找到空间信息之间的对齐的搜索空间,使得能够更快速和/或更准确地进行比较。例如,保持相对于重力取向的持久地图的定位服务可以从便携式设备接收空间信息,对于该便携式设备可以确定相对于重力的取向。通过将相对于持久地图来定位空间信息的变换的搜索限制到仅导致相对于来自设备的空间信息的重力方向与持久地图的重力方向对齐的那些变换,搜索空间可以从六个自由度减少到四个自由度。通过这样的处理,返回定位结果的时间可以缩短到少于10秒。
可以在设备上导出来自设备的空间信息相对于重力的取向。例如,可用作在设备上收集的空间信息的参考系的跟踪地图可利用与惯性传感器指示的方向对齐的坐标来构建,该方向是重力方向。在一些实施例中,可以将表示空间信息的坐标系中的重力的测量值从设备发送到处理该空间信息的服务。在一些实施例中,维护具有相对于重力的已知取向的持久地图的服务可以确定设备的重力的方向,因为它将来自设备的空间信息与持久地图对齐。设备的重力的方向的这种确定可以提供给设备,设备可以使用它来格式化附加空间信息,或者可以由服务保留,它可以应用于处理来自设备的后续信息。
在此描述的技术可以与许多类型的设备以及对于许多类型的场景一起或单独使用,包括具有有限的计算资源的提供增强或混合现实场景的可穿戴或便携式设备。在一些实施例中,可以通过形成XR系统的一部分的一个或多个服务来实现该技术。
AR系统概述
图1和图2示出了具有虚拟内容的场景,这些场景与物理世界的一部分一起显示。为了说明的目的,AR系统被用作XR系统的示例。图3-6B示出示例性AR系统,其包括可以根据在此描述的技术操作的一个或多个处理器、存储器、传感器和用户界面。
参考图1,描绘了室外AR场景354,其中AR技术的用户看到了物理世界的类似公园的设置356,其特征是人、树、背景中的建筑物以及混凝土平台358。除了这些项目之外,AR技术的用户还感知到他们“看到”了站在物理世界混凝土平台358上的机器人雕像357,以及似乎是大黄蜂的头像的飞行着的卡通般的头像角色352,即使这些元素(例如,头像角色352和机器人雕像357)在物理世界中不存在。由于人类视觉感知和神经系统的极端复杂性,产生一种对于在其它虚拟或物理世界图像元素中促进舒适、自然感觉、丰富的虚拟图像元素呈现的AR技术具有挑战性。
这样的AR场景可以通过基于跟踪信息来建立物理世界的地图的系统来实现,使用户能够将AR内容放置在物理世界中,确定在物理世界的地图中放置AR内容的位置,保留AR场景以便可以在例如不同的AR体验会话期间重新加载放置的AR内容以在物理世界中显示,并使多个用户共享AR体验。该系统可以建立和更新用户周围的物理世界表面的数字表示。该表示可以用于将虚拟内容渲染为看起来被在用户与虚拟内容的渲染位置之间的物理对象完全或部分遮挡,以便在基于物理的交互中放置虚拟对象,以及用于虚拟角色路径计划和导航,或用于其中使用关于物理世界的信息的其他操作。
图2描绘了根据一些实施例的室内AR场景400的另一示例,其示出了XR系统的示例性使用情况。示例性场景400是具有墙壁、在墙壁的一侧上的书架、在房间的拐角的落地灯、地板、沙发和地板上的咖啡桌的客厅。除了这些物理物品外,AR技术的用户还可以感知虚拟对象,诸如沙发后面的墙壁上的图像,飞过门的鸟儿,从书架上窥视的鹿,以及以放置在咖啡桌上的风车形式的装饰品。
对于墙壁上的图像,AR技术不仅需要有关墙壁表面的信息,还需要有关房间内对象和表面的信息(诸如灯的形状),该信息会遮挡图像以正确渲染虚拟对象。对于飞翔的鸟类,AR技术需要有关房间周围所有对象和表面的信息,以便以逼真的物理效果渲染鸟类,以避开对象和表面或避免在鸟类碰撞时反弹。对于鹿,AR技术需要有关表面(诸如地板或咖啡桌)的信息,以计算鹿的放置位置。对于风车,系统可以识别出是与桌子分离的对象,并且可以确定其是可移动的,而架子的拐角或墙壁的拐角可以被确定为是静止的。这种区别可用于确定在各种操作中的每个操作中使用或更新场景的哪些部分。
可以将虚拟对象放置在先前的AR体验会话中。当新的AR体验会话在客厅开始时,AR技术需要将虚拟对象准确显示在先前放置并且从不同的视角实际可见的位置。例如,风车应当显示为站立在书本上,而不是在没有书本的不同位置处漂浮在桌子上方。如果新的AR体验会话的用户的位置没有准确地定位在客厅中,则可能会发生这种漂浮。作为另一示例,如果用户从与放置风车时的视角不同的视角观看风车,则AR技术需要显示风车的相应侧面。
可以经由包括多个部件的系统向用户呈现场景,该多个部件包括可以刺激一种或多种用户感觉(诸如视觉、声音和/或触摸)的用户界面。另外,该系统可以包括一个或多个传感器,该传感器可以测量场景的物理部分的参数,包括用户在场景的物理部分内的位置和/或运动。此外,该系统可以包括一个或多个计算设备,以及相关联的计算机硬件,诸如存储器。这些部件可以集成到单个设备中,或可以跨多个互连设备分布。在一些实施例中,这些部件中的一些或全部可以集成到可穿戴设备中。
图3描绘了根据一些实施例的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可指示例如以六个自由度捕获深度图的传感器的当前视点,但是头戴式耳机514可用于其它目的,诸如将图像信息与物理世界的特定部分相联系或将佩戴在用户头部上的显示器的位置与物理世界相联系。
在一些实施例中,头部姿势信息可以以不同于IMU(诸如分析图像中的对象)的其它方式来导出。例如,头部姿势跟踪部件可以基于由相机捕获的视觉信息和由IMU捕获的惯性信息来计算AR设备相对于物理对象的相对位置和取向。头部姿势跟踪部件然后可以例如通过将所计算的AR设备相对于物理对象的相对位置和取向与物理对象的特征进行比较来计算AR设备的头部姿势。在一些实施例中,该比较可以通过识别利用一个或多个传感器522捕获的图像中的特征来进行,该一个或多个传感器522是随时间稳定的,以便随时间捕获的图像中的这些特征的位置的变化可以与用户的头部姿势的变化相关联。
用于操作XR系统的技术可以提供XR场景以获得更身临其境的用户体验。在这样的系统中,XR设备可以以1kHz的频率估计头部姿势,计算资源的使用率较低。这样的设备可以配置有例如以30Hz运行的四个视频图形阵列(VGA)相机、以1kHz运行的一个惯性测量单元(IMU)、单个高级RISC机器(ARM)内核的计算能力、内存小于1GB,以及网络带宽小于100Mbps。可以采用本文描述的技术来减少生成和维护地图和估计头部姿势所需的处理以及以低计算开销提供和消费数据。XR系统可以基于匹配的视觉特征计算其姿势。美国专利申请公开号US 2019/0188474描述了混合跟踪,因此通过引用将其全部内容并入本文。
在一些实施例中,AR设备可以根据用户带着该AR设备在整个物理世界中移动时捕获的一系列图像帧中的连续图像中识别出的特征点来构建地图。尽管每个图像帧可以取自用户移动时的不同姿势,但是系统可以通过将连续图像帧的特征与先前捕获的图像帧相匹配,来调整每个连续图像帧的特征的取向,以与初始图像帧的取向相匹配。连续图像帧的平移使得表示相同特征的点将与先前收集的图像帧中的对应特征点相匹配,可用于对齐每个连续图像帧以与先前处理的图像帧的取向相匹配。生成的地图中的帧可以具有在第一图像帧被添加到地图时建立的共同取向。该地图在公共参考框架中具有多组特征点,该地图可用于通过将当前图像帧中的特征与地图进行匹配来确定用户在物理世界中的姿势。在一些实施例中,该地图可以被称为跟踪地图。
除了能够跟踪用户在环境中的姿势之外,该地图还可以使系统的其他部件(例如世界重建部件516)能够确定物理对象相对于用户的位置。世界重建部件516可以从传感器接收深度图512和头部姿势514以及任何其它数据,并将该数据集成到重建518中。重建518可以比传感器数据更完整并且噪声更少。世界重建部件516可以使用随时间推移的来自多个视点的传感器数据的空间和时间平均来更新重建518。
重建518可以包括一种或多种数据格式(包括例如体素、网格、平面等)的物理世界的表示。不同格式可以表示物理世界的相同部分的替代表示或可以表示物理世界的不同部分。在所示的示例中,在重建518的左侧,物理世界的部分被呈现为全局表面;在重建518的右侧,物理世界的部分被呈现为网格。
在一些实施例中,由头部姿势部件514保持的地图可以相对于可能保持的物理世界的其他地图稀疏。稀疏地图可以指示关注点和/或结构(例如拐角或边缘)的位置,而不是提供有关表面的位置以及可能的其他特征的信息。在一些实施例中,地图可以包括由传感器522捕获的图像帧。这些帧可以被简化为可以表示关注点和/或结构的特征。结合每个帧,关于从其获取帧的用户的姿势的信息也可以被存储为地图的一部分。在一些实施例中,可以存储或可以不存储由传感器获取的每个图像。在一些实施例中,当图像被传感器收集时,系统可以处理图像,并且选择图像帧的子集用于进一步计算。该选择可以基于一个或多个标准,该标准限制信息的添加,但确保地图包含有用的信息。系统可以例如基于与已经添加到地图的先前图像帧的重叠或者基于包含被确定为可能表示静止对象的足够数量的特征的图像帧,来向地图添加新图像帧。在一些实施例中,所选择的图像帧或来自所选择的图像帧的特征组可以用作地图的关键帧,其用于提供空间信息。
在一些实施例中,可以减少在构建地图时处理的数据量,诸如通过构建具有映射点和关键帧的集合的稀疏地图和/或将地图划分为块以使能逐块更新。映射点可以与环境中的关注点相关联。关键帧可能包括从相机捕获的数据中所选择的信息。美国专利申请公开号US 2020/0034624描述了确定和/或评估定位地图,并在此通过引用整体并入本文。
AR系统502可以从物理世界的多个角度随时间整合传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于传感器的帧姿势及其与其他姿势的关系是已知的,因此可以将物理世界的这些多个视点中的每个视点融合在一起,形成物理世界的单个组合重建,这可以用作地图的抽象(abstract)层并提供空间信息。通过使用空间和时间平均(即,随时间推移从多个视点对数据进行平均)或任何其他适当的方法,重建可以比原始传感器数据更完整且噪声更少。
在图3所示的实施例中,地图表示其中存在单个可穿戴设备的用户的物理世界的部分。在那种情况下,与地图中的框架相关联的头部姿势可以被表示为本地头部姿势,指示相对于会话开始时单个设备的初始取向的取向。例如,当设备被开启时可以相对于初始头部姿势对头部姿势进行跟踪,或者以其他方式操作来扫描环境以建立该环境的表示。
结合表征物理世界的那部分的内容,地图可以包括元数据。元数据例如可以指示捕获用于形成地图的传感器信息的时间。可替代地或另外地,元数据可以指示在捕获用于形成地图的信息时传感器的位置。位置可以直接表示,诸如采用来自GPS芯片的信息,也可以间接表示,诸如采用无线(例如,Wi-Fi)签名,该Wi-Fi签名指示在收集传感器数据的同时从一个或多个无线接入点接收到的信号的强度,和/或采用收集传感器数据的同时用户设备连接到的无线接入点的诸如BSSID的标示符。
重建518可以用于AR功能,诸如产生用于遮挡处理或基于物理的处理的物理世界的表面表示。该表面表示可能随着用户移动或真实世界中的对象改变而改变。重建518的各方面可以例如由在世界坐标中产生改变的全局表面表示的部件520使用,其可以由其它部件使用。
可以基于该信息,诸如通过AR应用504来生成AR内容。AR应用504可以是例如游戏程序,其基于关于物理世界的信息来执行一个或多个功能,诸如视觉遮挡、基于物理的交互和环境推理。它可以通过查询来自世界重建部件516所产生的重建518的不同格式的数据来执行这些功能。在一些实施例中,部件520可以被配置为当物理世界的关注区域中的表示改变时输出更新。例如,该关注区域可以被设置为近似于系统用户附近的物理世界的一部分,诸如用户视野内的部分,或者被投影(预测/确定)为进入用户的视野内。
AR应用504可以使用该信息来生成和更新AR内容。AR内容的虚拟部分可以结合透视现实510呈现在显示器508上,从而创建真实的用户体验。
在一些实施例中,可以通过XR设备向用户提供AR体验,该XR设备可以是可穿戴显示设备,它可以是系统的一部分,该系统可以包括远程处理和/或远程数据存储和/或,在一些实施例中,其他用户佩戴的其他可穿戴显示设备。为了简化图示,图4示出了包括单个可穿戴设备的系统580(以下称为“系统580”)的示例。系统580包括头戴式显示设备562(以下称为“显示设备562”),以及支持显示设备562的功能的各种机械和电子模块和系统。显示设备562可以耦合至框架564,该框架564可由显示系统用户或观看者560(以下称为“用户560”)佩戴,并被配置为将显示设备562定位在用户560的眼前。根据各种实施例,显示设备562可以顺序显示。显示设备562可以是单眼的或双眼的。在一些实施例中,显示设备562可以是图3中的显示器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的资源。在进一步的实施例中,作为远程数据存储库574的补充或替代,可穿戴设备可以访问基于云的远程数据存储库和/或服务。在一些实施例中,上述头部姿势跟踪部件可以至少部分地在本地数据处理模块570中实现。在一些实施例中,图3中的世界重建部件516可以至少部分地在本地数据处理模块570中实现。例如,本地数据处理模块570可以被配置为执行计算机可执行指令以至少部分地基于数据的至少一部分来生成地图和/或物理世界表示。
在一些实施例中,处理可以分布在本地处理器和远程处理器上。例如,本地处理可以用于基于利用用户设备上的传感器收集的传感器数据来构造该用户设备上的地图(例如,跟踪地图)。此类地图可由该用户设备上的应用使用。另外,先前创建的地图(例如,规范地图)可以存储在远程数据存储库574中。在适当的已存储或持久地图可用的情况下,它可以代替在设备上本地创建的跟踪地图或在设备上本地创建的跟踪地图之外使用。在一些实施例中,可以将跟踪地图定位到存储地图,使得在跟踪地图与规范地图之间建立对应关系,其中跟踪地图可能相对于用户开启系统时的可穿戴设备的位置来取向,规范地图可以相对于一个或多个持久特征取向。在一些实施例中,持久地图可以被加载在用户设备上,以允许用户设备渲染虚拟内容而没有与对位置进行扫描相关联的延迟,从而根据在扫描期间获取的传感器数据来构建用户的整个环境的跟踪地图。在一些实施例中,用户设备可以访问远程持久地图(例如,存储在云端),而无需在用户设备上下载持久地图。
在一些实施例中,空间信息可以从可穿戴设备传送到远程服务,例如被配置为将设备定位到在云服务上维护的存储地图的云服务。根据一个实施例,定位过程可以在云中进行,将设备位置与现有地图(例如规范地图)相匹配,并返回将虚拟内容链接到可穿戴设备位置的变换。在这样的实施例中,系统可以避免将地图从远程资源传送到可穿戴设备。其他实施例可以被配置用于基于设备和基于云的定位,例如,以启用网络连接不可用或用户选择不启用基于基于云的定位的功能。
可替代地或另外地,可以将跟踪地图与先前存储的地图合并以扩展或改善那些地图的质量。确定合适的先前创建的环境地图是否可用和/或将跟踪地图与一个或多个存储的环境地图合并的处理可以在本地数据处理模块570或远程处理模块572中完成。
在一些实施例中,本地数据处理模块570可以包括被配置为分析和处理数据和/或图像信息的一个或多个处理器(例如,图形处理单元(GPU))。在一些实施例中,本地数据处理模块570可以包括单个处理器(例如,单核或多核ARM处理器),这将限制本地数据处理模块570的计算预算,但是实现更小型的设备。在一些实施例中,世界重建部件516可以使用小于单个高级RISC机器(ARM)核心的计算预算来在非预定义空间上实时生成物理世界表示,使得单个ARM核心的剩余计算预算可以访问以用于其它用途,诸如例如提取网格。
在一些实施例中,远程数据存储库574可以包括数字数据存储设施,该数字数据存储设施可以通过互联网或“云”资源配置中的其它联网配置而可用。在一些实施例中,所有数据被存储在并且所有计算在本地数据处理模块570中执行,从而允许来自远程模块的完全自主的使用。在一些实施例中,所有数据被存储并且所有或大多数计算在远程数据存储库574中执行,从而允许较小的设备。例如,世界重建可以全部或部分地存储在该存储库574中。
在其中数据被远程存储并且可以通过网络访问的实施例中,数据可以被增强现实系统的多个用户共享。例如,用户设备可以上传他们的跟踪地图,以增强环境地图数据库。在一些实施例中,跟踪地图上传发生在与可穿戴设备的用户会话结束时。在一些实施例中,跟踪地图上传可以在预定义时间,从先前上传开始的预定义时间段之后,或者在被事件触发时,连续、半连续、间歇地发生。无论基于来自该用户设备还是任何其他用户设备的数据,任何用户设备上传的跟踪地图都可用于扩展或改善先前存储的地图。同样,下载到用户设备的持久地图可以基于来自该用户设备或任何其他用户设备的数据。以该方式,用户可以容易地获得高质量的环境地图以改善他们在AR系统中的体验。
在另外的实施例中,可以基于在(例如,在云中的)远程资源上所执行的定位来限制和/或避免持久地图下载。在这样的配置中,可穿戴设备或其他XR设备向云服务传送与姿势信息相结合的特征信息(例如,在感测到特征信息中表示的特征时设备的定位信息)。云服务的一个或多个部件可以将特征信息与相应的存储地图(例如,规范地图)相匹配,并且生成由XR设备所维护的跟踪地图与规范地图的坐标系之间变换。其跟踪地图相对于规范地图进行定位的每个XR设备可以基于其自己的跟踪在相对于规范地图指定的位置准确地渲染虚拟内容。
在一些实施例中,本地数据处理模块570可操作地耦合到电池582。在一些实施例中,电池582是可移动电源,诸如在计数器电池上方。在其它实施例中,电池582是锂离子电池。在一些实施例中,电池582既包括在系统580的非操作时间期间可由用户560充电的内部锂离子电池,又包括可移除的电池,使得用户560可以在更长的时间段内操作系统580,而不必连接到电源以为锂离子电池充电,或者不必关闭系统580以更换电池。
图5A示出了当用户530在移动穿过物理世界环境532(以下称为“环境532”)时,佩戴有渲染AR内容的AR显示系统的用户530。AR系统沿着用户的移动路径捕获的信息可以被处理成一个或多个跟踪地图。用户530将AR显示系统定位在位置534,并且AR显示系统记录可通行世界相对于位置534的环境信息(例如,物理世界中真实对象的数字表示,其可以随着对真实对象在物理世界的改变被存储和更新)。该信息可以与图像、特征、定向音频输入或其他所需数据结合起来作为姿势存储。位置534例如作为跟踪地图的一部分被聚集到数据输入536,并且至少由可通行世界模块538处理,该可通行世界模块538可以例如通过在图4的远程处理模块572上的处理来实现。在一些实施例中,可通行世界模块538可以包括头部姿势部件514和世界重建部件516,使得经处理的信息可以结合与在渲染虚拟内容中使用的物理对象相关的其他信息来指示对象在物理世界中的位置。
可通行世界模块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系统可以从多个传感器(包括一个或多个图像传感器)中获取信息。
图5B是观看光学组件548和伴随部件的示意图。在一些实施例中,指向用户眼睛549的两个眼睛跟踪相机550检测用户眼睛549的度量,诸如用户眼睛549上的眼睛形状、眼睑闭塞、瞳孔方向和闪烁。
在一些实施例中,传感器之一可以是深度传感器551,诸如飞行时间传感器,其向世界发射信号并检测来自附近对象的那些信号的反射以确定与给定对象的距离。深度传感器例如可以由于那些对象的运动或用户姿势的变化而快速确定对象是否已经进入用户的视野。然而,关于对象在用户视野中的位置的信息可以可替代地或另外地由其它传感器收集。深度信息例如可以从立体视觉图像传感器或全光传感器获得。
在一些实施例中,世界相机552记录大于外围的视图以对环境532进行地图构建和/或以其他方式创建环境532的模型,并检测可影响AR内容的输入。在一些实施例中,世界相机552和/或相机553可以是灰度和/或彩色图像传感器,该传感器可以以固定的时间间隔输出灰度和/或彩色图像帧。相机553可以在特定时间进一步捕获用户视野内的物理世界图像。即使基于帧的图像传感器的像素的值不变,也可以重复对其像素进行采样。世界相机552、相机553和深度传感器551中的每一个具有相应的视野554、555和556,以从诸如图34A中描绘的物理世界环境532的物理世界场景中收集数据并记录该物理世界场景。
惯性测量单元557可以确定观看光学组件548的运动和取向。在一些实施例中,惯性测量单元557可以提供指示重力方向的输出。在一些实施例中,每个部件可操作地耦合到至少一个其它部件。例如,深度传感器551可操作地耦合到眼睛跟踪相机550,以相对于用户眼睛549正在注视的实际距离来确认所测量的适应。
应当理解,观看光学组件548可以包括图34B中所示的一些部件,并且可以包括代替所示部件或除了所示部件之外的部件。例如,在一些实施例中,观看光学组件548可以包括两个世界相机552而不是四个。可替代地或另外地,相机552和553不需要捕获其全部视野的可见光图像。观看光学组件548可以包括其它类型的部件。在一些实施例中,观看光学组件548可以包括一个或多个动态视觉传感器(DVS),其像素可以异步地响应超过阈值的光强度的相对变化。
在一些实施例中,基于飞行时间信息,观看光学组件548可以不包括深度传感器551。例如,在一些实施例中,观看光学组件548可以包括一个或多个全光相机,其像素可以捕获光强度和入射光的角度,由此可以确定深度信息。例如,全光相机可以包括覆盖有透射衍射掩模(TDM)的图像传感器。可替代地或另外地,全光相机可以包括图像传感器,该图像传感器包含角度敏感像素和/或相位检测自动聚焦像素(PDAF)和/或微透镜阵列(MLA)。代替深度传感器551或除了深度传感器551之外,这种传感器可以用作深度信息源。
还应当理解,图5B中的部件的配置被提供为示例。观看光学组件548可以包括具有任何适当配置的部件,该适当配置可以设定为向用户提供对于一组特定部件实际可行的最大视野。例如,如果观看光学组件548具有一个世界相机552,则该世界相机可以放置在观看光学组件的中心区域而不是侧面。
来自观看光学组件548中的传感器的信息可以耦合到系统中的一个或多个处理器。处理器可以生成可以被渲染以便使用户感知与物理世界中的对象交互的虚拟内容的数据。可以以任何合适的方式来实现该渲染,包括生成描绘物理和虚拟对象二者的图像数据。在其它实施例中,可以通过调制用户在物理世界中浏览的显示设备的不透明度来在一个场景中描绘物理和虚拟内容。可以控制不透明度以便创建虚拟对象的外观,并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施例中,当通过用户界面观看时,图像数据可以仅包括虚拟内容,该虚拟内容可以被修改以使得虚拟内容被用户感知为与物理世界现实地交互(例如,剪辑内容以考虑遮挡)。
观看光学组件548上的显示内容以产生对象位于特定位置的印象的位置可以取决于观看光学组件的物理性质。此外,用户头部相对于物理世界的姿势以及用户眼睛注视的方向可以影响在物理世界中显示内容的位置将会出现在观察光学组件上的特定位置。如上所述的传感器可以收集该信息,和/或提供可以从中计算该信息的信息,使得接收传感器输入的处理器可以计算应该在观看光学组件548上渲染对象的位置从而为用户创建期望的外观。
无论如何向用户呈现内容,都可以使用物理世界的模型,使得可以正确计算可受到物理对象影响的虚拟对象的特性,包括虚拟对象的形状、位置、运动和可见性。在一些实施例中,模型可以包括物理世界的重建,例如重建518。
可以根据从用户的可穿戴设备上的传感器收集的数据来创建该模型。但是,在一些实施例中,可以从多个用户收集的数据中创建模型,该数据可以在远离所有用户的计算设备中汇总(并且该数据可以在“云中”)。
模型可以至少部分地由世界重建系统创建,诸如例如,图6A中更详细地描绘的图3的世界重建部件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还可以包括物理世界的各种格式的表示。例如,可以存储诸如体素的体积元数据662b以及网格662c和平面662d。在一些实施例中,可以保存其它信息,诸如深度图。
在一些实施例中,物理世界的表示(诸如图6A中所示的表示)与稀疏地图相比(诸如如上所述的基于特征点的跟踪地图)可以提供关于物理世界的相对密集的信息。
在一些实施例中,感知模块660可以包括以各种格式生成物理世界的表示的模块,这些格式包括例如网格660d、平面和语义660e。物理世界的表示可以跨本地存储介质和远程存储介质进行存储。取决于例如存储介质的位置,可以在不同的坐标框架中描述物理世界的表示。例如,可以在相对设备本地的坐标框架中描述存储在设备中的物理世界的表示。物理世界的表示可以具有存储在云端中的对应表示(counterpart)。可以由XR系统中的所有设备所共享的坐标框架中描述云端中的对应表示。
在一些实施例中,这些模块可以基于在生成表示时一个或多个传感器的感知范围内的数据以及在先前时间捕获的数据和持久世界模块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重建数据,这些块允许在保持近邻一致性的同时进行本地更新;将遮挡数据提供给生成此类场景的应用,其中遮挡数据是从一个或多个深度数据源的组合中导出的;和/或执行多阶段网格简化。重建可以包含不同复杂程度的数据,包括例如原始数据(例如实时深度数据),融合体积数据(例如体素)和计算数据(例如网格)。
在一些实施例中,可通行世界模型的部件可以是分布式的,其中一些部分在XR设备上本地执行,而一些部分在远程执行,例如在网络连接的服务器上,或者在云端。本地XR设备与云端之间的信息处理和存储的分配可以影响XR系统的功能和用户体验。例如,通过将处理分配给云端来减少本地设备上的处理可以延长电池寿命并减少本地设备上产生的热量。但是,将过多的处理分配给云端可能会产生不希望的延迟,这导致无法接受的用户体验。
图6B描绘了根据一些实施例的被配置用于空间计算的分布式部件架构600。分布式部件架构600可以包括可通行世界部件602(例如,图5A中的PW 538)、Lumin OS 604、API606、SDK 608和应用610。LuminOS 604可以包括基于Linux的内核,其具有与XR设备兼容的自定义驱动器。API 606可包括准许XR应用(例如,应用610)访问XR设备的空间计算特征的应用编程接口。SDK 608可包括允许创建XR应用的软件开发套件。
架构600中的一个或多个部件可以创建并保持可通行世界的模型。在此示例中,传感器数据是在本地设备上收集的。该传感器数据的处理可以部分地在XR设备上本地执行,部分地在云端执行。PW 538可以包括至少部分基于由多个用户佩戴的AR设备所捕获的数据而创建的环境地图。在AR体验的会话期间,各个AR设备(诸如以上结合图4描述的可穿戴设备)可以创建跟踪地图,该跟踪地图是地图的一种类型。
在一些实施例中,设备可以包括构建稀疏地图和密集地图的部件。跟踪地图可以用作稀疏地图,并且可以包括扫描环境的AR设备的头部姿势以及在每个头部姿势处在该环境内检测到的对象有关的信息。可以为每个设备在本地保持那些头部姿势。例如,每个设备上的头部姿势可以是相对于设备开启其会话时的初始头部姿势。结果,每个跟踪地图对创建它的设备可以是本地的,并且可能具有由其自己的本地坐标系定义的自己的参考框架。然而,在一些实施例中,每个设备上的跟踪地图可以形成为使得其本地坐标系的一个坐标与由其传感器(例如惯性测量单元557)测量的重力方向对齐。
密集地图可以包括表面信息,该表面信息可以由网格或深度信息表示。替代地或附加地,密集地图可以包括从表面或深度信息中导出的更高级别的信息,例如平面和/或其他对象的位置和/或特征。
在一些实施例中,密集地图的创建可以独立于稀疏地图的创建。例如,可以在AR系统内的单独的处理管线中执行密集地图和稀疏地图的创建。例如,分开的处理可以使得能够以不同的速率来执行不同类型的地图的生成或处理。例如,稀疏地图的刷新速度可能比密集地图的刷新速度快。然而,在一些实施例中,即使在不同的管线中执行,密集地图和稀疏地图的处理也可能是相关的。例如,在稀疏地图中显露的物理世界的变化可以触发密集地图的更新,反之亦然。此外,即使是独立创建的,这些地图也可以一起使用。例如,从稀疏地图导出的坐标系可以用于定义密集地图中的对象的位置和/或取向。
稀疏地图和/或密集地图可以被持久保存以由同一设备重用和/或与其他设备共享。这样的持久性可以通过将信息存储在云端来实现。AR设备可以将跟踪地图发送到云端,从而例如与从先前存储在云端的持久地图中选择的环境地图合并。在一些实施例中,可以将所选的持久地图从云端发送到AR设备以进行合并。在一些实施例中,持久地图可以相对于一个或多个持久坐标系取向。这样的地图可以用作规范地图,因为它们可以被多个设备中的任何一个使用。在一些实施例中,可通行世界的模型可以包括或由一个或多个规范地图或根据其来创建。即使基于设备本地的坐标框架执行一些操作,设备也可以通过确定设备本地的坐标框架与规范地图之间的变换来使用规范地图。
规范地图可以起源于跟踪地图(TM)(例如,图31A中的TM 1102),其可以被提升为规范地图。可以持久保存规范地图,以便访问规范地图的设备一旦确定其本地坐标系与规范地图的坐标系之间的变换,就可以使用规范地图中的信息来确定规范地图中表示的对象在设备周围的物理世界中的位置。在一些实施例中,TM可以是由XR设备创建的头部姿势稀疏地图。在一些实施例中,当XR设备将一个或多个TM发送到云服务器以与由XR设备在不同时间或由其他XR设备捕获的附加TM合并时,可以创建规范地图。
在其中在本地设备上形成跟踪地图且本地坐标系的一个坐标与重力对齐的实施例中,可以在创建规范地图时保留相对于重力的该取向。例如,当提交用于合并的跟踪地图不与任何先前的存储地图重叠时,可以将该跟踪地图提升为规范地图。其他跟踪地图也可能具有相对于重力的取向,随后可以与该规范地图合并。可以进行合并以确保得到的规范地图保持其相对于重力的取向。例如,如果每个地图的与重力对齐的坐标没有以足够紧密的容差相互对齐,则可能不会合并两个地图,无论这些地图中的特征点的对应关系如何。
规范地图或其他地图可以提供由被处理以创建相应地图的数据所表示的物理世界的各个部分有关的信息。图7描绘了根据一些实施例的示例性跟踪地图700。跟踪地图700可以提供由点702表示的对应物理世界中的物理对象的平面图706。在一些实施例中,地图点702可以表示可以包括多个特征的物理对象的特征。例如,桌子的每个角可以是由地图上的点所表示的特征。这些特征可以通过处理图像导出,例如图像可以用增强现实系统中的可穿戴设备的传感器来获取。例如,可以通过以下方式来导出特征:通过处理传感器输出的图像帧,以基于图像中的大梯度或其他适当的标准来识别特征。进一步的处理可能会限制每个帧中的特征数量。例如,处理可以选择可能表示持久对象的特征。一种或多种试探法可以应用于该选择。
跟踪地图700可以包括关于由设备收集的点702的数据。对于具有跟踪地图中所包括的数据点的每个图像帧,可以存储姿势。姿势可以表示从其捕获图像帧的取向,使得每个图像帧内的特征点可以在空间上相关。该姿势可以通过定位信息来确定,定位信息诸如可通过可穿戴设备上的传感器(诸如IMU传感器)导出。替代地或附加地,可以通过将图像帧匹配到描绘物理世界的重叠部分的其他图像帧来确定姿势。通过寻找这种位置相关性,这可以通过匹配两个帧中的特征点的子集来实现,可以计算两个帧之间的相对姿势。相对姿势对于跟踪地图可能就足够了,因为该地图可以相对于基于在开始构建跟踪地图时设备的初始姿势而建立的该设备本地的坐标系。
并非设备收集的所有特征点和图像帧都可以保留为跟踪地图的一部分,因为用传感器收集的许多信息很可能是多余的。相反,仅某些帧可以添加到地图。可以基于一个或多个标准来选择那些帧,例如与地图中已经存在的图像帧的重叠程度,它们包含的新特征的数量、或该帧中特征的质量度量。未添加到跟踪地图的图像帧可以被丢弃或可用于修改特征的位置。作为另一替代方案,可以保留表示为一组特征的所有或大多数图像帧,但是可以将这些帧的子集指定为关键帧,以用于进一步处理。
关键帧可以被处理以产生关键装配(keyrig)704。关键帧可以被处理以产生特征点的三维集合并被保存为关键装配704。例如,这种处理可能需要比较从两个相机同时得到的图像帧来立体确定特征点的3D位置。元数据可以与这些关键帧和/或关键装配(例如,姿势)相关联。
环境地图可以取决于例如环境地图的存储位置而具有多种格式中的任何一种,该环境地图包括例如AR设备的本地存储和远程存储。例如,在内存有限的可穿戴设备上,远程存储中的地图可比本地存储中的地图具有更高的分辨率。为了将更高分辨率的地图从远程存储发送到本地存储,可以对地图进行下采样或以其它方式转换为适当的格式,例如通过减少存储在地图中的物理世界的每个区域的姿势数量和/或为每个姿势存储的特征点的数量。在一些实施例中,来自远程存储的高分辨率地图的切片或部分可以被发送到本地存储,其中切片或部分未被下采样。
当创建新的跟踪地图时,可以更新环境地图数据库。为了确定数据库中可能非常大量的环境地图中的哪一个环境地图将被更新,更新可以包括有效地选择数据库中存储的与新的跟踪地图有关的一个或多个环境地图。可以通过相关性对所选的一个或多个环境地图进行排名,并且可以选择最高排名的地图中的一个或多个地图以进行处理,以将较高排名的所选环境地图与新的跟踪地图合并以创建一个或多个更新的环境地图。当新的跟踪地图表示没有预先存在的环境地图要更新的物理世界的一部分时,该跟踪地图可以作为新的环境地图存储在数据库中。
观看独立显示
在此描述了用于使用与观看虚拟内容的眼睛的位置无关的XR系统提供虚拟内容的方法和装置。传统上,虚拟内容在显示系统的任何运动时被重新渲染。例如,如果佩戴显示系统的用户观看了显示器上的三维(3D)对象的虚拟表示并围绕3D对象出现的区域走动,则应为每个视点重新渲染3D对象,使得用户具有他或她正围绕占据真实空间的对象走动的感受。然而,重新渲染消耗了系统的大量计算资源,并且由于时延而导致伪像。
头部姿势(例如,佩戴XR系统的用户的位置和取向)可以用于渲染与用户的头部内的眼睛旋转无关的虚拟内容。在一些实施例中,可以基于跨一个或多个会话的真实空间中的多个坐标框架来生成场景的动态地图,使得与动态地图交互的虚拟内容可以被稳健地渲染,而与用户头部内的眼睛旋转无关和/或与例如在高速的计算密集型操作期间生成的热量所引起的传感器变形无关。在一些实施例中,多个坐标框架的配置可以使第一用户所佩戴的第一XR设备和第二用户所佩戴的第二XR设备能够识别场景中的公共位置。在一些实施例中,多个坐标框架的配置可以使佩戴XR设备的用户能够在场景的相同位置观看虚拟内容。
在一些实施例中,可以在世界坐标框架中构建跟踪地图,该世界坐标框架可以具有世界原点。当XR设备通电时,世界原点可以是XR设备的第一姿势。世界原点可以与重力对齐,使得XR应用的开发者可以在无需额外工作的情况下进行重力对齐。可以在不同的世界坐标框架中构建不同的跟踪地图,因为跟踪地图可以由在不同的会话中的相同的XR设备和/或由不同的用户佩戴的不同的XR设备捕获。在一些实施例中,XR设备的会话可以从设备通电开始到设备关闭。在一些实施例中,XR设备可以具有头部坐标框架,该头部坐标框架可以具有头部原点。头部原点可以是拍摄图像时XR设备的当前姿势。世界坐标框架的头部姿势与头部坐标框架的头部姿势之间的差异可用于估计跟踪路线。
在一些实施例中,XR设备可以具有相机坐标框架,该相机坐标框架可以具有相机原点。相机原点可以是XR设备的一个或多个传感器的当前姿势。发明人已经认识并且理解到,相机坐标框架的配置使得能够稳健地显示与用户的头部内的眼睛旋转无关的虚拟内容。该配置还使得能够稳健地显示虚拟内容,而与例如由于操作期间生成的热量导致的传感器变形无关。
在一些实施例中,XR设备可以具有头部单元,该头部单元具有用户可固定到其头部的头戴式框架,并且可以包括两个波导,在用户的每只眼睛前面一个。波导可以是透明的,使得来自真实世界的对象的环境光可以透射通过波导,并且用户可以看到真实世界的对象。每个波导可以将来自投影仪的投影光发送到用户的相应眼睛。投影光可以在眼睛的视网膜上形成图像。因此,眼睛的视网膜接收环境光和投影光。用户可以同时看到真实世界的对象以及由投影光创建的一个或多个虚拟对象。在一些实施例中,XR设备可以具有检测用户周围的真实世界对象的传感器。这些传感器例如可以是捕获可被处理以识别真实世界对象的位置的图像的相机。
在一些实施例中,与将虚拟内容附加到世界坐标框架中相反,XR系统可以将坐标框架分配给虚拟内容。这样的配置使得能够描述虚拟内容而不必考虑虚拟内容在何处渲染给用户,但是虚拟内容可以被附接到更持久的框架位置,诸如将在指定位置渲染的关于例如图14至图20C描述的持久坐标系(PCF)。当对象的位置改变时,XR设备可以检测环境地图中的改变并且确定用户佩戴的头部单元相对于真实世界对象的运动。
图8示出了根据一些实施例的在物理环境中正在体验由XR系统10渲染的虚拟内容的用户。XR系统可以包括由第一用户14.1佩戴的第一XR设备12.1、网络18和服务器20。用户14.1处于具有以桌子16形式的真实对象的物理环境中。
在所示示例中,第一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中,以说明头部单元22的佩戴者感知。可以在该描述中使用三维空间中的计算机数据的可视化来示出由一个或多个用户感知到有助于渲染的数据结构如何在腰包24中的数据结构内彼此相关。
图9示出根据一些实施例的第一XR设备12.1的部件。第一XR设备12.1可以包括头部单元22,以及形成视觉数据和算法的一部分的各种部件,包括例如渲染引擎30、各种坐标框架32、各种原点和目的地坐标框架34以及各种原点到目的地坐标框架变换器36。各种坐标系可以基于XR设备的本征性质,或者可以通过参考其他信息来确定,诸如此处描述的持久姿势或持久坐标系。
头部单元22可以包括头戴式框架40、显示系统42、真实对象检测相机44、运动跟踪相机46和惯性测量单元48。头戴式框架40可以具有可固定到图8中的第一用户14.1的头部的形状。显示系统42、真实对象检测相机44、运动跟踪相机46和惯性测量单元48可以安装到头戴式框架40,并且因此与头戴式框架40一起移动。
坐标系统32可以包括本地数据系统52、世界框架系统54、头部框架系统56和相机框架系统58。
本地数据系统52可以包括数据通道62、本地框架确定例程64和本地框架存储指令66。数据通道62可以是内部软件例程,诸如外部电缆或射频接收机的硬件部件,或者诸如打开的端口的混合部件。数据通道62可以被配置为接收表示虚拟内容的图像数据68。
本地框架确定例程64可以连接到数据通道62。本地框架确定例程64可以被配置为确定本地坐标框架70。在一些实施例中,本地框架确定例程可以基于真实世界对象或真实世界位置来确定本地坐标框架。在一些实施例中,本地坐标框架可以基于相对于浏览器窗口的底部边缘的顶部边缘、字符的头部或脚、包围虚拟内容的棱柱或边界框的外表面上的节点,或放置定义虚拟内容的面向方向和放置虚拟内容的位置(例如,节点,诸如放置节点或PCF节点)的坐标框架的任何其它合适位置等。
本地框架存储指令66可以连接到本地框架确定例程64。本领域技术人员将理解,软件模块和例程通过子例程、调用等彼此“连接”。本地框架存储指令66可以将本地坐标框架70存储为原点和目的地坐标框架34内的本地坐标框架72。在一些实施例中,原点和目的地坐标框架34可以是可被操纵或变换以使虚拟内容在会话之间持续存在的一个或多个坐标框架。在一些实施例中,会话可以是XR设备的启动和关闭之间的时间段。两个会话可以是单个XR设备的两个启动和关闭时间段,或者是两个不同的XR设备的启动和关闭时间段。
在一些实施例中,原点和目的地坐标框架34可以是为了使第一用户的XR设备和第二用户的XR设备识别公共位置所需的一个或多个变换中涉及的坐标框架。在一些实施例中,目的坐标框架可以是应用于目标坐标框架的一系列计算和变换的输出,以便第一和第二用户在相同位置中观看虚拟内容。
渲染引擎30可以连接到数据通道62。渲染引擎30可以从数据通道62接收图像数据68,使得渲染引擎30可以至少部分地基于图像数据68渲染虚拟内容。
显示系统42可以连接到渲染引擎30。显示系统42可以包括将图像数据68变换为可见光的部件。可见光可以形成两个图案,每只眼睛一个。可见光可以进入图8中的第一用户14.1的眼睛,并且可以在第一用户14.1的眼睛的视网膜上被检测到。
真实对象检测相机44可以包括可以从头戴式框架40的不同侧捕获图像的一个或多个相机。运动跟踪相机46可以包括可以在头戴式框架40的侧面上捕获图像的一个或多个相机。可以使用一组一个或多个相机代替表示真实对象检测相机44和运动跟踪相机46的两组一个或多个相机。在一些实施例中,相机44、46可以捕获图像。如上所述,这些相机可以收集用于构造跟踪地图的数据。
惯性测量单元48可以包括用于检测头部单元22的运动的多个设备。惯性测量单元48可以包括重力传感器、一个或多个加速度计以及一个或多个陀螺仪。惯性测量单元48的传感器组合地跟踪头部单元22在至少三个正交方向中以及围绕至少三个正交轴的运动。
在所示的示例中,世界框架系统54包括世界表面确定例程78、世界框架确定例程80和世界框架存储指令82。世界表面确定例程78连接到真实对象检测相机44。世界表面确定例程78接受基于由真实对象检测相机44捕获的图像的图像和/或关键帧,并且处理图像以识别图像中的表面。深度传感器(未示出)可以确定到表面的距离。因此,这些表面由包括他们的大小、形状和与真实对象检测相机的距离的三个维度的数据表示。
在一些实施例中,世界坐标框架84可以基于初始化头部姿势会话时的原点。在一些实施例中,世界坐标框架可以位于设备被启动的位置,或者如果在启动会话期间丢失头部姿势,则世界坐标框架可以位于新的地方。在一些实施例中,世界坐标框架可以是头部姿势会话开始时的原点。
在所示的示例中,世界框架确定例程80被连接到世界表面确定例程78,并基于由世界表面确定例程78确定的表面的位置来确定世界坐标框架84。世界框架存储指令82被连接到世界框架确定例程80,以从世界框架确定例程80接收世界坐标框架84。世界框架存储指令82将世界坐标框架84存储为原点与目的地坐标框架34内的世界坐标框架86。
头部框架系统56可以包括头部框架确定例程90和头部框架存储指令92。头部框架确定例程90可以连接到运动跟踪相机46和惯性测量单元48。头部框架确定例程90可以使用来自运动跟踪相机46和惯性测量单元48的数据来计算头部坐标框架94。例如,惯性测量单元48可以具有确定相对于头部单元22的重力方向的重力传感器。运动跟踪相机46可以连续地捕获由头部框架确定例程90用来细化头部坐标框架94的图像。当图8中的第一用户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可以包括图8中的第一用户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。
图10是各种原点和目的地坐标框架34的空间表示。在该图中表示了本地坐标框架72、世界坐标框架86、头部坐标框架96和相机坐标框架100。在一些实施例中,当在现实世界中放置虚拟内容以便用户可以观看该虚拟内容时,与XR内容28相关联的本地坐标框架可以具有相对于本地和/或世界坐标框架和/或PCF的位置和旋转(例如,可以提供节点和面向方向)。每个相机可以具有包含一只眼睛的所有瞳孔位置的其自己的相机坐标框架100。附图标记104A和106A分别表示由图9中的本地到世界坐标变换器104、世界到头部坐标变换器106和头部到相机坐标变换器108进行的变换。
持久坐标系(PCF)
本文描述了用于在共享空间内在用户实例之间提供空间持久性的方法和装置。如果没有空间持久性,则用户在会话中放置在物理世界中的虚拟内容在不同会话中的用户视图中可能不存在,或者可能会放错位置。如果没有空间持久性,则一个用户放置在物理世界中的虚拟内容在第二用户的视图中可能不存在或可能错位,即使第二用户打算与第一用户共享相同的物理空间体验。
可以通过持久坐标系(PCF)提供空间持久性。可以基于一个或多个点来定义PCF,这些点表示在物理世界中识别的特征(例如,拐角、边缘)。可以选择特征,使得它们从XR系统的一个用户实例到另一个用户实例看起来是相同的。
此外,当相对于仅基于跟踪地图的本地地图进行渲染时,使得计算的跟踪路径(例如,相机轨迹)偏离实际跟踪路径的跟踪期间的漂移会导致虚拟内容的位置出现错位。当XR设备随着时间收集场景的更多信息时,可以细化空间的跟踪地图以校正漂移。但是,如果在地图细化之前将虚拟内容放置在真实对象上并相对于从跟踪地图导出的设备的世界坐标框架进行保存,则虚拟内容可能会出现位移,就像真实对象在地图细化过程中已移动一样。可以根据地图细化来更新PCF,因为PCF是基于特征定义的,并且随着特征在地图细化期间移动而被更新。
PCF可以包括六个自由度相,对于地图坐标系的平移和旋转。PCF可以存储在本地存储介质和/或远程存储介质中。取决于例如存储位置,可以相对于地图坐标系计算PCF的平移和旋转。例如,设备本地使用的PCF可能相对于设备的世界坐标框架具有平移和旋转。云端的PCF可能具有相对于规范地图的规范坐标框架的平移和旋转。
PCF可以提供对物理世界的稀疏表示,提供的关于物理世界的信息少于所有可用信息,使得它们可以被有效地处理和转移。用于处理持久空间信息的技术可包括基于跨越一个或多个会话的真实空间中的一个或多个坐标系来创建动态地图,在稀疏地图上生成持久坐标系(PCF),其可通过例如应用编程接口(API)暴露给XR应用。
图11是示出根据一些实施例的持久坐标系(PCF)的创建以及XR内容到PCF的附加的框图。每个框可以表示存储在计算机存储器中的数字信息。在应用1180的情况下,数据可以表示计算机可执行指令。在虚拟内容1170的情况下,数字信息可以定义例如由应用1180指定的虚拟对象。在其他框的情况下,数字信息可以表征物理世界的某些方面。
在所示的实施例中,一个或多个PCF根据可穿戴设备上的传感器捕获的图像来创建。在图11的实施例中,传感器是视觉图像相机。这些相机可以是与用于形成跟踪地图的相机相同的相机。因此,由图11建议的一些处理可以作为更新跟踪地图的一部分而被执行。但是,图11示出了除了跟踪地图之外还生成了提供持久性的信息。
为了导出3D PCF,一起处理来自以能够进行立体图像分析的配置被安装到可穿戴设备的两个相机的两个图像1110。图11示出了图像1和图像2,图像1和图像2中的每个图像均来自相机之一。为了简单起见,示出了来自每个相机的单个图像。然而,每个相机可以输出图像帧的流,并且可以针对流中的多个图像帧执行图11的处理。
因此,图像1和图像2可以分别是图像帧序列中的一个帧。可以对序列中的连续图像帧重复图11所示的处理,直到包含特征点的图像帧提供合适的图像以根据该图像形成持久的空间信息。替代地或附加地,在用户移动使得用户不再足够靠近先前(previous)识别的PCF以可靠地使用该PCF来确定相对于物理世界的位置时,可以重复图11的处理。例如,XR系统可以为用户保持当前的PCF。当该距离超过阈值时,系统可以切换到更靠近用户的新的当前PCF,其可以根据图11的过程使用在用户当前位置获取的图像帧来生成。
即使当生成单个PCF时,也可以处理图像帧的流以识别描述物理世界中内容的图像帧,该内容可能是稳定的,并且可以由图像帧中描绘的物理世界区域附近的设备容易地识别出来。在图11的实施例中,该处理开始于图像中的特征1120的识别。例如,可以通过寻找图像中超过阈值或其他特征的梯度的位置来识别特征,该特征可以例如对应于对象的拐角。在所示的实施例中,特征是点,但是可以替代地或附加地使用其他可识别的特征,例如边缘。
在所示的实施例中,选择固定数量N的特征1120进行进一步处理。可以基于一个或多个标准,例如,梯度的大小或与其他特征点的接近度,来选择那些特征点。替代地或附加地,特征点可以例如基于暗示特征点是持久的特性来试探性地选择。例如,可以基于可能对应于窗户或门或大件家具的拐角的特征点的特性来定义试探法。这种试探法可能会考虑到特征点本身及其周围的事物。作为特定示例,每个图像的特征点的数量可以在100与500之间或150与250之间,例如200。
不管选择的特征点的数量如何,都可以为特征点计算描述符1130。在该示例中,为每个选择的特征点计算描述符,但是可以为特征点的组或特征点的子集或图像内的所有特征计算描述符。描述符表征特征点,以便在物理世界中表示相同对象的特征点被分配相似的描述符。描述符可以实现两个帧的对齐,例如在一个地图相对于另一个地图定位时可能会发生。代替搜索使两个图像的特征点之间的距离最小化的帧的相对取向,可以通过识别具有相似的描述符的特征点来进行两个帧的初始对齐。图像帧的对齐可以基于具有相似描述符的对齐点,与计算图像中所有特征点的对齐相比,这可能需要更少的处理。
描述符可以被计算为特征点到描述符的映射,或者在一些实施例中,计算为特征点周围的图像的块(patch)到描述符的映射。描述符可以是数值量。美国专利申请公开号US2019/0147341描述了用于特征点的计算描述符,并且通过引用将其全部并入本文。
在图11的示例中,为每个图像帧中的每个特征点计算描述符1130。基于描述符和/或特征点和/或图像本身,图像帧可以被识别为关键帧1140。在所示的实施例中,关键帧是满足某一标准的图像帧,然后选择该图像帧用于进一步处理。例如,在制作跟踪地图时,可以选择将有意义的信息添加到地图的图像帧作为整合到地图中的关键帧。另一方面,可以丢弃基本上与已经将图像帧整合到地图中的区域重叠的图像帧,使得它们不会成为关键帧。替代地或附加地,可以基于图像帧中的特征点的数量和/或类型来选择关键帧。在图11的实施例中,被选择以包括在跟踪地图中的关键帧1150也可以被视为用于确定PCF的关键帧,但是可以使用选择用于生成PCF的关键帧的不同或附加标准。
尽管图11示出了关键帧被用于进一步处理,但是从图像获取的信息可以以其他形式被处理。例如,可以替代地或附加地处理诸如在关键装配中的特征点。而且,尽管关键帧被描述为是从单个图像帧导出的,但是关键帧与所获取的图像帧之间不必存在一对一的关系。例如,关键帧例如可以获取自多个图像帧,诸如通过将图像帧拼接或者聚合在一起,使得在关键帧中仅保留出现在多个图像中的特征。
关键帧可以包括图像信息和/或与图像信息相关联的元数据。在一些实施例中,可以将由相机44、46(图9)捕获的图像计算为一个或多个关键帧(例如,关键帧1、2)。在一些实施例中,关键帧可以包括相机姿势。在一些实施例中,关键帧可以包括以相机姿势捕获的一个或多个相机图像。在一些实施例中,XR系统可以确定以相机姿势捕获的相机图像的一部分是无用的,并且因此不将该部分包括在关键帧中。因此,使用关键帧将新图像与场景的早期认知对齐可以减少XR系统计算资源的使用。在一些实施例中,关键帧可以在具有方向/角度的位置处包括图像和/或图像数据。在一些实施例中,关键帧可以包括可以观察到一个或多个地图点的位置和方向。在一些实施例中,关键帧可以包括具有ID的坐标帧。美国专利申请公开号US 2018/0213359描述了关键帧,并通过引用将其全部内容并入本文。
可以选择一些或全部关键帧1140进行进一步处理,例如为关键帧生成持久姿势1150。该选择可以基于图像帧中所有特征点或其子集的特性。这些特性可以根据对描述符、特征和/或图像帧本身进行处理来确定。作为特定示例,选择可以基于被识别为可能与持久对象有关的特征点的聚类。
每个关键帧与获取该关键帧的相机的姿势相关联。对于选择用于处理成持久姿势的关键帧,该姿势信息可以与关于关键帧的其他元数据一起保存,例如在获取时和/或在获取位置处的WiFi指纹和/或GPS坐标。
持久姿势是设备可以用来相对于先前获取的有关物理世界的信息进行自身定向的信息源。例如,如果从中创建了持久姿势的关键帧被合并到物理世界的地图中,则设备可以使用与持久姿势相关联的关键帧中足够数量的特征点,将自身相对于该持久姿势进行定向。设备可以将其对周围环境拍摄的当前图像与持久姿势对齐。该对齐可以基于将当前图像与引起持久姿势的图像1110、特征1120和/或描述符1130、或该图像或那些特征或描述符的任何子集进行匹配。在一些实施例中,与持久姿势匹配的当前图像帧可以是已合并到设备的跟踪地图中的另一个关键帧。
关于持久姿势的信息可以以促进在多个应用之间共享的格式存储,该多个应用可以在相同或不同的设备上执行。在图11的示例中,一些或所有的持久姿势可以被反映为持久坐标系(PCF)1160。像持久姿势一样,PCF可以与地图相关联并且可以包括设备可以用来确定其相对于该PCF的取向的一组特征或其他信息。PCF可以包括定义相对于其地图的原点的变换的变换,使得通过将其位置与PCF相关联,设备可以确定其相对于地图中所反映的物理世界中的任何对象的位置。
由于PCF提供了一种用于确定相对于物理对象的位置的机制,因此应用(例如应用1180)可以定义虚拟对象相对于一个或多个PCF的位置,这些位置用作虚拟内容1170的锚点。例如,图11示出了App 1已经将其虚拟内容2与PCF 1.2相关联。同样,应用2已将其虚拟内容3与PCF 1.2相关联。还示出了App 1将其虚拟内容1与PCF 4.5相关联,并且示出了App2将其虚拟内容4与PCF 3相关联。在一些实施例中,PCF 3可以基于图像3(未示出),并且PCF4.5可以基于图像4和图像5(未显示),类似于PCF 1.2如何基于图像1和图像2。当渲染此虚拟内容时,设备可以应用一个或多个变换来计算信息,例如虚拟内容相对于设备的显示的位置和/或物理对象相对于虚拟内容的所需位置的位置。使用PCF作为参考可以简化此类计算。
在一些实施例中,持久姿势可以是具有一个或多个相关联的关键帧的坐标位置和/或方向。在一些实施例中,可以在用户已经行进一定距离(例如三米)之后自动创建持久姿势。在一些实施例中,持久姿势可以在定位期间用作参考点。在一些实施例中,可以将持久姿势存储在可通行世界中(例如,可通行世界模块538)。
在一些实施例中,可以基于相邻PCF之间允许的预定距离来确定新的PCF。在一些实施例中,当用户行进预定距离(例如,五米)时,可以将一个或多个持久姿势计算到PCF中。在一些实施例中,PCF可以与例如可通行世界中的一个或多个世界坐标框架和/或规范坐标框架相关联。在一些实施例中,取决于例如安全设置,PCF可以被存储在本地数据库和/或远程数据库中。
图12示出了根据一些实施例的建立和使用持久坐标系的方法4700。方法4700可以开始于使用XR设备的一个或多个传感器捕获(动作4702)关于场景的图像(例如,图11中的图像1和图像2)。可以使用多个相机,并且一个相机可以生成多个图像,例如以流的形式。
方法4700可以包括从捕获的图像提取(4704)关注点(例如,图7中的地图点702,图11中的特征1120),生成(动作4706)所提取的关注点的描述符(例如,图11中的描述符1130),并基于描述符生成(动作4708)关键帧(例如,关键帧1140)。在一些实施例中,该方法可以比较关键帧中的关注点,并形成共享预定量的关注点的关键帧对。该方法可以使用各个关键帧对来重建物理世界的一部分。可以将物理世界的映射部分保存为3D特征(例如,图7中的关键装配704)。在一些实施例中,关键帧对中的被选择部分可以用于构建3D特征。在一些实施例中,可以选择性地保存映射的结果。未用于构建3D特征的关键帧可以通过姿势与3D特征关联,例如,利用关键帧的姿势之间的协方差矩阵表示关键帧之间的距离。在一些实施例中,可以选择关键帧对来构建3D特征,使得构建的3D特征的每两个之间的距离在预定距离内,这可以被确定以平衡所需的计算量和结果模型的准确度水平。这样的方法能够为XR系统提供具有适合于进行高效且准确计算的数据量的物理世界的模型。在一些实施例中,两个图像的协方差矩阵可以包括两个图像的姿势(例如,六个自由度)之间的协方差。
方法4700可以包括基于关键帧生成(动作4710)持久姿势。在一些实施例中,该方法可以包括基于从关键帧对中重建的3D特征来生成持久姿势。在一些实施例中,持久姿势可以被附接到3D特征。在一些实施例中,持久姿势可以包括用于构建3D特征的关键帧的姿势。在一些实施例中,持久姿势可以包括用于构建3D特征的关键帧的平均姿势。在一些实施例中,可以生成持久姿势,使得相邻的持久姿势之间的距离在预定值内,例如在一米至五米的范围内,介于两者之间的任何值或任何其他适当的值。在一些实施例中,相邻的持久姿势之间的距离可以由相邻的持久姿势的协方差矩阵表示。
方法4700可以包括基于持久姿势来生成(动作4712)PCF。在一些实施例中,可以将PCF附接到3D特征。在一些实施例中,PCF可以与一个或多个持久姿势相关联。在一些实施例中,PCF可以包括相关联的持久姿势之一的姿势。在一些实施例中,PCF可以包括相关联的持久姿势的姿势的平均姿势。在一些实施例中,可以生成PCF,以使得相邻PCF之间的距离在预定值内,例如在三米到十米的范围内,介于两者的任何值或任何其他适当的值。在一些实施例中,相邻PCF之间的距离可以由相邻PCF的协方差矩阵表示。在一些实施例中,PCF可以经由例如应用编程接口(API)暴露给XR应用,使得XR应用可以通过PCF访问物理世界的模型而无需访问模型本身。
方法4700可以包括将要由XR设备显示的虚拟对象的图像数据与PCF中的至少一个相关联(动作4714)。在一些实施例中,该方法可以包括计算虚拟对象相对于相关联的PCF的平移和取向。应当理解,没有必要将虚拟对象与由放置虚拟对象的设备生成的PCF相关联。例如,设备可以获取云端的规范地图中的被保存的PCF,并将虚拟对象与获取到的PCF相关联。应当理解,在随时间而调整PCF时,虚拟对象可以与相关联的PCF一起移动。
图13示出了根据一些实施例的第一XR设备12.1以及第二XR设备12.2和服务器20的视觉数据和算法。图13中所示的部件可以操作以执行与如本文中所描述的生成、更新和/或使用空间信息(诸如,持久姿势、持久坐标系、跟踪地图或规范地图)相关联的一些或全部操作。尽管未示出,但是第一XR设备12.1可以被配置为与第二XR设备12.2相同。服务器20可以具有地图存储例程118、规范地图120、地图发送器122和地图合并算法124。
可以与第一XR设备12.1处于相同场景中的第二XR设备12.2可以包括持久坐标框架(PCF)集成单元1300、生成可以用于渲染虚拟对象的图像数据68的应用1302、以及框架嵌入生成器308(参见图18)。在一些实施例中,可以将地图下载系统126、PCF识别系统128、地图2、定位模块130、规范地图合并器132、规范地图133和地图发布者136集合为可通行世界单元1304。PCF集成单元1300可以连接到可通行世界单元1304和第二XR设备12.2的其它部件,以允许PCF的取得、生成、使用、上传和下载。
包括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和/或PCF1330一起发送到第二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。在一些实施例中,可以将图像/帧指定为与先前的关键帧相距阈值距离(例如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和持久姿势。
在所示的示例中,第一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成为升级的地图。
图14图示了根据一些实施例的为场景的地图生成关键帧的示例。在所示示例中,针对房间左墙壁上的门生成了第一关键帧KF1。针对房间的地板、左墙壁和右墙壁相交的角落区域生成第二关键帧KF2。针对房间右墙壁上的窗户区域生成第三关键帧KF3。在墙壁的地板上,在地毯的远端区域生成第四关键帧KF4。针对地毯的最接近用户的区域生成第五关键帧KF5。
图15示出了根据一些实施例的为图14的地图生成持久姿势的示例。在一些实施例中,当设备测量行进的阈值距离时,和/或当应用请求新的持久姿势(PP)时,创建新的持久姿势。在一些实施例中,阈值距离可以是3米、5米、20米或任何其它合适的距离。选择较小的阈值距离(例如1m)可导致计算负荷的增加,因为与较大的阈值距离相比,可以创建和管理较大数量的PP。选择较大的阈值距离(例如40m)可导致增加的虚拟内容放置错误,因为将创建较少数量的PP,这将导致创建的较少PCF数量,意味着附加到PCF的虚拟内容可能是远离PCF相对较大的距离(例如30m),并且误差随着从PCF到虚拟内容的增加距离而增加。
在一些实施例中,可以在新会话开始时创建PP。该初始PP可以被认为是零,并且可以可视化为具有等于阈值距离的半径的圆的中心。当设备到达圆的周长,并且在一些实施例中,应用请求新的PP时,可以将新的PP放置在设备的当前位置(在阈值距离处)。在一些实施例中,如果设备能够在距设备新位置的阈值距离内找到现有的PP,则不会在阈值距离处创建新的PP。在一些实施例中,当创建新的PP时(例如,图11中的PP 1150),设备将一个或多个最接近的关键帧附加到PP。在一些实施例中,PP相对于关键帧的位置可以基于在创建PP时设备的位置。在一些实施例中,当设备行进阈值距离时将不会创建PP,除非应用请求PP。
在一些实施例中,当应用具有要显示给用户的虚拟内容时,应用可以从设备请求PCF。来自应用的PCF请求可触发PP请求,并且在设备行进阈值距离后将创建新的PP。图15示出第一永久姿势PP1,其可以具有通过例如计算关键帧与持久姿势之间的相对姿势附加的最接近的关键帧(例如,KF1、KF2和KF3)。图15还示出第二永久姿势PP2,其可以具有附加的最接近的关键帧(例如,KF4和KF5)。
图16示出了根据一些实施例的为图14的地图生成PCF的示例。在所示示例中,PCF1可以包括PP1和PP2。如上所述,PCF可用于显示与PCF相关的图像数据。在一些实施例中,每个PCF可以具有另一个坐标框架(例如,世界坐标框架)中的坐标和PCF描述符,例如,唯一地识别PCF。在一些实施例中,可以基于与PCF相关联的帧中的特征的特征描述符来计算PCF描述符。在一些实施例中,可以组合PCF的各种星座以需要较少数据和较少数据传输的持久方式来表示现实世界。
图17A至17C是示出建立和使用持久坐标系的示例的示意图。图17A示出具有尚未定位到规范地图的相应的本地跟踪地图4804A、4804B的两个用户4802A、4802B。各个用户的原点4806A、4806B由其相应区域中的坐标系(例如,世界坐标系)来描绘。每个跟踪地图的这些原点对于每个用户来说可能是本地的,因为这些原点取决于启动跟踪时他们各自设备的取向。
当用户设备的传感器扫描环境时,该设备可以捕获如以上结合图11所描述的可以包含表示持久对象的特征的图像,使得那些图像可以被分类为关键帧,可以根据这些关键帧创建持久姿势。在该示例中,跟踪地图4802A包括持久姿势(PP)4808A;跟踪4802B包括PP4808B。
同样如以上结合图11所述,一些PP可以被分类为PCF,这些PCF用于确定虚拟内容的取向以将其渲染给用户。图17B示出了相应的用户4802A、4802B所佩戴的XR设备可以基于PP 4808A、4808B来创建本地PCF 4810A、4810B。图17C示出了持久内容4812A、4812B(例如,虚拟内容)可以通过相应的XR设备附接到PCF 4810A,4810B。
在该示例中,虚拟内容可以具有虚拟内容坐标框架,该虚拟内容坐标框架可以由生成虚拟内容的应用使用,而不管应如何显示虚拟内容。例如,虚拟内容可以被指定为相对于虚拟内容坐标框架以特定位置和角度的表面,例如网格的三角形。为了将该虚拟内容渲染给用户,可以相对于要感知该虚拟内容的用户来确定那些表面的位置。
将虚拟内容附加到PCF可以简化确定虚拟内容相对于用户的位置时所涉及的计算。可以通过应用一系列变换来确定虚拟内容相对于用户的位置。这些变换中的一些可能会更改,并且可能会频繁更新。这些变换中的其他变换可能是稳定的,可能会频繁更新或根本不更新。无论如何,可以以相对较低的计算负担来应用变换,使得可以相对于用户频繁地更新虚拟内容的位置,从而为所渲染的虚拟内容提供逼真的外观。
在图17A至图17C的示例中,用户1的设备具有一个坐标系,该坐标系与通过变换rig1_T_w1定义地图原点的坐标系有关。用户2的设备具有类似的变换rig2_T_w2。这些变换可以表示为6个变换度,指定平移和旋转以将设备坐标系与地图坐标系对齐。在一些实施例中,变换可以表示为两个单独的变换,一个指定平移,另一个指定旋转。因此,应当理解,可以以简化计算或以其他方式提供优势的形式来表达变换。
跟踪地图的原点与由相应的用户设备识别出的PCF之间的变换表示为pcf1_T_w1和pcf2_T_w2。在此示例中,PCF和PP相同,因此相同的变换也表征了PP。
因此,可以通过这些变换的串行应用来计算用户设备相对于PCF的位置,例如rig1_T_pcf1=(rig1_T_w1)*(pcf1_T_w1)。
如图17C所示,通过obj1_T_pcf1的变换,虚拟内容相对于PCF进行定位。该变换可以由生成虚拟内容的应用来设置,该应用可以从世界重建系统接收描述相对于PCF的物理对象的信息。为了将虚拟内容渲染给用户,计算到用户设备的坐标系的变换,这可以通过变换obj1_t_w1=(obj1_T_pcf1)*(pcf1_T_w1)将虚拟内容坐标框架关联到跟踪地图的原点来计算。然后,该变换可以通过进一步的变换rig1_T_w1与用户的设备相关。
基于来自生成虚拟内容的应用的输出,虚拟内容的位置可以改变。当变化时,可以重新计算从源坐标系到目的地坐标系的端到端变换。另外,用户的位置和/或头部姿势可以随着用户移动而改变。结果,变换rig1_T_w1可以改变,取决于用户的位置或头部姿势的任何端到端变换也可以改变。
可以基于跟踪用户相对于物理世界中的静止对象的位置,随着用户的运动来更新变换rig1_T_w1。可以通过如上所述的处理图像序列的头部姿势跟踪部件或系统的其他部件来执行这种跟踪。可以通过确定用户相对于固定参考框架(例如PP)的姿势来进行这样的更新。
在一些实施例中,由于PP被用作PCF,因此可以相对于最近的持久姿势或在该示例中为PCF来确定用户设备的位置和取向。可以通过在利用设备上的传感器捕获的当前图像中识别表征PP的特征点来做出这样的确定。使用诸如立体图像分析的图像处理技术,可以确定设备相对于那些特征点的位置。根据该数据,系统可以基于关系rig1_T_pcf1=(rig1_T_w1)*(pcf1_T_w1)计算与用户运动相关联的变换的变化。
系统可以以计算高效的顺序确定并应用变换。例如,可以通过跟踪用户姿势并定义虚拟内容相对于基于持久姿势而构建的PP或PCF的位置,来避免从产生rig1_T_pcf1的测量中计算rig1_T_w1的需要。这样,从虚拟内容的源坐标系到用户设备的目的地坐标系的变换可以基于根据表达式(rig1_T_pcf1)*(obj1_t_pcf1)的测量到的变换,其中第一变换由系统来测量,后一变换由指定虚拟内容进行渲染的应用提供。在其中虚拟内容相对于地图的原点定位的实施例中,端到端变换可以基于地图坐标与PCF坐标之间的进一步变换将虚拟对象坐标系与PCF坐标系相关。在虚拟内容相对于与针对其跟踪用户位置的PP或PCF不同的PP或PCF进行定位的实施例中,可以在两者之间进行变换。这样的变换可以是固定的,并且可以例如从两者都出现的地图中确定。
例如,可以在具有处理传感器数据以构建跟踪地图的部件的设备中实现基于变换的方法。作为该过程的一部分,这些部件可以识别可用作持久姿势的特征点,而这些持久姿势又可以变成PCF。这些部件可以限制针对地图生成的持久姿势的数量,以在持久姿势之间提供适当的间隔,同时允许用户无论物理环境中的位置如何都足够接近持久姿势位置,以准确计算用户的姿势,如以上结合图14至图16所示。随着距用户最近的持久姿势的更新,由于用户移动,对跟踪地图或其他的细化使得用于计算取决于PP(或PCF,如果正在使用)的位置的虚拟内容相对于用户的位置的任何变换都可以进行更新并存储以供使用,至少直到用户离开该持久姿势为止。尽管如此,通过计算和存储变换,每次更新虚拟内容的位置时的计算负担可以相对较低,从而可以以相对较低的等待时间来执行它。
图17A至图17C示出了相对于跟踪地图进行定位,并且每个设备具有其自己的跟踪地图。但是,可以相对于任何地图坐标系生成变换。XR系统的用户会话之间的内容持久性可以通过使用持久地图来实现。通过使用可以将多个用户设备定向到的地图,也可以实现用户的共享体验。
在下面更详细描述的一些实施例中,可以相对于规范地图中的坐标来指定虚拟内容的位置,规范地图的格式被设置为使得多个设备中的任何一个可以使用该地图。每个设备可能保持跟踪地图,并且可以确定用户的姿势相对于跟踪地图的变化。在此示例中,可以通过“定位”过程来确定跟踪地图与规范地图之间的变换,该过程可以通过将跟踪地图中的结构(诸如一个或多个持久姿势)匹配到规范地图的一个或多个结构(例如一个或多个PCF)来执行。
下面更详细地描述了以这种方式创建和使用规范地图的技术。
深度关键帧
本文所述的技术依赖于图像帧的比较。例如,为了建立设备相对于跟踪地图的位置,可以使用用户佩戴的传感器捕获新图像,并且XR系统可以在用于创建跟踪地图的图像集中,搜索与新图像共享至少预定数量的关注点的图像。作为涉及图像帧比较的另一种场景的示例,可以通过首先寻找跟踪地图中的与持久姿势相关联的图像帧,该图像帧类似于规范地图中的与PCF相关联的图像帧,来将跟踪地图定位到规范地图。可替代地,可以通过首先寻找两个地图中相似的图像帧来计算两个规范地图之间的变换。
深度关键帧提供了减少识别相似图像帧所需的处理量的方法。例如,在一些实施例中,比较可以是在新的2D图像中的图像特征(例如,“2D特征”)和地图中的3D特征之间。这种比较可以以任何适当的方式进行,诸如通过将3D图像投影到2D平面中。诸如词袋(Bag ofWords,BoW)之类的常规方法在包括地图中所有2D特征的数据库中搜索新图像的2D特征,这可能需要大量的计算资源,尤其是当地图表示大区域时。然后,常规方法定位与新图像共享至少一个2D特征的图像,这些图像可以包括对于在地图中定位有意义的3D特征没有用的图像。然后,常规方法定位相对于新图像中的2D特征没有意义的3D特征。
使用更少的存储器资源(例如,BoW使用的存储器资源的四分之一)、以更高的效率(例如,每个关键帧的处理时间为2.5ms,针对500个关键帧进行比较为100μs)、并且更高的准确性(例如,对于1024维模型,检索召回率比BoW好20%,对于256维模型,检索召回率比BoW好5%),在此描述的技术可以检索地图中的图像。
为了减少计算,可以针对图像帧计算描述符,该描述符可以用于将图像帧与其他图像帧进行比较。可以代替图像帧和特征点存储描述符,或者除图像帧和特征点之外还存储描述符。在其中可以根据图像帧生成持久姿势和/或PCF的地图中,可以将生成每个持久姿势或PCF所根据的一个或多个图像帧的描述符存储为持久姿势和/或PCF的一部分。
在一些实施例中,可以根据图像帧中的特征点来计算描述符。在一些实施例中,神经网络被配置为计算表示图像的唯一帧描述符。该图像可以具有高于1兆字节的分辨率,从而在图像中捕获用户所佩戴的设备的视场内的3D环境的足够的细节。帧描述符可以短得多,诸如数字字符串,例如,在128字节到512字节的范围内或者介于两者之间的任何数量的数字字符串。
在一些实施例中,神经网络被训练为计算出的帧描述符指示图像之间的相似性。可以通过在包括用于生成地图的图像的数据库中,识别可以具有在距新图像的帧描述符预定距离之内的帧描述符的最近图像,来定位地图中的图像。在一些实施例中,图像之间的距离可以由两个图像的帧描述符之间的差异表示。
图18是示出根据一些实施例的用于为单独图像生成描述符的系统的框图。在所示的示例中,示出了帧嵌入生成器308。在一些实施例中,帧嵌入生成器308可以在服务器20内使用,但是可以替代地或另外地在XR设备12.1和12.2之一或任何其他处理图像以与其他图像进行比较的设备中全部或部分地执行。
在一些实施例中,帧嵌入生成器可以被配置为生成从初始大小(例如,76,800字节)到最终大小(例如,256字节)的图像的缩减数据表示,该缩减数据表示尽管缩小了大小但是仍然指示图像中的内容。在一些实施例中,帧嵌入生成器可以用于生成图像的数据表示,该图像可以是关键帧或以其他方式使用的帧。在一些实施例中,帧嵌入生成器308可以被配置为将位于特定位置和取向的图像转换为唯一的数字字符串(例如,256字节)。在所示的示例中,XR设备拍摄的图像320可以由特征提取器324处理,以检测图像320中的关注点322。关注点可以从或可以不从如上针对特征1120所述识别出的特征点导出(图11)或如本文中另外描述的。在一些实施例中,关注点可以由如以上针对描述符1130(图11)所描述的描述符来表示,这些关注点可以使用深度稀疏特征方法来生成。在一些实施例中,每个关注点322可以由数字字符串(例如,32个字节)表示。例如,可以有n个特征(例如100个),并且每个特征由32个字节的字符串来表示。
在一些实施例中,帧嵌入生成器308可以包括神经网络326。神经网络326可以包括多层感知器单元312和最大(max)池化单元314。在一些实施例中,多层感知器(MLP)单元312可以包括多层感知器,可以对该多层感知器进行训练。在一些实施例中,可以通过多层感知器312来减少关注点322(例如,用于关注点的描述符),并且可以将其输出为描述符的加权组合310。例如,MLP可以将n个特征减少为少于n个特征的m个特征。
在一些实施例中,MLP单元312可以被配置为执行矩阵乘法。多层感知器单元312接收图像320的多个关注点322,并将每个关注点转换为相应的数字字符串(例如,256)。例如,可能有100个特征,并且每个特征可以由256个数字的字符串来表示。在此示例中,可以创建具有100个水平行和256个垂直列的矩阵。每行可具有一系列256个数字的系列,这一系列的256个数字在大小上有所不同,其中一些较小,而另一些较大。在一些实施例中,MLP的输出可以是n×256矩阵,其中n表示从图像提取的关注点的数量。在一些实施例中,MLP的输出可以是m×256矩阵,其中m是从n缩减的关注点的数量。
在一些实施例中,MLP 312可以具有训练阶段和使用阶段,在该训练阶段期间确定用于MLP的模型参数。在一些实施例中,可以如图22中所示训练MLP。输入训练数据可以包括三个一组的数据,三个一组包括1)查询图像、2)正样本、和3)负样本。查询图像可以被认为是参考图像。
在一些实施例中,正样本可以包括与查询图像相似的图像。例如,在一些实施例中,相似可以是在查询图像和正样本图像中具有相同的对象,但是从不同的角度观看。在一些实施例中,相似可以是在查询图像和正样本图像中具有相同的对象,但是该对象相对于另一图像移位(例如,向左、向右、向上、向下)。
在一些实施例中,负样本可以包括与查询图像不相似的图像。例如,在一些实施例中,不相似图像可以不包含在查询图像中突出的任何对象,或者可以仅包含查询图像中的突出对象的一小部分(例如,<10%,1%)。与之相比,例如,相似图像可以具有查询图像中的对象的大部分(例如,>50%或>75%)。
在一些实施例中,可以从输入训练数据中的图像中提取关注点,并且可以将关注点转换成特征描述符。可以针对如图22所示的训练图像和针对图18的帧嵌入生成器308的操作中提取出的特征两者来计算这些描述符。在一些实施例中,如美国专利申请16/190,948中所述,可以使用深度稀疏特征(DSF)处理来生成描述符(例如,DSF描述符)。在一些实施例中,DSF描述符是n×32维。然后可以通过模型/MLP传递描述符,以创建256字节的输出。在一些实施例中,模型/MLP可以具有与MLP 312相同的结构,使得一旦通过训练设置了模型参数,就可以将所得的训练后的MLP用作MLP 312。
在一些实施例中,然后可以将特征描述符(例如,从MLP模型输出的256字节)发送到三元组边界损失模块(该三元组边界损失模块可以仅在训练阶段期间使用,而不在MLP神经网络的使用阶段期间使用)。在一些实施例中,三元组边界损失模块可以被配置为选择模型的参数,以减小来自查询图像的256字节输出与来自正样本的256字节输出之间的差异,并增大来自查询图像的256字节输出和来自负样本的256字节输出。在一些实施例中,训练阶段可以包括将多个三元组输入图像馈送到学习过程中以确定模型参数。该训练过程可以继续,例如,直到使正图像的差异最小化并且使负图像的差异最大化,或者直到达到其他适当的退出标准为止。
再次参考图18,帧嵌入生成器308可以包括池化层,在这里被示为最大(max)池化单元314。最大池化单元314可以分析每一列以确定相应列中的最大数。最大池化单元314可以将MLP 312的输出矩阵的每列数字的最大值组合成例如256个数字的全局特征串316。应当理解,在XR系统中处理的图像可能期望具有高分辨率的帧,潜在地具有数百万个像素。全局特征串316是相对较小的数字,其占用相对较少的存储器,并且与图像(例如,具有高于1兆字节的分辨率)相比易于搜索。因此可以搜索图像而无需分析来自相机中的每个原始帧,并且存储256字节而不是完整帧也更便宜。
图19是示出根据一些实施例的计算图像描述符的方法2200的流程图。方法2200可以从接收(动作2202)由用户佩戴的XR设备捕获的多个图像开始。在一些实施例中,方法2200可以包括从多个图像确定(动作2204)一个或多个关键帧。在一些实施例中,动作2204可以被跳过和/或可以代替地在步骤2210之后发生。
方法2200可以包括:利用人工神经网络在多个图像中识别(动作2206)一个或多个关注点;以及利用人工神经网络计算(动作2208)各个关注点的特征描述符。该方法可以包括针对每个图像计算(动作2210)帧描述符,从而至少部分基于利用人工神经网络针对图像中所识别的关注点而计算出的特征描述符来表示该图像。
图20是示出根据一些实施例的使用图像描述符进行定位的方法2300的流程图。在该示例中,可以将描述XR设备的当前位置的新图像帧与结合地图中的点(例如,如上所述的持久姿势或PCF)进行存储的图像帧进行比较。方法2300可以从接收(动作2302)由用户佩戴的XR设备捕获的新图像开始。方法2300可以包括在数据库中识别(动作2304)一个或多个最近的关键帧,该数据库包括用于生成一个或多个地图的关键帧。在一些实施例中,可以基于粗略的空间信息和/或先前确定的空间信息来识别最近的关键帧。例如,粗略的空间信息可以指示XR设备位于由地图的50m×50m区域表示的地理区域中。可以仅对该区域内的点执行图像匹配。作为另一示例,基于跟踪,XR系统可以知道XR设备先前在地图中接近第一持久姿势并且当时正在朝地图中第二持久姿势的方向移动。该第二持久姿势可以被认为是最近的持久姿势,并且与其一起存储的关键帧可以被认为是最近的关键帧。替代地或附加地,例如GPS数据或WiFi指纹的其他元数据可以用于选择最近的关键帧或最近的关键帧的集合。
不管如何选择最近的关键帧,都可以使用帧描述符来确定新图像是否与被选择为与附近的持久姿势相关联的任何帧相匹配。可以通过以下处理来进行该确定:将新图像的帧描述符与最近的关键帧的帧描述符或以任何其他适当方式选择的数据库中的关键帧的子集的帧描述符进行比较,并选择具有帧描述符在新图像的帧描述符的预定距离内的关键帧。在一些实施例中,可以通过获得可以表示两个帧描述符的两个数字字符串之间的差来计算两个帧描述符之间的距离。在将字符串作为多个字符串进行处理的实施例中,可以将差计算为向量差。
一旦识别出匹配的图像帧,就可以确定XR设备相对于该图像帧的取向。方法2300可以包括:对地图中与所识别的最近关键帧相对应的3D特征执行(动作2306)特征匹配,以及基于特征匹配结果来计算(动作2308)用户所佩戴的设备的姿势。以此方式,可以针对已经被确定为与新图像的可能匹配的少至一个图像,来执行两个图像中的特征点的计算密集匹配。
图21是示出根据一些实施例的训练神经网络的方法2400的流程图。方法2400可以从生成(动作2402)包括多个图像集的数据集开始。多个图像集的每一个可以包括查询图像、正样本图像和负样本图像。在一些实施例中,多个图像集可以包括合成记录对,该合成记录对被配置为例如教导神经网络基本信息(诸如形状)。在一些实施例中,多个图像集可以包括真实记录对,这些真实记录对可以根据物理世界记录。
在一些实施例中,可以通过在两个图像之间拟合基本矩阵来计算内点(inlier)。在一些实施例中,稀疏重叠可以被计算为两个图像中看到的关注点的交并比(intersection over union,IoU)。在一些实施例中,正样本可以包括与查询图像中的相同的至少二十个关注点作为内点。负样本可以包括少于十个内点。负样本可以具有少于一半的与查询图像的稀疏点重叠的稀疏点。
方法2400可以包括针对每个图像集通过比较查询图像与正样本图像和负样本图像来计算(动作2404)损失。方法2400可以包括基于计算出的损失来修改(动作2406)人工神经网络,使得由人工神经网络针对查询图像生成的帧描述符与针对正样本图像的帧描述符之间的距离小于针对查询图像的帧描述符与针对负样本图像的帧描述符之间的距离。
应该理解,尽管以上描述了被配置为生成各个图像的全局描述符的方法和装置,但是方法和装置可以被配置为生成各个地图的描述符。例如,地图可以包括多个关键帧,每个关键帧可以具有如上所述的帧描述符。最大池化单元可以分析地图的关键帧的帧描述符,并将帧描述符组合为该地图的唯一地图描述符。
此外,应了解,可将其他架构用于如上所述的处理。例如,描述了用于生成DSF描述符和帧描述符的分离的神经网络。这种方法在计算上是高效的。然而,在一些实施例中,可以在不首先生成DSF描述符的情况下,根据所选择的特征点生成帧描述符。
对地图进行排名和合并
本文描述了用于在X现实(XR)系统中对多个环境地图进行排名和合并的方法和装置。地图合并可以使表示物理世界的重叠部分的地图能够被组合以表示更大的区域。对地图进行排名可以使得能够高效执行本文所述的技术,包括地图合并,其涉及基于相似性从一组地图中选择地图。在一些实施例中,例如,系统可以保持一组规范地图,该地图以许多XR设备中的任何XR设备可以对其进行访问的方式被格式化。这些规范地图可以通过将来自那些设备的所选择的跟踪地图与其他跟踪地图或先前存储的规范地图进行合并而形成。例如,可以对规范地图进行排名,用于选择一个或多个规范地图以与新的跟踪地图合并和/或从集合中选择一个或多个规范地图以在设备内使用。
为了向用户提供逼真的XR体验,XR系统必须了解用户的物理环境,以便正确地将虚拟对象的位置与真实对象相关。可以从用户位置的环境地图中获得关于用户的物理环境的信息。
XR系统可以通过实现有效地共享由多个用户收集的真实/物理世界的环境地图来向共享包括真实和/或虚拟内容的相同世界的多个用户提供增强的XR体验,无论这些用户是在同一时间还是在不同时间出现在世界中。然而,在提供这种系统方面存在重大挑战。这样的系统可以存储由多个用户生成的多个地图和/或系统可以存储在不同时间生成的多个地图。对于可能采用先前生成的地图执行的操作(诸如例如定位),可能需要进行大量处理才能从XR系统中收集的所有环境地图中识别同一世界(例如,相同的真实世界位置)的相关环境地图。在此描述技术从所有可能的环境地图中快速和准确地对环境地图的相关性进行排名的,诸如例如图25中的所有规范地图120的全域。然后可以选择高排名的地图以进行进一步处理,例如在用户显示器上渲染的虚拟对象与用户周围的物理世界真实地交互,或者将该用户收集的地图数据与存储地图合并以创建更大或更准确的地图。
在一些实施例中,可以通过基于多个标准过滤存储的地图来识别与在物理世界中的位置处的用户的任务有关的存储的地图。这些标准可以指示由用户的可穿戴设备在该位置中生成的跟踪地图与存储在数据库中的候选环境地图的比较。可以基于与地图相关联的元数据(诸如由生成地图的设备检测到的Wi-Fi指纹和/或在形成地图的同时设备所连接到的一组BSSID)来执行比较。还可以基于地图的压缩或未压缩内容执行比较。可以通过比较从地图内容计算出的矢量来执行基于压缩表示的比较。例如,可以通过在存储的地图内定位跟踪地图来执行基于未压缩地图的比较,反之亦然。可以基于减少要考虑的候选地图的数量所需的计算时间来按顺序执行多次比较,其中与需要更多计算的其它比较相比,涉及较少计算的比较将按顺序更早地执行。
图23描绘了根据一些实施例的AR系统800,该AR系统800被配置为对地图进行排名作为合并地图以形成环境地图的过程的一部分。AR系统可以包括AR设备的可通行世界模型802。填充可通行世界模型802的信息可来自AR设备上的传感器,该传感器可包括存储在处理器804(例如,图4中的本地数据处理模块570)中的计算机可执行指令,该处理器可执行一些或全部处理以将传感器数据转换为地图。这种地图可以是跟踪地图,因为当AR设备在区域中操作时可以一边收集传感器数据一边构建跟踪地图。与该跟踪地图一起,可以提供区域属性,以便指示该跟踪地图表示的区域。这些区域属性可以是地理位置标识符,诸如表示为纬度和经度的坐标,或者是AR系统用来表示位置的ID。可替代地或另外地,区域属性可以是对于该区域具有唯一的很高的可能性的被测量的特性。区域属性例如可以从在该区域中检测到的无线网络的参数导出。在一些实施例中,区域属性可以与AR系统在附近和/或连接到的接入点的唯一地址相关联。例如,区域属性可以与5G基站/路由器、Wi-Fi路由器等的MAC地址或基本服务集标识符(BSSID)相关联。
在图23的示例中,可以将跟踪地图与环境的其它地图合并。地图排名部分806从设备PW 802接收跟踪地图,并与地图数据库808通信以选择和排名来自地图数据库808中的环境地图。将排名较高的所选择地图发送到地图合并部分810。
地图合并部分810可以对从地图排名部分806发送的地图执行合并处理。合并处理可能需要将跟踪地图与一些或所有排名地图合并,并将新的合并地图发送到可通行世界模型812。地图合并部可以通过识别描绘物理世界的重叠部分的地图来合并地图。可以对齐那些重叠的部分,以便可以将两个地图中的信息聚合到最终地图中。规范地图可以与其他规范地图和/或跟踪地图合并。
聚合可能需要用来自另一地图的信息来扩展一个地图。替代地或附加地,聚合可能需要基于另一地图中的信息来调整一个地图中的物理世界的表示。例如,后面的地图可以揭示造成特征点已经移动的对象,从而可以基于后面的信息来更新地图。替代地,两个地图可以用不同的特征点来表征同一区域,并且聚合可能需要从两个地图中选择一组特征点以更好地表示该区域。不管合并过程中发生的具体处理如何,在一些实施例中,来自被合并的所有地图的PCF可以被保留,使得相对于它们对内容进行定位的应用可以继续这样做。在一些实施例中,地图的合并可以导致冗余的持久姿势,并且一些持久姿势可以被删除。当PCF与要删除的持久姿势相关联时,合并地图可能需要修改PCF以与合并后保留在地图中的持久姿势相关联。
在一些实施例中,随着地图进行扩展和/或更新,它们可以被细化。细化可能需要进行计算以减少可能表示物理世界中相同对象的特征点之间的内部不一致。这种不一致可能产生于与提供表示物理世界中相同对象的特征点的关键帧相关联的姿势不准确。例如,这种不一致可能产生于XR设备相对于跟踪地图计算姿势,该跟踪地图又是基于估计姿势而建立的,因此姿势估计中的误差会累积,从而随时间推移形成姿势准确性的“漂移”。通过执行光束法平差或其他操作以减少来自多个关键帧的特征点的不一致,可以细化地图。
在细化时,持续点相对于地图原点的位置可以改变。因此,与该持久点相关联的变换,例如持久姿势或PCF,可能会发生变化。在一些实施例中,结合地图细化(无论是作为合并操作的一部分还是出于其他原因而执行)的XR系统可以重新计算与已变化的任何持久点相关联的变换。这些变换可能被从计算变换的部件推送到使用该变换的部件,以使变换的任何使用都可以基于持久点的经更新的位置。
可通行世界模型812可以是云模型,该云模型可以由多个AR设备共享。可通行世界模型812可以存储或以其它方式访问地图数据库808中的环境地图。在一些实施例中,当更新先前计算的环境地图时,可以删除该地图的先前版本,以便从数据库中删除过时的地图。在一些实施例中,当更新先前计算的环境地图时,该地图的先前版本可以被存档,从而使得能够取得/观看环境的先前版本。在一些实施例中,可以设置许可,使得只有具有某些读/写访问权限的AR系统才可以触发地图的先前版本被删除/存档。
从由一个或多个AR设备/系统提供的跟踪地图创建的这些环境地图可以由AR系统中的AR设备访问。地图排名部分806也可以用于向AR设备提供环境地图。AR设备可以发送请求其当前位置的环境地图的消息,并且地图排名部分806可以用于选择和排名与请求设备有关的环境地图。
在一些实施例中,AR系统800可以包括被配置为从云端PW 812接收合并地图的下采样部814。从云端PW 812接收的合并地图可以是用于云端的存储格式,其可以包括高分辨率信息,例如每平方米大量的PCF或多个图像帧或与PCF相关的大量特征点集合。下采样部814可以被配置为将云端格式地图下采样为适合于存储在AR设备上的格式。设备格式的地图可以包含较少的数据,例如较少的PCF或针对每个PCF存储的较少数据,以适应AR设备有限的本地计算能力和存储空间。
图24是示出了可以存储在例如云端的远程存储介质中的多个规范地图120的简化框图。每个规范地图120可以包括多个规范地图标识符,这些标识符指示规范地图在物理空间内的位置。这些规范地图标识符可以包括以下标识符中的一个或多个:由经度和纬度范围表示的区域标识符、帧描述符(例如,图18中的全局特征串316)、Wi-Fi指纹、特征描述符(例如,图18中的特征描述符310)、以及指示对地图做出贡献的一个或多个设备的设备标识。
在示出的示例中,规范地图120以二维模式在地理上布置,因为它们可以存在于地球表面上。规范地图120可以由相应的经度和纬度唯一地可识别,因为具有重叠的经度和纬度的任何规范地图都可以合并为新的规范地图。
图25是示出根据一些实施例的选择规范地图的方法的示意图,该方法可以用于将新的跟踪地图定位到一个或多个规范地图。该方法可以从访问(动作120)规范地图120的世界开始,作为示例,该规范地图120的世界可以存储在可通行世界的数据库中(例如,可通行世界模块538)。规范地图的世界可以包括来自所有先前到访过的位置的规范地图。XR系统可以将所有规范地图的世界过滤为一个小的子集或仅一个地图。应当理解,在一些实施例中,由于带宽限制,可能无法将所有规范地图发送到观看设备。选择被选择为匹配跟踪地图的可能候选以发送到设备的子集可以减少与访问远程地图数据库相关联的带宽和延迟。
该方法可以包括基于具有预定大小和形状的区域来过滤(动作300)规范地图的全域。在图24所示的示例中,每个正方形可以代表一个区域。每个方格可以覆盖50m×50m。每个正方形可以具有六个邻近的区域在一些实施例中,动作300可以选择覆盖经度和纬度的至少一个匹配规范地图120,其中的经度和纬度包括从XR设备接收到的位置标识符的经度和纬度,只要在该经度和纬度处存在至少一个地图即可。在一些实施例中,动作300可以选择覆盖与匹配的规范地图相邻的经度和纬度的至少一个相邻规范地图。在一些实施例中,动作300可以选择多个匹配规范地图和多个相邻规范地图。动作300可以例如将规范地图的数量减少大约十倍,例如从数千减少到数百,以形成第一过滤选择。替代地或附加地,可以使用除纬度和经度以外的标准来识别相邻地图。例如,XR设备可以先前已经利用集合中的规范地图进行定位作为同一会话的一部分。云服务可以保留有关XR设备的信息,包括先前定位到的地图。在该示例中,在动作300处选择的地图可以包括覆盖与XR设备定位到的地图相邻的区域的那些地图。
该方法可以包括基于Wi-Fi指纹来过滤(动作302)规范地图的第一过滤选择。动作302可以基于作为位置标识符的一部分从XR设备接收的Wi-Fi指纹来确定纬度和经度。动作302可以将来自Wi-Fi指纹的纬度和经度与规范地图120的纬度和经度进行比较,以确定形成第二过滤选择的一个或多个规范地图。动作302可以将规范地图的数量减少大约十倍,例如,从数百个规范地图减少到形成第二选择的数十个(例如50个)规范地图。例如,第一过滤选择可以包括130个规范地图,第二过滤选择可以包括130个规范地图中的50个,并且可以不包括130个规范地图中的其他80个。
该方法可以包括基于关键帧来过滤(动作304)规范地图的第二过滤选择。动作304可以将表示由XR设备捕获的图像的数据与表示规范地图120的数据进行比较。在一些实施例中,表示图像和/或地图的数据可以包括特征描述符(例如,图22中的DSF描述符)和/或全局特征串(例如,图18中的316)。动作304可以提供规范地图的第三过滤选择。在一些实施例中,例如,动作304的输出可以仅是在第二过滤选择之后识别出的50个规范地图中的五个规范地图。然后,地图发送器122将基于第三过滤选择的一个或多个规范地图发送到观看设备。动作304可以将规范地图的数量减少大约十倍,例如,从数十个规范地图减少到形成第三选择的个位数的规范地图(例如,5个)。在一些实施例中,XR设备可以在第三过滤选择中接收规范地图,并且尝试定位到所接收的规范地图中。
例如,动作304可以基于规范地图120的全局特征串316和基于由观看设备捕获的图像(例如,可以是用户的本地跟踪地图的一部分的图像)的全局特征串316来过滤规范地图120。因此,图24中的每个规范地图120具有与其相关联的一个或多个全局特征串316。在一些实施例中,当XR设备向云端提交图像或特征细节并且在云端处理这些图像或特征细节以生成用于规范地图120的全局特征串316时,可以获取全局特征串316。
在一些实施例中,云端可以接收由观看设备捕获的实时/新/当前图像的特征细节,并且云端可以生成实时图像的全局特征串316。然后,云端可以基于实时全局特征串316来过滤规范地图120。在一些实施例中,可以在本地观看设备上生成全局特征串。在一些实施例中,可以例如在云端远程生成全局特征串。在一些实施例中,云端可以将过滤后的规范地图连同与过滤后的规范地图相关联的全局特征串316一起发送到XR设备。在一些实施例中,当观看设备将其跟踪地图定位到规范地图时,它可以通过将本地跟踪地图的全局特征串316与规范地图的全局特征串进行匹配来做到这一点。
应当理解,XR设备的操作可以不执行所有动作(300、302、304)。例如,如果规范地图的世界相对较小(例如,500个地图),则尝试进行定位的XR设备可以基于Wi-Fi指纹(例如,动作302)和关键帧(例如,动作304)来过滤规范地图的世界,但是省略了基于区域的过滤(例如,动作300)。而且,没有必要对整个地图进行比较。例如,在一些实施例中,两个地图的比较可以导致识别共同的持久点,例如在新地图中和从地图世界选择的地图中都出现的持久姿势或PCF。在那种情况下,描述符可以与持久点相关联,并且可以比较那些描述符。
图26和图27是图示根据一些实施例的被配置为对多个环境地图进行排名的XR系统的示意图。排名可以用作地图合并过程的一部分。替代地或附加地,成为便携式XR设备的定位过程的一部分,其中选择排名高的地图并在该设备上收集空间信息,并且针对将来自设备的空间信息与那些被选择的地图中的一个地图的一部分对齐的变换进行搜索。在图26的这个示例中,所选择的地图被发送到设备进行定位处理,但是可以替代地或附加地在其他计算机资源中执行定位,并将定位结果发送到设备。
在一些实施例中,可通行世界(PW)可以确定何时触发对地图进行排名和/或合并。在一些实施例中,确定要使用的地图可以至少部分地基于以上关于图18至图22描述的深度关键帧。
图28是示出根据一些实施例的创建物理世界的环境地图的方法3700的框图。方法3700可以从将由用户佩戴的XR设备捕获的跟踪地图定位(动作3702)到规范地图(例如,通过图25的方法选择的规范地图)的群组。动作3702可以包括将跟踪地图的关键装配定位到规范地图的群组中。每个关键装配的定位结果可以包括关键装配的本地化姿势和2D到3D特征对应关系的集合。
在一些实施例中,方法3700可以包括将跟踪地图分裂(动作3704)为连接的部分,这可以通过合并连接的片段来鲁棒地合并地图。每个连接的部分可以包括在预定距离内的关键装配。方法3700可以包括:将大于预定阈值的连接部分合并(动作3706)到一个或多个规范地图中;以及从跟踪地图中移除已合并的连接部分。
在一些实施例中,方法3700可以包括合并(动作3708)与跟踪地图的相同连接部分进行合并的群组中的规范地图。在一些实施例中,方法3700可以包括将尚未与任何规范地图合并的跟踪地图的其余连接部分提升(动作3710)为规范地图。在一些实施例中,方法3700可以包括合并(动作3712)跟踪地图和规范地图的持久姿势和/或PCF,其中的规范地图与跟踪地图的至少一个连接部分进行合并。在一些实施例中,方法3700可以包括例如通过融合地图点并修剪冗余关键装配来最终化(行动3714)规范地图。
图29A和29B示出了根据一些实施例的通过更新规范地图700创建的环境图3800,该规范地图700可以用新跟踪地图从跟踪地图700(图7)进行升级。如相对于图7所图示和描述的,规范地图700可以提供由点702表示在相应物理世界中的重建物理对象的平面图706。在一些实施例中,地图点702可以表示物理对象的特征,该物理对象可以包括多个特征。可以捕获关于物理世界的新跟踪地图,并将其上传到云端以与地图700合并。新跟踪地图可以包括地图点3802以及关键装配3804、3806。在所示的示例中,关键装配3804表示通过例如建立与地图700的关键装配704的对应关系(如图29B所示)而成功地定位到规范地图的关键装配。另一方面,关键装配3806表示尚未定位到地图700的关键装配。在一些实施例中,可以将关键装配3806提升为单独的规范地图。
图30A至30F是示出基于云的持久坐标系的示例的示意图,该基于云的持久坐标系为相同物理空间中的用户提供共享的体验。图30A示出了例如来自云端的规范地图4814由图17A至图17C的用户4802A和4802B所佩戴的XR设备接收。规范地图4814可具有规范坐标框架4806C。规范地图4814可以具有带有多个相关联的PP的PCF 4810C(例如,图30C中的4818A、4818B)。
图30B示出了XR设备在其相应的世界坐标系4806A、4806B与规范坐标框架4806C之间建立的关系。例如,这可以通过定位到相应设备上的规范地图4814来完成。对于每个设备,将跟踪地图定位到规范地图可以导致对于每个设备其本地世界坐标系与规范地图的坐标系之间的变换。
图30C示出可以计算在相应设备上的本地PCF(例如,PCF 4810A、PCF 4810B)到规范地图上的相应持久姿势(例如,PP 4818A、PP 4818B)之间的变换(例如,变换4816A、变换4816B)作为定位的结果。利用这些转换,每个设备都可以使用其本地PCF来确定相对于本地设备在何处显示附接到PP 4818A、PP 4818B或规范地图的其他持久点的虚拟内容,其中的本地PCF可以通过处理利用设备上的传感器检测到的图像来在设备本地进行检测。这样的方法可以相对于每个用户准确地定位虚拟内容,并且可以使每个用户能够在物理空间中具有虚拟内容的相同体验。
图30D示出了从规范地图到本地跟踪地图的持久姿势快照。可以看出,本地跟踪地图通过持久姿势相互连接。图30E示出了由用户4802A佩戴的设备上的PCF 4810A能够通过PP 4818A在用户4802B佩戴的设备中访问。图30F示出了跟踪地图4804A、4804B和规范地图4814可以合并。在一些实施例中,一些PCF可以由于合并而被去除。在所示的示例中,合并地图包括规范地图4814的PCF 4810C,但不包括跟踪地图4804A、4804B的PCF 4810A、PCF4810B。在地图合并之后,先前与PCF 4810A、PCF 4810B相关联的PP可以与PCF 4810C相关联。
示例
参考图31和图32,可以存在多于一个的用户在同一会话中与服务器交互。在本示例中,第一用户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设备。
图33示出根据一些实施例的用于恢复和/或重置头部姿势的观看方法的方面。在所示的示例中,在动作1400处,观看设备被通电。在动作1410处,响应于通电,发起新的会话。在一些实施例中,新的会话可以包括建立头部姿势。通过首先捕获环境的图像并且然后从图像确定表面,在固定到用户头部的头戴式框架上的一个或多个捕获设备捕获环境的表面。在一些实施例中,表面数据可以与来自重力传感器的数据相结合以建立头部姿势。可以使用其他合适的建立头部姿势的方法。
在动作1420处,观看设备的处理器输入用于跟踪头部姿势的例程。当用户移动其头部以确定头戴式框架相对于表面的取向时,捕获设备继续捕获环境的表面。
在动作1430处,处理器确定头部姿势是否已经丢失。头部姿势可能由于“边缘”情况而丢失,诸如可导致低特征获取的过多的反射表面、弱光、空白的墙壁、在室外等;或者由于诸如移动和形成地图的一部分的人群的动态情况而丢失。在1430处的例程允许经过一定量的时间,例如10秒,以允许足够的时间来确定头部姿势是否已经丢失。如果头部姿势尚未丢失,则处理器返回到1420,并再次进入对头部姿势的跟踪。
如果在动作1430处头部姿势已经丢失,则处理器在1440处进入例程以恢复头部姿势。如果由于弱光导致头部姿势丢失,则将通过观看设备的显示器向用户显示诸如以下消息的消息:
系统正在检测弱光条件。请移动到光线更充足的区域。
系统将继续监视是否有足够的光可用以及是否可以恢复头部姿势。该系统可以可替代地确定表面的低纹理正在导致头部姿势丢失,在这种情况下,在显示器中向用户给出以下提示,作为改善表面捕获的建议:
系统无法检测到具有精细纹理的足够的表面。请移动至表面纹理较不粗糙以及纹理更精细的区域。
在动作1450处,处理器进入例程以确定头部姿势恢复是否已经失败。如果头部姿势恢复没有失败(即,头部姿势恢复已经成功),则处理器通过再次输入对头部姿势的跟踪来返回动作1420。如果头部姿势恢复已经失败,则处理器返回到动作1410以建立新的会话。作为新会话的一部分,所有缓存的数据均无效,此后重新建立头部姿势。任何合适的头部跟踪的方法都可以与图33中描述的过程结合使用。美国专利申请公开号US 2019/0188474描述了头部跟踪,并通过引用将其全部并入本文。
美国专利申请号62/928,833中提供了提供持久空间信息的进一步示例,通过引用将其并入本文中。
远程定位
各种实施例可以利用远程资源来促进个人和/或用户组之间的持久且一致的交叉现实体验。发明人已经认识到并理解,可以在不下载一组规范地图的情况下实现利用如本文所述的规范地图操作XR设备的益处。例如,益处可以通过将特征和姿势信息发送到维护一组规范地图的远程服务来实现。寻求使用规范地图以将虚拟内容定位在相对于规范地图指定的位置的设备可以从远程服务接收特征与规范地图之间的一个或多个变换。这些变换可以在设备上使用,该设备维护关于这些特征在物理世界中的位置的信息,以将虚拟内容定位在相对于一个或多个规范地图指定的位置中,或者以其他方式识别物理世界中相对于规范地图指定的位置。
在一些实施例中,空间信息由XR设备捕获并传送到远程服务,例如基于云的服务,该服务使用空间信息将XR设备定位到由XR系统的应用或其他部件使用的规范地图,从而指定虚拟内容相对于物理世界的位置。一旦被定位,将由设备维护的跟踪地图链接到规范地图的变换可以被传送到设备。可以结合跟踪地图使用变换来确定渲染相对于规范地图指定的虚拟内容的位置,或者以其他方式识别物理世界中相对于规范地图指定的位置。
根据在此所描述的技术,与传送地图数据相比,需要在设备和远程定位服务之间交换的数据可能非常小,传送地图数据可能在设备将跟踪地图传送到远程服务并从该服务接收一组规范地图以用于基于设备的定位时发生这种情况。在一些实施例中,在云资源上执行定位功能仅需要从设备向远程服务传输少量的信息。例如,不需要将完整的跟踪地图传送给远程服务以执行定位。在一些实施例中,特征和姿势信息,例如可能与如上所述的持久姿势相关地存储,可以被传输到远程服务器。如上所述,在特征由描述符表示的实施例中,上传的信息可能更小。
从定位服务返回到设备的结果可以是将上传的特征与匹配的规范地图的部分相关的一个或多个变换。这些变换可以在XR系统中结合其跟踪地图用于识别虚拟内容的位置或以其他方式识别物理世界中的位置。在使用诸如上述PCF的持久空间信息来指定相对于规范地图的位置的实施例中,定位服务可以在成功定位之后将特征与一个或多个PCF之间的变换下载到设备。
结果,XR设备和用于执行定位的远程服务之间的通信所消耗的网络带宽可能很低。该系统因此可以支持频繁定位,使与系统交互的每个设备能够快速获得用于定位虚拟内容或执行其他基于位置的功能的信息。当设备在物理环境中移动时,它可能会重复针对更新的定位信息的请求。此外,设备可能会频繁地获取对定位信息的更新,例如当规范地图发生变化时,例如通过合并额外的跟踪地图以扩展地图或提高其准确性。
此外,上传特征和下载变换可以通过增加凭借欺骗获得地图的难度,来增强在多个用户之间共享地图信息的XR系统中的隐私。例如,可以阻止未授权的用户通过发送对表示物理世界中未授权的用户并不处于的部分的规范地图的虚假请求来从系统获取地图。未授权的用户不太可能访问其所正在请求的地图信息的物理世界的区域中的特征,如果未授权的用户并非在该区域中实际存在的话。在特征信息被格式化为特征描述的实施例中,在对地图信息的请求中欺骗特征信息的难度将更加复杂。此外,当系统返回旨在应用于在请求位置信息的区域中操作的设备的跟踪地图的变换时,系统返回的信息可能对冒名顶替者几乎没有用处或没有用。
根据一个实施例,定位服务被实现为基于云的微服务。在一些示例中,实现基于云的定位服务可以帮助节省设备计算资源,并且可以使定位所需的计算能够以非常低的延迟执行。这些操作可以由几乎无限的计算能力或通过提供额外的云资源而可用的其他计算资源来支持,从而确保XR系统的可扩展性以支持众多设备。在一个示例中,可以在存储器中维护许多规范地图以进行几乎即时的访问,或者将其存储在高可用性设备中以减少系统延迟。
此外,对云服务中的多个设备执行定位可以实现对过程的改进。定位遥感(telemetry)和统计可以提供关于哪些规范地图在有源存储器和/或高可用性存储中的信息。例如,可以使用多个设备的统计来识别最频繁被访问的规范地图。
作为在云环境或具有相对于远程设备的大量处理资源的其他远程环境中的处理的结果,也可以实现额外的准确性。例如,相对于在本地设备上执行的处理,可以在云中更高密度的规范地图上进行定位。地图可以存储在云中,例如,具有更多的PCF或每个PCF更高密度的特征描述符,从而提高了来自设备的一组特征与规范地图之间匹配的准确性。
图34是XR系统6100的示意图。在用户会话期间显示交叉现实内容的用户设备可以有多种形式。例如,用户设备可以是可穿戴XR设备(例如,6102)或手持移动设备(例如,6104),例如智能电话或平板计算机。手持移动设备可能比可穿戴XR设备拥有更少的传感器,但仍然配备了一个或多个相机,可能还配备了其他传感器。如上所述,这些设备可以配置有软件,例如应用或其他部件,和/或硬连线,以生成可用于在它们各自的显示器上渲染虚拟内容的本地位置信息(例如,跟踪地图)。例如,虚拟内容可以被渲染以出现在来自移动设备的相机的实时馈送的图像中,使得设备的用户在观看显示器时感知包括物理对象和虚拟内容的环境。
可以相对于全局位置信息指定虚拟内容定位信息,例如,全局位置信息可以被格式化为包含一个或多个PCF的规范地图。根据一些实施例,例如图34中所示的实施例,系统6100配置有支持虚拟内容在用户设备上的运行和显示的基于云的服务。
在一个示例中,定位功能被提供为基于云的服务6106,其可以是微服务。基于云的服务6106可以在多个计算设备中的任何一个上实现,计算资源可以从这些计算设备分配给在云中执行的一个或多个服务。那些计算设备可以彼此互连并且对于诸如可穿戴XR设备6102和手持设备6104的设备是可访问的。这样的连接可以通过一个或多个网络提供。
在一些实施例中,基于云的服务6106被配置为接受来自各个用户设备的描述符信息并且将设备“定位”到匹配的一个或多个规范地图。例如,基于云的定位服务将接收到的描述符信息与相应的规范地图的描述符信息相匹配。可以使用如上所述的技术来创建规范地图,该技术通过合并由具有图像传感器或获取关于物理世界的信息的其他传感器的一个或多个设备所提供的地图来创建规范地图。然而,不要求规范地图由访问它们的设备来创建,因为这样的地图可以由地图开发者创建,例如,地图开发者可以通过使地图对定位服务6106能够使用来发布地图。
根据一些实施例,云服务处理规范地图识别,并且可以包括将规范地图的存储库过滤为一组潜在匹配的操作。过滤可以如图25所示来执行,或者通过使用过滤标准的任何子集和代替图25中所示的过滤标准或者除了图25中所示的过滤标准之外的其他过滤标准来执行。在一个实施例中,地理数据可用于将匹配规范地图的搜索限制为表示与请求定位的设备靠近的区域的地图。例如,区域属性,例如Wi-Fi信号数据、Wi-Fi指纹信息、GPS数据、和/或其他设备位置信息,可用作存储的规范地图上的粗略过滤器,从而将描述符的分析限制为已知的或可能靠近用户设备的规范地图。类似地,每个设备的位置历史可以由云服务维护,以便优先搜索设备最后位置附近的规范地图。
图35是可以由设备执行以使用基于云的服务来利用规范地图定位设备的位置并接收指定设备本地坐标系和规范地图的坐标系之间的一个或多个变换的变换信息的示例流程。各种实施例和示例可以将一个或多个变换描述为指定从第一坐标框架到第二坐标框架的变换。其他实施例包括从第二坐标框架到第一坐标框架的变换。在其他实施例中,变换实现从一个坐标框架到另一个坐标框架的转变,所得到的坐标框架仅取决于期望的坐标框架输出(包括例如在其中显示内容的坐标框架)。在又一实施例中,坐标系变换可以使得能够确定从第二坐标框架到第一坐标框架和从第一坐标框架到第二坐标框架。
根据一些实施例,可以向设备传送反映关于规范地图所定义的每个持久姿势的变换的信息。
根据一个实施例,过程6200可以在6202处以新会话开始。在设备上开始新会话可以启动图像信息的捕获以构建设备的跟踪地图。此外,设备可以发送消息,向定位服务的服务器注册,提示服务器为该设备创建会话。
在一些实施例中,在设备上开始新会话可选地可以包括从设备向定位服务发送调整数据。定位服务向设备返回基于一组特征和相关联的姿势所计算的一个或多个变换。如果在计算变换之前基于设备特定信息调整特征的姿势和/或在计算变换之后基于设备特定信息调整变换,而不是在设备上执行那些计算,则设备特定信息可能被发送到定位服务,以便定位服务可以应用这些调整。作为特定示例,发送设备特定的调整信息可以包括捕获传感器和/或显示器的校准数据。校准数据可用于例如调整特征点相对于测量位置的位置。替代地或附加地,校准数据可用于调整命令显示器渲染虚拟内容的位置,以便看起来针对该特定设备准确定位。该校准数据可以例如从使用设备上的传感器拍摄的同一场景的多个图像中获得。在那些图像中检测到的特征的位置可以表示为传感器位置的函数,使得多个图像产生可以求解传感器位置的一组方程。可以将计算出的传感器位置与标称位置进行比较,并且可以从任何差异中得出校准数据。在一些实施例中,关于设备构造的内在信息还可以使得能够针对显示器计算校准数据,在一些实施例中。
在针对传感器和/或显示器生成校准数据的实施例中,校准数据可应用于测量或显示过程中的任何点。在一些实施例中,可以将校准数据发送到定位服务器,该定位服务器可以将校准数据存储在为每个设备建立的数据结构中,该每个设备已经向定位服务器注册并且因此处于与服务器的会话中。定位服务器可以将校准数据应用于作为用于提供该校准数据的设备的定位过程的一部分而计算的任何变换。因此,使用校准数据来提高感测和/或显示信息的准确性的计算负担由校准服务承担,从而提供了进一步的机制来减少设备上的处理负担。
一旦建立了新会话,过程6200可以在6204继续捕获设备的环境的新帧。在6206,每个帧可以被处理以生成用于捕获的帧的描述符(包括例如上面讨论的DSF值)。这些值可以使用上面描述的一些或所有技术来计算,包括上面关于图11、图19和图20讨论的技术。如所讨论的,描述符可以被计算为特征点的映射,或者在一些实施例中,特征点周围的图像块到描述符的映射。描述符可以具有能够在新获取的帧/图像和存储的地图之间进行有效匹配的值。此外,从图像中提取的特征的数量可以被限制为每幅图像的特征点的最大数量,例如每幅图像200个特征点。如上所述,可以选择特征点来表示关注点。因此,动作6204和6206可以作为形成跟踪地图或以其他方式周期性地收集设备周围的物理世界的图像的设备过程的一部分来执行,或者可以但不必为了定位而单独执行。
在6206的特征提取可以包括将姿势信息附加到在6206提取的特征。姿势信息可以是设备的本地坐标系中的姿势。在一些实施例中,姿势可以相对于跟踪地图中的参考点,例如如上所述的持久姿势。替代地或附加地,姿势可以相对于设备的跟踪地图的原点。这样的实施例可以使如本文所述的定位服务能够为范围广泛的设备提供定位服务,即使它们不使用持久姿势。无论如何,姿势信息可以附加到每个特征或每组特征,使得定位服务可以使用姿势信息来计算可以在将特征与存储的地图中的特征匹配时返回给设备的变换。
过程6200可以继续到决策框6207,在该决策框6207中做出是否请求定位的决定。可以应用一个或多个标准来确定是否请求定位。该标准可以包括时间的流逝,使得设备可以在一定阈值时间量之后请求定位。例如,如果在阈值时间量内没有尝试定位,则该过程可以从决策框6207继续到动作6208,在该处从云请求定位。该阈值时间量可以在10到30秒之间,例如25秒。替代地或附加地,定位可以由设备的运动来触发。执行过程6200的设备可以使用IMU和/或其跟踪地图来跟踪其运动,并在检测到距设备最后被请求定位的位置超过阈值距离的运动时启动定位。例如,阈值距离可以在1到10米之间,例如在3到5米之间。作为又一替代,可以响应于事件来触发定位,例如当设备创建新的持久姿势或设备的当前持久姿势改变时,如上所述。
在一些实施例中,可以实现决策框6207,从而可以动态地建立用于触发定位的阈值。例如,在特征很大程度上一致使得将一组提取的特征与存储的地图的特征进行匹配的置信度可能较低的环境中,可能会更频繁地请求定位,以增加至少一次定位尝试将会成功的机会。在这种情况下,可以降低在决策框6207应用的阈值。类似地,在特征相对较少的环境中,可以降低在决策框6207应用的阈值以增加定位尝试的频率。
不管定位如何被触发,当被触发时,过程6200可以进行到动作6208,其中设备向定位服务发送请求,包括由定位服务用来执行定位的数据。在一些实施例中,可以提供来自多个图像帧的数据用于定位尝试。例如,除非多个图像帧中的特征产生一致的定位结果,否则定位服务可能不会认为定位成功。在一些实施例中,过程6200可以包括将特征描述符和附加的姿势信息保存到缓冲器中。缓冲器可以例如是循环缓冲器,存储从最近捕获的帧中提取的特征集合。因此,定位请求可以与在缓冲器中累积的多个特征集合一起发送。在一些设置中,缓冲器尺寸被实现为累积更有可能产生成功定位的多个数据集。在一些实施例中,缓冲器尺寸可以被设置为从例如两个、三个、四个、五个、六个、七个、八个、九个或十个帧中累积特征。可选地,缓冲器尺寸可以具有可以响应于定位失败而增加的基线(baseline)设置。在一些示例中,增加缓冲器尺寸和传输的特征集合的相应数量会降低后续定位功能无法返回结果的可能性。
不管如何设置缓冲器尺寸,设备都可以将缓冲器的内容传送到定位服务作为定位请求的一部分。其他信息可以连同特征点和附加的姿势信息一起传输。例如,在一些实施例中,可以传输地理信息。地理信息可以包括例如GPS坐标或与跟踪地图的设备相关联的无线签名或当前持久姿势。
响应于在6208发送的请求,云定位服务可以分析特征描述符以将设备定位成规范地图或由服务维护的其他持久地图。例如,描述符与设备所定位的地图中的一组特征相匹配。基于云的定位服务可以相对于基于设备的定位执行如上所述的定位(例如,可以依赖于上面讨论的用于定位的任何功能(包括地图排名、地图过滤、位置估计、过滤的地图选择,和/或相对于定位模块、PCF和/或PP识别和匹配等进行讨论的)。然而,代替将识别的规范地图传送到设备(例如,在设备定位中),基于云的定位服务可以继续基于规范地图的匹配特征和从设备发送的特征集合的相对取向来生成变换。定位服务可以将这些变换返回给设备,设备可以在框6210处接收。
在一些实施例中,由定位服务维护的规范地图可以采用PCF,如上所述。在这样的实施例中,与从设备发送的特征点匹配的规范地图的特征点可以具有相对于一个或多个PCF指定的位置。因此,定位服务可以识别一个或多个规范地图,并且可以计算在随定位请求发送的姿势中表示的坐标框架与一个或多个PCF之间的变换。在一些实施例中,通过基于相应设备的地理数据过滤潜在地图来帮助识别一个或多个规范地图。例如,一旦过滤到候选集(例如,通过GPS坐标等其他选项),可以详细分析规范地图的候选集以确定匹配的特征点或如上所述的PCF。
在动作6210返回到请求设备的数据可以被格式化为持久姿势变换表。该表可以伴随一个或多个规范地图标识符,指示设备由定位服务定位到的规范地图。然而,应当理解,定位信息可以以其他方式格式化,包括作为变换列表,具有相关联的PCF和/或规范地图标识符。
不管变换是如何被格式化的,在动作6212,设备可以使用这些变换来计算渲染虚拟内容的位置,该虚拟内容的位置已经由XR系统的应用或其他部件相对于任何PCF进行指定。该信息替代地或附加地在设备上用于执行任何基于位置的操作,其中基于PCF来指定位置。
在一些场景中,定位服务可能无法将从设备发送的特征匹配到任何存储的规范地图,或者可能无法匹配与对定位服务的请求一起传送的足够数量的特征集合从而认为成功进行了定位。在这样的场景中,定位服务可以向设备指示定位失败,而不是如上面结合动作6210所述的将变换返回给设备。在这样的场景中,过程6200可以在决策框6209处分支到动作6230,其中设备可以采取一个或多个动作用于失败处理。这些动作可以包括增加保存为了定位而发送的特征集合的缓冲器的尺寸。例如,如果定位服务不认为定位成功,除非三个特征集合匹配,则缓冲器尺寸可以从5增加到6,从而增加三个所传输的特征集合与由定位服务维护的规范地图匹配的机会。
替代地或附加地,失败处理可以包括调整设备的操作参数以触发更频繁的定位尝试。例如,可以减少定位尝试之间的阈值时间和/或阈值距离。作为另一示例,可以增加每个特征集合中的特征点的数量。当从设备发送的集合中的足够数量的特征与地图的特征匹配时,可以认为发生特征集合与存储在规范地图内的特征之间的匹配。增加发送的特征数量可以增加匹配的机会。作为具体示例,初始特征集合大小可以是50,在每次连续定位失败时,其可以增加到100、150,然后是200。在成功匹配后,设置的大小然后可以返回到它的初始值。
失败处理还可以包括除了从定位服务以外获得定位信息。根据一些实施例,用户设备可以被配置为缓存规范地图。缓存地图允许设备访问和显示云不可用的内容。例如,缓存的规范地图允许在通信失败或其他不可用的情况下进行基于设备的定位。
根据各种实施例,图35描述了用于设备发起基于云的定位的高级流程。在其他实施例中,所示步骤中的各种一个或多个步骤可以进行组合、省略、或调用其他过程以完成对相应设备视图中的虚拟内容的定位和最终可视化。
此外,应当理解,虽然过程6200示出了设备在决策框6207处确定是否启动定位,但是用于启动定位的触发可以来自设备外部,包括来自定位服务。例如,定位服务可以维护关于与其会话中的每个设备的信息。例如,该信息可以包括每个设备最近被定位到的规范地图的标识符。XR系统的定位服务或其他部件可以更新规范地图,包括使用上面结合图23描述的技术。当规范地图被更新时,定位服务可以向最近被定位到该地图的每个设备发送通知。该通知可以用作设备请求定位的触发和/或可以包括使用从设备最近发送的特征集合所重新计算的更新的变换。
图36A、图36B和图36C是示出设备和云服务之间的操作和通信的示例过程流。框6350、6352、6354和6456所示的是示例架构和参与基于云的定位过程的部件之间的分离。例如,被配置为处理用户设备上的感知的模块、部件和/或软件在6350处示出(例如,660,图6A)。用于持久世界操作的设备功能在6352处示出(包括,例如,如上所述并且关于持久世界模块(例如,662,图6A))。在其他实施例中,不需要6350和6352之间的分离并且所示的通信可以在设备上执行的过程之间。
类似地,在框6354处示出的是被配置为处理与可通行世界/可通行世界建模相关联的功能的云过程(例如,802、812,图23)。在框6356处示出的是云过程,其被配置为处理与基于从设备发送的信息将设备定位到所存储的规范地图的存储库中的一个或多个地图相关联的功能。
在所示实施例中,过程6300在6302处开始,此时新会话开始。在6304获得传感器校准数据。获得的校准数据可以取决于在6350处表示的设备(例如,多个相机、传感器、定位设备等)。一旦针对设备获得传感器校准,在6306处校准可以被缓存。如果设备操作导致频率参数(例如,收集频率、采样频率、匹配频率、以及其他选项)的变化,则在6308处频率参数被重置为基线。
一旦新会话功能完成(例如,校准,步骤6302-6306),过程6300可以继续捕获新帧6312。在6314,从帧中提取特征及其对应的描述符。在一些示例中,描述符可以包括DSF,如上所述。根据一些实施例,描述符可以具有附加到它们的空间信息以实现后续处理(例如,变换生成)。在6316处,在设备上生成的姿势信息(例如,如上所述,相对于设备的跟踪地图指定的用于定位物理世界中的特征的信息)可以附加到提取的描述符。
在6318,描述符和姿势信息被添加到缓冲区。在一些实施例中,可以将指定集合特征相对于估计的重力方向的关系的信息添加到缓冲区。在一些实施例中,设备可以形成跟踪地图,使得跟踪地图的坐标系相对于估计的重力方向来取向。在这样的实施例中,相对于跟踪地图对特征进行姿势设置可以提供特征集合和重力之间的关系。在其他实施例中,例如,可以单独存储指定相对于估计的重力方向的关系的信息以用于传输到定位服务。当特征相对于未相对于重力定向的坐标系进行姿势设置时,可将指示该坐标系的维度与重力方向之间的偏移的向量添加到缓冲区以用于传输到定位服务。
以循环执行步骤6312-6318中所示的新帧捕获和添加到缓冲器,直到在6319超过缓冲器尺寸阈值。在6320处,响应于确定满足缓冲器尺寸,将定位请求从设备传送到的云。根据一些实施例,该请求可以由在云中实例化的可通行世界服务(例如,6354)来处理。在进一步的实施例中,用于识别候选规范地图的功能操作可以与用于实际匹配的操作分离(例如,示出为框6354和6356)。在一个实施例中,用于地图过滤和/或地图排名的云服务可以在6354执行并处理从6320接收的定位请求。根据一个实施例,地图排名操作被配置为在6322确定可能包括设备的位置的候选地图集。
在一个示例中,地图排名功能包括用于基于地理属性或其他位置数据(例如,观察或推断的位置信息)来识别候选规范地图的操作。例如,其他位置数据可以包括Wi-Fi签名或GPS信息。
根据其他实施例,可以在与设备和用户的交叉现实会话期间捕获位置数据。过程6300可以包括针对给定设备和/或会话(未示出)填充(populate)位置的附加操作。例如,位置数据可以存储为设备区域属性值和用于选择接近设备位置的候选规范地图的属性值。
任何一个或多个位置选项可用于将规范地图集过滤为可能表示包括用户设备的位置的区域的那些规范地图集。在一些实施例中,规范地图可以覆盖物理世界的相对较大的区域。规范地图可以被分割成区域,使得地图的选择可能需要地图区域的选择。例如,地图区域可以是几十平方米的数量级。因此,经过滤的规范地图集可以是地图的区域集。
根据一些实施例,可以从候选规范地图、姿势特征、和传感器校准数据构建定位快照(snapshot)。例如,候选规范地图、姿势特征和传感器校准信息的阵列可以与确定特定匹配规范地图的请求一起发送。可以基于从设备接收的描述符和与规范地图相关联的存储的PCF数据来执行与规范地图的匹配。
在一些实施例中,将来自设备的特征集合与作为规范地图的一部分存储的特征集合进行比较。该比较可以基于特征描述符和/或姿势。例如,可以基于候选集中特征的数量来选择规范地图的候选特征集合,这些特征的描述符与来自设备的特征集合的描述符足够相似以致于它们可能是相同的特征。例如,候选集可以是从用于形成规范地图的图像帧中导出的特征。
在一些实施例中,如果相似特征的数量超过阈值,则可以对候选特征集合执行进一步处理。进一步的处理可以确定来自设备的姿势特征集合可以与候选特征集合对齐的程度。可以对于来自规范地图的特征集合(类似于来自设备的特征)进行摆姿势。
在一些实施例中,特征被格式化为高维嵌入(例如,DSF等)并且可以使用最近邻搜索来进行比较。在一个示例中,系统被配置(例如,通过执行过程6200和/或6300)以使用欧几里得距离找到前两个最近邻,并且可以执行比率测试。如果最近邻比第二近邻更接近,则系统认为最近邻是匹配的。例如,可以通过欧几里得距离相对于第二近邻的比率比欧几里得距离相对于最近邻的比率超出阈值倍数来确定该上下文中的“更接近”。一旦来自设备的特征被认为与规范地图中的特征“匹配”,系统就可以配置为使用匹配特征的姿势来计算相对变换。从姿势信息发展而来的变换可用于指示将设备定位到规范地图所需的变换。
内围层(inlier)的数量可以用作匹配质量的指示。例如,在DSF匹配的情况下,内围层的数量反映了在接收到的描述符信息和存储的/规范地图之间匹配的特征的数量。在另外的实施例中,可以通过计数每个集合中“匹配”的特征的数量来确定在该实施例中确定的内围层。
可以替代地或附加地以其他方式确定匹配质量的指示。在一些实施例中,例如,当计算变换以基于匹配特征的相对姿势使来自设备的可能包含多个特征的地图定位到规范地图时,针对多个匹配特征中的每一个计算的变换统计可以作为质量指示。例如,较大的差异可以表明匹配质量较差。替代地或附加地,对于确定的变换,系统可以计算具有匹配描述符的特征之间的平均误差。可以针对变换计算平均误差,反映位置失配的程度。均方误差是误差度量的具体示例。不管具体的误差度量如何,如果误差低于阈值,则可以确定变换可用于从设备接收的特征,并且计算的变换用于定位设备。替代地或附加地,内围层的数量还可用于确定是否存在与从设备接收到的描述符和/或设备的位置信息匹配的地图。
如上所述,在一些实施例中,设备可以发送多个特征集合用于定位。当至少阈值数量的特征集合与来自规范地图的特征集合以误差低于阈值和/或内围层数量高于阈值相匹配时,可以认为定位成功。该阈值数可以是例如三个特征集合。然而,应当理解,用于确定足够数量的特征集合是否具有合适值的阈值可以根据经验或以其他合适的方式来确定。同样,匹配过程的其他阈值或参数,例如被视为匹配的特征描述符之间的相似度、用于选择候选特征集合的内围层数、和/或失配误差的大小,可以类似地根据经验或以其他合适的方式确定。
一旦确定匹配,就识别与匹配的一个或多个规范地图相关联的持久地图特征集合。在匹配基于地图区域的实施例中,持久地图特征可以是匹配区域中的地图特征。持久地图特征可以是如上所述的持久姿势或PCF。在图36A至36C的示例中,持久地图特征是持久姿势。
不管持久地图特征的格式如何,每个持久地图特征可以具有相对于它所属的规范地图的预定取向。该相对取向可以应用于计算的变换,以使来自设备的特征集合与来自规范地图的特征集合对齐,从而确定来自设备的特征集合与持久地图特征之间的变换。任何调整,例如可能来自校准数据的调整,都可以应用于该计算的变换。得到的变换可以是设备的本地坐标框架和持久地图特征之间的变换。该计算可以针对匹配地图区域的每个持久地图特征执行,并且可以将结果存储在表中,在6326中表示为持久_姿势_表(persistent_pose_table)。
在一个示例中,框6326返回持久姿势变换、规范地图标识符和内围层数的表。根据一些实施例,规范地图ID是用于唯一标识规范地图和规范地图版本(或地图的区域,在定位基于地图区域的实施例中)的标识符。
在各种实施例中,在6328,计算的定位数据可用于填充由定位服务维护的定位统计和遥感。该信息可以针对每个设备存储,并且可以针对每次定位尝试进行更新,并且可以当设备的会话结束时清除。例如,设备匹配过的地图可用于改进地图排名操作。例如,覆盖设备先前匹配的相同区域的地图可以在排名中被优先考虑。同样,覆盖相邻区域的地图可能比更偏远的区域被赋予更高的优先级。此外,可能基于检测到的设备随时间的轨迹对相邻地图进行优先级排序,其中在运动方向上的地图区域被赋予比其他地图区域更高的优先级。定位服务可以使用该信息,例如,根据来自设备的后续定位请求来限制在存储的规范地图中针对候选特征集合搜索的地图或地图区域。如果在该有限区域中识别出具有低误差度量和/或大量或大百分比的内围层的匹配,则可以避免处理该区域外部的地图。
过程6300可以继续从云(例如,6354)到用户设备(例如,6352)的信息传送。根据一个实施例,在6330,将持久姿势表和规范地图标识符传送给用户设备。在一个示例中,持久姿势表可以由至少包括识别持久姿势ID的字符串(string)和使该设备的跟踪地图与持久姿势进行链接的变换的元素构成。在持久地图特征是PCF的实施例中,该表可以替代地指示对匹配地图的PCF的变换。
如果在6336处定位失败,则过程6300通过调整可以增加从设备发送到定位服务的数据量的参数来继续,以增加定位成功的机会。例如,当在规范地图中找不到具有超过阈值数量的相似描述符的特征集合时,或者当与所有变换的候选特征集合相关联的误差度量高于阈值时,可以指示失败。作为可以调整的参数的示例,描述符缓冲器的尺寸约束可以增加(6319)。例如,在描述符缓冲器尺寸为5的情况下,定位失败可以触发增加到从至少六个图像帧中提取的至少六个特征集合。在一些实施例中,过程6300可以包括描述符缓冲器增量值。在一个示例中,增量值可用于控制缓冲器尺寸的增加速率,例如,响应于定位失败。其他参数,例如控制定位请求速率的参数,可以在未能找到匹配的规范地图时更改。
在一些实施例中,6300的执行可以在6340处生成错误条件,其包括定位请求未能工作而不是返回不匹配结果的执行。例如,由于网络错误导致保存规范地图数据库的存储对于执行定位服务的服务器不可用,或接收到的针对定位服务的请求包含不正确格式信息,可能会发生错误。在错误条件的情况下,在该示例中,过程6300在6342处调度请求的重试。
当定位请求成功时,响应于失败而调整的任何参数可以被重置。在6332,过程6300可以继续操作以将频率参数重置为任何默认值或基线。在一些实施例中,无论任何改变如何都执行6332,从而确保始终建立基线频率。
在6334,设备可以使用接收到的信息来更新高速缓存定位快照。根据各种实施例,相应的变换、规范地图标识符、和其他定位数据可以由设备存储,并用于将相对于规范地图指定的位置,或者例如持久姿势或PCF的它们的持久地图特征,与由设备相对于其本地坐标框架而确定的位置(这些位置诸如可以根据其跟踪地图来确定)进行相关。
用于在云中定位的过程的各种实施例可以实施任何一个或多个前述步骤并且基于前述架构。其他实施例可以组合前述步骤中的各种一个或多个,同时、并行或以另一顺序执行步骤。
根据一些实施例,在交叉现实体验的上下文中的云中的定位服务可以包括附加功能。例如,可以执行规范地图缓存来解决连接问题。在一些实施例中,设备可以周期性地下载和缓存它已经定位到的规范地图。如果云中的定位服务不可用,则设备可以自己运行定位(例如,如上所述——包括关于图23)。在其他实施例中,从定位请求返回的变换可以被链接在一起并应用于后续会话。例如,设备可以缓存一系列变换并使用变换序列来建立定位。
系统的各种实施例可以使用定位操作的结果来更新变换信息。例如,定位服务和/或设备可以被配置为将跟踪地图上的状态信息维护到规范地图变换。接收到的变换可以随时间平均。根据一个实施例,可以将平均操作限制为在阈值数量的定位成功(例如,三、四、五或更多次)之后发生。在进一步的实施例中,可以在云中跟踪其他状态信息,例如通过可通行世界模块。在一个示例中,状态信息可以包括设备标识符、跟踪地图ID、规范地图参考(例如,版本和ID)、以及规范地图到跟踪地图的变换。在一些示例中,系统可以使用状态信息来不断更新并获得更准确的规范地图,以采用每次执行基于云的定位功能来跟踪地图变换。
对基于云定位的附加增强可以包括向设备传送特征集合中与规范地图中的特征不匹配的异常值(outlier)。设备可以使用该信息例如来改进其跟踪地图,诸如通过从用于构建其跟踪地图的特征集合中移除异常值。替代地或附加地,来自定位服务的信息可以使设备能够将针对其跟踪地图的光束平差(bundle adjustment)限制为基于内围层特征的计算调整或以其他方式对光束平差过程施加约束。
根据另一个实施例,各种子过程或附加操作可以结合针对基于云定位所讨论的过程和/或步骤和/或作为针对基于云定位所讨论的过程和/或步骤的替代来使用。例如,候选地图识别可以包括基于与相应地图一起存储的区域标识符和/或区域属性来访问规范地图。
无线指纹辅助定位
不管定位是在定位服务(例如其可以存储规范地图集)中还是在设备(例如其可以接收用于定位的规范地图集)上执行的,定位过程可以通过有效地过滤可以针对其尝试定位的规范地图的世界而更有效。在一些实施例中,诸如无线指纹之类的描述物理世界的相对较小区域的位置元数据可以与由便携式设备获取的关于物理世界的信息相关联,并且可以与可以针对其尝试定位的规范地图一起存储。基于无线指纹与便携式设备捕获的信息的相似度来选择地图或地图的一部分可以简化定位过程。
可以根据在物理世界的相对较小区域中接收的无线信号的特性来构建无线指纹。在本文描述的示例性实施例中,WiFi信号被用作无线信号的示例。具体而言,BSSID和RSSI是接收到的无线信号的特性的示例。然而,在其他实施例中,来自无线网络接入点或其他无线通信的信号的其他特性替代地或附加地用于形成签名。在一些实施例中,GPS和/或蓝牙信标可以单独或与WiFi信号组合地用于形成无线指纹。
此外,在本文描述的一些示例性实施例中,无线指纹与持久姿势相关联,持久姿势是关于由便携式设备捕获的物理世界的持久信息的示例。通过处理在便携式设备上捕获的图像信息来识别持久姿势,以检测指示物理世界中什么可能是持久内容的特征集群。然后将持久姿势集成到跟踪地图中。例如,持久姿势分布在整个跟踪地图中,其间隔对应于物理世界中的2到4米的距离。跟踪地图可以被分割成图块,每个图块包含一个持久姿势。
规范地图中的持久坐标系(PCF)是设备可以针对其定位的持久信息的示例。PCF可能附有无线签名。如上所述,规范地图可以从跟踪地图形成,例如使用如上所述的地图合并过程。在将跟踪地图提升或合并到规范地图中时,可以从跟踪地图的一个或多个持久姿势创建PCF。
图37到图41示出了根据一些实施例的便携式设备生成包含WiFi指纹的跟踪地图以用于WiFi辅助定位或其他功能的示例。
在图37中,具有便携式设备的用户6402示出在包含无线网络接入点6404a到6404e的三维(3D)环境中。在一些实施例中,用户6402的便携式设备可以从附近的网络接入点接收信号,例如如图37所示的网络接入点6404a、6404b和6404c。便携式设备上的无线硬件可以确定网络接入点标识符和针对检测到信号的每个网络接入点的信号强度指示值。例如,无线芯片组可以被配置为执行可用无线网络的扫描。可以启动该扫描功能以获得如本文所述的无线信息。
在一些实施例中,网络接入点标识符可以是基本服务集标识符(BSSID)并且信号强度指示值可以是接收到的信号强度指示(RSSI)值。在一些实施例中,除了或代替网络接入点标识符和信号强度指示符,可以收集关于网络接入点的其他信息。在一些实施例中,网络接入点信息可用于形成WiFi指纹。
网络接入点信息6406可以与地图6412的图块6410中的持久位置信息6408相关联地存储。例如,持久姿势可以作为数据结构通过网络存储在便携式设备内的或连接到便携式设备的非易失性存储器中。例如,无线信息可以存储为该数据结构中的BSSID、RSSI元组的列表。在一些实施例中,持久位置信息6408可以包括如上所述的持久坐标系或持久姿势。在37图的示例中,持久位置信息6408是持久姿势,并且在捕获无线信号时被选为最接近用户6402的持久姿势。在此上下文中,最接近的持久姿势是基于用户与关联于持久姿势的特征的3D环境中的位置之间的距离所确定的姿势,尽管可以使用其他方法。
在一些实施例中,持久位置信息6408可以包括关于便携式设备在3D环境中的定位、位置或取向的其他信息。在一些实施例中,多条位置信息和相关联的网络接入点信息可以存储在单个图块内。例如,可以在便携式设备构建跟踪地图时捕获无线信息,从而可以在创建新的持久姿势时捕获和存储无线信息。
图38示出了用户6402在3D环境中移动。在所示示例中,用户6402的便携式设备从相同的无线网络接入点6404a、6404b和6404c接收信号,但是由于便携式设备与无线网络接入点6404a-6404e之间的接近度的变化而获得与这些无线网络接入点相关联的新信号强度值。在此示例中,用户的位置已使得用户进入尚未在跟踪地图中映射的空间,从而创建新的持久姿势。在一些实施例中,新的持久姿势可以定义用于跟踪地图的新图块。在一些实施例中,图块的网格可以是预定义的(例如,相对于其他图块的固定尺寸和形状)但可能不包含数据(例如,如果在用户进入该图块之前该区域之前没有被映射,并且在一些实施例中,创建持久姿势和/或PCF。新的网络接入点信息6506可以与新的持久位置信息6508一起存储在所示的地图6412的新图块6510中。在一些实施例中,可以创建新图块6510,例如,因为便携式设备自从先前图块创建以来移动的距离超过了阈值。
图39示出了用户6402在3D环境中进一步移动。在该示例中,用户6402的便携式设备从无线网络接入点6404a、6404b、6404c和6404d接收信号。如结合图37和图38所讨论的,网络接入点信息6606和持久位置信息6608可以存储在地图6412的图块6610中。
与持久姿势相关联的无线信息,如图37、图38和图39所示,可以是该图块的初始无线签名。在一些实施例中,图块的无线签名可以随着用户设备继续操作和收集更多无线信息而被细化。
在图40中,用户6402被示出在3D环境6102内的与图39中相同的位置。在一些实施例中,这可以在用户在相同位置停留一段时间时发生。例如,图块可以对应于2到4平方米之间的区域,并且可以大约每20到60秒执行一次无线扫描。因此,用户在扫描之间的时间里通常可能不会移动足够远以从一个图块移动到另一个单元。替代地或附加地,这可能在用户移动到别处之后返回到相同位置时发生。在所示示例中,用户6402的便携式设备从相同的无线网络接入点6404a-6404d接收信号并获得新的网络接入点信息。
然而,尽管用户在同一图块中,但新的网络接入点信息可能不同于先前存储在图块6610(例如图39中的6606)中的网络接入点信息。当执行不同的无线扫描时,用户与一个图块在不同的位置可能会导致变化。替代地或附加地,变化可能由无线信号的传播条件的变化、无线接入点的变化或其他原因引起。通过将新的无线信息与先前收集的信息合并,无线信息可以更稳定,因此更有效作为无线签名,以便与其他无线签名进行比较。
在所示示例中,新的网络接入点信息与先前存储的网络接入点信息合并以产生合并的网络接入点信息6706,其可以与相同的持久位置信息6608存储在相同的图块6610中。在所示实施例中,先前存储的信息被合并信息替换,从而与每个持久姿势相关联存储的无线信息反映了最新的无线扫描。
在一些实施例中,产生合并的网络接入点信息可以包括对与接入点标识符相关联的新信号强度指示符和先前存储的信号强度指示符取平均。例如,可以将平均计算为滚动平均。产生合并的网络接入点信息可以替代地或附加地包括用新的网络接入点信息中的一些、全部一些存储的网络接入点信息、或不替换一些存储的网络接入点信息。在所示示例中,在合并的网络接入点信息6706中以粗体指示的RSSI值表示先前存储的网络接入点信息6606中的RSSI值和从网络接入点获得的新RSSI值的平均。
其他处理可以替代地或附加地用于提高无线签名的稳定性或以其他方式格式化信息以有效地比较无线签名。图41示出了用户6402在3D环境中进一步移动。在所示示例中,便携式设备不再在无线网络接入点6404a的范围内,而是从网络接入点6404b、6404c、6404d和6404e接收信号。在一些实施例中,由便携式设备收集的网络接入点信息可以在被存储之前被过滤。
在图41的示例中,当便携式设备在图块6810内时从无线网络接入点6404b-e收集的网络接入点信息6806被示为新的网络接入点信息6807。可以在存储之前对信息6807进行过滤。例如,可以基于信号强度过滤新的网络接入点信息。在一些实施例中,网络接入点的类型或包括网络接入点信息的其他信息可以是用于过滤的标准。在图41中,由于低信号强度值而要被过滤的接入点标识符的示例在网络接入点信息6807中以粗体显示。在该示例中,新网络接入点信息6807中与无线网络接入点6404e相关联的RSSI值3低于阈值并被过滤掉。因此,无线网络接入点6404e的BSSID没有出现在网络接入点信息6806中。
不管如何使用无线签名,如本文所述的技术可以导致有效地生成可以以低延迟可用的无线签名。图42是说明根据一些实施例的这种过程的流程图。在一些实施例中,结合图42描述的处理可以在便携式设备上执行,但是可以替代地或附加地通过网络在连接到便携式设备的一个或多个处理器或系统的其他处理器上执行。动作7102到7108由创建地图的便携式设备执行,而其他所示动作可以由例如远程计算设备执行,例如服务器或包括采用云配置的多个计算设备的计算设备。
在动作7102中,便携式设备在其在3D环境内的位置处获得网络接入点信息。该动作可以包括获得便携式设备从其接收信号的网络接入点的BSSID和对应的RSSI值。在一些实施例中,可以收集其他网络接入点信息,例如网络接入点的名称或类型。该信息可以在针对WiFi而配备的便携式设备上通过该设备上的WiFi芯片执行的扫描来获取。扫描可以由下面结合元素7112更详细地讨论的任何一个或多个条件触发。
在动作7104中,便携式设备可以可选地过滤和处理在动作7102中收集的网络接入点信息。过滤或处理动作可以包括丢弃网络接入点信息。例如,可以基于相应的信号强度值或基于BSSID的排除标准来过滤BSSID。例如,排除标准可以基于例如BSSID名称。可以排除包含术语“电话”或其他暗示便携式接入点的其他术语的名称。类似地,可以排除无法发现的接入点,具有任何其他特性的接入点也可以被排除,这些其他特性可以指示在相同空间中操作的另一个设备可能无法检测到的接入点。在一些实施例中,过滤步骤7104可以过滤除预定数量的接入点信息之外的所有接入点信息。例如,除了具有最高信号强度值的三个BSSID之外,所有的BSSID都可以从网络接入点信息中滤除。
可以附加地或替代地采用处理网络接入点信息的其他方法,例如规范化网络接入点信息或以不同格式表达网络接入点信息以供进一步处理或传输。
在动作7106中,选择持久点来表示便携式设备的位置。在一些实施例中,已选择的持久点可以是在便携式设备定位到的地图中相对于便携式设备最靠近的持久姿势或PCF。替代地或附加地,已选择的持久点可以是表示便携式设备的位置的其他信息。
然而,在图42的示例中,持久点可以是设备的跟踪地图中的持久姿势。在动作7108a中,在一些实施例中,如果还没有针对便携式设备的当前位置存储数据,则可以将新图块添加到跟踪地图。在其他实施例中,可以创建空图块并且可以将新的持久点和对应的数据添加到空图块。新图块可以包括动作7106的持久点,以及动作7104和7102的网络接入点信息。
替代地,在动作7108b中,动作7104和7102的网络接入点信息可以与已经与跟踪地图中的图块相关联的网络接入点信息合并。在一些实施例中,这可以包括对与网络接入点信息中的对应的BSSID相关联的RSSI值进行平均。在一些实施例中,这替代地或附加地包括用新的网络接入点信息替换已存储的网络接入点信息,或者相反,保留所存储的网络接入点信息并丢弃新的网络接入点信息。新的网络接入点信息可能会被丢弃而不是合并,例如,如果它不符合某些质量标准,例如它与先前收集的信息有很大的偏差,或者所有网络接入点的RSSI值都非常低,这表明可能接收问题。
在动作7108a或7108b中已经存储数据之后,便携式设备可以不采取关于形成无线指纹的进一步动作,直到触发新的网络接入点扫描。触发新扫描的示例标准在动作7110a到7110c中示出。如图所示,可以基于自上次扫描以来便携式设备行进的距离超过阈值来触发新的扫描(7110c)。行进的距离可以由设备的硬件和/或软件部件确定。例如,该设备可以包括提供定位或位置的指示的IMU或GPS硬件,该指示可用于确定何时已经行进了阈值距离。替代地或附加地,从一系列捕获的图像形成跟踪地图的设备可以基于设备在地图内的相对位置来确定行进的距离。
在其他示例中,新扫描可以通过自前一次扫描以来经过的时间量来触发(7110b)。例如,如果在超过阈值时间量(例如可能是20秒或60秒或20秒到60秒范围内的任何值)内未执行扫描,则可以触发扫描。
在其他示例中,网络接入点中的更新,例如BSSID改变,可以触发新的扫描(7110a)和/或可以触发无线硬件发送扫描结果。
尽管这些动作不需要在便携式设备上发生,但应该理解的是,在一些实施例中,便携式设备本身可以根据动作7110a、7110b或7110c触发新的扫描。除了图42中所示的原因之外,还可以出于其他原因自动触发扫描。例如,在设备上执行的其他部件可以出于与维护无线签名无关的原因命令无线芯片组执行扫描。在一些实施例中,每当执行扫描时,无线部件可以输出扫描数据可用的指示,然后可以将其用于更新无线签名,从而可以在没有构成无线指纹的来自设备部件的明确请求的情况下从硬件推送关于无线网络接入点的信息。
不管触发扫描的具体机制如何,在动作7112中,都会触发新的网络扫描。该过程然后进行到动作7102,如上所述。
应当理解,本小节中描述的技术可以与这里描述的其他技术结合使用。例如,本小节中描述的定位过程中涉及的地图可以经历结合图25描述的过滤过程。如图25所示,过滤过程可以包括邻域过滤器、WiFi指纹过滤器、关键帧过滤器,或本申请中描述的任何其他过滤器。如图25中进一步所示,定位过程可以在过滤过程之后。在一些实施例中,该定位过程可以利用网络接入点比较技术来进行本小节中描述的定位。
此外,应当理解,无线指纹可以用于比较地图或选择表示物理世界中的特定位置的地图,而不管所选地图的使用。本节中描述的技术不限于在定位过程中使用。例如,无线指纹可以用作如上所述的地图排名过程的一部分。替代地或附加地,无线指纹可用于选择表示相同或重叠区域的地图以用于地图合并,同样如上所述。
地理位置增强的地图排名和定位
如本文所讨论的,定位是确定一个地图与另一地图之间的变换的过程。例如,可以将交叉现实设备的本地地图定位到规范地图,使得关于虚拟内容在规范地图坐标系中的位置的信息可以与交叉现实设备相关联并由其渲染。定位可以在设备上执行(例如,它可以接收一组规范地图用于定位),或者由远程定位服务(例如,它可以存储一组规范地图)执行。在任一实施方式中,定位可能需要搜索在本地地图和规范地图中的特征组之间的匹配,这可能是计算密集型的。
通过基于位置元数据过滤可以尝试定位的规范地图的全域,可以使定位过程更有效。位置元数据可以与规范地图一起收集和存储,并且还可以与从便携式设备发送的位置信息相关联。在各种实施例中,位置元数据可以包括从便携式设备的组件(例如,GPS坐标)、WiFi指纹和/或关于先前定位结果的信息导出的地理位置数据。在一些实施例中,可用的位置元数据将从设备到设备变化,并且还可以基于连接性、干扰、当前位置以及其他选项而变化。在一些实施例中,选择用于定位尝试的地图子集的组件可以基于可用的位置元数据确定要应用哪些过滤标准。
用于选择一组候选地图用于比较的类似方法也可以结合地图排名或其他预处理来使用,以在合并过程之前选择一组规范地图。地图合并类似地需要将来自设备的位置信息与一组地图进行比较,以尝试标识对应的部分。在这种情况下,来自便携式设备的位置信息可以以跟踪地图的形式。尽管如此,通过使用位置元数据来减少在这样的比较中使用的候选地图的数量,跟踪地图中的位置信息与一组地图的比较可能类似地更有效。
各种实施例利用可用的位置元数据来过滤存储的规范地图,使得可以分析过滤的一组地图以将一个或多个规范地图与来自本地设备的位置信息匹配。例如,各种实施例可以使用地理位置数据来过滤规范地图并限制在定位期间匹配的计算负担和/或改进所得匹配的准确度。其他实施例可以优先化位置元数据的类型并将层次结构应用于可用位置元数据以改进定位。例如,位置元数据可以包括关于先前定位、地理位置和/或WiFi指纹的信息,并且系统可以将具有先前定位信息的操作优先于其他类型的位置元数据。在其他实施例中,优先化可以包括非优先化位置元数据类型的排除或不同加权。
图43是可以作为利用位置元数据的本地或远程定位的一部分来执行的示例过程7400。触发定位的事件未在图43中示出,但是该过程可以响应于触发如本文其他地方所描述的定位的事件来执行。进一步地,尽管在图43中未明确示出,但是其他处理可以在图43中示出的动作之前或之后。例如,类似于关于过程6200所讨论的方法,过程7400可以可选地在用于设备的新会话操作之前(例如,图35的6202-6206)。
可以在位置元数据已经与用于定位的地图全域中的一些或所有规范地图相关联之后执行过程7400。在一些实施例中,位置元数据可以在设备与XR平台交互时被添加到规范地图,使得地图和相关联的位置元数据作为定位、地图合并操作和/或地图选择操作的一部分来开发、更新和/或创建,如本文所讨论的。
过程7400可以在7402处开始,其中接收到将设备定位到存储地图的请求,该存储地图可以是一组规范地图中的地图。在所示示例中,可以对云中的定位服务执行过程7400,并且可以通过广域网从便携式设备接收定位请求。然而,定位服务可以全部或部分地在便携式设备上执行,或者全部或部分地在其他计算设备上执行。
定位请求可以基于用于要定位的便携式电子设备的本地坐标系中的位置信息。根据一些实施例,定位请求还可以标识由便携式设备或为便携式设备生成、存储或捕获的位置元数据。该设备可以执行本文所讨论的任何地图构建和/或环境信息收集功能来获取该元数据。位置元数据可以与定位请求一起包括。替代地或附加地,位置元数据可以由定位服务维护或可供定位服务访问,并且定位服务可以基于请求中的信息来访问位置元数据。例如,定位服务可以存储关于每个活动设备的信息,包括其基于先前定位的位置,并且可以基于定位请求中的设备标识符来访问该信息。
通过使位置元数据可用于结合处理定位请求使用,交叉现实平台可以将位置元数据合并到定位优化中。进一步地,平台可以基于与定位请求通信的位置元数据将位置元数据建立到规范地图中。根据各种实施例,交叉现实平台还可以创建、维护和/或更新将规范地图链接到某些位置元数据(诸如地理位置信息)的地理位置数据库。这样的数据库可以使候选地图的选择非常高效,因为可以参考地理位置数据库来快速标识候选存储地图以用于处理包含位置元数据的请求。
在各种实施例中,请求可以包括聚集在设备的3D环境中捕获的位置信息(例如,持久位置信息、持久姿势、和/或特征描述符等)并将位置信息与位置元数据组合的专用数据结构的一个或多个副本。在一些示例中,使用姿势特征装配(“PFR”)作为用于聚合来自设备3D环境的位置信息和位置元数据的专用数据结构。PFR可包括姿势特征描述符,诸如上文结合图36A至36C所描述的姿势特征描述符,其提供位置信息。与姿势特征的物理世界位置相关联的一条或多条位置元数据可以与姿势特征描述符相关联地存储。位置元数据可包括例如无线指纹、可以表示为GPS坐标或地理散列值的地理位置信息,或关于先前成功定位的信息。元数据可以针对产生由位置信息表示的特征的图像被捕获的位置导出。例如,姿势特征可以与用于便携式设备的跟踪地图中的持久姿势相关联,并且无线指纹可以是与跟踪地图的持久姿势一起存储的无线指纹。作为另一示例,位置元数据可以是通过调用设备的操作系统的API所获得的地理位置信息,并且该值可以是在处理从其提取特征的图像帧时读取的值。PFR可替代地或附加地包括本文所描述的任何信息,如与定位请求一起发送和/或用于定位。
如本文所描述的,便携式设备可以缓冲多个这样的数据结构,这些数据结构以周期性间隔或响应于事件来收集,使得它们可以作为定位请求的一部分一起处理。例如,这样做增加了至少一个这样的数据结构将与规范地图匹配的可能性和/或增加了可以计算设备位置的准确度。在一些实施例中,这样的缓冲可以类似地结合位置元数据已被关联的位置信息来应用,并且在动作7402处的请求可以包括多个PFR。
不管用于定位的请求的确切结构如何,都可以选择一组候选地图。在该示例中,过程7400包括用于从地图全域中选择作为用于尝试定位的候选地图的较小地图集的子过程7450。子过程7450尽管结合定位进行了描述,但是也可以用作地图排名过程或地图合并过程的一部分。如果用于其他过程,则接收到的位置信息可以不同地格式化。例如,不是PFR,用于地图合并的位置信息可以被格式化为跟踪地图。
在动作7404处,确定定位提示是否可供使用。提示可以基于与请求相关联的位置元数据,并且可以通过从规范地图的全域中找到具有相同或足够相似的位置元数据的规范地图来生成,以期望选择的候选地图表示与由定位请求中的位置信息定义的位置重叠的区域。在一些实施例中,定位提示可以是或可以从先前成功的定位信息、WiFi指纹数据、地理位置数据、和/或GPS数据中导出。在各种示例中,如果可以将任何位置元数据与与存储的地图相关联的可用位置元数据进行比较,则它可以用作定位提示。
根据各种实施例,如果定位提示不可用,7404否,则子过程7450可以在7408处继续,其中基于地图的内容过滤可用的规范地图,如上文所讨论的。如果定位提示不可用,7404否,则定位处理可以以与关于图35和过程6200所讨论的类似方式继续。
如果可以使用定位提示,7404是,则子过程7450继续在7406处解析定位提示优先级。在多于一种类型的位置元数据可用的场景中,解析优先级可以确定哪种类型可能最有效地标识表示便携式设备的位置的候选地图。在一些实施例中,与先前成功定位相关联的信息可被给定最高优先级。在各种实施方式中,相对于其他位置元数据,在由最近的先前成功定位确定的位置中选择候选地图可以提供标识将包含便携式设备的当前位置的候选地图的最高可能性。在进一步的示例中,如果在当前请求和先前成功定位之间已经过去了太多时间,则可以忽略先前成功定位或者相对于其他类型的位置元数据给定低的优先级。另外,或者在替代方案中,如果确定请求设备已经从先前位置移动了太远的距离,则可以忽略或打折先前成功定位。根据一些实施例,关于先前成功定位的信息由设备捕获并且包括在用于定位的请求中(例如,作为任何专用数据结构(例如,PFR)的一部分)和/或与数据结构分开传递。在一些示例中,请求设备可以管理先前成功的定位信息的无效,并且如果无效,则这样的信息可能不作为定位请求的一部分被传递。
根据一些实施例,设备可以被配置为在一些场景中抑制先前定位信息的发送,诸如如果设备在成功定位之后移动了阈值距离和/或如果已经过去了阈值时间量。如果先前定位信息不可用,则在动作7404处解析优先级可能导致选择另一种类型的提示或在没有提示的情况下继续进行。在该示例中,该过程可以在基于无线指纹或地理位置数据的提示之间进行选择。例如,无线指纹可以由便携式设备收集,其中在该设备上执行的应用可以访问设备硬件,诸如Wi-Fi芯片集。替代地或附加地,地理位置数据可以由在设备上执行的应用经由由设备上的操作系统提供的API来获得。在那种情况下,操作系统实用程序可以访问设备硬件,包括例如设备上的GPS芯片集,以生成地理位置信息。
尽管在图43的示例中未示出,但是在优先化过程中可以考虑位置元数据的不同或附加源。例如,如果在设备上执行的应用可以直接访问GPS芯片集,则可以直接使用来自芯片集的GPS数据来获得用于选择候选地图的过程的提示。而且,虽然未示出,该选择可以基于除了元数据的类型之外的信息。例如,在GPS数据可用的情况下,其优先级可以基于位置信息。当其他数据指示便携式设备在室外操作时,GPS数据可以给定优于Wi-Fi签名的优先级,即使两者都可用,而当其他数据指示便携式设备在室内操作时,Wi-Fi签名可以给定优先级。进一步地,虽然过程7400被示出为仅选择一种类型的提示,但是在一些实施例中,当多种类型的元数据可用于在地图选择过程中生成提示时,元数据的类型可以结合地或分离地用于选择一组候选地图。
不管在动作7406处选择的提示类型如何,子过程7450可以继续到动作7408以基于所选择的位置元数据来过滤地图的全域。例如,地图全域可以是由定位服务维护的规范地图的数据库。在其他实施例中,在7408处的过滤可以针对一组已经过滤的地图来执行。在那个意义上,过程7400中的地图全域表示地图的集合,它是如图43所示的用于处理的起点。
如果在地图选择过程中选择了先前成功的定位信息用于生成提示,则子过程7450可以在7408处将可用规范地图过滤为可能与设备的本地地图匹配的地图之前使用该位置。7408处的过滤操作可以基于与先前成功定位中标识的位置的接近度将规范地图的全域限制为可能的候选。例如,先前的定位可能已经导致规范地图中的持久坐标系之间的变换。可以选择该规范地图作为候选地图。在数据库中的规范地图具有与其相关联的位置信息的情况下,描绘可以被确定为表示地图中先前定位成功的位置附近的物理世界区域的位置的其他地图也可以包括在候选地图组中。
类似地,如果基于规范地图的片段(诸如一个或多个图块)执行定位,则由先前成功的定位提供的提示可以指导一个或多个这样的片段的选择。
如果先前定位信息不可用、打折和/或忽略,则提示优先级可能导致选择WiFi指纹作为具有下一个最高优先级的位置元数据。例如,用于定位的请求可包括WiFi指纹信息,并且WiFi指纹信息可用于在7408处过滤规范地图的全域和/或进一步过滤一组规范地图。
基于这样的无线指纹元数据选择候选地图可以是如本文其他地方所描述的。替代地或附加地,可以基于所应用的位置提示来修改如本文所描述的地图选择技术。作为这样的修改的示例,每种类型的位置元数据可以具有与其相关联的准确度。位置先验具有与便携式设备自先前位置被确定以来移动的可能性相关联的不确定性。可能是来自操作系统的地理位置数据的起源的GPS可能具有准确度,例如对于在室外操作的设备为10英尺或在设备在室内操作时为50英尺。不管不确定性的来源如何,候选地图(或地图的片段)可以基于它们与由提示所指示的位置周围的不确定性的区域内的位置的接近度来选择。因此,在一些实施例中,所选择的候选地图组中的地图或地图片段的数量可以根据用于提示的位置元数据的准确度而变化。
在位置先验和WiFi指纹信息不可用或未使用的场景中,来自设备操作系统的地理位置信息可用于提供定位提示。例如,过程7400可以基于确定仅地理位置数据可用于给定请求而在7406处进行,并且基于在7408处与用于定位的请求一起接收到的地理位置信息来执行对规范地图组的过滤。
说明性实施例基于用于位置元数据的相对优先级,其将有效的先前位置信息优先于WiFi签名,而WiFi签名进而优先于从设备操作系统获得的地理位置数据。可以基于对定位和/或地图合并的效率的影响来凭经验确定这样的优先化方案。在其他实施例中,可以应用其他优先化方案,诸如例如因为其他位置元数据可用和/或可用位置元数据具有不同的准确度。
根据一些实施例,可以维护与规范地图相关联的位置元数据,用于基于与定位请求相关联的位置元数据来过滤规范地图用于可能的候选地图。元数据可以以促进快速选择规范地图的方式存储。例如,一种或多种类型的位置元数据可以被转换为地理散列值并存储用于与规范地图相关联的相应位置。在各种实施例中,地理散列值可以为位置元数据的候选地图的全域提供快速可搜索的索引,位置元数据可以类似地转换为地理散列值。对于先前确定的位置,该位置可以表示为地理散列值或世界坐标,诸如纬度和经度,可以容易地对其进行散列以创建地理散列。地理位置信息也可以以可以容易散列的格式提供。诸如无线签名的其他元数据可以被转换为地理散列,诸如使用在无线接入点标识符和相关联的地理位置的数据库中的查找。
在这样的索引可用并且与定位请求相关联的位置元数据可以被转换为地理散列的实施例中,可以执行对地理散列值的索引的搜索。来自地理散列查询的搜索结果提供了一组候选规范地图。在进一步处理之前,可以进一步过滤(例如,在7408处)和/或分析该组规范地图。在一些实施例中,还可以在执行地理散列查询之前或之后根据不同的标准过滤一组地图。例如,地图id、区域id等也可以用于进一步过滤或预过滤地图组,并且例如,然后可以基于地理散列值查询预过滤的地图组。
在另一示例中,地理散列查询可用于标识相应地图内的位置,并且还可提供规范地图内的候选区域。在一个示例中,候选区域可以由地图内的图块指定。在一些实施例中,地图可以被分割成图块,如上文所讨论的,并且每个图块可包含持久位置信息(例如,持久姿势和/或持久坐标系等)。
对于不能容易地转换为地理散列的位置元数据,可以采用其他比较技术从规范地图的全域中选择具有与定位请求提供的位置元数据值类似的位置元数据值的规范地图。例如,上文描述了基于Jaccard相似性的选择。在各种实施例中,可以执行过滤步骤的任何组合和过滤的任何顺序,以促进标识一个或多个地图内的在其上进行定位的区域和/或一组过滤的地图。
不管应用何种特定技术来选择候选地图组,处理可以进行到动作7410,其中尝试将与定位请求一起提供的位置信息与经过滤的规范地图组中的地图内的位置相匹配。在如图43所描述的位置信息被格式化为PFR的实施例中,定位处理可能需要计算将PFR中的一组特征点与候选地图组中的特征点簇相关联的变换。可以进行这样的搜索以有效且快速地获得定位结果,包括通过使用重力信息来约束搜索空间,如本文其他地方所述。
在标识导致PFR与候选地图中的特征组之间匹配具有可接受的误差水平的转换时,可以认为定位是成功的。诸如本文所描述的深度关键帧描述符的技术可用于促进在特征组之间找到匹配。本文描述了定位处理的各种实施例,诸如结合上文图20、46A-B和35,并且可以在过程7400中使用。
如果没有为与定位请求一起发送的PFR中的一个找到适合匹配的特征点组,则可以尝试利用PFR中的另一个中的特征进行定位。如果没有标识适合匹配的特征组,也可以采取其他动作,诸如扩展候选地图组。
如果对匹配特征组的搜索导致对匹配特征组的标识,则导致该匹配特征组的变换可以在动作7412处作为定位结果返回。该变换可以指示设备地图的所选坐标系与包含匹配特征组的存储地图的坐标系之间的对应关系。在一些实施例中,坐标系可以是持久坐标系(PCF)和/或持久姿势和/或跟踪地图或规范地图的原点。例如,所选择的设备坐标系可以是与设备的跟踪地图相关联的坐标系。被定位到的所存储地图的坐标系可以是作为7410中的搜索结果而选择的候选图块内的持久坐标系。这样的变换使得请求设备能够在其自己的坐标系中定位和/或显示虚拟内容,即使关于虚拟内容的信息已经与规范坐标系相关联地存储。一旦计算出变换,或者如果标识多于一个匹配的特征组导致生成多个变换,则可以在7412处将变换表传递到例如请求定位的设备。
在进一步的实施例中,过程7400的步骤可以组合,以不同的顺序执行,和/或一些步骤可以省略。关于示例位置元数据类型和优先级来描述过程7400的执行的讨论。在其他实施例中,可以采用附加的位置元数据来在过滤地图、选择图块等中使用,并且可以将不同的优先级分配给各种位置元数据或随着时间发展。
根据一些实施例,交叉现实平台可以被配置为从连接到它的相应设备捕获位置元数据。该位置元数据可以作为地图合并过程的一部分被捕获。便携式设备可以在它建立跟踪地图时获取用于其当前位置的位置元数据。因此,当跟踪地图被提供作为用于地图合并过程的输入时,位置元数据可以被并入合并地图中。替代地或附加地,响应于包括位置元数据的定位请求的成功定位可以提供位置元数据的替代或附加源用于包括在规范地图中。
图44示出了根据一些实施例的便携式设备生成包含用于定位提示或其他功能的位置元数据(例如,WiFi指纹、地理位置、GPS数据等)的跟踪地图的示例。在该示例中,如上文所描述的,WiFi指纹结合地理位置元数据示出。除了可能的其他类型的位置元数据之外,一些设备可能收集这两种类型的元数据。例如,设备可以从设备3D环境中的附加传感器或系统捕获位置元数据。在一些实施例中,设备可以连接到用户位置(例如,家庭、购物区、场地等)周围存在的附加位置元数据智能设备,并对其进行捕获。然而,在一些实施例中,单个设备可以收集WiFi指纹或其他地理位置数据。
在图44中,具有便携式设备的用户7502被示出在包含无线网络接入点7504a到7504e的三维(3D)环境中。便携式设备上的无线硬件可用于建立位置元数据,并且例如,为检测到信号的每个网络接入点确定网络接入点标识符和信号强度指示符值。在一些实施例中,可以基于设备上的GPS或类似传感器来确定设备的地理位置。替代地或附加地,在一些实施例中,无线接入数据也可以用于确定设备的地理位置,例如,可以用纬度和经度来表示GPS坐标。可以访问已知的GOOGLE地理位置API以从由设备可访问的无线信号获得地理位置信息。在各种实施例中,生成或捕获的地理位置信息可用于增强设备生成的其环境的地图。
如图44所示,网络接入点标识符可以是基本服务集标识符(BSSID),并且信号强度指示符值可以是接收的信号强度指示符(RSSI)值。在一些实施例中,可以使用网络接入点信息来形成WiFi指纹,诸如例如上文结合图37-41所描述的。在一些实施例中,除了或代替网络接入点标识符和信号强度指示符,可以收集关于网络接入点的其他信息。
位置元数据可以与跟踪地图的位置结合存储。例如,当用户设备处于对应于地图7512的图块7510的位置时,可以将位置元数据与该图块相关联地存储。相应的用户设备可以捕获和包括网络接入点信息,并且还可以捕获和包括地理位置数据7509。地理位置数据可以由设备上的GPS硬件、通过操作系统API或从另一来源(例如GOOGLE地理位置API)生成。在一些实施例中,地理位置数据可以存储为单独的地理位置数据结构,或者可以整合到与其他位置元数据相同的数据结构中。例如,当用户处于由图块7510表示的物理世界中的位置时,可以将用作无线指纹7506的无线信息与地图7512的图块7510相关联地存储。
位置元数据可以替代地或附加地与跟踪地图的其他组件结合存储。还可以为图块7510存储持久位置信息。定义持久位置的持久位置信息7508可以作为数据结构存储在便携式设备内或通过网络连接到便携式设备的非易失性存储器中。在一些示例中,位置元数据可以存储在该数据结构中或与该数据结构相关联。在一些实施例中,持久位置信息7508可以包括持久坐标系或持久姿势,如上文所描述的。在该示例中,以无线指纹7506和地理位置信息7509的形式的位置元数据可以存储在存储持久位置信息7508或链接到这样的数据结构的数据结构中。
在所示实施例中,每个图块存在一个持久位置,使得元数据可以与持久位置或图块相关联。在图块与持久位置之间不存在一对一关系的实施例中,位置元数据可以结合图块和/或持久位置一起存储。不同类型的位置元数据可以存储在相同或不同的数据结构中。例如,无线签名可以结合持久姿势一起存储,而地理位置信息可以结合图块一起存储。不管存储元数据的地图组件如何,当用户7502横穿现实世界中的空间,收集扩展跟踪地图7512的数据时,设备可以收集关于用户位置的数据,因为地图组件被添加到跟踪地图和/或在跟踪地图中更新。可以在便携式设备建立跟踪地图时捕获位置元数据,使得可以在创建新的持久姿势时捕获和存储无线信息和/或地理位置数据。当用户7502移动时,可以将图块7518添加到跟踪地图7512,使得用户的设备收集关于物理世界中的附加位置的信息。图块7518示出了与用户设备的运动相关联的新信号强度值以及产生的便携式设备与无线网络接入点7504a-7504e之间的接近度变化。对于图块7518,用户位置的变化已经使得用户进入跟踪地图中尚未映射的空间,使得创建新的持久姿势并存储新的持久姿势信息7516。如图所示,任何新的位置元数据,例如新的网络接入点信息7514和/或地理位置数据7517可以与新的持久位置信息7516一起存储在地图7512的新图块7518中。
图块7524示出了用户7502在3D环境内进一步移动的结果。在该示例中,用户7502的便携式设备接收来自无线网络接入点7504a、7504b、7504c和7504d的信号,并且捕获地理位置信息。新的网络接入点信息7520和/或地理位置数据7523可以与持久位置信息7522一起存储,或者可以结合地图7512的图块7524一起存储。
同样,进一步的运动可能导致向跟踪地图添加进一步的图块7530,具有附加的持久姿势信息7528和位置元数据,此处是网络接入点信息7526和地理位置信息7529。
根据一些实施例,可以在用户设备开发跟踪地图期间的不同时间处捕获位置元数据。对于跟踪地图的相同组件,可以在不同时间处捕获位置元数据。当用户保持在某个位置或在某个位置的某个距离内或稍后返回该位置时,可以收集用于地图组件的附加位置元数据,诸如持久姿势或图块。新的位置元数据可以与组件的先前存储的位置元数据聚合。在一些实施例中,例如,用于地理位置数据结构中的相应数据字段的数据值可以被平均、以范围表示、或合并,以及其他选项。通过将新的位置元数据与先前收集的信息合并,位置元数据可能更稳定,并且因此对于与其他位置元数据相比较更有效。
新的网络接入点信息可以与先前存储的网络接入点信息合并以产生合并的网络接入点信息,如上文所描述的。类似地,地理位置数据可以随着时间而被合并、被最新数据替换、和/或被平均,并且与响应于后续数据捕获的持久位置信息相关联地存储。
在一些实施例中,产生合并的位置元数据可以包括对捕获的信息进行平均。例如,平均可以计算为滚动平均。产生合并的位置元数据可替代地或附加地包括用新位置元数据中的一些、全部或没有来替换一些存储的位置元数据。
其他处理可替代地或附加地用于改进位置元数据的稳定性或以其他方式格式化信息用于改进定位操作。例如,上文描述了针对无线网络信息的过滤。类似地,可以过滤其他位置元数据。例如,还可以过滤地理位置数据7529。在一些实施例中,水平和垂直准确度值提供关于与GPS读数相关联的置信度和/或其相关联的准确度的信息。在准确度值太低的情况下,信息可能被丢弃而不存储或平均到先前存储的值中。替代地或附加地,在一些实施例中,可以基于相应的准确度对相同位置的元数据值的平均值进行加权。
一旦地图数据由便携式设备捕获,则收集的信息可用于将便携式设备定位到存储的或规范的地图。在图45的所示示例中,当用户设备在图块7606内时,发生定位请求。设备可以使用如上文所描述的技术,诸如处理图像或关于环境的其他信息,以确定其相对于跟踪地图中的位置的位置。为了生成定位请求,设备可以选择作为元数据,以与与设备已确定在其当前位置附近的持久位置相关联的请求元数据相关联。例如,元数据可以是与持久位置一起存储的元数据或与包含该持久位置的图块一起存储的元数据。
在该示例中,便携式设备地图7602中的图块7606的位置元数据7610类似于存储在存储的地图7604的图块7608中的位置元数据7612。基于该相似性,应用过程7400(图43)的子过程7450,地图7604可以被选择为候选地图。而且,图块7608可以被选择作为候选图块。定位尝试初始可能限于尝试将图块7606和7608相对于彼此进行定位。如果这些图块不能被定位,则可以在图块7606与其他图块之间尝试定位,诸如围绕图块7608的图块。可以以相似度的减少顺序来选择图块对。
在一些实施例中,位置元数据的相似度可以基于Jaccard相似性,如上文针对形成WiFi签名的无线网络信息所描述的。类似地,可以基于Jaccard相似度来确定地理位置元数据的相似度。可以采用其他算法和试探法用于比较与便携式设备相关联的位置元数据和存储的地图的位置元数据。例如,位置元数据可以映射到一维标识符,诸如地理散列,其使得能够基于该一维标识符的值的差异来确定两个位置之间的相对分离。
在一些实施例中,XR平台可以被配置为基于用于规范地图与跟踪地图中的多个位置的位置元数据之间的相似性来标识候选地图。然后可以基于具有匹配位置元数据信息的多个位置对地图进行排名。出于这样的比较的目的,如果元数据值的差异小于阈值量,则可以认为位置匹配。例如,当标识将跟踪地图合并到其中的候选地图时,可以使用这样的方法。
根据一些实施例,标识具有类似于跟踪地图的一部分的位置元数据的候选地图可以作为附加处理的初步步骤来完成,诸如合并地图和/或相对于共享坐标系定位便携式设备。根据一些实施例,便携式设备地图可以定位在存储的地图中,从通过位置元数据分析选择的一个或多个候选图块开始。至少结合上文图20详细描述了定位过程。应当理解,本小节中所描述的定位技术可以与本文所描述的用于定位的任何其他方法结合使用。
图46示出了交叉现实系统的示例架构7700,其可以向各种交叉现实设备和/或设备类型提供沉浸式体验,同时保持一致的可视化和体验,而不管正在使用的设备。
如图所示,各种交叉现实设备(例如,7702和7704)可以访问平台7750。在该示例中,平台7750可以是执行如本文所描述的功能的云平台,包括基于云的定位和地图合并。
一个或多个便携式设备可以与平台7750通信。那些设备可以提供关于它们的环境的信息以使得定位和/或使得平台7750能够构建和/或维护规范地图的数据库7712。虽然仅示出了两个设备,但是任意数量的交叉现实、AR、或其他便携式设备可以与交叉现实平台连接并参与生成的沉浸式体验。
根据一些实施例,不同的设备可以基于不同的能力而不同地与平台7750交互。不同的设备可以访问不同类型的位置元数据。例如,交叉现实平台的本机(native)设备(其可能包括MAGIC LEAP品牌设备(例如,设备7704))可以被配置为使得设备上控制增强现实功能的软件可以访问设备上的WiFi芯片集。这样的设备可以访问WiFi信息以生成WiFi指纹。然而,这样的设备可能没有GPS芯片集。相反,智能电话(例如iOS设备7702)可以阻止在设备上执行的软件访问其WiFi芯片集,但是可以通过地理位置API提供来自GPS芯片集的信息。因此,这样的设备在被编程为与平台7750交互时可以访问该地理位置信息。
在一些实施例中,与平台7750交互的设备可以注册以访问该平台,并且该注册的一部分可以包括标识设备类型或设备能力并建立什么功能将用于相应的设备。在一些实施例中,平台可以确定设备是否是或满足阈值要求(例如,MAGIC LEAP品牌设备的类似能力)或被分类为“ML”设备7704或被分类为“XR”设备7702。替代地或附加地,平台7750可以基于由设备提供的元数据的类型来确定对设备执行哪些功能。例如,如果设备提供其位置的GPS坐标,平台7750可以基于地理位置为该设备执行地图选择,而提供WiFi签名的设备的地图选择可以基于该元数据。
可以对访问平台7750的所有设备执行一些功能。例如,这两种类型的设备都可以收集和传递关于其本地环境的信息。在一些实施例中,设备可以构建跟踪地图并且可以基于跟踪地图传递关于它们的本地环境的信息。例如,设备可以被配置为作为定位关于设备的设备位置信息的请求的一部分进行通信,该信息可以以一个或多个PFR的形式,具有如上文所描述的位置元数据。一些或所有设备可以被配置为将跟踪地图发送到平台7750以支持平台上的地图合并功能。在图46的示例中,ML设备7704可以发送用于地图合并处理的跟踪地图,但XR设备7702不发送。
设备跟踪地图可以包括嵌入的位置元数据。在该示例中,位置元数据包括地理位置信息。在一些示例中,设备的本地地图或跟踪地图可包括与本地地图的持久位置相关联的地理位置信息,诸如本地地图中的持久姿势。其他位置元数据可以单独地和/或作为保持地理位置信息的数据结构的一部分来传递。例如,ML设备7704可以跟踪和发送WiFi签名作为与用于定位的请求和/或用于合并的跟踪地图相关传递的位置元数据的一部分。
在一些实施例中,平台7750可包括可通行世界模块7708,其可以执行如上文所描述的可通行世界模型的基于云的组件的一些或全部功能。在图46的示例中,可通行世界模块7708可被配置为与多个设备交互并管理相关联的功能的执行。可以至少部分地基于从设备接收的位置元数据来执行的一些示例功能包括管理(curation)现有地图以包括接收到的位置元数据、维护将位置元数据与规范地图和/或规范地图内的图块相关联的地理位置数据库(例如7714),以及地图选择和/或过滤,以及其他选项。
在该示例中,PW模块7708可以管理与便携式设备的交互用于定位和用于地图合并。在每种情况下,从便携式设备接收的信息可用于选择一组候选规范地图。一组规范地图的选择可以由地图选择模块7710执行。地图选择模块7710可以执行基于位置元数据的过滤过程,诸如子过程7450(图43)。对于定位,元数据可以与设备的当前位置相关联。对于地图合并,元数据可以与跟踪地图或跟踪地图的多个组件相关联。
因此,PW模块7708可以将接收到的位置和位置元数据传递给地图选择模块7710。根据各种实施例,地图选择模块7710可以被配置为过滤规范地图的全域以产生一组候选地图,该候选地图可能表示由位置元数据描述的物理世界的一部分。规范地图的全域可存储在任何适合的介质中,例如在存储7712中。
如上文所描述的,在一些场景中,地图选择模块7710可以基于从便携式设备接收的WiFi签名与与存储7712中的地图相关联的WiFi签名的相似性来标识候选地图。在一些场景中,选择可以基于地理位置数据的相似性。平台7750可以被配置用于基于地理位置信息从地图存储7712有效地选择地图。例如,平台7750可包括用于该目的的地理位置数据库7714。
地理位置数据库7714可以在地理散列值上索引以加速处理。表I示出了地理位置数据库7714中具有字段名称和数据类型的记录的示例。其他实施例可以使用不同的字段名称和/或数据类型,并且可以省略或合并示例数据结构的各种字段。
表I.
字段名称 | 数据类型 |
Id | 整数 |
纬度 | 数字 |
经度 | 数字 |
海拔 | 数字 |
航向角(heading_deg) | 数字 |
水平精度(horizontal_accuracy) | 数字 |
垂直精度(vertical_accuracy) | 数字 |
地理散列 | 字符串 |
地图_id | Uuid |
地图_版本 | 整数 |
pp_id | Uuid |
提供者 | 字符串 |
时间戳 | 时间戳 |
在该示例中,可以为从与地图存储7712中的每个规范地图相关联的地理位置元数据所计算的每个地理散列值存储记录。在地理位置元数据与地图中的多个持久位置相关联的实施例中,地图可能存在多个地理散列值。表I示出了一个名为pp_id的文件,其可用于在由地理散列值标识的已标识地图内标识特定的持久位置。
为了基于地理位置信息选择候选地图,地图选择模块7710可以计算伴随定位请求或合并跟踪地图的请求的地理位置元数据的地理散列。地图选择模块7710然后可以查询地理位置数据库7714用于具有相似地理散列值的记录。例如,查询可以请求具有在地理散列值的预定义范围内或在该地理散列值的预定百分比内的该地理散列值的记录。作为另一示例,地理散列前缀可以用于返回匹配值。替代地或附加地,查询可以请求具有最接近地理散列值的值的固定数量的记录。
如表I所示,来自地理位置数据库7714的记录可以标识地图和/或地图内的持久位置。在候选地图的选择需要选择地图的片段的实施例中,所标识的持久位置可用于选择适当的片段。例如,可以标识包含所标识的持久位置的图块和地图的周围图块。在有或没有进一步处理的情况下,所标识的地图可以用作一组候选地图。
作为可能执行的进一步处理的示例,来自记录的附加字段可用于影响地图的选择。作为其他处理的另一示例,纬度、经度和海拔字段可用于确认所选择的记录与被散列到查询地理位置数据库7714的地理位置元数据准确匹配。替代地或附加地,时间戳字段可用于从一组候选地图中移除旧的并且可能过时的规范地图。作为另一示例,海拔和航向信息可以被包括在地理位置数据结构中,其也可以用于确认匹配。替代地或附加地,准确度信息可用于计算包括在一组候选地图中的匹配地图的片段的大小。在准确度较低的情况下,可以选择地图的较大片段作为候选。在规范地图被划分为图块的实施例中,至少包含围绕指定位置的不确定区域的多个图块可以被包括在一组候选地图中。例如,准确度可以指定为实现实际位置落在半径内的指定概率(例如98%)所需的位置周围的该半径。因此,表示指定位置的该半径内的位置的图块可以被包括在候选地图集中。
如果地理散列索引不可用,则可以使用其他搜索技术来标识候选地图。例如,可以利用地理位置数据执行蛮力(brute)搜索以确定从设备位置到存储的地图和/或存储的地图内的图块的距离。另外和/或在替代方案中,几何库可用于为纬度/经度数据提供有效的索引和查询操作。
可以将所选择的一组地图传递到其他模块用于进一步处理。当响应于用于定位的请求而做出地图的选择时,可以将该组提供给定位模块7716。定位模块7716可以尝试针对选择的一组地图中的地图定位设备。定位模块7716可以执行如上文结合动作7410和7412(图43)所描述的处理或如本文所描述的其他定位处理。如结合动作7412所描述的,成功定位的结果可以是设备的本地坐标系与规范地图的坐标系之间的变换。该变换可以发送到本地设备。
在一些实施例中,可以在成功定位之后将地理位置元数据发送到一些设备。在图46所示的实施例中,ML设备7704本身不生成地理位置元数据,例如,来自GPS芯片集,而是基于例如从其他过程(例如,GOOGLE地理位置API等)获得和/或导出的地理位置数据,在其相应的地图中维护地理位置数据。然而,平台7750结合规范地图维护地理位置元数据。成功的定位在设备跟踪地图中的持久位置与规范地图的组件之间建立了对应关系。如果规范地图的该组件具有与其相关联的地理位置信息,则平台7750可以返回地理位置信息并且设备可以将其与作为成功定位的基础的持久位置结合一起存储。在图45的示例中,在将图块7606成功定位到图块7608之后,存储在位置元数据7612中的地理位置信息可以传送到设备,并存储为位置元数据7610的一部分。以这种方式,不生成地理位置信息的设备可以获得这样的信息。
在一些实施例中,定位模块7716还可以被配置为更新地理位置数据库7714和/或地图存储7712。例如,基于包含地理位置元数据的请求成功定位到规范地图内的位置指示规范地图内的位置由该地理位置元数据标识。因此,地理位置数据库7714可以用指示规范地图或更具体地该地图内的位置由该地理位置元数据标识的记录来更新。类似地,还可以基于与定位请求一起接收的位置元数据来更新与规范地图中的匹配位置相关地存储的元数据。这样的更新可以通过更新地图存储7712来进行。
替代地或附加地,PW模块7708可以管理利用位置元数据并且特别是基于本文所讨论的地图合并功能的地理位置信息来更新存储的地图。在一些示例中,平台可包括被配置为执行本文所讨论的各种地图合并功能的地图合并组件7718。地图合并操作可包括本文所讨论的关于地图合并的任何功能,并且可包括整合各种位置元数据的操作。
在图46所示的实施例中,平台7750仅从ML设备7704接收用于地图合并的跟踪地图。因此,初始仅利用WiFi签名作为位置元数据创建规范地图。然而,随着时间的推移,随着获得和共享地理位置信息,它也可以被并入地图存储7712中的规范地图集中。例如,随着向地理位置元数据提供定位请求的XR设备7702执行定位,地理位置元数据可以被添加到地图存储7712。一旦ML设备7704成功定位到其地理位置元数据可用的地图,则地理位置信息还可以通过系统传播,并且返回到ML设备7704,如上文所描述的。替代地或附加地,可以通过将诸如WiFi签名的其他位置元数据转换为地理位置信息,诸如通过利用WiFi接入点信息与地理位置之间的商业上可用的查找来将地理位置信息并入系统中。
图47示出了用于将从设备捕获的地理位置数据合并到地理位置数据库中的示例过程流程7800。例如,过程7800可以由平台7750执行。在其他实施例中,可以在交叉现实平台上活动的设备上全部或部分地执行过程7800。在又一实施例中,该过程可以部分地在设备上并且部分地在平台上执行。
设备可以捕获关于其环境的信息,并基于从其3D环境捕获或导出的图像数据发送定位请求。如上文所讨论的,便携式设备可以生成提供关于便携式设备的位置的信息的特征描述符,并且在将便携式设备定位到存储的地图的请求中传递那些描述符。在一些实施例中,便携式设备还可以捕获或累积位置元数据以与定位请求进行通信。对于XR设备7702,该元数据可包括从设备操作系统获取的地理位置信息。对于ML设备7704,该请求可包括地理位置信息,如果该信息已经从平台7750传播到它。
根据一些实施例,过程7800可以在框7802处从设备接收到定位请求开始。该请求可包括或标识位置信息和位置元数据。在一些示例中,位置信息可以被格式化为包含特征描述符的PFR。该PFR还可以包含位置元数据,其可以具有本文所描述的任何一种或多种类型。
在7804处,可以生成定位提示以促进定位。如图47所示,定位提示管理器7806可以被配置为基于可用位置元数据生成定位提示。在一些实施例中,定位提示管理器7806被配置为确定可用位置元数据的优先级并采用具有最高优先级的信息。该过程可以如结合动作7406(图43)所描述地操作。替代地或附加地,可以基于定位准确度的分析来定义和/或分配优先级。
取决于可用的位置元数据,定位提示在7804处由提示管理器7806生成。在该示例中,可以通过基于具有最高优先级的可用位置元数据选择一组候选地图来生成提示。该处理可以根据结合动作7408(图43)描述的处理或如本文另外描述的处理来执行。
一旦生成提示,则可以在动作7808处基于该提示通过尝试针对所选择的候选地图集进行定位来执行定位。上文讨论了确定设备是否可以定位到存储的地图的各种操作,并且那些操作中的任何一个或多个可以在框7808处执行。
在决策框7810处,做出关于定位是否成功的确定。可以基于与定位请求一起接收的位置信息与存储的地图之间的高于阈值的相关性来确定成功的定位。替代地或附加地,可以应用本文所描述的用于评估定位成功的任何其他操作。
在成功定位之后,过程7800可在7812处返回定位结果,其可包括在设备坐标系与匹配的规范地图的坐标系之间的一个或多个变换。如果定位成功所针对的规范地图部分包括地理位置信息作为位置元数据,则可以将该地理位置信息返回给设备。
此外,一旦实现了成功的定位,则可以在动作7814处将反映用于匹配的规范地图的地理位置信息的新条目插入到地理位置数据库7816中。该条目可包括地理位置元数据,该元数据可以从与定位请求一起接收的位置元数据中复制。替代地或附加地,地理位置元数据可以从与定位请求一起提供的信息中导出。例如,可以在地理位置信息中查找与定位请求一起发送的WiFi签名。
根据一些实施例,如果定位操作失败7810,则地理位置数据库仍可在框7814处更新。例如,可以在平台中使用这样的处理,在该平台中,初始形成规范地图集而没有相关联的地理位置信息,但是地理位置信息是从与平台交互的设备传播的。这样的处理可以加速地理位置信息的传播,这进而可以增加平台的效率。
例如,如果先前的定位信息可用于请求定位的设备,则地理位置数据库仍可在7814处更新。在定位失败时,过程7800可以进行到框7818,在框7818中确定有效的先前定位信息是否可用于设备。先前的定位信息可以由平台存储为用于设备的记录的一部分。替代地或附加地,可以从设备发送先前定位信息作为用于定位请求的位置元数据的一部分。先前定位信息的有效性可以基于一个或多个标准来确定,诸如自上次定位以来的时间经过和/或自上次定位以来由设备行进的距离。在一些实施例中,可以在设备上执行框7818处的处理,这可以确定其先前的定位结果是否有效,并且如果无效则可以禁止将其与定位请求一起发送。
如果如在框7818处确定的先前定位是有效的并且存在与先前定位相关联的地理位置信息,则该地理位置信息连同在先前定位中标识的地图一起可用于在框7814处添加记录。否则,当定位失败并且没有有效的先前定位信息可用时,不更新地理位置数据库。
地理位置数据库条目可以包括表I中描述的信息以及其他选项。
增强XR设备与远程定位的兼容性
如上所述,基于云的或其他远程定位服务可以在XR系统中提供许多优点,包括节省网络带宽和计算资源,同时使多个设备能够向多个用户呈现身临其境的XR体验。本节中描述的技术可以为各种XR设备类型提供对远程定位功能的访问,以便为多种类型设备的用户提供共享体验。
应当理解,使各种XR设备类型能够访问远程定位功能是一项具有挑战性的任务。不同的设备可以包含具有各种相机内在特性的相机,包括具有变化的图像分辨率、焦距、视场角和/或其他特性的相机。这些设备还可以采用广泛变化的硬件和/或软件。在这方面,一些XR设备可能具有头戴式显示器和多个相机,如上所述,而其他可能是手持移动设备(例如,智能电话、平板计算设备、电子阅读器设备、游戏设备等)或包括相机和/或显示器的其他类型便携式计算设备。因此,当执行在XR环境中提供共享用户体验所需的功能时,例如,由于各种XR设备之间的硬件和/或软件差异,这些设备可能因此以不同的方式操作。尽管如此,这些多种类型的设备可以被配置为通过将每个设备配置为与基于地图集为每个设备提供定位的定位服务交互来进行操作以向它们的用户提供共享体验。
支持多种设备类型的XR系统的有效实现可以利用设备的本机AR部件。例如,智能电话可能具有增强现实框架。此类框架的示例是ARKit,其能够用于执行iOS操作系统的设备;以及ARCore,其能够用于运行Android、Android NDK、Unity、Unreal和iOS环境的设备。例如,这些框架可以提供软件部件以使设备能够在设备的显示器上呈现用设备上的相机捕获的3D环境的实时视图。这些软件部件还可以控制虚拟内容的渲染,以在相对于3D环境中的对象所定义的位置处将其覆盖在显示器上。这些部件还可以控制来自设备相机的图像捕获,根据图像构建跟踪地图,并识别用作虚拟内容的锚点(anchor)的持久点。它们还可以提供接口,应用可以通过这些接口指定虚拟内容及其相对于锚点的位置。然而,这些设备可能不使得应用能够访问WiFi芯片集以获得WiFi签名,但是可以提供API,通过该API可以提供地理位置信息。
多设备类型XR系统的有效实现可以使本机AR部件的子集能够与其他XR系统一起工作,例如上述那些。在一些实施例中,该实现可能需要接口部件,该接口部件可以在设备上执行,以从本地AR部件获得图像信息和/或可以从中生成对定位服务的请求的其他信息。接口部件可以以使定位服务能够提供准确结果并发送定位请求的方式处理来自本机AR部件的信息。接口部件可以对来自定位服务的响应进行格式化,以便本机AR部件可以使用它来在设备上定位虚拟内容,虚拟内容被定位在相对于3D环境的指定位置。由于可以以这种方式有效地配置多种类型的设备中的任何一种,因此这样的XR系统可以支持提供共享用户体验的多种设备类型的操作。
图48描绘了用于向XR设备提供对远程功能的访问的代表性系统7120,这里显示为基于云的远程服务。代表性系统7120包括XR设备7150和远程服务7130。在该示例中,XR设备7150可以是智能电话、平板电脑或其他针对XR功能编程的便携式或非便携式电子设备,但也可以执行其他功能。例如,XR设备7150可以是便携或非便携(例如,故意不可移动,例如以防止设备被盗,和/或在一个或多个自由度受限,例如具有小于六个自由度)并且被配置为执行iOS或Android操作系统的任何电子设备,或者可以是AR、VR和/或MR设备(例如,Vive设备)。它可以包括相机、显示器、和在便携式或非便携式电子设备中找到的其他部件,例如IMU、GPS、或无线芯片组。
XR设备7150包括本机AR框架7160,在该示例中,该框架未配置为与远程服务7130一起操作。如下所述,其他部件仍然使设备7150能够成为向多个用户提供交叉现实体验的XR系统的一部分。尽管图48示出了针对XR功能配置的单个设备,但应当理解,任何数量和任何类型的设备都可以如图48所示被配置以与远程服务7130进行接口连接,使得具有多种类型的设备的多个用户能够共享由XR系统7120协调的XR体验。
在该示例中,远程服务7130包括认证/身份服务7135,其通过与XR设备7150上的相应的认证服务7165通信来认证和识别XR设备7150。基于设备认证,远程服务7130可以响应或拒绝来自一个或多个设备对服务的请求。认证可以基于设备的用户的账户(account)状态。替代地或附加地,认证可以基于请求的服务的类型和发出请求的设备的类型。例如,远程服务7130可以包括基于由一个或多个设备提供的跟踪地图构建规范地图的服务,如上所述。包含相机和产生超过质量阈值的跟踪地图的处理能力的设备可能被授权为此目的提供跟踪地图,而其他设备,无论其用户的帐户状态如何,都可能被拒绝访问此服务。
远程服务7130还包括可通行世界(PW)云服务7140,其经由PW服务7170将可通过世界信息传送到XR设备7150。该可通过世界信息可以包括地图、诸如PCF的持久点或持久姿势、网格、对象、表示物理世界的平面,在一些实施例中,包括如本文别处所述的关于可通行世界维护的一些或全部信息。PW服务7170也可以提供定位服务,也如本文所述。
与远程服务7130中包含的任何服务通信的部件可以在设备7150上执行。此类部件可以从包括远程服务7130的XR系统的开发者处获得。在这个示例中,认证服务7165和PW服务7170是XR软件开发工具包(SDK)7155的部件,这些服务提供给准备软件以在与设备7150相同类型的设备上执行的软件开发人员。在此示例中,SDK 7155被示为驻留在设备7150中。然而,本领域技术人员将理解,这种符号表示从SDK 7155派生的部件安装在设备7150上,但整个SDK可以在设备7150以外的其他地方的计算机上执行。
在本示例中,SDK 7155还提供与在设备7150上执行的其他部件进行接口连接的部件。这些部件包括感知服务7175和XR API 7180。感知服务7175被耦合到XR设备的本机AR框架7160,其可以提供设备的与物理世界的交互相关的信息,包括相机图像、其位置、移动和/或取向。通过该接口提供的信息可以包括在设备的3D环境中获取的数据,包括例如GPS(或其他地理位置)信息和关于检测到的网络接入点的数据,例如可用于基于GPS和/或基于WiFi的定位。
感知服务7175可以处理该信息并将其提供给PW服务7170,在PW服务7170处信息可以被进一步处理并提供给PW云服务7140。可以处理该感知信息,例如,如下文更详细描述的,从而以该信息将为设备7150产生准确的定位结果的形式来放置该信息。应当理解,虽然说明了其中感知服务7175和PW服务7170被示为单独部件的代表性实施例,但是这些部件的功能可以在一个部件或两个以上部件中执行。因此,如本文所述的对在设备7150上执行的感知数据的处理可以在任一部件中执行或分布在两个部件上或以其他方式架构。
PW服务7170还可以处理从PW云服务7140接收的定位服务的结果。该处理可以包括以如下格式来提供定位结果:本机AR框架7160可以使用定位结果以在共享体验中渲染虚拟内容。如上所述,定位服务可以提供设备使用的本地坐标框架与共享坐标框架之间的变换,例如反映在存储在云中的规范地图中。为使用系统的设备提供共享体验的应用可以在规范地图的坐标中指定虚拟内容的位置,并且该变换可以用于使设备能够确定相对于将要在其中显示该虚拟内容的其本地坐标系的位置。在该示例中,变换将一个或多个规范坐标框架与本机AR框架7160的本地坐标框架相关。
在该示例中,可以以任何合适的格式将变换提供给应用引擎7185和/或提供虚拟内容以供在由设备7150控制的显示器上进行渲染的应用7190。例如,变换可以提供将由云服务7130用于表示3D环境中的位置的格式的PCF与由本机AR框架7160使用的格式的锚点之间的变换。例如,可以在应用引擎7185中应用这种变换,以将指定由应用7190生成的虚拟内容的位置的信息变换成可以通过其本机API提供给本机AR框架7160的格式。可以反向应用变换,以便将来自本地AR框架7160的位置信息提供给实现XR系统的其他部件。
应用7190可以被配置为创建或获得可以与其他用户共享的虚拟内容。例如,多个用户可以玩游戏,其中虚拟对象,例如硬币或其他奖品,被指定为出现在分布在3D环境周围的位置处的所有用户面前。每个用户的设备上可能具有游戏应用,该应用接收虚拟对象的指定及其位置,其可以相对于PCF或XR系统支持的其他格式进行指定。这些游戏应用可以相互通信或与公共服务器通信以共享所有虚拟对象的公共描述,从而每个应用都可以接收虚拟对象的指定并提供渲染这些对象的命令。这些通信可以采用XR系统7120使用的格式。
在图48的示例中,这些命令可以在被变换为以本机AR框架7160的锚点的格式表达位置之后被提供给本机AR框架7160。相反,应用可以从本机AR框架7160接收信息,例如指示用户与虚拟内容交互的信息。应用引擎7185可以将包含在这些指示中的任何位置信息从本机AR框架7160的格式变换为由XR系统7120使用的格式。因此,即使这些设备具有与XR系统7120不兼容的本机AR框架,多个设备的用户也可以分享游戏经验。
图49描绘了根据一些实施例的代表性过程7200,XR设备可以借此访问远程定位功能。过程7200可以在设备7230内实现,使用一些或全部上述部件。
在代表性过程7200开始时,在动作7210中,由设备的相机捕获描绘设备的物理环境的图像。可以以多种方式中的任何一种方式执行图像捕获,例如以上面关于图35中所示过程的动作6204描述的方式。在一些实施例中,在动作7210中捕获的图像可以是二维的,但描绘了图像捕获时XR设备的三维环境。
在本示例中,可以通过本机AR框架7160来控制用于提供感知信息以支持XR体验的图像捕获。为了与其他XR设备兼容而对这些图像的处理可以在感知服务7175和/或PW服务7170内全部或部分执行。因此,捕获的图像可以单独提供给此类部件,或者与其他感知数据一起提供。
该过程然后进行到动作7220,其中在动作7210中由设备捕获的图像的子集被选择为适合定位。可以基于一个或多个标准中的任何一个将图像选择为适合定位。例如,在一些实施例中,可以基于图像中不存在过度亮度和/或运动模糊来选择捕获的图像。
图像中这些和/或其他质量的存在或不存在可以以任何合适的方式来确定。例如,可以通过构成图像的像素的平均像素值高于阈值来确定过度亮度。图像中运动模糊的存在可以通过如下方式来检测(作为示例):感测捕获图像的设备的运动,例如使用惯性测量单元;检测图像中具有模糊的特性的图案;和/或比较序列中的连续图像以确定特征位置从一个图像到下一个图像的变化,作为设备在连续图像帧之间移动过快的指示。可替代地或附加地使用的其他技术包括计算图像拉普拉斯的变化和/或计算梯度导数或小波变换,以及检测对应于先前识别为合适的图像的范围之外的值的范围。在一些实施例中,如果图像中的运动模糊超过运动模糊的预定阈值量,则可以确定该图像不适合定位。作为一个具体示例,可以排除拉普拉斯的变化大于200的图像。
可替换地或附加地,可用于选择或相反排除图像的其他标准可包括在图像中检测到的角的数量。例如,在所选图像中可能需要至少30个角,或者可以排除本机AR框架7160指示已丢失跟踪的图像。
过程7200然后进行到动作7230,其中对在动作7220中选择的图像执行预处理。图像预处理可能需要任何合适数量和类型的操作。例如,图像预处理可以包括sigma去噪操作、镜头阴影校正、伽马校正以解决图像亮度和/或其他操作。可以以任何合适的顺序和顺序执行操作。
在一些实施例中,预处理的目标可以是利用由基准设备(例如,上面参考图4描述的可穿戴设备580)捕获的图像的像素的一个或多个相同参数的预期值,归一化以由XR设备捕获的图像的像素所表示的一个或多个关注参数的值。例如,参考设备可以是与XR系统7120结合使用的典型设备。关于由PW云服务7140维护的物理世界的地图和其他信息可能已经由与参考设备相同类型的设备捕获。可替代地或附加地,用于生成地图或由PW云服务7140维护的其他信息的图像可能已经被类似地归一化为相同的参考设备。
通过归一化,一些实施例可以说明由尝试远程或基于云的定位的XR设备可能使用的多种相机内在特性。一些实施例可以说明许多XR设备可以被配置为捕获二维图像,而基准设备可以被配置为捕获三维图像的事实。
在一些实施例中,可以通过改变图像中像素的关注参数的值来实现归一化,从而等于或接近在图像被基准设备捕获时所期望的值。例如,可以执行伽马校正以修改图像的一个或多个像素的亮度值,从而等于或接近在由基准设备捕获图像时所期望的亮度值。在一些实施例中,归一化可以通过将XR设备捕获的一种尺寸的图像中的像素的关注参数的值映射到基准设备捕获的另一种尺寸的图像中的像素来实现。例如,如果XR设备捕获的图像具有基准设备所捕获的图像中所包括的像素的数量的一半,则可以对XR设备捕获的像素的值进行插值,以创建具有在由基准设备捕获的图像时的预期值的图像。
作为另一种归一化技术的示例,可以组合多个图像以形成单个归一化图像。在便携式设备提供的图像具有比参考图像更小的视场角的场景中,可以融合来自多个图像的数据以产生具有更大视场角的图像。相反,不是在设备7150上执行归一化,而是可以收集关于捕获图像的设备的内在特性的信息并将其传递给PW云服务7140以进行归一化处理。通过在云中进行处理,可以修改将要替代地或另外地与由设备7150捕获的图像进行比较的图像的特性,以例如降低像素密度或减小视场角,以实现生成信息存储在PW云服务7140中的图像与由设备7150捕获的图像的更可靠比较。
其他合适的一项或多项技术可用于将值从一种图像类型归一化为另一种图像类型,并且不需要使用相同的技术来对所有参数或所有像素的值进行归一化。
在动作7230完成时,代表性过程7200进行到动作7240,其中生成图像的特征描述符。可以以多种方式中的任何一种方式生成特征描述符,例如以以上关于图35中所示过程的动作6206描述的方式。
在一些实施例中,如上所述,可以使用利用特征图像的标记数据集进行训练的一个或多个人工神经网络来生成特征描述符,其表示在每次设备对物理世界的区域进行成像时可以可靠检测到的物理世界中的持久位置。在一些实施例中,类似的训练过程可用于创建人工神经网络,用于在支持多种设备类型的XR系统中生成特征描述符,但训练图像集可包括使用与7150相同类型的设备捕获的图像,或以其他方式使用相同的相机内在特性捕获的图像。例如,训练集中的一部分图像可以利用具有参考相机的特性的相机来捕获,另一部分利用具有将使用神经网络来处理图像的设备的相机特性的设备来捕获。
在一些实施例中,针对给定图像生成的特征描述符的数量可以至少部分地取决于捕获图像的XR设备的相机内在特性。例如,XR设备的图像分辨率、焦距、视场角、和/或其他相机内在特性可以影响针对XR设备所捕获的给定图像而生成的特征描述符的数量。定位至少在某种程度上是一个概率过程,并且对于某些相机,可能需要增加从其捕获的图像生成的特征描述符的数量以完成成功的定位。当然,可以以任何合适的方式确定针对由任何特定XR设备所捕获的图像而生成的特征描述符的数量,因为本发明在这方面不受限制。
不管生成的特征描述符的数量如何,每个特征都可以被设定姿势,如上所述,以便指示特征在本地坐标系中的位置。姿势可以基于本机AR平台7160提供的感知数据。
代表性过程7200然后进行到动作7250,其中在动作7240中生成的特征描述符被传送到远程定位服务。传送可以通过多种方式中的任何一种来完成。特征描述符可以在协议中并结合如上所述的用于远程定位过程的信息来传输。例如,特征描述符可以连同诸如GPS数据或无线指纹之类的地理数据一起发送,使得定位过程能够如上所述地执行。如上文关于图35中描绘的过程所描述的,在一些实施例中,特征描述符可以在被传送到定位服务之前被存储在缓冲器中,并且传送缓冲器内容的频率,和/或信息量(例如,特征描述符的数量)可以响应于定位是否成功而动态地确定。代表过程7200然后完成。
图50描绘了代表性过程7300,由此远程定位服务(例如,基于云的定位服务7130,图48)可以向XR设备(例如,XR设备7150)提供位置信息。在代表性过程7300开始时,XR设备及其类型在动作7310中被识别。这可以以多种方式中的任一种来执行。例如,在一些实施例中,远程定位服务的认证/身份服务7135(图48)可以基于XR设备提供的信息来识别XR设备及其类型。该信息可以在远程定位服务处用于授权动作或其他目的,例如基于请求定位服务的设备类型来定制定位处理。
该过程然后进行到动作7320,其中从XR设备接收特征描述符。例如,特征描述符可以由XR设备以上面关于代表性过程7200(图49)描述的方式传输。
在动作7330中,远程或基于云的定位服务执行定位。这可以例如使用以上关于图35描述的技术来执行。可以执行结合定位描述的任何功能。例如,可以存储诸如设备的会话信息或定位历史之类的信息。
在一些实施例中,定位过程可以基于设备的类型而变化。例如,具有立体相机的可穿戴设备可以生成与针对定位而发送的特征集相关的3D姿势信息。对于此类设备,定位可能需要匹配3D中的特征的点云。为了支持此操作,规范地图可以表示具有3D特征集群的持久点。然而,在一些实施例中,将从利用单目相机拍摄的图像中提取的特征与3D特征集进行匹配的准确度可能很差。例如,可以通过将3D特征集群(例如可能存储在规范地图中)投影到平面中并在该平面内执行2D映射来提高准确性。
代表性过程7300然后进行到动作7340,其中将定位的结果提供给设备。可以如上所述提供结果,作为从描述针对定位而发送的特征的位置的坐标框架到与规范地图或由定位服务维护的其他共享地图相关联的一个或多个坐标框架的变换。
然后完成代表性过程7300。一旦过程以设备7150具有在其本地坐标框架与XR系统7120所使用的坐标框架之间以便指定虚拟内容的位置的变换而结束,设备7150可以在指定位置处渲染内容。该渲染可以由本机AR框架7160完成。在本机AR框架7160使用不同于系统7120的其他部件的用于指定虚拟内容的格式的实施例中,可以提供一个或多个内容转换器(translator)。这样的内容转换器可以在远程服务7130内,并且可以基于结合定位请求提供给远程服务7130的设备信息来选择合适的转换器。
以这种方式,未被设计为与XR系统7120一起工作的设备(例如智能电话)可以与该系统一起工作。应当理解,除了如上所述渲染虚拟内容之外,这样的设备可以被编程或以其他方式被配置为执行如本文所述的便携式设备的本文所述的任何功能。
深度对应关系
本文描述了用于有效且准确地找到匹配的特征点集合的方法和装置,例如在大规模环境中实时地定位XR设备时可能发生。因此,本文描述了匹配特征集合作为定位的一部分以说明可导致快速和准确匹配的技术。当匹配其他上下文中的特征集合时,可以应用这些技术中的一些或全部,例如在搜索规范地图和跟踪地图的一部分之间的匹配作为地图合并过程的一部分时。
定位XR设备可能需要进行比较以找到来自由XR设备捕获的一个或多个图像的2D特征集合与特征点集合之间的匹配,该特征点集合可以是存储规范地图中的3D地图点。大规模环境的地图可能包括大量3D地图点。
与2D图像特征相比,一些3D地图点可以在一天中的不同时间或在不同季节被捕获。不同的维度、不同的光照条件、和其他条件使得准确找到匹配的特征集合变得更加困难。例如,在大规模和超大规模环境中,准确定位可能需要比较大量的2D特征集合以提供准确的定位结果。因此,在大规模和超大规模环境中定位XR设备需要更多时间并消耗更多计算能力,从而导致显示虚拟内容的延迟并影响XR体验的真实性水平。
如本文所述的使用具有匹配描述符的特征子集来搜索匹配特征集的服务可以使得能够在大规模和超大规模环境中以减少的时间和提高的准确性来定位XR设备。具有此类服务的系统可能包括一个部件,该部件评估在子集中包含具有匹配描述的特征对将导致找到匹配的特征集的可能性。
在一些实施例中,在由组件选择具有匹配特征的特征子集时引导的定位服务可以实时提供定位结果,例如在一些实施例中不超过十毫秒、五毫秒、或两毫秒。在一些实施例中,由组件引导的定位服务可以将响应定位请求的运行时间减少大约十倍,例如,从25ms到3ms,具有一百个对应特征,具有相似或提高的定位精度。在一些实施例中,由组件引导的定位服务可以减少由姿势估计算法运行的迭代次数大约十倍,例如从一百次迭代到十二次迭代,具有相似或提高的定位精度,其可以确定将一个特征子集与具有匹配描述符的另一特征子集对齐的变换。
定位服务可以在XR设备上、在云上或两者上。在一些实施例中,可以将持久地图下载到XR设备以用于在地图中定位XR设备,例如,如上文关于图23所描述的。在一些实施例中,XR设备可以将信息(例如,2D特征和/或相关联的元数据)上传到包含定位服务的云并且接收其在一个或多个持久地图中的位置,例如,如上关于图34至36C所描述。在一些实施例中,可以根据随机样本一致性(RANSAC)方法利用一组匹配特征对来确定定位结果。
这种定位服务可以接收和应用与定位请求相关的任何一种或多种类型的位置元数据,以选择一组候选地图、帧描述符、或其他标准。这些标准可用于选择一个或多个规范地图或规范地图的片段,可以尝试对其进行定位。其他标准(诸如深度关键帧描述符)可用于从一组候选地图中进一步向下选择,或识别尝试对其进行定位的候选地图的片段。
在这样的向下选择之后,可以执行特征级别比较。例如,可以将由设备生成的关键帧中的特征集合与识别的候选地图的片段中的特征集合进行比较。在存在多于一个候选地图或多于一个识别的候选地图的片段的情况下,可以在确定定位结果之前将来自设备的特征集合与多个特征集合进行比较。比较可以继续,直到处理了所有候选地图的所有候选片段。如果与来自设备的特征集合最佳对应的来自候选地图的特征集合具有低于某个阈值的误差,则可以认为定位是成功的。替代地或附加地,一旦识别出来自候选地图的特征集合以低于某个阈值的误差具有对应关系,则处理可以完成。无论如何,定位过程可能涉及比较多个特征集合。为简单起见,描述了一个集合的处理。
定位服务可以响应来自一个或多个XR设备的请求以相对于一组一个或多个持久地图进行定位。该请求可能包括从设备周围的物理世界的图像中提取的2D特征。在一些实施例中,图像可以由设备的一个或多个传感器(例如相机)捕获。在一些实施例中,来自XR设备的特征集合可以基于多个传感器同时捕获的信息,这可以提高寻找匹配的特征集合的速度和/或准确性。
那些2D特征可以相对于XR设备使用的坐标系以这样的方式成姿势,即可以一起处理由多个传感器捕获的2D特征以提供定位结果。在一些实施例中,定位服务可以通过在2D特征中嵌入传感器外部参数来整合来自多个传感器的2D特征。传感器外部参数可以包括传感器的物理尺寸、传感器之间的距离、XR设备显示器的物理尺寸、传感器在XR设备上的位置等。可以通过校准过程确定可用于实现嵌入的表示传感器外部参数的适当变换。
该2D特征集合可以用作定位过程的输入。定位服务可以从候选地图中识别3D特征集合。可以基于匹配2D特征的描述符的特征描述符来选择3D特征集合。发明人已经认识到并意识到一些匹配的对应关系可能是真的,这意味着2D和3D特征集合中的对应特征代表物理世界中的相同特征,而其他匹配的对应关系可能是错误的,这意味着尽管具有匹配的描述符,但2D和3D特征集合中的对应特征并不代表物理世界中的相同特征。因此,评估对应关系的质量,以及对过程进行加权以考虑高质量的对应特征可以缩短计算时间和/或提高定位结果的准确性。
定位服务可以包括被配置为评估对应特征的质量的组件。然后,定位服务可以通过处理对应特征对的子集来识别将2D特征集合与3D特征集合对齐的变换。可以选择对应特征对的子集以使用具有高质量的对。
在一些实施例中,搜索两个特征集合之间的变换可能是计算密集的。在一些实施例中,定位服务可以使用重力定向来减少在将2D特征与3D特征匹配时应该搜索的自由度。来自设备的2D特征和来自存储地图的3D特征都可以在坐标系中表示,其中一个坐标与重力对齐。在一些实施例中,定位服务可以在搜索变换之前旋转该2D特征集合,使得与重力对齐的2D特征集合的坐标与也与重力对齐的该3D特征集合的坐标对齐。替代地或附加地,任何对变换的搜索可以排除会改变特征集合相对于重力的对齐方式的变换。
根据该变换,定位服务可以计算变换并将其返回给设备,以将在其中2D特征成姿势的其本地坐标系与从中获得3D特征集合的持久地图的坐标系相关。
被配置为评估匹配对应关系的质量的组件可以包括人工神经网络。可以训练神经网络以提供每对对应特征的质量度量。质量度量可以指示2D-3D特征对识别物理世界中的相同特征的可能性。在一些实施例中,质量度量可以是在零到一范围内的概率,例如,一指示正确匹配,零指示错误匹配。
可以用具有表示为2D和3D特征的特征点的数据集来训练神经网络。训练集还可能包括表示物理世界中不同特征但具有相同或相似描述符的2D和3D特征。这样的数据集可以综合生成,例如从描述XR设备可以在其中操作的环境的计算机图形生成的数据中生成。数据可能有噪声,表示测量过程中可能存在的噪声,或者被扭曲以代表真实世界的数据。
神经网络的训练可以基于惩罚错误结果的损失函数。错误结果可能是将低质量分配给表示物理世界中相同特征的一对2D和3D特征,或者将高质量分配给表示物理世界中不同特征的一对2D和3D特征。替代地或附加地,损失函数可以促进正确的结果,这可能是为表示物理世界中相同特征的一对2D和3D特征分配高质量或为表示物理世界中的不同特征的一对2D和3D特征分配低质量。
图51是示出根据一些实施例的提供大规模和超大规模定位的XR系统5100的一部分的框图。图52是图示根据一些实施例的关于由XR系统5100处理的物理世界的信息的示意图。如图51所示的处理可以在便携式设备上实现,或者可以分布在设备和一个或多个远程处理系统上,例如云服务。
XR系统5100可以包括一个或多个传感器5102,其被配置为捕获关于物理世界的信息5104。在一些实施例中,传感器可以包括一个或多个图像传感器,例如图5B中的相机552和/或553,其可以以固定的时间间隔输出灰度和/或彩色图像帧。在一些实施例中,传感器可以包括一个或多个惯性测量单元(IMU),例如图5B中的IMU 557,它可以检测运动和取向。由相机输出的图像帧可以附加由IMU捕获的取向,例如拍摄图像时设备的重力取向。可以旋转图像以使重力取向对齐,这降低了搜索定位服务的自由度。
图52示出了由传感器5102收集的数据的嵌入。在图52的示例中,图示了XR设备的四个相机cam0至cam3。XR设备可以具有设备坐标系5202。在一些实施例中,设备坐标系5202可以是关键装配(keyrig)坐标系,指示当关键装配(例如,图7的关键装配704)被捕获时设备的姿势。在一些实施例中,可以在建立在XR设备上的跟踪地图的坐标系中,例如世界坐标系86(图9、图10)中指示关键装配的姿势。在一些实施例中,可以基于设备的显示器的位置来确定关键装配的姿势,使得一旦设备被定位到地图,虚拟内容就可以正确地显示在显示器上。
XR设备可以尝试定位到在数据库5110中持久的一个或多个地图,例如图13中的规范地图120。持久化地图可以包括表示物理世界的3D特征的地图点,例如,图29A中的地图点3802。地图点可以共享地图坐标系并且可以通过共享的地图坐标系可参考,例如,图30A中的规范坐标系4806C。
系统5100可以提供姿势估计5124,其可以是设备坐标系和地图坐标系之间的变换的形式。在图52的示例中,姿势估计5124的示例被图示为设备坐标系5202和地图坐标系5204之间的变换5206。变换5206可以包括坐标系5202和5204之间的平移和旋转,其可以由矩阵表示。
如上所述,可以通过找到对齐两个特征集合的变换来估计姿势。XR系统5100可以包括特征提取组件5106,其被配置为从传感器捕获的信息中识别特征并输出特征信息5108。如上所述,特征的示例可以包括物理世界中对象的角和边缘。在图52的示例中,特征提取组件5106可接收由cam3捕获的图像5208,并识别图像5108中的一个或多个特征5210k。特征提取组件5106还可接收来自cam0、cam1和cam2的图像,并识别诸如5210i和5210j。还可以生成每个特征的描述符以实现有效匹配。在一些实施例中,特征信息5108可以包括描述符(例如,图22中的DSF描述符)。
特征提取组件5106还可以被配置为将传感器外部参数附加到识别的特征,使得XR系统5100可以同时处理由多个传感器捕获的信息。在一些实施例中,特征信息5108可以包括通过组合两个3d向量的6d向量。第一3d向量可以指示特征在捕获包含特征的图像的传感器的传感器坐标系中的位置(例如,uiviwi、ujvjwj、ukvkwk)。第二3d向量可以指示传感器在设备坐标系5202中的位置,该传感器捕获了包含特征的图像(例如,t0、t1、t2、t3)。例如,特征5210k的特征信息5108可以包括特征的唯一描述符、第一向量ukvkwk和第二向量t3。
在一些实施例中,特征提取组件5106可以在设备上。可以将特征信息5108传送到定位服务5126。传送特征信息5108可以比发送完整图像消耗更少的带宽。然而,本申请不限于此。在一些实施例中,定位服务5126可以包括特征提取组件5106。
定位服务5126可以包括特征匹配组件5114,其可以从特征提取组件5106接收特征信息5108。特征匹配组件5114还可以从在数据库5110中持久的一个或多个地图接收地图信息5112。在一些实施例中,可以通过图25的方法从数据库5110中选择一个或多个地图。地图信息5112可以包括表示物理世界的3D特征的地图点。特征匹配组件5114可以被配置为通过例如从具有相同或相似描述符的2D和3D集中选择特征对来匹配来自特征信息5108和地图信息5112的对应特征。
在图52的示例中,特征匹配组件5114可以确定特征5210i、5210j、5210k分别与地图点5212i、5212j、5212k匹配。地图点5212i、5212j、5212k可以表示为3d向量xiyizi、xjyjzj、xkykzk,表示地图点在地图坐标系5204中的位置。如图所示,一些匹配的对应关系可能是正确的,例如,5210j和5212j的对应关系,以及5210k和5212k的对应关系;一些匹配的对应关系可能是错误的,例如5210i和5212i之间的对应关系。
定位服务5126可以包括匹配特征质量预测组件5118,其被配置为评估由特征匹配组件5114提供的匹配特征对5116的质量。匹配特征质量预测组件5118可以将质量信息5120提供给定位服务5126的姿势估计组件,使得姿势估计组件5122可以在计算姿势估计5124时由质量信息5120引导。
质量信息5120可以包括每对匹配特征的质量度量。在一些实施例中,质量度量可以是在零到一范围内的概率,分配的质量越高表示匹配特征表示物理世界中的相同位置的可能性越高。应当理解,组件可以被配置为指示与其他数值匹配的对应关系的质量,例如,指示与零的可能正确匹配和可能与一的错误匹配,或反之亦然。
姿势估计组件5122可以基于由匹配特征质量预测组件5118输出的质量信息5120来处理由特征匹配组件5114输出的匹配特征对5116。在一些实施例中,姿势估计组件5122可以从集合5116中选择匹配特征对的第一子集,并且基于选择的子集计算第一姿势。子集中对应关系的数量可以是五、七、八或足以提供有效变换矩阵的任何值。第一子集的选择可以由质量信息5120引导,其中选择向更高质量的匹配特征加权。例如,姿势估计组件5122可以从所有匹配特征对中随机选择匹配特征的第一子集,但是使用有偏的选择使得具有较高质量度量的匹配特征比具有低质量度量的匹配特征更有可能被选择。选择匹配特征对的可能性可以与质量度量成比例。
姿势估计组件5122可以计算将匹配特征对的所选子集的2D特征与子集中对应的3D特征对齐的变换。在考虑重力的系统中,可能不会考虑改变2D特征相对于重力的取向的变换。
姿势估计组件5122可以通过将计算的变换应用于匹配特征对的更大集合,包括不包括在第一子集中的匹配特征对中的一些或全部,来确定第一姿势的准确度。在一些实施例中,姿势估计组件5122可以通过计算单独的对应关系的投影误差来确定准确度。匹配对应关系的投影误差可以指示2D特征在包含2D特征的图像中的位置与投影到图像延伸的平面的匹配地图点的位置之间的距离。
在一些场景中,姿势估计组件5122可以计算进一步估计的姿势以确保计算准确的姿势。在一些实施例中,当投影误差低于阈值误差(例如,两个像素)的匹配特征对的数量高于阈值(例如,集合5116的80%)时,姿势估计组件5122可以确定估计的姿势是准确的。该检查可以在第一次姿势估计完成时进行。或者,姿势估计组件5122可计算多个姿势估计并检查最佳姿势估计相对于阈值的准确度。
当姿势估计组件5122确定第一定位不够准确时,或者在其中在评估最佳一个的适用性之前计算多个姿势估计的实施例中,姿势估计组件5122可以从集合5116随机选择匹配特征对的第二子集。对于第一子集,匹配特征对的进一步子集的选择可以由质量信息5120加权。姿势估计组件5122可以计算第二姿势以对齐所选第二子集的2D特征和3D特征。该过程可以继续,其中选择和处理额外的子集,直到找到准确的定位结果,和/或达到其他停止条件,例如处理预定数量的子集。应当理解,在来自质量信息5120的指导下,姿势估计组件能够提供准确的定位结果,其中选择和计算的基础是匹配对应关系的子集数量比没有指导时少十倍。
在一些实施例中,匹配特征质量预测组件5118可以包括人工神经网络5302,例如,根据一些实施例,如图53中的XR系统5100的子系统5300所示。神经网络5302可以包括嵌入层5304、嵌入层5316、以及嵌入层5304和嵌入层5316之间的中间层5322。
嵌入层5304可以包括多层感知器(MLP)5306。嵌入层5304中的每个MLP 5306可以接收来自集合5116的一个或多个匹配特征对。在一些实施例中,匹配特征对可以包括9d向量,它可以是如上所述的2D特征的6d向量(例如,ukvkwk&t3)和指示匹配3D特征在地图中的位置的3d向量(例如,xkykzk)的组合。MLP可以提供编码向量5308,其可以提供比输入对应关系更高维度的特征。在一些实施例中,编码向量5308可以包括64d向量。
中间层5322可以包括由逐元素求和块5314连接的一个或多个残差网络块5310。残差网络块5310可以包括MLP,以及被配置为对残差网络块的MLP的输出的分布进行归一化的子块。
嵌入层5316还可以包括MLP。嵌入层5316中的每个MLP可以从中间层5322接收编码输出,并输出解码向量5318,其可以具有与输入对应相同的维度。可以通过激活块5320将解码向量5318转换成质量信息5120。
图54是示出根据一些实施例的生成用于训练神经网络5302的参考数据集的方法5400的流程图。方法5400可以从创建(动作5402)包括2D-3D匹配特征的参考数据集开始。参考数据集可以是合成或真实世界数据。在一些实施例中,参考数据集可以包括对应于正确匹配的特征对和对应于不正确匹配的特征对。
在动作5404,方法5400可以基于参考数据集通过例如使用姿势估计组件5120来计算姿势。在动作5406,估计的姿势可以用于计算真实数据(ground truth)(GT)投影误差用于单独的对应。在使用合成数据的场景中,可以根据在形成合成数据时引入的2D和3D集合之间的任何变换来确定真实数据。对于其他数据集,可以通过其他方式确定真实数据,包括人工审查数据集或根据其来生成数据集的图像的结果。对于2D-3D特征对应关系,GT投影误差可以表示对应关系的2D特征在包含2D特征的图像上的位置和与对应关系中3D特征对应的2D特征的位置之间的实际距离。
在动作5408,方法5400可以基于计算的GT投影误差来计算参考数据集的对应关系的GT权重。在一些实施例中,GT权重WGT可以定义为GT投影误差的柯西(Cauchy)权重函数,如下所示:
其中,C可能具有GT权重为0.5的误差值。在一些实施例中,训练数据集5410可以包括参考数据集的2D-3D匹配特征和计算的GT权重。应当理解,尽管柯西损失被描述为示例,但是可以使用惩罚高重投影误差的任何损失函数。
图55是示出根据一些实施例的训练神经网络5302的方法5500的流程图。方法5500可以通过使用神经网络5302为训练数据集中的每对特征计算(动作5502)质量度量开始。在动作5504,方法5500可以基于质量度量和GT权重之间的差异来计算损失。在一些实施例中,损失可以是GT权重WGT的回归损失,例如,训练集5410中的特征对的对应GT权重与质量度量之间的均方误差。在动作5506,方法5500可以基于损失修改神经网络6602的权重以减少损失。训练集中的匹配特征对可以连续应用,在处理每一对匹配特征时更新神经网络,以减少损失。
不管神经网络被训练的具体方法是什么,一旦训练,它可以被用来引导对匹配特征对的子集的选择,以减少被处理以识别两个特征集合之间的姿势的子集的数量,如上面结合图51所描述的。此过程之前或之后可能有其他处理。在图51所示的处理之前可以应用一个或多个标准来确定将哪些3D特征集合与2D特征集合进行比较。如果要比较多个3D特征集合,则可以针对每个3D特征集合重复图51的过程以确定最佳匹配特征集合。在图51的处理之后,识别的姿势可以转换为定位结果。
替代地或附加地,图51的姿势估计过程可以应用在其他上下文中。例如,在将跟踪地图合并到规范地图时,可以将跟踪地图中的2D特征集合(例如与持久姿势相关联的那些)与规范地图中的3D特征进行比较。图51的姿势估计过程可用于确定特征集合是否匹配,如果匹配,则确定特征集合之间的变换。该变换的计算可以用于将跟踪地图与规范地图对齐,从而可以组合这些地图。
因此,应当理解,如本文中结合定位设备描述的姿势估计过程可以应用在其他场景中。
重力保持地图合并
如上所述,多个XR设备在其中操作的环境的一组规范地图可以向多个用户提供增强的XR体验,通过使他们世界的本地表示(例如,以跟踪地图的形式)被转换到由规范地图建立的相同的坐标系。通过定位到相同的参考系,所有设备都可以在相对于物理世界的相同位置向其用户呈现虚拟内容,从而创建更逼真和身临其境的共享用户体验。通过考虑重力方向,可以简化创建和使用这些规范地图的处理。
可以通过递增地合并从用户的设备接收的跟踪地图以创建世界的虚拟表示来创建规范地图。在一些实施例中,用户的设备可以将他们的跟踪地图发送到基于云的服务,以与先前存储在基于云的服务中的环境地图合并。云服务的地图合并组件可以尝试识别每个新跟踪地图的一部分,该部分表示物理世界的与现有规范地图的一部分相同的区域。该识别可以分步骤进行,初始步骤涉及通过将与已存储的规范地图的区域相关联的位置元数据与与跟踪地图相关联的类似位置元数据进行匹配来找到可能的重叠区域。替代地或附加地,为跟踪地图中的关键帧计算的描述符可以匹配到与规范地图的部分相关联的类似描述符。这些可能的重叠区域可作为进一步处理的候选。
这些候选重叠区域可以被进一步处理以识别跟踪地图中的特征点与规范地图中的对应的特征点。可以基于特征的特性来识别对应的特征。例如,可以基于被分配给跟踪地图和规范地图中的特征的类似描述符(例如上述DSF描述符)来识别对应的特征。
地图合并过程中的进一步步骤可能需要确定对应的特征集合之间的变换,该变换在从跟踪地图导出的第一特征集合和从规范地图导出的第二特征集合中的经变换的特征的位置之间提供适当低的误差。可以应用一个或多个误差度量来将误差与阈值进行比较。例如,跟踪地图中的特征点的数量或百分比,在变换之后,它们在规范地图中的其对应特征点的阈值距离内。替代地或附加地,可以基于来自跟踪地图的经变换的特征点与其在规范地图中的对应特征之间的距离来测量误差。作为具体示例,误差度量可以是对应特征点集合的均方根距离。
可以尝试多次变换,直到识别出具有合适误差的变换。引导(guide)搜索策略可用于在搜索提供满足搜索的结束标准的低误差的转换期间来选择测试的变换。例如,搜索合适的变换可能需要对匹配特征对的加权子集执行姿势估计,然后在将估计的姿势作为变换应用于跟踪地图的点时来检查误差。这种搜索可以使用上面结合图51描述的技术。
不管具体的搜索策略如何,如果在没有识别出合适的变换的情况下结束搜索过程,则合并过程可以继续选择规范地图之一中的另一候选区域以与跟踪地图的相同区域进行比较。替代地或附加地,可以选择跟踪地图的不同区域用于与规范地图的候选区域进行比较,以尝试找到具有适当低误差的变换。
如果在没有识别合适变换的情况下搜索所有候选区域,则跟踪地图可能不与任何现有地图进行组合。可能会采取一项或多项其他操作,例如不执行任何操作就结束合并过程。在一些实施例中,跟踪地图可以被认为代表物理世界中不存在规范地图的部分,并且跟踪地图可以作为新的规范地图存储在一组规范地图中。以这种方式,初始规范地图从跟踪地图继承属性,包括其相对于重力的取向,如上所述。
相反,确定具有适当低误差的变换的能力用作确认候选区域可能代表与跟踪地图相同的物理世界的区域,并且可以合并两个地图。在一些实施例中,识别用于合并两个地图的合适变换可能需要额外的处理,例如通过足够接近的变换找到可以对齐的跟踪地图的多个部分。例如,在跟踪地图中找到多个关键帧时,可以将跟踪地图与规范地图合并,这些关键帧相对于规范地图具有类似的姿势。在那种情况下,所确定的变换可以是针对匹配区域确定的变换的组合,例如变换的平均。
不管确定合适变换的具体方法是什么,该变换可以应用于整个跟踪地图,这可以使跟踪地图与规范地图对齐。可以组合重叠的片段,例如通过对两个地图中的特征点进行平均或聚合,或者用来自新地图的特征点覆盖(overwrite)规范地图的特征点。跟踪地图的非重叠部分可以被附加到规范地图。
发明人已经认识到,当从用户的设备接收的跟踪地图和跟踪地图与之组合的规范地图之间的确定变换中存在误差时,可能会在地图合并过程中引入误差。由于变换中的误差,合并到规范地图中的跟踪地图可能会倾斜,从而导致地图合并过程输出倾斜的合并地图。这种对齐失败可能由多种原因引起,例如混淆特征点之间的视觉相似性。发明人已经开发了一种合并技术(例如由图26的地图合并部分810执行),该技术通过确保在应用确定的变换之后跟踪地图的重力方向与跟踪地图要与之合并的规范地图的重力方向对齐来减少合并误差。
在一些实施例中,跟踪地图的重力方向是从便携式设备中包括的惯性测量单元(例如,IMU 557)获得或导出的。作为具体示例,跟踪地图的重力方向可以从一个或多个IMU中包括的一个或多个加速度计(例如,3D加速度计)获得或导出。可以基于从便携式设备上的各种传感器收集的传感器数据在便携式设备处生成跟踪地图,包括例如机械耦合到与一个或多个IMU相同的支撑结构的相机。当图像从相机输出时,它们可以被变换以具有相对于重力的预定取向。当来自这些图像的特征被组合到跟踪地图时,这些特征相对于重力将具有相同的取向,因此所有生成的跟踪地图可能相对于重力具有相同的对齐方式。
由于所有跟踪地图可能具有相对于重力的相同对齐,因此发送到云以进行地图合并处理的任何跟踪地图将相对于重力对齐。当跟踪地图与任何现有规范地图不匹配并用作新规范地图的开始时,该规范地图可以从跟踪地图继承特性,包括其相对于重力的取向。因此,规范地图可以各自开始与重力对齐。在不是从跟踪地图启动规范地图的系统中,规范地图形成过程可能会受到限制,以开始与重力对齐的每个规范地图。
在一些场景中,由于所确定的变换中的误差,由基于云的服务变换以将跟踪地图中的特征集合与规范地图中的匹配特征对齐的跟踪地图可能会倾斜,例如它不再与重力对齐。尽管从特征之间的匹配紧密度得出的误差度量值较低,但这种情况表明在对齐过程中发生了误差。
通过实施重力约束,使得相对于重力倾斜的经变换的跟踪地图不被用于合并,改进了合并地图的准确性。这样的约束可以在地图合并过程中通过将经变换的跟踪地图的重力方向与云中环境地图的重力方向进行比较,并且仅当重力方向对齐时才合并这两个地图来实现。该约束可以应用在地图合并过程的一个或多个阶段。例如,一旦从对齐匹配特征点确定变换,就可以评估该变换对跟踪地图相对于重力的取向的影响。将跟踪地图相对于重力旋转超过阈值量的变换可以被丢弃,并且搜索合适的变换以将跟踪地图与规范地图的一部分对齐的过程可以重新开始或者可以结束而不合并跟踪地图。替代地或附加地,作为对其中在特征的子集上测试候选变换的合适变换的搜索的一部分,可以仅考虑不相对于重力旋转特征的子集的候选变换。
图56示出了地图合并过程,该过程确保跟踪地图的重力方向与将与之合并的环境地图的重力方向对齐。如图所示,从便携式设备接收的跟踪地图和环境地图,作为一组用于定位和合并的一组规范地图,最初都相对于重力对齐。例如,这种对齐可以通过将那些地图内使用的坐标系的一个坐标与重力对齐来实现。
地图合并过程5600开始于地图合并部分(例如,图23的地图合并部分810)从便携式设备接收跟踪地图(例如,新的跟踪地图)和存储在云中的数据库中的一个或多个环境地图。接收跟踪地图可以包括接收与跟踪地图相关联的数据(例如,特征点的集合和/或本文描述的其他信息),其中数据是相对于重力来组织的。跟踪地图可以由坐标系表示,其中坐标系的坐标之一是重力的方向。
如本文所述,可以从数据库中选择一个或多个环境地图作为与跟踪地图进行比较的候选。该选择可以基于与新跟踪地图相关联的区域标识符、区域属性、或其他元数据。在一些实施例中,可以通过基于一个或多个标准过滤更大范围的规范地图来导出环境地图,这些标准包括例如新跟踪地图的地理位置、与新跟踪地图和环境地图相关联的网络接入点的一个或多个标识符的相似性,表示新跟踪地图和环境地图的内容的度量的相似性,以及新跟踪地图的一部分和环境地图的一部分之间的匹配程度。由地图合并部分接收的一个或多个环境地图可以包括一个或多个环境地图的过滤集合。
在一些实施例中,一个或多个候选环境地图可以例如通过地图排名部分(例如,图23的地图排名部分806)来排名,以用于选择环境地图以与新跟踪地图合并。环境地图可以按相关性排名。过程5600可以一次一个地对候选地图执行,从最高排名的地图开始。如果找到该地图和跟踪地图之间的合适变换,则可以将新跟踪地图与所选候选环境地图合并以创建如本文所述的一个或多个更新/合并的环境地图。如果没有找到合适的变换,则可以用下一个最高排名的候选地图重复过程5600。在地图被分割成区域(例如图块(tile))的实施例中,过程5600地图对图块或地图的其他部分进行操作。
如图56所示,在动作5610,跟踪地图和所选环境地图被对齐。如上所述,对齐可能需要搜索新跟踪地图和已确定为对应的所选环境地图中的特征之间的变换,例如具有匹配标识符的结果。在动作5610之后,可以在动作5612将确定的变换应用于跟踪地图,使得它与所选环境地图对齐。在动作5620,确定在动作5612中变换的对齐跟踪地图是否与环境地图的重力方向对齐。过程5600可以在决定框5622处分支,这取决于变换的跟踪地图是否具有相对于重力的有效对齐。例如,可以基于跟踪地图的重力方向和环境地图的重力方向之间小于阈值量的旋转来识别有效对齐。
响应于确定两个地图的重力方向彼此对齐,可以在动作5630中合并地图。得到的合并地图保持其相对于重力的方向。
响应于在动作5620中确定两个地图的重力方向彼此不对齐,或变换的跟踪地图的重力方向无效的其他指示,在动作5630中,地图合并过程制止合并新跟踪地图与环境地图。相反,响应于在动作5620中确定变换的跟踪地图的重力方向无效,过程5600可以从决定框5622分支回到动作5610,其中尝试进一步的变换以确定两个地图的重力方向是否可以对齐。过程5600可以以这种方式继续循环,直到找到有效对齐或达到过程的某个停止条件。例如,该停止条件可以是基于时间的流逝、尝试预定数量的变换、或其他条件。
在达到这样的停止条件时,可以执行一个或多个动作。在一些实施例中,可以针对一组候选环境地图中的每个环境地图执行地图合并过程5600,直到可以定位与变换的跟踪地图对齐同时保持跟踪地图相对于重力的方向的环境地图。然后可以将新跟踪地图与定位的环境地图合并。或者,如果没有识别出这样的候选地图,则可以采取其他动作,例如将跟踪地图保存为新规范地图,或者结束合并过程而不基于新跟踪地图更新所存储的一组规范地图。
图56示出了合并过程,其中跟踪地图与从规范地图数据库中选择的环境地图合并。类似的处理可以应用于其他地图合并操作。例如,当数据库中的规范地图扩展时,例如通过与新跟踪地图合并,规范地图可能会增长,使得数据库中的两个或更多地图表示物理世界的重叠区域。在一些实施例中,如图56所示的过程可以应用从数据库中选择的地图作为输入来代替跟踪地图,从而可以合并重叠的规范地图。不管输入到合并过程的具体地图是什么,可以实施该过程以保持地图相对于重力的取向,例如基于改变相对于要合并的地图的重力的取向的对齐通过避免合并地图。
使用候选姿势传播的定位
在可能包含多个部件的XR系统的操作中,一个部件的坐标系可以与另一个部件的坐标系相关。这种定义两个部件的相对姿势的关系可以通过定位过程来开发。在如本文所述的定位过程中,在一个部件(例如,第一地图)的坐标系中表达的信息被变换,以便与在另一个部件(例如,第二地图)的坐标系中表达的对应信息对齐。该变换可用于将一个部件的坐标系中指定的位置与另一个部件的坐标系中的相关联,反之亦然。
例如,当XR设备将信息上传到包含定位服务的云并接收其相对于一个或多个持久地图的姿势时,例如,如上文关于图34至图36C所描述的,这种定位操作可能发生。为了简化对可能由候选姿势传播产生的简化处理的解释,使用应用于定位服务的该技术的示例作为示例。然而,该技术可以应用于如下的其他场景,与XR系统的一个部件相关联的特征集合相对于可能与另一个部件相关联的另一组特征点进行定位。例如,当将便携式设备的跟踪地图与存储地图相关联时可以发生这种操作,例如可以发生在地图合并中。图57是该示例的框图。
用于定位的信息可以是稀疏信息,反映为特征集合。这些特征可以从3D环境拍摄的图像中提取。在具有定位服务的示例系统中,便携式设备5710可以累积多个快照(snapshot)5732的批次5730,随时间通过设备上的传感器(例如图像传感器)收集。
例如,快照5732可以包含从选择的图像中提取的特征集合。例如,这些图像可以是如上所述的关键帧,并且可以通过描述符来选择和表示特征,例如上面描述为DSF。那些特征可以相对于用户设备5710的坐标系来成姿势(posed),例如在成姿势的特征装配(rig)中,其中特征相对于用户设备5710上的跟踪地图的坐标系来成姿势。快照可以包括特征以外的信息,包括位置元数据。位置元数据可以指示快照时设备在3D环境中的位置,并且可以是例如无线指纹或地理位置数据。
当设备在3D环境中移动时,它可以收集快照5732并在批次5730中累积它们。可以定期收集快照,例如每2秒,或响应事件,例如设备的运动超过3米。可以将快照添加到设备上的缓冲区,直到从设备发送定位请求,此时可以将缓冲区中累积的快照发送到定位服务。定位请求可以由时间流逝或其他事件被触发。
图57图示了可以在定位服务中执行的过程5700。定位服务可以在云资源上实现,例如一个或多个云服务器,每个云服务器具有一个或多个处理器,这些处理器共同执行图57所示的处理。替代地,定位服务的至少一部分可以在设备本身上或XR系统中的其他地方实现。
定位服务可以将快照5732的批次5730与持久空间信息进行比较,其也可以是同样表示为特征集合的稀疏信息。对于定位服务,持久空间信息可以是一个或多个共享地图5720,其可以用于多个用户设备的定位。为简单起见,图57中仅图示了一个这样的用户设备。
在一些实施例中,共享地图5720可以是存储地图的数据库。如上所述,这些地图可以是规范地图。此外,同样如上所述,可以应用一个或多个标准来从共享地图5720中选择地图。例如,与快照5732相关联的位置元数据可以用于选择可能代表3D环境的相同区域的共享地图,如批次5730的快照5732中所示。
那些标准和/或其他标准可以用于选择所选地图的片段用于定位处理。例如,可以基于位置元数据的比较来选择地图的图块(tile)。作为另一示例,存储地图中的PCF可以基于从中提取一个或多个快照5732中的特征的关键帧与从中生成PCF的关键帧的关键帧描述符的相似性来选择。作为又一示例,如果选择标准导致识别一个或多个地图的多个片段,则可以单独处理那些片段并且可以从针对片段单独计算的定位结果中选择匹配片段。
不管用于选择地图片段的一个或多个标准如何,可以将快照5732的批次5730内的特征集合与所选地图的所选片段中的特征集合进行比较。在图57的示例中,可以针对批次5730中的每个特征集合相对于所选地图的所选片段中的特征集合计算候选定位5748。定位结果5752可以通过位置共识(consensus)功能5750在针对批次5730中的每个特征集合计算的候选定位5748中确定。
共识功能5750可以基于一个或多个标准,该一个或多个标准提供足够高的置信度,即定位结果5752准确地反映了用户设备5710相对于所选地图的相对姿势。作为示例,共识功能5750可以基于候选定位5748的分布的模式。作为具体示例,批次5730可以包含十个快照5732,并且如果候选定位5748中的至少三个具有被识别为该分布的模式的值,该模式下的候选定位5748可以被选为最终定位5752。
在所示实施例中,定位结果可以表示为相对于所选地图对齐快照5732的坐标系的变换。该变换可以返回到用户设备5710,在用户设备5710中,它可以作为正向或逆变换被应用,以将关于共享地图指定的位置与用户设备5710使用的坐标系相关联,反之亦然,如上所述。
在确定定位结果之间是否存在共识时,可以使用不精确匹配技术,使得定位结果足够相似(例如,可以在系统的固有变化内考虑差异)。例如,定位结果可以反映为用户设备的坐标系与所选规范地图的坐标系之间的多维变换。可以通过计算向量差来比较两个变换,并且差异小于阈值的量或百分比的变换可以被认为是相同的。
在模式下没有足够的候选定位5748来满足选择标准的场景中,可能没有关于所选地图的所选片段的定位结果。XR系统可以通过关于其他片段或其他地图如图57所示尝试定位,或采取其他纠正措施来响应。如果没有识别出定位结果,则可以将定位失败的指示返回给用户设备5710,例如上面所描述的。
在图57的示例中,可以在两步过程(其中粗略定位5742和精细定位5746)中针对批次5730中的每个特征集合计算候选定位5748。在图57的示例中,可以根据随机样本一致性(RANSAC)方法来执行定位处理5740。
该处理是基于被比较的特征集合内的对应特征来执行的。在该示例中,比较基于快照5732中的特征集合中的一组特征,这些特征与所选共享地图中的特征集合中的特征相匹配。在图57所示的示例性实施例中。可以通过在两个集合中选择具有匹配描述符的特征来形成匹配特征集。与在此讨论的其他参数一样,匹配描述符可以基于相同的值或可接受的可变性范围内的值来定义。
粗略定位5742可以以这样的方式来执行,相对于在完整特征集之间寻找低误差对齐的处理,它需要很少的处理。作为一个具体示例,粗略定位可能需要10%或更少的处理来对齐完整的特征集。例如,可以仅对每组对应特征中的特征子集执行粗略定位5742。子集中的特征数量可能很小,从而可以比较相对大量的子集而无需大量处理。例如,子集可能包含少于10个特征,例如6个特征。
比较可能需要搜索使子集的特征对齐的变换,使得在基于相似描述符被认为对应的特征之间存在低误差度量。搜索可能需要迭代地测试应用于特征的一个子集的变换并且计算子集的对应特征中的对齐误差。可以通过连续细化来选择测试的变换,以达到为正在处理的子集提供最低结果误差的变换。
可以选择和处理多个子集,以便为每个子集计算与子集的特征相对应的变换和所得误差。基于这些结果,可以识别具有最低误差度量的子集。与该子集相关联的变换可以是粗略定位结果5744。粗略定位结果5744可以用作粗略变换,其是精细定位过程5746的输入。
可以基于在粗略定位中处理的对应特征的相同集合,类似地执行精细定位过程5746。然而,在精细定位过程5746中,所选特征子集可能更大。例如,可以在精细定位过程5746中处理具有四到十倍以上特征的子集。作为具体示例,粗略定位可以基于具有六个特征的子集,并且可以利用具有25个特征的子集来计算精细定位。
用于精细定位的处理可能受到限制,因为用于对齐特征子集的变换的搜索空间可能基于粗略变换而受到限制。作为特定示例,粗略定位结果5744可以指示快照必须平移特定距离X,以对应于共享地图的特征。针对变换的搜索可能仅限于施加平移X+/-Δ的变换。参数Δ例如可以是5米。类似的约束可以施加在所测试的变换的其他维度上,例如旋转。
在精细定位过程5746的子集中,精细定位结果可以被提供作为候选定位5748。如图57所示,这样的处理可以被执行多次,对批次5730中的每个快照5732执行一次。针对每个快照5732中的特征集合计算的精细定位产生一个候选定位5748,使得存在多个候选位置,共识函数5750可以从这些候选位置选择定位结果5752。
发明人已经认识到并意识用于进一步减少处理以匹配空间信息的技术,例如在定位过程期间发生的。发明人已经认识到,在许多情况下,批次中的特征集合的粗略定位结果将适用于批次中的其他特征集合。通过计算特征集合的粗略定位结果,然后选择性地传播该粗略定位结果以将其用于批次中其他特征集合的精细定位处理,可以减少批次的整体处理。
图58图示了作为过程5700的变体的过程5800。在该示例中,定位过程5840的输入和输出与定位过程5740(图57)的相同。定位过程5840与定位过程5740的不同之处在于仅对批次5730中的快照5732的第一部分执行粗略定位。针对第一部分中的一个快照计算的粗略定位结果被传播到快照的第二部分用于计算快照的第二部分的精细定位。这种方法避免了对快照的第二部分进行粗略定位处理。
在图58的示例中,粗略定位被显示为在其中一个快照上执行,并且粗略定位结果5744被传播到与所有其他快照5732相关联的特征的集合。然而,发明人已经认识到并意识到对于给定的精度水平所需要的减少的计算负载可以通过选择性地将粗略定位传播到其他特征集合来实现。
可以基于一个或多个标准来确定是否使用来自第一特征集合的粗略定位结果来计算第二特征集合的精细定位结果,该标准可以基于特征集合来评估。因此,对于任何批次的快照,处理可以如图58所示,其中对一个特征集合执行粗略定位,并且粗略定位被传播到所有其他特征集合,以基于该粗略定位结果进行精细定位处理。在另一个极端,基于标准的运行时评估,不传播粗略定位结果,并且对所有特征集合的处理可以基于针对该特征集合单独计算的粗略定位结果(例如,如图57所示)。两者之间的任何替代方案也是可能的,其中对特征集合的第一部分中的任意数量的特征集合进行精细定位是基于对该特征集合的粗略定位来执行的,并且对特征集合的第二部分中的任意数量的特征集合进行精细定位是基于第一部分中的特征集合的粗略定位来执行的。
用于确定是否将粗略姿势从第一特征集合传播到第二特征集合以进行精细定位的标准可以涉及不同的参数,并且可以在处理中的不同时间应用。例如,该标准可以与针对特征集合计算的候选定位相关,可以从这些特征集合传播粗略定位。替代地或附加地,该标准可以与特征集合的联合特征有关,粗略定位将从这些特征集合传播并且粗略定位将会传播到该特征集合。作为进一步的替代,标准可以与候选定位5748的批次的特征有关,该特征是由将粗略定位传播到一些或所有其他特征集合而产生的。
例如,可以应用来确定是否将第一快照的粗略定位结果应用于第二快照的一个这样的标准可以是针对第一快照计算的定位结果的置信度。可以基于与第一快照相关联的第一特征集和正在对其进行定位尝试的地图中的对应特征集之间的位置对应关系来计算第一快照的精细定位结果的置信度。
例如,可以通过将作为精细定位的一部分计算的变换应用于第一特征集来计算置信度度量。然后可以在第一集的特征和地图中的基于相似的特征描述符而被选择为匹配那些特征的特征之间,计算位置偏差的度量。作为一个具体示例,可以通过对于被标识为匹配的特征进行计数来计算度量,这些特征足够接近以被认为具有重合位置(“内点”)。在其他实施例中,度量可以是内点与外点的比率。
可以应用与用于确定计算的精细定位是否具有足够低的误差以提供作为候选定位5748的相同的置信度度量。然而,可以使用更高的阈值。例如,为了使用精细定位作为候选定位,内点的阈值数量可以是25,或者地图中具有匹配特征的特征集中的至少13%的特征。为了传播粗略定位,内点的阈值数量可以是35,或者地图中具有匹配特征的特征集中的至少18%的特征。
另一个标准可以是快照之间的视差是否高于阈值。在所描述的实施例中,每个快照都源自便携式设备的3D环境的图像。如果设备在获取第一特征集合的图像和获取第二特征集合的图像之间移动,则两个图像中的特征应该相对于彼此偏移,这会产生视差。可以通过比较第一和第二特征集合中的对应特征的位置来确定视差。替代地,可以基于在对应于第一和第二特征集合的图像的捕获时间之间检测到的便携式设备的运动来确定视差的测量。如上所述,XR系统中使用的便携式设备可以包括输出运动信息的IMU。视差可以用图像的像素或设备在图像捕获之间的移动量来表示,这可以用英尺或度来表示。不管如何测量视差,在一些实施例中,仅当相关联图像之间的视差超过阈值时,第一特征集合的粗略定位可以用于第二特征集合的精细定位。
当粗略定位结果从一些快照传播到其他快照时,另外的标准可以涉及候选定位5748之间的共识程度。在一些实施例中,用作阈值的共识程度可以根据是否使用传播而改变。例如,在图57的示例中,当候选定位中的至少三个或至少30%匹配时,共识函数5750可以输出定位结果。随着粗略定位的传播,阈值数量可以增加到匹配的候选定位的至少五个或至少50%。
在一些实施例中,阈值可以是自适应的,这取决于匹配具有传播到它们的粗略定位的候选定位的数量。如果在该模式下没有一个候选定位具有传播到它们的粗略定位,则如图57中可以使用较低阈值。相反,如果该模式下超过一半的候选定位具有传播给它们的粗略定位,则可以应用更高的阈值。如果该模式下具有传播给它们的粗略定位的候选定位数量在无到一半之间,则阈值可以在较低阈值和较高阈值之间成比例。
在当粗略定位从一些特征集合传播到其他特征集合时,候选定位5748之间没有足够共识的场景中,可以执行如图57中所示的完整定位过程。在发现不一致的共识之后,可以使用粗略定位和精细定位两者来计算所有快照的候选定位,如图57所示。替代地,可以仅重新计算特征集合的第二部分的精细定位,其是基于从第一部分中的特征集合传播的粗略定位计算的。类似地,如果用于将粗略定位从一个特征集合传播到另一个特征集合的其他标准对于任何特征集合都不满足,则处理可以默认为如图57所示的完整过程。
在结合图57和图58所描述的处理不产生计算定位结果5752的场景中,可以执行如本文别处描述的其他处理。例如,返回给用户设备5710的结果可以是定位失败的指示。替代地,可以针对其他地图或同一地图的其他片段进行进一步的定位尝试。在一些实施例中,如图58所示利用粗略定位结果的传播的处理可以用来代替其他定位处理,并且在许多情况下可能需要更少的计算,这平均会导致更少的处理。
图58的过程结合相对于存储地图对设备进行定位来说明。可替代地或附加地,该处理可以应用在其他上下文中。在图58中,定位结果是可用于如下过程的变换,例如相对于便携式设备定位虚拟内容,以使得多个便携式设备中的每一个可以以相对于物理世界以相同位置关系渲染虚拟内容,从而为多个用户提供虚拟内容的共享体验。然而,只要有一批次快照可用于计算获取这些快照的坐标系与地图的坐标系或其他特征集合之间的变换,就可以使用该过程。
例如,在将跟踪地图合并到规范地图中,来自跟踪地图的一组2D特征,例如与持久姿势相关联的那些特征,可以与规范地图中的3D特征进行比较。图58的处理可以应用来确定特征集是否匹配,如果匹配,则确定特征集之间的变换。该变换的计算可以用于将跟踪地图与规范地图对齐,从而可以组合这些地图。
作为另一个示例,图58的过程的输出虽然被描述为一种变换,但更一般地描述了XR系统的两个部件之间的相对姿势。可以在XR系统的第一部件和第二部件之间计算相对姿势,该第一部件建立在其中获取快照5732的坐标系,第二部件建立与快照进行比较的特征集合的坐标系。如图58所示的处理不依赖于这些部件的性质,并且可以在其他情况下用于确定XR系统的两个部件之间的相对姿势。
不管图58的处理的输入的源如何以及如何使用输出,平均而言,与用于计算两个部件之间的相对姿势的其他技术相比,该处理可能需要更少的计算资源。尽管如此,该计算可能具有相当的准确性,提供了诸如在XR系统中更好的用户体验等好处。
重力辅助远程定位
如上所述,定位XR设备可能需要找到由XR设备捕获的特征与先前存储的地图中的特征之间的匹配,并计算XR设备在先前存储的地图的坐标系中的姿势。XR设备的姿势可以通过找到由XR设备捕获的特征集合与存储的地图中匹配的特征集合之间的变换来确定。这种变换提供了存储的地图和XR设备的坐标系之间的变换,反之亦然。使用指示相对于XR设备的坐标系和相对于存储的地图的坐标系的重力方向的信息可以简化计算以找到合适的变换,使XR系统能够高效且准确地在先前存储的地图中定位XR设备,甚至是可能包含大量特征的超大环境的地图中定位XR设备。
在先前存储的地图中定位XR设备可能会消耗大量的计算能力,并引起延迟显示与XR设备的位置对应的虚拟内容。XR设备的姿势可以用六个自由度来表示,包括例如在三个垂直轴上的平移和围绕三个垂直轴的旋转。由XR设备捕获的特征集合与存储地图中的匹配的特征集合之间的变换可以相应地用六个自由度表示。然而,限制计算这种变换的过程以仅寻找将相对于XR设备的坐标系的重力方向变换为与相对于存储地图的坐标系的重力方向对齐的变换,将可能的解决方案限制为仅具有四个自由度的变换,与寻找具有六个自由度的变换相比,可以通过更少的处理来识别它们。
如上所述,找到用作可接受的定位结果的变换可能需要迭代过程,该过程可以执行多次。仅当针对多个特征集合计算的候选变换之间存在共识时,才可以接受计算出的变换作为定位结果,每个特征集合都提供便携式设备的环境的快照。计算每个候选变换又可以包括对特征集合中的特征子集进行多次迭代处理以确定粗略定位。对特征子集的计算也可以迭代地执行,正如从粗略定位结果确定候选变换的处理一样。
为了提供稳健的结果,处理量可以随着每个特征集合中特征数量的增加和/或存储地图的大小的增加而增加。
在此描述的交叉现实系统可以有效且准确地在先前存储的地图中定位XR设备,甚至是可能包括大量特征的非常大环境的地图。在一些实施例中,交叉现实系统可以通过基于估计的重力方向限制定位结果来提供更快和更准确的定位处理。在一些实施例中,基于估计的重力方向限制的定位处理可以提供具有更短30%至40%的运行时间的定位结果,例如,从10秒减少到6秒,并且具有类似或改进的定位精度。
为了实现基于估计的重力方向所限制的定位处理,用于定位的持久地图可以具有与其相关联的重力方向。此外,为定位而发送的数据也可以具有与其相关联的重力方向。
重力信息可以与存储的地图相关联作为地图构建的一部分。例如,存储的地图可以从重力信息可用的来源进行管护(curate)。替代地或附加地,如上所述,存储的地图可以通过合并其他地图来自动构建,其他地图中的至少一个可以具有相关联的重力方向,重力方向可以由合并地图来继承。当后续地图合并到其中时,生成的地图的取向可能会被保留。
重力信息可以以一种或多种方式与为定位而发送的数据相关联。在各种实施例中,设备可以将估计的重力方向与定位请求一起发送和/或定位服务可以访问设备的重力信息。在一些实施例中,可以在设备上生成重力信息。例如,便携式设备可以包括IMU和/或一个或多个其他传感器,从中可以确定估计的重力方向。设备上的跟踪地图的坐标系,或用于对为定位而发送的数据进行姿势设置的其他坐标系,可以相对于估计的重力方向进行取向。替代地或附加地,指示这样的坐标系相对于估计的重力方向的取向的向量可以被包括在定位请求中。
替代地或附加地,可以在定位服务或与设备通信的其他服务中生成设备的重力向量。例如,便携式设备可以用包括定位和/或地图合并功能的服务来建立会话。便携式设备可以将其跟踪地图发送到服务,该服务可以例如在地图合并过程中将跟踪地图与存储的地图对齐。作为这种对齐的结果,该服务可以生成向量,表示与跟踪地图相关的估计重力方向。该向量可以存储在服务上供以后与来自该设备的定位请求一起使用和/或传送给设备,该设备可以应用重力向量以与估计的重力方向对齐坐标系,该坐标系用于对与定位请求一起发送的数据进行姿势设置和/或将重力向量与定位请求一起进行发送。
系统可以应用这些技术中的一种或多种来将重力信息合并到定位过程中。在一些实施例中,诸如基于云的定位服务和/或地图合并服务的远程服务可以被配置为实施这些技术中的一个或多个。应用于设备和服务之间任何交互的技术可以取决于设备的能力和/或关于重力的可用信息。例如,在重力信息不可用的情况下,服务可以在不使用重力信息的情况下执行定位。在重力信息可用的其他场景中,可以使用其他技术。系统可以基于设备的特性和/或由设备发送的信息的特性来动态地选择将哪种技术用于与设备的每次交互。
在一些实施例中,定位查询(例如,如上文关于图43所描述的)可以包括一批专用数据结构。专用数据结构(例如,成姿势的特征装配(PFR))可以聚合在设备的3D环境中捕获的位置信息(例如,特征、特征的描述符、持久姿势),并将位置信息与位置元数据(例如,无线指纹、地理位置信息)进行组合。在一些实施例中,特征可以被投影到2D空间中,例如当从2D图像中提取特征时可能发生。如果存储的地图以不同的维度表示,例如如上所述的三个维度,则仍然可以进行特征集合的比较,例如通过将具有较高维度的特征投影到较低维度中。
专用数据结构可以包括特征集合相对于一个或多个估计的重力方向的关系。
估计的重力方向可以由一个或多个源提供。在一些实施例中,估计的重力方向可以至少部分地由一个或多个传感器(例如,惯性测量单元(IMU))提供。在一些实施例中,估计的重力方向可以至少部分地由地图合并服务提供(例如,上面关于图56描述的地图合并过程5600)。
在一些实施例中,重力信息可以包括指示估计的重力方向的一个或多个向量。在一些实施例中,特征集合可以共享指示特征集合共有的估计重力方向的向量。在一些实施例中,由同一传感器捕获的特征集合的一部分可以共享指示特征集合的该部分共有的估计重力方向的向量。
交叉现实系统可以在一种或多种模式下运行,这取决于例如捕获从中提取特征的图像的便携式设备是否可以估计重力方向,和/或网络是否具有足够的带宽来传输专用数据结构。在一些情况下,交叉现实系统可以在主动(active)对齐模式下运行,例如,当便携式设备可以通过集成在设备中的IMU来估计重力方向。在一些情况下,交叉现实系统可以在被动(passive)对齐模式下运行,例如,当便携式设备没有集成IMU并且无法以其他方式估计重力方向时,和/或当网络带宽有限时。
在主动对齐模式中,交叉现实系统可以在定位处理期间主动地将定位查询的PFR与对应的估计重力方向对齐。PFR可以在任意参考系中表示,这取决于例如当设备发起新会话时设备的取向。PFR可以连同在任意参考系中表达并指示估计的重力方向的向量一起提供。PFR以及指示估计的重力方向的向量可以通过将用于估计姿势的大量计算中的每一个中的六个自由度的计算减少到四个自由度的计算来用于快速且准确的定位。在一些实施例中,可以通过基于指示估计的重力方向的向量固定两个旋转自由度,并计算剩余的一个旋转自由度和三个平移自由度来计算可能的变换。
在被动对齐模式中,交叉现实系统可以被动地将定位查询中的PFR与对应的估计重力方向对齐。PFR可以在具有与估计的重力方向对齐的坐标系的参考系中表达。与主动对齐模式类似,在具有与估计的重力方向对齐的坐标系的参考系中表达的PFR可以通过将用于估计姿势的大量迭代的每次迭代中的六个自由度的计算减少到四个自由度的计算来用于快速且准确的定位。
图59中图示了可以在一种或多种模式下操作的XR系统5900。图52是图示根据一些实施例的关于由XR系统5900处理的3D环境的信息的示意图。图59所示的处理可以在便携式设备上实现,或者可以分布在设备和一个或多个远程处理系统(例如云服务)上。
XR系统5900可以包括先前存储的地图5920,其可以由例如上面关于图56描述的地图合并过程6900生成。在一些实施例中,存储的地图5920中的两个或更多个可以具有共享坐标系。共享坐标系的坐标可以与估计的重力方向对齐,这可以由例如地图合并过程5600计算。在图52的示例中,存储的地图包括在共享坐标系5204中表示的3D特征5212i、5212j、5212k。共享坐标系5204具有三个垂直轴x、y、z。存储的地图具有向量[0,1,0],表示估计的重力方向。在所示示例中,向量[0,1,0]与规范坐标系5204的y坐标对齐,并垂直于x-z平面。
返回参考图59,XR系统5900可以包括发送定位请求5930的便携式设备5910。在所示示例中,便携式设备5910能够在便携式设备5910捕获3D环境的信息时估计重力方向。便携式设备5910可以是具有集成显示器和传感器的头戴式设备、手持移动设备(例如,智能电话、智能手表、平板计算设备等),或具有传感器的其他类型的便携式设备。
便携式设备5910可以在定位请求5930中累积一批快照5932。增加快照的数量可以提高定位结果的准确性,因为定位服务接收到关于围绕便携式设备的3D环境的部分的更多信息。类似图57的快照5732,快照5932可以包括位置元数据,该位置元数据指示快照时便携式设备在3D环境中的位置并且可以是例如无线指纹或地理定位数据。快照5932可以包含从由便携式设备5910捕获的图像中提取的特征的集合。集合的特征可以相对于便携式设备5910本地的坐标系来成姿势。快照5932可以包括特征的姿势。快照5932可以包括指示便携式设备在便携式设备5910本地的坐标系中估计的重力方向的向量。在一些实施例中,该向量可以表示为估计的重力方向和便携式设备5910本地的坐标系的坐标之间的偏移(例如,图52中的θ)。
图52示出了由便携式设备5910捕获示例性快照时的相对取向,其中特征的集合以2D表示。在图示的示例中,便携式设备5910包括多个传感器,这里图示了四个相机cam0至cam3,诸如图5B中的相机552和/或553。每个相机可以捕获围绕便携式设备5910的3D环境的一部分的图像(例如,5208)。便携式设备5910可以具有设备坐标系5202,该设备坐标系5202可以在新会话开始时任意确定。在一些实施例中,相机cam0至cam3可以具有各自的相机坐标系,相机坐标系可以在新会话开始时任意确定。相机在设备坐标系5202中的位置可以由相应的相机位置坐标向量(例如,t0,t1,t2,t3)来表示。可以从捕获的图像中提取2D特征(例如,5210i、5210j、5210k)。在一些实施例中,提取的2D特征可以直接在设备坐标系5202中表达。在所示示例中,提取的2D特征在各个相机坐标系中表达,可以通过相机位置向量(例如,t0、t1、t2、t3)将相机坐标系变换到设备坐标系。
在图52的示例中,便携式设备5910包括被配置为检测移动和取向的两个IMU,IMU0至IMU1,例如图5B中的IMU 557。IMU可以被配置为估计重力方向。在一些实施例中,IMU可以具有各自的IMU坐标系,其可以在新会话开始时任意确定。在一些实施例中,IMU相对于相机的位置可以由相应的IMU位置向量(例如,s0、s1、s2、s3)表示。在一些实施例中,IMU相对于设备坐标系的位置可以直接由相应的IMU位置向量(例如,w0、w1)表示。
快照5932可以包括向量,该向量指示便携式设备的估计的重力方向。在一些实施例中,指示估计的重力方向的向量可以从初始指示相对于相应IMU坐标系(例如,5214a、5214b)表达的估计的重力方向的向量来计算。在一些实施例中,指示估计的重力方向的向量可以被变换成坐标系,在该坐标系中它们可以被平均或以其他方式组合成设备的估计的重力方向。在从诸如地图合并服务等其他来源导出重力估计的实施例中,可以类似地将其他重力估计变换到可以组合这些估计的坐标系。
从中提取特征的图像可以类似地变换到该坐标系中。在所示示例中,向量5214a和5214b可以通过IMU位置向量(例如,s0、s1)变换到相应的相机坐标系。在一些实施例中,指示估计的重力方向的向量可以相对于设备坐标系5202(例如,5216)通过例如如下方式来表达:通过IMU位置向量(例如,w0、w1)将向量5214a和5214b变换到设备坐标系5202。
返回参照图59,XR系统5900可以包括定位部件,该定位部件可以接收由便携式设备5910发送的定位请求5930,计算便携式设备5910在先前存储的地图5920中的最终位置5952,并且将最终位置5952提供给便携式设备5910。类似于图57的过程5700,定位部件可以包括配置为计算定位请求5930的各个快照5932的候选定位5948的定位处理5940,以及配置为基于计算的候选定位5948提供最终位置5952的位置一致功能5950,使得最终位置5952准确地反映便携式设备5910相对于存储的地图的相对姿势。
定位处理5940可以接收快照5932,每个快照可以包括诸如WiFi指纹的位置元数据和诸如2D特征的集合、2D特征的描述符和/或一个或多个估计重力方向的位置信息。类似于图57的定位处理5740,定位处理5940可以包括被配置为提供粗略定位结果5944的粗略定位5942和被配置为基于粗略定位结果5944提供定位5948的精细定位5946。
定位结果(例如,5944、5948)可以表达为将快照5932的2D特征与存储地图5920的3D特征进行对齐的变换,其中快照5932的2D特征可以在便携式设备5910本地的一个或多个坐标系中表达,存储地图5920的3D特征可以在存储地图5920的共享坐标系中表达。在一些实施例中,定位处理5940可以被配置为基于快照5932的一个或多个估计重力方向来限制两个旋转自由度,基于受限制的两个旋转自由度来计算一个旋转自由度,并且计算三个平移自由度。这种处理将六个自由度的计算迭代减少到四个自由度的计算迭代,并且能够快速且准确地提供定位。
在一些实施例中,粗略定位5942和精细定位5946中的至少一个可以被配置为通过基于一个或多个估计的重力方向限制两个旋转自由度来计算变换。在一些实施例中,粗略定位5942可以被配置为通过基于一个或多个估计的重力方向限制两个旋转自由度来计算粗略定位结果5944,因为粗略定位可能需要更多的计算迭代来搜索存储地图5920的整个数据库中的匹配3D特征。精细定位5946可以被配置为通过计算六个自由度来计算候选定位5948,因为粗略定位结果5944减小了存储地图5920的数据库中的搜索范围。这种方法降低了计算复杂度,同时提供了定位结果的高精度。
在图52的示例中,定位可以表示为设备坐标系5202和共享坐标系5204之间的变换。变换可以包括三个旋转自由度5218和三个平移自由度5206。例如,粗略定位5942可以使得指示设备坐标系5202中的估计的自由方向的向量5216与共享坐标系5204并且先前与估计的自由方向对齐的y坐标对齐。粗略定位5942然后可以计算两个坐标系在x-z平面上的一个旋转自由度和三个平移自由度,使得2D特征5210i、5210j、5210k与各自的3D特征5212i、5212j、5212k对齐。
如上所述,在一些实施例中,XR系统5900可以在主动对齐模式下操作。在下面描述的一些实施例中,XR系统5900可以以被动对齐模式操作。图60和图61是根据一些实施例的在被动对齐模式下操作的XR系统5900的框图。在被动对齐模式中,定位处理5940可以接收包括与估计的重力方向对齐的快照(例如,6042、8132)的定位请求(例如,6030、8130)。在一些实施例中,快照可以包括指示在发送定位请求的设备本地的坐标系中估计的重力方向的向量。在图52的示例中,设备5910可以使得其用于在定位请求中对特征进行姿势设置的坐标系相对于估计的重力方向对齐。在图52的示例中,设备坐标系5202相对于重力向量5216具有角度θ的尺寸偏移。设备可以通过变换坐标系以将角度θ减小到基本为零来相对于重力对齐其坐标系5202。此后,快照内的数据可以相对于这个变换后的坐标系来成姿势。在一些实施例中,作为其初始化过程的一部分,设备可以建立其已经与估计的重力方向对齐的坐标系5202。无论定位请求中的数据是相对于具有与重力对齐的维度的坐标系来设置姿势还是变换为具有与估计的重力方向对齐的维度的坐标系,生成的数据都可以被认为是重力对齐的。
在图60的示例中,便携式设备5910在发送定位请求6030之前将快照6032中的数据与估计的重力方向对齐。在这样的配置中,XR系统5900中设备与服务交换数据的网络的带宽可以小于,例如,如果重力向量从设备发送到服务和/或从服务发送到设备和/或跟踪地图从设备发送到服务以使服务能够确定相对于对于定位数据进行姿势设置所在的坐标系的重力方向。因此,如图60所示的被动对齐模式可以用于网络带宽受限的场景。
在图61的示例中,便携式设备8110不估计重力方向,并且可以通过发送设备跟踪地图8160,从诸如XR系统5900的地图合并服务的服务获得估计的重力方向。如上所述,地图合并服务可以在跟踪地图和存储地图的坐标系之间执行地图对齐。在存储地图相对于重力取向的场景中,如上文结合重力保持地图合并所述,跟踪地图相对于存储地图的对齐使得能够计算相对于跟踪地图的重力方向。地图对齐部件8170可以类似地执行这样的对齐。重力估计部件8180可以应用用于将跟踪地图与存储地图对齐的变换来计算跟踪地图8160的估计重力方向。
可以将估计的重力方向发送到便携式设备8110,并且代替或补充使用设备上的传感器进行的重力测量。在图61的示例中,重力估计可应用于在具有与重力对齐的维度的坐标系中作为定位请求8130的一部分发送的姿势特征。可以处理重力对齐信息以形成快照8132的专用数据结构。定位请求8130的后续处理可以如上所述进行以处理定位请求6030。地图对齐部件8170和重力估计部件8180可以在服务器中,或者在其中一组候选地图被发送到设备的实施例中的设备上。
在上述实施例中,作为定位请求的一部分发送的所有数据都是相对于相同的本地设备坐标系成姿势的。在这种情况下,可以使用相对于重力的单一方向来处理所有此类数据。在作为定位请求的一部分发送的数据相对于多个坐标系成姿势的实施例中,可能存在多个重力方向,一个在所使用的坐标系中的每一个中进行表达。例如,不是将从多个相机拍摄的图像转换为设备上的公共坐标系,而是可以将每个图像的特征发送到相应相机的坐标系中,这样定位请求可以包括对于每个相机的相对于重力的取向。
其它考虑
图62示出根据一些实施例的计算机系统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环境中应用。
作为另一个示例,结合诸如可穿戴设备的设备来描述实施例。应当理解,可以经由网络(诸如云)、分立应用和/或设备、网络和分立应用的任何合适的组合来实现在此描述的一些或全部技术。
此外,图25提供了可用于过滤候选地图以产生一组高排名地图的标准的示例。代替所描述的标准或除了所描述的标准之外,可以使用其它标准。例如,如果多个候选地图具有用于过滤掉不太理想的地图的度量的相似值,则候选地图的特性可以用于确定哪些地图被保留为候选地图或被过滤掉。例如,更大或更密集的候选地图可以优先于较小的候选地图。
此类改变、修改和改进旨在是本公开的一部分,并且旨在处于本公开的精神和范围内。此外,尽管指示了本公开的优点,但是应当理解,并非本公开的每个实施例将包括每个描述的优点。在一些情况下,一些实施例可能不实现在此描述为有利的任何特征。因此,前面的描述和附图仅作为示例。
本公开的上述实施例可以以多种方式中的任何一种方式来实现。例如,可以使用硬件、软件或其组合来实现实施例。当以软件实现时,软件代码可以在任何合适的处理器或处理器集合上执行,无论是在单个计算机中提供还是在多个计算机中分布。这种处理器可以被实现为集成电路,在集成电路部件中具有一个或多个处理器,包括本领域已知的可商购的集成电路部件,其名称诸如CPU芯片、GPU芯片、微处理器、微控制器或协处理器。在一些实施例中,可以在定制电路(诸如ASIC)或者在通过配置可编程逻辑器件而产生的半定制电路中实现处理器。作为另一替代方案,处理器可以是较大的电路或半导体设备的一部分,无论是可商购的,半定制的还是定制的。作为特定示例,一些可商购的微处理器具有多个核心,使得这些核心中的一个或子集可以构成处理器。但是,可以使用任何适当格式的电路来实现处理器。
此外,应当理解,计算机可以以多种形式中的任何一种形式来体现,诸如机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可以被嵌入通常不被认为是计算机但具有合适的处理能力的设备中,该设备包括个人数字助理(PDA)、智能电话或任何其它合适的便携式或固定电子设备。
此外,计算机可以具有一个或多个输入和输出设备。这些设备尤其可以用于呈现用户界面。可以用于提供用户界面的输出设备的示例包括用于视觉呈现输出的打印机或显示屏,以及用于听觉呈现输出的扬声器或其它声音生成设备。可以用于用户界面的输入设备的示例包括键盘和指向设备,诸如鼠标、触摸板和数字化平板计算机。作为另一个示例,计算机可以通过语音识别或其它可听格式接收输入信息。在所示的实施例中,输入/输出设备被示为与计算设备物理上分开。然而,在一些实施例中,输入和/或输出设备可以物理地集成到与处理器或计算设备的其它元件相同的单元中。例如,键盘可能实现为触摸屏上的软键盘。在一些实施例中,输入/输出设备可以与计算设备完全断开,并且通过无线连接在功能上集成。
这种计算机可以通过任何适当形式的一个或多个网络互连,包括作为局域网或诸如企业网络或互联网的广域网。这种网络可以基于任何适当的技术,并且可以根据任何适当的协议进行操作,并且可以包括无线网络、有线网络或光纤网络。
此外,在此概述的各种方法或过程可以被编码为可在采用多种操作系统或平台中的任何一种操作系统或平台的一个或多个处理器上执行的软件。另外,可以使用多种合适的编程语言和/或编程或脚本工具中的任何一种来编写此类软件,并且还可以将其编译为可执行的机器语言代码或在框架或虚拟机上执行的中间代码。
在这方面,本公开可以体现为采用一个或多个程序编码的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩光盘(CD)、光盘、数字视频盘)(DVD)、磁带、闪存、现场可编程门阵列或其它半导体设备或其它有形计算机存储介质中的电路装置),该程序在一个或多个计算机或其它处理器上执行时将执行实现以上讨论的本公开的各种实施例的方法。从前述示例显而易见,计算机可读存储介质可以将信息保留足够的时间,以提供非暂态形式的计算机可执行指令。这种一个或多个计算机可读存储介质可以是可移动的,使得可以将存储在其上的一个或多个程序加载到一个或多个不同的计算机或其它处理器上,以实现如上所述的本公开的各个方面。如在此所使用的,术语“计算机可读存储介质”仅涵盖可以被认为是制品(即,制造品)或机器的计算机可读介质。在一些实施例中,本公开可以体现为除计算机可读存储介质之外的计算机可读介质,诸如传播信号。
在一般意义上在此使用术语“程序”或“软件”来指代可用于对计算机或其它处理器进行编程以实现如上所述的本公开的各个方面的计算机代码或计算机可执行指令集。另外,应当理解,根据该实施例的一方面,当被执行时执行本公开的方法的一个或多个计算机程序不需要驻留在单个计算机或处理器上,而是可以以模块化的方式在多个不同的计算机或处理器之间分布,以实现本公开的各个方面。
计算机可执行指令可以具有许多形式,诸如由一个或多个计算机或其它设备执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常,在各种实施例中,程序模块的功能可以根据需要进行组合或分布。
此外,数据结构可以以任何合适的形式存储在计算机可读介质中。为了简化说明,可以示出数据结构具有通过数据结构中的位置而相关的字段。同样地,可以通过传达字段之间的关系的在计算机可读介质中的位置为字段分配存储来实现此类关系。然而,可以使用任何合适的机制来建立数据结构的字段中的信息之间的关系,包括通过使用指针、标签或在数据元素之间建立关系的其它机制。
本公开的各个方面可以单独、组合或在前述实施例中未具体讨论的各种布置中使用,并且因此,在其应用中不限于在前面的描述中阐述或在附图中示出的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其它实施例中描述的方面组合。
此外,本公开可以体现为一种方法,已经提供了方法的一个示例。作为该方法的一部分执行的动作可以以任何合适的方式排序。因此,可以构造实施例,其中以与所示出的顺序不同的顺序执行动作,即使在说明性实施例中被示为顺序动作,该动作也可以包括同时执行一些动作。
在权利要求中使用诸如“第一”、“第二”、“第三”等序数术语来修改权利要求元素本身并不表示一个权利要求元素相对于执行方法动作的另一个顺序或临时顺序的任何优先级、优先权或顺序,但仅用作标记,以区分具有某些名称的一个权利要求元素与具有相同名称的另一个元素(但用于序数词)来区分权利要求元素。
另外,在此使用的措词和术语是出于描述的目的,并且不应被视为限制。在此“包括”、“包含”或“具有”、“包含了”、“涉及”及其变体的使用旨在涵盖其后列出的项目及其等同物以及其它项目。
Claims (24)
1.一种XR系统,其支持相对于持久地图数据库中的一个或多个持久地图指定虚拟内容的位置,所述XR系统包括定位服务,所述定位服务包括:
通信部件,其被配置为从便携式电子设备接收关于三维(3D)环境的图像中的多个特征集合的信息,所述信息包括在坐标系中表达的所述多个特征集合的特征的位置;以及
至少一个处理器,其被配置为执行计算机可执行指令,所述计算机可执行指令实现被连接到所述通信部件的定位部件,所述定位部件被配置为:
相对于估计重力方向关联所述坐标系的取向;
通过对所述多个特征集合中的每个特征集合执行将所述特征集合与所述持久地图数据库中的持久地图的部分之间的变换确定为候选定位的过程,针对所述多个特征集合计算多个候选定位,其中:
所述持久地图的所述部分具有相关联的估计重力方向;以及
基于所述坐标系的所述取向来约束所述确定的过程,以确定将所述坐标系与所述相关联的估计重力方向对齐的变换;以及
基于所述多个候选定位之间的共识,生成所述便携式电子设备的定位。
2.根据权利要求1所述的XR系统,其中,相对于估计重力方向关联所述坐标系的所述取向包括:从所述便携式电子设备接收所述取向。
3.根据权利要求1所述的XR系统,其中,相对于估计重力方向关联所述坐标系的所述取向包括:
从所述便携式电子设备接收跟踪地图;
计算所述跟踪地图相对于持久地图的取向,其中,所述持久地图相对于重力估计被定向;
将所计算的取向存储在持久性存储中,作为所述便携式电子设备的取向;以及
随后基于从所述便携式电子设备接收到关于多个特征集合的所述信息,访问所存储的所计算的取向。
4.根据权利要求1所述的XR系统,其中,所述多个特征集合的所述坐标系相对于所述估计重力方向的所述取向包括:指示所述估计重力方向的向量。
5.根据权利要求1所述的XR系统,其中,确定特征集合的变换的过程受到以下约束:
至少部分地基于相应的坐标系相对于估计重力方向的所述取向,固定两个旋转自由度,以及
至少部分地基于所固定的两个旋转自由度,计算一个旋转自由度和三个平移自由度。
6.根据权利要求1所述的XR系统,其中,针对特征集合计算候选定位包括:
相对于所述持久地图数据库中的所述持久地图,执行所述特征集合的粗略定位,其中,粗略定位包括计算所述便携式电子设备相对于所述持久地图数据库中的持久地图的粗略变换,以及
相对于所述持久地图执行所述特征集合的精细定位,其中,所述特征集合的精细定位包括:基于所述粗略变换,计算所述便携式电子设备的候选定位。
7.根据权利要求6所述的XR系统,其中,计算所述便携式电子设备相对于所述持久地图数据库中的所述持久地图的所述粗略变换包括:
至少部分地基于所述相应的坐标系相对于对应的估计重力方向的所述取向,固定两个旋转自由度,以及
至少部分地基于所固定的两个旋转自由度,计算一个旋转自由度和三个平移自由度。
8.根据权利要求7所述的XR系统,其中,基于所述粗略变换计算所述便携式电子设备的所述候选定位包括:计算三个旋转自由度和三个平移自由度。
9.根据权利要求1所述的XR系统,其中,所述通信部件还被配置为:
将所述定位发送到所述便携式电子设备。
10.根据权利要求1所述的XR系统,其中,所述多个特征集合的所述特征的位置在所述便携式电子设备的坐标系中被表达。
11.一种XR系统,其支持相对于持久地图数据库中的持久地图指定虚拟内容的位置,所述XR系统包括定位服务,所述定位服务包括:
通信部件,其被配置为从便携式电子设备接收关于三维(3D)环境的图像中的多个特征集合的信息,所述信息包括在坐标系中表达的所述多个特征集合的特征的位置,所述坐标系具有相对于估计重力方向对齐的维度;以及
至少一个处理器,其被配置为执行计算机可执行指令,所述计算机可执行指令实现被连接到所述通信部件的定位部件,所述定位部件被配置为:
通过对所述多个特征集合中的每个特征集合执行将所述特征集合与所述持久地图数据库中的持久地图的部分之间的变换确定为候选定位的过程,针对所述多个特征集合计算多个候选定位,其中:
所述持久地图的所述部分具有相关联的估计重力方向;以及
所述确定的过程被约束为确定将所述特征集合的重力方向与所述持久地图的所述部分的所述相关联的估计重力方向对齐的变换;以及
基于所述多个候选定位之间的共识,生成所述便携式电子设备的定位。
12.根据权利要求11所述的XR系统,还包括地图合并服务,所述地图合并服务包括:
地图对齐部件,其被配置为确定所述便携式电子设备的跟踪地图与所述持久地图数据库中的持久地图之间的对齐,所述跟踪地图包括所述多个特征集合的至少一部分;以及
重力估计部件,其被配置为至少部分地基于相对于所述持久地图的估计重力方向以及所述跟踪地图与所述持久地图之间的所确定的对齐来计算所述便携式电子设备的所述跟踪地图的估计重力方向,
其中,所述跟踪地图的估计重力方向被发送到所述便携式电子设备。
13.根据权利要求11所述的XR系统,其中,确定特征集合的变换的所述过程受到以下约束:
至少部分地基于相应的坐标系相对于估计重力方向的所述取向,固定两个旋转自由度,以及
至少部分地基于所固定的两个旋转自由度,计算一个旋转自由度和三个平移自由度。
14.根据权利要求11所述的XR系统,其中,针对特征集合计算候选定位包括:
相对于所述持久地图数据库中的所述持久地图,执行所述特征集合的粗略定位,其中,粗略定位包括计算所述便携式电子设备相对于所述持久地图数据库中的持久地图的粗略变换,以及
相对于所述持久地图执行所述特征集合的精细定位,其中,所述特征集合的精细定位包括:基于所述粗略变换,计算所述便携式电子设备的候选定位。
15.根据权利要求14所述的XR系统,其中,计算所述便携式电子设备相对于所述持久地图数据库中的所述持久地图的所述粗略变换包括:
至少部分地基于所述相应的坐标系相对于对应的估计重力方向的所述取向,固定两个旋转自由度,以及
至少部分地基于所固定的两个旋转自由度,计算一个旋转自由度和三个平移自由度。
16.一种被配置为在交叉现实系统内操作的电子设备,所述电子设备包括:
一个或多个传感器,其被配置为捕获关于三维(3D)环境的信息,所捕获的信息包括多个图像;以及
至少一个处理器,其被配置为执行计算机可执行指令,其中,所述计算机可执行指令包括用于以下的指令:
从所述3D环境的所述多个图像中提取多个特征集合;
相对于所述电子设备本地的坐标系确定估计重力方向;
在所述坐标系中表达所述多个特征集合的特征的位置;
向所述交叉现实系统的定位服务发送关于所述多个特征集合的信息,所述信息指示所述多个特征集合的特征的位置和相对于所述坐标系的所述估计重力方向;以及
从所述定位服务接收所述电子设备相对于持久地图数据库中的持久地图的姿势,其中,所述电子设备的所述姿势在向所述定位服务发送之后不到10秒内被接收。
17.根据权利要求16所述的电子设备,其中
所述一个或多个传感器包括至少一个惯性测量单元,以及
基于所述至少一个惯性测量单元的输出来确定所述估计重力方向。
18.根据权利要求16所述的电子设备,其中,确定所述估计重力方向包括:
从所述交叉现实系统的地图合并服务接收所述估计重力方向。
19.根据权利要求16所述的电子设备,其中,关于所述多个特征集合的所述信息包括各个特征的描述符。
20.根据权利要求16所述的电子设备,其中,所述多个特征集合相对于所述估计重力方向的关系包括指示各个特征集合的所述估计重力方向的向量。
21.根据权利要求16所述的电子设备,其中,关于所述多个特征集合的所述信息包括所述多个特征集合的特征的姿势。
22.根据权利要求21所述的电子设备,其中,所述多个特征集合的特征的姿势在一个或多个坐标系中,每个坐标系具有与对应的估计重力方向对齐的坐标。
23.根据权利要求16所述的电子设备,其中,从由所述电子设备的至少两个传感器捕获的多个图像中提取所述多个特征集合的特征。
24.根据权利要求23所述的电子设备,其中:
所述一个或多个传感器具有相应的传感器坐标系,以及
关于所述多个特征集合的所述信息包括相应的传感器坐标系中的特征和所述电子设备上的所述一个或多个传感器的位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063017227P | 2020-04-29 | 2020-04-29 | |
US63/017,227 | 2020-04-29 | ||
PCT/US2021/029585 WO2021222371A1 (en) | 2020-04-29 | 2021-04-28 | Cross reality system for large scale environments |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115803788A true CN115803788A (zh) | 2023-03-14 |
Family
ID=78293142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180045830.4A Pending CN115803788A (zh) | 2020-04-29 | 2021-04-28 | 用于大规模环境的交叉现实系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11900547B2 (zh) |
EP (1) | EP4143794A4 (zh) |
JP (1) | JP2023524446A (zh) |
CN (1) | CN115803788A (zh) |
WO (1) | WO2021222371A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11227435B2 (en) | 2018-08-13 | 2022-01-18 | Magic Leap, Inc. | Cross reality system |
US10957112B2 (en) | 2018-08-13 | 2021-03-23 | Magic Leap, Inc. | Cross reality system |
JP7503542B2 (ja) | 2018-10-05 | 2024-06-20 | マジック リープ, インコーポレイテッド | 任意の場所における場所特有の仮想コンテンツのレンダリング |
US11568605B2 (en) | 2019-10-15 | 2023-01-31 | Magic Leap, Inc. | Cross reality system with localization service |
JP2022551735A (ja) | 2019-10-15 | 2022-12-13 | マジック リープ, インコーポレイテッド | 無線フィンガプリントを用いたクロスリアリティシステム |
EP4046070A4 (en) | 2019-10-15 | 2023-10-18 | Magic Leap, Inc. | CROSS-REALLY SYSTEM THAT SUPPORTS MULTIPLE DEVICE TYPES |
CN114730546A (zh) | 2019-11-12 | 2022-07-08 | 奇跃公司 | 具有定位服务和基于位置的共享内容的交叉现实系统 |
US11562542B2 (en) | 2019-12-09 | 2023-01-24 | Magic Leap, Inc. | Cross reality system with simplified programming of virtual content |
US20210247846A1 (en) * | 2020-02-07 | 2021-08-12 | Krikey, Inc. | Gesture tracking for mobile rendered augmented reality |
WO2021163295A1 (en) * | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system with prioritization of geolocation information for localization |
JP2023514205A (ja) | 2020-02-13 | 2023-04-05 | マジック リープ, インコーポレイテッド | 正確な共有マップを伴うクロスリアリティシステム |
EP4104001A4 (en) | 2020-02-13 | 2024-03-13 | Magic Leap, Inc. | CROSS-REALLY SYSTEM WITH MAP PROCESSING USING MULTIPLE RESOLUTION FRAME DESCRIPTORS |
US11551430B2 (en) | 2020-02-26 | 2023-01-10 | Magic Leap, Inc. | Cross reality system with fast localization |
US11391596B2 (en) * | 2020-04-28 | 2022-07-19 | Vgis Inc. | System and method for converging mediated reality positioning data and geographic positioning data |
US11620818B2 (en) * | 2020-10-01 | 2023-04-04 | Intel Corporation | Spatially sparse neural network accelerator for multi-dimension visual analytics |
US11522945B2 (en) * | 2020-10-20 | 2022-12-06 | Iris Tech Inc. | System for providing synchronized sharing of augmented reality content in real time across multiple devices |
US11967041B2 (en) * | 2021-05-18 | 2024-04-23 | Microsoft Technology Licensing, Llc | Geospatial image processing for targeted data acquisition |
US20230236219A1 (en) * | 2022-01-21 | 2023-07-27 | Google Llc | Visual inertial odometry with machine learning depth |
CN114359392B (zh) * | 2022-03-16 | 2022-07-26 | 荣耀终端有限公司 | 一种视觉定位方法、装置、芯片系统及存储介质 |
WO2024098163A1 (en) * | 2022-11-11 | 2024-05-16 | Waabi Innovation Inc. | Neural hash grid based multi-sensor simulation |
WO2024163101A1 (en) * | 2023-02-01 | 2024-08-08 | Innopeak Technology, Inc. | Method for operating an extended reality device and related devices for safety boundary generation |
CN116152383B (zh) * | 2023-03-06 | 2023-08-11 | 深圳优立全息科技有限公司 | 一种体素模型与图像生成方法、设备及存储介质 |
CN116627849B (zh) * | 2023-07-24 | 2024-01-26 | 中邮消费金融有限公司 | 系统测试方法、装置、设备及存储介质 |
US12025454B1 (en) * | 2023-07-28 | 2024-07-02 | Goodmaps Inc. | Localization of user(s) in environment(s) |
Family Cites Families (162)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100483806B1 (ko) | 2002-07-18 | 2005-04-20 | 한국과학기술원 | 예제동작을 이용한 영상기반 동작복원방법 |
US20050228849A1 (en) | 2004-03-24 | 2005-10-13 | Tong Zhang | Intelligent key-frame extraction from a video |
US7542034B2 (en) | 2004-09-23 | 2009-06-02 | Conversion Works, Inc. | System and method for processing video images |
US7583858B2 (en) * | 2004-10-12 | 2009-09-01 | Eastman Kodak Company | Image processing based on direction of gravity |
US20080303787A1 (en) | 2005-10-21 | 2008-12-11 | Zheng Yu Brian | Touch Screen Apparatus And Methods |
WO2008002906A2 (en) | 2006-06-26 | 2008-01-03 | Icosystem Corporation | Methods and systems for interactive customization of avatars and other animate or inanimate items in video games |
US8781162B2 (en) | 2011-01-05 | 2014-07-15 | Ailive Inc. | Method and system for head tracking and pose estimation |
US20080090659A1 (en) | 2006-10-12 | 2008-04-17 | Maximino Aguilar | Virtual world event notification from a persistent world game server in a logically partitioned game console |
JP4292426B2 (ja) | 2007-05-15 | 2009-07-08 | ソニー株式会社 | 撮像装置および撮像データ補正方法 |
SG183690A1 (en) | 2007-08-06 | 2012-09-27 | Trx Systems Inc | Locating, tracking, and/or monitoring personnel and/or assets both indoors and outdoors |
US9812096B2 (en) | 2008-01-23 | 2017-11-07 | Spy Eye, Llc | Eye mounted displays and systems using eye mounted displays |
GB0818561D0 (en) | 2008-10-09 | 2008-11-19 | Isis Innovation | Visual tracking of objects in images, and segmentation of images |
US20100208033A1 (en) | 2009-02-13 | 2010-08-19 | Microsoft Corporation | Personal Media Landscapes in Mixed Reality |
US8839121B2 (en) | 2009-05-06 | 2014-09-16 | Joseph Bertolami | Systems and methods for unifying coordinate systems in augmented reality applications |
KR20100138725A (ko) | 2009-06-25 | 2010-12-31 | 삼성전자주식회사 | 가상 세계 처리 장치 및 방법 |
US9119027B2 (en) | 2009-10-06 | 2015-08-25 | Facebook, Inc. | Sharing of location-based content item in social networking service |
US8185596B2 (en) | 2010-02-22 | 2012-05-22 | Samsung Electronics Co., Ltd. | Location-based communication method and system |
US8732474B1 (en) | 2010-05-18 | 2014-05-20 | Google Inc. | Safe installation of browser extensions |
KR101686171B1 (ko) | 2010-06-08 | 2016-12-13 | 삼성전자주식회사 | 영상 및 거리 데이터를 이용한 위치 인식 장치 및 방법 |
WO2012006578A2 (en) | 2010-07-08 | 2012-01-12 | The Regents Of The University Of California | End-to-end visual recognition system and methods |
US11488322B2 (en) * | 2010-12-08 | 2022-11-01 | Cognex Corporation | System and method for training a model in a plurality of non-perspective cameras and determining 3D pose of an object at runtime with the same |
JP5960796B2 (ja) | 2011-03-29 | 2016-08-02 | クアルコム,インコーポレイテッド | ローカルマルチユーザ共同作業のためのモジュール式のモバイル接続ピコプロジェクタ |
US8526368B2 (en) | 2011-05-17 | 2013-09-03 | Qualcomm Incorporated | Wi-Fi access point characteristics database |
US20120314031A1 (en) | 2011-06-07 | 2012-12-13 | Microsoft Corporation | Invariant features for computer vision |
US9082214B2 (en) | 2011-07-01 | 2015-07-14 | Disney Enterprises, Inc. | 3D drawing system for providing a real time, personalized, and immersive artistic experience |
US10019962B2 (en) | 2011-08-17 | 2018-07-10 | Microsoft Technology Licensing, Llc | Context adaptive user interface for augmented reality display |
CN103959308B (zh) | 2011-08-31 | 2017-09-19 | Metaio有限公司 | 以参考特征匹配图像特征的方法 |
US8243102B1 (en) | 2011-10-12 | 2012-08-14 | Google Inc. | Derivative-based selection of zones for banded map display |
US20130141419A1 (en) | 2011-12-01 | 2013-06-06 | Brian Mount | Augmented reality with realistic occlusion |
US8977021B2 (en) | 2011-12-30 | 2015-03-10 | Mako Surgical Corp. | Systems and methods for customizing interactive haptic boundaries |
US9530221B2 (en) | 2012-01-06 | 2016-12-27 | Pelco, Inc. | Context aware moving object detection |
US9310882B2 (en) | 2012-02-06 | 2016-04-12 | Sony Computer Entertainment Europe Ltd. | Book object for augmented reality |
US9386297B2 (en) | 2012-02-24 | 2016-07-05 | Casio Computer Co., Ltd. | Image generating apparatus generating reconstructed image, method, and computer-readable recording medium |
KR20130110907A (ko) | 2012-03-30 | 2013-10-10 | 삼성전자주식회사 | 가상 현실과 증강 현실을 이용한 원격 제어 장치 및 방법 |
US9293118B2 (en) | 2012-03-30 | 2016-03-22 | Sony Corporation | Client device |
US9122321B2 (en) | 2012-05-04 | 2015-09-01 | Microsoft Technology Licensing, Llc | Collaboration environment using see through displays |
WO2013167864A1 (en) | 2012-05-11 | 2013-11-14 | Milan Momcilo Popovich | Apparatus for eye tracking |
US9311750B2 (en) | 2012-06-05 | 2016-04-12 | Apple Inc. | Rotation operations in a mapping application |
CN104737061B (zh) | 2012-06-11 | 2018-01-16 | 奇跃公司 | 使用波导反射器阵列投射器的多深度平面三维显示器 |
US9671566B2 (en) | 2012-06-11 | 2017-06-06 | Magic Leap, Inc. | Planar waveguide apparatus with diffraction element(s) and system employing same |
US9111135B2 (en) | 2012-06-25 | 2015-08-18 | Aquifi, Inc. | Systems and methods for tracking human hands using parts based template matching using corresponding pixels in bounded regions of a sequence of frames that are a specified distance interval from a reference camera |
GB2506338A (en) | 2012-07-30 | 2014-04-02 | Sony Comp Entertainment Europe | A method of localisation and mapping |
US8829409B2 (en) | 2012-10-10 | 2014-09-09 | Thermo Fisher Scientific Inc. | Ultra-high speed imaging array with orthogonal readout architecture |
US9349072B2 (en) | 2013-03-11 | 2016-05-24 | Microsoft Technology Licensing, Llc | Local feature based image compression |
IL313175A (en) | 2013-03-11 | 2024-07-01 | Magic Leap Inc | System and method for augmentation and virtual reality |
US20140267234A1 (en) | 2013-03-15 | 2014-09-18 | Anselm Hook | Generation and Sharing Coordinate System Between Users on Mobile |
US10025486B2 (en) | 2013-03-15 | 2018-07-17 | Elwha Llc | Cross-reality select, drag, and drop for augmented reality systems |
WO2014169238A1 (en) | 2013-04-11 | 2014-10-16 | Digimarc Corporation | Methods for object recognition and related arrangements |
US9154919B2 (en) | 2013-04-22 | 2015-10-06 | Alcatel Lucent | Localization systems and methods |
EP2808842B1 (en) | 2013-05-31 | 2017-08-16 | Technische Universität München | An apparatus and method for tracking and reconstructing three-dimensional objects |
US10262462B2 (en) | 2014-04-18 | 2019-04-16 | Magic Leap, Inc. | Systems and methods for augmented and virtual reality |
US9874749B2 (en) | 2013-11-27 | 2018-01-23 | Magic Leap, Inc. | Virtual and augmented reality systems and methods |
US9406137B2 (en) | 2013-06-14 | 2016-08-02 | Qualcomm Incorporated | Robust tracking using point and line features |
US9329682B2 (en) | 2013-06-18 | 2016-05-03 | Microsoft Technology Licensing, Llc | Multi-step virtual object selection |
WO2014202258A1 (en) | 2013-06-21 | 2014-12-24 | National University Of Ireland, Maynooth | A method for mapping an environment |
US9779548B2 (en) | 2013-06-25 | 2017-10-03 | Jordan Kent Weisman | Multiuser augmented reality system |
US9646384B2 (en) | 2013-09-11 | 2017-05-09 | Google Technology Holdings LLC | 3D feature descriptors with camera pose information |
CN107315249B (zh) | 2013-11-27 | 2021-08-17 | 奇跃公司 | 虚拟和增强现实系统与方法 |
WO2015094360A1 (en) | 2013-12-20 | 2015-06-25 | Intel Corporation | Wi-fi scan scheduling and power adaptation for low-power indoor location |
US10586395B2 (en) | 2013-12-30 | 2020-03-10 | Daqri, Llc | Remote object detection and local tracking using visual odometry |
US10203762B2 (en) | 2014-03-11 | 2019-02-12 | Magic Leap, Inc. | Methods and systems for creating virtual and augmented reality |
US9830679B2 (en) | 2014-03-25 | 2017-11-28 | Google Llc | Shared virtual reality |
US10380410B2 (en) | 2014-04-07 | 2019-08-13 | Eyeways Systems Ltd. | Apparatus and method for image-based positioning, orientation and situational awareness |
GB2526263B (en) | 2014-05-08 | 2019-02-06 | Sony Interactive Entertainment Europe Ltd | Image capture method and apparatus |
EP3699736B1 (en) | 2014-06-14 | 2023-03-29 | Magic Leap, Inc. | Methods and systems for creating virtual and augmented reality |
US10068373B2 (en) | 2014-07-01 | 2018-09-04 | Samsung Electronics Co., Ltd. | Electronic device for providing map information |
CN104143212A (zh) | 2014-07-02 | 2014-11-12 | 惠州Tcl移动通信有限公司 | 基于穿戴设备的增强现实方法及系统 |
US10198865B2 (en) | 2014-07-10 | 2019-02-05 | Seiko Epson Corporation | HMD calibration with direct geometric modeling |
US20190347865A1 (en) | 2014-09-18 | 2019-11-14 | Google Inc. | Three-dimensional drawing inside virtual reality environment |
US20200252233A1 (en) | 2014-09-24 | 2020-08-06 | James Thomas O'Keeffe | System and method for user profile enabled smart building control |
US10719727B2 (en) | 2014-10-01 | 2020-07-21 | Apple Inc. | Method and system for determining at least one property related to at least part of a real environment |
WO2016077798A1 (en) | 2014-11-16 | 2016-05-19 | Eonite Perception Inc. | Systems and methods for augmented reality preparation, processing, and application |
WO2016087008A1 (en) | 2014-12-04 | 2016-06-09 | Here Global B.V. | Supporting a collaborative collection of data |
US10335677B2 (en) * | 2014-12-23 | 2019-07-02 | Matthew Daniel Fuchs | Augmented reality system with agent device for viewing persistent content and method of operation thereof |
US9685005B2 (en) | 2015-01-02 | 2017-06-20 | Eon Reality, Inc. | Virtual lasers for interacting with augmented reality environments |
US9852546B2 (en) | 2015-01-28 | 2017-12-26 | CCP hf. | Method and system for receiving gesture input via virtual control objects |
US20160300389A1 (en) | 2015-04-08 | 2016-10-13 | Exactigo, Inc. | Correlated immersive virtual simulation for indoor navigation |
EP3078935A1 (en) * | 2015-04-10 | 2016-10-12 | The European Atomic Energy Community (EURATOM), represented by the European Commission | Method and device for real-time mapping and localization |
US9467718B1 (en) | 2015-05-06 | 2016-10-11 | Echostar Broadcasting Corporation | Apparatus, systems and methods for a content commentary community |
KR101725478B1 (ko) | 2015-05-21 | 2017-04-11 | 주식회사 맥스트 | 3d 점군 인식 기반의 증강 현실 출력 방법과 이를 수행하기 위한 장치 및 시스템 |
US20160381118A1 (en) | 2015-06-23 | 2016-12-29 | Microsoft Technology Licensing, Llc | Extracting and formatting content from web-resources |
US20170061696A1 (en) | 2015-08-31 | 2017-03-02 | Samsung Electronics Co., Ltd. | Virtual reality display apparatus and display method thereof |
KR20180052636A (ko) | 2015-09-10 | 2018-05-18 | 오리엔트 뉴 미디어 엘티디. | 자동 맵 생성으로 gps 거부 지역이나 부정확 지역에서에서 모바일기기 내비게이션, 추적 및 포지셔닝 |
CA2941896C (en) | 2015-09-14 | 2020-10-13 | The Toronto-Dominion Bank | Connected device-based property evaluation |
IL291685B2 (en) | 2015-09-25 | 2023-09-01 | Magic Leap Inc | Methods and systems for discovering and integrating structural features in 3D reconstruction |
US20170094227A1 (en) | 2015-09-25 | 2017-03-30 | Northrop Grumman Systems Corporation | Three-dimensional spatial-awareness vision system |
GB201517101D0 (en) | 2015-09-28 | 2015-11-11 | Univ Essex Entpr Ltd | Mixed-reality system |
WO2017068824A1 (ja) | 2015-10-21 | 2017-04-27 | シャープ株式会社 | 映像生成装置、映像生成装置の制御方法、表示システム、映像生成制御プログラム、およびコンピュータ読み取り可能な記録媒体 |
US9706366B2 (en) | 2015-11-06 | 2017-07-11 | International Business Machines Corporation | WiFi-fingerprint based indoor localization map |
US10254845B2 (en) | 2016-01-05 | 2019-04-09 | Intel Corporation | Hand gesture recognition for cursor control |
US10523865B2 (en) | 2016-01-06 | 2019-12-31 | Texas Instruments Incorporated | Three dimensional rendering for surround view using predetermined viewpoint lookup tables |
US10567449B2 (en) | 2016-02-17 | 2020-02-18 | Meta View, Inc. | Apparatuses, methods and systems for sharing virtual elements |
US10373380B2 (en) | 2016-02-18 | 2019-08-06 | Intel Corporation | 3-dimensional scene analysis for augmented reality operations |
JP6776609B2 (ja) | 2016-02-22 | 2020-10-28 | デクセリアルズ株式会社 | 異方性導電フィルム |
US20180122143A1 (en) | 2016-03-15 | 2018-05-03 | Sutherland Cook Ellwood, JR. | Hybrid photonic vr/ar systems |
US10115234B2 (en) | 2016-03-21 | 2018-10-30 | Accenture Global Solutions Limited | Multiplatform based experience generation |
US10802147B2 (en) | 2016-05-18 | 2020-10-13 | Google Llc | System and method for concurrent odometry and mapping |
US10586391B2 (en) | 2016-05-31 | 2020-03-10 | Accenture Global Solutions Limited | Interactive virtual reality platforms |
IL292911B2 (en) | 2016-08-11 | 2023-11-01 | Magic Leap Inc | Automatic positioning of a virtual object in three-dimensional space |
IL287380B2 (en) | 2016-08-22 | 2024-03-01 | Magic Leap Inc | Virtual, augmented and mixed reality systems and methods |
US10162362B2 (en) | 2016-08-29 | 2018-12-25 | PerceptIn, Inc. | Fault tolerance to provide robust tracking for autonomous positional awareness |
US10007868B2 (en) | 2016-09-19 | 2018-06-26 | Adobe Systems Incorporated | Font replacement based on visual similarity |
US10354129B2 (en) | 2017-01-03 | 2019-07-16 | Intel Corporation | Hand gesture recognition for virtual reality and augmented reality devices |
US10812936B2 (en) | 2017-01-23 | 2020-10-20 | Magic Leap, Inc. | Localization determination for mixed reality systems |
US11275163B2 (en) | 2017-01-25 | 2022-03-15 | Korea Institute Of Science And Technology | Slam method and apparatus robust to wireless environment change |
US10460489B2 (en) | 2017-03-15 | 2019-10-29 | Facebook, Inc. | Visual editor for designing augmented-reality effects and configuring scaling parameters |
IL290001B2 (en) | 2017-03-17 | 2023-04-01 | Magic Leap Inc | Augmented reality data recording technique |
WO2018183778A1 (en) | 2017-03-30 | 2018-10-04 | Magic Leap, Inc. | Centralized rendering |
US10600252B2 (en) | 2017-03-30 | 2020-03-24 | Microsoft Technology Licensing, Llc | Coarse relocalization using signal fingerprints |
US9754397B1 (en) | 2017-04-07 | 2017-09-05 | Mirage Worlds, Inc. | Systems and methods for contextual augmented reality sharing and performance |
AU2018261328B2 (en) | 2017-05-01 | 2022-08-25 | Magic Leap, Inc. | Matching content to a spatial 3D environment |
WO2018222756A1 (en) | 2017-05-30 | 2018-12-06 | Ptc Inc. | Object initiated communication |
CN109145927A (zh) | 2017-06-16 | 2019-01-04 | 杭州海康威视数字技术股份有限公司 | 一种对形变图像的目标识别方法及装置 |
JP6585665B2 (ja) | 2017-06-29 | 2019-10-02 | ファナック株式会社 | 仮想オブジェクト表示システム |
US10503955B2 (en) | 2017-08-29 | 2019-12-10 | Synaptics Incorporated | Device with improved circuit positioning |
WO2019046774A1 (en) | 2017-09-01 | 2019-03-07 | Memorial Sloan Kettering Cancer Center | SYSTEMS AND METHODS FOR GENERATING 3D MEDICAL IMAGES BY SCANNING A WHOLE TISSUE BLOCK |
US10546387B2 (en) | 2017-09-08 | 2020-01-28 | Qualcomm Incorporated | Pose determination with semantic segmentation |
US10685456B2 (en) | 2017-10-12 | 2020-06-16 | Microsoft Technology Licensing, Llc | Peer to peer remote localization for devices |
US10422648B2 (en) | 2017-10-17 | 2019-09-24 | AI Incorporated | Methods for finding the perimeter of a place using observed coordinates |
AU2018369757B2 (en) | 2017-11-14 | 2023-10-12 | Magic Leap, Inc. | Fully convolutional interest point detection and description via homographic adaptation |
AU2018385695B2 (en) | 2017-12-15 | 2023-11-02 | Magic Leap, Inc. | Enhanced pose determination for display device |
CA3084149A1 (en) | 2017-12-22 | 2019-06-27 | Magic Leap, Inc. | Methods and system for managing and displaying virtual content in a mixed reality system |
US11237004B2 (en) | 2018-03-27 | 2022-02-01 | Uatc, Llc | Log trajectory estimation for globally consistent maps |
US10838574B2 (en) | 2018-04-09 | 2020-11-17 | Spatial Systems Inc. | Augmented reality computing environments—workspace save and load |
US10803671B2 (en) | 2018-05-04 | 2020-10-13 | Microsoft Technology Licensing, Llc | Authoring content in three-dimensional environment |
US11321929B2 (en) * | 2018-05-18 | 2022-05-03 | Purdue Research Foundation | System and method for spatially registering multiple augmented reality devices |
US10812711B2 (en) | 2018-05-18 | 2020-10-20 | Samsung Electronics Co., Ltd. | Semantic mapping for low-power augmented reality using dynamic vision sensor |
CN110515452B (zh) | 2018-05-22 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、存储介质和计算机设备 |
US10706629B2 (en) | 2018-06-15 | 2020-07-07 | Dell Products, L.P. | Coordinate override in virtual, augmented, and mixed reality (xR) applications |
CN116088783A (zh) | 2018-07-24 | 2023-05-09 | 奇跃公司 | 用于确定和/或评价图像显示设备的定位地图的方法和装置 |
US10957112B2 (en) | 2018-08-13 | 2021-03-23 | Magic Leap, Inc. | Cross reality system |
US11227435B2 (en) | 2018-08-13 | 2022-01-18 | Magic Leap, Inc. | Cross reality system |
US20210315464A1 (en) | 2018-09-04 | 2021-10-14 | Aktiia Sa | System for determining a blood pressure of one or a plurality of users |
JP7503542B2 (ja) | 2018-10-05 | 2024-06-20 | マジック リープ, インコーポレイテッド | 任意の場所における場所特有の仮想コンテンツのレンダリング |
US11397438B2 (en) * | 2018-11-16 | 2022-07-26 | Robotic Research Opco, Llc | Driver aid and autonomous tractor-trailer parking and loading dock alignment system |
US10854007B2 (en) | 2018-12-03 | 2020-12-01 | Microsoft Technology Licensing, Llc | Space models for mixed reality |
US20200211290A1 (en) | 2018-12-26 | 2020-07-02 | Lg Electronics Inc. | Xr device for providing ar mode and vr mode and method for controlling the same |
WO2020192039A1 (en) | 2019-03-27 | 2020-10-01 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Three-dimensional localization using light-depth images |
US11151792B2 (en) | 2019-04-26 | 2021-10-19 | Google Llc | System and method for creating persistent mappings in augmented reality |
US10748302B1 (en) | 2019-05-02 | 2020-08-18 | Apple Inc. | Multiple user simultaneous localization and mapping (SLAM) |
US20200364937A1 (en) | 2019-05-16 | 2020-11-19 | Subvrsive, Inc. | System-adaptive augmented reality |
US11010921B2 (en) | 2019-05-16 | 2021-05-18 | Qualcomm Incorporated | Distributed pose estimation |
US11145083B2 (en) | 2019-05-21 | 2021-10-12 | Microsoft Technology Licensing, Llc | Image-based localization |
US10854012B1 (en) | 2019-05-29 | 2020-12-01 | Dell Products, L.P. | Concealing loss of distributed simultaneous localization and mapping (SLAM) data in edge cloud architectures |
US20200380263A1 (en) | 2019-05-29 | 2020-12-03 | Gyrfalcon Technology Inc. | Detecting key frames in video compression in an artificial intelligence semiconductor solution |
US10852828B1 (en) | 2019-07-17 | 2020-12-01 | Dell Products, L.P. | Automatic peripheral pairing with hand assignments in virtual, augmented, and mixed reality (xR) applications |
US10936874B1 (en) | 2019-08-13 | 2021-03-02 | Dell Products, L.P. | Controller gestures in virtual, augmented, and mixed reality (xR) applications |
KR20190104928A (ko) | 2019-08-22 | 2019-09-11 | 엘지전자 주식회사 | Xr 디바이스 및 xr 디바이스 제어 방법 |
US11270515B2 (en) | 2019-09-04 | 2022-03-08 | Qualcomm Incorporated | Virtual keyboard |
WO2021050595A1 (en) | 2019-09-09 | 2021-03-18 | Apple Inc. | Multimodal inputs for computer-generated reality |
EP4046070A4 (en) * | 2019-10-15 | 2023-10-18 | Magic Leap, Inc. | CROSS-REALLY SYSTEM THAT SUPPORTS MULTIPLE DEVICE TYPES |
US11568605B2 (en) | 2019-10-15 | 2023-01-31 | Magic Leap, Inc. | Cross reality system with localization service |
JP2022551735A (ja) * | 2019-10-15 | 2022-12-13 | マジック リープ, インコーポレイテッド | 無線フィンガプリントを用いたクロスリアリティシステム |
US11494995B2 (en) * | 2019-10-29 | 2022-11-08 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
CN114730546A (zh) * | 2019-11-12 | 2022-07-08 | 奇跃公司 | 具有定位服务和基于位置的共享内容的交叉现实系统 |
US11562542B2 (en) | 2019-12-09 | 2023-01-24 | Magic Leap, Inc. | Cross reality system with simplified programming of virtual content |
JP2023514205A (ja) | 2020-02-13 | 2023-04-05 | マジック リープ, インコーポレイテッド | 正確な共有マップを伴うクロスリアリティシステム |
EP4104001A4 (en) | 2020-02-13 | 2024-03-13 | Magic Leap, Inc. | CROSS-REALLY SYSTEM WITH MAP PROCESSING USING MULTIPLE RESOLUTION FRAME DESCRIPTORS |
WO2021163289A1 (en) * | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system for large scale environments |
WO2021163295A1 (en) | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system with prioritization of geolocation information for localization |
US11551430B2 (en) | 2020-02-26 | 2023-01-10 | Magic Leap, Inc. | Cross reality system with fast localization |
US12052408B2 (en) * | 2020-02-26 | 2024-07-30 | Intel Corporation | Depth based 3D reconstruction using an a-priori depth scene |
-
2021
- 2021-04-28 JP JP2022565806A patent/JP2023524446A/ja active Pending
- 2021-04-28 CN CN202180045830.4A patent/CN115803788A/zh active Pending
- 2021-04-28 WO PCT/US2021/029585 patent/WO2021222371A1/en unknown
- 2021-04-28 US US17/242,763 patent/US11900547B2/en active Active
- 2021-04-28 EP EP21796775.1A patent/EP4143794A4/en active Pending
-
2023
- 2023-12-26 US US18/396,682 patent/US20240135656A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4143794A4 (en) | 2024-04-17 |
US20210343087A1 (en) | 2021-11-04 |
US20240135656A1 (en) | 2024-04-25 |
WO2021222371A9 (en) | 2022-02-10 |
EP4143794A1 (en) | 2023-03-08 |
WO2021222371A1 (en) | 2021-11-04 |
US11900547B2 (en) | 2024-02-13 |
JP2023524446A (ja) | 2023-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11900547B2 (en) | Cross reality system for large scale environments | |
US11830149B2 (en) | Cross reality system with prioritization of geolocation information for localization | |
US11257294B2 (en) | Cross reality system supporting multiple device types | |
US20240062491A1 (en) | Cross reality system with accurate shared maps | |
CN115151947B (zh) | 具有基于wifi/gps的地图合并的交叉现实系统 | |
CN115380264A (zh) | 用于大规模环境的交叉现实系统 | |
CN114600064A (zh) | 具有定位服务的交叉现实系统 | |
CN115461787A (zh) | 具有快速定位的交叉现实系统 | |
CN115398314A (zh) | 使用多分辨率帧描述符进行地图处理的交叉现实系统 | |
CN114616534A (zh) | 具有无线指纹的交叉现实系统 | |
CN115244493A (zh) | 用于大规模环境重建的交叉现实系统 | |
CN113544748A (zh) | 交叉现实系统 | |
CN115176285B (zh) | 利用缓冲的交叉现实系统用于定位精度 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |