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

用于进程数据共享的方法和设备

文献发布时间:2023-06-19 10:32:14


用于进程数据共享的方法和设备

技术领域

本公开整体涉及数据共享,并且具体涉及使用确定性拉取/获取模型提供低延迟数据共享的系统、方法和设备。

背景技术

物理环境是指人们在没有电子系统帮助的情况下能够感测和/或交互的物理世界。物理环境诸如物理公园包括物理物品,诸如物理树木、物理建筑物和物理人。人们能够诸如通过视觉、触觉、听觉、味觉和嗅觉来直接感测物理环境和/或与物理环境交互。

相反,计算机生成现实(CGR)环境是指人们经由电子系统感知和/或交互的完全或部分模拟的环境。在CGR中,跟踪人的物理运动的一个子集或其表示,并且作为响应,以符合至少一个物理定律的方式调节在CGR环境中模拟的一个或多个虚拟对象的一个或多个特征。例如,CGR系统可以检测人的头部转动,并且作为响应,以与此类视图和声音在物理环境中变化的方式类似的方式调节呈现给人的图形内容和声场。在一些情况下(例如,出于可达性原因),对CGR环境中虚拟对象的特征的调节可以响应于物理运动的表示(例如,声音命令)来进行。

人可以利用其感觉中的任一者来感测CGR对象和/或与CGR对象交互,包括视觉、听觉、触觉、味觉和嗅觉。例如,人可以感测音频对象和/或与音频对象交互,该音频对象创建3D或空间音频环境,该3D或空间音频环境提供3D空间中点音频源的感知。又如,音频对象可以使能音频透明度,该音频透明度在有或者没有计算机生成的音频的情况下选择性地引入来自物理环境的环境声音。在某些CGR环境中,人可以感测和/或只与音频对象交互。

CGR的示例包括虚拟现实和混合现实。

虚拟现实(VR)环境是指被设计成对于一个或多个感觉完全基于计算机生成的感官输入的模拟环境。VR环境包括人可以感测和/或交互的多个虚拟对象。例如,树木、建筑物和代表人的化身的计算机生成的图像是虚拟对象的示例。人可以通过在计算机生成的环境内人的存在的模拟、和/或通过在计算机生成的环境内人的物理移动的一个子集的模拟来感测和/或与VR环境中的虚拟对象交互。

与被设计成完全基于计算机生成的感官输入的VR环境相比,混合现实(MR)环境是指被设计成除了包括计算机生成的感官输入(例如,虚拟对象)之外还引入来自物理环境的感官输入或其表示的模拟环境。在虚拟连续体上,混合现实环境是完全物理环境作为一端和虚拟现实环境作为另一端之间的任何状况,但不包括这两端。

在一些MR环境中,计算机生成的感官输入可以对来自物理环境的感官输入的变化进行响应。另外,用于呈现MR环境的一些电子系统可以跟踪相对于物理环境的位置和/或取向,以使虚拟对象能够与真实对象(即,来自物理环境的物理物品或其表示)交互。例如,系统可以导致移动使得虚拟树木相对于物理地面看起来是静止的。

混合现实的示例包括增强现实和增强虚拟。

增强现实(AR)环境是指其中一个或多个虚拟对象叠加在物理环境或其表示之上的模拟环境。例如,用于呈现AR环境的电子系统可具有透明或半透明显示器,人可以透过该显示器直接查看物理环境。该系统可以被配置为在透明或半透明显示器上呈现虚拟对象,使得人利用该系统感知叠加在物理环境之上的虚拟对象。另选地,系统可以具有不透明显示器和一个或多个成像传感器,该成像传感器捕获物理环境的图像或视频,这些图像或视频是物理环境的表示。系统将图像或视频与虚拟对象组合,并在不透明显示器上呈现组合物。人利用系统经由物理环境的图像或视频而间接地查看物理环境,并且感知叠加在物理环境之上的虚拟对象。如本文所用,在不透明显示器上显示的物理环境的视频被称为“透传视频”,意味着系统使用一个或多个图像传感器捕获物理环境的图像,并且在不透明显示器上呈现AR环境时使用那些图像。进一步另选地,系统可以具有投影系统,该投影系统将虚拟对象投射到物理环境中,例如作为全息图或者在物理表面上,使得人利用该系统感知叠加在物理环境之上的虚拟对象。

增强现实环境也是指其中物理环境的表示被计算机生成的感官信息进行转换的模拟环境。例如,在提供透传视频中,系统可以对一个或多个传感器图像进行转换以施加与成像传感器所捕获的视角不同的选择视角(例如,视点)。又如,物理环境的表示可以通过图形地修改(例如,放大)其部分而进行转换,使得经修改部分可以是原始捕获图像的代表性的但不是真实的版本。再如,物理环境的表示可以通过以图形方式消除其部分或将其部分进行模糊处理而进行转换。

增强虚拟(AV)环境是指其中虚拟或计算机生成的环境结合来自物理环境的一个或多个感官输入的模拟环境。感官输入可以是物理环境的一个或多个特性的表示。例如,AV公园可以具有虚拟树木和虚拟建筑物,但人的脸部是从对物理人拍摄的图像逼真再现的。又如,虚拟对象可以采用一个或多个成像传感器所成像的物理物品的形状或颜色。再如,虚拟对象可以采用符合太阳在物理环境中的定位的阴影。

有许多不同类型的电子系统使人能够感测和/或与各种CGR环境交互。示例包括智能电话、平板电脑、台式计算机/膝上型计算机、头戴式系统、基于投影的系统、抬头显示器(HUD)、集成有显示能力的车辆挡风玻璃、集成有显示能力的窗户、被形成为被设计用于放置在人的眼睛上的透镜的显示器(例如,类似于隐形眼镜)、耳机/听筒、扬声器阵列、输入系统(例如,具有或不具有触觉反馈的可穿戴或手持控制器,以及/或者具有手部跟踪和/或其他身体姿态估计能力的相机)。

头戴式系统可以具有一个或多个扬声器和集成的不透明显示器。另选地,头戴式系统可以是被配置为接受外部不透明显示器(例如,智能电话)的头戴式壳体(HME)。头戴式系统可以结合用于捕获物理环境的图像或视频的一个或多个成像传感器、和/或用于捕获物理环境的音频的一个或多个麦克风。头戴式系统可以具有透明或半透明显示器,而不是不透明显示器。透明或半透明显示器可以具有媒介,代表图像的光通过该媒介被引导到人的眼睛。显示器可以利用数字光投影、OLED、LED、uLED、硅基液晶、激光扫描光源或这些技术的任意组合。媒介可以是光学波导、全息图媒介、光学组合器、光学反射器、或它们的任意组合。在一个具体实施中,透明或半透明显示器可被配置为选择性地变得不透明。基于投影的系统可以采用将图形图像投影到人的视网膜上的视网膜投影技术。投影系统也可以被配置为将虚拟对象投影到物理环境中,例如作为全息图或在物理表面上。

CGR设备上可用的内容正变得更加身临其境、图形更加密集并且普遍适用于日常生活。因此,CGR设备中的硬件不断发展以适应资源密集的进程,以便与CGR内容保持一致。然而,在多个进程同时争用资源的情况下,延迟和大量中断自然地产生瓶颈效应。显见的延迟问题可能不利地影响用户的体验。

附图说明

因此,本公开可被本领域的普通技术人员理解,更详细的描述可参考一些例示性具体实施的方面,其中一些具体实施在附图中示出。

图1是根据一些具体实施的示例性操作环境的框图。

图2是示出根据一些具体实施的用于CGR数据共享的中断模型的框图。

图3是根据一些具体实施的用于进程之间的CGR数据共享的示例性确定性拉取/获取模型的框图。

图4是示出根据一些具体实施的基于确定性拉取/获取模型的示例性CGR数据共享过程的框图。

图5A是根据一些具体实施的用于拉取/获取模型的控制器的示例的框图。

图5B是示出根据一些具体实施的示例性控制器管理的数据布置和进程访问调度的框图。

图6是根据一些具体实施的示例性CGR设备的框图。

图7A示出了根据一些具体实施的CGR流水线。

图7B示出了根据一些具体实施的实现CGR流水线的分布式系统。

图8是根据一些具体实施的访问进程之间的共享数据的方法的流程图表示。

根据通常的做法,附图中示出的各种特征部可能未按比例绘制。因此,为了清楚起见,可以任意地扩展或减小各种特征部的尺寸。另外,一些附图可能未描绘给定的系统、方法或设备的所有部件。最后,在整个说明书和附图中,类似的附图标号可用于表示类似的特征部。

发明内容

本文所公开的各种具体实施包括用于访问进程之间的共享数据的设备、系统和方法。在各种具体实施中,该方法在包括非暂态存储器、图像采集接口和一个或多个处理器的设备上执行。该方法包括获得由图像采集接口采集的与视场相关联的图像数据。该方法还包括至少部分地基于惯性测量单元(IMU)信息来确定姿态数据,其中该姿态数据对应于由图像采集接口测量的用户的当前姿态。该方法还包括至少部分地基于通过图像采集接口获得的眼动跟踪信息来确定视线估计。该方法还包括至少部分地基于能够与该图像采集接口通信的多个进程的多个特性来确定该图像数据、该姿态数据和该视线估计的布置。该方法还包括至少部分地基于下述中的至少一者来确定多个进程的访问调度:该图像数据、该姿态数据和该视线估计的布置;该多个进程的多个特性;以及与设备相关联的硬件定时参数。

根据一些具体实施,一种设备包括一个或多个处理器、非暂态存储器以及一个或多个程序;该一个或多个程序被存储在非暂态存储器中并且被配置为由一个或多个处理器执行,并且该一个或多个程序包括用于执行或使得执行本文所述方法中的任一种的指令。根据一些具体实施,一种非暂态计算机可读存储介质中存储有指令,这些指令在由设备的一个或多个处理器执行时使该设备执行或使执行本文所述方法中的任一种。根据一些具体实施,一种设备包括:一个或多个处理器、非暂态存储器以及用于执行或使执行本文所述方法中的任一种的装置。

具体实施方式

描述了许多细节以便提供对附图中所示的示例具体实施的透彻理解。然而,附图仅示出了本公开的一些示例方面,因此不应被视为限制。本领域的普通技术人员将理解,其他有效方面和/或变体不包括本文所述的所有具体细节。此外,没有详尽地描述众所周知的系统、方法、部件、设备和电路,以免模糊本文所述的示例性具体实施的更多相关方面。

如上所述,CGR设备上的遵循资源中断模型的进程常常同时争用资源。因此,瓶颈效应可导致对用户体验产生不利影响的延迟。本文所公开的各种具体实施朝确定性拉取/获取模型移动远离中断模型。确定允许进程在设定时间获取数据的访问调度。基于已知的(例如,确定性)信息诸如系统参数和用户姿态信息来确定访问调度。因此,本文所述的各种具体实施解决了上述缺陷,特别是涉及数据访问的那些缺陷。因此,占用较少的存储器和处理资源。由此可见,由于当数据通过CGR显示流水线时延迟减小,因此可改善总体用户体验。

图1是根据一些具体实施的示例性操作环境100的框图。尽管示出了相关特征,但本领域的普通技术人员将从本公开中认识到,为简洁起见并且为了不模糊本文所公开的示例性具体实施的更多相关方面,未示出各种其他特征。为此,作为非限制性示例,操作环境100包括控制器102和CGR设备104。

在一些具体实施中,CGR设备104对应于平板电脑或移动电话。在各种具体实施中,CGR设备104对应于头戴式系统,诸如其中其中插入有平板电脑或移动电话的头戴式设备(HMD)或头戴式壳体(HME)。在一些具体实施中,CGR设备104被配置为向用户呈现CGR内容。在一些具体实施中,CGR设备104包括软件、固件和/或硬件的合适组合。

根据一些具体实施,在用户虚拟地和/或物理地存在于场景106内时,CGR设备104经由显示器122向用户呈现CGR内容,该场景包括位于CGR设备104的视场111内的桌子107。在一些具体实施中,CGR设备104被配置为呈现虚拟内容(例如,虚拟圆柱体109)并实现在显示器122上对场景106(例如,包括桌子107的表示117)的视频透传。在一些具体实施中,CGR设备104被配置为呈现虚拟内容以及实现场景106的光学透视。

在一些具体实施中,用户将CGR设备104保持在他/她的手中。在一些具体实施中,用户将CGR设备104佩戴在他/她的头上。因此,CGR设备104包括被提供用于显示CGR内容的一个或多个CGR显示器。例如,CGR设备104围出了用户的视场。在一些具体实施中,采用被配置为呈现CGR内容的CGR室、壳体或房间代替CGR设备104,其中用户不再佩戴CGR设备104。

在一些具体实施中,控制器102被配置为管理和协调针对用户的CGR内容的呈现。在一些具体实施中,控制器102包括软件、固件和/或硬件的合适组合。在一些具体实施中,控制器102是相对于场景106处于本地或远程位置的计算设备。例如,控制器102是位于场景106内的本地服务器。在另一个示例中,控制器102是位于场景106之外的远程服务器(例如,云服务器、中央服务器等)。在一些具体实施中,控制器102经由一个或多个有线或无线通信信道144(例如,蓝牙、IEEE 802.11x、IEEE 802.16x、IEEE 802.3x等)与CGR设备104通信耦接。在一些具体实施中,控制器102的功能由CGR设备104提供和/或与该CGR设备结合。

如图1所示,CGR设备104呈现场景106的表示。在一些具体实施中,场景106的表示由控制器102和/或CGR设备104生成。在一些具体实施中,场景106的表示包括虚拟场景,该虚拟场景是场景106的模拟替换。换句话讲,在一些具体实施中,场景106的表示由控制器102和/或CGR设备104模拟。在此类具体实施中,场景106的表示不同于CGR设备104所在的场景106。在一些具体实施中,场景106的表示包括增强场景,该增强场景是场景106的修改版本(例如,包括虚拟圆柱体109)。例如,在一些具体实施中,控制器102和/或CGR设备104修改(例如,增强)场景106的图像以便生成场景106的表示。在一些具体实施中,控制器102和/或CGR设备104通过模拟场景106的副本来生成场景106的表示。在一些具体实施中,控制器102和/或CGR设备104通过从场景106的模拟副本中移除和/或向其中添加事项来生成场景106的表示。

图2是示出用于CGR数据共享的中断模型200的框图。在一些具体实施中,为了生成场景106的表示(如图1所示),多个进程(例如,进程1 210-1、进程2 210-2、进程3 210-3…进程N 210-N)获得由CGR设备104采集的原始数据(如图1所示)作为输入。例如,原始数据包括由图像传感器采集的图像数据230、由IMU采集的姿态数据240、从由眼动跟踪器获得的信息得出的视线估计数据250,以及由CGR设备104采集的其他数据260。在一些具体实施中,多个进程210相互依赖,使得来自一个进程的输出被另一进程用作输入,例如来自进程2 210-2的输出是到进程3 210-3的输入。在一些具体实施中,来自进程210的原始数据和/或输出通过通信路径220传送,该通信路径例如通过控制器102的通信接口和/或CGR设备104的通信接口建立的通信路径。

如图2所示,当进程1 210-1需要图像数据230和视线估计数据250时,进程1 210-1中断图像传感器和眼动跟踪器,以便获得图像数据230的副本和视线估计数据250的副本作为输入。同样,当进程2 210-2也需要图像数据230和视线估计数据250时,进程2 210-2中断图像传感器和眼动跟踪器,以便获得图像数据230的副本和姿态估计数据250的副本作为输入。又如,如图2所示,进程3 210-3需要来自进程2 210-2的输入、姿态数据240和其他数据260。进程3 210-3将等待进程2 210-2完成,同时中断IMU和其他传感器,以便获得姿态数据240和其他数据260。

出于若干原因,中断模型200效率低下。首先,当多个进程(例如,进程1 210-1和进程2 210-2)竞争资源(例如,图像数据230和视线估计数据250)时,中断产生多个瓶颈,例如在传感器处的至少一个瓶颈以及在通信路径220处的另一个瓶颈。第二,由于为多个进程创建了数据的多个副本,因此中断模型200不跨不同任务共享存储器。因此,存储器使用效率低下。由于该瓶颈、存储器利用效率低下以及来自进程依赖性的级联效应,中断模型200无法满足CGR内容的实时流传输的延迟要求。因此,使用中断模型200呈现的CGR场景可能导致用户的晕动症。

图3是根据一些实施方案的用于进程之间的CGR数据共享的示例性确定性拉取/获取模型300的框图。确定性系统通常不涉及系统未来状态的开发中的随机性。因此,确定性模型将从给定起始条件或初始状态产生相同的输出。因此,使用确定性模型300,系统可以预测何时将从何处产生和访问数据。这样,拉取/获取模型300允许进程在数据准备好被获取时并且从对于检索有效的位置检索数据。因此,在此类系统中,瓶颈减少,并且对资源的争用下降。

例如,图3示出了两个进程,即进程M和进程N,其中进程N取决于来自进程M的输出,并且进程M获取由相机拍摄的图像数据。系统学习硬件定时参数,诸如相机曝光时间Δ1,以及进程的特性,例如进程M的处理时间Δ2和/或进程M和N的输入数据的类型。系统使用这些参数和特性来确定进程何时将获取数据以及将从哪个位置获取数据。在图3中,系统使用系统同步时钟来测量起始时间(例如,T

在一些实施方案中,确定性系统生成针对进程的访问调度,包括针对每个进程的所计算的唤醒时间。在一些实施方案中,在每个任务之间,预留阈值时间量,例如T

图4是示出根据一些具体实施的基于确定性拉取/获取模型300的CGR数据共享过程400的框图。在一些具体实施中,为了生成场景106的表示(如图1所示),多个进程(例如,进程1 410-1、进程2 410-2、进程3410-3…进程N 410-N)接收由CGR设备104采集的原始数据(如图1所示)。例如,原始数据包括由图像传感器采集的图像数据430、由IMU采集的姿态数据440、从由眼动跟踪器获得的信息得出的视线估计数据450,以及由CGR设备104采集的其他数据460。在一些具体实施中,多个进程相互依赖,使得来自一个进程的输出被另一进程用作输入,例如来自进程2410-2的输出是到进程3 410-3的输入。在一些具体实施中,来自多个进程410的原始数据和/或输出通过通信路径420传送,该通信路径例如通过控制器102的通信接口和/或CGR设备104的通信接口建立的通信路径。

如图4所示,使用确定性模型300,控制器102引导缓冲器425中的数据427的数据布置(例如,布局和/或排序),并且根据访问调度(例如,缓冲器425中的数据何时准备好被拉取/获取)唤醒多个进程410。例如,从相机捕获的图像数据430中获得进程2 410-2的图像数据427-2(在图4中表示为(I,2))和进程3 410-3的图像数据427-4(在图4中表示为(I,3))。进程2 410-2的图像数据427-2和进程3 410-3的图像数据427-4以下述的布局和/或顺序布置在缓冲器425中,即,使得当图像数据427-2和427-4以数据流提供给进程410时,进程2410-2和进程3 410-3根据访问调度依次唤醒。具体地,当进程3 410-3唤醒时,图像数据427-4以及来自进程2 410-2的输出准备好被拉取/获取。

图5A是根据一些具体实施的用于上述拉取/获取模型的控制器102的示例的框图。图5B是示出根据一些具体实施的由控制器102管理的数据布置和进程访问调度的框图。图5B用于示出根据一些具体实施的由图5A所示的控制器102管理的示例性CGR场景生成。尽管示出了一些具体特征,但本领域的技术人员将从本公开中认识到,为简洁起见并且为了不模糊本文所公开的具体实施的更多相关方面,未示出各种其他特征。为此,作为非限制性示例,如图5A所示,在一些具体实施中,控制器102包括一个或多个处理单元502(例如,微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)、中央处理单元(CPU)、处理核心等)、一个或多个输入/输出(I/O)设备506、一个或多个通信接口508(例如,通用串行总线(USB)、FIREWIRE、THUNDERBOLT、IEEE 802.3x、IEEE 802.11x、IEEE 802.16x、全球移动通信系统(GSM)、码分多址(CDMA)、时分多址(TDMA)、全球定位系统(GPS)、红外(IR)、蓝牙、ZIGBEE和/或相似类型接口)、一个或多个编程(例如,I/O)接口510、存储器520以及用于互连这些部件和各种其他部件的一条或多条通信总线504。

在一些具体实施中,一条或多条通信总线504包括互连并控制系统部件之间的通信的电路。在一些具体实施中,一个或多个I/O设备506包括键盘、鼠标、触控板、操纵杆、一个或多个麦克风、一个或多个扬声器、一个或多个图像传感器、一个或多个显示器等中的至少一者。

存储器520包括高速随机存取存储器,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、双倍数据速率随机存取存储器(DDR RAM)或者其他随机存取固态存储器设备。在一些具体实施中,存储器520包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存存储器设备或其他非易失性固态存储设备。存储器520任选地包括与一个或多个处理单元502远程定位的一个或多个存储设备。存储器520包括非暂态计算机可读存储介质。在一些具体实施中,存储器520或者存储器520的非暂态计算机可读存储介质存储下述程序、模块和数据结构或者它们的子集,其中包括任选的操作系统530和CGR内容模块540。

操作系统530包括用于处理各种基础系统服务和用于执行硬件相关任务的过程。在一些具体实施中,CGR内容模块540被配置为管理和协调一个或多个用户的CGR内容(例如,一个或多个用户的CGR内容的单个集合,或一个或多个用户的相应群组的多个集的CGR内容)的呈现。为此,在各种具体实施中,CGR内容模块540包括数据获取单元542、跟踪单元544、协调单元546、数据传输单元548和数据访问单元550。

在一些具体实施中,数据获取单元542被配置为从至少CGR设备104获取数据(例如,图像数据、姿态数据、视线估计、呈现数据、交互数据、传感器数据、位置数据等)。为此,在各种具体实施中,数据获取单元542包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

在一些具体实施中,跟踪单元544被配置为标绘场景106并且跟踪至少CGR设备104相对于场景106的定位/位置。为此,在各种具体实施中,跟踪单元544包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

在一些具体实施中,协调单元546被配置为管理和协调CGR设备104向用户的CGR内容呈现。为了管理和协调CGR内容的呈现,在一些具体实施中,协调单元546被配置为获得与进程、数据存储和硬件特征相关的信息。然后协调单元546使用该信息来协调系统级的进程。为此,在各种具体实施中,协调单元546包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

在一些具体实施中,数据传输单元548被配置为向至少CGR设备104传输数据(例如,呈现数据、位置数据等)。为此,在各种具体实施中,数据传输单元548包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

在一些具体实施中,数据访问单元550被配置为确定允许进程获取从数据获取单元542获得的数据的访问调度。在一些具体实施中,数据访问单元550确定数据布置552以用于由进程进行有效的数据检索。在一些具体实施中,数据访问单元550还确定访问调度554以供进程用于提取或获取数据。为此,在各种具体实施中,数据传输单元548包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

例如,在图5B中,场景识别进程560获得用于识别场景106的图像数据和姿态数据580。当眼动跟踪器检测到用户在场景106内的感兴趣区域(ROI)572附近的凝视视线时,ROI识别进程562基于视线估计数据582识别图像数据中的ROI图像数据590。随后,对象识别进程564分析ROI图像数据590并识别ROI 572内的对象574。如图5B所示,进程560、562和564根据访问调度554访问数据布置552,其中访问调度554包括诸如每个进程的起始时间之类的信息。另外,如图5B所示,数据布置552中的数据被布置成适应所调度的获取。例如,由于ROI图像数据590被ROI识别进程562和对象识别进程564使用,因此ROI图像数据590与非ROI图像数据592分开存储以适应更频繁或更紧急的访问。

重新参见图5A,尽管数据获取单元542、跟踪单元544、协调单元546、数据传输单元548和数据访问单元550被示为驻留在单个设备(例如,控制器102)上,但应当理解,在其他具体实施中,数据获取单元542、跟踪单元544、协调单元546、数据传输单元548和数据访问单元550的任何组合可位于独立计算设备中。

此外,图5A更多地用作存在于特定实施方案中的各种特征的功能描述,而不是本文所述的具体实施的结构示意。如本领域的普通技术人员将认识到的,单独显示的项目可以组合,并且一些项目可以分开。例如,图5A中单独示出的一些功能模块可以在单个模块中实现,并且单个功能块的各种功能可在各种具体实施中通过一个或多个功能块来实现。模块的实际数量和特定功能的划分以及如何在其中分配特征将根据实施方案而变化,并且在一些具体实施中,部分地取决于为特定实施方案选择的硬件、软件和/或固件的特定组合。

图6是根据一些具体实施的示例性CGR设备104的框图。尽管示出了一些具体特征,但本领域的技术人员将从本公开中认识到,为简洁起见并且为了不模糊本文所公开的具体实施的更多相关方面,未示出各种其他特征。出于该目的,作为非限制性示例,在一些具体实施中,CGR设备104包括一个或多个处理单元602(例如,微处理器、ASIC、FPGA、GPU、CPU、处理核心等)、一个或多个输入/输出(I/O)设备606、一个或多个通信接口608(例如,USB、FIREWIRE、THUNDERBOLT、IEEE 802.3x、IEEE 802.11x、IEEE 802.16x、GSM、CDMA、TDMA、GPS、IR、BLUETOOTH、ZIGBEE和/或类似类型的接口)、一个或多个编程(例如,I/O)接口610、一个或多个CGR显示器612、一个或多个图像采集接口614(例如,任选的面向内部和/或面向外部的图像传感器)、存储器620以及用于互连这些部件和各种其他部件的一条或多条通信总线604。

在一些具体实施中,一条或多条通信总线604包括互连并控制系统部件之间的通信的电路。在一些具体实施中,一个或多个I/O设备606包括一个或多个生理传感器(例如,血压监测仪、心率监测仪、血氧传感器、血糖传感器等)、一个或多个麦克风、一个或多个扬声器、触觉引擎等中的至少一者。

在一些具体实施中,一个或多个CGR显示器612被配置为向用户呈现CGR内容。在一些实施方案中,一个或多个CGR显示器612对应于全息、数字光处理(DLP)、液晶显示器(LCD)、硅上液晶(LCoS)、有机发光场效应晶体管(OLET)、有机发光二极管(OLED)、表面传导电子发射显示器(SED)、场发射显示器(FED)、量子点发光二极管(QD-LED)、微机电系统(MEMS)和/或类似的显示器类型。在一些实施方案中,一个或多个CGR显示器612对应于衍射、反射、偏振、全息等波导显示器。例如,CGR设备104包括单个AR/VR显示器。在另一个示例中,CGR设备104包括针对用户的每只眼睛的CGR显示器。

在一些具体实施中,一个或多个图像采集接口614被配置成获得用于CGR内容生成的数据。在一些具体实施中,一个或多个图像采集接口614包括一个或多个图像传感器、惯性测量单元(IMU)、加速度计、陀螺仪、温度计、一个或多个深度传感器(例如,结构光、飞行时间等)、眼动跟踪器中的至少一者。例如,一个或多个图像传感器对应于一个或多个RGB相机(例如,具有互补金属氧化物半导体(CMOS)图像传感器或电荷耦合器件(CCD)图像传感器)、IR相机、基于事件的相机等。

