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

为头戴式显示器生成动态障碍物碰撞警告的系统和方法

文献发布时间:2023-06-19 13:26:15


为头戴式显示器生成动态障碍物碰撞警告的系统和方法

相关申请的交叉引用

本申请要求2019年5月20日提交的美国申请号16/417,299的优先权,出于所有目的,该美国申请的内容通过引用以其整体并入本文。

公开领域

本公开总体上涉及虚拟现实(VR)系统。更具体地,本公开涉及用于为头戴式显示器(head-mounted display,HMD)生成动态障碍物碰撞警告的系统和方法。

背景

本公开总体上涉及虚拟现实(VR)系统和增强现实(AR)系统。AR和VR系统可用于向用户呈现各种图像(包括三维(3D)图像)。例如,AR和VR头戴装置(headset)可用于以可被感知为虚拟沉浸式环境的方式向用户呈现图像。VR头戴装置可能遮挡用户对用户所位于的真实世界环境的观察。

概述

本公开的各种方面涉及可以实时地动态地生成障碍物碰撞警告的系统和方法,例如以向戴着和操作VR或AR头戴装置的用户呈现这样的警告。例如,系统可以在VR显示器中提供视觉提示,以在用户接近真实世界障碍物或边界(例如墙壁)时警告用户。该系统可以基于运动参数(例如与头部移动相关联的速度和与手移动相关联的速度)以及关于真实世界障碍物位置的预定或用户定义的数据来生成视觉提示。该系统可以对头部和手使用不同的估计,例如对头部运动进行比手运动更重地加权,因为头部的位置能够更准确地反映用户的整体位置。系统可以基于人类所及范围的预期轮廓(例如人类所及范围的P95或P99)来限制位置估计,并且使用头部移动的最小距离用于激活视觉提示。

系统可以基于用户相对于障碍物的估计位置来确定分数(例如危险分数),该障碍物可以被转换成表示在用户的视场中的障碍物的范围的角度,并且可以基于用户的移动方向被定位。

系统可以以平衡警报功能与最小化可能由视觉提示导致的对用户的沉浸式体验的破坏的需要的方式,选择性地呈现视觉提示。例如,系统可以最小化在用户的眼睛正前方的保护者(guardian)的视觉影响,同时提供外围视觉提示以帮助警告用户在侧面或在用户后面的障碍物,否则这些障碍物很难被注意到。系统可以增加外围信息的对比度,以使用户更容易识别。当用户不移动时,系统可以将视觉提示淡出到最小提示(例如,在头部或控制器周围的小指示器)。

系统可以将最小半径分配给头部和手以充当距障碍物的缓冲区。与手半径相比,头部半径可以是相对大的。缓冲区可以确保视觉提示用足够的空间来呈现,使得例如在视觉提示以最大不透明度被显示之前,用户的手不会触摸到物理障碍物。

系统可以将(例如手的)速度数据修匀以避免误报(false positive)。例如,系统可以取在预定时间段(例如0.15秒)内速度的时间平均值,这可以降低具有高速度但短持续时间并因而具有短实际距离的移动(例如,控制器的突然移动(flick))导致视觉提示的误报触发的可能性。

系统可以基于各种因素(例如游戏空间(play space)的大小、已发生的最近移动、应用特定的行为、用户特定的训练模型以及指示系统的成功或失败的反馈)来动态地按比例缩放触发警报显示的幅度的条件。系统可以使用深度映射来计算速度信息,例如以检测移动中的障碍物。

至少一个方面涉及一种方法。该方法可以包括由一个或更多个传感器检测头戴式显示器(HMD)的第一运动数据和与HMD相关联的手设备的第二运动数据。该方法可以包括由一个或更多个处理器识别在HMD周围的环境中的一个或更多个障碍物。该方法可以包括由一个或更多个处理器,响应于第一运动数据或第二运动数据中的至少一个以及在HMD与一个或更多个障碍物之间的距离或在手设备与一个或更多个障碍物之间的距离,使用HMD来提供表示关于与一个或更多个障碍物的潜在碰撞的警告的显示数据。

至少一个方面涉及一种系统。该系统可以包括一个或更多个传感器,该一个或更多个传感器被配置为检测头戴式显示器(HMD)的第一运动数据和与HMD相关联的手设备的第二运动数据。该系统可以包括被配置为识别在HMD周围的环境中的一个或更多个障碍物的处理电路。处理电路可以被配置为响应于第一运动数据或第二运动数据中的至少一个以及在HMD与一个或更多个障碍物之间的距离或在手设备与一个或更多个障碍物之间的距离,使用HMD来提供表示关于与一个或更多个障碍物的潜在碰撞的警告的显示数据。

至少一个方面涉及一种头戴式显示器(HMD)。该HMD可以包括显示器。该HMD可以包括处理电路,该处理电路被配置为使显示器响应于与HMD的用户的移动相关联的运动数据和到在HMD的环境中的障碍物的距离来提供关于与该障碍物的潜在碰撞的警告。

下面详细讨论这些和其他方面和实现。前述信息和以下详细描述包括各种方面和实现的说明性示例,并且提供了用于理解所要求保护的方面和实现的性质和特征的概述或框架。附图提供了对各种方面和实现的说明和进一步理解,并且被结合在本说明书中并构成本说明书的一部分。

附图简述

附图不旨在按比例绘制。各个附图中相同的参考数字和名称表示相同的元件。为了清楚起见,并非每个部件都可以在每个图中进行标记。在附图中:

图1是根据本公开的实现的显示系统的框图。

图2是根据本公开的实现的头戴式显示器(HMD)系统的示意图。

图3是根据本公开的实现的用于为HMD生成动态障碍物碰撞警告的方法的流程图。

图4是根据本公开的实现的计算环境的框图。

详细描述

在转向详细示出某些实施例的附图之前,应当理解,本公开不限于说明书中阐述的或附图中示出的细节或方法。还应当理解,本文使用的术语仅仅是为了描述的目的,并且不应该被认为是限制性的。

AR和VR系统可以使用HMD(也可以被称为头戴式显示器(head-worn display,HWD))向用户呈现图像来表示虚拟环境(例如模拟环境)。虚拟环境的用户体验是沉浸式的可能是有用的。HMD可以呈现图像,使得图像以真实深度被感知。例如,HMD可以用于例如通过顺序地或同时呈现左眼图像和右眼图像来呈现可以立体地被观看的图像,使用户能够感知3D环境。例如,VR系统可以基于操作生成关于虚拟环境的显示数据的应用来生成图像,并且响应于用户与虚拟环境的交互来更新显示数据。这样的交互可以包括由VR系统的运动传感器检测到的在真实世界中的移动以及与在虚拟环境中呈现的项目(item)的交互。VR系统可以检测用户通过在真实世界中行走和移动手进行的移动,并且可以基于检测到这样的信息来生成和更新显示数据。VR系统可以包括可以由用户穿戴以向用户呈现显示数据的HMD(例如头戴装置)以及可以在用户与虚拟环境交互时由用户操纵的一个或更多个手设备(例如手持控制器)。HMD和手设备各自可以包括运动传感器,这些运动传感器可以生成关于用户的头部和手的移动的运动数据,例如速度或加速度数据。

戴着HMD可能遮挡用户对真实世界环境中的障碍物的观察。例如,用户可能意外地撞到障碍物或边界、走进障碍物或边界内或绊倒在障碍物或边界上。可以向用户呈现警告(例如安全覆盖图(overlay))以帮助用户避免这样的碰撞。然而,太早或太频繁地显示警告可能导致沉浸感的失去,并且如果在碰撞可能性是低的时呈现警告,则可能难以识别警告的重要性。例如,当真实世界墙壁的表示经由HMD淡入视野中(代替用户期望被沉浸于的虚拟环境)时,可能失去沉浸感。类似地,太晚显示警告可能使用户难以及时做出反应以避免碰撞。在一些情况下,用户基于用户偏好来手动地设置障碍物边界,例如通过绘制可能是来自真实世界障碍物的插入(inset)的虚拟边界(这可能减少沉浸感);一些用户可以关闭警告系统而不是失去沉浸感。AR和VR系统可以不受束缚(untethered),这可以使用户能够拥有更大的移动自由,但也可能增加碰撞可能性。

根据本解决方案的某些方面的系统和方法可以使用与头部、手或其任何组合的移动相对应的运动数据连同关于在真实世界(用户正在其中移动)中存在的障碍物的信息,以当用户在真实世界环境中移动时生成障碍物碰撞警告用于由HMD在虚拟环境中显示,这可以有效地保持沉浸感,同时还提供有用且及时的警告。在一些实施例中,…系统可以在VR显示器中提供视觉提示,以在用户接近真实世界障碍物(例如墙壁)时警告用户。系统可以基于运动参数(例如与头部移动相关联的速度和与手移动相关联的速度)以及关于真实世界障碍物位置的预定或用户定义的数据来生成视觉提示。系统可以对头部和手使用不同的估计,例如对头部运动进行比手运动更重地加权,因为头部的位置可以更准确地反映用户的整体位置。系统可以基于人类所及范围的预期轮廓(例如人类所及范围的P95或P99)来限制位置估计,并且使用头部移动的最小距离用于激活视觉提示。

系统可以基于用户相对于障碍物的估计位置来确定分数(例如危险分数),该障碍物可以被转换成表示在用户的视场中的障碍物的范围的角度,并且可以基于用户的移动方向被定位。

系统可以以平衡警报功能与最小化可能由视觉提示导致的对用户的沉浸式体验的破坏的需要的方式,选择性地呈现视觉提示。例如,系统可以最小化在用户的眼睛正前方的保护者的视觉影响,同时提供外围视觉提示以帮助警告用户在侧面或在用户后面的障碍物,否则这些障碍物难以被注意到。系统可以增加外围信息的对比度,以使用户更容易识别。当用户不移动时,系统可以将视觉提示淡出到最小提示(例如,在头部或控制器周围的小指示器)。

系统可以将最小半径分配给头部和手以充当距障碍物的缓冲区。与手半径相比,头部半径可以是相对大的。缓冲区可以确保视觉提示用足够的空间来呈现,使得例如在视觉提示以最大不透明度被显示之前,用户的手不会触摸到物理障碍物。

系统可以将(例如手的)速度数据修匀以避免误报。例如,系统可以取在预定时间段(例如0.15秒)内速度的时间平均值,这可以降低具有高速度但短持续时间并因而具有短实际距离的移动(例如,控制器的突然移动)导致视觉提示的误报触发的可能性。

系统可以基于各种因素(例如游戏空间的大小、已发生的最近移动、应用特定的行为、用户特定的训练模型以及指示系统的成功或失败的反馈)来动态地按比例缩放触发警报显示的幅度的条件。系统可以使用深度映射来计算速度信息,例如以检测移动中的障碍物。

现在参考图1,系统100可以包括多个传感器104a…n、处理电路116和一个或更多个显示器164。系统100可以使用参考图2描述的HMD系统200来实现。系统100可以使用参考图4描述的计算环境来实现。系统100可以结合AR和VR系统的特征,以及用于实现AR和VR系统的特征。处理电路116的至少一些可以使用图形处理单元(GPU)来实现。可以使用多个处理单元以分布式方式执行处理电路116的功能。

处理电路116可以包括一个或更多个电路、处理器和/或硬件部件。处理电路116可以实现任何逻辑、功能或指令来执行本文描述的任何操作。处理电路116可以包括由电路、处理器或硬件部件中的任一个可执行的任何类型和形式的可执行指令。可执行指令可以是任何类型的,包括应用、程序、服务、任务、脚本、库进程和/或固件。处理电路116的任何部件(包括但不限于图像渲染器160、警告生成器148、障碍物跟踪器140、物体检测器136、运动检测器120和碰撞检测器132)可以是硬件、电路和可执行指令的任何组合或布置,以执行它们的相应功能和操作。处理电路116的至少一些部分可以用于实现由传感器104执行的图像处理。

传感器104a…n可以是图像捕获设备或相机,包括视频相机。传感器104a…n可以是生成相对低质量(例如,相对低的清晰度、分辨率或动态范围)的图像的相机,其可以帮助减少系统100的SWAP。例如,传感器104a…n可以生成具有数百个像素乘数百个像素数量级的分辨率的图像。同时,如本文所述的由系统100执行的过程可用于生成用于呈现给用户的显示图像,该显示图像具有期望的质量特征,包括深度特征。

传感器104a…n(通常在本文被称为传感器104)可以包括任何类型的一个或更多个相机。相机可以是可见光相机(例如,彩色或黑白)、红外相机或其组合。传感器104a…n各自可以包括一个或更多个透镜108a…j(通常在本文被称为透镜108)。在一些实施例中,传感器104可以包括用于每个透镜108的相机。在一些实施例中,传感器104包括具有多个透镜108a…j的单个相机。在一些实施例中,传感器104可以包括多个相机,每个相机具有多个透镜108。传感器104的一个或更多个相机可以被选择或被设计为是预定分辨率和/或具有预定视场。在一些实施例中,一个或更多个相机被选择和/或被设计为具有用于检测和跟踪例如在HMD的视场中的物体的分辨率和视场。一个或更多个相机可以用于多种目的,例如跟踪在由图像捕获设备捕获的场景或环境中的物体以及执行本文描述的碰撞检测技术。

具有传感器104和透镜108的一个或更多个相机可以被安装、集成、结合或布置在HMD上,以对应于HMD的用户或穿戴者的左眼视图和该用户或穿戴者的右眼视图。例如,HMD可以包括具有第一透镜的第一相机以及具有第二透镜的第二相机,第一相机面向前方被安装在HMD的左侧上,对应于或靠近穿戴者的左眼,第二相机面向前方被安装在HMD的右侧上,对应于或靠近穿戴者的右眼。左相机和右相机可以形成提供立体图像捕获的一对前置相机。在一些实施例中,HMD可以具有一个或更多个额外的相机,例如在第一和第二相机之间的第三相机,其靠近HMD的顶部提供并在第一、第二和第三相机之间形成三角形。该第三相机可以用于在执行本解决方案的深度缓冲区生成技术时的三角测量技术,以及用于物体跟踪。

系统100可以包括:第一传感器(例如图像捕获设备)104a,其包括第一透镜108a,第一传感器104a被布置成捕获第一视图的第一图像112a;以及第二传感器104b,其包括第二透镜108b,第二传感器104b被布置成捕获第二视图的第二图像112b。第一视图和第二视图可以对应于不同的视角,使深度信息能够从第一图像112a和第二图像112b中被提取。例如,第一视图可以对应于左眼视图,并且第二视图可以对应于右眼视图。系统100可以包括第三传感器104c,第三传感器104c包括第三透镜108c,第三传感器104c被布置成捕获第三视图的第三图像112c。如参考图2所述的,第三视图可以对应于与在第一透镜108a和第二透镜108b之间的轴间隔开的俯视图,这可以使系统100能够更有效地处理用第一传感器104a和第二传感器104b可能难以解决的深度信息,例如基本上平行于在第一透镜108a和第二透镜108b之间的轴的边缘(例如桌子的边缘)。

要由传感器104a…n捕获的图像的光可以通过一个或更多个透镜108a…j接收。传感器104a…n可以包括传感器电路(包括但不限于电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)电路),其可以检测经由一个或更多个透镜108a…j接收的光,并基于接收到的光生成图像112a…k。例如,传感器104a…n可以使用传感器电路来生成对应于第一视图的第一图像112a和对应于第二视图的第二图像112b。一个或更多个传感器104a…n可以向处理电路116提供图像112a…k。一个或更多个传感器104a…n可以提供具有相应的时间戳的图像112a…k,这可以在对图像112a…k执行图像处理时便于图像112a…k的同步。

传感器104可以包括眼睛跟踪传感器104或头部跟踪传感器104,其可以提供诸如HMD的用户(例如穿戴者)的眼睛或头部的位置、取向或凝视方向的信息。在一些实施例中,传感器104是被配置成为头部跟踪操作提供图像的内向外(inside out)跟踪相机。传感器104可以是提供眼睛跟踪数据(例如对应于用户的一只或两只眼睛的位置或取向中的至少一个的数据)的眼睛跟踪传感器104。在一些实施例中,传感器104例如通过朝着眼睛发射光(例如红外光)并检测所发射的光的反射,以光学方式测量眼睛运动。传感器104可以在朝向用户的眼睛的方向上取向(例如,与捕获HMD外部的环境的图像的传感器104相比)。例如,传感器104可以包括至少一个第四传感器104d(例如,如图2所示),其可以朝向用户的眼睛取向以检测关于用户的眼睛的传感器数据。在一些实施例中,头部跟踪传感器104生成包括头部(例如HMD)的位置、速度或加速度中的至少一个的运动数据。

传感器104可以包括手跟踪传感器104,其可以提供诸如用户的一只或更多只手的位置或取向的信息。手跟踪传感器104可以生成包括相应手(例如,如参考图2所述的由手操纵的手设备224)的位置、速度或加速度中的至少一个的运动数据。头部跟踪传感器104和手跟踪传感器104可以包括各种位置传感器中的任一种,例如惯性测量单元(IMU)、加速度计、陀螺仪、磁力计(例如磁罗盘)或其任何组合。传感器104可以包括各种身体位置传感器,例如腿传感器或躯干传感器。

传感器104可以捕获传感器104周围的环境的图像112。例如,传感器104可以捕获在HMD的用户的视场中或周围的环境的图像112。图像112可以是环境的表示,例如表示从环境捕获的光的参数(例如颜色、亮度、强度)的像素的彩色或灰度阵列或矩阵。环境可以是户内或户外环境,包括自然的和人造的结构、地形或其他物体,包括天空、云、道路、建筑物、街道、行人或骑自行车的人。环境可以包括可以由传感器捕获的图像112表示的一个或更多个物体(例如真实世界物体)。

处理电路116可以包括运动检测器120。运动检测器120可以包括任何功能、操作、例程、逻辑或指令以基于从传感器104接收的传感器数据执行功能,例如检测和监控用户的头部或手的移动。例如,运动检测器120可以接收包括(头部或一只或更多只手的)速度或加速度中的至少一个的传感器数据,并基于接收到的传感器数据生成运动数据。运动检测器120可以响应于传感器数据而生成包括位置或取向中的至少一个的运动数据。在一些实施例中,传感器104可以至少部分地实现运动检测器120,例如使用传感器104的处理硬件生成运动数据,并将运动数据提供给处理电路116。

运动检测器120可以生成在特定参考帧中的运动数据。例如,运动检测器120可以从自传感器104接收的传感器数据中检索取向数据,并且使用取向数据来将传感器数据变换为由模拟生成器152使用以生成虚拟环境的参考帧,图像渲染器160基于该虚拟环境生成显示图像。运动检测器120可以将传感器数据变换为与HMD的位置或取向中的至少一个对应的参考帧,因为HMD可以表示与用户在使用HMD时如何感知模拟环境对应的基线参考帧。

在一些实施例中,运动检测器120包括手跟踪器124。手跟踪器124可以从一个或更多个对应的手跟踪传感器104接收关于用户的一只或更多只手的传感器数据,并且基于接收到的传感器数据生成包括一只或更多只手的位置、速度或加速度中的至少一个的运动数据。例如,手跟踪器124可以从与手设备224耦合的手跟踪传感器104接收传感器数据,以确定指示手设备224(以及因此用户的手)的运动的运动数据。手跟踪器124可以维护位置、取向、速度或加速度数据(或其组合)的日志以跟踪用户的一只或更多只手。在一些实施例中,手跟踪器124包括加速度计、位置传感器和/或速度传感器。

在一些实施例中,运动检测器120包括头部跟踪器128。头部跟踪器128可以从一个或更多个对应的头部跟踪传感器104接收关于用户的头部的传感器数据,并且基于接收到的传感器数据生成包括头部的位置、速度或加速度中的至少一个的运动数据。例如,头部跟踪器128可以从与HMD耦合的头部跟踪传感器104接收传感器数据,以确定指示HMD(以及因此用户的头部)的运动的运动数据。头部跟踪器128可以维护位置、取向、速度或加速度数据(或其组合)的日志以跟踪用户的头部。在一些实施例中,头部跟踪器128包括加速度计、位置传感器和/或速度传感器。

处理电路116可以包括碰撞检测器132。碰撞检测器132可以包括任何功能、操作、例程、逻辑或指令以执行功能,例如确定用户与在用户周围的真实世界环境中的一个或更多个障碍物的碰撞距离、碰撞时间或碰撞可能性。碰撞检测器132可以使用由运动检测器120生成的运动数据连同由障碍物跟踪器140提供的关于障碍物的信息来确定关于在用户和一个或更多个障碍物之间的潜在碰撞的信息。碰撞检测器132可以生成潜在碰撞的指示,该指示包括诸如碰撞距离、碰撞时间或碰撞可能性的参数。

为了确定碰撞距离,碰撞检测器132可以基于从运动检测器120接收的运动数据来确定用户的位置,并将用户的位置与一个或更多个障碍物的位置进行比较。用户的位置可以包括用户的头部的位置、用户的一只或更多只手的位置或关于用户的身体的插入位置(interpolated position)中的至少一个,碰撞检测器132可以通过组合头部和手的位置,例如通过检索身体形状的模型并将头部和手的位置记录到模型,来确定该关于用户的身体的插入位置。碰撞检测器132可以通过将用户的位置与一个或更多个障碍物的位置进行比较,通过将这些位置相减,来确定碰撞距离。

在一些实施例中,碰撞检测器132通过对头部的位置应用最小半径来确定头部的位置。这可以便于定义贴靠一个或更多个障碍物的游戏空间(例如虚拟环境)的边缘,并且避免下面的情况:在碰撞检测器132确定碰撞距离减小到零之前,用户的身体接触一个或更多个障碍物。在一些实施例中,最小半径大于或等于十厘米并且小于或等于五十厘米。在一些实施例中,最小半径大于或等于二十厘米并且小于或等于四十厘米。在一些实施例中,最小半径大于或等于二十五厘米并且小于或等于三十五厘米。最小半径可以是与人体的宽度或HMD的尺寸相似的尺寸的数量级。

碰撞检测器132可以通过对一只或更多只手的位置应用最小半径来确定一只或更多只手的位置,这可以类似地降低在碰撞检测器132确定碰撞距离减小到零之前用户的手接触一个或更多个障碍物的可能性。应用于一只或更多只手的位置的最小半径可以小于应用于头部的位置的最小半径。

在一些实施例中,碰撞检测器132基于头部的位置和关于一只或更多只手的所及范围的预定特征来限制一只或更多只手的位置。例如,碰撞检测器132可以将一只或更多只手的位置和头部的位置之间的差异与预期的最大距离进行比较,并且响应于该差异大于预期的最大距离,基于预期的最大距离来修改一只或更多只手的位置(例如,通过确定一只或更多只手相对于头部的位置的取向向量,并沿着取向向量将从一只或更多只手的位置到头部的位置的距离减小到不大于预期的最大距离)。在一些实施例中,预期的最大距离对应于人体的模型,例如指示人类所及范围的第95百分位数或第99百分位数的值。在一些实施例中,预期的最大距离是一米。

碰撞检测器132可以基于关于用户的用户简档来确定最大距离。例如,用户简档可以包括关于用户的用户简档数据,例如高度、所及范围或目标警告显示率。处理电路116可以经由HMD或VR系统的用户接口(例如,经由由处理电路116操作的应用)请求用户简档数据。处理电路116监控HMD或VR系统的使用以检测用户简档数据,例如通过使用位置传感器104或运动检测器120来检测用户的移动范围。在一些实施例中,处理电路116响应于HMD或VR系统(或由HMD或VR系统操作的一个或更多个应用)的初始化过程而请求或检测用户简档数据,例如通过经由HMD或VR系统提供请求用户执行移动(例如伸展移动(reachingmovement))的指令。

碰撞检测器132可以使用碰撞距离和下列项中的至少一个来确定碰撞时间:运动数据的速度数据或加速度数据。例如,碰撞检测器132可以将碰撞距离除以速度以确定碰撞时间。

在一些实施例中,碰撞检测器132在预定持续时间内将运动数据修匀。通过将运动数据修匀(例如,将速度或加速度数据修匀),碰撞检测器132可以降低由警告生成器148触发误报警告的可能性,触发误报警告原本可能由短的、快速的或类似脉冲的移动(例如手设备224的快速的突然移动)引起。碰撞检测器132可以确定在预定持续时间内的运动数据的平均值,并且可以使用该平均值来确定碰撞时间。在一些实施例中,预定持续时间小于一秒。在一些实施例中,预定持续时间大于或等于0.05秒且小于或等于0.50秒。在一些实施例中,预定持续时间大于或等于0.1秒且小于或等于0.3秒。在一些实施例中,预定持续时间是0.15秒。碰撞检测器132可以通过在从碰撞检测器132处理运动数据的当前时间向后的预定持续时间内对运动数据采样(例如,对前0.15秒的运动数据采样)来将运动数据修匀。在一些情况下,将运动数据修匀可能引入时延;然而,可以通过增加估计时间(例如,碰撞检测或警告生成出现的时间或碰撞检测出现的速率)来减轻或抵消时延影响。

碰撞检测器132可以使用诸如碰撞距离、碰撞时间和运动数据的参数来确定碰撞可能性。例如,当碰撞距离或碰撞时间减小(或增加)时,碰撞检测器132可以生成相对较大(或较小)的碰撞可能性。碰撞检测器132可以根据速度或加速度的方向生成相对较大(或较小)的碰撞可能性;例如,如果速度指示用户正朝向(或远离)一个或更多个障碍物移动或者加速度指示朝着一个或更多个障碍物的移动的速率正在增加(或减小),则碰撞可能性可以相对较大(或较小)。

在一些实施例中,碰撞检测器132提供速度数据作为碰撞数据。例如,如在本文进一步描述的,警告生成器148可以将速度数据与速度阈值进行比较,并且响应于速度数据超过速度阈值而生成警告。

处理电路116可以包括物体检测器136。物体检测器136可以包括任何功能、操作、例程、逻辑或指令以执行功能,例如检测在真实世界环境中的障碍物及其位置或移动。物体检测器136可以从传感器104接收图像112。物体检测器136可以处理图像112或其部分以检测由图像112表示的一个或更多个物体。例如,物体检测器136可以通过处理图像112的元素(例如像素或像素组),例如通过处理指示颜色、形状、边缘、在像素或像素组之间的对比度以及像素之间的空间关系的像素或像素组,来检测或识别由图像112表示的物体。物体检测器136可以通过执行空间滤波器、分割或被训练来检测物体的机器学习模型来检测物体。物体检测器136可以从图像112中识别候选物体(例如表示边缘的像素组),将候选物体与一个或更多个模板物体(例如,在物体数据库中的模板物体或其特征)进行比较,并且基于匹配模板物体的候选物体来识别图像112中的物体。物体检测器136可以应用各种物体识别算法或模型来识别物体。物体可以是真实世界物体或模拟物体。

在一些实施例中,物体检测器136不具体识别在图像112中的物体的类型、类别或其他标识符。物体检测器136可以从传感器104接收物体已经被传感器104检测到的指示。例如,物体检测器136可以接收特定图像112表示物体的指示(在这种情况下,物体检测器136可以处理图像112以识别对应于该物体的一个或更多个像素)。在一些实施例中,指示可以包括对应于物体的一个或更多个像素。

在一些实施例中,物体检测器136使用物体数据库来检测物体,该物体数据库可以包括各种物体、建筑物、结构、道路或其他户内和户外特征的位置数据。例如,物体检测器136可以与将物体或物体的特征映射到位置数据的物体数据库通信。物体数据库还可以维护关于物体的语义或文本信息,例如关于有关物体的类型、类别、形状、颜色、大小或其他特征的信息。物体检测器136可以接收关于HMD或VR系统的位置的数据(例如,来自参考图2描述的位置传感器220),并使用该数据来从物体数据库中检索一个或更多个候选物体。物体检测器136可以将传感器数据与一个或更多个候选物体以及由物体数据库维护的关于该一个或更多个候选物体的信息进行比较来识别物体(例如,通过使传感器数据与从物体数据库接收的信息匹配)。在一些实施例中,物体数据库包括来自参考障碍物跟踪器140描述的障碍物的数据库的数据,并且物体检测器136可以使用检测到的物体来更新在障碍物的数据库中的障碍物的位置。

物体检测器136可以使用从传感器104接收的信息(例如图像112或图像112表示物体的指示)来确定物体的位置。例如,物体检测器136可以识别对应于物体的一个或更多个像素。在一些实施例中,物体检测器136例如通过将对应于物体的一个或更多个像素分配为物体的位置来将物体的位置确定为在图像112的图像空间中的位置。在一些实施例中,物体检测器136将物体的位置确定为在三维空间(例如真实世界空间、AR或VR空间、在HMD或VR系统周围的环境中的空间)中的位置,例如通过使用深度信息来确定物体的位置。

处理电路116可以包括障碍物跟踪器140。障碍物跟踪器140可以包括任何功能、操作、例程、逻辑或指令以执行功能,例如跟踪一个或更多个障碍物的位置和运动。在一些实施例中,障碍物跟踪器140维护障碍物和与障碍物相关联的位置的数据库。在一些实施例中,障碍物跟踪器140从物体检测器136接收障碍物位置数据。

在一些实施例中,障碍物跟踪器140维护关于在游戏空间中的障碍物的数据库。该数据库可以基于指示障碍物位置的用户输入(例如经由手设备224的操纵(例如在游戏空间中的墙壁、门、地板、天花板或物体的绘制)提供的用户输入)来生成。

障碍物跟踪器140可以包括深度映射器144。深度映射器144可以包括任何功能、操作、例程、逻辑或指令以执行功能,例如生成关于由障碍物跟踪器140跟踪的一个或更多个障碍物的深度信息。深度映射器144可以从传感器104接收图像112,并且使用图像112来生成关于在环境中的一个或更多个障碍物的深度信息,例如深度图(例如深度缓冲区)。深度映射器144可以基于关于用于捕获图像112a…k的图像捕获设备104a…n的信息来生成深度信息。例如,深度映射器144可以基于在第一透镜108a(第一图像112a经由第一透镜108a被捕获)和第二透镜108b(第二图像112b经由第二透镜108b被捕获)之间的基线距离以及第一透镜108a的焦距来生成深度图。深度映射器144可以通过向第一图像112a的至少一个对应像素分配深度值来生成第一深度图,并且通过向第二图像112b的至少一个对应像素分配深度值来生成第二深度图。例如,深度映射器144可以将第一深度图生成为与第一图像112a的像素对应的像素的矩阵,每个第一深度缓冲区像素具有所分配的深度值。深度映射器144可以生成具有比图像112a…k更小的分辨率的深度图。

处理电路116可以包括警告生成器148。警告生成器148可以包括任何功能、操作、例程、逻辑或指令以执行功能,例如响应于从碰撞检测器132接收的运动数据和碰撞数据而生成关于与一个或更多个障碍物的潜在碰撞的警告。例如,警告生成器148可以选择性地生成一个或更多个障碍物的图标、标签或表示,以警告HMD的用户存在潜在的碰撞。例如,警告生成器148可以生成指示表示一个或更多个障碍物的网格化元素(例如网格化墙)的显示数据。警告生成器148可以将警告生成为对应于一个或更多个障碍物相对于用户的移动方向的真实世界位置。

警告生成器148可以通过评估因素的各种组合来生成警告。例如,警告生成器148可以:当用户远离障碍物时不生成警告,即使运动数据指示用户正在相对快速地移动;当用户接近障碍物时至少生成最小的警告,即使运动数据指示用户没有移动。

在一些实施例中,警告生成器148基于碰撞数据确定警告的一个或更多个参数(例如,警告如何被显示的参数)。例如,警告生成器148可以将基于各种过滤器、函数、阈值或其他过程的警告策略应用于碰撞数据以确定是否以及如何显示警告。一个或更多个参数可以包括幅度(例如亮度、强度)、位置、对比度、颜色、频率或间歇性。例如,警告生成器148可以将函数应用于从碰撞检测器132接收的碰撞时间,以基于碰撞时间来确定警告的强度,所述函数例如为随着碰撞时间减少而增加强度的函数。

在一些实施例中,警告生成器148使用关于碰撞数据的阈值来基于碰撞数据确定何时以及如何触发和生成警告。例如,警告生成器148可以将碰撞距离与阈值距离进行比较,并且响应于该距离小于阈值距离而生成警告。警告生成器148可以将碰撞时间与阈值时间进行比较,并且响应于碰撞时间小于阈值时间而生成警告。警告生成器148可以将碰撞可能性与阈值碰撞可能性进行比较,并且响应于碰撞可能性大于阈值碰撞可能性而生成警告。阈值可以是预定的、用户定义的或响应于本文描述的各种比例因子而被调整。

在一些实施例中,警告生成器148向关于用户的头部的运动数据比向关于用户的一只或更多只手的运动数据分配更大的权重。例如,警告生成器148可以将第一权重分配给关于用户的头部的运动数据,该第一权重大于分配给关于用户的一只或更多只手的运动数据的第二权重。关于用户的头部的运动数据的较大权重可以帮助平衡保持沉浸感,同时提供适当的警告,因为头部和手通常可以以不同的权重移动,并且头部的位置可以更一致地表示用户的位置。权重可以被应用以增大碰撞数据(例如碰撞可能性),其中该碰撞数据与最小阈值(例如,高于它将生成警告的最小阈值)进行比较,或者被应用以减小碰撞数据(例如碰撞时间、碰撞距离),其中该碰撞数据与最大阈值(例如,低于它将生成警告的最大阈值)进行比较。权重可以被应用以调整相应的阈值。可以分配权重以使警告生成器148对一只或更多只手的运动比对头部的运动更不灵敏。

在一些实施例中,与关于一只或更多只手的碰撞距离相比,当评估关于头部的碰撞距离时,警告生成器148应用不同的阈值。例如,警告生成器148可以使用对于一只或更多只手的碰撞距离比对于头部的碰撞距离更低的阈值,使得一只或更多只手应该比头部更靠近一个或更多个障碍物以触发警告。

在一些实施例中,警告生成器148使用最小激活距离以基于关于头部的移动(例如,无论头部的速度如何)来触发警告。例如,警告生成器148可以确定(例如,在以前的时间段期间,例如在前一秒、前两秒或前三秒期间)头部移动的距离,将该距离与最小激活距离进行比较,并且不生成警告,除非该距离超过最小激活距离。这对于用户可能进行突然但短暂的移动的情况可能是有用的。在一些实施例中,最小激活距离在HMD后面的方向上比在用户前面的方向上更大,这可以考虑诸如用户的头部向前耷拉(使得头部的位置被检测到的点相比于用户的头部的背面更靠近用户的头部的正面)的因素。

警告生成器148可以独立于阈值或者响应于至少一个阈值被满足而生成最小警告指示符。例如,如果运动检测器120提供指示用户没有移动的运动数据,则警告生成器148可以(例如,在HMD或手设备224周围)提供最小指示符。这可以使警告生成器148能够在保持警告的同时避免沉浸感的失去。

警告生成器148可以基于各种比例因子来按比例缩放碰撞数据或一个或更多个参数。例如,警告生成器148可以使用比例因子,例如游戏空间或环境的尺寸度量、关于由用户执行的一个或更多个先前移动的运动度量、由模拟生成器152使用来生成虚拟环境的应用、或者用户模型或用户简档。

例如,警告生成器148可以确定游戏空间(例如真实世界环境,例如用户正在其中操作HMD的房间)的尺寸度量。警告生成器148可以基于由障碍物跟踪器140维护的关于一个或更多个障碍物(包括诸如墙壁、地板和天花板的障碍物)的边界来确定尺寸度量。警告生成器148可以在尺寸度量减小时减小速度或加速度数据的影响(例如在较小的空间中,用户可能更了解他们的周围环境),并且在尺寸度量增加时增加速度或加速度数据的影响(例如在较大的空间中,用户可能不太了解他们的周围环境,并且可能做出较大的运动)。例如,当尺寸度量增加时,警告生成器148可以向速度或加速度数据分配更大的权重。

警告生成器148可以确定关于由用户执行的最近运动的运动度量。例如,警告生成器148可以监控在以前的时间段(例如前一秒、前两秒、前三秒)期间的速度数据,并将速度数据与速度阈值进行比较。响应于速度数据的瞬时值或修匀值超过速度阈值,警告生成器148可以确定用户正在执行相对大的移动,并且增加用于生成警告的警告生成器148的灵敏度(例如,降低用于评估速度数据的阈值)。例如,如果警告生成器148检测到在以前的时间段期间速度的大幅增加,则警告生成器148降低用于评估速度数据的速度阈值或者用于评估碰撞距离或碰撞时间数据的距离阈值或碰撞时间阈值。在一些实施例中,当确定运动度量时,警告生成器148向关于头部的运动数据比向关于一只或更多只手的运动数据分配更大的权重。

警告生成器148可以基于被操作来生成虚拟环境的应用,调整用于评估碰撞数据的阈值。例如,应用可以指示关于在应用的使用中要执行的预期移动的应用数据。应用数据可以基于关于由任意数量的用户对应用的使用的历史数据;例如,模拟生成器152可以使用运动检测器120来监控在应用的使用期间的运动数据,并维护运动数据的日志,该日志可以用于确定运动数据的统计量度(例如平均速度、中值速度、速度的标准偏差或针对加速度的类似量度)。

在一些实施例中,应用数据指示预期移动的平均速度。警告生成器148可以基于平均速度来确定用于评估碰撞数据的阈值,例如,通过将比例因子应用于平均速度(例如,将阈值设置为平均速度的两倍)或者配置阈值使得当基于平均速度和到一个或更多个障碍物的实际距离的碰撞时间小于阈值时间时警告被触发(例如,如果从当前位置以平均速度移动两秒钟的用户会接触一个或更多个障碍物,则触发警告)。

在一些实施例中,应用数据指示应用的速度等级。例如,警告生成器148可以使用多个速度等级,警告生成器148可以将这些速度等级映射到预期平均速度或特定阈值。速度等级可以是用户定义的;例如,应用的开发者可以将速度等级分配给应用。

警告生成器148可以为HMD的特定用户维护关于触发警告的用户模型。警告生成器148可以(例如,基于由用户执行的各种激活、初始化或登录过程)识别用户的用户标识符,并将用户模型映射到用户标识符。用户模型可以使警告生成器148能够为所识别的用户定制警告的触发。例如,警告生成器148可以使用用户模型基于因素(例如正在被操作的应用(包括上面所述的应用数据)以及由所识别的用户的移动所触发的警告的频率或幅度的指示)来定制警告,这可以使警告生成器148能够在沉浸感和警告之间保持平衡。

处理电路116可以操作用户模型以确定如何生成警告。用户模型可以包括各种无监督或有监督的机器学习模型中的任一个,其可以被训练以输出与警告生成相关联的因素,例如与触发警告相关联的阈值和警告的参数。例如,用户模型可以包括无监督的机器学习模型,其使用碰撞数据进行训练以将碰撞数据(例如,连同检测到的碰撞事件)进行分割或聚类,来识别用于触发警告的阈值。可以使用关于用户以及其他用户的数据来训练用户模型。用户模型可以包括有监督的机器学习模型,其使用碰撞数据进行训练,以基于碰撞数据和碰撞何时发生的指示、用户何时停用警告系统的指示(其可以指示沉浸感的失去)、或目标性能特征(例如包括警告的显示图像(例如,包括关于具有大于阈值数量的像素或像素强度的警告的显示数据)与不包括警告的显示图像的比率)来生成阈值。在一些实施例中,警告生成器148维护数据结构,该数据结构指示以下中的至少一个:正在被操作的应用、在应用的操作期间检测到的运动数据、警告生成器148触发警告时的时间戳、对应于警告生成器148触发警告时的时间戳的碰撞数据或用于触发警告的阈值。警告生成器148可以提供数据结构的条目(entry)作为用户模型的输入以训练用户模型。例如,警告生成器148可以使用户模型基于特定阈值来将数据结构的输入进行聚类,以便实现在沉浸感和警告之间的目标平衡(例如,基于与总的显示图像相比其中存在警告的显示图像来实现特定的警告频率)。

在一些实施例中,警告生成器148在HMD的图像空间中选择性地生成警告。例如,警告生成器148可以生成警告,使得警告在显示器164的周边或显示器164的视场(FOV)的周边中更明显,或者使得警告聚焦在触发警告生成器148生成警告的一个或更多个障碍物的部分上。例如,警告生成器148可以识别周边以对应于使用显示器164显示的图像的边缘(或边缘部分)。周边可以对应于来自使用显示器164显示的图像的边缘的多个像素或者从图像的边缘到图像的中心的像素的一小部分。周边可以包括水平边缘、垂直边缘或其任何组合,包括显示器164具有弯曲或曲线的边缘的特定边缘部分。因此,警告生成器148可以限制警告减损沉浸感的程度,突出显示触发警告的一个或更多个障碍物,并且使警告能够具有方向性。

警告生成器148可以以多种方式中的任一种来确定HMD的FOV。例如,警告生成器148可以向HMD查询关于FOV的数据。警告生成器148可以识别由HMD显示的图像的分辨率(例如,基于图像渲染器160的操作)或显示器164的尺寸中的至少一个以确定FOV。

在一些实施例中,警告生成器148处理从碰撞检测器132接收的碰撞数据以确定在FOV中的一个或更多个障碍物的范围。例如,警告生成器148可以在比确定是否在单个障碍物的基础上生成警告更细粒度的基础上评估碰撞数据,例如通过在逐像素(pixel-by-pixel)或像素组的基础上评估碰撞数据。例如,警告生成器148可以识别对应于一个或更多个障碍物中的选定障碍物的一个或更多个像素的多个子集。警告生成器148可以识别对应于一个或更多个像素的每个子集的碰撞数据,并且评估每个子集以确定对应于该子集的碰撞数据是否指示警告应该被生成(例如,对于像素的特定子集,确定像素的子集是否满足对应的阈值)。响应于确定为子集生成警告,警告生成器148可以将像素的子集指定为障碍物的范围。

在一些实施例中,警告生成器148使用在用户的位置(例如,如由运动检测器120确定的)和障碍物的位置之间的距离来确定对应于障碍物的角度范围,使得当该距离减小时,角度增加。例如,警告生成器148可以确定与障碍物的外观在用户的FOV内的角度大小相对应的角度范围。警告生成器148可以基于在用户的位置和障碍物的位置之间的距离来向表示障碍物的每个像素分配权重(例如,当该距离减小时分配更大的权重)。

警告生成器148可以始终在FOV内显示警告(例如,当警告被确定为被触发时),这可以确保关于用户可能向后或向侧面接近的障碍物的警告被呈现给用户。例如,响应于确定触发警告,警告生成器148可以将用户的方向(例如,基于从传感器104接收的传感器数据或从运动检测器120接收的运动数据)与朝向触发警告的障碍物的方向进行比较。响应于移动方向和朝向障碍物的方向之间的角度大于FOV的范围(例如,从FOV的中心到FOV的边缘的角度),警告生成器148可以确定在FOV的边缘上呈现警告。例如,如果用户正面向前方或向前移动,但是在用户的左侧和后面存在障碍物,则用户的方向和朝向障碍物的方向之间的角度可以大于FOV的范围,例如从用户的方向到FOV的左边缘的角度在70度和85度之间,而从用户的方向到朝向障碍物的方向的角度在150度和175度之间(从用户的方向或FOV的中心逆时针地被测量)。警告生成器148可以确定沿着FOV的左边缘呈现关于在用户后面的障碍物的警告。在一些实施例中,警告是音频警告或触觉警告,例如在手设备224上的振动——如果握着该设备的手将要与物体碰撞,或者在HMD上的振动——如果头部将要撞击物体。

警告生成器148可以向图像渲染器160提供带有警告的指令,以使图像渲染器160应用各种显示效果来在FOV的周边处显示警告,以便于用户意识到该警告。例如,图像渲染器160可以增加与在FOV的周边处的警告相关联的强度或对比度中的至少一个,例如以使警告具有发光外观。

在一些实施例中,警告生成器148使用来自深度映射器144的深度图数据来生成警告以包括一个或更多个障碍物的表示。例如,警告生成器148可以使用深度图数据来监控一个或更多个障碍物(包括可能在真实世界环境中移动的物体)的位置。警告生成器148可以当用户和一个或更多个障碍物之间的相对距离改变时周期性地对深度图数据进行采样以使用深度图数据作为碰撞距离数据,并且评估深度图数据以确定是否生成警告(以及确定警告的参数)。

在一些实施例中,警告生成器148(或图像渲染器160)使用深度图数据来生成关于一个或更多个障碍物的显示数据。例如,警告生成器148可以使用深度图数据来确定用于显示一个或更多个障碍物的像素。在一些实施例中,警告生成器148以不同于用于显示虚拟环境的方式生成关于一个或更多个障碍物的显示数据,以帮助将真实世界障碍物与在虚拟环境中的物体区分开。警告生成器148可以将如本文所述的周边比例因子(例如,在HMD的FOV的周边处的相对更高的强度)应用于使用深度图数据生成的关于一个或更多个障碍物的显示数据。

处理电路116可以包括模拟生成器152。模拟生成器152可以包括任何功能、操作、例程、逻辑或指令以执行功能,例如操作应用(例如游戏、训练器或模拟器)、接收用户输入数据、基于用户输入数据更新应用的操作以及向图像渲染器160提供显示数据以使图像渲染器160能够渲染显示图像用于显示虚拟环境。模拟生成器152可以接收来自传感器104的传感器数据或来自运动检测器120的运动数据(例如关于用户的头部或手的移动的数据),处理传感器数据或运动数据以识别用户输入数据,并基于识别出的用户输入数据更新应用的操作。例如,模拟生成器152可以使用运动检测器120来检测用户的手的移动(例如摆动、推或拉),并使用该移动作为应用的用户输入。

模拟生成器152可以生成对应于显示数据的深度缓冲区信息,使图像渲染器160能够渲染3D图像数据。模拟生成器152可以从深度映射器144接收关于一个或更多个障碍物的深度图数据,以操作应用或者使用深度图数据生成显示数据。

处理电路116可以包括图像渲染器160。图像渲染器160可以是3D图像渲染器。图像渲染器160可以使用图像相关的输入数据来处理、生成和渲染例如经由HMD在一个或更多个显示设备上显示或呈现的显示或呈现图像。图像渲染器160可以生成或创建场景或视图的2D图像,用于显示在显示器164上并以3D方式表示场景或视图。图像渲染器160可以基于从模拟生成器152接收的显示数据(例如,从模拟生成器152接收的深度缓冲区)以及从警告生成器148接收的显示数据(例如,指示在何处以及如何显示警告的显示数据)来生成图像用于显示在显示器164上。待渲染的显示或呈现数据可以包括在场景或视图中的3D物体的几何模型。图像渲染器160可以确定、估算(compute)或计算(calculate)待渲染的显示或图像数据的像素值以提供期望的或预定的3D图像,例如由传感器104捕获的图像112的3D显示数据。

图像渲染器160可以基于时间和/或空间参数向一个或更多个显示器164渲染显示数据的帧。图像渲染器160可以在时间上顺序地(例如,对应于图像被传感器104捕获的时间或者显示数据的帧从模拟生成器152被接收的时间)渲染图像数据的帧。图像渲染器160可以基于位置和/或取向(例如,如由传感器104指示的HMD的位置和取向)的变化来渲染显示数据的帧。图像渲染器160可以基于左眼视图和右眼视图来渲染显示数据的帧,例如先显示左眼视图,随后显示右眼视图,反之亦然。

图像渲染器160可以使用关于传感器104的移动的运动数据来生成显示图像。例如,传感器104可以由于戴着包括传感器104的HMD(例如,如参考图2的HMD系统200所描述的)的用户的头部的移动而改变位置或取向中的至少一个。处理电路116可以从位置传感器(例如,参考图2描述的位置传感器220)接收传感器数据。

尽管图像渲染器160被示为处理电路116的一部分,但是图像渲染器可以被形成为单独的设备或部件(诸如,例如在HMD内的显示设备)的其他处理电路的一部分。

系统100可以包括一个或更多个显示器164。一个或更多个显示器164可以是任何类型和形式的电子视觉显示器。显示器可以具有或被选择为具有预定的分辨率和刷新率以及尺寸。一个或更多个显示器可以具有任何类型的技术,例如基于LCD、LED、ELED或OLED的显示器。一个或更多个显示器的形状因子可以配合在作为眼镜或护目镜的HMD内,其中显示器是在眼镜或护目镜的框架内的倾斜件(leans)。显示器164可以具有与处理电路116或图像渲染器160、模拟生成器152或传感器104的刷新率或帧速率相同或不同的刷新率。

现在参考图2,在一些实现中,HMD系统200可以用于实现系统100。HMD系统200可以包括HMD主体202、左传感器104a(例如左图像捕获设备)、右传感器104b(例如右图像捕获设备)和显示器164。HMD主体202可以具有各种形状因子,例如眼镜或头戴装置。传感器104a、104b可以安装到HMD主体202或集成在HMD主体202中。左传感器104a可以捕获对应于第一视图(例如左眼视图)的第一图像,以及右传感器104b可以捕获对应于第二视图(例如右眼视图)的图像。在一些实施例中,HMD系统200不包括图像捕获设备。HMD系统200可用于实现VR功能,例如以经由显示器164呈现虚拟环境。

HMD系统200可以包括顶部传感器104c(例如顶部图像捕获设备)。顶部传感器104c可以捕获对应于不同于第一视图或第二视图的第三视图的图像。例如,顶部传感器104c可以被定位在左传感器104a和右传感器104b之间并且在左传感器104a和右传感器104b之间的基线上方。这可以使顶部传感器104c能够捕获具有深度信息的图像,该深度信息可能不容易从由左传感器104a和右传感器104b捕获的图像中提取。例如,可能难以从由左传感器104a和右传感器104b捕获的图像中有效地提取深度信息,其中边缘(例如桌子的边缘)平行于在左传感器104a和右传感器104b之间的基线。与左传感器104a和右传感器104b相比,与基线间隔开的顶部传感器104c可以捕获第三图像以具有不同的视角,且因此使得能够从第三图像中提取不同的深度信息。

HMD系统200可以包括处理电路116,处理电路116可以执行参考图1描述的至少一些功能,包括从位置传感器104(例如头部跟踪传感器)接收传感器数据以检测HMD的移动,并基于HMD的移动生成关于与障碍物的潜在碰撞的警告。

HMD系统200可以包括通信电路204。通信电路204可用于向客户端设备208或服务器212中的至少一个传输电子通信信号和从客户端设备208或服务器212中的至少一个接收电子通信信号。通信电路204可以包括有线或无线接口(例如插孔(jack)、天线、发射机、接收机、收发机、有线终端),用于与各种系统、设备或网络进行数据通信。例如,通信电路204可以包括以太网卡和端口,用于经由基于以太网的通信网络发送和接收数据。通信电路204可以经由局域网(例如建筑物LAN)、广域网(例如互联网、蜂窝网络)进行通信,和/或进行直接通信(例如NFC、蓝牙)。通信电路204可以进行有线和/或无线通信。例如,通信电路204可以包括一个或更多个无线收发机(例如Wi-Fi收发机、蓝牙收发机、NFC收发机、蜂窝收发机)。例如,通信电路204可以与客户端设备208或服务器212中的至少一个建立有线或无线连接。通信电路204可以与客户端设备208建立USB连接。

可以使用不同的架构来部署HMD系统200。在一些实施例中,HMD(例如HMD主体202和附接到HMD主体202的部件)包括处理电路116,并且是独立的(self-contained)便携式单元。在一些实施例中,HMD具有处理电路116的部分,这些部分与例如以分级设备、移动电话或可穿戴计算设备的形式的具有处理电路或其部分的任何类型的便携式或移动计算设备或配套设备协作或结合来工作。在一些实施例中,HMD具有处理电路116的与桌面计算设备(desktop computing device)的处理电路或其部分协作或结合来工作的部分。在一些实施例中,HMD具有处理电路116的与服务器计算设备的处理电路或其部分协作或结合来工作的部分,该服务器计算设备可以远程地部署在数据中心或云计算环境中。在上述实施例中的任一个中,HMD或结合HMD工作的任何计算设备可以在执行本文描述的任何功能和操作时与一个或更多个服务器通信。

客户端设备208可以是以任何形状因子的任何类型和形式的通用或专用计算设备,例如移动或便携式设备(电话、平板电脑、膝上型电脑等)或者桌面计算设备或个人计算(PC)设备。在一些实施例中,客户端设备可以是例如以分级设备的形式的专用设备,其可以具有处理电路或其部分。专用设备可以被设计成例如通过经由任何类型和形式的附属附件将客户端设备208附接到衣服或身体,由用户在戴着HMD时携带。客户端设备208可以用于执行关于图1和图3描述的图像和渲染处理流水线的任何部分。HMD可以执行图像和渲染处理流水线的一些或其他部分,例如生成虚拟环境的显示图像并将显示图像渲染到显示器164。HMD可以通过客户端设备208传输和接收数据,以运用客户端设备208的计算能力和资源,客户端设备208的计算能力和资源可以具有比HMD的规格更高的规格。

服务器212可以是向一个或更多个客户端设备208或充当客户端的其他设备提供应用、功能或服务的任何类型或形式的计算设备。在一些实施例中,服务器212可以是客户端设备208。服务器212可以部署在经由一个或更多个网络可访问的数据中心或云计算环境中。HMD和/或客户端设备208可以使用和运用服务器212的计算能力和资源。HMD和/或客户端设备208可以实现关于图1和图3描述的图像和渲染处理流水线的任何部分。服务器212可以实现关于图1和图3描述的图像和渲染处理流水线的任何部分,以及在一些情况下实现不由客户端设备208或HMD执行的图像和渲染处理流水线的任何部分。服务器212可以用于用对在HMD和/或客户端设备208上的应用、软件、可执行指令和/或数据的任何更新来更新HMD和/或客户端设备208。

系统200可以包括位置传感器220。位置传感器220可以输出主体202的位置或取向中的至少一个。因为图像捕获设备104a、104b、104c可以固定到主体202(例如,在相对于位置传感器220的预定位置处),位置传感器220可以输出每个传感器104a、104b、104c的位置或取向中的至少一个,其可以用于经由图像捕获设备104a、104b、104c检测到的障碍物的深度映射。位置传感器220可以包括惯性测量单元(IMU)、加速度计、陀螺仪或磁力计(例如磁罗盘)中的至少一个。

系统200可以包括至少一个手设备224。手设备224的尺寸和形状可以被制成由用户的一只或更多只手握持。手设备224可以作为用户控制设备来操作;例如,手设备224可以包括可以由用户操纵以生成用户输入的各种用户接口元素(例如按钮、开关、拨动开关等)。例如,手设备224可以用作用于基于由HMD系统200对应用的操作来与经由显示器164呈现的虚拟环境交互的控制器。手设备224可以使用各种有线或无线连接与通信电路204、客户端设备208和/或服务器212通信。手设备224可以包括可以类似于位置传感器220的一个或更多个位置传感器228。例如,位置传感器228可以包括惯性测量单元(IMU)、加速度计、陀螺仪或磁力计(例如磁罗盘)中的至少一个,其可以输出包括手设备224的位置、速度、加速度或者取向中的至少一个的传感器数据,以便处理电路116使用传感器数据来检测用户的一只或更多只手的移动,以确定是否生成关于在用户的一只或更多只手与在HMD 200周围的真实世界环境中的障碍物之间的潜在碰撞的警告。

现在参考图3,示出了用于生成动态障碍物碰撞警告的方法。在一些实施例中,方法300可以包括以下步骤中的一个或更多个。方法300可以包括识别在HMD周围的真实世界环境中的一个或更多个障碍物(305),该HMD用于向HMD的用户呈现虚拟环境。方法300可以包括检测一个或更多个障碍物的位置(310)。方法300可以包括检测关于用户的头部的头部运动数据(315)。方法300可以包括检测关于用户的一只或更多只手的手运动数据(320)。该方法可以包括基于障碍物位置和运动数据,检测在用户和一个或更多个障碍物之间的潜在碰撞(325)。该方法可以包括基于警告策略来评估潜在碰撞以确定是否以及如何显示关于潜在碰撞的警告(330)。该方法可以包括生成表示警告的显示数据(335),该显示数据可以使用HMD来呈现。可以使用本文描述的各种设备和系统(包括系统100、处理电路116和系统200)来执行方法300。

在305,识别在HMD周围的真实世界环境中的一个或更多个障碍物。HMD可以用于实现VR系统,使得HMD的用户可以使他们对真实世界环境的视野至少部分地被HMD遮挡,同时HMD向用户呈现虚拟或模拟环境。在一些实施例中,HMD或VR系统维护在真实世界环境中的障碍物的数据库,一个或更多个障碍物可以从该数据库中被识别。可以响应于指示障碍物的用户输入来填充数据库。在一些实施例中,识别一个或更多个障碍物包括经由VR系统从用户请求关于一个或更多个障碍物的数据。例如,VR系统可以将请求用户操作与HMD相关联的手设备(例如手持控制器)的指令提供给用户,以指示对应于一个或更多个障碍物的边界。可以将障碍物记录到与HMD的取向相对应的其中障碍物被识别出的参考帧,使得障碍物随后可以在该参考帧中被取回,并且当HMD的取向改变时被变换到不同的参考帧。

在一些实施例中,基于捕获真实世界环境的图像来识别一个或更多个障碍物。例如,与HMD相关联的一个或更多个图像捕获设备可以检测真实世界环境的图像。可以使用各种物体识别技术来处理图像以检测对应于一个或更多个障碍物的物体。在一些实施例中,检测到的物体可用于更新障碍物的数据库。响应于使用真实世界环境的图像来检测障碍物,可以对障碍物应用深度映射以确定障碍物相对于HMD的距离(例如,使用HMD的左眼图像捕获设备和右眼图像捕获设备,或者使用与HMD分离的图像捕获设备,例如3D相机)。

在310,检测一个或更多个障碍物的位置。可以相对于用户的位置(例如可以基于来自HMD的位置传感器的位置数据或来自一个或更多个手设备的位置传感器的位置数据中的至少一个来确定的位置)来检测一个或更多个障碍物的位置。可以通过基于用户的位置或取向中的至少一个调整如在障碍物数据库中维护的(或如经由深度映射而确定的)一个或更多个障碍物的位置来检测一个或更多个障碍物的位置。例如,用户的位置或取向中的至少一个可以周期性地被采样(例如,基于来自VR系统的位置传感器的传感器数据,因而考虑用户的移动)并与一个或更多个障碍物的位置的参考帧进行比较以确定障碍物相对于用户的位置。

在315,检测关于用户的头部的移动的头部运动数据。可以通过对来自一个或更多个头部跟踪传感器的传感器数据进行采样来检测头部运动,头部跟踪传感器可以耦合到用户正戴着的HMD。头部运动数据可被处理以确定用户的头部的位置、速度、加速度或取向(例如方向)中的至少一个或头部的移动。在一些实施例中,缓冲区可以被应用于头部运动数据。例如,指示用户的头部或身体的大小的缓冲区可以被应用于头部的位置,使得响应于头部的位置而执行的碰撞检测和警告生成过程可以考虑头部或身体的大小。

在320,检测关于用户的一只或更多只手的移动的手运动数据。可以通过对来自一个或更多个手跟踪传感器的传感器数据进行采样来检测手运动数据,手跟踪传感器可以耦合到用户正在操纵的手设备。手运动数据可被处理以确定用户的一只或更多只手的位置、速度、加速度或取向(例如方向)中的至少一个或一只或更多只手的移动。在一些实施例中,缓冲区可以被应用于手运动数据。例如,指示用户的一只或更多只手的大小的缓冲区可以被应用于一只或更多只手的位置,使得响应于一只或更多只手的位置而执行的碰撞检测和警告生成过程可以考虑一只或更多只手的大小。在一些实施例中,一只或更多只手的位置可以被修改为小于距头部的位置的阈值距离。例如,基于用户的预期所及范围(例如,所及范围的第95百分位数或第99百分位数)的比例因子可以被应用于一只或更多只手的位置。可以以与检测头部运动数据的采样率相等或不同的采样率检测手运动数据。

在325,可以检测在用户和在真实世界环境中的一个或更多个障碍物之间的潜在碰撞。可以基于运动数据和一个或更多个障碍物的位置来检测潜在碰撞。可以响应于各种触发条件例如在时间表或周期性基础上(例如,每10毫秒检测潜在碰撞),或者响应于检测到用户的至少阈值量的移动(例如,移动大于1米;以大于0.5米/秒的速度移动),来检测潜在碰撞。例如,可以通过将用户的位置、移动方向或移动速率(例如速度、加速度)与一个或更多个障碍物的位置进行比较来检测潜在碰撞。

在一些实施例中,手运动数据和头部运动数据被独立地评估以检测潜在碰撞。例如,如果一只或更多只手被预期与一个或更多个障碍物碰撞,即使头部不被预期与一个或更多个障碍物碰撞,潜在碰撞也可以被检测到(反之亦然)。

在一些实施例中,基于运动数据来确定碰撞距离、碰撞时间或碰撞可能性中的至少一个。可以通过将用户的位置与一个或更多个障碍物的位置进行比较来确定碰撞距离。可以通过将速度数据应用于碰撞距离来确定碰撞时间。可以通过评估因素(例如碰撞距离、碰撞时间以及运动数据是否指示用户正朝向或远离一个或更多个障碍物移动)来确定碰撞可能性。

在一些实施例中,在确定潜在碰撞之前,运动数据被修匀。例如,可以监控以前的一组速度或加速度数据样本。该以前的一组可以包括多个数据样本(例如10个数据样本)或者对应于持续时间的多个数据样本(例如0.15秒的数据样本)。可以基于因素(例如处理需求或警告被触发的频率)来动态地调整用于将运动数据修匀的数据样本的数量。可以通过在多个数据样本上对运动数据取平均或者通过将每个数据样本之间的变化率减小为小于阈值变化率(例如,如果在第一时间点的速度是1米/秒并且在第二时间点的速度是1.5米/秒,则将每秒0.5米/秒的变化率减小为小于或等于阈值变化率,例如每秒0.25米/秒,使得在第二时间点的用于数据样本的值是1.25米/秒)来将运动数据修匀。

在330,通过基于警告策略评估潜在碰撞来生成警告。可以响应于碰撞数据被生成,或者以小于碰撞数据的生成的频率的评估速率,评估碰撞数据。可以响应于检测到用户的移动大于阈值量的移动来评估碰撞数据。

可以基于将各种过滤器、函数或其他过程应用于碰撞数据以确定是否以及如何显示警告来生成警告。可以基于(例如,在应用过滤器、函数或其他过程之前或之后)将碰撞数据与相应的阈值进行比较来生成警告。可以基于碰撞数据来确定警告的参数,例如幅度(例如亮度、强度)、位置、对比度、颜色、频率或间歇性。例如,当碰撞时间减少时,警告的强度可以增加。

