合并来自建图设备的局部地图的制作方法

文档序号:31732146发布日期:2022-10-05 02:16阅读:42来源:国知局
合并来自建图设备的局部地图的制作方法
合并来自建图设备的局部地图
1.相关申请交叉引用
2.本技术要求2019年12月20日提交的美国临时申请第62/952,036号的权益,该申请通过引用整体并入。
技术领域
3.本公开总体涉及计算机中介的现实系统,更具体地,涉及将从客户端设备收集的数据生成的3d地图联接到单一3d地图的增强现实(ar)系统。


背景技术:

4.平行现实游戏可以提供与现实世界的至少一部分平行的共享虚拟世界,其可以托管能够吸引玩家社区的各种交互。提供具有与现实世界的至少一部分平行的地理位置的虚拟世界允许玩家通过导航现实世界来导航虚拟世界。在游戏期间,玩家可以通过手持或可穿戴设备查看虚拟世界,该设备使用计算机中介的现实技术来增加、减少或以其他方式改变玩家对其环境的视觉或听觉感知。
5.然而,准确地改变玩家对环境的视觉感知通常涉及准确地知道玩家在现实世界中的位置。这可能很难确定,因为传统的定位设备不够准确以在没有相当大的误差范围的情况下确定玩家的位置。因此,需要一种用于绘制由玩家的移动设备的相机捕获的现实世界地图以帮助确定未来移动设备的位置的系统。


技术实现要素:

6.在基于位置的平行现实游戏中,玩家通过使用位置感知客户端设备(诸如智能手机)在现实世界中移动来导航虚拟世界。许多客户端设备使用由设备上的(多个)相机捕获的图像数据来绘制玩家的环境地图,其可以用于确定玩家的位置、确定要覆盖在所捕获的图像数据上的增强现实(ar)图像等。这些地图可以描述相同的环境,但由于是在不同的客户端设备上捕获的,地图可能具有不同的坐标空间并捕获环境的不同视图。为了创建环境的单一3d地图,可以基于图像数据、位置数据和/或捕获这种数据的客户端设备将所生成的地图联接在一起。
7.根据特定实施例,通过网络连接到多个客户端设备的系统接收由集成在第一客户端设备处的相机捕获的第一组图像数据。第一组图像数据表示第一客户端设备周围的第一区域的近实时的视图。该系统基于第一组图像数据生成第一3d地图。3d地图在空间上描述第一客户端设备周围的第一区域。该系统接收表示第二客户端设备周围的第二区域的近实时的视图的第二组图像数据,并基于第二组图像数据生成第二3d地图。该系统分析第一和第二3d地图以标识共同特征,并基于该共同特征将第一3d地图和第二3d地图联接成单一3d地图。
8.单一3d地图可以是节点图形,每个节点表示由在客户端设备处捕获的图像数据生成的3d地图。每个节点可以基于捕获图像数据的客户端设备而与不同的坐标空间相关联,
并且该图形可以包括节点之间的边,其表示坐标空间之间的变换。该系统可以使用该图形来确定环境中客户端设备的位置。
9.参考以下说明书和所附权利要求书,可以更好地理解这些和其他特征、方面和优点。附图说明了具体实施例,并与说明书一起用于解释各种原理。然而,附图不应被认为是限制性的。相反,保护范围应从权利要求中确定。
附图说明
10.图1示出了根据实施例的用于生成和显示增强现实数据的联网计算环境。
11.图2是根据一个实施例的一个世界建图模块120的框图。
12.图3是根据实施例,示出用于生成和显示增强现实数据的ar计算系统可执行的过程的流程图。
13.图4根据一个实施例,描绘了与现实世界平行的虚拟世界的概念图,其可充当基于位置的平行现实游戏的玩家的游戏板。
14.图5是根据实施例,将第一3d地图和第二3d地图联接在一起成为环境的单一3d地图的流程图。
15.图6是根据实施例,基于同步来生成环境的单一3d地图的流程图。
16.图7是根据实施例,示出适合用作客户端设备或服务器的示例计算机的高级别框图。
具体实施方式
17.一种系统和方法将两个或更多个局部地图联接在一起成为单一地图。该单一地图可用于在与现实世界平行的虚拟世界中实现增强现实交互。在各种实施例中,基于包含共同特征、指示生成局部地图的客户端设备的相对位置的同步数据或两者,将局部地图缝合在一起。
18.在一个实施例中,该系统使用客户端设备(例如,手持或佩戴的电子设备)上的图像和全球定位系统(gps)坐标来生成3d地图。该3d地图是由相机记录模块和惯性测量单元(imu)(诸如加速计或陀螺仪)构建的。图像和gps坐标被发送到服务器。服务器和客户端设备一起处理数据以建立对象和几何图形,以及确定潜在交互。潜在交互的示例包括在房间中使用ar动画制作的交互,诸如移动虚拟元素。
19.通过将图像和3d地图一起使用,该系统可以使用神经网络或其他类型的模型来完成目标检测和几何图形估计。神经网络的示例是机器学习中使用的计算模型,它使用大量连接的简单单元(人工神经元)的集合。这些单元通过软件连接在一起,并且如果所组合的输入信号足够大,则这些单元就会发出它们自己的输出信号。该系统可以使用深度学习(例如,多层神经网络)来在上下文中理解ar数据。其他类型的模型可以包括其他统计模型或其他机器学习模型。
20.该系统聚集局部地图以创建一个或多个全局地图(例如,通过将局部地图联接在一起)。所聚合的地图被组合在一起成为服务器上的单一全局地图,该服务器提供环境的数字地图,或“世界”。例如,由一个或多个设备生成的两个局部地图可以被表示为不同坐标空间中的节点。包括在预定阈值内匹配的局部地图的部分的相似gps坐标、相似图像和相似传
感器数据的任何组合,可以被确定为包含共同特征(例如,在空间中“重叠”)。因此,该系统可以用表示节点的坐标空间之间的变换的边将两个节点联接在一起。所联接的节点可以包含在表示使用由客户端设备捕获的图像制作的其他局部地图的节点图形中。该图形可以表示单一全局地图,并且可以帮助维护表示给多个客户端设备的虚拟世界之间的一致性。
21.此外,在一些实施例中,系统可以基于包含在局部地图内的边或共同特征将局部地图缝合在一起成为世界地图。世界地图可以存储在特定gps坐标处的虚拟世界的动画,并且还可以通过3d点和视觉图像被索引到世界中的特定位置(例如,以1英尺/30厘米的量级的分辨率)。在另一示例中,该系统可以基于同步数据将局部地图缝合在一起,该同步数据指示当客户端设备遍历环境时生成局部地图的客户端设备的相对位置。
22.示意性流程将数据映射到云和从云映射数据。在一个实施例中,地图是空间中的3d点的集合,诸如点云,其以类似于3d像素的方式表示世界。当3d地图可用且有用时,图像数据将与3d地图一起发送。某些示例发送没有图像数据的3d地图数据。
23.在各种实施例中,客户端设备使用由处理器执行的3d算法来生成3d地图。客户端设备以高效的方式发送图像、3d地图、gps数据和任何其他传感器数据(例如,imu数据、任何其他位置数据)。例如,可以选择性地发送图像,以便不会阻碍传输或处理。在一个示例中,当图像显示环境的新视点时,而不是当图像仅显示环境内先前看到的视点时,可以选择性地发送图像。例如,当客户端设备的相机的视野与来自过去或最近的相机姿态的先前图像具有最小重叠时,或者当取决于对象的预期移动的时间量内没有观察到图像中的视点时,指定由系统发送图像。作为另一示例,如果自提供来自当前(或基本上重叠的)视点的先前图像以来已经过去了超过阈值的时间量,则可以提供图像。这可以使与地图相关联的存储图像能够被更新,以反映由图像描绘的现实世界位置的更接近当前的(或至少最近的)状态。
24.在各种实施例中,诸如服务器的云端设备包括实时检测系统,该实时检测系统使用3d数据和图像来检测对象并估计图像中描绘的现实世界环境的几何形状。例如,非照片真实感的房间的3d地图(例如,半密集和/或密集3d重建)可以用图像来确定。服务器将图像和3d数据与检测系统融合在一起,以构建一致且易于索引的世界3d地图,或使用gps数据合成现实世界地图。一旦存储,就可以搜索现实世界地图以定位先前存储的动画和其他虚拟对象。
25.在各种实施例中,在客户端设备上进行建图和追踪。客户端设备收集现实世界的稀疏重建(对世界进行数字化),以及客户端设备的相机相对于现实世界的位置。建图包括创建点云或3d点的集合。客户端设备通过串行化和发送点云信息和gps数据将稀疏表示传送回服务器。云处理支持多玩家功能(在独立的客户端设备之间实时或接近实时地共享地图数据),具有工作的物理存储器(存储地图和动画数据以供未来体验,而不是本地存储在设备上),以及对象检测。
26.该服务器包括地图和框架的数据库。每个帧包括传感器数据,诸如形成图像的一个或多个像素、相对于坐标空间的姿态、相机内部特征(例如,相机参数,诸如焦距)、特征点和/或特征描述符等。服务器使用gps数据来确定先前是否为现实世界位置存储了现实世界地图。如果被定位,则服务器可以将所存储的地图发送到客户端设备。
27.增强现实计算系统
28.图1是根据实施例的ar计算系统100的框图,该ar计算系统100包括与经由网络104访问的元件协作的客户端设备102。例如,元件可以是产生ar数据的服务器的组件。在一些实施例中,客户端设备102是用户可以用来访问平行现实游戏(例如,增强现实游戏)或另一增强现实系统的计算设备。客户端设备经由设备上的相机、3d数据、gps数据等捕获图像数据(也称为图像)。客户端设备102包括例如游戏引擎106(例如,游戏引擎或另一物理/渲染引擎)和ar平台108。
29.游戏引擎106可以促进客户端设备102处的平行现实游戏(或其他ar程序)。例如,游戏引擎106可以接收由用户与客户端设备102进行的交互,诸如用户经由客户端设备102的界面输入信息或用户在现实世界内移动客户端设备。游戏引擎106可以基于这些交互经由界面向用户显示平行现实游戏的信息。游戏引擎106可以本地存储平行现实游戏的信息,包括对应于现实世界内的位置的虚拟世界中的虚拟位置处可用的虚拟元素。备选地,游戏引擎106可以在服务器处访问描述虚拟世界的游戏板图信息,并且持续地与服务器通信以促进在客户端设备102处的平行现实游戏。参考图4进一步描述平行现实游戏的虚拟世界和现实世界之间的平行性。
30.ar平台108可以对由客户端设备102捕获的数据执行分割和对象识别。ar平台包括复杂视觉模块110、同时定位与建图模块112、地图取回模块114和深度学习模块116。在一些实施例中,ar平台包括备选或附加的模块。
31.复杂计算机视觉模块110执行客户端侧图像处理。复杂计算机视觉模块110接收由客户端设备102上的相机所捕获的图像数据,并对图像数据执行图像处理。图像处理可以包括图像分割和局部3d估计。
32.同时定位与建图(例如,slam)模块112基于由客户端设备102捕获的图像数据和gps数据来对客户端设备102周围的环境进行建图。具体地,slam模块112创建一个或多个局部地图,每个局部地图表示在客户端设备102捕获的数据中看到的现实世界的部分。在一些实施例中,slam模块112还可以确定客户端设备102在环境中的位置。slam模块112包括创建局部地图的建图系统,局部地图可以包括点几何图形、线几何图形和面几何图形。此外,slam模块112可以建立点云并使用由客户端设备102捕获的追踪信息来找到相机(例如,客户端设备102)在空间中的位置。在其他实施例中,slam模块可以使用图像数据和追踪信息来构建地图。slam模块112还通过将动画或增强值叠加在由客户端设备102捕获的图像数据上,其经由客户端设备102的显示器呈现,从而将动画或增强值从虚拟世界重新投射回现实世界。在其他实施例中,slam模块112可以使用不同的或附加的方法来绘制客户端设备102周围的环境地图和/或确定客户端设备102在该环境中的位置。
33.在一些实施例中,slam模块112可以在生成环境的局部地图之前将客户端设备102的位置与另一客户端设备同步。例如,slam模块可以接收环境中的机器可读代码(例如,qr码)的图像数据,并将客户端设备102的位置同步到捕获相同机器可读代码的图像的其他客户端设备。slam模块112可以将该信息存储为指示环境位置的局部地图的同步数据。在另一示例中,如果图像数据包含另一客户端设备的视图,slam模块112可以从图像数据确定该另一客户端设备的视图,或者用户可以经由客户端设备102指示该另一客户端设备,则slam模块112可以存储指示客户端设备102与另一客户端设备同位的局部地图的同步数据,并且参考其局部地图。
34.地图取回模块114取回由slam模块112生成的地图。地图取回模块114从以下进一步描述的地图数据库124中取回先前生成的地图(例如,经由网络104)。在一些实施例中,地图取回模块114可以在客户端设备102处本地存储一些地图,诸如用户家庭位置的地图。地图取回114可以基于来自游戏引擎106的通知来取回地图,并将地图发送到游戏引擎106以用于促进平行现实游戏。
35.深度学习模块116将机器学习模型应用于地图上的对象识别。深度学习模块116从地图取回模块114接收地图。深度学习模块116应用一个或多个机器学习模型来执行兴趣或特征点检测(例如,使用尺度不变特征变换(sift)或定向fast旋转brief(orb))以及对象检测和分类。例如,深度学习模块116可以将机器学习模型应用于地图以确定地图中包含的对象。机器学习模型可以是分类器、回归模型等。深度学习模块116可以在外部系统上(例如,经由网络104)训练之后获得机器学习模型。在一些实施例中,深度学习模块116还可以提供对象识别的结果和/或用户反馈以实现进一步的模型训练。
36.ar计算系统100包括客户端设备102可以经由网络104访问的元件。这些元件可以位于远程服务器,并且包括ar后端引擎118,其与一个世界建图模块120、对象识别模块122、地图数据库124、对象数据库126和深度学习训练模块128通信。在其他实施例中,可以包括附加的或不同的组件。此外,该功能可以不同于本文描述的那样进行分布。例如,在一些实施例中,对象识别功能的一些或全部可以在客户端设备102处执行。
37.一个世界建图模块120将不同的局部地图融合在一起以创建合成现实世界地图(例如,现实世界的单一3d地图)。单一3d地图可以被表示为通过边联接在一起的节点图形。每个节点可以表示由客户端设备102生成的地图,客户端设备102可以是图1中所示的客户端设备102或连接到用于平行现实游戏的服务器的另一客户端设备。每个地图可以基于生成地图的客户端设备102或同一设备的坐标空间随时间的变化(例如,由于gps漂移或变化的条件等)而具有其自己的坐标空间。连接节点的边可以表示节点的坐标空间之间的变换。当单一3d地图经由网络104从客户端设备102接收新地图时,一个世界地图模块120可以向单一3d地图添加新节点和边。一个世界建图模块120将单一3d地图存储在地图数据库124中。
38.在示例用例场景中,即使在局部地图之间存在间隙时,一个世界建图模块120也可以确定局部地图的节点之间的边。例如,一个世界建图模块120可以接收局部地图中包含线的部分而没有连接其他两个部分的部分的节点。一个世界建图模块120可以将线的每个部分临时扩展超过局部地图中所指示的指定量(例如,10厘米、1米或无限)。假设局部地图的相对位置是已知的(例如,基于标识共同特征或位置同步的特征分析,如前所述),一个世界建图模块120可以确定线在每个局部地图中的部分都是同一条线的部分。例如,如果一条线的投射使它在阈值量(例如,1毫米、1厘米等)内与另一条线重叠,那么一个世界建图模块120可以确定这两个部分是同一条线的部分。因此,一个世界建图模块120可以使用连接线的缺失部分来确定节点之间的边,并将缺失部分添加到一个或两个局部地图。参考图2进一步描述一个世界建图模块120和单一3d地图。
39.地图数据库124包括一个或多个计算机可读介质,该计算机可读介质被配置为存储由客户端设备102生成的地图数据(即,“地图”)。地图数据可以包括与由客户端设备102在某个位置收集的图像和其他传感器数据相关联地存储的3d点云的局部地图。地图数据还
可以包括指示不同局部地图和表示现实世界或现实世界内的特定环境的单一3d地图之间的地理关系的建图信息。尽管地图数据库124被示为单个实体,但它可以分布在多个设备处的多个存储介质上(例如,作为分布式数据库)。
40.对象识别模块122使用来自客户端设备102捕获的图像和3d数据的对象信息来标识在数据中表示的现实世界中的特征。例如,对象识别模块122可以确定椅子在环境内的3d位置,并将描述椅子的3d位置的对象信息添加到对象数据库126。对象识别模块122可以对存储在地图数据库中的地图、由一个或多个客户端设备102捕获的图像数据、或由一个或多个客户端设备102生成的地图执行对象识别。在对相同环境的新图像数据执行对象识别之后,对象识别模块还可以更新存储在对象数据库126中的对象信息。对象识别模块122可以连续地从来自各种客户端设备102的所捕获的图像接收对象信息以添加到对象数据库126。
41.在一些实施例中,对象识别模块122还可以将检测到的对象区分成各种类别。在一个实施例中,对象识别模块122可以将所捕获的图像中的对象标识为固定的或临时的。例如,对象识别模块122可以将树确定为固定对象。在随后的实例中,与可能被确定为临时的对象相比,对象识别模块122可以较不频繁地更新固定对象。例如,对象识别模块122可以确定所捕获的图像中的动物是临时的,并且如果在随后的图像中该动物不再存在于该环境中,则可以移除该对象。
42.对象数据库126包括被配置为存储关于所识别对象的对象信息的一个或多个计算机可读介质。例如,对象数据库126可以包括具有对象的对应位置和对象的属性的已知对象(例如,椅子、桌子、树、建筑物等)的列表。这些属性可以是对象类型的通用属性,也可以是为对象的每个实例专门定义的属性(例如,所有椅子都可以被认为是家具,但每个椅子的位置可以单独定义)。对象数据库126还可以基于每个对象的对象类型来区分对象。对象类型可以基于相似的特性对对象数据库126中的所有对象进行分组。例如,植物对象类型的所有对象可以是被对象识别模块122标识为诸如树木、灌木、草、藤本植物等植物的对象。在一些实施例中,该系统可以学习区分相对稳定(例如,静止)的特征和更动态的特征。例如,该系统可以了解到椅子倾向于在一定程度上移动,而桌子倾向于在较长时间内保持在大致相同的位置。尽管对象数据库126被示为单个实体,但它可以分布在多个设备处的多个存储介质上(例如,作为分布式数据库)。
43.深度学习模块128将地图数据与对象信息融合在一起。具体地,深度学习模块128可以从地图数据库124或一个或多个客户端设备102取回地图以及从对象数据库126取回对象信息。深度学习模块可以将对象信息与包括来自对象信息的对象的对应地图数据联接。深度学习模块128可以使用在服务器上训练的一个或多个机器学习模型来这样做。机器学习模型可以包括分类器、神经网络、回归模型等。深度学习模块128可以将所融合的信息存储在地图数据库124中或服务器处的另一数据库中。
44.图2是根据一个实施例的一个世界建图模块120的框图。一个世界建图模块120包括地图模块210、图形模块210、组合模块220、图像数据库230和地图数据库240。在附加或备选实施例中,一个世界建图模块120可以包括执行下面未讨论的附加操作的其他模块。
45.地图模块210基于由客户端设备102捕获的数据来确定环境的地图。这种数据可以包括图像数据、传感器数据、gps数据等。地图模块210可以基于所捕获的数据建立点云,这些数据用作环境地图。在一些实施例中,地图模块210可以使用其他技术来基于由客户端设
备102捕获的数据来确定环境的地图。然而,在其他实施例中,建图由slam模块112而不是建图模块210执行,并且取而代之地,建图模块210从slam模块112取回在客户端设备102处生成的局部地图。在一些实施例中,一个或多个局部地图可以使用由同一环境中的多个客户端设备102捕获的数据来协作地构建。地图模块210可以将局部地图存储在地图数据库124。地图模块210将局部地图发送到图形模块210。
46.图形模块210确定一个或多个局部地图的图形表示。图形模块210从地图模块210接收局部地图。图形模块210还可以接收描述每个局部地图的信息。这样的信息可以包括什么客户端设备生成局部地图和/或用于所生成的局部地图的所捕获的数据、用于生成局部地图的数据、数据何时被捕获(例如,日期和时间)等。
47.对于每个局部地图,图形模块210创建表示局部地图的节点。在一些实施例中,每个客户端设备102和/或服务器还由图形模块210创建的节点表示。每个节点基于描述该节点所代表的局部地图、客户端设备或服务器的信息而具有其自己的独立坐标系。表示环境的局部地图的节点还可以不仅表示环境的空间覆盖,还表示时间覆盖(例如,环境如何随时间变化)。图形模块将节点发送到组合模块210以并入到前面描述的单一3d地图中。在另一实施例中,针对不同时间(例如,一天内的不同时段,诸如上午、下午、晚上和夜间等)的地图存储在不同的节点中,并且它们之间的边指示在地图的空间和时间坐标两者的映射。
48.组合模块220使用特征分析将局部地图转换为现实世界的单一3d地图。在一些实施例中,组合模块220可以将局部地图组合成一个单一3d地图。在其他实施例中,组合模块使用局部地图为每个环境创建3d地图,并将3d地图联接在单一3d地图中。
49.组合模块220从图形模块210接收表示一个或多个局部地图的节点。对于每对节点,组合模块220可以确定边。该边表示节点的坐标空间之间的变换。在一些情况下,一对节点之间可能没有边(例如,如果节点显示完全不同的环境)。否则,该对节点可以具有与其相关联的一条或多条边。在一些实施例中,组合模块220可以仅确定相同环境中的节点的边,组合模块可以基于局部地图之间的特征匹配来确定该边。在一个实施例中,建图模块210可以基于局部地图彼此在阈值距离内来将两个局部地图标识为显示单个环境,组合模块220可以根据用于生成每个局部地图的gps数据来确定该阈值距离。
50.组合模块220可以基于由多个客户端设备102捕获的数据来形成边。每个客户端设备可以具有与其相关联的置信度分数,并且可以使用该置信度分数来确定边的置信度分数。边的置信度分数表示使用边表示的变换从第一节点移动到第二节点将导致输出节点与第二节点相同的可能性。为了确定边,组合模块可以使用追踪信息(例如,在平行现实游戏的相同会话期间由同一客户端设备捕获的局部地图的节点,可能具有边)、基于特征的定位(例如,基于包含在局部地图中的特征来定位节点的两个局部地图,诸如点、线等)、3d云对齐(例如,利用icp算法)、由相同客户端设备102生成的连续局部地图之间的强制重叠、跨多个局部地图的后处理优化,和/或基于机器可读代码的本地化(例如,同步)。
51.例如,在一个实施例中,组合模块220可以执行特征分析以确定两个节点的边。组合模块220从对象数据库126中取回两个局部地图中的每个局部地图的信息,并对每个局部地图执行特征分析,以使用该信息确定局部地图两者是否包含共同特征。如果组合模块220确定每个地图包含相同的共同特征,则组合模块220基于共同特征创建边。
52.在另一示例中,组合模块220可以基于由客户端设备102执行的同步来确定节点之
间的边。组合模块220取回指示客户端设备102同位于相同环境内的每个局部地图的同步数据。当客户端设备102彼此指向时,或者当每个客户端设备102已经捕获了环境中的机器可读代码(例如,qr码)或其他可识别特征的图像时,可以确定同步数据。基于同步数据,组合模块220确定局部地图的节点的边。
53.对于每对节点,组合模块220从地图数据库124访问现实世界的单一3d地图。单一3d地图包括由连接到服务器的多个客户端设备102捕获的多个节点,并且表示现实世界的布局。如果节点中的一个或两个尚未在单一3d地图中,则组合模块220将缺失的一个或多个节点添加到单一3d地图中。此外,如果组合模块220确定了节点对的边,则组合模块220将单一3d地图中的边联接在一起,从而实质上将局部地图联接成一个更大的地图(例如,单一3d地图)。在一些实施例中,组合模块220还可以基于边将局部地图缝合在一起,以形成包括两个局部地图中的至少一些的单一地图。
54.组合模块220还可以在单一3d地图中的现有节点之间添加边。在一些实施例中,当确定新的边时,组合模块220可以将一对节点之间的多条边组合成单一边。在其他实施例中,组合模块220可以保持单一3d地图中的一对节点之间的所有边,并且指示所有边中的哪条边是最新的,使得客户端设备可以在必要时使用最新的边来在局部地图之间进行变换。
55.连接到服务器的客户端设备102可以使用单一3d地图来将其自身定位在环境中,并在平行现实游戏的位置处取回关于虚拟世界的信息。此外,节点和边的系统可用于减少单一3d地图中的漂移和离群值。例如,在节点已经在单一3d地图中达阈值时间量之后,组合模块220可以移除未通过边联接到其他节点的节点。
56.示例数据流
57.图3是根据实施例,示出由客户端设备102和服务器执行以生成和显示ar数据的过程的流程图。客户端设备102和服务器可以类似于图1中所示的那些。虚线表示客户端设备102和服务器之间的数据通信,而实线表示单个设备内(例如,客户端设备102内或服务器内)的数据通信。在其他实施例中,可以在设备之间以不同方式分布功能和/或可以使用不同的设备。
58.在302,由一个或多个传感器在客户端设备102处收集原始数据。在一个实施例中,原始数据包括图像数据、惯性测量数据和位置数据。图像数据可以由物理地或无线地联接到客户端设备102的一个或多个相机来捕获。可以使用陀螺仪、加速度计或其组合来收集惯性测量数据,并且可以包括高达六个自由度的惯性测量数据-即三个平移运动自由度和三个旋转运动自由度。可以利用全球定位系统(gps)接收器来收集位置数据。附加的原始数据可以由各种其他传感器收集,诸如压力级别、照度级别、湿度级别、海拔级别、声音级别、音频数据等。原始数据可以存储在客户端设备102中的一个或多个存储模块中,该存储模块可以记录客户端设备102的各种传感器历史上获取的原始数据。
59.在304,客户端设备102可以维护局部地图存储。局部地图存储包括局部点云数据。点云数据包括形成可以构建的网格表面的空间位置。在304,局部地图存储可以包括局部点云数据的层级高速缓存,以便于由客户端设备102取回使用。在304,局部地图存储还可以包括融合到局部点云数据中的对象信息。对象信息可以指定局部点云数据中的各种对象。
60.一旦在302收集了原始数据,客户端设备102就在306检查地图是否初始化。如果在306处初始化了地图,则客户端设备102可以在308处初始化slam功能。slam功能包括建立点
云和追踪的建图系统,以在初始化的地图上找到相机在空间中的位置。该示例的slam过程还将动画或增量值重新投射回现实世界。如果在310没有初始化地图,则客户端设备102可以在304搜索局部地图存储以寻找已经局部存储的地图。如果在304在局部地图存储中找到地图,则客户端设备102可以取回该地图以供slam功能使用。如果在310没有定位地图,则在312,客户端设备102可以使用初始化模块来创建新地图。
61.一旦创建了新地图,则在304,初始化模块可以将新创建的地图存储在局部地图存储中。在320,客户端设备102可以例行地将局部地图存储304中的地图数据与服务器侧上的云地图存储同步。当同步地图数据时,客户端设备102上的局部地图存储304可以向服务器发送任何新创建的地图。在326,服务器侧检查云地图存储320是否先前已将从客户端设备102接收到的地图存储在云地图存储320中。如果不是,则服务器侧在328生成新地图以存储在云地图存储320中。备选地,服务器可以在328将新地图追加到云地图存储320中的现有地图。
62.回到客户端侧,在314,客户端设备102确定是否检测到新视点。在一些实施例中,客户端设备102确定所捕获的图像流中的每个视点是否与存储在客户端设备102上的预先存在的视点具有小于阈值的重叠(例如,局部地图存储304可以存储由客户端设备102获取的视点或从云地图存储320取回的视点)。在其他实施例中,客户端设备102在多步骤确定中确定是否检测到新视点(314)。在高层,客户端设备102可以取回客户端设备102的地理位置的局部半径内的任何预先存在的视点。通过预先存在的视点,客户端设备102可以开始标识与预先存在的视点相比在所讨论的视点中的相似对象或特征。例如,客户端设备102标识所讨论的视点中的树,并且还可以从局部半径内的预先存在的视点中减少也具有可见树的所有预先存在的视点。客户端设备102可以使用在将所讨论的视点与过滤后的预先存在的视点集合进行匹配方面更加稳健的附加过滤层。在一个示例中,客户端设备102使用机器学习模型来确定所讨论的视点是否与过滤后的集合中的另一视点匹配(即,所讨论的视点不是新的,因为它与现有视点匹配)。如果检测到新视点(314),则客户端设备102在316记录通过局部环境推断收集的数据。例如,在确定客户端设备102当前具有新视点时,可以将用新视点捕获的图像发送到服务器(例如,发送到服务器侧的地图/图像数据库318)。可以使用新的视点检测器模块来确定何时以及如何发送具有3d数据的图像。局部环境推断可以包括用于局部建图系统的更新后的关键帧以及串行化的图像和/或地图数据。服务器可以使用局部环境推断来相对于地图中给定位置处的其他视点来适配新视点。
63.在服务器侧,新的视点数据(例如,包括顶部具有网格数据的点云信息)可以在318存储在服务器侧的地图/图像数据库中。服务器可以从所存储的云地图存储320和对象数据库322添加现实世界地图的不同部分。云环境推断324(包括所添加的组件数据)可以被发送回客户端设备。所添加的数据可以包括点和网格以及具有要存储在局部地图存储304中的语义标签(例如,墙或床)的对象数据。
64.虚拟世界的概念图
65.图4根据一个实施例,描绘了与现实世界400平行的虚拟世界410的概念图,其可以充当基于位置的平行现实游戏的玩家的游戏板。如图4所示,图1的客户端设备102可以托管具有对应于现实世界400的虚拟世界410的平行现实游戏(或其他基于位置的游戏)。
66.如图所示,虚拟世界410可以包括与现实世界400的地理环境平行的地理环境。具
体地,定义现实世界400中的地理区域或空间的坐标范围被映射到定义虚拟世界410中的虚拟空间的对应坐标范围。现实世界400中的坐标范围可以与城镇、邻里、城市、校园、地点、国家、大陆、整个地球或其他地理区域相关联。地理坐标范围中的每个地理坐标被映射到虚拟世界中的虚拟空间中的对应坐标。
67.玩家在虚拟世界410中的位置对应于该玩家在现实世界400中的位置。例如,位于现实世界400中的位置412的玩家a在虚拟世界410中具有对应的位置422。类似地,位于现实世界中的位置414的玩家b具有在虚拟世界中对应的位置424。当玩家在现实世界400中的地理坐标范围内移动时,玩家也在定义虚拟世界410中的虚拟空间的坐标范围内移动。具体地,当玩家导航现实世界中的地理坐标范围时,可以使用与玩家携带的客户端设备102相关联的定位系统(例如,gps系统或由定位和建图模块112使用的其他系统)来追踪玩家的位置。与玩家在现实世界400中的位置相关联的数据用于更新玩家在定义虚拟世界410中的虚拟空间的对应坐标范围中的位置。以此方式,玩家可以通过简单地在现实世界400中的对应地理坐标范围之间行进来在定义虚拟世界410中的虚拟空间的坐标范围中导航连续轨迹,而不必登记或周期性地更新现实世界400中的特定离散位置处的位置信息。
68.平行现实游戏可以包括多个游戏目标,该多个游戏目标要求玩家前往分散在虚拟世界410中的各种虚拟位置的各种虚拟元素和/或虚拟对象和/或与其进行交互。玩家可以通过行进到现实世界400中的虚拟元素或对象的对应位置来行进到这些虚拟位置。例如,客户端设备102的定位系统可以连续追踪玩家的位置,使得当玩家连续巡览现实世界400时,玩家也连续巡览平行虚拟世界410。然后,玩家可以在特定位置与各种虚拟元素和/或对象交互,以实现或执行一个或多个游戏目标。
69.例如,参考图4,游戏目标可以要求玩家捕获位于虚拟世界410中的各种虚拟位置的虚拟元素430或要求其所有权。这些虚拟元素430可以链接到现实世界400中的地标、地理位置或对象440。现实世界地标或对象440可以是艺术品、纪念碑、建筑物、企业、图书馆、博物馆或其他适合的现实世界地标或对象。为了捕获这些虚拟元素430,玩家必须行进到链接到现实世界中的虚拟元素430的地标、地理位置或对象440,并且必须与虚拟世界410中的虚拟元素430执行任何必要的交互。例如,图4的玩家a将不得不行进到现实世界400中的地标440,以便经由客户端设备102与链接到该特定地标440的虚拟元素430交互或捕获该虚拟元素430。与虚拟元素430的交互可能需要现实世界400中的动作,诸如拍摄照片和/或验证、获得或捕获关于与虚拟元素430相关联的地标或物体440的其他信息。
70.游戏目标可以要求玩家使用由玩家在平行现实游戏中收集的一个或多个虚拟物品。例如,玩家可能不得不在虚拟世界410中行进,寻找可能对完成游戏目标有用的虚拟物品(例如,武器或其他物品)。这些虚拟物品可以通过行进到现实世界400中的不同位置或通过在虚拟世界410或现实世界400中完成各种动作来找到或收集。在图4所示的示例中,玩家使用虚拟物品432来捕获一个或多个虚拟元素430。具体地,玩家可以在虚拟世界410中靠近虚拟元素430的位置部署虚拟物品432。在虚拟元素430附近部署一个或多个虚拟物品432可以导致为特定玩家或特定玩家的团队和/或派别捕获虚拟元素430。
71.在一个特定实现方式中,玩家可能必须收集虚拟能量作为平行现实游戏的一部分。如图4所示,虚拟能量450可以分散在虚拟世界410中的不同位置。玩家可以通过行进到虚拟能量450在现实世界400中的对应位置来收集虚拟能量450。虚拟能量450可用于为虚拟
物品供电和/或执行平行现实游戏中的各种游戏目标。失去所有虚拟能量450的玩家可以从平行现实游戏断开连接。
72.根据本公开的各方面,平行现实游戏可以是大规模多玩家的基于位置的游戏,其中平行现实游戏中的每个参与者共享相同的虚拟世界。玩家可以被分成分离的团队或派别,并且可以一起工作以实现一个或多个游戏目标,诸如捕获虚拟元素430或要求其所有权。以此方式,平行现实游戏本质上可以是鼓励平行现实游戏内的玩家之间合作的社交游戏。在平行现实游戏期间,来自敌对团队的玩家可以相互对抗。玩家可以使用虚拟物品432来攻击或阻碍敌对团队的玩家的前进。
73.平行现实游戏可以具有各种特征以增强和鼓励平行现实游戏内的游戏玩法。例如,玩家可以积累虚拟货币或其他虚拟奖励,其可以在整个平行现实游戏中使用。当玩家完成一个或多个游戏目标并在平行现实游戏中获得经验时,玩家可以前进通过各种级别。玩家可以通过平行现实游戏中提供的一个或多个通信接口相互通信。玩家还可以获得可用于在平行现实游戏内完成游戏目标的增强的“能力”或虚拟物品432。使用本文提供的公开内容,本领域普通技术人员应当理解,在不偏离本公开内容的范围的情况下,平行现实游戏可以包括各种其他游戏特征。
74.示例方法
75.图5是根据实施例,示出用于将第一3d地图和第二3d地图联接在一起成为环境的单一3d地图的过程500的流程图。在一些实施例中,过程500可以被改变为在客户端侧而不是服务器侧执行。在该实施例中,服务器接收510由第一客户端设备102的相机捕获的第一组图像数据。图像数据表示环境中第一客户端设备102周围的第一区域的近实时的视图。服务器基于第一组图像数据,并且在一下情况下,基于由第一客户端设备102捕获的位置数据,来生成520第一3d地图。3d地图在空间上描述第一客户端设备102周围的第一区域。
76.服务器接收从环境中的第二客户端设备102捕获的第二组图像数据。第二组图像数据描述第二客户端设备102周围的第二区域,并且服务器基于第二组图像数据生成530第二3d地图。服务器分析540第一3d地图和第二3d地图,以寻找位于这两个3d地图中的共同特征。响应于服务器在第一3d地图和第二3d地图中找到共同特征,服务器将第一3d地图和第二3d地图联接550为描述环境的单一3d地图。在另一实施例中,客户端设备102生成第一和第二3d地图并将它们发送到服务器,服务器确定是否以及如何将它们联接在一起。
77.在一些实施例中,第一和第二3d地图可以在节点图形中相关联。具体地,第一和第二3d地图可以各自由图中的边联接的节点来表示。每个节点与表示捕获用于生成3d地图的图像数据的客户端设备102的不同坐标空间或由相应客户端设备捕获图像数据的时间相关联。该边包括所联接节点的不同坐标空间之间的变换。服务器可以基于分析540来确定边,该分析可以包括会话信息、基于点特征的定位、基于线特征的定位、3d云对准、强制重叠、优化或基于qr码的定位中的一个或多个。
78.图6是根据实施例,示出用于基于同步生成环境的单一3d地图的过程600的流程图。在一些实施例中,过程600可以被更改为在客户端侧执行。在该实施例中,服务器接收610由第一客户端设备102的相机捕获的图像数据。该图像数据表示环境中第一客户端设备周围的第一区域的近实时的视图。服务器同步620第一客户端设备102和第二客户端设备102之间的位置。在一些实施例中,服务器通过从诸如qr码的特征的每个客户端设备102或
另一客户端设备接收图像数据来同步位置。
79.服务器基于图像数据从第一客户端设备生成630第一3d地图。备选地,第一3d地图可以由客户端设备102生成并发送到服务器,而不是图像数据。第一3d地图在空间上描述第一客户端设备102周围的第一区域。第一3d地图可以是原始图像或由第一客户端设备102生成的点云。服务器接收从环境中的第二客户端设备102捕获的图像数据。该图像数据描述第二客户端设备102周围的第二区域,并且服务器基于图像数据从第二客户端设备生成640第二3d地图。服务器基于同步从第一3d地图和第二3d地图生成650单一3d地图。因为设备的位置在环境内被同步,所以即使地图不重叠,也可以确定第一和第二3d地图内的特征的相对位置。
80.计算机器架构
81.图7是示出适合用作客户端设备102或服务器的示例计算机700的高级别框图。示例计算机700包括耦合到芯片组704的至少一个处理器702。芯片组704包括存储器控制器集线器720和输入/输出(i/o)控制器集线器722。存储器706和图形适配器712耦合到存储器控制器集线器720,并且显示器718耦合到图形适配器712。存储设备708、键盘710、定点设备714和网络适配器716耦合到i/o控制器集线器722。计算机700的其他实施例具有不同的架构。
82.在图7所示的实施例中,存储设备708是诸如硬盘驱动器、压缩盘只读存储器(cd-rom)、dvd或固态存储设备的非瞬态计算机可读存储介质。存储器706保存处理器702使用的指令和数据。定点设备714是鼠标、轨迹球、触摸屏或其他类型的定点设备,并且与键盘710(其可以是屏幕上的键盘)组合使用以将数据输入到计算机系统700中。在其他实施例中,计算机700具有各种其他输入机制,诸如触摸屏、操纵杆、按钮、滚轮等或其任意组合。图形适配器712在显示器718上显示图像和其他信息。网络适配器716将计算机系统700耦合到一个或多个计算机网络(例如,网络适配器716可以经由网络104将客户端设备102耦合到服务器)。
83.图1的实体使用的计算机类型可以根据实施例和实体所需的处理能力而变化。例如,服务器可以包括分布式数据库系统,该分布式数据库系统包括一起工作以提供所描述功能的多个刀片服务器。此外,计算机可以缺少上述组件中的一些,诸如键盘710、图形适配器712和显示器718。
84.本领域技术人员可以在不背离所描述的概念的情况下对本文公开的装置和技术进行多次使用和修改或偏离。例如,本公开中所示出或所描述的组件或特征不限于所示出或所描述的位置、设置或上下文。根据本公开的装置的示例与参考一个或多个先前附图所描述的那些相比,可以包括所有、更少或不同组件。因此,本公开不限于本文描述的特定实现,而是给予与所附权利要求及其等同形式一致的最广泛的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1