存储器620包括高速随机存取存储器,诸如DRAM、SRAM、DDRRAM或其他随机存取固态存储器设备。在一些具体实施中,存储器620包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存存储器设备或其他非易失性固态存储设备。存储器620任选地包括与一个或多个处理单元602远程定位的一个或多个存储设备。存储器620包括非暂态计算机可读存储介质。在一些具体实施中,存储器620或者存储器620的非暂态计算机可读存储介质存储下述程序、模块和数据结构或者它们的子集,其中包括任选的操作系统630和CGR呈现模块640。

操作系统630包括用于处理各种基础系统服务和用于执行硬件相关任务的过程。在一些具体实施中,CGR呈现模块640被配置为经由一个或多个CGR显示器612向用户呈现CGR内容。为此,在各种具体实施中,CGR呈现模块640包括数据获取单元642、CGR呈现单元644、眼动跟踪单元646和数据传输单元648。

在一些具体实施中,数据获取单元642被配置为至少从控制器102获取数据(例如,图像数据、姿态数据、呈现数据、交互数据、传感器数据、位置数据等)。为此,在各种具体实施中,数据获取单元642包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

在一些具体实施中,CGR呈现单元644被配置为经由一个或多个CGR显示器612呈现CGR内容。为此,在各种具体实施中,CGR呈现单元644包括指令和/或用于指令的逻辑以及启发法和用于启发法的元数据。在一些具体实施中,CGR呈现单元644被配置为通过目镜来投射包括第一波长范围内的发射光的图像,该目镜使第一波长范围内的光畸变。在一些实施方案中,CGR呈现单元644被配置为通过目镜来投射包括第一波长内的发射光的图像,该目镜反射并折射该第一波长范围内的光并同时使第二波长范围内的光基本上无畸变地通过。

在一些具体实施中,眼动跟踪单元646被配置为使用设置在目镜和显示器之间的一个或多个光源发射第二波长范围内的光,并且使用相机检测该第二波长范围内的光。在各种具体实施中,一个或多个光源照亮用户的眼睛,并且相机检测从用户的眼睛反射的光。为此,在各种具体实施中,眼动跟踪单元646包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。在一些具体实施中,眼动跟踪单元646被配置为通过目镜发射第二波长范围内的光,并且检测由用户的眼睛反射的该第二波长范围内的光。在一些具体实施中,眼动跟踪单元646至少部分地基于所检测到的来自用户眼睛的光反射来提供视线估计。

在一些具体实施中,数据传输单元648被配置为至少向控制器102传输数据(例如,呈现数据、位置数据等)。为此,在各种具体实施中,数据传输单元648包括指令和/或用于指令的逻辑部件以及启发法和用于启发法的元数据。

尽管数据获取单元642、CGR呈现单元644、眼动跟踪单元646和数据传输单元648被示为驻留在单个设备(例如,CGR设备104)上,但应当理解,在其他具体实施中,数据获取单元642、CGR呈现单元644、眼动跟踪单元646和数据传输单元648的任何组合可位于单独计算设备中。

此外,图6更多地用作存在于特定具体实施中的各种特征部的功能描述,该各种特征部与本文所述的具体实施的结构示意图不同。如本领域的普通技术人员将认识到的,单独显示的项目可以组合,并且一些项目可以分开。在一些具体实施中,图6中单独示出的一些功能模块可以在单个模块中实现,并且单个功能块的各种功能可在各种具体实施中通过一个或多个功能块来实现。模块的实际数量和特定功能的划分以及如何在其中分配特征将根据实施方案而变化,并且在一些具体实施中,部分地取决于为特定实施方案选择的硬件、软件和/或固件的特定组合。

另外,在一些具体实施中,由如图5A所示的控制器102和如图6所示的CGR设备104执行的功能在设备间进行分配。例如,图7A示出了根据一些具体实施的CGR流水线700,该CGR流水线从传感器接收数据并生成场景106的表示(如图1所示)。图7B示出了实现CGR流水线700的系统750。系统750在上述控制器102和CGR设备104之间分配由该控制器102和/或CGR设备104执行的任务。

如图7A所示,在一些具体实施中,图像采集接口614(图6)至少包括用于输出图像数据的图像传感器710、用于输出姿态数据的IMU 712、用于提供视线估计的眼动跟踪器714、以及用于将原始数据作为输入提供给进程以便生成场景106的一个或多个其他传感器716。在接收到图像数据、姿态数据、视线估计数据和原始数据时,由控制器102执行的进程根据如上所述的数据布置552将所接收的数据存储在缓冲器(例如,图4中的缓冲器425或图7A中的缓冲器720)中。此外,由控制器102执行的进程根据访问调度554访问缓冲器720。根据如上参考图3所述的确定性模型生成访问调度554。

在一些具体实施中,CGR流水线700包括从缓冲器720接收CGR内容和数据并在显示器612上渲染图像的渲染模块730。在各种具体实施中,CGR内容包括虚拟对象的几何形状、虚拟对象的颜色和/或纹理、图像(诸如场景106的透视图像)以及描述要在渲染图像中表示的内容的其他信息的定义。在一些具体实施中,在显示渲染图像之前执行最终校正。例如,基于姿态数据,校正渲染图像以改善用户的体验。

在一些具体实施中,在CGR设备处执行最终校正和其他计算量不太密集的任务(例如,传感器数据预处理),如图7B所示。图7B中的根据一些实施方案实现CGR流水线700的系统750分配由控制器102和/或CGR设备104执行的功能。因此,在控制器102处执行计算量密集的任务,例如使用控制器102的一个或多个处理器756来进行诸如机器学习、计算机视觉和/或3D渲染等任务。然后控制器102将计算的图像传输到CGR设备104以在显示之前进行最终校正。在一些具体实施中,传输过程包括压缩/解压缩以及控制器102与CGR设备104之间的通信。

