CN112513713B - 用于地图构建的系统和方法 - Google Patents
用于地图构建的系统和方法 Download PDFInfo
- Publication number
- CN112513713B CN112513713B CN201980049058.6A CN201980049058A CN112513713B CN 112513713 B CN112513713 B CN 112513713B CN 201980049058 A CN201980049058 A CN 201980049058A CN 112513713 B CN112513713 B CN 112513713B
- Authority
- CN
- China
- Prior art keywords
- map
- component
- state
- change
- point
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- 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/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- 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
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- 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
-
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/56—Particle system, point based geometry or rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Geometry (AREA)
- Optics & Photonics (AREA)
- Data Mining & Analysis (AREA)
- Remote Sensing (AREA)
- Multimedia (AREA)
- Processing Or Creating Images (AREA)
- Image Analysis (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
一种用于在具有通信耦合的第一和第二硬件组件的系统上更新点图的计算机实现的方法,包括:第一组件对第一状态下的点图执行第一处理以生成第一变化。该方法还包括第二组件对第一状态下的点图执行第二处理以生成第二变化。该方法进一步包括第二组件将第二变化应用于第一状态下的点图,以生成第二状态下的第一更新点图。此外,该方法包括第一组件向第二组件发送第一变化。另外,该方法包括第二组件将第一变化应用于第二状态下的第一更新点图,以生成第三状态下的第二更新点图。
Description
技术领域
本公开涉及多组件地图构建和地图构建同步系统,以及使用该系统跨多组件地图构建和同步地图构建的方法。
背景技术
现代计算和显示技术促进了用于所谓的“虚拟现实”(VR)或“增强现实”(AR)体验的“混合现实”(MR)系统的开发,其中数字再现的图像或其部分以看起来是或可以被感知为真实的方式呈现给用户。VR场景通常涉及数字或虚拟图像信息的呈现,但对实际的真实世界视觉输入不透明。AR场景通常涉及呈现数字或虚拟图像信息,作为对用户周围的真实世界的可视化(即,对真实世界视觉输入的透明性)的增强。因此,AR场景涉及对真实世界的视觉输入具有透明性的数字或虚拟图像信息的呈现。
MR系统通常生成并显示颜色数据,这增加了MR场景的真实性。这些MR系统中的许多MR系统通过快速连续地依次投影与彩色图像相对应的不同(例如,原色)颜色或“场”(例如,红色、绿色和蓝色)的子图像来显示颜色数据。以足够高的速率(例如60Hz、120Hz等)投影彩色子图像可能会在用户的脑海中传达出平滑的彩色MR场景。
各种光学系统在各种深度处生成包括彩色图像的图像,以显示MR(VR和AR)场景。一些此类光学系统在2014年11月27日提交的美国实用专利申请序列号14/555,585(代理人案卷号ML.20011.00)中进行了描述,其内容通过引用全部明确且完整地并入在此,如同在此充分阐述一样。
实现AR/MR的头戴式显示设备提供同时查看真实和虚拟对象。采用“光学透视”显示器,用户可以透视显示系统中的透明(或半透明)元素,以直接查看环境中来自真实对象的光。透明元素(通常称为“组合器”)将来自显示器的光叠加在用户的真实世界视图上,其中来自显示器的光将虚拟内容的图像投影到环境中真实对象的透视视图中。可以将相机安装在头戴式显示设备上,以捕获用户正在观看的场景的图像或视频。
当前的光学系统,诸如AR/MR系统中的那些光学系统,以光学方式渲染虚拟内容。内容是“虚拟的”,因为它不对应于位于空间中相应位置的真实物理对象。相反,当受到指向用户眼睛的光束刺激时,虚拟内容仅存在于头戴式显示设备的用户的大脑(例如,光学中心)中。
一些AR/MR系统使用真实世界环境的地图(例如,拓扑图、几何图、稀疏点图等)来生成用于AR/MR场景的可通行世界模型。可通行世界模型促进了涉及真实世界环境中的真实世界对象的交互,诸如(例如,在真实世界的沙发上显示虚拟对象)。稀疏地图是用于计算相对于“稳定”坐标系的视觉姿势的基本构建块。环境特征成为3D稀疏地图中的参考点。参考点相对于传感器的位置定义了传感器的位置或姿势。可以使用来自多个系统组件的数据来构建稀疏地图。稀疏地图允许跟踪以促进真实世界环境中的虚拟对象(“像素棒”)的永久性。一些与AR/MR地图构建有关的方法涉及使用拓扑图对AR/MR设备进行定位以确定用户和/或AR/MR设备的位置和姿势。一些与AR/MR地图构建有关的方法涉及使用几何图来对AR/MR设备的真实世界对象建模,以允许虚拟对象的更准确和逼真的呈现。一些AR/MR系统使用同步定位和地图构建技术来生成和/或更新(可能是动态的)真实世界环境的地图。
作为示例,定位允许佩戴头戴式显示设备的用户在虚拟对象出现的区域周围行走的同时观看显示器上的虚拟对象。使用更新的位置和姿势数据,可以为每个视点渲染虚拟对象,从而使用户感觉到他们正在围绕占用真实空间的对象行走。如果将头戴式显示设备用于呈现多个虚拟对象,则可以使用头部姿势的测量值来渲染场景,以匹配用户动态变化的位置和姿势并提供增强的沉浸感。
可以使用许多方法和技术来生成、修改和/或优化地图。这些技术中的一些涉及新数据。一组此类新数据技术被统称为跟踪,并且包括更新地图点统计信息,这可能会触发地图点删除。另一新数据技术是视觉惯性里程表(“VIO”),其包括将惯性约束应用于稀疏点图。另一组新数据技术被统称为“地图构建”,其包括插入新的关键绑定帧(keyrig frame)(“关键帧(keyframe)”或“绑定帧(rigframe)”)、地图点和观测值。另一组新数据技术被统称为重新定位,其包括添加新的orb特征和词袋(“BoW”)索引。另一组新数据技术被统称为地图合并,其包括合并来自不同AR/MR会话的稀疏地图数据。另一组新数据技术被统称为联合密集优化,其包括合并密集地图数据。
其它地图构建技术涉及对现有地图的优化。其中一组此类优化技术被统称为束平差(bundle adjustment),其包括修改稀疏地图几何图形和在线校准。另一组优化技术被统称为回环(loop closure),其包括修改稀疏地图的几何形状。
在2015年5月7日提交的美国实用专利申请序列号14/705,983(代理人案卷号ML.200V7.310)和2015年5月5日提交的序列号14/704,844(代理人案卷号ML.20020.304)中描述了各种与AR/MR地图构建相关的方法和技术,其内容通过引用全部明确且完整地并入在此,如同在此充分阐述一样。
如上所述,地图构建有助于AR/MR系统功能。跨多组件AR/MR系统的组件(例如,头戴式显示器(“可穿戴”)和腰带或身体佩戴的处理组件(“动力包(Power Pack)”))的同步地图有助于实现连贯且一致的AR/MR场景。地图同步涉及某些系统限制,诸如处理能力、存储器、带宽、数据源、时延以及多操作系统、处理器和架构。
发明内容
在一个实施例中,一种用于在具有通信地耦合的第一和第二硬件组件的系统上更新点图的计算机实现的方法包括:第一组件对第一状态下的点图执行第一处理以生成第一变化。该方法还包括第二组件对第一状态下的点图执行第二处理以生成第二变化。该方法进一步包括第二组件将第二变化应用于第一状态下的点图,以生成第二状态下的第一更新点图。此外,该方法包括第一组件向第二组件发送第一变化。另外,该方法包括第二组件将第一变化应用于第二状态下的第一更新点图,以生成第三状态下的第二更新点图。
在一个或多个实施例中,该方法还包括第二组件向第一组件发送第二变化。该方法进一步包括:第一组件将第二变化应用于第一状态下的点图,以生成第二状态下的第一更新点图。此外,该方法包括:第一组件将第一变化应用于第二状态下的第一更新点图,以生成第三状态下的第二更新点图。该方法还可以包括:第一组件基于第一变化和第二变化来生成变化顺序,并且第一组件在基于变化顺序将第一变化应用于第二状态下的更新点图之前,将第二变化应用于第一状态下的点图。第一组件将第二变化应用于第一状态下的点图可包括:第一组件生成预变化的第一状态。第一组件将第一变化应用于第二状态下的第一更新点图可包括:第一组件生成预变化的第二状态。第二组件将第二变化应用于第一状态下的点图可包括:第二组件生成预变化的第一状态,并且第二组件将第一变化应用于第二状态下的第一更新点图可包括:第二组件生成预变化的第二状态。
在一个或多个实施例中,该方法还包括第一组件基于第一变化和第二变化来生成变化顺序,并且第一组件向第二组件发送变化顺序。该方法还可以包括:第二组件在基于变化顺序将第一变化应用于第二状态下的更新点图之前,将第二变化应用于第一状态下的点图。第一处理可以选自由如下组成的组:跟踪、地图点删除、VIO、地图构建、新关键帧/关键绑定帧的插入、新地图点的插入、新观测值的插入、束平差、稀疏地图的几何形状的修改、在线校准、重新定位、添加新的orb特征;添加新的BoW索引;回环;修改稀疏地图的几何形状;地图合并;以及联合密集优化。
在一个或多个实施例中,点图对应于系统所位于的物理位置。物理位置可以是房间或房间的信元。点图可以是较大点图的一部分。
在一个或多个实施例中,第一组件是混合现实系统的头戴式视听显示组件,并且第二组件是混合现实系统的躯干安装的处理组件。该方法还可以包括第二组件在将第二变化应用于第一状态下的点图之前,调和第一变化和第二变化。
在一个或多个实施例中,第一组件和第二组件可通信地耦合到第三组件。该方法还包括第三组件对第一状态下的点图执行第三处理以生成第三变化。该方法进一步包括第一组件和第二组件分别向第三组件发送第一变化和第二变化。此外,该方法包括:第三组件将第三变化应用于第三状态下的第二更新点图,以生成第四状态下的第三更新点图。第一组件可以是混合现实系统的头戴式视听显示组件,第二组件可以是混合现实系统的躯干安装的处理组件,而第三组件可以是基于云的处理组件。该方法还可以包括第二组件在生成第二变化之前,从第一组件接收第一变化。第二组件可以包括用于数据存储的可移动介质。
在另一个实施例中,混合现实系统包括头戴式视听显示组件和通信地耦合到显示组件的躯干安装的处理组件。显示组件被配置为对第一状态下的点图执行第一处理以生成第一变化,并向处理组件发送第一变化。处理组件被配置为对第一状态下的点图执行第二处理以生成第二变化,将第二变化应用于第一状态下的点图以生成第二状态下的第一更新点图,并将第一变化应用于第二状态下的第一更新点图以生成第三状态下的第二更新点图。
在一个或多个实施例中,处理组件进一步被配置为向显示组件发送第二变化。显示组件还被配置为将第二变化应用于第一状态下的点图,以生成第二状态的第一更新点图,并且将第一变化应用于第二状态下的第一更新点图,以生成第三状态下的第二更新点图。显示组件还可以被配置为基于第一变化和第二变化来生成变化顺序,并且在基于变化顺序将第一变化应用于第二状态下的更新点图之前,将第二变化应用于第一状态下的点图。
在一个或多个实施例中,显示组件进一步被配置为基于第一变化和第二变化来生成变化顺序,并向处理组件发送变化顺序。处理组件还可以被配置为在基于变化顺序在将第一变化应用于第二状态下的更新点图之前,将第二变化应用于第一状态下的点图。第一处理可以选自由如下组成的组:跟踪、地图点删除、VIO、地图构建、新关键帧/关键绑定帧的插入、新地图点的插入、新观测值的插入、束平差、稀疏地图的几何形状的修改、在线校准、重新定位、添加新的orb特征;添加新的BoW索引;回环;修改稀疏地图的几何形状;地图合并;以及联合密集优化。
在一个或多个实施例中,点图对应于系统所位于的物理位置。物理位置可以是房间或房间的信元。点图可以是更大的点图的一部分。
在一个或多个实施例中,处理组件进一步被配置为在将第二变化应用于第一状态下的点图之前调和第一变化和第二变化。显示和处理组件可以通信地耦合到在线组件。显示和处理组件可以被配置为分别向在线组件发送第一变化和第二变化。在线组件可以被配置为对第一状态下的点图执行第三处理以生成第三变化,并且将第三变化应用于第三状态下的第二更新点图以生成第四状态下的第三更新点图。
在一个或多个实施例中,显示组件包括显示组件地图管理器,该显示组件地图管理器被配置为生成变化顺序,基于变化顺序应用变化,并向处理组件发送变化顺序。显示组件还包括显示组件变化写入器,该显示组件变化写入器被配置为向处理组件发送第一变化。显示组件进一步包括被配置为接收变化的显示组件变化读取器。显示组件地图管理器还可被配置为生成变化前状态。显示组件地图管理器可以包括变化缓冲器。
在一个或多个实施例中,处理组件包括处理组件地图管理器,该处理组件地图管理器被配置为接收变化顺序并基于变化顺序应用变化。处理组件还包括处理组件变化写入器,该处理组件变化写入器被配置为向显示组件发送第二变化。处理组件进一步包括被配置为接收变化的处理组件变化读取器。处理组件地图管理器还可被配置为生成变化前状态。处理组件地图管理器可以包括变化缓冲器。处理组件可以包括用于数据存储的可移动介质。
在另一个实施例中,一种用于在具有头戴式视听显示组件和通信地耦合到显示组件的躯干安装的处理组件的系统上更新点图的计算机实现的方法包括:处理组件将点图划分成多个点图子单元。该方法还包括:处理组件向显示组件发送多个点图子单元的第一子集。该方法进一步包括:响应于显示组件的运动,处理组件向显示组件发送多个点图子单元的第二子集。
在一个或多个实施例中,该方法还包括:显示组件存储多个点图子单元的第一子集;显示组件检测其运动;以及显示组件向处理组件发送运动数据。该方法进一步包括:显示组件基于运动删除多个点图子单元的第一子集的一部分;显示组件接收多个点图子单元的第二子集;以及显示组件存储多个点图子单元的第二子集。多个点图子单元的第一子集的一部分和多个点图子单元的第二子集可以具有基本上相同的大小。
在一个或多个实施例中,多个点图子单元的第二子集对应于运动的方向,并且多个点图子单元的第一子集的一部分对应于与运动方向相反的第二方向。多个点图子单元可以是3D阵列。3D阵列可以是3×3×1阵列、10×10×1阵列或6×6×3阵列。
在另一个实施例中,混合现实系统包括头戴式视听显示组件和通信地耦合到显示组件的躯干安装的处理组件。处理组件被配置为将点图划分成多个点图子单元,向显示组件发送多个点图子单元的第一子集,以及响应于显示组件的运动而向显示组件发送多个点图子单元的第二子集。显示组件被配置为存储多个点图子单元的第一子集,检测其运动,向处理组件发送运动数据,基于运动删除多个点图子单元的第一子集的一部分,接收多个点图子单元的第二子集,以及存储多个点图子单元的第二子集。
在一个或多个实施例中,多个点图子单元的第一子集的一部分和多个点图子单元的第二子集具有基本上相同的大小。多个点图子单元的第二子集可以对应于运动的方向,并且多个点图子单元的第一子集的一部分可以对应于与运动方向相反的第二方向。多个点图子单元可以是3D阵列。3D阵列可以是3×3×1阵列、10×10×1阵列或6×6×3阵列。
在另一个实施例中,一种用于跨USB电缆通信数据的系统,包括写入器、读取器和包括信元阵列的数据结构。阵列的每个信元都包括所有者指示符、状态指示符和信元数据。
在一个或多个实施例中,信元阵列包括多个地图信元和至少一个过渡信元。该系统还可以包括信元列表,该信元列表包括与地图的每个信元相对应的多个指针,以及该地图的指针或信元的计数。
在另一个实施例中,一种用于使用包括写入器、读取器和包括信元阵列的数据结构的系统跨USB电缆通信数据的方法,该阵列的每个信元包括所有者指示符、状态指示符以及信元数据,该方法包括通过将所有的所有者指示符设定为“无所有者”并将所有状态指示符设定为“INVALD(无效)”来初始化数据结构。该方法还包括识别要跨USB电缆传输的信元。该方法进一步包括将信元的所有者指示符设定为“comm2”。此外,该方法包括将信元的状态指示符设定为“USB”。此外,该方法包括跨USB电缆传输信元。该方法还包括在跨USB电缆传输信元之后,将信元的所有者指示符设定为“MAP(地图)”。该方法进一步包括在跨USB电缆传输信元之后,将信元的状态指示符设定为“MAP”。
在一个或多个实施例中,该方法还包括系统读取信元列表,该信元列表包括与具有被设定为“MAP”的所有者指示符的每个信元相对应的多个指针,以及具有被设定为“MAP”的所有者指示符的多个信元的指针的计数。该方法还可以包括写入填充请求阵列。该方法可以进一步包括通过将信元的所有者指示符设定为“无所有者”并且将信元的状态指示符设定为“INVALD”来使信元无效。此外,该方法可以包括通过将信元的所有者指示符设定为“comm2”并且将信元的状态指示符设定为“USB”来发送信元。
在详细描述、附图和权利要求中描述了本公开的附加和其它目的、特征和优点。
附图说明
附图示出了本公开的各种实施例的设计和实用性。应当注意,附图未按比例绘制,并且在整个附图中,相似结构或功能的元件由相似的附图标记表示。为了更好地理解如何获得本公开的各个实施例的上述和其它优点和目的,将通过参考在附图中示出的本公开的具体实施例来对以上简要描述的本公开进行更详细的描述。理解这些附图仅描绘了本公开的典型实施例,并且因此不应被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释本公开,在附图中:
图1-4示意性地描绘了根据一些实施例的VR/AR/MR系统及其子系统。
图5描绘了根据一些实施例的VR/AR/MR系统的焦平面。
图6描绘了根据一些实施例的可通行世界模型的简化视图。
图7描绘了根据一些实施例的使用可通行世界模型进行渲染的方法。
图8描绘了根据一些实施例的拓扑图。
图9描绘了根据一些实施例的使用拓扑图的定位过程的高层流程图。
图10描绘了根据一些实施例的作为各种关键帧之间的连接的几何图。
图11描绘了根据一些实施例的在几何图的顶部分层的拓扑图。
图12描绘了根据一些实施例的用于执行波传播束平差的过程的高层流程图。
图13描绘了根据一些实施例的如通过虚拟关键帧所看到的地图点、关键帧以及从地图点到关键帧的渲染线。
图14描绘了根据一些实施例的用于基于渲染而不是搜索来查找地图点的过程的高层流程图。
图15示意性地描绘了根据一些实施例的包括多个AR/MR系统的地图构建系统。
图16描绘了根据一些实施例的使用多组件地图构建系统的异步地图构建方法的工作流。
图17A至图17D描绘了根据一些实施例的多个示例性回环操作。
图18描绘了根据一些实施例的使用具有地图管理的多组件地图构建系统的异步地图构建方法的工作流。
图19示意性地描绘了根据一些实施例的用于地图构建和地图同步的AR/MR系统。
图20示意性地描绘了根据一些实施例的生成变化顺序的用于地图构建和地图同步的AR/MR系统的可穿戴地图管理器。
图21示意性地描绘了根据一些实施例的基于变化顺序来应用多个接收到的状态变化的用于地图构建和地图同步的AR/MR系统的动力包地图管理器。
图22示意性地描绘了根据一些实施例的处理多个接收到的状态变化并生成变化顺序的用于地图构建和地图同步的AR/MR系统的可穿戴地图管理器。
图23示意性地描绘了根据一些实施例的基于变化顺序来处理多个接收到的状态变化的用于地图构建和地图同步的AR/MR系统的动力包地图管理器。
图24和图25示意性地描绘了根据一些实施例的在多组件地图构建系统中的信元流传输方法。
图26和图27描绘了根据一些实施例的用于零复制数据传输的数据结构。
图28是示意性地描绘了根据一些实施例的说明性计算系统的框图。
具体实施方式
本公开的各个实施例涉及用于在单个实施例或多个实施例中的多组件系统中进行地图构建和地图同步的系统、方法和制品。在详细描述、附图和权利要求中描述了本公开的其它目的、特征和优点。
现在将参考附图详细描述各种实施例,该附图被提供作为本公开的说明性示例,以使得本领域技术人员能够实践本公开。值得注意的是,下面的附图和示例并不意味着限制本公开的范围。在可以使用已知组件(或方法或过程)部分地或完全实现本公开的某些元素的情况下,将仅描述理解本公开所必需的这些已知组件(或方法或过程)的那些部分,并且将省略此类已知组件(或方法或过程)的其它部分的详细描述,以免模糊本公开。此外,各种实施例涵盖了通过示例的方式在此所指的组件的当前和将来的已知等效物。
可以独立于AR/MR系统来实现头戴式视听显示系统和系统之间的用户物理接触调制,但是以下仅出于说明性目的而相对于AR/MR系统描述了一些实施例。在此所述的接触调制系统也可以以与VR系统相同的方式使用。
问题和解决方案的摘要
地图构建是许多AR/MR系统功能的基础,并且跨多组件AR/MR系统的组件之间的地图同步有助于实现连贯且一致的AR/MR场景的稳定地图构建。系统限制(诸如处理能力、存储器、带宽、数据源、组件时延以及多操作系统、处理器和架构)可导致地图构建期间的整体系统时延,从而可能负面影响AR/MR系统性能。
例如,在一些可穿戴设备中,跟踪消耗了地图数据和相关处理的相当大的一部分,并且地图构建生成了在可穿戴设备上产生的大多数地图数据。此外,一些可穿戴前向相机(“FOV”)提供了用于地图构建的数据。因此,优选运行时延关键型作业以及在可穿戴设备上使用FOV相机数据的作业。然而,可穿戴设备具有有限的存储器和处理预算/能力。例如,许多可穿戴设备无法为大型真实世界区域/空间存储整个稀疏点图。同样,许多可穿戴设备在实际时间量内无法运行大型几何优化(例如,全局束平差、回环等)。
动力包通常具有比可穿戴设备更多的存储器(包括一些永久性存储器,诸如SD卡)和处理能力。因此,动力包访问更多地图数据(包括用于大型真实世界区域的稀疏点图数据和用于有限的真实世界区域的密集点图数据)和具有运行大型几何优化(例如,全局束平差、回环等)的处理能力。动力包甚至可能具有足够的处理能力来运行涉及密集点图数据的优化。然而,地图数据可通过链路(例如,USB)从可穿戴设备传播到动力包,并且更新的地图可通过链路从动力包传播到可穿戴设备。诸如USB的链路可能具有导致无法接受的系统时延的有限的带宽。例如,优选在可穿戴设备处执行时延敏感的作业(例如与头部姿势相关的作业),而无需在动力包处处理。
一些AR/MR系统还包括基于云的存储和处理组件。云组件可以访问大量的持久性存储和处理能力。云组件还可以访问较早时间由不同系统或同一系统产生的同一真实世界区域/环境的稀疏和密集点图。来自不同系统的数据可以作为地图网格存储在云上,从而允许更大尺度的优化。因此,云组件可以执行处理密集优化,该密集优化涉及来自多个会话的稀疏点和密集点图数据。然而,云组件与动力包和可穿戴设备之间的网络连接并非始终可用。因此,优选在云组件的参与下执行时延敏感的作业(例如,与头部姿势有关的作业)。在一些实施例中,地图构建的第四层可以存在于云组件层的顶部。
此外,这些AR/MR系统组件涉及不同的平台、架构和组织结构。例如,这些系统组件(可穿戴设备、动力包、云)可以具有不同的处理器架构、存储器层次结构和存储模型(例如,用于可穿戴设备的Myriad/流传输混合架构矢量引擎(“SHAVE”)、用于动力包的NVidia/ARM、用于云的PC)。系统组件还可以具有不同的框架环境/操作系统(例如,用于可穿戴设备的minotaur、用于动力包的malleus、用于云的各种OS)。此外,系统组件可以具有不同的代码库、发布过程等(例如,特别是在可穿戴设备与动力包对云之间)。这些组件差异可能进一步使地图同步复杂化。
在此所述的实施例包括地图数据处理管线,该地图数据处理管线通过将处理结果格式化为变化并利用变化顺序来允许对所有系统组件进行并行处理。该处理管线减少了系统时延,并允许系统组件执行最优匹配的作业,同时最小化系统组件的停机时间,同时等待对地图数据的串行处理。实施例还包括地图数据格式/结构,其包括独立可转移和可操纵的地图子单元。该地图数据格式/结构允许可穿戴设备在地图子单元的子集上进行操作,而动力包存储定义真实世界区域的稀疏点图的多个地图子单元。实施例进一步包括用于跨带宽受限信道来传输数据的数据格式/结构,该带宽受限信道包括所有权和状态信息。该地图数据格式/结构允许跨此类带宽受限信道(例如,USB)的更有效的数据传输。
说明性VR、AR和/或MR系统
以下描述涉及可以与接触调制系统一起实践的说明性VR、AR和/或MR系统。然而,应当理解,实施例还适用于其它类型的显示系统(包括其它类型的VR、AR和/或MR系统)中的应用,并且因此,实施例不仅仅限于在此公开的说明性系统。
在图1至图4中描绘了VR、AR和/或MR虚拟图像系统100的各个组件。虚拟图像生成系统100包括由最终用户50佩戴的框架结构102;由框架结构102承载的显示子系统110,使得显示子系统110定位于最终用户50的眼前;以及由框架结构102承载的扬声器106,使得扬声器106与最终用户50的耳道相邻定位(可选地,另一个扬声器(未示出)与最终用户50的另一个耳道相邻定位,以提供立体声/可塑形声音控制)。显示子系统110被设计为向最终用户50的眼睛呈现光图案,该光图案可以被舒适地感知为对物理现实的具有高水平的图像质量和三维感知的增强,并且能够呈现二维内容。显示子系统110以高频率呈现提供对单个相干场景的感知的一系列帧。
在所示的实施例中,显示子系统110采用“光学透视”显示器,用户可以通过该显示器经由透明(或半透明)元件直接观看来自真实对象的光。透明元件(通常称为“组合器”)将来自显示器的光叠加在用户对真实世界的视图上。为此,显示子系统110包括部分透明的显示器。显示器定位于最终用户50的眼睛和周围环境之间的最终用户50的视野中,使得来自周围环境的直接光通过显示器传输到最终用户50的眼睛。
在所示实施例中,图像投影组件向部分透明的显示器提供光,从而与来自周围环境的直接光组合,并从显示器传输到用户50的眼睛。投影子系统可以是基于光纤扫描的投影设备,并且该显示器可以是基于波导的显示器,来自投影子系统的扫描光被注入该显示器中以产生例如比无穷远(例如臂长)更近的单个光学观看距离处的图像,多个离散光学观看距离或焦平面处的图像,和/或堆叠在多个观看距离或焦平面处以表示体积3D对象的图像层。光场中的这些层可以足够紧密地堆叠在一起,以看起来对人类视觉子系统是连续的(即,一层位于相邻层的混淆锥内)。另外地或可替代地,图片元素可以跨两层或更多层混合以增加在光场中各层之间过渡的感知连续性,即使这些层更稀疏地堆叠(即,一层位于相邻层的混淆锥之外)。显示子系统110可以是单眼的或双眼的。
虚拟图像生成系统100还可以包括安装在框架结构102上的一个或多个传感器(未示出)以便检测最终用户50的头部54的位置和运动和/或最终用户50的眼睛的位置和眼间距离。此类传感器可以包括图像捕获设备(诸如相机)、麦克风、惯性测量单元、加速度计、罗盘、GPS单元、无线电设备和/或陀螺仪。这些传感器中的许多传感器是在如下的假设下进行操作的:将传感器固定在其上的框架102基本上依次固定到用户的头部、眼睛和耳朵。
虚拟图像生成系统100还可以包括用户取向检测模块。用户取向模块检测最终用户50的头部54的瞬时位置(例如,经由耦合至框架102的传感器),并且可以基于从传感器接收的位置数据来预测最终用户50的头部54的位置。检测最终用户50的头部54的瞬时位置有助于确定最终用户50正在注视的特定实际对象,从而提供相对于该实际对象要生成的特定虚拟对象的指示,并进一步提供虚拟对象显示的位置的指示。用户取向模块还可基于从传感器接收的跟踪数据来跟踪最终用户50的眼睛。
虚拟图像生成系统100还可以包括控制子系统,该控制子系统可以采用多种形式中的任何一种。控制子系统包括多个控制器,例如一个或多个微控制器、微处理器或中央处理单元(CPU)、数字信号处理器、图形处理单元(GPU)、其它集成电路控制器,诸如专用集成电路(ASIC)、可编程门阵列(PGA)(例如现场PGA(FPGA))和/或可编程逻辑控制器(PLU)。
虚拟图像生成系统100的控制子系统可以包括中央处理单元(CPU)、图形处理单元(GPU)、一个或多个帧缓冲器以及用于存储三维场景数据的三维数据库。CPU可以控制整体操作,而GPU可以根据存储在三维数据库中的三维数据渲染帧(即,将三维场景转换为二维图像)并将这些帧存储在帧缓冲器中。一个或多个附加集成电路可以控制从帧缓冲器读入和/或读出帧以及显示子系统110的图像投影组件的操作。
虚拟图像生成系统100的各种处理组件可以物理地包含在分布式子系统中。例如,如图1至图4中所示,虚拟图像生成系统100可以包括本地处理和数据模块130,该本地处理和数据模块130诸如通过有线引线或无线连接136可操作地耦合到显示子系统110和传感器。本地处理和数据模块130可以以各种配置安装,诸如固定地附接到框架结构102(图1),固定地附接到头盔或帽子56(图2),可移除地附接到最终用户50的躯干58(图3),或以腰带耦合样式配置可移除地附接到最终用户50的臀部60(图4)。虚拟图像生成系统100还可包括远程处理模块132和远程数据存储库134,该远程处理模块132和远程数据存储库134诸如通过有线引线或无线连接138、140可操作地耦合到本地处理和数据模块130,使得这些远程模块132、134可操作地彼此耦合,并可用作本地处理和数据模块130的资源。
本地处理和数据模块130可以包括节能处理器或控制器,以及数字存储器(诸如闪存),二者均可用于协助处理、缓存和存储从传感器捕获的数据和/或使用远程处理模块132和/或远程数据存储库134获取和/或处理的数据,可能在此类处理或取得之后传递给显示子系统110。远程处理模块132可以包括被配置为分析和处理数据和/或图像信息的一个或多个相对强大的处理器或控制器。远程数据存储库134可以包括相对大规模的数字数据存储设施,该数字数据存储设施可以通过互联网或“云”资源配置中的其它联网配置而可用。在一些实施例中,在本地处理和数据模块130中存储所有数据并且执行所有计算,从而允许来自任何远程模块的完全自主的使用。
上述各个组件之间的耦合器136、138、140可包括用于提供有线或光通信的一个或多个有线接口或端口,或者诸如经由用于提供无线通信的RF、微波和IR的一个或多个无线接口或端口。在一些实现方式中,所有通信可以是有线的,而在其它实现方式中,所有通信可以是无线的。在更进一步的实现方式中,有线和无线通信的选择可以与图1至图4中所示的选择不同。因此,有线或无线通信的特定选择不应被认为是限制性的。
在一些实施例中,用户取向模块被包含在本地处理和数据模块130中,而CPU和GPU被包含在远程处理模块中。在替代实施例中,CPU、GPU或其部分可以被包含在本地处理和数据模块130中。3D数据库可以与远程数据存储库134相关联或在本地设置。
一些VR、AR和/或MR系统使用嵌入了深度平面信息的多个体积相位全息图、表面浮雕全息图或光导光学元件来生成看起来源自相应深度平面的图像。换句话说,衍射图案或衍射光学元件(“DOE”)可以被嵌入在光导光学元件(“LOE”;例如,平面波导)内或压印/压花在光导光学元件上,使得随着准直光(具有基本上平坦的波前的光束)沿着LOE基本上全内反射,它会在多个位置处与衍射图案相交并射向用户的眼睛。对DOE进行配置,使得从LOE射出的光会聚,使得它们看起来源自特定的深度平面。可以使用聚光透镜(“聚光镜”)生成准直光。
例如,第一LOE可以被配置为将准直光传递到看起来源自光学无限深度平面(0屈光度)的眼睛。另一个LOE可以被配置为传递看起来源自2米(1/2屈光度)距离的准直光。另一LOE可以被配置为传递看起来源自1米(1屈光度)的距离的准直光。通过使用堆叠的LOE组件,可以理解,可以创建多个深度平面,每个LOE被配置为显示看起来源自特定深度平面的图像。应当理解,堆叠可以包括任何数量的LOE。然而,至少需要N个堆叠的LOE以生成N个深度平面。此外,N、2N或3N个堆叠的LOE可用于在N个深度平面处生成RGB彩色图像。
为了向用户呈现3D虚拟内容,VR、AR和/或MR系统将虚拟内容的图像投影到用户的眼睛中,使得它们看起来源自Z方向中的各种深度平面(即,正交地远离用户的眼睛)。换句话说,虚拟内容不仅可以在X和Y方向中(即,在与用户眼睛的中心视轴正交的2D平面中)变化,而且还可以看起来在Z方向中变化,使得用户可能感知对象非常接近或处于无限距离或两者之间的任何距离处。在其它实施例中,用户可以在不同深度平面处同时感知多个对象。例如,用户可看到虚拟的龙从无限远处出现并向用户跑来。可替代地,用户可以同时看到距离用户3米距离处的虚拟鸟和距离用户臂长(大约1米)处的虚拟咖啡杯。
多平面聚焦系统通过将图像投影在在Z方向中的距用户眼睛相应固定距离处的多个深度平面中的一些或全部深度平面上,来创建可变深度的感知。现在参考图5,应当理解,多平面聚焦系统可以在固定的深度平面150(例如,图5中所示的六个深度平面150)处显示帧。尽管MR系统可以包括任何数量的深度平面150,但是一个示例性多平面聚焦系统在Z方向中具有六个固定的深度平面150。在生成虚拟内容(六个深度平面150中的一个或多个)时,创建了3D感知使得用户可以感知到距用户眼睛不同距离的一个或多个虚拟对象。如图5中所示,假设人眼对距离更近的对象比看起来似乎较远的对象更敏感,则生成更接近眼睛的深度平面150。在其它实施例中,深度平面150可以彼此等距放置。
深度平面位置150可以以屈光度为单位进行测量,该屈光度是等于以米为单位测量的焦距的倒数的光焦度单位。例如,在一些实施例中,深度平面1可以相距1/3屈光度,深度平面2可以相距0.3屈光度,深度平面3可以相距0.2屈光度,深度平面4可以相距0.15屈光度,深度平面5可以相距0.1屈光度,并且深度平面6可以表示无穷远(即,相距0屈光度)。应当理解,其它实施例可以以其它距离/屈光度生成深度平面150。因此,在策略上放置的深度平面150处生成虚拟内容时,用户能够感知三维的虚拟对象。例如,当在深度平面1中显示时,用户可感知到第一虚拟对象接近他,而另一个虚拟对象出现在深度平面6处的无穷远处。可替代地,可以首先在深度平面6然后在深度平面5等处显示虚拟对象,直到虚拟对象看起来非常接近用户为止。应当理解,出于说明目的,上述示例被显著简化。在另一个实施例中,所有六个深度平面可以集中在远离用户的特定焦距上。例如,如果要显示的虚拟内容是距用户半米的咖啡杯,则可以在咖啡杯的各种横截面处生成所有六个深度平面,从而为用户提供咖啡杯的高度颗粒化的3D视图。
在一些实施例中,VR、AR和/或MR系统可以用作多平面聚焦系统。换句话说,所有六个LOE可能同时被照亮,从而使看起来源自六个固定深度平面的图像快速连续地生成,并且光源快速将图像信息传递到LOE 1,然后LOE 2,然后LOE 3等。例如,可以在时间1注入期望的图像的一部分,其包括在光学无限远处的天空的图像,并且可以利用保持光的准直的LOE(例如,来自图5的深度平面6)。然后,可以在时间2注入更近的树枝的图像,并且可以利用被配置为创建看起来源自10米远的深度平面(例如,图5中的深度平面5)的图像的LOE;然后可以在时间3注入笔的图像,并且可以利用被配置为创建看起来源自1米远的深度平面的图像的LOE。可以以快速的时间顺序(例如360Hz)的方式重复该类型的范式,使得用户的眼睛和大脑(例如视觉皮层)将输入感知为同一图像的所有部分。
VR、AR和/或MR系统可以投影图像(即,通过发散或会聚光束),该图像看起来源自沿Z轴的各个位置(即,深度平面),以生成用于3D体验/场景的图像。如本申请中所使用的,光束包括但不限于从光源辐射的光能(包括可见光和不可见光能量)的定向投影。生成看起来源自各种深度平面的图像,符合用户的眼睛对该图像的聚散和适应,并最小化或消除聚散-适应的冲突。
示例性可通行世界模型
图6示出根据一些实施例的可通行世界模型2000的组件。当用户2001穿越环境时,用户的个人AR系统2010捕获信息(例如图像、位置信息、位置和取向信息等),并通过姿势标记图像保存信息。在所示实施例中,可以拍摄对象2020(类似于桌子)的图像,并且可以基于捕获的图像来收集地图点2004。这形成了可通行世界模型的核心,如已捕获有关环境的信息的多个关键帧(例如,相机)2002所示。
如图6中所示,可能存在多个关键帧2002,该关键帧在任何给定的时间点捕获有关空间的信息。例如,关键帧可以是从特定视点捕获信息的另一个用户的AR系统。另一个关键帧可以是基于房间的相机/传感器系统,该系统正在通过固定视点捕获图像和点2004。通过从多个视点对图像和点进行三角测量,可以确定3D空间中真实对象的位置和取向。
在一些实施例中,可通行世界模型2008是栅格图像、点云和描述符云以及多边形/几何定义(在此称为参数几何)的组合。所有该信息都被上传到云并从云中取得,其中的一部分对应于用户可能进入的特定空间。如图6中所示,可通行世界模型还包含许多对象识别器2012,它们在云上或用户的个人系统2010上工作,以基于通过多个用户的各个关键帧捕获的点和姿势标记图像识别环境中的对象。本质上,通过通过多个关键帧2002连续捕获有关物理世界的信息,可通行世界总是在增长,并且可以进行协商(连续或根据需要),以便确定如何相对于真实世界的现有物理对象渲染虚拟内容。通过从用户环境中收集信息,构建/增强了一个可通行世界2006,并且可以同时或在将来“传递”给一个或多个AR用户。
在用户的相应单独的AR系统与基于云的计算机(例如,服务器计算机)之间建立异步通信。换句话说,用户的个人AR系统不断将有关用户周围环境的信息更新到云中,并且还从云中接收有关可通行世界的信息。因此,不是每个AR用户都必须捕获图像并基于所捕获的图像来识别对象,具有异步系统可以使该系统更加高效。在将新信息更新到云的同时,有关世界的一部分现有的信息被自动传送给个人AR系统。应当理解,可通行世界模型不仅存在于云或其它形式的联网计算或对等系统中,而且还可以存在于用户的个人AR系统中。
在一些实施例中,AR系统可以对本地组件(例如,诸如动力包的计算组件130)和远程组件(例如,基于云的计算机132)采用不同级别的分辨率。这是因为远程组件(例如,驻留在云服务器上的资源)通常比本地组件在计算上更强大。基于云的计算机可以选择由许多不同的个人AR系统和/或一个或多个基于空间或房间的传感器系统收集的数据,并利用该信息添加到可通行世界模型上。基于云的计算机可以仅将最优的(例如,最有用的)信息聚合到持久世界模型中。换句话说,可以及时处理冗余信息和/或低于最优质量的信息,以免劣化系统的质量和/或性能。
图10示出根据一些实施例的与可通行世界模型交互的示例方法2100。在2102处,用户的个人AR系统可以检测用户在世界中的位置和取向。在一些实施例中,如将在下面进一步详细描述的,该位置可以由系统的拓扑图得出。在一些实施例中,该位置可以由GPS或任何其它定位工具得出。应当理解,个人AR系统可以不断地访问可通行世界。
在另一个实施例(未示出)中,用户可以请求访问另一个用户的空间,提示系统访问可通行世界的该部分以及与该另一个用户相对应的关联参数信息。因此,可能存在许多可通行世界的触发条件。然而,在最简单的级别上,应该理解,可通行世界正在不断被多个用户系统更新和访问,从而不断地从云中添加和接收信息。
在上面的示例之后,在2104处,系统可以基于用户的已知位置来绘制表示用户周围的物理区域的半径,该用户周围的物理区域传达用户的位置和预期方向二者。接下来,在2106处,系统可以基于用户的预期位置来取得一片可通行世界。在一些实施例中,一片可通行世界可以包含来自通过先前关键帧和捕获的图像和存储在云中的数据获取的空间的几何图的信息。在2108处,AR系统将来自用户环境的信息上传到可通行世界模型中。在2110处,基于上传的信息,AR系统将与用户的位置相关联的可通行世界渲染给用户的个人AR系统。
该信息使虚拟内容能够以连贯的方式与用户的真实周围环境进行有意义的交互。例如,虚拟“怪物”可以被渲染为源自真实世界的特定建筑物。或者,在另一个示例中,用户可以相对于真实世界的物理坐标离开虚拟对象,使得朋友(也佩戴AR系统)在相同的物理坐标找到虚拟对象。为了实现此类能力(以及更多能力),对于AR系统而言,不断访问可通行世界以取得和上传信息非常重要。应当认识到,可通行世界包含真实空间的持久性数字表示,其在相对于物理空间的真实坐标渲染虚拟和/或数字内容中被至关重要地利用。应当理解,AR系统可以保持真实世界和/或虚拟世界的坐标。在一些实施例中,第三方可以保持真实世界的地图(例如,坐标),并且AR系统可以查阅该地图以确定一个或多个参数,以便渲染与世界的真实对象有关的虚拟内容。
应当理解,可通行世界模型本身并不渲染被显示给用户的内容。相反,它是动态取得和更新云中真实世界的持久性数字表示的高级概念。在一些实施例中,将得出的几何信息加载到游戏引擎上,然后该游戏引擎渲染与可通行世界相关联的内容。因此,不管用户是否在特定空间中,该特定空间在任何用户都可以访问的云中都具有数字表示。该片可通行世界可包含有关空间的物理几何形状和空间图像的信息、有关占用空间的各种头像的信息、有关虚拟对象的信息以及其它杂项信息。
如在此进一步详细描述的,一个或多个对象识别器可以检查或“爬行”可通行世界模型,对属于参数几何的点进行标记。可以将参数几何、点和描述符打包到可通行世界模型中,以允许低时延传递或传达与物理世界或环境的一部分相对应的信息。在一些实施例中,AR系统可以实现两级结构,其中可通行世界模型允许在第一级中进行快速姿势处理,但是在该框架内部则是第二级(例如,FAST特征)。在一些实施例中,第二级结构可以通过执行基于帧到帧的三维(3D)特征地图构建来提高分辨率。
拓扑图
可通行世界模型的组成部分是创建真实世界的非常微小区域的地图。例如,为了渲染与物理对象有关的虚拟内容,需要非常详细的定位。不能仅通过GPS或传统的位置检测技术来实现此类定位。例如,AR系统不仅可能需要用户所在的物理位置的坐标,而且例如可能需要准确地知道用户所在的建筑物的哪个房间。基于该信息,AR系统可以取得该房间的数据(例如,房间中真实对象的具体几何形状、房间的地图点、房间的几何信息等),以相对于所识别的房间的真实对象适当地显示虚拟内容。然而,与此同时,必须以具有成本效益的方式进行该精确的粒度定位,使得不必要地消耗过多的资源。
为此,AR系统可以将拓扑图用于定位目的,而不是使用GPS或取得从所提取的点和姿势标记图像创建的详细几何图(例如,几何点可能太具体,并因此成本最高)。在一些实施例中,拓扑图是真实世界中的物理空间的简化表示以及各种空间之间的关系,该简化表示可以容易地从云访问并且仅呈现空间的指纹。有关拓扑图的更多详细信息将在下面进一步提供。
在一些实施例中,AR系统可以在可通行世界模型上将拓扑图分层,例如以便定位节点。拓扑图可以在可通行世界模型上将各种类型的信息分层,例如:点云、图像、空间中的对象、全球定位系统(GPS)数据、Wi-Fi数据、直方图(例如房间的颜色直方图)、接收信号强度(RSS)数据等。这允许将各种信息层(例如,与更高级的层进行交互的更详细的信息层)彼此置于上下文中,使得其可以被容易地取得。该信息可以被认为是指纹数据;换句话说,它被设计得足够具体以对于位置(例如,特定房间)是唯一的。
如上面所讨论的,为了创建可以在各种用户之间可靠地传递的完整虚拟世界,AR系统捕获关于用户周围环境的不同类型的信息(例如,地图点、特征、姿势标记图像、场景中的对象等)。该信息被处理并存储在云中,使得其可以根据需要取得。如前所述,可通行世界模型是栅格图像、点云和描述符云以及多边形/几何定义(在此称为参数几何)的组合。因此,应该理解,通过用户的个人AR系统捕获的大量信息允许在创建虚拟世界时的高质量和高准确性。
换句话说,由于各种AR系统(例如,用户专用的头戴式系统、基于房间的传感器系统等)不断地捕获与相应AR系统的即时环境相对应的数据,因此可以高度肯定地知道任何时间点上有关真实世界的非常详细和准确的信息。尽管该信息量对于大量AR应用非常有用,但出于本地化的目的,对这么多信息进行分类以找到与用户最相关的一片可通行世界的效率非常低,并且占用宝贵的带宽。
为此,AR系统创建实质上提供关于特定场景或特定地点的较少粒度信息的拓扑图。在一些实施例中,可以通过全球定位系统(GPS)数据、Wi-Fi数据、直方图(例如,房间的颜色直方图)、接收信号强度(RSS)数据等来得出拓扑图。例如,拓扑图可以通过各种房间/区域/空间的直方图(例如颜色直方图)创建,并将其缩小为拓扑图上的节点。例如,当用户走进房间或空间时,AR系统可以拍摄单个图像(或其它信息)并构造图像的颜色直方图。应当理解,在某种程度上,特定空间的直方图随时间推移大部分是恒定的(例如,墙壁的颜色、房间的对象的颜色等)。换句话说,每个房间或空间都具有与任何其它房间或地点不同的独特特征。可以将该唯一直方图与其它空间/区域的其它直方图进行比较并进行识别。既然AR系统知道用户在哪个房间里,剩下的粒度信息就可以被很容易地访问和下载。
因此,尽管直方图将不包含有关各种相机(关键帧)已捕获的所有特征和点的特定信息,但是系统可以基于直方图立即检测用户所在的位置,并且然后取得与特定房间或地点相关联的所有更具体的几何信息。换句话说,拓扑图不必对包含该可通行世界模型的大量几何和参数信息进行分类,而是提供一种快速有效的方法来定位AR用户。基于定位,AR系统取得与所识别的位置最相关的关键帧和点。例如,在系统确定用户在建筑物的会议室中之后,系统然后可以取得与会议室相关联的所有关键帧和点,而不是搜索存储在云中的所有几何信息。
现在参考图8,呈现了拓扑图4300的示例实施例。如上面所讨论,拓扑图4300可以是节点4302以及在节点4302之间的连接4304(例如,由连接线表示)的集合。每个节点4302表示具有不同签名或指纹(例如GPS信息、颜色直方图或其它直方图、Wi-Fi数据、RSS数据等)的特定位置(例如,办公楼的会议室),并且线可以表示它们之间的连接性。应当理解,连接性可与地理连接性无关,而可以仅仅是共享设备或共享用户。例如,第一用户可能已经从第一节点步行到第二节点。该关系可以通过节点之间的连接来表示。随着AR用户的数量增加,节点和在节点之间的连接也将按比例增加,从而提供有关各个位置的更精确信息。
一旦AR系统已经识别出拓扑图的节点,则系统然后可以取得与该节点有关的一组几何信息,以确定如何/在何处显示相对于该空间的真实对象的虚拟内容。因此,将几何图上的拓扑图分层特别有助于本地化并仅从云中有效地取得相关信息。
在一些实施例中,AR系统可以将在图形理论上下文中由同一场景的一部分的相应相机捕获的两个图像表示为第一和第二姿势标记图像。应当理解,在该上下文中,相机可以是指拍摄不同场景的图像的单个相机,或者可以是两个不同的相机。姿势标记图像之间存在一定的连接强度,该图像例如可以是两个相机的视野中的点。在一些实施例中,基于云的计算机可以构造诸如图形(例如,与图8的拓扑表示类似的几何世界的拓扑表示)。图形中节点和边的总数比图像中点的总数小得多。
在更高的抽象级别上,可以将由AR系统监视的其它信息一起进行哈希运算。例如,基于云的计算机可以将全球定位系统(GPS)位置信息、Wi-Fi位置信息(例如,信号强度)、物理空间的颜色直方图和/或关于用户周围的物理对象的信息中的一个或多个一起进行哈希运算。数据点越多,计算机越有可能在统计上具有该空间的唯一标识符。在该情况下,空间是在统计上定义的概念。
作为示例,办公室可以是被表示为例如大量点和两打姿势标记图像的空间。相同的空间可以在拓扑上被表示为仅具有一定数量(例如5、25、100、1000等)节点的图形,可以很容易地对该图形再次进行哈希运算。图论允许表示例如在两个空间之间的在算法上的最短路径的连接性。
因此,系统通过将特定的几何图形转换为具有隐式拓扑的姿势标记图像来从该几何图形进行抽象。该系统通过添加其它条信息(例如颜色直方图配置文件和Wi-Fi信号强度)使抽象级别更高。这使系统更容易识别用户的实际真实世界位置,而不必了解或处理与该位置相关联的所有几何形状。
图9示出构造拓扑图的示例方法2400。首先,在2402处,用户的个人AR系统可以从特定位置的第一视点捕获图像(例如,用户走进建筑物的房间,并且从该视点捕获图像)。在2404处,可以基于所捕获的图像来生成颜色直方图。如前所述,系统可以使用任何其它类型的识别信息(例如Wi-Fi数据、RSS信息、GPS数据、窗口数等),但是出于说明性目的在该示例中使用颜色直方图。
接下来,在2406处,系统通过将颜色直方图与存储在云中的颜色直方图的数据库进行比较来运行搜索以识别用户的位置。在2410处,做出决定以确定颜色直方图是否与存储在云中的现有颜色直方图匹配。如果颜色直方图与颜色直方图数据库的任何颜色直方图都不匹配,则可以将其存储为拓扑图的节点(2414)。如果颜色直方图与数据库的现有颜色直方图匹配,则将其存储为云中的节点(2412)。如果颜色直方图与数据库中现有的颜色直方图匹配,则识别位置,并将适当的几何信息提供给个人AR系统。
继续相同的示例,用户可以走进另一个房间或另一个位置,在该房间或位置中,用户的个人AR系统拍摄另一张图片并生成另一个位置的另一个颜色直方图。如果颜色直方图与先前的颜色直方图或任何其它颜色直方图相同,则AR系统识别用户的位置。如果颜色直方图与存储的直方图不同,则在拓扑图上创建另一个节点。另外,由于第一节点和第二节点是由同一用户(或同一相机/同一个人用户系统)拍摄的,因此这两个节点在拓扑图中连接。
除了帮助定位之外,拓扑图还可以用于改善/修复几何图中的错误和/或丢失的信息。在一些实施例中,拓扑图可用于在特定地点的几何图或几何构造中找到回环应力。如上面所讨论,对于任何给定的位置或空间,由一个或多个AR系统拍摄的图像(由一个用户的个人AR系统或多个用户的AR系统捕获的多视野图像)会生成特定空间的大量地图点。例如,单个房间可对应于通过各种相机(或一个相机移动到各个位置)的多个视点捕获的数千个地图点。
AR系统利用地图点来识别如上面所讨论的对象(通过对象识别器),并添加到可通行世界模型上,以便存储真实世界中各种对象的几何形状的更全面的图片。在一些实施例中,从各种关键帧得出的地图点可以用于对捕获图像的相机的姿势和取向进行三角测量。换句话说,所收集的地图点可用于估计捕获图像的关键帧(例如,相机)的姿势(例如,位置和取向)。
然而,应当理解,鉴于大量的地图点和关键帧,在基于地图点的关键帧位置的该计算中必然会存在一些误差(例如,应力)。为了解决这些应力,AR系统可以执行束平差。束平差允许细化或优化地图点和关键帧,以最小化几何图中的应力。
例如,如图10中所示,呈现了示例几何图。如图10中所示,几何图可以是全部彼此连接的关键帧2502的集合。关键帧2502可以表示从中得出几何图的各种地图点的视点。在所示实施例中,几何图的每个节点表示关键帧(例如,相机),并且各个关键帧通过连接线2504彼此连接。
在所示实施例中,不同关键帧之间的连接强度由连接线2504的粗细表示。例如,如图10中所示,与节点2502a和节点2502f之间的连接线相比,节点2502a和2502b之间的连接线被描绘为较粗的连接线2504。节点2502a与节点2502d之间的连接线也被描绘为比2502b与节点2502d之间的连接线更粗。在一些实施例中,连接线的粗细表示在它们之间共享的特征或地图点的数量。例如,如果第一关键帧和第二关键帧靠在一起,则它们可以共享大量的地图点(例如,节点2502a和节点2502b),并且因此可以用较粗的连接线表示。当然,应当理解,可以类似地使用表示几何图的其它方式。
例如,在另一实施例中,线的强度可以基于关键帧之间的地理接近度。因此,如图10中所示,每个几何图都表示大量关键帧2502及其彼此之间的连接。现在,假设在几何图的特定点中识别出应力,则可以执行束平差以通过从所识别的应力点2506沿径向将应力径向向外推出来减轻应力。如将在下面进一步详细描述的,应力以从应力点传播的波2508(例如,n=1,n=2等)中径向推出。
以下描述示出了执行波传播束平差的示例方法。应当理解,以下所有示例仅涉及波传播束平差,并且在其它实施例中可以类似地使用其它类型的束平差。首先,识别特定的应力点。在图10的所示实施例中,将中心(节点2502a)视为所识别的应力点。例如,系统可以确定在几何图的特定点处的应力特别高(例如,残余误差等)。可以基于两个原因之一来识别应力。第一,可以针对几何图定义最大残余误差。如果在特定点处的残余误差大于预定义的最大残余误差,则可以启动束平差。第二,在回环应力的情况下,可以启动束平差,如将在下面进一步描述(当拓扑图指示地图点未对齐时)。
当识别到应力时,AR系统从应力点开始并通过围绕特定应力点的节点网络径向传播误差,从而均匀地分配误差。例如,在所示实施例中,束平差可围绕识别的应力点将误差分配为n=1(与识别的应力点即节点2502a相距一个分离度)。在所示实施例中,节点2502b-2502g全部是围绕应力点即节点2502a的n=1的波的一部分。
在一些情况下,这可能是足够的。在其它实施例中,AR系统可以甚至进一步传播应力,并且将应力推出到n=2(与识别的应力点即节点2502a相距两个分离度)或n=3(与识别的应力点即节点2502a相距三个分离度),使得应力被一步一步地径向地推出直到应力被均匀地分配。因此,执行束平差是减少几何图中的应力的重要方法。在理想状态下,将应力推出到n=2或n=3以获得更好的结果。
在一些实施例中,波可以以甚至更小的增量传播。例如,波已经在应力点周围被推出到n=2之后,可以在n=3和n=2之间的区域中执行束平差并径向传播。通过控制波的增量,可以在海量数据上运行该迭代波传播束平差过程,以减少对系统的应力。在可选的实施例中,因为每个波都是唯一的,所以可以对已经被波触及(例如,束平差)的节点进行着色,使得波不会在几何图的调节部分上重新传播。在另一实施例中,节点可以被着色,使得同步波可以传播自/源自几何图中的不同点。
如前所述,在关键帧和地图点的几何图上将拓扑图分层对于发现回环应力可能尤其重要。回环应力是指在不同时间捕获的应对齐但未对齐的地图点之间的差异。例如,如果用户在街区周围走动并返回相同的位置,则从收集的地图点推断出的从第一个关键帧的位置得出的地图点和从最后一个关键帧的位置得出的地图点在理想情况下应该相同。然而,给定基于不同地图点的姿势(关键帧的位置)计算中所固有的应力,通常会出现错误,并且系统无法识别出用户已回到同一位置,因为从第一关键帧估计的关键点未与从最后一个关键帧得出的地图点几何对齐。这可能是回环应力的示例。
为此,拓扑图可用于在几何图中找到回环应力。回到前面的示例,结合几何图使用拓扑图允许AR系统识别几何图中的回环应力,因为拓扑图可能指示用户已经回到起点(例如基于颜色直方图)。例如,参考图11的分层图2600,拓扑图的节点(例如,2604a和2604b)被分层在几何图的节点(例如,2602a-2602f)的顶部。如图11中所示,当拓扑图被放置在几何图的顶部时,拓扑图可表明关键帧B(节点2602g)与关键帧A(节点2602a)相同。基于此,可以检测到回环应力,系统检测到关键帧A和B在同一节点中应该更接近在一起,并且然后系统可以执行束平差。因此,在识别出回环应力之后,AR系统随后可以使用束平差技术,诸如上述的束平差技术,在所识别的应力点上执行束平差。
应当理解,基于拓扑图和几何图的分层来执行束平差可确保系统仅取得需要对其执行束平差的关键帧,而不是取得系统中的所有关键帧。例如,如果AR系统基于拓扑图识别出存在回环应力,则系统可以简单地取得与该拓扑图的一个或多个特定节点相关联的关键帧,并仅对那些关键帧而不是对几何图的所有关键帧执行束平差。同样,这使系统高效并且不会取得可能不必要地使系统耗费资源的不必要的信息。
现在参考图12,描述了用于基于拓扑图来校正回环应力的示例方法2700。在2702处,系统可以基于在几何图的顶部上分层的拓扑图来识别回环应力。在2704处,一旦已经识别出回环应力,则系统可以取得与拓扑图的节点相关联的一组关键帧,在该拓扑图的节点处已经发生回环应力。在取得了拓扑图的那个节点的关键帧之后,系统可以在2706处在几何图的那个点上启动束平差。在2708处,类似于图10中所示的技术,应力从所识别的应力点传播开,并且以波的形式径向分配至n=1(然后n=2,n=3等)。
地图构建
在地图构建出虚拟世界时,重要的是要知道真实世界中的所有特征和点,以准确地描绘与真实世界有关的虚拟对象。为此,如上面所讨论,通过添加传达有关真实世界的各个点和特征的信息的新图片,将从各种头戴式AR系统捕获的地图点不断添加到可通行世界模型。如上面所讨论,基于该点和特征,还可以推断关键帧(例如,相机等)的姿势和位置。虽然这允许AR系统收集一组特征(2D点)和地图点(3D点),但找到新的特征和地图点以渲染可通行世界的更准确版本也可能是重要的。
查找新地图点和/或特征的一种方式可以是将一个图像的特征与另一图像的特征进行比较。每个特征都可以具有附加至其的标签或特征描述符(例如颜色、标识符等)。将一张图片中的特征标签与另一张图片进行比较可能是唯一识别环境中的自然特征的一种方法。例如,如果存在两个关键帧,每个关键帧捕获约500个特征,则将一个关键帧的特征与另一个关键帧进行比较可能有助于确定新地图点。然而,尽管在只有两个关键帧的情况下这可能是可行的解决方案,但是当存在多个关键帧(每个关键帧捕获数百万个点)时,它成为需要大量处理能力的非常大的搜索问题。换句话说,如果存在M个关键帧,每个关键帧具有N个不匹配的特征,则搜索新特征将涉及MN2(O(MN2))的操作。不幸的是,这是非常大的搜索操作。
一种可以避免此类大的搜索操作的新点查找方法是渲染而不是搜索。换句话说,假设M个关键帧的位置是已知的,并且每个关键帧具有N个点,则AR系统可以将来自N个特征的线(或圆锥体)投影到M个关键帧以对各个2D点的3D位置进行三角测量。现在参考图13,在该特定示例中,存在6个关键帧2802,并且从6个关键帧到从相应关键帧得出的点2804渲染线或光线(使用图形卡)。在一些实施例中,可以基于渲染的线的交点来确定新的3D地图点。换句话说,当两条渲染的线相交时,3D空间中该特定地图点的像素坐标可以是2,而不是1或0。因此,在特定点处的线的交点越高,在3D空间中存在与特定特征相对应的地图点的可能性越高。在一些实施例中,如图13中所示的该相交方法可以用于在3D空间中找到新地图点。
应当理解,出于优化目的,不是从关键帧渲染线,而是可以从关键帧渲染三角锥以用于更准确的结果。投影三角锥以使到N个特征的渲染线(例如2804)表示三角锥的等分线,并且锥的侧面被投影在第N个特征的任一侧。在一些实施例中,距两个侧边的半角可由相机的像素间距定义,该像素间距通过第N个特征任一侧的镜头映射功能延伸。
锥体的内部可以被遮挡,使得等分线最亮,并且第N个特征的任一侧上的边可以被设定为0。相机缓冲器可以是求和缓冲器,使得亮斑可以表示新特征的候选位置,但要考虑相机分辨率和镜头校准二者。换句话说,投影的锥体而不是直线可以帮助补偿某些关键帧比在较近距离处已经捕获特征的其它关键帧距离更远的事实。在该方法中,从较远的关键帧渲染的三角锥将比从较近的关键帧渲染的三角锥更大(并且具有更大的半径)。可以应用求和缓冲器以便确定3D地图点(例如,地图的最亮斑点可以表示新地图点)。
本质上,AR系统可以将来自M个先前关键帧中的N个不匹配特征的光线或锥体投影到M+1个关键帧的纹理中,对关键帧标识符和特征标识符进行编码。AR系统可以根据当前关键帧中的特征构建另一个纹理,并用第二纹理掩盖第一纹理。所有颜色都是用于搜索约束的候选配对。该方法有利地将O(MN2)搜索约束转换为O(MN)渲染,然后进行微小的O((<M)N(<<N))搜索。
在另一种方法中,可以通过选择虚拟关键帧来确定新地图点,从该虚拟关键帧可以查看现有的N个特征。换句话说,AR系统可以选择以从中查看地图点的虚拟关键帧。例如,AR系统可以使用上述关键帧投影,但基于从中寻求{M,N}标签(例如,PCA衍生的关键帧将提供从中得出标签的最优视图)的M个关键帧的法线的PCA(主成分分析)来选择新的“关键帧”。
在现有的M个关键帧上执行PCA提供了与现有的M个关键帧最正交的新关键帧。因此,将虚拟关键帧定位在最正交的方向处可以提供最优视点,从该最优视点中可以找到3D空间中的新地图点。执行另一个PCA提供了下一个最正交的方向,而执行另一个PCA提供了另一个正交的方向。因此,可以理解,执行3个PCA可以基于具有N个特征的现有M个关键帧,在从中可以构建地图点的3D空间中提供x、y和z坐标。
图14描述用于从M个已知关键帧确定地图点的示例方法2900。首先,在2902处,AR系统取得与特定空间相关联的M个关键帧。如上面所讨论,M个关键帧是指已捕获特定空间的已知关键帧。接下来,在2904处,执行关键帧的法线的PCA以找到M个关键帧的最正交的方向。应当理解,PCA可以产生三个主体(principal),每个主体与M个关键帧正交。接下来,在2906处,AR系统选择在3D空间中最小并且也是与所有M个关键帧的视图最正交的主体。
在2908处,在已经识别了与关键帧正交的主体之后,可以沿着所选主体的轴放置虚拟关键帧。在一些实施例中,虚拟关键帧可以放置得足够远,使得其视野包括所有M个关键帧。
接下来,在2910处,AR系统可以渲染特征缓冲器,使得从M个关键帧中的每个关键帧到第N个特征渲染光线(或锥体)。特征缓冲器可以是求和缓冲器,使得亮斑点(N条线已经相交的像素坐标)表示N个特征的候选位置。应当理解,可以对所有三个PCA轴重复上述相同的过程,使得在x、y和z轴上找到地图点。
接下来,在2912处,系统可以将图像中的所有亮斑点存储为虚拟“特征”。接下来,在2914处,可以在虚拟关键帧处创建第二“标签”缓冲器以堆叠线(或锥体)并保存其{M,N}标签。接下来,在2916处,可以围绕特征缓冲器中的每个亮斑点绘制“蒙版半径”。应当理解,蒙版半径表示虚拟相机的角度像素误差。AR系统可以填充围绕每个亮斑点的结果圆,并采用结果二进制图像掩盖标签缓冲器。在可选的实施例中,可以通过应用梯度滤波器来填充圆,使得圆的中心是明亮的,但是亮度在圆的外围处逐渐降低为零。
在现在掩盖的标签缓冲器中,可以使用每个三角形的{M,N}元组标签来收集主体光线。应当理解,如果使用锥体/三角形代替光线,则AR系统可以仅收集三角形,其中三角形的两个边在圆内侧被捕获。因此,蒙版半径基本上起滤光器的作用,该滤光器消除条件差的光线或具有较大发散的光线(例如,位于视野(FOV)边缘的光线或从远处发出的光线)。
出于优化目的,可以用与先前在生成的锥体/三角形中使用的阴影相同的阴影来渲染标签缓冲器。在另一个可选的优化实施例中,三角形密度可以从一缩放到零,而不是检查三角形的范围(侧面)。因此,非常发散的光线将有效地提高被遮蔽区域内的本底噪声。在标记内侧运行局部阈值检测将仅从完全位于标记内侧的光线中平常地抽出质心。
在2918处,可以将遮蔽/优化的光线m的集合馈送到束平差器以估计和/或校正新确定的地图点的位置。应当理解,该系统在功能上限于所采用的渲染缓冲器的大小。例如,如果关键帧被广泛分开,则生成的光线/锥体将具有较低的分辨率。
在替代实施例中,不是使用PCA分析来找到正交方向,而是可以将虚拟关键帧放置在M个关键帧之一的位置处。这可能是更简单且更有效的解决方案,因为M个关键帧可能已经以相机的最优分辨率捕获了空间。如果PCA用于查找放置虚拟关键帧的正交方向,则通过沿每个PCA轴放置虚拟相机并在每个轴中查找地图点来重复上述过程。
在找到新地图点的另一示例方法中,AR系统可以假设新地图点。AR系统可以从对M个关键帧的PCA分析中取得前三个主体成分。接下来,可以在每个主体处放置虚拟关键帧。接下来,可以完全如上所述在三个虚拟关键帧中的每一个关键帧处准确地渲染特征缓冲器。因为根据定义,主体成分彼此正交,所以从每个相机向外吸引的光线可能会在3D空间中的某个点处彼此碰撞。
应当理解,在一些情况下,可能存在多个光线的交点。因此,每个虚拟关键帧中现在可能存在N个特征。接下来,几何算法可用于找到不同光线之间的交点。因为可能存在N3光线,所以该几何算法可以是恒定时间算法。可以以与上述相同的方式执行遮蔽和优化,以在3D空间中找到地图点。
世界模型细化
在一些实施例中,AR系统可以将分离的小世界模型片段缝合成较大的连贯片段。这可能在两个级别上发生:小模型和大模型。小模型对应于本地用户级别(例如,在计算组件上,例如腰包)。另一方面,大模型对应于用于“整个世界”建模的大规模或全系统级别(例如,云系统)。这可以作为可通行世界模型概念的一部分来实现。
例如,由第一用户佩戴的个人AR系统捕获有关第一办公室的信息,而由第二用户佩戴的个人AR系统捕获关于与第一办公室不同的第二办公室的信息。所捕获的信息可以传递给基于云的计算机,该计算机最终构建由与各个AR设备一起走动的各个用户所采样或收集的真实空间的全面一致的表示。基于云的计算机会经由随着时间推移的使用来逐步建立可通行世界模型。预计将建立不同的地理位置,主要集中在人口中心,但最终将覆盖更多的农村地区。
如上所述,基于云的计算机可以例如对GPS、Wi-Fi、房间颜色直方图以及房间中所有自然特征的高速缓存执行哈希运算,并放置图片,并生成作为事物的连通性的拓扑的拓扑图。基于云的计算机可以使用拓扑来识别将区域缝合在一起的位置。可替代地,基于云的计算机可以使用特征的哈希值(例如,拓扑图),例如识别与另一地点中的几何配置相匹配的一个地点中的几何配置。
示例性地图构建系统
图15示意性地描绘根据一些实施例的包括第一AR/MR系统220和第二AR/MR系统230的地图构建系统200。第一AR/MR系统220和第二AR/MR系统230分别通过第一网络240和第二网络242通信地耦合到云处理组件210。尽管在图15中描绘了两个网络240、242,但是地图构建系统200的各个组件可以通过更多或更少的网络彼此通信地耦合。第一网络240和第二网络242中的每一个网格可以是例如无线或蜂窝网络、专用通信网络(例如,移动电话网络)、局域网(LAN)、广域网(WAN),和/或能够使一个或多个计算设备能够相互通信的其它技术。
第一AR/MR系统220和第二AR/MR系统230中的每一个具有采用相应的USB连接器226、236通信地耦合到可穿戴设备224、234的动力包222、232。动力包222、232可以具有NVidia/ARM架构,运行malleus系统。可穿戴设备224、234可以具有运行minotaur系统的Myriad/SHAVE架构。云处理组件210可以具有运行服务器(例如,Windows)系统的PC架构。
第一AR/MR系统220和第二AR/MR系统230中的每一个都可以自己执行地图构建和地图同步。另外,第一AR/MR系统220和第二AR/MR系统230可以使用通过club处理组件210传送的来自其它系统230、220的数据来执行地图构建和地图同步。共享来自多个AR/MR系统220、230的数据增加地图构建的准确性。然而,增加用于地图构建的输入数据量会增加处理器负载。
示例性地图构建/地图同步方法
地图构建不是静态的,而是不断地生成、修改和优化的。这样,地图的该状态会随时间推移变化。此外,诸如数据局部性(即,用于地图构建操作的数据源是诸如可穿戴设备和动力包的各种组件)和平台约束(例如,处理能力和存储器)的因素使得在各种系统组件(诸如可穿戴设备224、动力包222和云处理组件210)之间分配某些工作负载/作业更加有效。AR/MR系统220的连接性质以及各个组件之间的连接(例如,网络240和USB 226)中的通信时延导致显著的时延,以便实现跨组件的地图同步。例如,在一些AR/MR系统中,在每次与地图相关的操作期间将地图“锁定”,并且然后将更新的地图的副本跨组件分发以便于下一操作。对于许多AR/MR系统来说,该时延/滞后是不可接受的。地图管理考虑了在不同时间与地图相关的不同工作负载,以及不同的地图构建系统组件的同步时延。
系统组件(例如SHAVES)之间的并行处理可以减少系统时延。然而,上述系统组件之间的差异使并行处理的实现方式复杂化。其中的一些复杂性包括在不同时间的系统组件的触发,系统组件的不同处理速度,以及系统组件在其上操作的不同数据集。异步并行处理涉及各种考虑因素,诸如管理多个读取器和写入器并在同一地图上操作。最小化并发进程数可以降低系统复杂性,然而一定程度的异步并行处理提高了地图构建系统性能。
异步并行地图构建工作流
图16描绘了根据一些实施例的用于多组件地图构建系统的异步地图构建方法300的工作流。可以使用方法300并行执行涉及新数据和优化的各种地图修改技术。如上所述,新数据技术可以包括跟踪、VIO、地图构建、重新定位、地图合并和联合密集优化。涉及优化的地图修改技术包括束平差和回环。在作为新数据源的系统组件处有效地执行新数据技术。优化技术需要大量处理,并且因此可以在动力包处更有效地执行。在优化期间,需要特别考虑持久点和密集地图构建。
在时间“t”310处,束平差(优化)操作320开始在稀疏图的快照上进行。因为束平差320是处理密集型操作,所以束平差320花费相对长的时间量ΔT 322来完成。如以上所讨论,处理密集的束平差320可以由动力包执行。
在束平差320的执行期间,另一组件(例如,可穿戴设备)可以执行地图点删除330(例如,因为地图点被确定为离群值)。在时间“t+1”312处开始对稀疏地图的后续快照进行地图点删除330。由于地图点删除330是相对较少的处理密集型操作,因此可以在束平差320期间完成地图点删除330。在时间“t+2”314处,可穿戴设备已完成地图点删除330。
在地图点删除330完成之后,系统可以在束平差320期间执行其它操作。最后,在时间“t+ΔT”316处,束平差完成。该工作流300允许由地图系统的不同组件并行执行多个地图相关的操作(束平差320,地图点删除330等),从而减少了地图构建系统中的时延/滞后量。多个地图相关操作的并行执行将在下面进一步详细描述。特别地,如果被删除的地图点也是束平差操作的一部分,则这两个操作(束平差320和地图点删除330)之间可能存在冲突。
异步并行地图构建期间的数据冲突
图17A至图17D描绘了多个示例性回环操作,该操作可能导致与异步并行地图构建的数据冲突。图17A描绘了作为地图401中的点的六个关键帧410、411、412、413、414、415和416。在关键帧410和410'之间检测到回路418。
图17B描绘了通过移动关键帧422、423、424、425和426,采用固定原点410来闭合回路418以生成新的地图402。
图17C描绘了采用固定原点410闭合回路418。由于异步工作负载,在与关键帧433的生成对应的时间检测到了回路438。这样,通过移动关键帧432和433来闭合回路438。一个或多个单独的工作负载生成关键帧434、435和436。在关键绑定帧433处回环并随后生成关键绑定帧434、435和436所得到的地图403具有与图17A和图17B中的地图401、402非常不同的形状。
图17D描绘了根据一些实施例在允许原点410移动到新位置440的同时闭合回路418。可以在关键绑定帧441、442、443、444、445和446的生成期间执行该回环,而不生成异常形状。例如,与图17C中的地图403相比,图17D中的地图404更接近图17A和图17B中的地图401、402。
地图管理设计包括识别和解决/调和诸如此类的冲突以及与异步工作负载的许多其它可能的地图构建冲突。解决/调和包括确定用于生成状态变化的初始状态是否仍然有效,以及是否应当应用状态变化。这些冲突是数据和时间相关的,进一步使地图管理中的分辨率/调和过程复杂化。
具有地图管理的异步并行地图构建工作流
图18描绘了根据一些实施例的用于具有地图管理的多组件地图构建系统的异步地图构建方法500的工作流。地图构建方法500包括唯一的时间线,该时间线由地图管理器保持(如下所述),但不一定表示为状态的时间索引集合。图18包括三个状态510、512、514。“+”运算符516表示将变化(例如,“Δ0”522)应用于前一状态以生成下一状态。
变化通过方法500中的各种地图操作产生。例如,地图构建操作520接收在执行地图构建操作520时的状态(即状态零510)和外部数据518作为输入。状态零510可以是地图为空的特殊状态。与方法500中的所有地图构建操作一样,地图构建操作520的输出不是新状态,而是状态变化(即Δ0 522)。类似地,束平差操作530接收执行束平差操作530时的状态(即状态一512)和其它数据(未示出)作为输入。束平差操作530的输出是另一状态变化(即,Δ1 532)。此外,多个其它地图操作540可以输出相应的多个状态变化542。
“+”操作516将各种状态变化(即,Δ0 522,Δ1 532,Δ…542)应用于先前状态以生成下一状态。例如,将状态变化Δ0 522应用于状态零510以生成状态一512。类似地,将状态变化Δ1 532应用于状态一512以生成状态二514。只要没有冲突,就按照状态进展的顺序来应用状态变化522、532、542。如果检测到状态与状态变化之间存在冲突,则在“+”操作516期间解决/调和状态与状态变化之间的冲突。冲突解决方案是实现方式相关的,因为冲突的类型取决于被应用于地图的修改。
系统组件读取各种状态510、512、514的快照以及各种地图构建操作520、530、540可能需要使用的其它数据。类似地,系统组件写入状态变化522、532、542,该状态变化包含由各种地图构建操作520、530、540生成的对地图的修改。在接收到状态变化522、532、542之后不久,便会应用它们以创建新的地图状态512、514。执行取决于地图状态的操作的各种组件可以订阅状态变化。
因此,给定的地图状态可以由初始状态确定,并且用于状态改变的顺序。例如,给定初始状态零510,以及状态变化522和532,可以将地图状态定义为状态零510“+”状态变化522“+”状态变化532。因此,全局约定的初始地图状态和状态变化的排序允许不同的系统组件在以不同速率在不同平台上运行的同时执行地图构建操作并生成状态变化。
地图管理器确定初始地图状态和状态变化的排序,并将该地图构建数据发送/推送/广播/复制到所有系统组件,以允许异步并行地图构建,同时保持系统所有组件之间的一致地图构建。每个系统组件具有地图管理器,该地图管理器将最终访问系统中产生的所有状态变化。有序状态变化用作连接所有系统组件和其中的地图管理器的虚拟总线。
图19描绘了用于地图构建和地图同步的AR/MR系统600。系统600包括通过USB通信链路630彼此通信并且耦合到云处理组件640的可穿戴设备610和动力包620。可穿戴设备610和动力包620中的每一个包括地图管理器612、622、读取器614、624和写入器616、626。地图管理器612、622、读取器614、624和写入器616、626中的每一个都通信耦合到USB通信链路630,该USB通信链路630形成连接所有系统组件的虚拟总线。
读取器614、624从USB通信链路630和它们相应的组件610、620中的其它源接收数据。由读取器614、624接收的数据包括状态变化。读取器614、624向地图管理器612、622发送接收的数据。
地图管理器612、622处理从读取器614、624接收的数据。如上所述,可穿戴设备610中的地图管理器612生成与从初始状态开始的状态变化的顺序相对应的变化顺序618。基于何时将状态变化应用于各种状态来生成变化顺序618。该顺序通常与可穿戴地图管理器612接收状态变化的时间有关。如果多于一个的状态变化同时到达可穿戴地图管理器612,则地图管理器612决定如何对同时写入的状态变化进行排序。
可穿戴设备610中的地图管理器612向动力包620中的地图管理器622发送变化顺序618。变化顺序618允许系统组件610、620和虚拟总线630异步运行,使得地图管理器612、622可以以与变化顺序618不同的序列从不同的系统组件610、620接收状态变化。变化顺序618允许地图管理器612、622以约定的顺序应用接收到的状态变化,以跨系统组件610、620同步地图。
在一些实施例中,基于变化顺序618的状态变化的重新排序不改变由包括特定地图管理器的系统组件相对于彼此生成的状态变化的顺序。此外,可以将状态变化修改为仅包括与特定系统组件中的地图有关的数据(例如,如下所述在可穿戴设备中存储的较小地图),以便更有效地利用虚拟总线630。
地图管理器612、622将数据发送到写入器616、626。此类数据可以包括状态变化,并且在一些实施例中,包括变化顺序618。写入器616、626进而向虚拟总线630发送数据。虚拟总线630以变化顺序618在系统组件610、620之间分配状态变化,使得每个组件610、620最终接收所有状态变化和变化顺序618。因为地图不是静态的,所以系统组件610、620不断地跨虚拟总线630彼此发送地图更新。虚拟总线630还连接到云处理组件640,该云处理组件640可以保留其自己的地图以供跨与其连接的多个地图构建系统使用。像其它系统组件610、620中的那些系统组件一样,云处理组件640可以具有地图管理器、读取器和写入器(未示出)。
图20描绘了可穿戴地图管理器710,其通过分析多个接收到的状态变化来生成变化顺序750。状态变化包括地图构建状态变化720、束平差状态变化730和回环状态变化740。状态变化可以由不同的系统组件生成。例如,一些地图构建状态变化720可以由可穿戴设备生成,并且束平差状态变化730和回环状态变化740可以由动力包生成。每个状态变化都可以通过组合密钥唯一地识别,该组合密钥识别写入器以及序列计数或时间戳。例如,如果每个写入器做出状态变化,则组合密钥可以是:
Mapping:MapDelta(0),MapDelta(1)
BundleAdjust:BundleAdjust(0),BundleAdjust(1)
LoopClosure:LoopClosure(0),LoopClosure(1)
可穿戴地图管理器710分析接收到的状态变化并生成变化顺序750。继续上面列出的组合密钥的示例,可以将变化顺序作为状态变化的单个流进行通信,该状态变化还表示那些状态变化的全局排序。示例性变化顺序是“MapDelta(0),BundleAdjust(0),MapDelta(1),LoopClosure(0),BundleAdjust(1),LoopClosure(1)”。其它地图管理器和系统最终从可穿戴地图管理器710接收到变化顺序750中的相同状态变化。
图21描绘了基于接收到的变化顺序850应用多个接收到的状态变化的动力包地图管理器810。状态变化包括地图构建状态变化820、束平差状态变化830和回环状态变化840。状态变化可以由不同的系统组件生成。例如,一些地图构建状态变化820可以由可穿戴设备生成,并且束平差状态变化830和回环状态变化840可以由动力包生成。变化顺序850可能已经由可穿戴地图管理器生成并通过虚拟总线接收。为了以以接收到的变化顺序850编码的序列应用接收到的状态变化820、830、840,动力包地图管理器810包括多个缓冲器822、832、842,存储接收到的状态变化820、830、840,直到它们被变化顺序850调用为止。如果根据变化顺序850的下一个状态变化可用,则动力包地图管理器810将应用下一个变化。如果根据变化顺序850的下一个变化不可用,则动力包地图管理器810将等待下一个状态变化被接收并且以异步方式操作。如果状态变化在变化顺序850之前到达,则动力包地图管理器810将等待变化顺序850到达并以异步方式操作。
上面描述的用于将状态变化应用于状态的“+”操作被配置为对于各个系统组件基本上相似。这允许状态变化跨不同的系统组件分发并应用。通过从清单中删除设备的二进制文件,可以将“+”操作配置为由可穿戴设备和动力包执行。对于云处理组件,可以通过从清单中删除云二进制文件或“+”运算符的显式版本等来配置“+”操作。
图22描绘了可穿戴地图管理器910,其处理多个接收到的状态变化。状态变化包括跟踪状态变化920、地图构建状态变化930和束平差状态变化940。状态变化可以由不同的系统组件生成。例如,一些跟踪状态变化920和地图构建状态变化930可以由可穿戴设备生成,并且束平差状态变化940可以由动力包生成。可穿戴地图管理器910从接收到的状态变化920、930、940生成变化顺序950。为了最小化地图的锁定,可穿戴地图管理器910还执行读取器作业预跟踪(Pre-Track)924、预地图构建(Pre-Map)934和预束平差(Pre-Bund Adjust)944来创建针对相应状态变化的地图的快照。
图23描绘了动力包地图管理器1010基于接收到的变化顺序1050处理多个接收到的状态变化1020。状态变化可以由不同的系统组件生成,并且变化顺序可以由可穿戴设备生成。动力包地图管理器1010从接收到的状态变化1020、1030、1040生成变化顺序1050。为了最小化地图的锁定,动力包地图管理器1010还执行读取器作业预回环(Pre-Loop Cl)1024、预姿势(Pre-Pose)1034和预信元流传输(Pre-Cell Str)1044来创建相应状态变化的地图快照。快照可以仅包括特定读取器作业所需的数据。拍摄快照后,地图管理器可以在地图上执行不同的读取器作业。生成快照允许实际的地图处理脱机进行,从而最小化地图锁定以进行处理的时间量。
动力包地图管理器1010基于变化顺序1050执行状态变化1020,并触发与先前执行的读取器作业1024、1034、1044对应的下游作业以及由此生成的快照。触发下游作业包括回环1026、轨迹更新1036和信元流传输1046。
上述实施例使用包括地图管理器、状态变化和变化顺序的地图构建系统来促进异步并行地图构建,以跨系统组件同步地图。这减少系统时延/滞后,从而实现改进的实时系统性能。
信元流传输
图24和图25描绘了多组件地图构建系统中的信元流传输方法。该方法通过将较小的地图1100存储在可穿戴设备中以及将较大的地图(未示出)(包括较小的地图1100)存储在动力包或云处理组件(未示出)中来解决可穿戴设备的存储器限制。
如图24中所示,较大的地图已被划分成多个地图子单元/信元1110、1112,并且较小的地图1100包括多个地图子单元1110、1112的第一子集。较小的地图1100是3×3×1子单元3D阵列,每个子单元1110、1112的尺寸约为7m×7m×7m。在其它实施例中,较小的地图(未示出)可以是10×10×1子单元3D阵列或6×6×3 3D子单元阵列。较小的地图1100还包括与地图构建系统/用户的当前位置相对应的中央地图子单元1112。
图25示出随着地图构建系统/用户从先前的中央地图子单元1112到更新的中央地图子单元1112'的运动的信元流传输。图25中描绘的更新的较小地图1100'包括更多种类的地图子单元1110、1112、1112'、1114、1116。这些新地图子单元1112'、1114、1116与图24中所示的地图子单元1110、1112相同。例如,每个地图子单元1110、1112、1112'、1114、1116的尺寸约为7m×7m×7m。当地图构建系统/用户移动到更新的中央地图子单元1112'时,地图子单元1114距离地图构建系统/用户多于一个地图子单元。因此,从可穿戴设备的存储器中删除了多个地图子单元的第一子集的一部分,该部分定义由地图子单元1114组成的图24中的较小地图1100。
穿戴式设备还接收(例如,从动力包中)多个地图子单元1116的第二子集,使得来自多个子单元的第一子集和多个地图子单元1116的第二子集的其余地图子单元1110、1112完全包围更新的中央地图子单元1112'。如上所述,通过删除地图子单元1114,多个地图子单元1116的第二子集被存储在变得可用的可穿戴设备的存储器中。
图24和图25中所示的方法允许可穿戴设备访问各种地图构建功能所需的地图构建子单元,同时通过在加载新的地图构建子单元之前卸载不需要的地图构建子单元来最小化对可穿戴设备中有限存储器的需求。该方法在距中央地图单元的X-Y平面中的每个方向中保持至少一个地图子单元。因此,可以在交换过程期间保持用于地图构建功能(例如,跟踪)的某些地图数据的同时交换地图子单元。尽管图24和图25中描绘的运动是对角运动,但是根据上述方法,X-Y平面中的任何其它运动都可以跟随可穿戴设备中较小地图的更新。
使用图24和图25中所示的方法或其它类似方法,稀疏地图可以表示为:SparseMap(t)={Cell1(t),Cell2(t),…,CellN(t)}。如上所述,状态变化可以应用于稀疏地图,从而导致SparseMap(t+1)=SparseMap(t)“+”State Change(t)。当“+”运算符具有分配属性时,可以将状态变化应用于稀疏地图,如下:
SparseMap(t)“+”State Change(t)={Cell1(t),Cell2(t),…,CellN(t)}“+”State Change(t)
={Cell1(t)“+”State Change(t),Cell2(t)“+”State Change(t),…,CellN(t)“+”State Change(t)}
={Cell1(t+1),Cell2(t+1),…,CellN(t+1)}
=SparseMap(t+1)。
这样,可以在个人级别上应用状态变化,而无需访问完整稀疏地图中所有信元的状态(例如,在可穿戴设备中)。
在信元流传输期间,将地图子单元/信元的快照从动力包复制到可穿戴设备。由于某些地图的大小,到在可穿戴设备处接收到最后一个地图子单元时,由可穿戴设备接收到的第一个地图子单元可能相对于在动力包处执行的地图构建过程已经过时。使用每信元状态变化方法,可以将状态变化应用于可穿戴设备接收的第一地图单元,以使它们处于最新状态。
上述的信元流传输方法还允许可穿戴设备执行与地图有关的功能,同时仅存储局部环境的完整稀疏地图的一部分。通过基于地图构建系统/用户的运动从动力包流式传输地图子单元,存储器使用量将在可穿戴设备中保持在最低水平,同时针对可穿戴设备保留足够的地图数据以执行许多地图功能。
零复制数据传输
图26和图27描绘了用于在诸如USB连接器的相对较低带宽的通信信道上进行零复制数据传输的数据结构。零复制数据传输可用于图24和图25以及上文所述的信元交换机制中,以减少可穿戴设备和动力包之间的USB通信信道中的时延。使用所示的数据结构和零复制数据传输,USB通信信道可以将数据直接写入将在各种地图构建操作中使用的系统组件存储器中。这是对当前系统的改进,其中来自USB通信信道的数据首先被写入系统组件中的缓冲器,然后再从缓冲器写入系统组件存储器。这样,零复制数据传输减少了用于复制数据的存储器使用量和处理器使用量。
零复制数据传输使用所有权和信元状态数据指示符/标签。如图26中所示,特定信元的所有权可以是“NONE(无)”、“MAP(地图)”或“USB”。同样,特定信元的状态可以是“INVALID(无效)”、“MAP(地图)”或“USB”。地图可以是信元的阵列,每个信元都具有单独的所有者和状态。该地图还可以包括足够的信元,以覆盖当信元进入和离开该地图时的瞬态情况。
最初,信元已拥有“NONE”和“INVALID”状态。通过USB连接传输信元时,其所有权被设定为“USB”或“Comm2”,并且其状态被设定为“USB”。传输完成并且该信元正在被系统使用时,其所有权和状态二者都将被设定为“MAP”。可以使用读取器和写入器通过各种地图构建操作/作业来访问信元。地图构建系统中可能只允许写入器的单个实例。地图构建系统中可能允许读取器的多个实例,但不允许同时读取和写入。
当特定的地图操作/作业开始时,框架将适当地将读取器和/或写入器传递给对应的系统组件。信元列表包括指向地图当前拥有的所有信元的指针以及这些信元的计数。在地图操作/作业结束时,写入器将填充请求阵列。请求阵列指示框架对地图的每个信元执行三种功能之一。无效请求将信元标记为所有权“NONE”,并且状态为“INVALID”。发送请求将要传输的信元标记为所有权“USB”或“Comm2”,并且状态为“USB”。在传输完成后,发送请求将信元标记为所有权“NONE”,状态为“INVALID”。调试请求发送信元而不将其标记为“INVALID”。这样,在调试期间,系统组件不改变信元。
所有权可在USB通信信道(“USB”)和在信元上工作的系统组件(“MAP”)之间转移。由于可以通过简单的指针操作来改变所有权,而无需复制信元中的数据,因此改变要传输的信元的所有权对处理器和存储器的成本相对较低。
系统架构概述
图28是适合于实现本公开的实施例的说明性计算系统1200的框图。计算机系统1200包括互连子系统和设备的用于传达信息的总线1206或其它通信机制,该子系统和设备诸如处理器1207、系统存储器1208(例如,RAM)、静态存储设备1209(例如,ROM)、磁盘驱动器1210(例如,磁性或光学)、通信接口1214(例如,调制解调器或以太网卡)、显示器1211(例如,CRT或LCD)、输入设备1212(例如,键盘)和光标控制。
根据本公开的一个实施例,计算机系统1200通过处理器1207执行包含在系统存储器1208中的一个或多个指令的一个或多个序列来执行特定操作。此类指令可以从另一计算机可读/可用介质(诸如静态存储设备1209或磁盘驱动器1210)读入系统存储器1208。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令结合使用以实现本公开。因此,本公开的实施例不限于硬件电路和/或软件的任何特定组合。在一个实施例中,术语“逻辑”应表示用于实现本公开的全部或部分的软件或硬件的任何组合。
如在此所使用的,术语“计算机可读介质”或“计算机可用介质”是指参与向处理器1207提供指令以供执行的任何介质。此类介质可以采取许多形式,包括但不限于非易失性介质和易失性介质。非易失性介质例如包括光盘或磁盘,诸如磁盘驱动器1210。易失性介质包括动态存储器,诸如系统存储器1208。
计算机可读介质的常见形式例如包括软盘、柔性盘、硬盘、磁带、任何其它磁介质、CD-ROM、任何其它光学介质、打孔卡、纸带、具有孔图案的任何其它物理介质、RAM、PROM、EPROM、FLASH-EPROM(例如NAND闪存、NOR闪存)、任何其它存储器芯片或盒式磁带,或计算机可以从中读取的任何其它介质。
在本公开的实施例中,通过单个计算机系统1200执行用于实践本公开的指令序列的执行。根据本公开的其它实施例,通过通信链路1215(例如,LAN、PTSN或无线网络)耦合的两个或更多个计算机系统1200可以相互协作地执行实践本公开所需的指令序列。
计算机系统1200可以通过通信链路1215和通信接口1214发送和接收消息、数据和指令,包括程序,即应用代码。所接收的程序代码可以在接收到时由处理器1207执行,和/或存储在磁盘驱动器1210或其它非易失性存储装置中以供以后执行。存储介质1231中的数据库1232可用于存储由系统1200经由数据接口1233可访问的数据。
本公开包括可以使用主题设备执行的方法。该方法可以包括提供此类合适的设备的动作。此类提供可以由用户执行。换句话说,“提供”动作仅要求用户获得、访问、接近、定位、设置、激活、加电或以其它方式作用以提供本主题方法中的必要设备。可以以逻辑上可能的所叙述事件的任何顺序以及所叙述事件的顺序来执行在此所叙述的方法。
上面已经阐述了本公开的示例性方面以及有关材料选择和制造的细节。至于本公开的其它细节,可以结合以上引用的专利和出版物以及本领域技术人员通常已知或理解的知识来理解。关于本公开内容的基于方法的方面,就通常或逻辑上采用的附加动作而言,这同样适用。
另外,尽管已经参考可选地结合了各种特征的几个示例描述了本公开,但是本公开不限于关于本公开的每个变型描述或指示的示例。在不脱离本公开的真实精神和范围的情况下,可以对所描述的本公开及其等同物进行各种改变(无论是在此引用还是为了简洁起见不包括在内)。另外,在提供值的范围的情况下,应理解,在该范围的上限和下限与所述范围内的任何其它所述值或中间值之间的每个中间值都包括在本公开内。
同样,可以预期,所描述的发明变型的任何可选特征可以独立地或者与在此所描述的任何一个或多个特征组合阐述或要求保护。对于单个项目,包括存在多个相同项目的可能性。更具体地,如在此和在其相关联的权利要求书中所使用的,单数形式“一”、“一个”、“所述”和“该”包括复数引用,除非另外具体说明。换句话说,冠词的使用允许以上描述以及与本公开相关联的权利要求中的主题项目的“至少一个”。还应注意,可以将此类权利要求撰写为排除任何可选要素。这样,该陈述旨在作为与权利要求要素的叙述结合使用诸如“唯一”、“仅”等排他性术语的先行基础,或使用“否定”限制。
在不使用此类排他性术语的情况下,与本公开内容相关联的权利要求中的术语“包括”应允许包括任何附加要素,而不管这种权利要求中是否列举了给定数量的要素,或者特征的添加可以被认为是变换此类权利要求中提出的要素的性质。除在此明确定义外,在保持权利要求有效性的同时,在此使用的所有技术和科学术语应尽可能广泛地赋予通常理解的含义。
本公开的广度不限于所提供的示例和/或主题说明,而是仅限于与本公开相关的权利要求语言的范围。
在前述说明书中,已经参考本公开的具体实施方式描述了本公开。然而,将显而易见的是,在不脱离本公开的更广泛精神和范围的情况下,可以对其进行各种修改和改变。例如,参考处理动作的特定排序来描述上述处理流程。然而,在不影响本公开的范围或操作的情况下,可以改变许多所描述的处理动作的顺序。因此,说明书和附图应被认为是说明性而非限制性的。
Claims (18)
1.一种用于在具有通信地耦合的第一和第二硬件组件的系统上更新点图的计算机实现的方法,所述方法包括:
所述第一组件对第一地图状态下的所述点图执行束平差处理以生成第一地图变化,其中所述第一地图状态是所述点图的状态;
所述第二组件对所述第一地图状态下的所述点图执行回环处理以生成第二地图变化;
所述第二组件将所述第二地图变化应用于所述第一地图状态下的所述点图,以生成第二地图状态下的第一更新点图,其中所述第二地图状态是所述第一更新点图的状态;
所述第一组件向所述第二组件发送所述第一地图变化;以及
所述第二组件将所述第一地图变化应用于所述第二地图状态下的所述第一更新点图,以生成第三地图状态下的第二更新点图,其中所述第三地图状态是所述第二更新点图的状态。
2.根据权利要求1所述的方法,进一步包括:
所述第二组件向所述第一组件发送所述第二地图变化;
所述第一组件将所述第二地图变化应用于所述第一地图状态下的所述点图,以生成所述第二地图状态下的所述第一更新点图;以及
所述第一组件将所述第一地图变化应用于所述第二地图状态下的所述第一更新点图,以生成所述第三地图状态下的所述第二更新点图。
3.根据权利要求2所述的方法,进一步包括:
所述第一组件基于所述第一地图变化和所述第二地图变化来生成地图变化顺序;以及
所述第一组件在基于所述地图变化顺序将所述第一地图变化应用于所述第二地图状态下的所述更新点图之前,将所述第二地图变化应用于所述第一地图状态下的所述点图。
4.根据权利要求2所述的方法,其中,所述第一组件将所述第二地图变化应用于所述第一地图状态下的所述点图包括:所述第一组件生成预变化的第一地图状态,以及
其中,所述第一组件将所述第一地图变化应用于所述第二地图状态下的所述第一更新点图包括:所述第一组件生成预变化的第二地图状态。
5.根据权利要求1所述的方法,其中,所述第二组件将所述第二地图变化应用于所述第一地图状态下的所述点图包括:所述第二组件生成预变化的第一地图状态,以及
其中,所述第二组件将所述第一地图变化应用于所述第二地图状态下的所述第一更新点图包括:所述第二组件生成预变化的第二地图状态。
6.根据权利要求1所述的方法,进一步包括:
所述第一组件基于所述第一地图变化和所述第二地图变化来生成地图变化顺序;以及
所述第一组件向所述第二组件发送所述地图变化顺序。
7.根据权利要求6所述的方法,进一步包括:所述第二组件在基于所述地图变化顺序将所述第一地图变化应用于所述第二地图状态下的所述更新点图之前,将所述第二地图变化应用于所述第一地图状态下的所述点图。
8.根据权利要求1所述的方法,其中,所述束平差处理选自由如下组成的组:跟踪、地图点删除、VIO、地图构建、新关键帧/关键绑定帧的插入、新地图点的插入、新观测值的插入、全局束平差、稀疏地图的几何形状的修改、在线校准、重新定位、添加新的orb特征;添加新的BoW索引;回环;修改稀疏地图的几何形状;地图合并;以及联合密集优化。
9.根据权利要求1所述的方法,其中,所述点图对应于所述系统所位于的物理位置。
10.根据权利要求9所述的方法,其中,所述物理位置是房间。
11.根据权利要求9所述的方法,其中,所述物理位置是房间的信元。
12.根据权利要求1所述的方法,其中,所述点图是较大点图的一部分。
13.根据权利要求1所述的方法,其中,所述第一组件是混合现实系统的头戴式视听显示组件,以及
其中,所述第二组件是所述混合现实系统的躯干安装的处理组件。
14.根据权利要求1所述的方法,进一步包括所述第二组件在将所述第二地图变化应用于所述第一地图状态下的所述点图之前,将所述第二地图变化与所述第一地图状态进行调和。
15.根据权利要求1所述的方法,所述第一组件和所述第二组件通信地耦合到第三组件,所述方法进一步包括:
所述第三组件对所述第一地图状态下的所述点图执行第三处理以生成第三地图变化;
所述第一组件和所述第二组件分别向所述第三组件发送所述第一地图变化和所述第二地图变化;以及
所述第三组件将所述第三地图变化应用于所述第三地图状态下的所述第二更新点图,以生成第四地图状态下的第三更新点图。
16.根据权利要求15所述的方法,其中,所述第一组件是混合现实系统的头戴式视听显示组件,
其中,所述第二组件是所述混合现实系统的躯干安装的处理组件,以及
其中,所述第三组件是基于云的处理组件。
17.根据权利要求1所述的方法,进一步包括所述第二组件在生成所述第二地图变化之前,从所述第一组件接收所述第一地图变化。
18.根据权利要求1所述的方法,所述第二组件包括用于数据存储的可移动介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210699679.2A CN115097627A (zh) | 2018-07-23 | 2019-07-23 | 用于地图构建的系统和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862702322P | 2018-07-23 | 2018-07-23 | |
US62/702,322 | 2018-07-23 | ||
PCT/US2019/042936 WO2020023446A1 (en) | 2018-07-23 | 2019-07-23 | System and method for mapping |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210699679.2A Division CN115097627A (zh) | 2018-07-23 | 2019-07-23 | 用于地图构建的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112513713A CN112513713A (zh) | 2021-03-16 |
CN112513713B true CN112513713B (zh) | 2022-07-15 |
Family
ID=69163156
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980049058.6A Active CN112513713B (zh) | 2018-07-23 | 2019-07-23 | 用于地图构建的系统和方法 |
CN202210699679.2A Pending CN115097627A (zh) | 2018-07-23 | 2019-07-23 | 用于地图构建的系统和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210699679.2A Pending CN115097627A (zh) | 2018-07-23 | 2019-07-23 | 用于地图构建的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11145127B2 (zh) |
EP (1) | EP3827301A4 (zh) |
JP (3) | JP7319350B2 (zh) |
CN (2) | CN112513713B (zh) |
WO (1) | WO2020023446A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513713B (zh) * | 2018-07-23 | 2022-07-15 | 奇跃公司 | 用于地图构建的系统和方法 |
US20230177780A1 (en) * | 2021-12-06 | 2023-06-08 | Htc Corporation | Tracking device, head-mounted display device, and virtual reality system |
US12085407B2 (en) * | 2022-05-12 | 2024-09-10 | Microsoft Technology Licensing, Llc. | Updating a 3D map of an environment |
CN114840627B (zh) * | 2022-05-24 | 2023-03-21 | 中国电建集团成都勘测设计研究院有限公司 | 基于gis+图数据库的城市地下综合管网连通性分析方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105143821A (zh) * | 2013-04-30 | 2015-12-09 | 高通股份有限公司 | 依据slam地图的广域定位 |
WO2018027206A1 (en) * | 2016-08-04 | 2018-02-08 | Reification Inc. | Methods for simultaneous localization and mapping (slam) and related apparatus and systems |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1029533A (en) | 1911-02-25 | 1912-06-11 | State Of Minnesota | Pitman connection for harvesting-machines. |
US10262462B2 (en) | 2014-04-18 | 2019-04-16 | Magic Leap, Inc. | Systems and methods for augmented and virtual reality |
US9952042B2 (en) | 2013-07-12 | 2018-04-24 | Magic Leap, Inc. | Method and system for identifying a user location |
CA2888943C (en) * | 2013-10-03 | 2015-08-18 | Sulon Technologies Inc. | Augmented reality system and method for positioning and mapping |
CN110542938B (zh) | 2013-11-27 | 2023-04-18 | 奇跃公司 | 虚拟和增强现实系统与方法 |
US10203762B2 (en) * | 2014-03-11 | 2019-02-12 | Magic Leap, Inc. | Methods and systems for creating virtual and augmented reality |
CN112651288B (zh) * | 2014-06-14 | 2022-09-20 | 奇跃公司 | 用于产生虚拟和增强现实的方法和系统 |
US9599821B2 (en) | 2014-08-08 | 2017-03-21 | Greg Van Curen | Virtual reality system allowing immersion in virtual space to consist with actual movement in actual space |
US9852547B2 (en) * | 2015-03-23 | 2017-12-26 | International Business Machines Corporation | Path visualization for augmented reality display device based on received data and probabilistic analysis |
JP6584208B2 (ja) * | 2015-08-07 | 2019-10-02 | キヤノン株式会社 | 情報処理装置、情報処理方法、プログラム |
JP6556015B2 (ja) * | 2015-10-09 | 2019-08-07 | ソニー株式会社 | 情報処理装置、位置および/または姿勢の推定方法、およびコンピュータプログラム |
WO2018071416A1 (en) * | 2016-10-11 | 2018-04-19 | Kaarta, Inc. | Laser scanner with real-time, online ego-motion estimation |
JP2018055167A (ja) * | 2016-09-26 | 2018-04-05 | カシオ計算機株式会社 | 自律移動装置、自律移動方法及びプログラム |
CN106875482B (zh) * | 2017-01-13 | 2020-04-28 | 浙江大学 | 一种同时定位与稠密三维重建方法 |
CN106846467B (zh) * | 2017-01-23 | 2020-05-05 | 阿依瓦(北京)技术有限公司 | 基于每个相机位置优化的实体场景建模方法和系统 |
KR102330829B1 (ko) * | 2017-03-27 | 2021-11-24 | 삼성전자주식회사 | 전자 장치에서 증강현실 기능 제공 방법 및 장치 |
CN112513713B (zh) * | 2018-07-23 | 2022-07-15 | 奇跃公司 | 用于地图构建的系统和方法 |
-
2019
- 2019-07-23 CN CN201980049058.6A patent/CN112513713B/zh active Active
- 2019-07-23 JP JP2021503572A patent/JP7319350B2/ja active Active
- 2019-07-23 WO PCT/US2019/042936 patent/WO2020023446A1/en unknown
- 2019-07-23 CN CN202210699679.2A patent/CN115097627A/zh active Pending
- 2019-07-23 EP EP19840583.9A patent/EP3827301A4/en active Pending
- 2019-07-23 US US16/519,513 patent/US11145127B2/en active Active
-
2021
- 2021-09-08 US US17/469,388 patent/US11651569B2/en active Active
-
2023
- 2023-04-07 US US18/297,460 patent/US20230252741A1/en active Pending
- 2023-07-20 JP JP2023118129A patent/JP7483106B2/ja active Active
-
2024
- 2024-04-30 JP JP2024073582A patent/JP2024102192A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105143821A (zh) * | 2013-04-30 | 2015-12-09 | 高通股份有限公司 | 依据slam地图的广域定位 |
WO2018027206A1 (en) * | 2016-08-04 | 2018-02-08 | Reification Inc. | Methods for simultaneous localization and mapping (slam) and related apparatus and systems |
Also Published As
Publication number | Publication date |
---|---|
US20200027274A1 (en) | 2020-01-23 |
JP2024102192A (ja) | 2024-07-30 |
CN115097627A (zh) | 2022-09-23 |
JP7319350B2 (ja) | 2023-08-01 |
CN112513713A (zh) | 2021-03-16 |
JP7483106B2 (ja) | 2024-05-14 |
JP2021530812A (ja) | 2021-11-11 |
EP3827301A1 (en) | 2021-06-02 |
JP2023133394A (ja) | 2023-09-22 |
US20210407207A1 (en) | 2021-12-30 |
WO2020023446A1 (en) | 2020-01-30 |
US20230252741A1 (en) | 2023-08-10 |
US11145127B2 (en) | 2021-10-12 |
EP3827301A4 (en) | 2021-08-04 |
US11651569B2 (en) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114332332B (zh) | 用于生成场景中的表面的三维重建的方法和设备 | |
CN112513713B (zh) | 用于地图构建的系统和方法 | |
US11562525B2 (en) | Cross reality system with map processing using multi-resolution frame descriptors | |
CN115151947B (zh) | 具有基于wifi/gps的地图合并的交叉现实系统 | |
EP4143794A1 (en) | Cross reality system for large scale environments | |
EP4104145A1 (en) | Cross reality system with prioritization of geolocation information for localization | |
CN115244493B (zh) | 用于大规模环境重建的交叉现实系统 | |
CN115176285B (zh) | 利用缓冲的交叉现实系统用于定位精度 | |
WO2021231261A1 (en) | Computationally efficient method for computing a composite representation of a 3d environment |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |