熟悉VR头显的用户应该都知道一种所谓的防护系统。因为VR头显会用数字内容取代用户周遭的现实世界,所以为了防止用户因失去物理世界视觉感知而与现实物品碰撞,设备需要一种提醒告示系统。
已改名为Meta的Facebook早就这方面进行了多番的探索,并申请和获批了多份专利。日前,美国专利商标局又公布了一份与之相关的发明。
名为《Systems and methods for detecting objects within the boundary of a defined space while in artificial reality》的专利主要介绍了一种防护系统,更进一步说,其主要描述了一种入侵检测系统。它能够检测潜在危险,并在物理对象出现在用户定义空间内时向用户发出警报。
在一个实施例中,搭载外置摄像头的头显系统可生成与房间中对象相对应的点云。所述点云可能存在噪点,所以点的存在并不一定意味着它对应于实际的物理对象。但是,系统可以使用所述点来评估空间中特定区域被物理对象占据的可能性,并在可能性足够高时向用户发出警报,而不是依赖点作为物理对象存在的绝对指标。
在一个实施例中,系统可生成对应于用户所在物理区域的虚拟空间,并将虚拟空间划分为体素。利用计算机视觉技术,系统可以检测用户周围的可观察特征,并为特征生成相应的点云。点云中的每个点可以在虚拟空间中具有坐标,并且位于体素之内。在特定实施例中,每个体素可以具有三种状态中的一种:空闲、占用或未知。体素可以以未知开始,光线可能从头显投射到点云中,以确定哪个体素属于空闲状态,哪个属于占用状态。
在一个实施例中,体素中的点的存在可以算作对被物理对象占据的体素的投票。当光线向该点投射时,光线通过的体素将各自获得“空闲”状态的投票。基于这样的假设,即如果与可观察特征相对应的点对头显摄像头可见,则头显和点之间的空间应该没有对象。在对点云中的每个点执行所述过程之后,系统可以基于其接收到的投票来确定每个体素可能被占用还是空闲。
然而,由于可能存在噪点,特别是当它们与头显之间的距离增加时,所以在确定具有被占用状态的体素是否确实被占用时,可以考虑时间和/或密度值。例如,如果已收到至少一个“占用”投票的体素已收到相对较少的“占用”投票,其相邻体素为“空闲”,和/或如果其状态随时间快速改变,则已收到至少一个“占用”投票的体素可能依然属于“空间”。另一方面,如果体素已收到相对较多的“占用”投票、已占用相邻体素和/或在阈值时间内保持占用,则可将其识别为真正被物理对象占用。然后,可以将占用的体素与用户绘制的边界进行比较,以确定检测到的对象是在定义的空间内还是在定义的空间外,以及是否需要发出警报。一旦确定入侵对象,系统可以以多种视觉或音频方式警告用户。
图4A-4C说明了防护系统的示例。在图4A中,头显用户使用手势或控制器在物理空间400内创建防护系统。但由于各种原因,用户在设置防护系统时容易出错,并纳入可能对用户造成碰撞危险的物理对象,如图4B所示。
在图4C中,用户没有注意边界420外的对象435一角突进了防护系统之中。当系统检测到对象435伸出边界420,尽管它看起来在边界之外,但实际上这个对象已经突进边界420,所以在绘制监护人之后或在用户绘制监护人的过程中,应提醒用户对象435的部分440存在于防护系统之中。
一旦创建完好的防护边界,系统可以验证和检查周遭环境,持续监控任何新入侵对象。
图7是防护系统工作的示例。系统可以检测用户周围的可观察特征,并为特征生成相应的点云。然后,系统可以从头显向物理空间700投射光线(例如R1-R7),从而确定体素网格中体素的状态。如前所述,体素内的点算作对被占用体素的投票。例如,体素v3、v3和v5中的点P1、P2和P3分别计为“占用”投票。所以,体素v3将获得“已占用”的两票,体素v5将获得一票。同时,由于头显和相交点之间的空间应该是空,头显和被光线相交的每个点之间的体素将给予“空闲”投票。例如,光线R3在到达目标点P2所在的体素v3之前与体素v14、v15和v16相交。所以,体素v14、v15和v16各获得一次“空闲”投票。基于投票,系统可以将体素视为被占用、空间或未知。例如,如果一个体素的“空闲”投票显著多于体素的“占用”投票,则所述体素可以被视为“空闲”。如果“占用”投票显著多于“空闲”投票,则该体素可以被视为“占用”。
如果“空闲”和“占用”之间的差异投票不明显,则体素的状态可以视为“未知”。
但是,体素必须能够随着环境变化和对象检测的进行动态更新其占用状态,而且允许体素的数值超过某些阈值可能会导致值太大,以至于额外的投票无法在可接受的时间范围内改变其状态。所以,每个体素可以具有最小值和最大值(在上面的示例中,最小值可以是-10,而最大值可以是10)。体素内的每个点或投票可能还有一个设定的寿命,随着寿命的到期,体素内的投票可能会减少。因此,随着时间的推移,体素的占用状态可以从“占用”变为“未知”。
在确定体素的状态后,系统可以判断是否存在可能会对用户造成危险的物理对象,并可向用户发出视觉和/或音频警报,以指示对象的存在和/或位置。然而,危险对象通常是指位于防护边界之内的对象,并且防护边界的对象可能离用户不够近,不足以构成危险。因此在特定实施例中,可以在防护系统之内的被占用体素和之外的被占用体素之间进行区分。当物理空间被划分为体素网格时,可以将体素的位置与防护边界的位置进行比较。边界内被视为“占用”的体素可以触发警报,而边界以外的“占用”体素则可以忽略。
在另一个实施例中,可以在用户周围设置阈值距离,并且在所述阈值距离内靠近用户的对象都不会导致发出警报。这可以防止因用户自己的手或腿的移动而发出警报。阈值距离的大小可以通过几种方式确定。例如,它可以简单地是一组预定大小。作为另一示例,阈值可以基于对用户持有的控制器的检测,并且忽略距离可以是用户持有控制器到身体距离的函数。当然,避免对用户自身的移动发出警报的另一种选择是对用户进行身体追踪。
名为“Systems and methods for detecting objects within the boundary of a defined space while in artificial reality”的专利申请最初在2020年4月提交,并在日前由美国专利商标局公布。