在一些具体实施中,一个或多个处理器756包括协调单元546和数据访问单元550,该数据访问单元还包括在系统750上分配的用于进程的数据布置552-1和访问调度554-1。例如,控制器102从CGR设备104收集进程的特性和硬件参数。可使用机器学习诸如神经网络来提取跨平台的进程(包括传输进程)的特性、传感器数据预处理和/或最终校正等并分配权重,使得访问数据的进程的排序可被预测。在一些具体实施中,控制器102还可至少部分地基于访问调度554-1来确定数据布置552-1以适应预测的数据访问。尽管图7B示出了包括一个控制器102和一个CGR设备104的系统750,但在一些实施方案中,多个CGR设备可连接到控制器102。在此类实施方案中,控制器102上的机器学习可用于预测跨平台进程的访问调度,包括跨多个CGR设备的进程(例如,在多人CGR环境中)。在一些具体实施中,控制器102分配系统级数据布置552-1和访问调度554-1,使得每个CGR设备从控制器102获得数据布置552-1和/或访问调度554-1的副本或子集。根据数据布置552-2的本地副本和访问调度554-2的本地副本,对由图像采集接口614采集的数据进行布置,并且与CGR设备104相关联的进程根据调度访问访问已布置的数据。因此,与其中每个进程或每个设备可能已针对数据访问进行优化的其他系统不同,根据本文所述的实施方案的系统750为系统级的数据访问提供平台不可知的调度,使得整体上减少延迟。

图8是根据一些具体实施的确定进程的访问调度的方法800的流程图表示。在各种具体实施中,方法800由具有非暂态存储器、图像采集接口(例如,图6中的图像采集接口614)以及一个或多个处理器的设备来执行。在一些具体实施中,方法800由处理逻辑部件(包括硬件、固件、软件或其组合)执行。在一些具体实施中,方法800由执行存储在非暂态计算机可读介质(例如,存储器)中的指令(例如,代码)的处理器和/或控制器(例如,图1中的控制器102)执行。简而言之,在一些情况下,方法800包括:利用图像采集接口来获得图像数据,确定姿态数据,并确定视线估计;至少部分地基于能够与图像采集接口通信的多个进程的多个特性来确定图像数据、姿态数据和视线估计的布置;以及至少部分地基于下述中的至少一者来确定多个进程的访问调度:该图像数据、该姿态数据和该视线估计的布置;该多个进程的多个特性;以及与设备相关联的硬件定时参数。

在框810中,方法800开始,其中设备获得由图像采集接口采集的与视场相关联的图像数据。在一些实施方案中,图像采集接口包括用于采集与视场相关联的图像数据的图像传感器(例如,图7A中的图像传感器710)。

在框820中,方法800继续,其中该设备至少部分地基于惯性测量单元(IMU)信息来确定姿态数据,其中该姿态数据对应于由图像采集接口测量的用户的当前姿态。在一些实施方案中,图像采集接口包括用于测量用户的当前姿势的IMU(例如,图7A中的IMU 712)。

在框830中,方法800继续,其中该设备至少部分地基于通过图像采集接口获得的眼动跟踪信息来确定视线估计。在一些实施方案中,图像采集接口包括用于获得眼动跟踪信息的眼动跟踪器(例如,图7A中的眼动跟踪器714)。

在框840中,方法800继续,其中该设备至少部分地基于能够与图像采集接口通信的多个进程的多个特性来确定图像数据、姿态数据和视线估计的布置。例如,如图4所示,控制器102使用确定性模型300来确定数据427在缓冲器425中的布置。如图3所示,确定性模型300获得进程的特性(例如,执行顺序和/或进程执行持续时间)作为用于确定数据427在缓冲器425中的布置的参数的一部分。

在一些实施方案中,如框842所示,布置确定包括聚合用于不同进程的数据,并且至少部分地基于多个进程的多个特性来布置聚合的数据。例如,两个进程的布置确定包括下述步骤:(1)获得多个进程中的第一进程的第一图像数据、第一姿态数据和第一视线估计中的至少一者,其中该第一进程通过特性的第一集合来表征;(2)获得多个进程中的第二进程的第二图像数据、第二姿态数据和第二视线估计中的至少一者,其中该第二进程通过特性的第二集合来表征;以及(3)将第一图像数据、第一姿态数据和第一视线估计与第二图像数据、第二姿态数据和第二视线估计聚合以生成图像数据、姿态数据和视线估计,其中该图像数据、该姿态数据和该视线估计至少部分地基于该特性的第一集合和该特性的第二集合来布置。

例如,如图4所示,至少部分地基于进程410的特性来确定数据427在缓冲器425中的布置。在来自进程2 410-2的输出被进程3 410-3用作输入的情况下,将用于进程2 410-2的数据427-2布置在缓冲器中,使得在数据427-4准备好被进程3 410-3获取之前,先准备好被进程2 410-2获取。又如,如图5B所示,相比于非ROI图像数据592,ROI图像数据590由更多的进程使用。因此,根据数据布置552,ROI图像数据590存储在更频繁访问的区域和/或用于更紧急需求的区域。

仍然参考图8,在框850中,方法800继续,其中该设备至少部分地基于下述中的至少一者来确定多个进程的访问调度:图像数据、姿态数据和视线估计的布置;该多个进程的多个特性;以及与该设备相关联的硬件定时参数。在一些实施方案中,如框852所示,方法800包括基于确定性模型来确定该访问调度。在此类实施方案中,方法800还包括对于多个进程中的第一进程,确定用于该第一进程的输入、提供该输入的硬件或第二进程中的至少一者,以及用于从该硬件或该第二进程中的至少一者获得输入的时间参数;以及至少部分地基于该时间参数来计算该第一进程的唤醒时间。例如,如图3所示,对于进程M,用于执行进程M的唤醒时间至少部分地基于相机的曝光时间(例如,已知的Δ1)来确定。对于进程N,用于执行进程M的唤醒时间至少部分地基于相机的曝光时间和进程M的执行持续时间(例如,已知的Δ1和已知的Δ2)来确定。

