一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在扩展现实系统中的姿态估计的制作方法

2022-06-16 07:57:03 来源:中国专利 TAG:

在扩展现实系统中的姿态估计
1.优先权
2.本专利申请要求享有于2019年10月29日提交的、名称为“pose estimation in extended reality”的非临时申请no.16/667,754的优先权,该申请被转让给本技术的受让人并且特此通过引用的方式明确并入本文中。
技术领域
3.概括而言,本公开内容涉及姿态估计技术。


背景技术:

4.姿态估计和跟踪可以在各种应用(比如机器人、计算机视觉和扩展现实(xr))中使用以确定人或对象相对于场景或环境的位置和方向。该姿态和跟踪信息可以用于管理在人或对象与特定场景或环境之间的交互。例如,机器人的姿态(例如,位置和方向)可以用于允许机器人操纵对象或者在场景各处移动时避免与对象碰撞。作为另一示例,由用户佩戴的设备的姿态可以用于与虚拟内容一起来提高或增强用户的真实或物理环境。


技术实现要素:

5.增强现实(ar)将现实世界与虚拟对象无缝地融合,以支持现实的、智能的和个性化的体验。虚拟现实(vr)提供极致的沉浸感,在真实或想象的世界中创造物理存在感。增强虚拟化(av)将虚拟世界与现实世界对象无缝地融合。混合现实(mr)将现实世界与虚拟世界融合以产生新的环境和可视化效果,其中,物理的和数字的对象可以共存以及彼此交互。扩展现实(xr)包括ar、av、vr和mr,以及涵盖在真实和虚拟环境之间的完整的真实-虚拟连续体。
6.在一些示例中,描述用于提供辅助姿态估计和跟踪以在跟踪应用(例如,扩展现实、机器人和自主设备应用)中节省功率的系统、方法和计算机可读介质。根据至少一个示例,提供用于实现不同的电路元件以进行姿态估计和跟踪以及辅助姿态估计和跟踪来减少功率需求的方法。该方法可以包括:在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在较低功率处理周期期间跟踪计算设备的位置和方向;启动较高功率处理模式,以在较高功率处理周期期间跟踪计算设备的位置和方向;以及在较高功率处理模式下使用在集成电路上的较高功率电路元件集合,来在较高功率处理周期期间跟踪计算设备的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位置和方向。
7.在另一个示例中,提供用于实现不同的电路元件以进行姿态估计和跟踪以及辅助姿态估计和跟踪来减少功率需求的装置。该装置可以包括集成电路,所述集成电路包括较低功率电路元件集合,其配置为:在较低功率处理模式下,在较低功率处理周期期间跟踪装置的位置和方向;以及启动较高功率处理模式,以在较高功率处理周期期间跟踪装置的位
置和方向;所述集成电路还包括较高功率电路元件集合,其配置为:在较高功率处理模式下,在较高功率处理周期期间跟踪装置的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位置和方向。
8.在另一示例中,提供用于实现不同的电路元件以进行姿态估计和跟踪以及辅助姿态估计和跟踪来减少功率需求的非暂时性计算机可读介质。非暂时性计算机可读介质可以包括第一指令集,当其由在集成电路上的较低功率电路元件集合执行时,使得较低功率电路元件集合进行以下操作:在较低功率处理模式下在较低功率处理周期期间跟踪计算设备的位置和方向;以及启动较高功率处理模式,以在较高功率处理周期期间跟踪计算设备的位置和方向。非暂时性计算机可读介质还可以包括第二指令集,当其由在集成电路上的较高功率电路元件集合执行时,使得较高功率电路元件集合进行以下操作:在较高功率处理模式下,在较高功率处理周期期间跟踪计算设备的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位置和方向。
9.在另一示例中,提供包括有用于实现不同的电路元件以进行姿态估计和跟踪以及辅助姿态估计和跟踪来减少功率需求的单元的装置。该装置可以包括用于进行以下操作的单元:在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在较低功率处理周期期间跟踪计算设备的位置和方向;启动较高功率处理模式,以在较高功率处理周期期间跟踪计算设备的位置和方向;以及在较高功率处理模式下使用在集成电路上的较高功率电路元件集合,来在较高功率处理周期期间跟踪计算设备的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位置和方向。
10.在一些方面中,在上文所描述的方法、装置和非暂时性计算机可读介质中的较高功率电路元件集合可以包括第一处理器,以及较低功率电路元件集合可以包括第二处理器,第二处理器具有比第一处理器低的功率需求。在一些示例中,第一处理器可以包括中央处理单元(cpu)以及第二处理器包括数字信号处理器(dsp)。在一些情况下,较低功率电路元件集合可以包括静态随机存取存储器(sram)。
11.在一些方面,较高功率电路元件集合中的至少一部分元件在较低功率处理周期期间可以是关闭电源的。在一些示例中,集成电路可以包括片上系统,以及在较高功率电路元件集合使用的元件可以包括动态随机存取存储器(dram)。此外,在一些实现方式中,dram可以包括片外dram。
12.在一些方面,较高功率电路元件集合可以包括中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、图像信号处理器(isp)和/或锁相环(pll)时钟发生器中的至少一项,以及较低功率电路元件集合可以包括环形振荡器时钟发生器和处理器核心中的至少一项。
13.在一些方面,在较低功率处理模式下的跟踪可以是基于由较低功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的,以及在较高功率处理模式下的跟踪可以是基于由较高功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的。在一些方面,在较低功率处理模式下的跟踪可以
是基于由较低功率电路元件集合从一个或多个惯性传感器接收的传感器数据的,以及在较高功率处理模式下的跟踪可以是基于由较高功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的。
14.在一些方面,上文所描述的方法、装置和非暂时性计算机可读介质可以包括:由较高功率电路元件集合生成与同计算设备相关联的场景相对应的特征地图,特征地图是由较高功率电路元件集合在较高功率处理周期期间以及在较高功率处理模式下工作时生成的,其中,特征地图包括表示在场景内的三维位置处的特征的多个地图点;以及由较高功率电路元件集合在较高功率处理周期期间,将在与在特征地图中的一个或多个特征相对应的显示位置上的虚拟内容进行渲染,虚拟内容是锚定到在特征地图中的一个或多个特征上的。在一些方面,方法、装置和非暂时性计算机可读介质可以包括:将特征地图提供给较低功率电路元件集合。
15.在一些示例中,跟踪计算设备的位置和方向可以包括:跟踪计算设备相对于在特征地图中的一个或多个特征的姿态,以及虚拟内容可以包括以下各项中的至少一项:虚拟图像、虚拟视频、数字内容、一个或多个虚拟游戏、交互式虚拟内容、虚拟内容叠加、虚拟场景、虚拟模拟、虚拟对象和虚拟网页。
16.在一些方面,上文所描述的方法、装置和非暂时性计算机可读介质可以进一步包括:检测到与较高功率电路元件集合相关联的内容渲染器在一数量的时间内还未渲染虚拟内容或额外的虚拟内容;响应于检测到内容渲染器在该数量的时间内还未渲染虚拟内容或额外的虚拟内容,暂停在较高功率处理模式下的跟踪;启动较低功率处理模式以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。
17.此外,在一些方面,上文所描述的方法、装置和非暂时性计算机可读介质可以进一步包括:从在计算设备上的一个或多个应用接收关于一个或多个应用在至少一时间周期内不期望额外的虚拟内容被渲染的指示;基于关于一个或多个应用在至少该时间周期内不期望额外的虚拟内容被渲染的指示,暂停在较高功率处理模式下的跟踪;启动较低功率处理模式,以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。
18.在一些方面,上文所描述的方法、装置和非暂时性计算机可读介质可以包括:由较高功率电路元件集合在较高功率处理周期期间,检测一个或多个较低功率处理触发条件;基于一个或多个较低功率处理触发条件,来暂停在较高功率处理模式下的跟踪;启动较低功率处理模式以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。在一些示例中,一个或多个较低功率处理触发条件包括以下各项中的至少一项:确定计算设备位于预先绘制地图的区域内、确定计算设备的旋转和平移运动低于门限、以及确定计算设备在与一个或多个虚拟内容项目相关联的可见范围之外。
19.在一些方面,上文所描述的方法、装置和非暂时性计算机可读介质可以包括:基于
触发事件,来暂停在较低功率处理模式下的跟踪。在一些示例中,触发事件可以包括以下各项中的至少一项:确定在与同计算设备相关联的场景相对应的特征地图中的状态内特征是不可由较低功率电路元件集合根据计算设备的当前位置和方向来跟踪的、确定计算设备的旋转和平移运动的数量或速度超过门限、和/或确定自启动较低功率处理周期和较低功率处理模式以来已经通过门限数量的时间。在一些示例中,触发事件包括:确定计算设备已经突破定义一个或多个计算设备位置和计算设备方向的范围的虚拟内容围栏,虚拟内容围栏被设置为当计算设备被确定为在一个或多个计算设备位置内时触发较高功率处理模式。
20.在一些示例中,触发事件可以包括:确定一个或多个虚拟内容对象在从计算设备的当前位置和方向来看的可见范围之外,以及确定一个或多个虚拟内容对象在可见范围之外是基于一个或多个虚拟内容对象的一个或多个相应位置和虚拟内容遮挡物位置集合的。
21.在一些方面,上文所描述的装置可以包括一个或多个传感器。在一些示例中,上文所描述的装置可以包括移动电话、可穿戴设备、显示设备、移动计算机、头戴式设备和/或照相机。
22.本概括内容既不是旨在标识所要求保护主题的关键或必要特征,也不是旨在单独用于确定所要求保护主题的范围。通过参考本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求,应当理解本发明的主题。
23.在参考以下说明书、权利要求书和附图时,前述内容连同其它特征和实施例将变得更加显而易见。
附图说明
24.为了描述可以以其获得本公开内容的上述的以及其它的优势和特征的方式,通过参考其在附图中示出的特定实施例,来对上文所描述的原理进行更具体的描述。理解这些附图仅描绘本公开内容的示例实施例以及不认为是限制其范围,本文的原理是通过附图的使用利用附加的特征和细节来描述和解释的,在其中:
25.图1示出根据本公开内容的一些示例的用于使用不同的组件来执行较低功率和较高功率处理以进行功率节省的计算系统的示例架构;
26.图2是示出根据本公开内容的一些示例的用于使用不同的电路元件来实现较低功率姿态估计和跟踪以及较高功率姿态估计和跟踪的示例系统配置的示意图;
27.图3a示出根据本公开内容的一些示例的运行在较低功率模式下的片上系统的示例;
28.图3b示出根据本公开内容的一些示例的运行在较高功率模式下的片上系统的示例;
29.图4a示出根据本公开内容的一些示例的示例虚拟内容围栏的表格,该示性虚拟内容围栏被用于:触发从用于姿态估计和跟踪的较低功率处理到用于姿态估计和跟踪的较高功率处理的升级;
30.图4b示出根据本公开内容的一些示例的基于虚拟对象的位置参数和与遮挡物相关联的遮挡物参数来定义的示例虚拟内容围栏的表格,其中遮挡物可能阻挡虚拟对象的可见性;
31.图5示出根据本公开内容的一些示例的用于从较高功率模式切换到较低功率模式
以进行功率节省的示例用例;
32.图6示出根据本公开内容的一些示例的用于在用于姿态估计和跟踪的较高功率处理与用于姿态估计和跟踪的较低功率处理之间切换以实现功率节省的示例流程图;
33.图7示出根据本公开内容的一些示例的用于实现用于姿态估计和跟踪的较低功率处理以及用于姿态估计和跟踪的较高功率处理的示例方法;以及
34.图8示出根据本公开内容的一些示例的示例计算设备架构。
具体实施方式
35.下文提供本公开内容的某些方面和实施例。对于本领域普通技术人员显而易见的是,这些方面和实施例中的一些可以独立地应用,以及它们中的一些可以以组合形式应用。在以下说明书中,为了解释的目的,阐述具体细节以便提供对本技术的实施例的透彻理解。然而,将显而易见的是,各种实施例可以在不具有这些具体细节的情况下来实践。附图和说明书不旨在是限制性的。
36.随后的描述仅提供示例实施例,以及不旨在限制本公开内容的保护范围、适用性或配置。相反,对示例性实施例的随后描述,将向本领域技术人员提供用于实现示例性实施例的使能描述。应当理解的是,在不背离如在所附权利要求书中阐述的本技术的精神和保护范围的情况下,可以对元件的功能和布置进行各种改变。
37.如上文所指出的,姿态估计、跟踪和扩展现实操作的计算复杂度可能施加重大的功率和资源需求,其在依赖姿态估计、跟踪和扩展现实操作的各种应用中可能是限制因素。在许多情况下,姿态估计、视觉和惯性跟踪以及绘制地图操作的计算复杂性和连续使用,可能在设备上施加重大的功率和资源需求。例如,在一些实现(比如ar实现)中,即使在没有显示虚拟内容时,姿态估计和跟踪也被设置为在使用ar设备的整个时间都运行。这是因为ar设备通常需要具有准确或当前的姿态和跟踪信息,以便在ar设备移动到新位置或ar设备的方向发生改变时,其可以对虚拟内容进行渲染,使得虚拟内容在新的位置或方向上变得可见。对姿态估计和跟踪的持续需求导致对于这样的ar设备的高的平均功率需求(即使在使用期间很少或没有虚拟内容在显示时)。
38.由于将这样的技术在移动和可穿戴设备中实现以及使这样的设备更小、更轻和更舒适(例如,通过减少设备散发的热量)以供用户穿戴更长时间周期的最近的趋势,加剧了这样的功率和资源需求。姿态估计、跟踪和xr技术的高的功率和资源需求,还可能不利地影响这样的设备的电池寿命,特别是随着用户越来越长时间地操作设备。而且,随着这些设备变得更小,对由这样的设备可以实现的电池技术增加进一步的约束,这样的技术的高功率需求以及有用户进行的更长周期的操作可能变得不可持续。
39.本文中的技术可以降低对在姿态估计、跟踪和扩展现实应用中使用的硬件的热要求和功率要求,从而允许在更小、更轻和更舒适的设备中实现这样的能力。在一些示例中,本文中的技术可以通过实现具有用于运行低功率操作(比如跟踪操作)的较低功率电路元件和用于运行高功率操作(比如较高保真度跟踪、绘制地图和/或渲染操作)的较高功率电路元件的集成电路,来解决在跟踪应用(比如xr和自主设备应用)中的前述功率问题。该集成电路可以在低功率操作(其可以由较低功率电路元件执行)与高功率操作(其可以由较高功率电路元件执行)之间切换。为了节省功率,较高功率电路元件可以在较低功率电路元件
运行低功率操作时关闭。当该集成电路检测到唤醒较高功率电路元件并运行高功率操作的触发时,它可以打开较高功率电路元件并将其从低功率操作切换到高功率操作。
40.在一些示例中,集成电路可以实现隔离的、较低功率辅助处理区域,所述辅助处理区域可以与集成电路中的主要或较高功率组件一起使用,以在较低功率处理和较高功率处理之间进行切换,以减少集成电路的功率使用。在这些示例中,较低功率辅助处理区域可以执行较低功率操作(比如跟踪),而在要执行高功率操作(比如绘制地图、姿态估计、跟踪和渲染操作)的其它时间,主要或较高功率组件可以上电并使用。集成电路可以在不同的时间或事件在较低功率处理组件和操作与主功率或较高功率组件和操作之间切换,以提供功率节省,并利用较小的电池来支持长的使用时间。较低功率辅助处理区域可以包括能够执行跟踪操作的电路元件,而在集成电路中的其它组件(比如主cpu(中央处理单元)、dram(动态随机存取存储器)模块、gpu(图形处理单元)和显示组件)时关闭的。
41.例如,在一些情况下,在集成电路中的较低功率辅助处理区域可以实现操作或代码的小核心,操作或代码的小核心从具有较低功率要求的片上硬件(比如较小或较低功率处理器核心)不是主cpu运行以及可以使用片上sram(静态随机存取存储器)而不是dram(其通常比sram具有更高的功率消耗要求)。较小或较低功率的处理器核心可以使用比主cpu少的功率,而片上sram可以类似地使用比dram少的功率,从而减少由较低功率辅助处理区域使用的功率量。当较低功率辅助处理区域在使用中时,在集成电路中的其余电路元件(例如,cpu、gpu、显示硬件和其它ip(知识产权)核心)可以关闭以节省功率,或者当这样的组件打开以及处于活动状态或非活动状态时以其它方式使用。
42.在一些情况下,较低功率辅助处理区域可以通过使用较小线缓冲器和/或较低功率时钟生成组件或技术,来提供额外的功率节省。例如,代替使用从晶体振荡器运行的功率密集型锁相环(pll)来生成时钟,较低功率辅助处理区域可以使用环形振荡器来生成时钟,或者为具有较低功率要求的较小pll供电。可以由较低功率辅助处理区域实现的其它示例功率节省技术可以包括但不限于:在没有渲染虚拟内容的周期期间,使用较低的摄像机分辨率和帧速率以进行低保真度跟踪,和/或在没有渲染虚拟内容的周期和/或在可以降低可接受的姿态置信度的周期期间,使用具有较低保真度跟踪的较低功率算法。
43.可以实现本技术以在任何跟踪应用或用例中提供功率节省。例如,可以实现本技术以在机器人应用、扩展现实应用(包括6自由度(6dof)或3自由度(3dof)应用)、游戏控制器、自主设备应用(比如自动驾驶汽车)以及其它应用中提供功率节省。在一个非限制性的说明性示例中,本文中的功率节省技术可以在扩展现实应用中实现。术语扩展现实(xr)可以涵盖增强现实(ar)、虚拟现实(vr)、混合现实(mr)等。这些形式的xr中的每者允许用户体验沉浸式虚拟环境或内容或者与沉浸式虚拟环境或内容交互。
44.为了提供逼真的xr体验,xr技术通常旨在将虚拟内容与物理世界整合。这通常涉及:生成真实世界环境的地图,并跟踪相对于真实世界地图的姿态,以便以令人信服的方式将内容锚定到真实世界。可以使用视点或姿态信息来将虚拟内容与用户感知的运动和真实世界环境的时空状态进行匹配。xr系统可以支持各种运动量,比如提供x、y和z(水平,垂直和深度)以及俯仰、偏航和横滚的6个自由度(6dof);或者仅提供x、y和z的3个自由度(3dof)。
45.然而,视觉和惯性跟踪、绘制地图和渲染操作的计算复杂度可能对xr系统施加重
大的功率需求。在由较小的电池约束的较小且较轻的设备,以及被设计为更舒适的以佩戴在用户头部更长时间周期的设备(例如,通过减少设备散发的热量)中实施xr技术的最近的趋势,加剧了这样的功率要求,其中所述较小的电池通常具有减小的电池寿命。例如,与其它较大的设备相比,可穿戴xr设备(比如头戴式显示器(hmd))具有较小的可用于散热的表面面积量以及较低的功率容量。通过本文的技术改进的这些和其它因素,可以在设计和实现轻量且舒适的xr设备时造成重大挑战。
46.本技术将在以下公开内容中描述。讨论开始于对用于在姿态估计和跟踪应用中提供辅助跟踪和功率节省的示例系统、体系结构和技术的描述,如在图1至图5中所示出的。随后将是对用于实现用于姿态估计和跟踪的较高功率处理以及用于功率节省的较低功率处理的示例流程和方法的描述,如在图6和图7中所示出的。讨论结束于对示例计算设备架构的描述,所述示例计算设备架构包括适合于执行跟踪、绘制地图和相关联的操作的示例硬件组件,如在图8中所示出的。现在,本公开内容转到图1。
47.图1示出用于使用不同组件来实现较低功率(例如,辅助)和较高功率处理(例如,较低功率姿态估计和跟踪以及较高功率姿态估计和跟踪)以进行功率节省的计算系统100的示例架构。在一些示例中,计算系统100可以用于跟踪对象(例如,用户、与用户相关联的设备),绘制地图场景,计算6dof(或任何其它)姿态,渲染内容,提供xr(扩展现实)体验等等。这样的操作(例如,跟踪、地图绘制、定位)可以由计算系统100针对各种应用(比如机器人应用、游戏应用、xr应用、以及自主设备或车辆应用)来实现。在一个说明性示例中,计算系统100可以被实现为,使用较低功率的姿态估计和跟踪以及高功率的视觉惯性测程法(vio)和/或姿态估计来提供xr体验(比如6dof xr体验)和功率节省。如本文中所使用的,跟踪可以包括使用持续的地图以进行这样的跟踪的跟踪操作。此外,如本文中所使用的,vio可以包括不使用持续的地图的跟踪操作。
48.计算系统100可以由一个或多个电子设备来实现。在一些示例中,计算系统100可以包括电子设备和/或由电子设备来实现,所述电子设备比如移动电话、照相机(例如,数字照相机、ip照相机、摄像机、照相机电话、视频电话、或任何合适的照相机设备)、膝上型或笔记本计算机、平板计算机、显示设备、视频游戏设备、头戴式显示器(hmd)设备、智能可穿戴设备(例如,智能眼镜)、智能车辆、平视显示器(hud)、自主设备、物联网(iot)设备、游戏控制器或者任何其它适当的电子设备。在其它示例中,计算系统100可以由两个或更多个电子设备的组合来实现。此外,计算系统100可以包括计算机软件、固件或者其任何组合,和/或使用计算机软件、固件或者其任何组合来实现,以执行本文中所描述的各种操作。
49.计算系统100可以包括或实现具有各种电路元件(例如,104-118)的片上系统(soc)102、用于获得传感器测量的一个或多个传感器130、以及片外存储器132。soc 102可以包括集成电路,该集成电路被配置为执行较低功率和高功率操作,比如较低功率的跟踪操作和较高功率的跟踪或vio操作,如本文中进一步所描述的。在一些情况下,soc 102可以使用来自一个或多个传感器130的数据,来执行跟踪、绘制地图、定位和xr功能。在一些示例中,soc 102可以在某些时间周期,使用一些电路元件(例如,104-112)和片外存储器132来执行较高功率的跟踪、绘制地图、定位和xr功能;而在其它时间周期,使用其它电路元件(例如,114-118)来执行较低功率的跟踪。在该示例中,用于执行较高功率跟踪、绘制地图、定位和xr功能的电路元件的一些或全部电路元件可以在其它电路元件执行较低功率的跟踪时
关闭,以便节省功率。
50.在soc 102中的电路元件可以包括电子电路或其它电子硬件和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括例如中央处理单元(cpu)104、图形处理单元(gpu)106、数字信号处理器(dsp)108、图像信号处理器(isp)110、控制系统元件112(比如用于时钟产生的锁相环(pll)电路)、片上存储器114(比如片上静态随机存取存储器(sram))、较低功率处理器116(比如dsp核心或cpu核心)和其它控制系统元件118(比如用于时钟产生的环形振荡器)。此外,在一些示例中,soc 102可以与可能不在相同芯片上的至少一些分立组件(例如,cpu 104、gpu 106、dsp 108、isp 110、控制系统元件112、存储器114、较低功率处理器116、控制系统元件118)组装在一起。
51.soc 102可以实现用于较高功率处理的电路元件和用于较低功率处理以节省功率的其它电路元件中的一些电路元件,如本文中所描述的。例如,soc 102可以将较高功率处理元件(例如,具有较高功率或要求的电路元件)用于较高功率处理操作,以及将较低功率处理元件(例如,具有较低功率或要求的电路元件)用于较低功率处理操作。在该示例中,较高功率处理元件可以包括cpu 104、gpu 106、dsp 108、isp 110和控制系统元件112,以及较低功率处理元件可以包括较低功率处理器116、其它控制系统元件118和片上存储器114。较高功率处理元件可以使用片外存储器132(其可以是比如dram(动态随机存取存储器)的较高功率存储器)来运行较高功率的操作,而较低功率处理元件可以使用片上存储器114(其可以是比如sram的较低功率存储器)来运行较低功率的操作。与具有较高功率消耗的片外存储器132相反,通过在较低功率处理操作期间使用片上存储器114,soc 102可以节省大量功率。
52.此外,较高功率处理元件(例如,104-112)可以使用控制系统元件112,控制系统元件112可以包括较高功率时钟产生电路(比如pll)来进行时钟产生,而较低功率处理元件(例如,114-118)可以使用其它控制系统元件118,控制系统元件118可以包括较低功率时钟生成电路(比如环形振荡器)来进行时钟产生。在一些情况下,由较低功率处理元件(例如,114-118)使用以进行时钟产生的控制系统元件118可以包括环形振荡器。在其它情况下,由较低功率处理元件(例如,114-118)使用以进行时钟产生的控制系统元件118还可以包括由环形振荡器供电的较小的pll(例如,小于与由较高功率处理元件使用的控制系统元件112相关联的pll)。
53.为了节省功率,soc 102可以在不同的时间在较高功率处理操作(其可以由较高功率处理元件(例如,104-112)来实现)与较低功率处理操作(其可以由较低功率处理元件(例如,114-118)来实现)之间切换,如本文中进一步所描述的。当soc 102使用较低功率处理元件(例如,114-118)运行较低功率处理操作时,它可以将部分或全部的较高功率处理元件(例如,104-112)关闭电源,以便节省功率以及防止来自较高功率处理元件(例如,104-112)的功率泄漏和闲置功率。例如,当soc 102使用较低功率处理元件(例如,114-118)来运行较低功率处理操作时,它可以将cpu 104、gpu 106、dsp 108、isp 110、控制系统元件112、和/或在soc 102中的未用于较低功率操作的任何其它电路元件关闭电源。因此,soc 102可以通过不时地切换到较低功率处理操作以及在运行较低功率操作时将用于较高功率操作的电路元件关闭电源,来获得重大的功率节省,如先前所解释的所述较高功率操作具有较高的功率消耗或要求。
54.在一些情况下,当执行较低功率处理操作时,soc 102可以通过使用较小的线缓冲器和/或较低功率算法来节省功率。例如,当执行较低功率处理操作时,soc 102可以实现较低功率或较低保真度的跟踪算法。此外,在一些示例中,为了在实现用于较低功率跟踪操作的图像数据时进一步节省功率,与在soc 102上的较高功率处理元件相比,在soc 102上的较低功率处理元件可以利用较低的图像分辨率和帧速率。
55.在一些方面,soc 102可以从传感器130中的一个或多个传感器获得传感器数据,以及使用该传感器数据来执行各种任务以提供跟踪和其它xr功能,比如绘制地图操作、定位操作、虚拟内容锚定操作、虚拟内容生成操作和渲染操作。例如,传感器130可以包括一个或多个图像传感器130a(例如,照相机传感器)、一个或多个惯性传感器130b(例如,一个或多个惯性测量单元(imu)、加速度计、陀螺仪)和/或一个或多个其它传感器130n。一个或多个其它传感器130n可以包括例如但不限于:一个或多个磁力计、雷达、光发射器(例如,激光器)、全球定位系统(gps)设备、高度计、倾斜传感器、运动检测传感器、光传感器、音频传感器和光探测与测距(lidar)传感器。在一些情况下,传感器130中的一个或多个传感器可以是soc 102的一部分,或者由soc 102来实现。例如,在一些情况下,soc 102可以实现图像传感器(130a)、惯性传感器(130b)和/或任何其它传感器(130n)。
56.一个或多个图像传感器130a可以捕获图像和/或视频数据。一个或多个图像传感器130a可以包括例如一个或多个图像和/或视频捕获设备。一个或多个惯性传感器130b可以用于测量设备(例如,计算系统100和/或soc 102)的运动动力学(例如,速度、方向、加速度、位置、方位)。在一些情况下,一个或多个惯性传感器130b还可以用于测量设备周围的磁场。
57.虽然soc 102被示出为包括某些组件,但是本领域技术人员将理解,soc 102可以包括比在图1所示出的组件多或少的组件。例如,在一些实例中,soc 102还可以包括未在图1中显示的一个或多个其它存储器组件(例如,一个或多个高速缓存、缓冲器、随机存取存储器(ram)、只读存储器(rom)等)、存储组件、显示组件、处理组件、电路、控制器、传感器、接口、asic(专用集成电路)等。此外,虽然计算系统100被示出为包括某些组件,但是本领域技术人员将理解,计算系统100可以包括比在图1所示出的多或少的组件。例如,在一些实例中,计算系统100可以包括未图1中示出的一个或多个无线收发器、一个或多个输入设备(例如,触摸屏、键盘、鼠标、输入传感器)、一个或多个输出设备(例如,显示器、扬声器、投影仪)、一个或多个存储设备、一个或多个其它处理设备等。
58.图2是说明用于使用不同的电路元件来实现较低功率的(例如,辅助)跟踪以及高功率的姿态估计和跟踪的示例系统配置200的图。在一些情况下,高功率的姿态估计和跟踪可以包括vio操作和功能。此外,如本文中所描述的,较低功率的跟踪和较高功率的姿态估计与跟踪可以由不同的电路元件实现,以提供功率节省。在该示例中,系统配置200是在图1中所示的计算系统100的上下文中提供的。
59.在soc 102上的较高功率处理元件(例如,104-112)可以使用来自惯性传感器130b的惯性数据230和来自图像传感器130a的图像数据232,来执行较高功率处理220。soc 102可以使用cpu 104、gpu 106、dsp 108和/或isp 110来执行较高功率处理220。在soc 102上的较高功率处理元件(例如,104-112)还可以使用片外存储器132(例如,dram)来进行较高功率处理220。片外存储器132可以具有比片上存储器114(例如,sram)更的性能能力和功率
要求,以及因此可以实现较高的处理性能,同时导致更高的功率消耗。
60.较高功率处理220可以提供较高保真度的姿态估计和跟踪,以及可以包括例如6dof跟踪、定位、绘制地图、vio和/或xr操作(例如,虚拟内容锚定和渲染)。作为较高功率处理220的一部分,较高功率处理元件可以生成与计算系统100相关联的环境或场景(例如,计算系统100周围的世界)的地图(例如,高保真度、视觉特征地图)。环境或场景可以是例如但不限于:房间、建筑物、体育场、车辆、室外区域、商店、房屋、办公室、停车场、车库、公园、设施和工厂。
61.地图可以绘制、描绘、建模或识别所绘制地图的场景或环境的特征(比如对象、空间)和特性(例如,形状、体积、大小、位置)。在一些实现方式中,地图可以是场景或环境的二维(2d)或三维(3d)网格或模型,以及可以包括多个地图或特征点。此外,地图可以包括状态内特征和/或状态外特征。状态内特征可以包括从计算系统100的当前位置可见和/或在从图像传感器130a获得的一个或多个帧中捕获的特征,以及状态外特征可以包括在地图中的任何其它特征,比如从计算系统100的当前位置不可见和/或在从图像传感器130a获得的一个或多个帧中捕获的特征。
62.从图像传感器130a获得的帧可以包括视频序列或静止图像的帧。图像或帧可以是每像素具有红色、绿色和蓝色分量的红绿蓝(rgb)图像或帧、每像素具有亮度分量和两个色度(颜色)分量(色度红色和色度蓝色)的亮度、色度红色、色度蓝色(ycbcr)图像或帧、或者任何其它适当类型的彩色或单色图像或帧。此外,从图像传感器130a获得的图像可以提供与计算系统100相关联的场景或环境的快照。这样的图像可以在较高功率处理220中使用以跟踪与计算系统100相关联的姿态、跟踪地图特征、生成或更新地图或绘制地图数据、纠正或解释在惯性传感器130b中的漂移等。
63.来自在soc 102上的较低功率处理元件的较低功率处理器116在执行较低功率处理204时,还可以使用地图的至少一部分来跟踪所绘制地图的特征。为了这个目的,较高功率处理元件可以将地图的至少一部分传送到较低功率处理器116,以供在跟踪所绘制地图的特征时使用。例如,当较低功率启动器202启动较低功率处理204时,较高功率处理元件可以停止较高功率处理220,以及将当前地图的至少一部分发送给较低功率处理器116,以供在跟踪状态和所绘制地图的特征时使用,如本文中所描述的。
64.在一些示例中,较高功率处理元件可以将当前地图的一子集(例如,地图的切片、特征或地图点的子集)传送到较低功率处理器116。当前地图的子集可以包括例如在地图中的状态内特征。在一些情况下,当前地图的子集还可以包括要由较低功率处理器116在不久的将来(例如,在一定数量的时间内)使用或与其相关的所估计的状态外特征的一部分。要在不久的将来使用或相关的状态外特征,可以基于计算系统100的当前姿态、计算系统100的运动(例如,速度、方向或轨迹)和/或计算系统100与这样的状态外特征的接近度,来进行估计。在其它示例中,较高功率处理元件可以将整个地图传送给较低功率处理器116。
65.来自在soc 102上的较低功率处理元件的较低功率处理器116可以实现较低功率启动器202以确定何时可以启动较低功率处理204。在一些示例中,如果较高功率处理元件未在执行绘制地图和/或渲染操作,以及较低功率启动器202预期绘制地图和/或内容渲染操作将在未来一些时间内将不被执行或需要,则较低功率启动器202可以确定较低功率处理204可以启动。例如,为了提供增强现实(ar)功能,soc 102可以连续地跟踪计算系统100
的状态(例如,姿态)以确保ar内容及时且准确地被渲染(例如,在正确的时间和位置进行渲染)以及ar体验是逼真的。但是,为了在不期望实现通常具有较高的处理和功率消耗要求的绘制地图和渲染操作时节省功率,soc 102可以停止较高功率的处理220,对较高功率处理元件中的部分或全部元件关闭电源,以及切换到由较低功率处理元件实现的较低功率处理204。
66.在一些情况下,如果计算系统100被确定为在预先绘制地图的区域(例如,预先绘制地图的物理空间)中,这可以指示使用非绘制地图跟踪是可接受的(例如,通过根据图像数据232确定相对运动来根据,而不临时构建周围区域的复杂三维地图),和/或如果计算系统100的旋转和平移运动低于可配置的门限(这可以指示将触发执行绘制地图或虚拟内容渲染操作的需求的姿态变化在不久的将来不太可能发生),则较低功率启动器202可以确定较低功率处理204可以启动。较低功率启动器202可以基于例如来自传感器130的传感器数据(例如,惯性数据230和/或图像数据232)(其可以用于估计计算系统100的姿态(例如,位置和方向)),来确定计算系统100是否在预先绘制地图的区域中或者计算系统100的旋转和平移运动是否低于可配置的门限。
67.在一些实现方式中,如果不存在可见或可能在不久的将来可见的经锚定或配置的虚拟内容(例如,在视场(fov)内或正被渲染),则较低功率启动器202可以确定较低功率处理204可以启动。在一些示例中,当内容渲染器(例如,gpu 106)已经在可配置数量的时间内都没有使用时,较低功率启动器202可以确定不存在可见的或可能在不久的将来可见的虚拟内容。在其它示例中,较低功率启动器202可以实施投票方案,在该投票方案中,在计算系统100上的每个xr应用对在当前时间或在不久的将来是否允许较低功率处理204进行投票。每个xr应用可以基于该xr应用是否期望要在当前时间或不久的将来(例如,在配置的时间段内)渲染的相关联的虚拟内容,来对是否允许较低功率处理204进行投票。
68.在一些示例中,每个xr应用可以基于经锚定或配置用于由该xr应用使用的任何虚拟内容的位置以及计算系统100的估计的姿态,来确定是否期望渲染虚拟内容。在一些情况下,用户可以针对不同的应用程序和/或来自不同应用程序的投票,定义不同的权重或优先级。例如,用户可以指定,来自一个xr应用的投票应当给予比来自另一xr应用的投票高的权重或优先级。在其它示例中,用户可以指定,来自特定xr应用的投票可以在任何时候、在特定时间或在特定事件/操作期间被忽略或者应当由用户确认。
69.在一些情况下,当位置音频在计算系统100处播放时,较低功率启动器202可以禁用较低功率处理204。例如,由于较低功率处理204的跟踪保真度可能对于位置音频来说不足够高,所以当播放音频时,较低功率启动器202不允许用于额外的功率节省的较低功率处理204。
70.此外,在一些ar用例中,较低功率启动器202可以在头部锁定渲染期间启用较低功率处理204。例如,如果计算系统100仅渲染头部锁定层,则可以放松跟踪保真度,就好像没有在渲染虚拟内容。因此,较低功率启动器202在头部锁定渲染期间可以可选地允许较低功率处理204。
71.头部锁定渲染可以指的是计算系统100正在渲染一个或多个头部锁定层的场景。头部锁定层可以是覆盖层,其中覆盖层(和/或与覆盖层相关联的虚拟内容)位于相对于计算系统100的持久位置中和/或与计算系统100相关联的显示器中(例如,被配置为渲染来自
计算系统100的虚拟内容的显示器)。相比之下,不是头部锁定的层(例如,世界锁定层)可以是保持其相对于真实世界的位置的覆盖层(例如,其中,与覆盖层相关联的虚拟内容相对于显示坐标进行移动,比如当虚拟内容锚定到现实世界对象时)。
72.一旦较低功率启动器202确定较低功率处理204可以启动,soc 102就可以暂停由在soc 102上的较高功率处理元件(例如,104-112)执行的较高功率处理220,以及对较高功率处理元件(例如,104-112)中的一些或全部元件关闭电源。较低功率处理器116可以接着启动较低功率处理204。在较低功率处理204期间,较低功率处理器116可以跟踪计算系统100的姿态。较低功率处理器116还可以使用从较高功率处理元件获得的地图数据,来在较低功率处理204期间跟踪所绘制地图的特征。
73.较低功率的惯性传感器前端206可以监测惯性传感器130b并从惯性传感器130b获得惯性数据230。惯性数据230可以包括位置和/或方向(例如,横滚、俯仰、偏航)测量。此外,较低功率的图像传感器前端208可以监测图像传感器130a并从图像传感器130a获得图像数据232。较低功率的状态估计器210可以从较低功率的惯性传感器前端206获得惯性数据230和/或从较低功率的图像传感器前端208获得图像数据232,并使用惯性数据230和/或图像数据232来跟踪计算系统100的姿态。
74.使用惯性数据230和/或图像数据232,较低功率状态估计器210可以执行时域滤波和传感器融合来估计计算系统100的位置和方向。在一些示例中,较低功率状态估计器210可以通过估计目标(例如,计算系统100)的状态(例如,位置、方向、速度、轨迹、加速度、方位、高度)和误差协方差的一个或多个滤波器(例如,一个或多个卡尔曼(kalman)滤波器、一个或多个扩展的卡尔曼滤波器),来对来自惯性数据230和/或图像数据232的测量或观察值进行处理。例如,较低功率状态估计器210可以实现一个或多个滤波器、一个或多个运动模型(例如,一个或多个加速度模型、一个或多个角速率模型、一个或多个速度模型)和/或任何其它跟踪算法或模型来估计计算系统100的状态。
75.在一个说明性示例中,较低功率状态估计器210可以使用卡尔曼滤波器或扩展的卡尔曼滤波器(ekf)来对传感器数据(例如,230、232)进行出来,以估计针对计算系统100的状态和误差协方差。卡尔曼滤波过程(也称为线性二次估计(lqe))使用可以应用随时间观测的一系列测量的算法,以及通过估计在每个时间帧内变量的联合概率分布来产生对未知变量的估计。在ekf滤波过程中,较低功率状态估计器210可以实现ekf算法,ekf算法是卡尔曼滤波器的非线性版本,这使对当前均值和协方差的估计线性化。卡尔曼或ekf滤波器可以包括预测步骤和测量更新步骤。预测步骤可以将一个或多个模型(例如,加速度模型、角速率模型、速度模型)用于目标动力学(例如,位置、方向、轨迹、加速度、速度),以传播或预测目标在将来某个时刻的状态。一旦已经传播目标状态,就可以应用测量以进一步提高估计的准确性。
76.如先前所指出的,较低功率状态估计器210可以估计、跟踪和/或预测计算系统100的姿态。在一些实现方式中,计算系统100的姿态可以是与和计算系统100相关联的用户的姿态相关或相关联的。例如,在一些情况下,计算系统100可以是由用户佩戴的智能可穿戴设备(例如,hmd、智能眼镜)。当智能可穿戴设备由用户佩戴时,智能可穿戴设备的姿态可以与用户的姿态同步移动,因此可以使与用户的姿态相关或相关联的。然而,在其它实现方式中,用户可能相对于计算系统100具有不同或单独的姿态。例如,在车辆中的平视显示器
(hud)相对于在车辆中的用户可以具有不同或单独的姿态。
77.此外,当执行传感器融合时,较低功率状态估计器210可以融合来自多个传感器(例如,130)的数据。例如,较低功率状态估计器210可以融合来自多个传感器的惯性数据(230)和/或图像数据(232)。多个传感器(130)可以包括例如一个或多个图像传感器(130a)、一个或多个惯性传感器(130b)。
78.较低功率唤醒处理程序212可以确定何时应当暂停较低功率处理204以及何时应当启动或恢复较高功率处理220。为了这个目的,较低功率唤醒处理程序212可以监测和识别预编程的跟踪事件和唤醒参数(例如,触发或条件),以启动或恢复较高功率处理220。较低功率唤醒处理程序212可以接收由较低功率状态估计器210计算的状态信息(例如,姿态信息),以确定是否暂停较低功率处理204以及启动或恢复较高功率处理220。
79.在一些示例中,唤醒参数可以包括指定姿态参数(例如,一个或多个姿态、一个或多个姿态范围)和/或虚拟内容参数(例如,一个或多个虚拟内容位置、一个或多个虚拟内容遮挡物)的一个或多个虚拟内容围栏,用于触发较高功率处理220。例如,唤醒参数可以指定一个或多个虚拟内容围栏,所述一个或多个虚拟内容围栏被配置为:如果计算系统100的姿态匹配或落入在一个或多个虚拟内容围栏中的位置和/或方向参数内,或者替代地如果计算系统100的姿态不匹配或不落入在一个或多个虚拟内容围栏中的位置和/或方向参数内,则触发启动或恢复较高功率处理220。
80.在一些示例中,一个或多个虚拟内容围栏可以从在计算系统100上的渲染器(例如,gpu 106)自动获得。例如,在计算系统100上的gpu 106可以知道什么内容正在被渲染(如果有的话)。gpu 106可以维护经更新的虚拟内容围栏的列表,该列表考虑被配置用于渲染的任何虚拟内容的位置和状态。经更新的虚拟内容围栏的列表可以因此用来确定虚拟内容是否正在被渲染或者在不久的将来可能被渲染,这可以用来触发启动或恢复较高功率处理220以渲染这样的虚拟内容或预期这样的虚拟内容被渲染。为了说明起见,当计算系统100位于在虚拟内容围栏中指定的位置(其可以对应于虚拟内容围栏的位置)(或位置范围)上或在其邻近范围内时,或者当计算系统100具有与在虚拟内容围栏中指定的方向(其可以对应于从其可见或渲染虚拟内容的方向)(或者在方向范围内)匹配的方向时,可以启动或恢复较高功率处理220。
81.在其它示例中,一个或多个虚拟内容围栏可以从在计算系统100上的一个或多个xr应用获得。例如,在计算系统100上的每个xr应用都可以知道被配置为从xr应用进行渲染的任何虚拟内容的位置。每个xr应用可以因此维护经更新的虚拟内容围栏的列表,该列表考虑被配置用于在xr应用处渲染的任何虚拟内容的位置。经更新的虚拟内容围栏的列表可以用来确定计算系统100是否在从其虚拟内容是可见的或应当进行渲染的位置和/或方位上或附近,这可以触发启动或恢复较高功率处理220,以渲染这样的虚拟内容或预期这样的虚拟内容被渲染。在一些示例中,用户可以定义、更新和/或修改与一个或多个xr应用相关联的一个或多个虚拟内容围栏。例如,用户可以与计算系统100和/或特定的xr应用进行交互,以规定针对与xr应用相关联的虚拟内容的一个或多个虚拟内容栏。
82.在一些实现方式中,唤醒参数可以指定:当来自可用于较低功率处理器116的特征地图数据的可配置百分比的状态内特征从计算系统100的位置和/或方向是不可跟踪的时,应当触发从较低功率处理器204升级到较高功率处理器220的升级。例如,当计算系统100的
方向改变一定量时,当计算系统100和这样的特征变得太远而无法跟踪时,当存在阻止从计算系统100的位置和/或方向跟踪这样的特征的障碍物时,这样的状态内特征可能变得不可跟踪。
83.在其它实现方式中,唤醒参数可以指定:当可配置的移动速度门限由计算系统100超过时(如由传感器130和/或较低功率处理器116(例如,经由较低功率启动器202)所确定的),应当触发从较低功率处理204到较高功率处理220的升级。
84.在其它实现方式中,唤醒参数可以指定:当自触发或执行较低功率处理204以来已经经过可配置的时间量时(例如,当较低功率处理204已经运行了可配置的时间量时),当自触发或执行较高功率处理220以来已经经过了可配置的时间量时,和/或当自使用渲染器(例如,gpu 106)来渲染内容以来已经经过了可配置的时间量时,应当触发从较低功率处理204到较高功率处理220的升级。在一些情况下,在可能需要更频繁地更新特征地图的动态环境中,该时间量可以更小。例如,即使计算系统100距离未移动很多或远离被配置用于渲染的任何虚拟内容,也可以在动态环境中降低该时间量以触发更频繁的定位和/或绘制地图操作。动态环境的非限制性示例可以包括以下各项:与更多的静态环境相比,在环境中的事物或对象可以以较快的速度来移动或改变的环境,比如车辆或机场;与更多的静态环境相比,物理空间可以以较快的速度来改变的环境,比如会议室或工厂;与其它更多的静态环境相比,计算系统100可以以较高的频率或利用较少的移动来从一个物理空间转换到另一个物理空间的环境,比如具有许多和/或较小房间或走廊的建筑物;等等。
85.在一些情况下,由唤醒参数指定用于触发较高功率处理220的时间量可以基于在计算系统100处的电池或热状况来变化。例如,当在计算系统100处的电池功率电平较高时,定时器值可以减小以触发到较高功率处理220的更频繁的升级,这可以提供较高保真度的跟踪以及执行定位和绘制地图更新。另一方面,当在计算系统100处的电池功率电平较低时,可以增加定时器值以触发到较高功率处理220的较不频繁的升级,以便节省更多功率。在一些情况下,较低功率启动器202可以基于电池或热状况,来类似地实现用于触发虚拟内容超时和较低功率处理204的定时器值。
86.通过使用定时器值,较低功率启动器202和/或较低功率唤醒处理程序212可以在较低功率处理204进入和退出的进取性上提供灵活性。例如,可以调整定时器值以增加或减少较低功率处理204和/或较高功率处理220的时间量或频率。在一些示例中,进入较低功率处理204可以偏向于在宽容的热状况和/或高电池情景期间是较少见的,而在高热状况和/或低电池情景器件是更为普遍的,而退出到较高功率处理220可以偏向于在宽容的热条件和/或电池电量情景期间是更快的,而在高热状况和/或电池电量低的情景期间是较慢的。
87.在一些实现方式中,唤醒参数可以包括在其处应当启动或恢复较高功率处理220以执行重新定位的特定时间间隔。例如,在一些情况下,较低功率处理204可以执行较低保真度跟踪。较低保真度跟踪可能更容易受到由例如漂移、频繁移动、较快的运动导致的跟踪错误和不准确的影响。为了纠正、防止和/或减少这样的跟踪错误和不准确,唤醒参数可以指定应当触发较高功率处理220来执行重新定位的某些时间间隔。一旦重新定位完成,就可以恢复较低功率处理204以进行功率节省,除非用于触发较高功率处理220的唤醒参数被满足,其中较高功率处理220可以继续执行,直到较低功率启动器202确定应当启动较低功率处理204为止,如先前所解释的。
88.在一些实现方式中,较低功率处理器116可以使用惯性数据230和图像数据232两者来执行较低功率处理204。例如,计算系统100可以具有始终开启或较低功率的相机硬件,其允许在计算系统100上的soc 102能够以比其它相机硬件低的功率电平获得和使用图像数据(232)。因此,除了惯性数据(230)之外,较低功率处理器116还可以实现图像数据(232)以进行较低功率处理204,以及仍然通过较低功率处理204以及对较高功率处理元件中的一些或全部元件关闭电源来实现显著的功率节省。
89.在其它实现方式中,较低功率处理器116可以使用惯性数据(230)以及可以不使用图像数据(232)来执行较低功率处理204。例如,在一些情况下,计算系统100和/或soc 102可能不具有始终开启或较低功率的照相机硬件。反而,计算系统100和/或soc 102可以包括以下照相机硬件(或者例如在非ar使用情况下无照相机硬件):具有较高功率要求的照相机硬件,这可以减少或消除较低功率处理204的功率节省。在这样的情况下,较低功率处理204可以执行仅惯性的跟踪。soc 102可以在这样的仅惯性的跟踪期间对较高功率处理元件关闭电源,以提供额外的功率节省,如先前所解释的。在一些情况下,唤醒参数可以提供可配置的唤醒定时器,以周期性地触发经由较高功率处理220的重新定位,以管理(例如,纠正、减轻)来自仅惯性的跟踪的漂移。
90.较低功率处理器116还可以将控制系统元件118用于时钟产生。与由来自较高功率处理元件的处理器(例如,104-110)实现的控制系统元件112相比,控制系统元件118可以具有较低的功率需求。例如,在一些情况下,来自较高功率处理元件的控制系统元件112可以包括pll,而来自较低功率处理元件的控制系统元件118可以替代地实现具有比pll低的功率需求的环形振荡器。
91.在一些实现方式中,控制系统元件118可以包括环形振荡器216以及具有较低功率要求的较小pll 214。例如,控制系统元件118可以在移位时具有环形振荡器,该环形振荡器为较小的pll供电以产生时钟。在其它实现方式中,控制系统元件118可以包括针对时钟产生而直接实现的环形振荡器。通过使用环形振荡器来进行时钟产生或者为较小的pll供电以进行时钟产生,控制系统元件118可以超过在较高功率处理元件中实现的控制系统元件112,提供功率节省。
92.图3a示出在计算系统100上的运行在较低功率模式300下的soc 102的示例。在一些情况下,当计算系统100启动或变为活动时,soc 102可以在较低功率模式300下开始,以及可以保持在较低功率模式300下直到较低功率唤醒处理程序212触发到较高功率模式的切换以及在soc 102处启动较高功率处理220为止。在其它情况下,soc 102可以在较高功率模式下开始,或者可以根据当前系统状态、当前系统条件、要执行的操作、用户首选项等等,在较低功率模式300或较高功率模式下开始。如果soc 102先前在较高功率模式下,则当较低功率启动器202确定应当启动较低功率处理204以及发出启动较低功率处理204的指令时,soc 102可以转换到较低功率模式300。
93.当soc 102运行在较低功率模式300下时,在soc 102中的较低功率处理元件在执行较低功率处理204时可以具有活动状态302。在该周期期间,较低功率处理器116可以实现较低功率启动器202、较低功率惯性传感器前端206、较低功率图像传感器前端208、较低功率状态估计器210和/或较低功率唤醒处理程序212,以使用来自传感器130的数据来执行较低功率处理204。
94.此外,当在较低功率模式300下时,较低功率处理器116可以使用片上存储器114(例如,sram)来运行较低功率处理204。例如,较低功率处理器116可以使用片上存储器114来存储和检索信息,比如跟踪信息、地图数据、传感器测量、参数。片上存储器114可以消耗比片外存储器132(例如,dram)少的功率,以及因此可以在较低功率处理204和较低功率模式300期间提供节省功率。较低功率处理器116还可以使用用于时钟产生的控制系统元件118。如先前所解释的,与来自较高功率处理元件的控制系统元件112相比,由较低功率处理器116使用的控制系统元件118可以消耗较少的功率,以及因此可以提供额外的功率节省。
95.另一方面,当soc 102在较低功率模式300下时,较高功率处理元件(例如,104-112)可以具有关闭电源状态304。关闭电源状态304可以通过防止由较高功率处理元件进行的功率使用、功率泄漏和/或闲置功率,来在较低功率模式300期间提供显著的功率节省和改善的热条件,如先前所解释的,较高功率处理元件具有比较低功率处理元件高的功率要求。在一些实现方式中,所有的较高功率处理元件(包括cpu 104、gpu 106、dsp 108、isp 110、控制系统元件112以及在soc 102中的任何其它硬件或电子组件(较低功率处理元件除外))可以在较低功率模式300期间关闭电源。在其它实现方式中,较高功率处理元件中的一个或多个元件,可以在soc 102在较低功率模式300的部分时间或全部时间期间,保持上电并处于活动或不活动状态。
96.例如,在一些情况下,cpu 104或dsp 108可以在较低功率模式300期间在可配置的时间间隔醒来(例如,开机或从非活动状态切换到活动状态),以监测传感器130、与较低功率处理元件通信(例如,传达状态信息、传达地图信息、传达参数、报告事件、对查询进行响应)、保持待机状态、监听唤醒事件和/或执行其它系统操作。作为另一示例,在一些情况下,gpu 106可以在较低功率模式300期间在可配置的时间间隔醒来,以监测或管理虚拟内容围栏、与较低功率处理元件通信(例如,传达状态信息、传达地图信息、传达参数、报告事件、对查询进行响应)、保持待机状态等。
97.此外,当soc 102在较低功率模式300下时,片外存储器132(例如,dram)还可以具有非活动状态306。由于较低功率处理元件可以在较低功率模式300期间使用片上存储器114代替片外存储器132,以及较高功率处理元件处于关闭电源状态304以及因此可能不需要使用片外存储器132,因此,片外存储器132可以在较低功率模式300期间处于非活动状态306。片外存储器132可以保持在非活动状态306,直到soc 102切换到更较高功率模式和/或片外存储器132由在计算系统100中的其它组件使用为止。
98.图3b示出在计算系统100上运行在较高功率模式320下的soc 102的示例。在一些情况下,当计算系统100启动或变为活动的时,soc 102可以在较高功率模式下320开始,以及可以保持在较高功率模式320下直到较低功率启动器触发到较低功率模式300的切换以在soc 102处启动较低功率处理为止。在其它情况下,soc 102可以在较低功率模式300下开始,或者可以根据当前系统状态、当前系统条件、要执行的操作、用户首选项等,在较低功率模式300或较高功率模式320下开始。如果soc 102先前在较低功率模式300下,则当较低功率唤醒处理程序212检测到唤醒事件或参数,并发布唤醒指令以将当前功率模式和处理从当前的较低功率模式300和较低功率处理204升级到较高功率模式320和较高功率处理220时,soc 102可以转换到较高功率模式320。
99.当soc 102运行在较高功率模式320下时,较高功率处理元件(例如,104-112)可以
具有上电状态322。在此时间期间,较低功率处理204可以保持在不活动状态326,较高功率处理元件可以反而执行较高功率处理220。当在上电状态322上时,较高功率处理元件还可以执行任何其它经配置的操作,比如渲染操作、绘制地图操作、定位操作、监测操作、管理操作、状态预测操作、过滤操作、ar操作、图像信号处理操作、虚拟内容围栏管理操作、位置音频操作和节流操作。
100.在一些情况下,当soc 102从较低功率处理204切换到较高功率处理220时,较高功率处理220可能需要执行重新定位。例如,在一些情况下,在较低功率处理204期间执行的低保真度跟踪可能遭遇漂移、不准确、甚至丢失对计算系统100相对于地图数据(例如,所绘制地图的特征)的位置的跟踪。较高功率处理220可以因此执行重新定位以纠正或减轻这些问题。
101.在一些示例中,较低功率处理器116可以在soc 102处于较高功率模式320的一些或全部时间期间是活动的。例如,在一些情况下,较低功率处理器116可以在较高功率模式320期间监测传感器130和/或监听来自较高功率处理元件的事件或通信。在其它示例中,较低功率处理器116可以运行较低功率启动器202以检查可能触发到较低功率模式300和较低功率处理204的切换的任何事件或条件。在该示例中,较低功率处理器116可以在较高功率模式320期间运行较低功率启动器202(例如,周期性地或在整个时间期间),其可以监测事件和参数以确定是否应当启动较低功率处理204。
102.此外,片外存储器132在较高功率模式320期间可以处于活动状态324。较高功率处理元件可以将片外存储器132用于较高功率处理220。较高功率处理元件可以将片外存储器132用于由较高功率处理元件执行的任何其它操作,比如渲染操作、绘制地图操作、定位操作、监测操作、管理操作、状态预测操作、过滤操作、ar操作、图像信号处理操作和虚拟内容围栏管理操作。
103.如先前所描述的,图3a和图3b示出实现和/或管理较低功率处理模式和较高功率处理模式的各种功能组件(例如,202、206、208、210、212)。应当理解的是,这样的功能组件均可以由一个或多个电路元件和/或硬件组件(比如cpu 104、gpu 106、dsp 108、isp 110、控制系统元件112、片上存储器114、处理器116、控制系统元件118和/或片外存储器132)来实现和/或管理。在一些情况下,功能组件可以由这样的电路元件和/或硬件组件的组合来实现。
104.图4a示出被配置用于触发从较低功率处理204向较高功率处理220的升级的示例虚拟内容围栏的表格400。例如,较低功率启动器202可以使用表格400中的虚拟内容围栏,来确定是否基于计算系统100的跟踪姿态与虚拟内容围栏中的位置和/或方向参数之间的比较,暂停较低功率处理204并启动较高功率处理220。
105.在一些示例中,较低功率启动器202可以从在计算系统100上的渲染器(例如,gpu 106)获得在表格400中的虚拟内容围栏。渲染器可以维护被配置为要在计算系统100处渲染的虚拟内容的列表以及与虚拟内容相关联的任何参数,例如,虚拟内容在所绘制地图的空间/场景内的位置(例如,虚拟内容被锚定/配置的位置)。在一些情况下,渲染器可以使用被配置为要被渲染的虚拟内容的列表来确定虚拟内容围栏,并将虚拟内容围栏提供给较低功率处理器116和/或较低功率启动器202以供在确定何时触发或启动较高功率处理220时使用。在其它情况下,渲染器可以向较低功率处理器116和/或较低功率启动器202提供在被配
置为要被渲染的虚拟内容列表中的一些或全部信息,较低功率处理器116和/或较低功率启动器202可以使用所述信息来确定虚拟内容围栏。
106.在其它示例中,较低功率启动器202可以从在计算系统100上的一个或多个应用获得在表格400中的虚拟内容围栏。例如,在计算系统100上的每个ar应用可以维护被配置在该ar应用上以进行渲染的任何虚拟内容的列表以及任何相关联的参数,例如,虚拟内容在所绘制地图的空间/场景中的位置(例如,虚拟内容被锚定/配置的位置)。基于关于被配置在每个ar应用处的虚拟内容的信息,每个ar应用可以提供各自的虚拟内容围栏,以用于触发较高功率处理220。在一些情况下,每个ar应用可以对可以用于配置虚拟内容围栏的位置和/或方向信息或范围进行投票。每个ar应用可以基于在该ar应用(如果有的话)处配置的虚拟内容和相关联信息来投票。
107.在图4a中,虚拟内容围栏的示例表格400可以包括:虚拟围栏标识符列402,其可以用于标识被配置在表格400中的虚拟内容围栏;坐标列集合404-414,其定义用于在表格400中的虚拟内容围栏的位置参数的范围;以及方向列集合416-426,其定义用于在表格400中的虚拟内容围栏方向参数(例如,俯仰、横滚、偏航)的范围。
108.例如,列404可以定义在表示3d空间的三维(3d)坐标系统中的x轴上的最小位置值,列406可以定义在三维(3d)坐标系统中的x轴上的最大位置值,列408可以定义在三维(3d)坐标系统中的y轴上的最小位置值,列410可以定义在三维(3d)坐标系统中的y轴上的最大位置值,列412定义可以在三维(3d)坐标系统中的z轴上的最小位置值,以及列414可以定义在三维(3d)坐标系统中的z轴上的最大位置值。此外,列416可以定义最小俯仰值,列418可以定义最大俯仰值,列420可以定义最小偏航值,列422可以定义最大偏航值,列424可以定义最小横滚值,以及列426可以定义最大横滚值。
109.较低功率唤醒处理程序212可以使用被定义用于虚拟内容围栏的坐标列集合404-414和方向列集合416-426中的值,来确定是否触发较高功率处理220。例如,较低功率唤醒处理程序212可以将所跟踪的计算系统100的位置和方向与列在404-426中的值进行比较,以确定计算系统100的位置和方向是否在针对任何特定虚拟内容围栏在列404-426中定义的位置和方向的范围内。如果较低功率唤醒处理程序212确定已经突破特定虚拟内容围栏(例如,计算系统100的位置和方向在针对该特定虚拟内容围栏在列404-426中定义的位置和方向的范围内),则较低功率唤醒处理程序212可以触发较高功率处理220。
110.例如,表格400示出虚拟内容围栏428-430,其被配置用于基于计算系统100的位置和方向来触发较高功率处理220。虚拟内容围栏428-430中的每者定义针对位置列404-414和方向列416-426的值,较低功率唤醒处理程序212可以使用所述值来确定计算系统100是否突破任何虚拟内容围栏428-430。如果较低功率唤醒处理程序212确定计算系统100的位置和方向在针对虚拟内容围栏428或430在列404-426中定义的位置和方向的范围内,则较低功率唤醒处理程序212可以暂停较低功率处理204并且启动较高功率处理220。
111.或者,如果较低功率唤醒处理程序212确定计算系统100的位置和方向不在针对虚拟内容围栏428或430在列404-426中定义的位置和方向的范围内,则较低功率唤醒处理程序212可以允许较低功率处理204继续,除非较高功率处理220由另一事件(比如被配置用于较高功率处理220的基于定时器的触发的定时器值)触发。
112.在一些情况下,代替定义位置和方向的范围,虚拟内容围栏可以定义确切的位置
和方向的值,当计算系统100的位置和方向与这样的位置和方向的值匹配时,所述的位置和方向的值可以触发较高功率处理220。在其它情况下,虚拟内容围栏可以配置为是动态的。例如,当指定虚拟内容围栏时,每个虚拟内容围栏参数可以包括增长率参数,其指示从虚拟内容围栏参数中添加或减去的速度。为了说明起见,指定特定最小俯仰和特定最大俯仰的虚拟内容围栏可以包括为最小俯仰指定的每秒-n
°
的增长参数和为最大俯仰指定的每秒 n
°
增长参数。这样的动态虚拟内容围栏可以允许对虚拟对象随时间的移动或增长的表达,以及可以用于处理在较低功率处理204中累积的错误的不确定性。
113.图4b示出其它示例虚拟内容围栏。在该示例中,虚拟内容围栏是基于虚拟内容对象的位置参数和与可能阻塞虚拟内容对象的可见性的遮挡物相关联的遮挡物参数来定义的。在图4b中,针对虚拟内容对象的位置参数是在表格440中定义的,遮挡物参数是在表格460中定义的。
114.表格440包括,标识在表格440中的特定虚拟内容对象456-458的虚拟内容对象标识符列442,以及定义针对虚拟内容对象456-458的位置参数的范围的坐标列444-454。例如,在表格440中定义的虚拟内容对象456-458包括在坐标列444-454中定义的沿x、y和z轴的各自的最小和最大位置值。另一方面,表格460包括,标识在表格460中的特定遮挡物476-478的遮挡物标识符列462,以及定义遮挡物476-478的位置参数范围的坐标列464-474。例如,在表格460中定义的遮挡物476-478包括在坐标列464-474中定义的沿x、y和z轴的各自的最小和最大位置值。
115.较低功率唤醒处理程序212可以使用针对虚拟内容对象456-458和遮挡物476-478在表格440中定义的坐标列集合444-454中的值和在表格460中定义的坐标列464-474集合中的值,来确定是否触发较高功率处理220。例如,较低功率唤醒处理程序212可以将所跟踪的计算系统100的位置与针对虚拟内容对象456-458和遮挡物476-478在表格440中定义的在列444-454中的值和在表格460中定义的在列464-474中的值进行比较,以确定特定虚拟内容对象从所跟踪的计算系统100的位置是否是可见的。如果计算系统100的位置在在表格440中的坐标列444-454中针对特定虚拟内容对象(444、446)定义的位置范围内,但不在在表格460的坐标列464-474中针对遮挡物476-478定义的任何位置范围内,则较低功率唤醒处理程序212可以确定特定虚拟内容对象从计算系统100的位置是可见的。如果较低功率唤醒处理程序212确定特定虚拟内容对象是可见的,则较低功率唤醒处理程序212可以暂停较低功率处理204并启动较高功率处理220。
116.另一方面,如果计算系统100的位置不在在表格440中的坐标列444-454中针对任何虚拟内容对象456-458定义的位置范围内,和/或如果计算系统100的位置在在表格460中的坐标列464-474中针对任何遮挡物476-478定义的位置范围内,则较低功率启动器202可以确定没有一个虚拟内容对象456-458从计算系统100的位置是可见的。如果较低功率唤醒处理程序212确定没有一个虚拟内容对象456-458从计算系统100的位置是可见的,则较低功率唤醒处理程序212可以允许较低功率唤醒处理程序212继续。
117.在一些情况下,表格440和/或表格460还可以包括定义方向参数(例如,俯仰、横滚、偏航)的范围的方向列,其可以由较低功率唤醒处理程序212使用以确定任何虚拟内容对象从计算系统100的位置和方向是否是可见的。在这样的情况下,较低功率唤醒处理程序212可以将计算系统100的位置和方向与在表格440和/或表格460中定义的位置和方向值进
行比较,以确定特定虚拟内容对象从计算系统100的位置和方向是否是可见的。
118.图5示出用于从较高功率模式510切换到较低功率模式540以进行功率节省的示例用例500。在该示例用例500中,计算系统100表示用户502佩戴的ar眼镜,以通过ar眼镜获得ar体验。如下文进一步所描述的,计算系统100中的soc 102可以在用户502在位置508a处时运行在较高功率模式510下,以及在用户502在位置508b处时切换530至较低功率模式540。如先前所描述的,切换530可以由较低功率启动器202基于所跟踪的计算系统100的姿态和/或触发事件或条件来执行。
119.在较高功率模式510期间,在计算系统100上的soc 102中的较高功率处理元件可以运行较高功率处理220,以便执行较高保真度跟踪,并对在由用户502从位置508a可见的所绘制地图的场景512内的虚拟内容对象522-524进行渲染。在一些情况下,在soc 102中的较高功率处理元件还可以在较高功率模式510期间执行绘制地图操作(例如,经由较高功率处理220)。虚拟内容对象522-524是由在soc 102中的高功率处理元件进行渲染的,以供由用户502从位置508a观看。此外,在所绘制地图的场景512内的特定位置从计算系统100是可见的时,虚拟内容对象522-524被锚定到在所绘制地图的场景512内的该特定位置,以供由在soc 102中的较高功率处理元件进行渲染。当在所绘制地图的场景512内的特定位置从计算系统100是可见的时,虚拟内容对象522-524可以被渲染,以便提供逼真的时空ar内容体验。
120.所绘制地图的场景512包括来自场景和在所绘制地图的场景512内渲染的虚拟内容对象522-524的视觉特征514-520。虚拟内容对象522-524可以包括数字和/或多媒体内容,比如虚拟对象、虚拟场景、虚拟叠加、虚拟视图、交互式虚拟内容、音频、计算机生成的图像、虚拟仿真、虚拟游戏和虚拟接口。在一些情况下,虚拟内容对象522-524可以包括一种或多种视觉或特殊效果,比如动画、模拟、光学效果和机械效果。
121.当佩戴计算系统100的用户502从位置508a移动到位置508b时,较低功率启动器202可以基于计算系统100的新姿态来启动较低功率模式540。例如,较低功率启动器202可以确定,没有虚拟内容对象锚定到在位置508b处的场景542,和/或从在位置508b处的场景542是可见的。场景542可以包括从位置508b可见的现实世界项目544-546。在一些示例中,较低功率启动器202可以获得视觉特征地图和/或一个或多个所绘制地图的特征,其可以包括与场景542相对应的状态内特征。在一些情况下,视觉特征地图和/或一个或多个所绘制地图的特征还可以包括从场景542不可见的一个或多个状态外特征。此外,较低功率启动器202可以从在soc 102上的较高功率处理元件获得视觉特征地图和/或一个或多个所绘制地图的特征。
122.在较低功率模式540期间,soc 102中的较低功率处理器116运行较低功率处理204,来以降低的功率电平继续跟踪计算系统100的姿态以便节省功率。此外,较高功率处理元件的电源可以在较低功率模式540期间关闭电源,以提供额外的功率节省。soc 102可以在较低功率模式540下继续,直到较低功率唤醒处理程序212检测到唤醒事件或状况并且升级至较高功率模式510为止,如先前所描述的。
123.在一些情况下,在较低功率模式540期间,soc 102可以在一个或多个时间间隔处短暂地切换回较高功率模式510,来执行重新定位或较高保真度跟踪,以便纠正、改进和//或防止来自较低功率处理204的跟踪错误或不准确。soc 102可以接着返回到较低功率模式
540,除非较低功率唤醒处理程序212确定soc 102应当保持在较高功率模式510下。
124.已经描述了示例系统和技术,本公开内容现在转到在图6和图7中所示的示例流程图600和方法700。在流程图600和方法700中概述的步骤是示例,以及可以以其任何组合来实现,包括排除、添加或修改某些步骤的组合。
125.图6示出用于在较高功率处理与较低功率处理之间进行切换以在示例姿态估计和跟踪应用中节省功率的示例流程图600。在该示例中,在步骤602,在计算系统100的soc 102上的较高功率处理元件(例如,104-112)可以接收传感器数据(例如,230、232)。较高功率处理元件可以从一个或多个传感器130(比如图像传感器和惯性传感器)接收传感器数据。
126.在步骤604处,较高功率处理元件可以使用传感器数据来执行较高功率处理(220)。较高功率处理可以提供较高保真度的姿态估计和跟踪。例如,较高功率处理可以执行计算系统100的较高保真度跟踪。在一些示例中,较高功率处理可以包括:例如,6dof跟踪、定位、绘制地图、vio和/或xr操作(例如,虚拟内容锚定和渲染)。作为较高功率处理的一部分,较高功率处理元件可以生成与计算系统100相关联的场景(例如,512)的地图(例如,视觉特征地图)。场景可以包括例如但不限于:房间、建筑物、体育场、车辆、室外区域、商店、房屋、办公室、停车场、车库、公园、设施、工厂、体育场。
127.地图可以绘制、描绘、建模和/或识别场景的/在场景中的特征,比如对象、空间、特性(例如,形状、体积、大小、位置)和人。在一些实现方式中,地图可以是场景的二维(2d)或三维(3d)网格或模型,以及可以包括多个地图或特征点。在一些示例中,如先前所描述的,地图可以包括状态内特征和/或状态外特征。此外,较高功率处理元件可以使用地图来跟踪所绘制地图的特征,并在在场景内的虚拟对象被锚定/设置的特定位置处渲染虚拟对象。
128.在步骤606处,较低功率启动器202可以确定是否应当启动较低功率处理(204)。如果确定结果为“是”,则流程图将转到步骤608。如果确定结果为“否”,则流程图将转到步骤604。在一些情况下,如果较高功率处理元件未在执行绘制地图或渲染操作以及较低功率启动器202不期望在将来一段时间内执行或需要执行绘制地图或虚拟内容渲染操作,则较低功率启动器202确定可以启动较低功率处理。
129.例如,为了提供ar功能,较高功率处理元件可以连续地跟踪计算系统100的状态(例如,姿态)以确保ar内容是及时以及准确地渲染的(例如,在正确的时间和位置进行渲染),以及ar体验是逼真的。然而,为了在不期望实现绘制地图和渲染操作时节省功率,较低功率启动器202可以暂停较高功率处理并且切换到较低功率处理,这可以继续跟踪计算系统100的状态(虽然以较低功率电平和/或较低保真度)。当较低功率处理运行时,较高功率处理元件中的一些或全部元件可以关闭电源,以减少功率使用。
130.在其它情况下,如果计算系统100被确定为在预先绘制地图的区域(例如,预先绘制地图的物理空间)中,这可以指示使用非绘制地图跟踪和/或姿态估计是可以接受的,则较低功率启动器202确定较低功率处理可以启动。此外,在一些情况下,如果计算系统100的旋转和平移运动低于可配置门限,这可以指示将触发对执行绘制地图和渲染操作的需要的姿态变化在将来至少一段时间内不太可能发生,则较低功率启动器202可以确定较低功率处理可以发起。较低功率启动器202可以基于来自传感器130的传感器数据(例如,惯性数据230和/或图像数据232)(其可以用于估算计算系统100的姿态),来确定计算系统100是否在预先绘制地图的区域中或者计算系统100的旋转和平移运动是否低于可配置门限。
131.在一些情况下,如果不存在可见的(例如,在视场(fov)内或正被渲染的)或者在不久的将来可能可见的经锚定或配置的虚拟内容,则较低功率启动器202确定可以启动较低功率处理204。在一些示例中,当内容渲染器(例如,gpu 106)已经在可配置的时间量内都没有使用时,较低功率启动器202可以确定不存在可见的或可能可见的虚拟内容。在其它示例中,较低功率启动器202可以实现投票方案,在所述投票方案中,在计算系统100上的每个xr或虚拟内容应用对当前时间或者不久的将来是否允许较低功率处理进行投票。每个应用可以基于该应用程序是否希望在当前时间或者可配置的时间周期内渲染虚拟内容,来对是否允许较低功率处理进行投票。在一些示例中,每个应用程序可以基于被锚定或配置以供由该应用使用的任何虚拟内容的位置,来确定是否期望渲染虚拟内容。
132.此外,在一些ar用例中,如果计算系统100正在执行头部锁定渲染,则较低功率启动器202确定较低功率处理204可以启动。例如,如果计算系统100仅在渲染头部锁定层,则可以放松跟踪保真度,就好像没有在渲染虚拟内容。因此,较低功率启动器202在这样的头部锁定渲染期间可以可选地允许较低功率处理204。
133.如果较低功率启动器202确定较低功率处理204可以启动,则在步骤608处,较低功率启动器202可以暂停较高功率处理并且切换到较低功率处理。在一些情况下,当切换到较低功率处理时,较高功率处理元件中的一些或所有元件可以关闭电源并且保持关闭电源直到进一步使用为止。
134.在步骤610处,执行较低功率处理的较低功率处理器116可以从较高功率处理元件接收地图数据。较低功率处理器116可以将地图数据用于较低功率处理。在一些示例中,较高功率处理元件可以将整个图传送给较低功率处理器116。在其它示例中,较高功率处理元件可以将地图的一子集(例如,地图的切片、来自地图的特征或地图点的一子集)传送给较低功率处理器116。
135.地图的子集可以包括例如来自地图的状态内特征。在一些情况下,地图的子集还可以包括,被估计为要由较低功率处理器116至少在将来一段时间内(例如,在一定的时间量内)使用或与其相关的状态外特征的一部分。状态外特征是基于计算系统100的姿态、计算系统100的运动(例如,速度、方向或轨迹)、计算系统100与这样的状态外特征的接近度、与这样的状态外特征相对应的对象的移动量等,来被估计为要在将来使用或相关的。
136.在步骤612处,较低功率处理器116可以从传感器130接收传感器数据(例如,230、232)。传感器数据可以由较低功率处理器116使用以执行较低功率处理。此外,传感器数据可以包括例如图像数据(例如,帧)、惯性数据(例如,横滚、俯仰、偏航测量)。在一些情况下,较低功率处理器116可以接收图像数据和惯性数据,较低功率处理器116可以将图像数据和惯性数据用于跟踪。在其它情况下,较低功率处理器116可以仅接收惯性数据,较低功率处理器116可以将惯性数据用于执行仅惯性的跟踪。
137.在一些情况下,由较低功率处理器116用于获取传感器数据的传感器,可以与由较高功率处理元件用于获取传感器数据以进行较高功率处理的传感器相同。在其它情况下,用于获取传感器数据以进行较高功率处理的传感器可以是不同的传感器。例如,用于较低功率处理的传感器可以包括较低功率或低保真度的传感器,比如用于图像数据的始终开启/较低功率/较低分辨率的照相机硬件、以及用于惯性测量的始终开启/较低功率的惯性传感器。
138.在步骤614处,较低功率处理器116可以执行较低功率处理204。在较低功率处理204期间,较低功率处理器116可以跟踪计算系统100的状态(例如,姿态)(例如,经由较低功率状态估计器210)。较低功率处理器116可以使用所接收的传感器数据来跟踪计算系统100的状态。此外,在一些示例中,在较低功率处理期间,较低功率处理器116可以使用从较高功率处理元件获得的地图数据来跟踪所绘制地图的特征。
139.在一些情况下,为了跟踪计算系统100的状态,较低功率处理器116可以使用图像数据和惯性数据。在其它情况下,较低功率处理器116可以使用惯性数据来执行仅惯性的跟踪。例如,如果计算系统100不具有图像传感器或者不具有始终开启或较低功率的相机硬件,则较低功率处理器116可以仅使用惯性数据来跟踪计算系统的状态。为了防止、减少或纠正来自仅惯性的跟踪的漂移,较低功率处理器116(例如,经由较低功率唤醒处理程序212)可以使用较高功率处理和较高功率处理元件,来周期性地(例如,基于唤醒定时器)触发重新定位。
140.在一些示例中,较低功率处理器116可以执行时间滤波和传感器融合,以估计计算系统100的位置/方位和方向。在一些示例中,较低功率处理器116可以通过一个或多个滤波器(例如,一个或多个卡尔曼滤波器、一个或多个扩展的卡尔曼滤波器)来对来自传感器数据(例如,惯性数据230和/或图像数据232)的测量或观察值进行处理,所述一个或多个滤波器估计针对计算系统100的状态(例如,位置、方向、速度、轨迹、加速度、方位、高度等)和误差协方差。例如,较低功率处理器116可以实现一个或多个滤波器、一个或多个运动模型(例如,一个或多个加速度模型、一个或多个角速率模型、一个或多个速度模型)和/或任何其它跟踪算法或模型,来估计计算系统100的状态。
141.当执行较低功率处理时,较低功率处理器116可以估计、跟踪和/或预测计算系统100的姿态。在一些实现方式中,计算系统100的姿态可以是与用户的姿态相关或相关联的。例如,如果用户在携带或佩戴计算系统100,则计算系统100的姿态可以与用户的姿态同步地移动,因此可以是与用户的姿态相关或相关联的。然而,在其它实现方式中,用户相对于计算系统100可能具有不同或单独的姿态。例如,用于渲染虚拟内容的平视显示器(hud)相对于观看hud的用户可能具有不同或单独的姿态。
142.在步骤616处,较低功率处理器116可以确定(经由较低功率唤醒处理程序212)是否从较低功率处理升级到较高功率处理。如果确定结果为“是”,则流程图将转到步骤604。如果确定结果为“否”,则流程图将转到步骤614。在一些示例中,较低功率处理器116可以基于一个或多个唤醒事件或参数,来确定是否暂停较低功率处理并且启动或恢复较高功率处理。例如,较低功率处理器116可以监测和识别用于启动或恢复较高功率处理的预编程的唤醒事件和参数(例如,触发、条件)。在一些情况下,较低功率处理器116可以分析状态信息(例如,姿态信息)以确定是否暂停较低功率处理并且启动或恢复较高功率处理。
143.在一些示例中,唤醒参数可以包括指定姿态参数(例如,一个或多个姿态、一个或多个姿态的范围)和/或虚拟内容参数(例如,一个或多个位置、一个或多个位置范围、一个或多个方向、一个或多个方向范围、一个或多个遮挡物)的一个或多个虚拟内容围栏(例如,428、430、444、446、464、466),以触发较高功率处理。例如,唤醒参数可以是基于一个或多个虚拟内容围栏的,所述虚拟内容围栏被配置为如果计算系统100的姿态匹配或落入在一个或多个虚拟内容围栏中的位置和/或方向参数内,或者如果计算系统100的姿态不匹配或落
入在一个或多个虚拟内容围栏中的位置和/或方向参数内,则触发启动或恢复较高功率处理。
144.在一些示例中,一个或多个虚拟内容围栏可以从在计算系统100上的渲染器(例如,gpu 106)自动获得。例如,在计算系统100上的gpu 106可以知道什么内容(如果有的话)正在被渲染或预期被渲染。gpu 106可以维护经更新的虚拟内容围栏的列表,该列表考虑被配置用于渲染的任何虚拟内容的位置和状态。经更新的虚拟内容围栏的列表可以因此用来确定虚拟内容是否正在被渲染或者在不久的将来可能被渲染,这可以用来触发启动或恢复较高功率处理以渲染这样的虚拟内容或预期这样的虚拟内容被渲染。
145.在其它示例中,一个或多个虚拟内容围栏可以从在计算系统100上的一个或多个虚拟内容应用获得。例如,在计算系统100上的每个虚拟内容应用可以维护经更新的虚拟内容围栏的列表,该列表考虑被配置为由该应用渲染的任何虚拟内容的位置。经更新的虚拟内容围栏列表可以来确定计算系统100是否位于从其虚拟内容是可见的或应当呈现的位置和/或方向上或附近,这可以触发启动或恢复较高功率处理以渲染这样的虚拟内容或或预期这样的虚拟内容被渲染。
146.在一些实现方式中,唤醒参数可以指定:当来自可用于较低功率处理器116的地图数据的可配置百分比的状态内特征从计算系统100的位置和/或方向是不可跟踪的时,应当触发从较低功率处理器204升级到较高功率处理器220的升级。例如,当计算系统100的方向和/或位置改变一定量时,当计算系统100和这样的特征变得太远而无法跟踪时,当障碍物/遮挡物阻止从计算系统100的位置和/或方向跟踪这样的特征时,这样的状态内特征可能变得不可跟踪。
147.在一些实现方式中,如基于传感器数据所确定的,唤醒参数可以指定:当可配置的移动速度门限由计算系统100超过时,应当触发从较低功率处理到较高功率处理的升级。此外,在一些实现方式中,唤醒参数可以指定:当自触发或执行较低功率处理以来已经经过了可配置的时间量时(例如,当较低功率处理已经运行了可配置的时间量时),当自触发或执行较高功率处理以来经过了可配置的时间量时,和/或当自使用渲染器(例如,gpu 106)来渲染内容以来已经经过了可配置的时间量时,应当触发从较低功率处理到较高功率处理的升级。在一些情况下,在可能需要更频繁地更新特征地图的动态环境中,该时间量可以更小。例如,即使计算系统100距离未移动很多或远离被配置用于渲染的任何虚拟内容,也可以在动态环境中降低该时间量以触发更频繁的定位和/或绘制地图操作。
148.在一些情况下,由唤醒参数指定用于触发较高功率处理的时间量可以基于在计算系统100处的电池或热状况来变化。例如,当在计算系统100处的电池功率电平较高时,定时器值可以减小以触发到较高功率处理220的更频繁的升级,这可以提供较高保真度的跟踪、定位和/或绘制地图更新。另一方面,当在计算系统100处的电池功率电平较低时,定时器值可以增加以触发到较高功率处理的较不频繁的升级,以便节省更多功率。
149.通过使用定时器值,较低功率处理器116可以在较低功率处理进入和退出的积极性上提供灵活性。例如,可以调节定时器值以增加或减少较低功率处理和/或较高功率处理的时间量或频率。在一些示例中,进入较高功率处理可以偏向于在宽容的热条件和/或高电池情景下更频繁,而在高热条件和低电池情景下不频繁。
150.在一些实现方式中,唤醒参数可以包括在其处应当发起或恢复较高功率处理以执
行重新定位的特定时间间隔。例如,在一些情况下,较低功率处理可以执行低保真度跟踪,其可能更容易受到由例如漂移、频繁移动、较快的运动导致的跟踪错误和不准确的影响。为了纠正、防止和/或减少这样的跟踪错误和不准确,唤醒参数可以指定应当触发较高功率处理220来执行重新定位的某些时间间隔。一旦重新定位完成,就可以恢复较低功率处理以进行功率节省,除非用于触发较高功率处理的唤醒参数被满足,其中较高功率处理可以继续执行,直到较低功率处理器116确定(例如,经由较低功率启动器202)应当启动较低功率处理为止。
151.图7示出用于实现较低功率处理和较高功率处理的示例方法700。在步骤702处,方法700可以包括:在较低功率处理模式(例如540)下使用集成电路(例如,soc 102)上的较低功率电路元件集合,来在较低功率处理期间跟踪计算设备(例如,100)的位置和方向。在一些示例中,较低功率电路元件集合可以包括片上存储器114、较低功率处理器116和控制系统元件118。在一些情况下,片上存储器114可以是例如片上sram。
152.跟踪可以包括由在集成电路上的较低功率电路元件执行的较低功率跟踪或vio。例如,如先前所描述的,跟踪可以作为较低功率处理204的一部分来执行。而且,在较低功率处理模式和较低功率处理周期期间,集成电路可以使其它组件关闭电源以节省功率。例如,一个或多个较高功率电路元件(例如,104-112)可以在较低功率处理模式期间关闭电源,以减少来自所述一个或多个较高功率电路元件的功率使用和闲置功率。
153.方法700可以包括:在步骤704处,基于触发事件,来暂停在较低功率处理模式下的跟踪,以及在步骤706处,启动较高功率处理模式(例如,510),以在较高功率处理周期期间跟踪计算设备的位置和方向。
154.在一些示例中,触发事件可以包括:确定在与同计算设备相关联的场景相对应的特征地图中的状态中特征是无法由较低功率电路元件集合根据计算设备的当前位置和方向来跟踪的;确定计算设备的旋转和平移运动的量或速度超过门限;和/或确定自启动较低功率处理周期和较低功率处理模式以来已经经过了门限数量的时间。
155.在其它示例中,触发事件可以包括:确定计算设备已经突破了定义一个或多个计算设备位置和的一个或多个计算设备方向的虚拟内容围栏(428、430、456、458、476、478),所述虚拟内容围栏被设置为当计算设备被确定为在一个或多个计算设备位置内时触发较高功率处理模式。在其它示例中,触发事件可以包括:确定一个或多个虚拟内容对象在从计算设备的位置和方向来看的可见范围之外。在一些情况下,确定所述一个或多个虚拟内容对象在可见范围之外可以是基于一个或多个虚拟内容对象的相应位置和/或一个或多个虚拟内容遮挡物位置。
156.在步骤708处,方法700可以包括:在较高功率处理模式下使用在集成电路上的较高功率电路元件集合(例如,104-112)和片外存储器(例如,132),来在较高功率处理周期期间跟踪计算设备的位置和方向。片外存储器可以包括例如片外dram。
157.在较高功率处理模式下的跟踪可以包括:由在集成电路上的较高功率电路元件集合和片外存储器执行的较高功率或较高保真度的跟踪或vio。例如,如先前所描述的,在较高功率处理模式下的跟踪可以包括较高功率处理220。此外,在较高功率处理模式期间,方法700可以使用较高功率电路元件集合来执行定位、绘制地图、渲染以及任何其它操作。
158.在一些示例中,在较低功率处理模下的跟踪可以是基于由较低功率电路元件集合
从一个或多个图像传感器(例如,130a)和一个或多个惯性传感器(例如,130b)接收的传感器数据的,以及在较高功率处理模式下的跟踪可以是基于由较高功率电路元件集合从相同的一个或多个图像传感器和一个或多个惯性传感器和/或一个或多个不同的传感器(例如,一个或多个不同的图像和惯性传感器)接收的传感器数据的。
159.较高功率电路元件集合可以包括一个或多个处理器,比如一个或多个cpu、gpu、dsp、isp。此外,较低功率电路元件集合可以包括具有比在较高功率电路元件集合中的一个或多个处理器低的功率需求的一个或多个处理器。在一些情况下,较高功率电路元件集合还可以包括一个或多个控制系统元件(例如,112),比如一个或多个ppl时钟发生器,以及较低功率电路元件集合还可以包括环形振荡器时钟发生器。
160.在一些情况下,方法700可以包括:由较高功率电路元件集合生成与同计算设备相关联的场景(例如,512)相对应的特征地图,由较高功率电路元件集合在较高功率处理周期期间,将虚拟内容锚定到在特征地图中的一个或多个特征,以及由较高功率电路元件集合在较高功率处理周期期间,在与在特征地图中的一个或多个特征相对应的显示位置上渲染虚拟内容。在一些示例中,虚拟内容可以包括但不限于:虚拟图像、虚拟视频、数字内容、虚拟游戏、交互式虚拟内容、虚拟内容叠加、虚拟场景、虚拟模拟、虚拟对象、虚拟网页等。
161.特征地图可以是由较高功率电路元件集合在较高功率处理周期期间以及当在较高功率处理模式下工作时生成的。在一些示例中,该特征地图可以包括表示在场景内的3d位置中的特征的地图点。此外,在一些情况下,较高功率电路元件集合可以将特征地图(或者其一部分)提供给较低功率电路元件集合。较低功率电路元件集合可以使用特征地图来跟踪所绘制地图的特征。在一些情况下,跟踪计算设备的位置和方向可以包括:跟踪计算设备相对于在特征地图中的一个或多个特征的姿态。
162.在一些情况下,方法700可以包括:由较高功率电路元件集合在较高功率处理周期期间,检测一个或多个较低功率处理触发条件;基于一个或多个较低功率触发条件来暂停在较高功率处理模式下的跟踪;启动较低功率处理模式以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。
163.在一些示例中,一个或多个较低功率处理触发条件可以包括:确定计算设备位于预先绘制地图的区域内;确定计算设备的旋转和平移运动低于门限;确定计算设备在与一个或多个虚拟内容项目相关联的可见范围之外等。
164.在一些示例中,较低功率电路元件可以凭借设计来提供较低功率处理,以及可以在较低功率处理周期期间,利用较低的相机分辨率/帧率、较少的视觉特征和/或较小的视觉特征地图,如本文中所描述的。在一些情况下,本文中所描述的较低功率处理可以使用来自较高功率处理的状态内/状态外所绘制地图特征的一子集,以便将特征置于片上sram(例如,114)而不是可能具有较高功率要求的dram存储器。
165.在一些示例中,本文中的较低功率处理和较高功率处理技术可以实现重大的性能改善。例如,在一些情况下,计算设备可以将~500毫瓦特(mw)用于较高功率的vio,将~15mw用于较低功率的辅助vio(或简单地说是惯性测程法),将~1瓦特(w)用于重新定位,在~50毫秒(ms)内的唤醒/休眠操作期间在每个方向使用~200mw。在一些示例中,针对经由较高功率处理的重新定位的电源使用可以包括:333ms的较低功率处理,加上用于唤醒事件
的50ms,加上用于重新定位的100ms,再加上50ms的休眠,总共约为235mw的平均功率,这低于在仅较高功率处理的实现方式中的~500mw的功率使用。
166.在一些示例中,流程图600和方法700可以由一个或多个计算设备或装置来执行。在一个说明性示例中,流程图600和方法700可以由在图1中示出的计算系统100和/或具有在图8中示出的计算设备架构800的一个或多个计算设备来执行。在一些情况下,这样的计算设备或装置可以包括处理器、微处理器、微计算机、或者被配置为执行流程图600和方法700的步骤的设备的其它组件。在一些示例中,这样的计算设备或装置可以包括被配置为收集传感器测量的一个或多个传感器。例如,计算设备可以包括头戴式显示器、移动设备或者其它适当的设备。在一些示例中,这样的计算设备或装置可以包括被配置为捕获一个或多个图像或视频的照相机。在一些情况下,这样的计算设备可以包括用于显示图像的显示器。在一些示例中,一个或多个传感器和/或照相机是与计算设备分开的,在这种情况下,计算设备接收传感器测量。这样的计算设备可以进一步包括被配置为传送数据的网络接口。
167.流程图600和方法700示出为逻辑流程图,逻辑流程图的操作表示可以以硬件、计算机指令或其组合来实现的操作序列。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当所述计算机可执行指令由一个或多个处理器执行时,执行所叙述的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述这些操作的顺序不旨在被解释为限制,以及所描述的操作中的任何数量的操作可以以任何顺序和/或并行地组合以实现过程。
168.另外,流程图600和方法700可以在被配置具有可执行指令的一个或多个计算机系统的控制下执行,以及可以实现为在一个或多个处理器上共同执行的代码、通过硬件执行的代码或者其组合(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上文所指出的,代码可以存储在计算机可读或机器可读存储介质上,例如,以包括可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读或机器可读存储介质可以是非暂时性的。
169.图8示出可以实现本文中所描述的各种技术的示例计算设备的示例计算设备架构800。例如,计算设备架构800可以实现在图1中所示出的计算系统100的至少一些部分,以及执行如本文中所描述的跟踪、定位、绘制地图和渲染操作。计算设备架构800的组件示出为,使用连接805(比如总线)彼此电通信。示例计算设备架构800包括处理单元(cpu或处理器)810和计算设备连接805,所述计算设备连接805将包括计算设备存储器815(比如只读存储器(rom)820和随机存取存储器(ram)825)的各种计算设备组件耦合到处理器810。
170.计算设备架构800可以包括与处理器810直接连接、极接近处理器810与或作为处理器810的一部分而集成的高速存储器的高速缓存。计算设备架构800可以将数据从存储器815和/或存储设备830复制到高速缓存812以供处理器810快速存取。以这种方式,高速缓存可以提供避免处理器810在等待数据时延迟的性能提升。这些和其它模块可以控制或者被配置为控制处理器810执行各种动作。其它计算设备存储器815也可以加以使用。存储器815可以包括具有不同性能特征的多种不同类型的存储器。处理器810可以包括任何通用处理器和被配置为控制处理器810的硬件或软件服务(例如,存储在存储设备830中的服务1 832、服务2 834和服务3 836)以及专用处理器(其中软件指令合并到处理器设计中)。处理器810可以是包括多个核心或处理器、总线、存储器控制器、高速缓存等的自含式系统。多核
处理器可以是对称的或非对称的。
171.为了使用户能够与计算设备架构800交互,输入设备845可以表示任意数量的输入装置,比如用于语音的麦克风、用于手势或图形输入的触摸敏感屏幕、键盘、鼠标、运动输入、语音等。输出设备835也可以是本领域普通技术人员已知的多中输出装置中的一种或多种输出设备,比如显示器、投影仪、电视、扬声器设备。在一些实例中,多模式计算设备可以使用户能够提供多种类型的输入,以与计算设备架构800通信。通信接口840通常可以控制和管理用户输入和计算设备输出。不存在对在任何特定硬件布置上的操作的限制,以及因此随着改进的硬件或固件布置得到开发,本文的基本特征可以轻松地代替为改进的硬件或固件装置。
172.存储设备830是非易失性存储器,以及可以是可以存储可由计算机存取的数据的硬盘或其它类型的计算机可读介质,比如磁带盒、闪存卡、固态存储设备、数字通用磁盘、盒式磁带、随机存取存储器(ram)825、只读存储器(rom)820以及其混合。存储设备830可以包括用于控制处理器810的服务832、834、836。可以预期其它硬件或软件模块。存储设备830可以连接到计算设备连接805。在一个方面,执行特定功能的硬件模块可以包括软件组件以执行该功能,所述软件组件存储在与必要的硬件组件(比如处理器810、连接805、输出设备835等等)相连接的计算机可读介质中。
173.术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光存储设备以及能够存储、包含或携带指令和/或数据的各种其它介质。计算机可读介质可以包括在其中能够存储数据的非暂时性介质,以及不包括无线地传播或经由有线连接传播的载波和/或临时性电子信号。非暂时性介质的示例可以包括但不限于磁盘或磁带、光学存储介质(比如压缩光盘(cd)或数字通用光盘(dvd))、闪存、存储器或存储设备。计算机可读介质可以具有其上存储的代码和/或机器可执行指令,所述代码和/或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容,来耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由包括存储器共享、消息传递、令牌传递、网络传输等的任何适当方式,来传递、转发或传输。
174.在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆信号或无线信号。但是,当提及时,非暂时性计算机可读存储介质明确地排除比如能量、载波信号、电磁波和信号本身之类的介质。
175.在上文描述中提供具体细节,以提供对本文中提供的实施例和示例的透彻理解。但是,本领域普通技术人员将理解,实施例可以在没有这些具体细节的情况下实践。为了清楚解释起见,在一些实例中,本技术可以呈现为包括单独的功能块,所述单独的功能块包括设备、设备组件、以软件体现的在方法中的步骤或例程、或者硬件和软件的组合。除了在图中所示出的和/或在本文中所描述的那些组件以外,还可以使用额外的组件。例如,电路、系统、网络、过程和其它组件可以示出为以框图的形式的组件,以便不在不必要的细节上使实施例晦涩难懂。在其它实例中,公知的电路、过程、算法、结构和技术可以在没有不必要的细节的情况下示出,以便避免使实施例晦涩难懂。
176.单独的实施例在上文描述为过程或方法,所述过程或方法描绘为流程图、流程示意图、数据流程示意图、结构示意图或框图。虽然流程图可以将操作描述为顺序的过程,但
是许多操作可以并行或同时地执行。另外,操作的顺序可以重新安排。过程在其操作完成时终止,但可以具有未包括在附图中的其它步骤。过程可以对应于方法、函数、过程、子例程、子程序等。当过程对应于函数时,其终止可以对应于函数到调用函数或主函数的返回。
177.根据上文所描述的示例的过程和方法,可以使用存储在计算机可读介质中或者以其他方式从计算机可读介质中可获得的计算机可执行指令来实现。这样的指令可以包括例如引起或配置通用计算机、专用计算机或处理设备以执行特定功能或功能组的指令和数据。所使用的计算机资源的一些部分可以是通过网络访问的。计算机可执行指令可以是例如二进制、中间格式指令,比如汇编语言、固件、源代码。可以用于存储指令、所使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、拥有非易失性存储器的usb设备、网络存储设备等等。
178.根据这些公开内容来实现过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合,以及可以采用多种形式因素中的任何形式因素。当以软件、固件、中间件或微代码来实现时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在计算机可读介质或机器可读介质中。处理器可以执行必要的任务。形式因素的典型示例包括膝上型计算机、智能手机、移动电话、平板设备或者其它小型形式因素的个人计算机、个人数字助理、机架安装设备、独立设备等。本文中所描述的功能还可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能还可以在单个设备中执行的不同芯片或不同过程之间的电路板上实现。
179.指令、用于传送这样的指令的介质、用于执行它们的计算资源、以及用于支持这样的计算资源的其它结构,是用于提供本公开内容中描述的功能的示例单元。
180.在上文描述中,本技术的各方面是其特定实施例来描述的,但是本领域普通技术人员将认识到,本技术并不受此限制。因此,虽然已经在本文中详细描述了本技术的说明性的实施例,但是要理解的是,可以以其它方式不同地体现和采用发明构思,以及所附权利要求旨在被解释为包括这样的变型,除非受到现有技术的限制。上述申请的各种特征和方面可以单独地或联合地使用。此外,在不脱离本说明书的更广泛的精神和保护范围的情况下,可以在本文所述之外的任何数量的环境和应用中使用实施例。因此,说明书和附图应被认为是说明性的而不是限制性的。为了说明起见,方法是以特定顺序描述的。应当理解的是,在替代实施例中,方法可以以与所描述的顺序不同的顺序来执行。
181.本领域普通技术人员将理解,本文中使用的小于(“《”)和大于(“》”)符号或术语可以分别利用小于或等于(“≤”)和大于或等于(“≥”)符号来代替,而不脱离本说明书的范围。
182.在将组件描述为“被配置为”执行某些操作的情况下,这样的配置可以例如由用于执行该操作的设计电子电路或其它硬件、由用于执行该操作的可编程电子电路(例如,微处理器或其它适当的电子电路)、或其任意组合来完成。
183.短语“耦合到”指的是直接或间接地物理连接到另一个组件的任何组件、和/或直接或间接地与另一个组件相通信的任何组件(例如,通过有线或无线连接和/或其它适当的通信接口来连接到另一个组件)。
184.引用集合中的“至少一项”或集合中的“一项或一项”的声明语言或其它语言,指示集合中的一个成员或集合中的多个成员(以任何组合)满足要求。例如,引用“a和b中的至少
一项”的声明语言表示a、b、或a和b。在另一个示例中,引用“a和b中的一项或多项”的声明语言表示a、b、或a和b。在另一个示例中,引用“a、b和c中的一项或多项”的声明语言表示a、b、c、a和b、a和c、b和c、或者全部的a、b和c。
185.结合本文中所公开示例来描述的各种说明性的逻辑框、模块、电路和算法步骤,可以实现成电子硬件、计算机软件、固件或者其组合。为了清楚地表示硬件和软件之间的这样的可交换性,各种说明性的部件、框、模块、电路和步骤已经在上文按照其功能进行了总体描述。这样的功能是实现为硬件还是软件,取决于特定应用和施加在整个系统上的设计约束条件。熟练的技术人员可以针对每个特定应用以变通的方式实现所描述的功能,但是这样的实现决策不应解释为背离本公开内容的保护范围。
186.本文中所描述的技术还可以以电子硬件、计算机软件、固件或者其任何组合来实现。这样的技术可以在多种设备中的任何设备中实现,所述设备比如通用计算机、无线通信设备手持装置或者具有多种用途(其包括在无线通信设备手持装置和其它设备中的应用)的集成电路设备等。描述为模块或组件的任何特征可以在集成逻辑设备中一起实现,也可以分别作为分立的但可互操作的逻辑设备来实现。如果以软件实现,则这些技术可以至少部分地通过计算机可读数据存储介质来实现,所述计算机可读数据存储介质包括程序代码,所述程序代码包括在被执行时执行上文描述的方法、算法和/或操作中的一个或多个的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,该计算机程序产品可以包括封装材料。计算机可读介质可以包括存储器或数据存储介质,比如随机存取存储器(比如同步动态随机存取存储器(sdram))、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存、磁或光数据存储介质等。另外地或替代地,技术可以至少部分地通过计算机可读通信介质(比如,传播的信号或波)来实现,所述计算机可读通信介质以指令或数据结构的形式携带或传递程序代码以及可以由计算机访问、读取和/或执行。
187.程序代码可以由处理器执行,所述处理器可以包括一个或多个处理器,比如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或者其它等效的集成逻辑电路或分立逻辑电路。这样的处理器可以被配置为执行本公开内容中描述的任何技术。通用处理器可以是微处理器,但是在替代方案中,处理器也可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,比如dsp和微处理器的组合、多个微处理器、dsp核心与一个或多个微处理器的结合、或者任何其它这样的配置。因此,如本文中所使用的术语“处理器”可以指的是前述结构中的任何结构、前述结构的任何组合、或者适合于本文中所描述的技术的实现的任何其它结构或装置。
188.本公开内容的声明包括:
189.声明1:一种方法,其包括:在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在较低功率处理周期期间跟踪计算设备的位置和方向;启动较高功率处理模式,以在较高功率处理周期期间跟踪计算设备的位置和方向;以及在较高功率处理模式下使用在集成电路上的较高功率电路元件集合,来在较高功率处理周期期间跟踪计算设备的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位
置和方向。
190.声明2:根据声明1的方法,其中,较高功率电路元件集合包括第一处理器以及较低功率电路元件集合包括第二处理器,第二处理器具有比第一处理器低的功率需求。
191.声明3:根据声明2的方法,其中,第一处理器包括中央处理单元(cpu),以及第二处理器包括数字信号处理器(dsp)。
192.声明4:根据声明1至声明3中的任何声明的方法,其中,较高功率电路元件集合中的至少一部分元件在较低功率处理周期期间是关闭电源的。
193.声明5:根据声明1至声明4中的任何声明的方法,其中,集成电路包括片上系统,其中,元件包括动态随机存取存储器(dram)。
194.声明6:根据声明5的方法,其中,dram包括片外dram,其中,较低功率电路元件集合包括静态随机存取存储器(sram),以及其中,较低功率电路元件集合包括与较高功率电路元件集合分开的较低功率处理区域。
195.声明7:根据声明1至声明6中的任何声明的方法,其中,较高功率电路元件集合包括以下各项中的至少一项:中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、图像信号处理器(isp)和锁相环(pll)时钟发生器中的至少一项,以及其中,较低功率电路元件集合包括环形振荡器时钟发生器和处理器核心中的至少一项。
196.声明8:根据声明1至声明7中的任何声明的方法,其中,在较低功率处理模式下的跟踪是基于由较低功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的,以及其中,在较高功率处理模式下的跟踪是基于由较高功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的。
197.声明9:根据声明1至声明7中的任何声明的方法,其中,在较低功率处理模式下的跟踪是基于由较低功率电路元件集合从一个或多个惯性传感器接收的传感器数据的,以及其中,在较高功率处理模式下的跟踪是基于较高功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的。
198.声明10:根据声明1至声明9中的任何声明的方法,还包括:由较高功率电路元件集合生成与同计算设备相关联的场景相对应的特征地图,特征地图是由较高功率电路元件集合在较高功率处理周期期间以及在较高功率处理模式下工作时生成的,其中,特征地图包括表示在场景内的三维位置处的特征的多个地图点;以及由较高功率电路元件集合在较高功率处理周期期间,将在与在特征地图中的一个或多个特征相对应的显示位置上的虚拟内容进行渲染,虚拟内容是锚定到在特征地图中的一个或多个特征上的。
199.声明11:根据声明10的方法,还包括:检测到与较高功率电路元件集合相关联的内容渲染器在一数量的时间内还未渲染虚拟内容或额外的虚拟内容;响应于检测到内容渲染器在所述数量的时间内还未渲染虚拟内容或额外的虚拟内容,暂停在较高功率处理模式下的跟踪;启动较低功率处理模式以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。
200.声明12:根据声明10的方法,还包括:从在计算设备上的一个或多个应用接收关于一个或多个应用在至少一时间周期内不期望额外的虚拟内容被渲染的指示;基于关于一个或多个应用在至少时间周期内不期望额外的虚拟内容被渲染的指示,暂停在较高功率处理
模式下的跟踪;启动较低功率处理模式,以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。
201.声明13:根据声明10的方法,还包括将特征地图提供给较低功率电路元件集合。
202.声明14:根据声明13的方法,其中,跟踪计算设备的位置和方向包括:跟踪计算设备相对于在特征地图中的一个或多个特征的姿态,以及其中,虚拟内容包括以下各项中的至少一项:虚拟图像、虚拟视频、数字内容、一个或多个虚拟游戏、交互式虚拟内容、虚拟内容叠加、虚拟场景、虚拟模拟、虚拟对象和虚拟网页。
203.声明15:根据声明1至声明14中的任何声明的方法,还包括:由较高功率电路元件集合在较高功率处理周期期间,检测一个或多个较低功率处理触发条件;基于一个或多个较低功率处理触发条件,来暂停在较高功率处理模式下的跟踪;启动较低功率处理模式,以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下使用在集成电路上的较低功率电路元件集合,来在第二较低功率处理周期期间跟踪计算设备的位置和方向。
204.声明16:根据声明15的方法,其中,一个或多个较低功率处理触发条件包括以下各项中的至少一项:确定计算设备位于预先绘制地图的区域内、确定计算设备的旋转和平移运动低于门限、以及确定计算设备在与一个或多个虚拟内容项目相关联的可见范围之外。
205.声明17:根据声明1的方法,还包括:基于触发事件,来暂停在较低功率处理模式下的跟踪,其中,触发事件包括以下各项中的至少一项:确定在与同计算设备相关联的场景相对应的特征地图中的状态内特征是不可由较低功率电路元件集合根据计算设备的当前位置和方向来跟踪的、确定计算设备的旋转和平移运动的数量或速度超过门限、以及确定自启动较低功率处理周期和较低功率处理模式以来已经通过门限数量的时间。
206.声明18:根据声明1至声明17中的任何声明的方法,还包括:基于触发事件,来暂停在较低功率处理模式下的跟踪,其中,触发事件包括:确定计算设备已经突破定义一个或多个计算设备位置和计算设备方向的范围的虚拟内容围栏,虚拟内容围栏被设置为当计算设备被确定为在一个或多个计算设备位置内时触发较高功率处理模式。
207.声明19:根据声明1至声明18中的任何声明的方法,还包括:基于触发事件,暂停在较低功率处理模式下的跟踪,其中,触发事件包括:确定一个或多个虚拟内容对象在从计算设备的当前位置和方向来看的可见范围之外,其中,确定一个或多个虚拟内容对象在可见范围之外是基于一个或多个虚拟内容对象的一个或多个相应位置和虚拟内容遮挡物位置集合的。
208.声明20:一种设备,其包括:集成电路,其包括较低功率电路元件集合以及较高功率电路元件集合,较低功率电路元件集合被配置为:在较低功率处理模式下,在较低功率处理周期期间跟踪装置的位置和方向;以及启动较高功率处理模式,以在较高功率处理周期期间跟踪装置的位置和方向;较高功率电路元件集合被配置为:在较高功率处理模式下,在较高功率处理周期期间跟踪装置的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位置和方向。
209.声明21:根据声明20的装置,其中,较高功率电路元件集合包括第一处理器以及较
低功率电路元件集合包括第二处理器,第二处理器具有比第一处理器低的功率需求。
210.声明22:根据声明21的装置,其中,第一处理器包括中央处理单元(cpu),以及第二处理器包括数字信号处理器(dsp)。
211.声明23:根据声明20至声明22中任何声明的装置,其中,较高功率电路元件集合中的至少一部分元件在较低功率处理周期期间是关闭电源的。
212.声明24:根据声明20至声明23中任何声明的装置,其中,集成电路包括片上系统,其中,元件包括动态随机存取存储器(dram)。
213.声明25:根据声明24的装置,其中,dram包括片外dram,其中,较低功率电路元件集合包括静态随机存取存储器(sram)。
214.声明26:根据声明20至声明25中任何声明的装置,其中,较高功率电路元件集合包括以下各项中的至少一项:中央处理单元(cpu)、图形处理单元(gpu)、数字信号处理器(dsp)、图像信号处理器(isp)和锁相环(pll)时钟发生器中的至少一项,以及其中,较低功率电路元件集合包括环形振荡器时钟发生器和处理器核心中的至少一项。
215.声明27:根据声明20至声明26中任何声明的装置,其中,在较低功率处理模式下的跟踪是基于由较低功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的,以及其中,在较高功率处理模式下的跟踪是基于由较高功率电路元件集合从一个或多个惯性传感器和一个或多个图像传感器接收的传感器数据的。
216.声明28:根据声明20至声明27中任何声明的装置,其中,较高功率电路元件集合被配置为:生成与同装置相关联的场景相对应的特征地图,特征地图是由较高功率电路元件集合在较高功率处理周期期间以及在较高功率处理模式下工作时生成的,其中,特征地图包括表示在场景内的三维位置处的特征的多个地图点;以及在较高功率处理周期期间,将在与在特征地图中的一个或多个特征相对应的显示位置上的虚拟内容进行渲染,虚拟内容是锚定到在特征地图中的一个或多个特征上的。
217.声明29:根据声明28的装置,其中,较高功率电路元件集合被配置为将特征地图提供给较低功率电路元件集合。
218.声明30:根据声明28的装置,其中,较低功率电路元件集合被配置为:检测到与较高功率电路元件集合相关联的内容渲染器在一数量的时间内还未渲染虚拟内容或额外的虚拟内容;响应于检测到内容渲染器在所述数量的时间内还未渲染虚拟内容或额外的虚拟内容,暂停在较高功率处理模式下的跟踪;启动较低功率处理模式以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下在第二较低功率处理周期期间跟踪计算设备的位置和方向。
219.声明31:根据声明28的装置,其中,较低功率电路元件集合被配置为:从在计算设备上的一个或多个应用接收关于一个或多个应用在至少一时间周期内不期望额外的虚拟内容被渲染的指示;基于关于一个或多个应用在至少时间周期内不期望额外的虚拟内容被渲染的指示,暂停在较高功率处理模式下的跟踪;启动较低功率处理模式,以在第二较低功率处理周期期间跟踪计算设备的位置和方向;以及在较低功率处理模式下,在第二较低功率处理周期期间跟踪计算设备的位置和方向。
220.声明32:根据声明28的装置,跟踪装置的位置和方向包括:跟踪装置相对于在特征地图中的一个或多个特征的姿态,以及其中,虚拟内容包括以下各项中的至少一项:虚拟图
像、虚拟视频、数字内容、一个或多个虚拟游戏、交互式虚拟内容、虚拟内容叠加、虚拟场景、虚拟模拟、虚拟对象和虚拟网页。
221.声明32:根据声明20至声明32中的任何声明的装置,其中,较高功率电路元件集合被配置为:在较高功率处理周期期间,检测一个或多个较低功率处理触发条件;基于一个或多个较低功率处理触发条件,来暂停在较高功率处理模式下的跟踪;以及启动较低功率处理模式以在第二较低功率处理周期期间跟踪计算设备的位置和方向。
222.声明34:根据声明33的装置,其中,较低功率电路元件集合被配置为:在较低功率处理模式下,在第二较低功率处理周期期间跟踪装置的位置和方向,其中,一个或多个较低功率处理触发条件包括以下各项中的至少一项:确定装置位于预先绘制地图的区域内、确定装置的旋转和平移运动低于门限、以及确定装置在与一个或多个虚拟内容项目相关联的可见范围之外。
223.声明35:根据声明20至声明34中的任何声明的装置,其中,较低功率电路元件集合被配置为:基于触发事件,暂停在较低功率处理模式下的跟踪,其中,触发事件包括以下各项中的至少一项:确定在与场景相对应的特征地图中的状态内特征是不可由较低功率电路元件集合根据计算设备的当前位置和方向来跟踪的、确定装置的旋转和平移运动的数量或速度超过门限、确定自启动较低功率处理周期和较低功率处理模式以来已经通过门限数量的时间、以及确定装置已经突破定义装置方向的范围的虚拟内容围栏,虚拟内容围栏被设置为当装置被确定为在一个或多个预定义装置位置内时触发较高功率处理模式。
224.声明36:根据声明20至声明35中的任何声明的装置,包括头戴式设备。
225.声明37:至少一种非暂时性计算机可读介质,其包括:第一指令集,其当由在集成电路上的较低功率电路元件集合执行时使较低功率电路元件集合进行以下操作:在较低功率处理模式下在较低功率处理周期期间跟踪计算设备的位置和方向;启动较高功率处理模式,以在较高功率处理周期期间跟踪计算设备的位置和方向;以及第二指令集,其当由在集成电路上的较高功率电路元件集合执行时使较高功率电路元件集合进行以下操作:在较高功率处理模式下,在较高功率处理周期期间跟踪计算设备的位置和方向,其中,较高功率电路元件集合使用未包括在较低功率电路元件集合中或者未由较低功率电路元件集合在较低功率处理模式期间使用的元件,来跟踪计算设备的位置和方向。
226.声明38:根据声明30的至少一种非暂时性计算机可读介质,还包括有效地执行根据声明1至声明19中的任何声明的方法的指令。
227.声明32:一种装置,其包括用于执行根据声明1至声明19中的任何声明的方法的单元。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献