在一些实施例中,关于一只或更多只手的碰撞数据相对于关于头部的碰撞数据独立地或分开地被评估。例如,与关于头部的碰撞数据相比,可以对关于一只或更多只手的碰撞数据应用不同的权重。在一些实施例中,与关于用户的一只或更多只手的数据相比,将更大的权重分配给关于用户的头部的数据。最小激活距离可用于基于头部的移动来触发警告。

可以响应于关于一只或更多只手的碰撞数据或关于头部的碰撞数据中的至少一个满足警告策略而生成警告。在一些实施例中,警告策略响应于关于一只或更多只手的碰撞数据和关于头部的碰撞数据各自满足相应的阈值或其他警告条件而触发警告。

在一些实施例中,碰撞数据或警告的参数可以基于因素(例如HMD正在其中操作的真实世界环境的尺寸度量、关于被执行的最近运动的运动度量、被操作以生成虚拟环境的应用或者关于特定用户的移动的模型)来按比例缩放。可以基于关于一个或更多个障碍物或真实世界环境的边界(例如墙壁、地板和天花板)来确定尺寸度量。当用户在真实世界环境中移动时,例如当用户在真实世界环境的房间或其他区域之间移动时通过使用深度图数据,可以动态地更新尺寸度量。可以通过监控在以前的时间段(例如前两秒)内的运动数据并将运动数据与运动阈值(例如速度阈值或加速度阈值)进行比较来确定运动度量。响应于运动数据超过运动阈值,由警告策略使用来确定是否触发警告的阈值可以降低,使得警告生成可以对运动数据更灵敏。在一些实施例中,运动度量可以选择性地被应用于头部的移动或者以更大的幅度被应用于头部的移动,因为可能存在下面的情况:手以快速方式移动,即使用户的整体位置没有改变(例如,用户的脚的移动不超过几英寸或一英尺)。应用可以指示在应用的使用期间移动的预期速度或者可以被映射到预期速度的速度等级。模型可以使用如下信息,例如正被操作的应用、在应用的操作期间检测到的运动数据、警告被触发时的时间戳、对应于警告被触发时的时间戳的碰撞数据或用于触发警告的阈值,并将该信息映射到用户以确定如何为用户控制警告生成。

在一些实施例中,基于警告率来控制警告生成。例如,警告率可以对应于相对于显示图像的总数量在其中显示警告(或者当警告以大于阈值幅度的幅度被显示时,例如如果最小警告常常或始终被显示)的显示图像的帧数量。警告率可以指示沉浸感损失率。用于确定是否生成警告的函数或阈值或与警告相关联的参数可以被调整以将警告率保持在目标范围内。例如,在特定时间段(例如,以前的秒数或分钟数;应用的以前使用;HMD的以前使用)内的警告率可以被监控,并与最小阈值或最大阈值中的至少一个进行比较;响应于警告率不在最小阈值或最大阈值中的至少一个外部,用于确定是否触发警告的阈值可以被调整,使得警告率将酌情增加或减小。在一些实施例中,用于确定是否触发警告的阈值具有绝对极限,这可以确保阈值不被调整到在警告被显示时用户可能难以及时做出反应以避免碰撞的点。

警告可以响应于用户模型而生成。用户模型可以包括机器学习模型,其被训练以基于碰撞数据以及碰撞何时发生的指示或关于沉浸感何时失去的因素来生成警告或触发警告的生成。碰撞数据可用于更新用户模型。可以将碰撞数据提供给用户模型,以使用户模型基于碰撞数据生成用于生成警告的阈值或参数。

在一些实施例中,通过将触发警告的一个或更多个障碍物的部分的位置映射到HMD的显示器的像素来生成警告。例如,一个或更多个障碍物的部分的位置可以周期性地被采样和更新(例如,当用户移动时),并且在由HMD显示的图像的图像空间中的像素可以基于用户的方向或HMD的FOV和位置来被识别。在一些实施例中,像素的角度范围用于表示在FOV中的一个或更多个障碍物,并且可以基于在用户和一个或更多个障碍物之间的距离来按比例缩放该角度范围。在一些实施例中,一个或更多个障碍物可以位于FOV之外,在这种情况下,可以沿着FOV的边缘或边缘部分来呈现警告。

在335,生成表示关于潜在碰撞的警告的显示数据。可以使用一个或更多个障碍物的图标、标签或表示来生成警告,以警告HMD的用户存在潜在碰撞。例如,警告可以被生成为包括指示表示一个或更多个障碍物的网格化元素(例如网格化墙)的显示数据。警告可以被生成为对应于一个或更多个障碍物相对于用户的移动方向的真实世界位置,使得警告可以指示在用户感知的虚拟环境内的真实世界位置。如上所述,可以在HMD的FOV的边缘或边缘部分处生成警告,例如如果一个或更多个障碍物在用户的侧面或后面。警告可以与由HMD显示的每个图像一起显示,也可以以与图像由HMD显示的帧速率不同的帧速率来显示。可以使用关于一个或更多个障碍物的深度图数据来显示警告。警告可以在使用HMD显示的虚拟环境中被呈现为覆盖图。在一些实施例中,警告是音频警告或触觉警告,例如在手设备上的振动——如果握住该设备的手将要与物体碰撞,或者在头戴式显示器上的振动——如果头部将要撞击物体。

可以基于各种条件来执行方法300或其步骤或操作。可以响应于检测到HMD或VR系统在初始化、重启或设置模式中来执行方法300,例如以校准一个或更多个障碍物相对于HMD的位置。在一些实施例中,在周期性基础上执行方法300,例如以周期性地检测运动数据并基于运动数据确定是否可能发生潜在碰撞。可以响应于用户输入,例如指示检测到潜在碰撞或刷新警告(例如,呈现一个或更多个障碍物的位置的部分指示或完整指示,即使警告原本不会被触发)的指令的用户输入,执行方法300。

本文描述的各种操作可以在计算机系统上实现。图4示出了可用于实现本公开的代表性服务器系统400和客户端计算机系统414的框图。服务器系统400或类似系统可以实现本文描述的服务或服务器或其部分。客户端计算机系统414或类似系统可以实现本文描述的客户端。本文描述的系统100、200和其他系统中的每一个都可以结合系统400、414的特征。

服务器系统400可以具有结合多个模块402(例如在刀片服务器(blade server)中的刀片)的模块化设计;虽然示出了两个模块402,但是可以提供任意数量的模块402。每个模块402可以包括处理单元404和本地储存器406。

处理单元404可以包括可以具有一个或更多个核心的单个处理器,或者可以包括多个处理器。处理单元404可以包括通用主处理器以及一个或更多个专用协处理器,例如图形处理器、数字信号处理器等。可以使用定制电路(例如专用集成电路(ASIC)或现场可编程门阵列(FPGA))来实现一些或所有处理单元404。这样的集成电路执行存储在电路本身上的指令。处理单元404可以执行存储在本地储存器406中的指令。在处理单元404中可以包括任何组合的任何类型的处理器。

本地储存器406可以包括易失性存储介质(例如传统的DRAM、SRAM、SDRAM等)和/或非易失性存储介质(例如磁盘或光盘、闪存等)。被结合在本地储存器406中的存储介质根据需要可以是固定的、可移动的或可升级的。本地储存器406可以在物理上或逻辑上被分成各种子单元,例如系统存储器、只读存储器(ROM)和永久存储设备。系统存储器可以是读写存储器设备或易失性读写存储器,例如动态随机存取存储器。系统存储器可以存储处理单元404在运行时需要的一些或所有指令和数据。ROM可以存储处理单元404所需的静态数据和指令。永久存储设备可以是即使当模块402断电时也可以存储指令和数据的非易失性读写存储器设备。如本文使用的术语“存储介质”包括数据可以无限期地被存储在其中(遭受盖写(overwriting)、电干扰、功率损失等)的任何介质,并且不包括无线地或通过有线连接传播的载波和瞬态电子信号。

本地储存器406可以存储将由处理单元404执行的一个或更多个软件程序,例如操作系统和/或实现各种服务器功能(例如系统100或本文描述的任何其他系统或与系统100或本文描述的任何其他系统相关联的任何其他服务器的功能)的程序。

“软件”通常指指令的序列,指令在由处理单元404执行时使服务器系统400(或其部分)执行各种操作,因此定义了实施和执行软件程序的操作的一个或更多个特定机器实现。指令可以作为驻留在只读存储器中的固件和/或作为存储在非易失性存储介质中的程序代码来被存储,程序代码可以被读入到易失性工作存储器内用于由处理单元404执行。软件可以被实现为单个程序、或单独的程序或程序模块的集合,这些单独的程序或程序模块根据需要进行交互作用。处理单元404可以从本地储存器406(或下面描述的非本地储存器)中检索要执行的程序指令和要处理的数据,以便执行上面所述的各种操作。

在一些服务器系统400中,多个模块402可以经由总线或其他互连408互相连接,形成支持模块402和服务器系统400的其他部件之间的通信的局域网。可以使用各种技术(包括服务器机架、集线器、路由器等)来实现互连408。

广域网(WAN)接口410可以提供在局域网(互连408)和更大的网络(例如互联网)之间的数据通信能力。可以使用传统的或其他活动技术,包括有线技术(例如以太网、IEEE802.3标准)和/或无线技术(例如Wi-Fi、IEEE 802.11标准)。

本地储存器406可以为处理单元404提供工作存储器,提供对待处理的程序和/或数据的快速访问,同时减少在互连408上的流量。可以通过可以连接到互连408的一个或更多个大容量存储子系统412在局域网上提供对大量数据的存储。大容量存储子系统412可以基于磁、光、半导体或其他数据存储介质。可以使用直接连接存储(direct attachedstorage)、存储区域网络、网络连接存储(network-attached storage)等。在本文被描述为由服务或服务器产生、消耗或维护的任何数据存储或数据的其他集合可以存储在大容量存储子系统412中。额外的数据存储资源可以是经由WAN接口410可访问的(潜在地具有增加的时延)。

服务器系统400可以响应于经由WAN接口410接收的请求而操作。例如,模块402中的一个可以实现监督功能,并响应于接收到的请求而将离散任务分配给其他模块402。可以使用传统的工作分配技术。当请求被处理时,结果可以经由WAN接口410返回给请求者。这样的操作通常可以是自动化的。WAN接口410可以将多个服务器系统400连接到彼此,提供能够管理大量活动的可扩展系统。可以使用用于管理服务器系统和服务器群(协作的服务器系统的集合)的传统或其他技术,包括动态资源分配和再分配。

服务器系统400可以经由广域网(例如互联网)与各种用户拥有的或用户操作的设备交互。用户操作的设备的示例在图4中被示为客户端计算系统414。客户端计算系统414可以被实现为例如消费者设备,例如智能手机、其他移动电话、平板计算机、可穿戴计算设备(例如智能手表、眼镜)、台式计算机、膝上型计算机等。