在一些实施方案中,如框854所示,方法800包括将计算密集型任务分配给基础设备并在设备处执行最终校正,以便优化用户体验(例如,减少晕动症)。例如,在如图7A所示的CGR流水线700中,包括渲染730的计算密集型任务可由控制器102执行,如图7B所示;而诸如传感器数据预处理等最低限度的计算可由CGR设备104执行,如图7B所示。此外,如图7A所示,在显示场景之前,可将来自CGR设备104的数据(例如,姿态数据)用于最终校正。在一些实施方案中,由基础设备发送的用于渲染的帧被加时间戳。知道了帧在基础设备上被计算的时间,在从基础设备接收到帧时,CGR设备基于姿态数据的轨迹(例如,对应于由图像采集接口测量的用户的当前姿态)预测在渲染时间处的渲染姿态。然后CGR设备通过在渲染时间处使用渲染姿态调整帧来执行最终校正。

在一些实施方案中,如框856所示,方法800包括由第二设备确定访问调度和/或布置。具体地讲,分配的访问调度确定包括下述步骤:触发基础设备对数据的收集,其中该基础设备获得下述中的至少一者:图像数据、姿态数据、视线估计的布置;多个进程的多个特性;以及来自设备的硬件定时参数,并且该基础设备还从其他设备收集数据;以及从第二设备接收访问调度,其中该访问调度由该第二设备基于该数据来确定。例如,如图7B所示,控制器102从CGR设备104获得进程特性、数据布置信息和硬件参数等。在一些实施方案中,控制器102还从其他CGR设备接收此类信息。利用所收集的信息,控制器102提供系统级访问调度554-1和/或数据布置552-1。

在一些实施方案中,在框860中,方法800继续,其中设备根据访问调度来访问布置以便生成用于显示的场景(例如,作为真实世界场景的表示的CGR场景,或作为完全虚拟场景的CGR场景);以及使用从布置获得的数据并根据访问调度来显示场景,其中该数据是图像数据、姿态数据和视线估计中的至少一者的子集。例如,在图7A中,使用来自缓冲器720的数据生成提供给CGR设备的显示器612的场景。如图4所示,用于产生场景的进程410根据访问调度从缓冲器425拉取数据流,其中缓冲器425中的数据427根据该布置进行布置。又如,如图5B所示,场景识别进程560、ROI识别进程562和对象识别进程564根据访问调度554访问数据,并且ROI图像数据590和非ROI图像数据592根据数据布置552来存储。

在一些实施方案中,如框862所示,根据访问调度来访问布置包括基于访问调度来确定多个进程中的一个进程的预期执行时间,以及在根据该布置来获取该进程所使用的数据时在预期执行时间唤醒该进程以进行数据访问。例如,如图3所示,基于该访问调度,根据该访问调度确定进程M在时间T4处的预期执行时间。在时间T4处,进程M从缓冲器获取来自相机的图像数据,其中数据是根据系统确定的数据布置来布置的。

虽然上文描述了在所附权利要求书范围内的具体实施的各个方面,但是应当显而易见的是,上述具体实施的各种特征可通过各种各样的形式体现,并且上述任何特定结构和/或功能仅是例示性的。基于本公开,本领域的技术人员应当理解,本文所述的方面可以独立于任何其他方面来实现,并且这些方面中的两个或更多个可以采用各种方式组合。例如,可以使用本文阐述的任何数量的方面来实现装置和/或可以实践方法。另外,除了本文阐述的一个或多个方面之外或者不同于本文阐述的一个或多个方面,可以使用其他结构和/或功能来实现这样的装置和/或可以实践这样的方法。

还将理解的是,虽然术语“第一”、“第二”等可能在本文中用于描述各种元素,但是这些元素不应当被这些术语限定。这些术语只是用于将一个元件与另一元件区分开。例如,第一节点可以被称为第二节点,并且类似地,第二节点可以被称为第一节点,其改变描述的含义,只要所有出现的“第一节点”被一致地重命名并且所有出现的“第二节点”被一致地重命名。第一节点和第二节点都是节点,但它们不是同一个节点。

本文中所使用的术语仅仅是为了描述特定具体实施并非旨在对权利要求进行限制。如在本具体实施的描述和所附权利要求中所使用的那样,单数形式的“一个”和“该”旨在也涵盖复数形式,除非上下文清楚地另有指示。还将理解的是,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。还将理解的是,术语“包括”在本说明书中使用时是指定存在所陈述的特征、整数、步骤、操作、元件和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、部件,和/或其群组。

如本文所使用的,术语“如果”可以被解释为表示“当所述先决条件为真时”或“在所述先决条件为真时”或“响应于确定”或“根据确定”或“响应于检测到”所述先决条件为真,具体取决于上下文。类似地,短语“如果确定[所述先决条件为真]”或“如果[所述先决条件为真]”或“当[所述先决条件为真]时”被解释为表示“在确定所述先决条件为真时”或“响应于确定”或“根据确定”所述先决条件为真或“当检测到所述先决条件为真时”或“响应于检测到”所述先决条件为真,具体取决于上下文。

相关技术
  • 用于进程数据共享的方法和设备
  • 用于访问另一个进程的进程本地存储装置的方法和设备
技术分类

06120112579839