例如,客户端计算系统414可以经由WAN接口410进行通信。客户端计算系统414可以包括传统的计算机部件,例如处理单元416、存储设备418、网络接口420、用户输入设备422和用户输出设备424。客户端计算系统414可以是以各种形状因子实现的计算设备,例如台式计算机、膝上型计算机、平板计算机、智能手机、其他移动计算设备、可穿戴计算设备等。

处理器416和存储设备418可以类似于上面所述的处理单元404和本地储存器406。可以基于要被放置在客户端计算系统414上的需求来选择合适的设备;例如,客户端计算系统414可以被实现为具有有限处理能力的“瘦”客户端,或被实现为高功率计算设备。客户端计算系统414可以配备有由处理单元416可执行的程序代码,以实现与消息管理服务的服务器系统400的各种交互,例如访问消息、对消息执行动作以及上面所述的其他交互。一些客户端计算系统414也可以独立于消息管理服务而与消息传递服务进行交互。

网络接口420可以提供到广域网(例如互联网)的连接,服务器系统的WAN接口410也连接到该广域网。网络接口420可以包括有线接口(例如以太网)和/或实现各种RF数据通信标准(例如Wi-Fi、蓝牙或蜂窝数据网络标准(例如3G、4G、LTE等))的无线接口。

用户输入设备422可以包括任何设备(或多个设备),用户可以经由该设备向客户端计算系统414提供信号;客户端计算系统414可以将信号解释为特定用户请求或信息的指示。用户输入设备422可以包括键盘、触摸板、触摸屏、鼠标或其他定点设备、滚轮、点击轮、拨号盘、按钮、开关、小键盘(keypad)、麦克风等中的任一个或全部。

用户输出设备424可以包括任何设备,客户端计算系统414可以经由该设备向用户提供信息。例如,用户输出设备424可以包括显示器以显示由客户端计算系统414生成或被传送到客户端计算系统414的图像。显示器可以结合各种图像生成技术,例如液晶显示器(LCD)、包括有机发光二极管(OLED)的发光二极管(LED)、投影系统、阴极射线管(CRT)等,以及支持电子器件(例如数模或模数转换器、信号处理器等)。可以使用既用作输入设备又用作输出设备的诸如触摸屏的设备。除了显示器之外或者代替显示器,可以提供输出设备424。示例包括指示灯、扬声器、触觉“显示”设备、打印机等等。

一些实现包括将计算机程序指令存储在计算机可读存储介质中的电子部件,例如微处理器、储存器和存储器。本说明书中描述的许多特征可以被实现为被指定为编码在计算机可读存储介质上的一组程序指令的过程。当这些程序指令由一个或更多个处理单元执行时,它们使处理单元执行在程序指令中指示的各种操作。程序指令或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子部件或使用解释器的微处理器执行的更高级代码的文件。通过适当的编程,处理单元404和416可以为服务器系统400和客户端计算系统414提供各种功能,包括在本文被描述为由服务器或客户端执行的任何功能或者与消息管理服务相关联的其他功能。

将认识到,服务器系统400和客户端计算系统414是说明性的,并且变化和修改是可能的。结合本公开使用的计算机系统可以具有本文没有具体描述的其他能力。此外,虽然参考特定的块描述了服务器系统400和客户端计算系统414,但是应当理解,这些块为了描述的方便而被定义,且并不意欲暗示组成部分的特定物理布置。例如,不同的块可以但不必需位于同一设施中、同一服务器机架中或同一主板上。此外,这些块不需要对应于物理上不同的部件。块可以被配置成例如通过对处理器编程或提供适当的控制电路来执行各种操作,并且根据如何获得初始配置,各种块可能是或可能不是可重新配置的。本公开的实现可以在各种装置(包括使用电路和软件的任意组合实现的电子设备)中被实现。

现在已经描述了一些说明性的实现,显然前述内容是说明性的而不是限制性的,已经通过示例的方式给出。具体而言,尽管本文呈现的许多示例涉及方法动作或系统元素的特定组合,但是那些动作和那些元素可以以其他方式组合来实现相同的目标。结合一个实现讨论的动作、元素和特征不旨在被排除在其他实现或实现中的类似角色之外。

用于实现结合本文公开的实施例描述的各种过程、操作、说明性逻辑、逻辑块、模块和电路的硬件和数据处理部件可以用通用单芯片或多芯片处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件或其被设计用于执行本文描述的功能的任何组合来实现或执行。通用处理器可以是微处理器,或者任何传统的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、与DSP内核结合的一个或更多个微处理器、或者任何其他这样的配置。在一些实施例中,特定的过程和方法可以由特定于给定功能的电路来执行。存储器(例如,存储器、存储器单元、存储设备等)可以包括一个或更多个设备(例如,RAM、ROM、闪存、硬盘储存器等)用于存储数据和/或计算机代码,以完成或促进本公开中描述的各种过程、层和模块。存储器可以是或包括易失性存储器或非易失性存储器,并且可以包括数据库部件、目标代码部件、脚本部件或用于支持本公开中描述的各种活动和信息结构的任何其他类型的信息结构。根据示例性实施例,存储器经由处理电路可通信地连接到处理器,并且包括用于(例如,通过处理电路和/或处理器)执行本文描述的一个或更多个过程的计算机代码。

本公开设想了用于完成各个操作的方法、系统和在任何机器可读介质上的程序产品。可以使用现有的计算机处理器、或通过为此目的或另一目的而结合的恰当系统的专用计算机处理器、或通过硬接线的系统来实现本公开的实施例。本公开的范围之内的实施例包括程序产品,其包括用于携带或具有存储于其上的机器可执行指令或数据结构的机器可读介质。这种机器可读介质可以是任意可用介质,其可通过通用或专用计算机或具有处理器的其他机器访问。举例来讲,这种机器可读介质可包括RAM、ROM、EPROM、EEPROM或其他光盘储存器、磁盘储存器或其他磁存储设备、或可用于携带或存储以机器可执行指令或数据结构形式的期望的程序代码的且可以通过通用或专用计算机或具有处理器的其他机器访问的任何其他介质。上面的组合也被包括在机器可读介质的范围内。机器可执行指令包括例如使通用计算机、专用计算机或专用处理机器执行某一功能或一组功能的指令和数据。

本文所使用的措辞和术语是为了描述的目的,且不应被视为限制性的。本文使用的“包括(including)”、“包括(comprising)”、“具有”、“包含(containing)”、“涉及”、“以......为特征”、“特征在于”及其变型意味着包含其后列出的项目、其等同物和附加项目,以及仅由其后列出的项目组成的替代实现。在一个实现中,本文描述的系统和方法由一个、多于一个的每个组合或者所有描述的元件、动作或部件组成。

本文以单数形式提及的对系统和方法的实现或元素或动作的任何引用也可以包括包含多个这些元件的实现,并且本文中对任何实现或元素或动作的复数形式的任何引用也可以包括仅包含单个元素的实现。单数或复数形式的引用不旨在将当前公开的系统或方法、它们的部件、动作或元素限制为单个或多个配置。对基于任何信息、动作或元素的任何动作或元素的引用可以包括其中动作或元素至少部分地基于任何信息、动作或元素的实现。

本文公开的任何实现可以与任何其他实现或实施例相结合,并且对“实现”、“一些实现”、“一个实现”等的引用不一定是互斥的,并且旨在指示结合该实现描述的特定特征、结构或特性可以被包括在至少一个实现或实施例中。本文使用的这些术语不一定都指同一实现。任何实现都可以以与本文公开的方面和实现相一致的任何方式,包括或排他地,与任何其他实现相结合。

在附图、详细描述或任何权利要求中的技术特征后面带有附图标记的地方,这些附图标记被包括以增加附图、详细描述和权利要求的可理解性。因此,附图标记及其缺失对任何权利要求元素的范围都不具有任何限制性影响。

在不脱离其特征的情况下,本文描述的系统和方法可以以其他特定形式体现。另外的相对平行、垂直、竖直或其他定位或取向描述包括纯竖直、平行或垂直定位的+/-10%或+/-10度内的变化。除非另有明确说明,否则对“大约(approximately)”、“约(about)”、“基本上”或其他程度术语的提及包括给定测量值、单位或范围的+/-10%的变化。耦合元件可以彼此直接电耦合、机械耦合或物理耦合,或者利用中间元件电耦合、机械耦合或物理耦合。因此,本文描述的系统和方法的范围由所附权利要求而不是前面的描述来指示,并且落入权利要求的等同物的含义和范围内的变化被包含在其中。

术语“耦合”及其变体包括两个构件直接或间接彼此连接。这种连接可以是静止的(例如,永久的或固定的)或可移动的(例如,可移除的或可释放的)。这种连接可以通过两个构件彼此直接耦合或耦合到彼此来实现,也可以通过两个构件使用单独的中间构件和彼此耦合的任何附加的中间构件进行彼此耦合来实现,或者通过两个构件使用与两个构件中的一个构件一体形成为单一单元体的中间构件彼此耦合来实现。如果“耦合”或其变型由附加术语修饰(例如,直接耦合),则上面提供的“耦合”的一般定义由附加术语的简单语言含义来修饰(例如,“直接耦合”是指在没有任何单独的中间构件的情况下两个构件的连接),导致比上面提供的“耦合”的一般定义更狭窄的定义。这种耦合可以是机械的、电的或流体的。

对“或”的提及可被解释为包含性的,因此,使用“或”描述的任何术语可以表示单个、多于一个和所有描述的术语中的任何一个。对“‘A’和‘B’中的至少一个”的提及可以只包括“A”,只包括“B”,以及同时包括“A”和“B”。这种与“包括”或其他开放术语一起使用的引用可以包括附加项目。

在本质上不脱离本文公开的主题的教导和优点的情况下,可以对所描述的元件和动作进行修改,例如各种元件的尺寸、大小、结构、形状和比例、参数值、安装布置、材料使用、颜色、取向的变化。例如,被示为一体形成的元件可以由多个部分或元件构成,元件的位置可以颠倒或以其他方式改变,并且分立元件的性质或数量或位置可以改变或变化。在不脱离本公开的范围的情况下,还可以在所公开的元件和操作的设计、操作条件和布置中进行其他替换、修改、改变和省略。

本文中对元件的位置(例如,“顶部”、“底部”、“上面”、“下面”)的提及仅用于描述附图中各个元件的取向。根据其他示例性实施例,各种元件的取向可以不同,并且这种变化旨在被本公开所包含。

相关技术
  • 为头戴式显示器生成动态障碍物碰撞警告的系统和方法
  • 基于机器视觉的前车碰撞警告系统及采用该系统实现前车碰撞警告的方法
技术分类

06120113674404