手部感测控制器

文档序号:1676835 发布日期:2019-12-31 浏览:5次 >En<

阅读说明:本技术 手部感测控制器 (Hand sensing controller ) 是由 B·R·德阿劳约 D·霍尔曼 R·J·乔塔科斯塔 B·莫斯利 于 2018-03-19 设计创作,主要内容包括:公开了一种采用控制器的触摸敏感控制器系统,该控制器包括适于检测人手部的各种位置的多个分离的FMT传感器模式。控制器系统输出触摸事件以及反映手部与控制器交互的数据。FMT传感器可以由公共信号发生器驱动,并且可以查看主体生成的串扰,以帮助理解控制器上的手部的位置、方向和抓握。在一个实施例中,信号注入可以补充FMT传感器数据。由多个FMT传感器发射和接收的数据与附加的注入信号之间的融合可以在触摸和手部建模中提供提高的保真度。(A touch sensitive controller system employing a controller including a plurality of separate FMT sensor modes adapted to detect various positions of a human hand is disclosed. The controller system outputs touch events and data reflecting hand interaction with the controller. The FMT sensors may be driven by a common signal generator and may look at subject-generated crosstalk to help understand the position, orientation, and grip of the hand on the controller. In one embodiment, the signal injection may supplement the FMT sensor data. The fusion between the data transmitted and received by the multiple FMT sensors and the additional injected signals can provide improved fidelity in touch and hand modeling.)

手部感测控制器

本申请要求于2017年3月20日提交的题为“手部感测控制器(Hand SensingController)”的美国临时申请No.62/473,908的权益,其内容通过引用结合于此。

技术领域

公开的装置和方法总体涉及人机界面控制器的领域,且更具体地涉及对触摸(包括悬停、抓握以及压力)敏感的人机界面控制器。

背景技术

近年来,多点触摸技术得到了发展。一种发展途径已经围绕基于使用同时正交信令方案与传感器的电容***互的触摸热图的生成。关于使用由同时正交信令方案驱动的传感器的交互感测,许多专利申请已经被提交,包括但不限于申请人于2013年3月15日提交的题为“低延迟触摸感应设备(Low-Latency Touch Sensitive Device)”的在先的美国专利申请No.13/841,436,以及于2013年11月1日提交的题为“快速多点触摸后处理(FastMulti-Touch Post Processing)”的美国专利申请No.14/069,609。

这些系统和方法通常针对平面传感器上的多点触摸感测。获取信息以理解用户的触摸、手势以及与手持式对象的交互会引入无数可能性,但是由于手持式对象呈多种形状,因此很难将电容性触摸传感器结合到诸如控制器之类的手持式对象中,而通过电容性触摸传感器与手持式对象的结合,传感器可以提供与用户手势有关的信息和与手持式对象的其他交互。

通常,触觉像素(taxel)(或行-列交叉点)数据会聚合到热图中。随后这些热图被后处理以识别触摸事件,并且触摸事件将流式传输到下游处理,以寻求理解触摸交互,包括但不限于手势以及执行这些手势的对象。

所需要的是电容性触摸控制器,该电容性触摸控制器提供与用户的手势以及与控制器的其他交互有关的更多详细信息。

所需要的是电容性触摸控制器系统,该电容性触摸控制器系统可以提供用户与控制器的交互的手模型。

具体实施方式

本申请涉及用户界面,诸如于2016年8月30日提交的题为“触摸敏感对象(Touch-Sensitive Objects)”的美国专利申请No.15/251,859中公开的快速多点触摸传感器和其他界面。该申请的全部公开以及通过引用并入其中的申请通过引用并入本文。

在各种实施例中,本公开涉及手部感测控制器以及用于设计、制造和操作感测控制器(例如,手部感测控制器以及手和触摸感测控制器)的方法,并且具体地涉及使用电容式传感器来感测人类交互的控制器。在整个公开中,各种控制器形状和传感器模式用于说明性目的。尽管为了说明本发明的目的而公开了示例性构成和/或几何形状,但是鉴于本公开,在不脱离本文公开的范围和精神的情况下,其他构成和几何形状对于本领域技术人员而言将是显而易见的。

在整个公开中,可以使用术语“悬停”、“触摸”、“多个触摸”、“接触”、“多个接触”、“压力”或“多个压力”或其他描述符来描述人机交互发生(即,用户手指、触控笔、对象或身体部位被传感器检测到)的事件或时间段。在一些实施例中,如通常由术语“接触”所表示的,这些检测作为与传感器或设备(传感器体现于该设备中)物理接触的结果发生。在其他实施例中,并且如有时通常由术语“悬停”指代的,可以调谐传感器以允许检测悬停在触摸表面上方的一定距离或以其他方式与触敏设备分离的“触摸”。如本文中使用的,“触摸表面”可以具有或可以不具有实际特征,并且可以是通常特征稀疏的表面。本说明书中的暗示依赖感测的物理接触的语言的使用不应被视为意味着所描述的技术仅适用于这些实施例;实际上,通常,本文描述的内容等同地适用于“接触”以及“悬停”,其中每一个都是“触摸”。更一般地,如本文中使用的,术语“触摸”指代可以由本文中公开的传感器的类型检测的动作,因此,如本文中使用的术语“悬停”是在本文中意指的“触摸”意义上的一种“触摸”。“压力”指代用户接触(例如,按压他们的手指或手)施加在对象表面上的每单位面积的力。“压力”的量与“接触”(即,“触摸”)的测量相似。“触摸”指代“悬停”、“接触”、“压力”或“紧握”的状态,而通常通过信号低于由传感器的精确测量阈值来识别缺乏“触摸”。因此,如本文中使用的,当短语“触摸事件”和词语“触摸”用作名词时包括接近触摸和接近触摸事件,或者可以通过使用传感器来识别的任何其它手势。根据实施例,触摸事件可以以非常低的延迟时间(例如,在十毫秒或更短的数量级上,或在少于一毫秒的数量级上)被检测、被处理并被提供到下游计算进程。

如本文中使用的,并且特别是权利要求内的,诸如第一和第二的序数术语本身并不旨在意味着序列、时间或独特性,而是用于区分一个所述的构造与另一个。在上下文规定的一些用途中,这些术语可能暗示着第一和第二是唯一的。例如,在第一时间发生事件,并且在第二时间发生另一个事件的情况下,没有意图指示第一时间发生在第二时间之前。然而,在权利要求中提出了第二时间在第一时间之后的进一步限制的情况下,上下文将要求第一时间和第二时间理解为唯一的时间。类似地,在上下文如此指示的或允许的情况下,序数术语旨在被广义地解释,使得两个识别的权利要求构造可以具有相同的特征或不同的特征。由此,例如,没有进一步限制的第一频率和第二频率可以是相同频率(例如第一频率是10Mhz并且第二频率是10Mhz),或可以是不同的频率(例如,第一频率是10Mhz并且第二频率是11Mhz)。例如,上下文可以规定第一频率和第二频率被进一步限制为在频率上彼此正交,在这种情况下,它们不可能是相同频率。

在一个实施例中,所公开的快速多点触摸传感器利用投射电容式方法,该方法已被加强以用于触摸事件的高更新率和低延迟测量。该技术可以使用并行硬件和较高频率波形以获得上述优势。另外公开了进行敏感和稳健测量的方法,该方法可以在透明显示表面上使用并可以允许采用该技术的产品的经济型制造。在这一点上,本文中使用的“电容式对象”可以是手指、人体的其他部分、触控笔或传感器对其敏感的其他对象。本文公开的传感器和方法不需要依赖于电容。对于例如光学传感器,这样的实施例利用光子隧道和泄漏以感测触摸事件,并且如本文使用的“电容式”控制器包括可以与这种感测兼容的任何对象,诸如触控笔或手指。类似地,本文中使用的“触摸位置”和“触摸敏感设备”不需要电容式控制器与所公开的的传感器之间的实际触摸接触。

本文中使用的术语“控制器”旨在指代提供人机界面的功能的物理对象。在一个实施例中,该控制器是手持式的。在一个实施例中,如与本文所述的感测到的触摸输入分开地进行计数,手持式控制器提供六个自由度(例如,上/下、左/右、前/后、俯仰、偏航和滚动)。在一个实施例中,控制器可以提供少于六个自由度。在一个实施例中,控制器可以提供更多的自由度,如在通常被认为具有27个自由度的人类手部运动的复制中。贯穿全文,术语“六自由度控制器”是指这样的实施例:在空间中追踪控制器的位置和方向,而不是对控制器能够追踪的自由度的总数严格地进行计数;也就是说,无论是否可能有附加自由度(诸如触摸追踪、按钮按压、触摸板或操纵杆输入),控制器都将被称为“六自由度”。此外,我们将使用术语“六自由度”来指代可以在少于六个维度中被追踪的控制器,诸如,例如追踪其3D位置但不追踪其滚动/俯仰/偏航的控制器,或仅追踪其二维或一维运动,但在3个或更少的自由度上追踪其方向的控制器。

图1A-1F示出了结合了电容式传感器模式的示例性六自由度控制器100的各种视图的图示。如图2所示,在一个实施例中,提供了手带102,其从控制器100的顶部104处或顶部104附近延伸到控制器100的底部106处或底部106附近,以促进六自由度控制器100的使用。在一个实施例中,控制器100具有拇指中心部分110和触发中心部分112。在一个实施例中,控制器100被设计成通常适合于用户的手105的手掌内。在一个实施例中,控制器100被设计成允许在左手或右手中使用的方式。在一个实施例中,专用控制器100可以被用于左手和右手中的每一个。

电容式传感器模式通常被认为具有行和列。然而,如本文中使用的,术语“行”和“列”不旨在表示方格,而是表示在其上信号可以被发射的一组导体(行)以及在其上信号可以被耦合的一组导体(列)。(信号在行上被发射并且在列上被接收的概念本身是任意的,并且信号可以容易地在任意指定列的导体上被发射并且在任意命名为行的导体上被接收,或者两者可以任意地被命名为其他;此外,同一导体既可以充当发射器又可以充当接收器)如下面将会被详细讨论的,行和列不必形成网格;只要接近行-列交叉点的触摸增加或减少行与列之间的耦合,许多形状都是可能的。

迄今为止已经提出了许多电容式传感器模式,例如参见申请人于2016年4月14日提交的题为“电容式传感器模式(Capacitive Sensor Patterns)”的在先的美国专利申请No.15/099,179,该申请的全部公开内容以及通过引用并入其中的申请通过引用并入本文。在一个实施例中。在图1A-1F中示出的控制器100包括多个电容式传感器模式。在一个实施例中单个控制器可以采用两个或多个传感器模式。在一个实施例中,单个手持式控制器100中采用了三个传感器模式。在所示的实施例中,拇指中心检测采用一个传感器模式,触发中心检测采用另一个传感器模式,并且控制器主体周围其他位置处的检测采用又一个传感器模式。

用于传感器模式的全部或任何组合的发射器和接收器可以被可操作地连接到能够发射和接收所需信号的单个集成电路。在一个实施例中,在集成电路的容量(即,发射和接收信道的数量)和传感器模式的需求(即,发射和接收信道的数量)允许的情况下,控制器上多个传感器模式中的所有传感器模式的所有发射器和接收器由通用集成电路操作。在一个实施例中,利用通用集成电路操作控制器上多个传感器模式中的所有传感器模式的所有发射器和接收器可以比使用多个集成电路更有效率。

在一个实施例中,拇指中心传感器被部署在当控制器100被握住时最靠近拇指103的相对平坦的表面上。触觉像素密度(即,传感器模式上的行-列交叉的密度)可以随传感器模式的不同而变化。在一个实施例中,针对拇指中心区域选择具有相对较高触觉像素密度(诸如在3.5mm和7mm之间)的传感器模式。在一个实施例中,为拇指中心区域提供5mm的触觉像素密度来充分提高保真度以允许将感测到的数据用于对拇指103精确建模。在一个实施例中,为拇指中心区域提供3.5mm的触觉像素密度以更好地提高保真度。

除了选择触觉像素密度之外,还可以基于其检测远、近或中间悬停而不是接触的能力来选择传感器模式。在一个实施例中,选择拇指中心传感器的传感器模式以检测高达在3mm至10mm之间的悬停。在一个实施例中,选择拇指中心传感器的传感器模式以检测到至少3mm的悬停。在一个实施例中,选择拇指中心传感器的传感器模式以检测到至少4mm的悬停。在一个实施例中,选择拇指中心传感器的传感器模式以检测到至少5mm的悬停。在一个实施例中,选择用于拇指中心传感器的传感器模式以检测到足以允许将所感测的数据用于对目标用户群的拇指103精确建模的距离上的悬停。

简要地转到图2,示出了用户的手105中的控制器100,以及基于拇指103与控制器100的拇指中心部分110的交互而检测到的热图的计算机模型200。该热图描绘了跨越彩虹状光谱的触摸区域,其中红色反射区域具有更多的检测到的触摸,蓝色反射区域具有更少的检测到的触摸。该热图还将触摸指示色层任意地定位在与检测到的触摸量相对应的与触摸表面相距一定距离处,其中在红色中的更多的检测结果在计算机反映(computer-reflected)模型中距离传感器更远。如图2所示,用户的手的拇指103与拇指中心部分110上的拇指中心传感器接触或者几乎接触。

在一个实施例中,拇指中心传感器模式由行和列的网格组成。在一个实施例中,以角度放置拇指中心传感器模式的行-列方向,使得行和列如同其在控制器100上定向的一样跨拇指中心传感器模式的面对角地延伸。在一个实施例中,拇指中心传感器的行和列以相对于控制器100上的他们各自的方向成近似30度的角度放置。在一个实施例中,拇指中心传感器的行和列以相对于控制器100上的他们各自的方向成近似60度的角度放置。在一个实施例中,拇指中心传感器图案由三层组成,包括相对于控制器100的拇指中心部分110通常对角地延伸的两层接收器,以及在两层接收器上方、下方或之间操作并且相对于控制器100的拇指中心部分110通常水平地定向或通常垂直地定向的第三层发射器。

现在转到图3A-3D,示意性示出了可以用作拇指中心传感器模式的三个传感器模式。尽管已经发现这些具体示例提供了可接受的结果,但是结合本发明使用其他传感器模式作为拇指中心传感器模式也在本公开的范围和精神内。鉴于本公开,用作拇指中心传感器模式的许多其他传感器模式对于本领域技术人员而言将是显而易见的。

图3A中示出的传感器模式可以充分地工作,其中行和列(例如,发射天线和接收天线)以实线和虚线示出。图3B中示出的传感器模式也以实线和虚线示出了行和列。图3B中的传感器模式还包括在馈线附近延伸的去耦电线。图3C和3D示出了三层传感器的层,图3C的实线和虚线每个表示传感器的层,并且图3D的虚线代表另一层。在一个实施例中,图3C的实线和虚线都被用作列(例如,接收天线),并且图3D的虚线被用作发射器。在一个实施例中,如本文所讨论的,出于控制器中的拇指中心传感器模式的目的,三层传感器提供了高质量的成像。图3C中的传感器图案还包括在馈线附近延伸的较宽的去耦电线(可以被称为去耦平面)。为了清楚起见,还提供了图3C的部分细节(参见图3E)。

当诸如手指之类的电容式对象靠近馈线时,可以导致拖尾现象。在一个实施例中,为了减轻拖尾现象,可以(例如通过扩大拇指中心传感器模式区域)将馈线移动到更远的位置。在一个实施例中,为了减轻拖尾现象,可以将馈线引导离开表面,并引导进入对象。这些中的每一个都具有对于本领域技术人员显而易见的缺点。在一个实施例中,为了减轻拖尾现象,可以添加图3B中示出的去耦电线或图3C中示出的较宽的去耦平面。

现在转到图4,示出了用户的手中的控制器100,其中计算机模型200基于检测到的食指107与控制器100的触发中心部分112的交互示出手的位置(尤其是食指位置)。如图4所示,用户的手105的食指107可以与触发中心传感器图案接触或几乎接触,并因此,手105的计算机模型200在计算机显示器上示出了相似的接合位置。

在一个实施例中,分离传感器模式被用于触发中心传感器。通常,触发类型的(trigger-type)输入比与其他触摸相关的输入要简单得多。在一个实施例中,食指107相对于控制器110具有相对有限的自由度。因此,在一个实施例中,触发传感器仅需要一个触觉像素以说明食指110与控制器110的触发中心部分112的关系。由于在一个实施例中,期望为触发中心传感器图案提供相对较长的悬停距离(例如,长达3.5厘米、或长达5厘米、或长达7厘米、或长达10厘米),触发中心传感器模式可以由天线组成,该天线通常(向内或向外)垂直于控制器100的触发中心部分112的表面延伸。

迄今为止,已经提出了电容式传感器模式采用使用天线的传感器模式,该天线通常垂直于触摸表面延伸,参见例如于2016年7月29日提交的题为“悬停敏感触摸板(Hover-Sensitive Touchpad)”的申请人的在先美国专利申请No.15/224,226,该申请的全部公开内容以及通过引用并入其中的申请通过引用并入本文。在一个实施例中,触发中心传感器模式由一个发射天线和一个接收天线组成。在一个实施例中,触发中心传感器模式由一个发射天线和两个或多个接收天线组成。

实际上,食指107的自由度可以需要比单触觉像素分辨率更多。因此,在一个实施例中,触发中心传感器模式由比上述更复杂的传感器模式组成。在一个实施例中,采用了行和列的网格。在一个实施例中,通过对接收器和中央发射器(未示出)使用菱形定位(diamond-positioned)的方形的侧面来创建触发中心传感器模式。在一个实施例中,使用圆的象限来为对接收器和中央发射器(未示出)创建触发中心传感器模式。在一个实施例中,在任一种前述情况中,可以如上面所讨论和所示通过添加去耦电线或较宽的去耦平面来减轻拖尾现象。

在一个实施例中,触发中心传感器模式不同于拇指中心传感器模式。在一个实施例中,触发中心传感器模式与在控制器110的主体的至少一部分上使用的传感器模式不同。

现在转到图5A-8B,示出了示意性三层触发中心传感器模式。在一个实施例中,如图5A所示,两个接收层由不规则的(即,不直的)导线501、502以通常网格状的布局组成。在图5B中,发射层由相对于触发中心传感器模式垂直延伸的通常平行的导体503组成。在一个实施例中,如图6A所示,两个接收层由不规则的(即,不直的)导线601、602以通常网格状的布局组成。在图6B中,发射层由相对于触发中心传感器模式垂直延伸的通常平行的导体603组成。如上所述,每个情况下,在一个实施例中,可以通过添加去耦电线或较宽的去耦平面来减轻拖尾现象。

在一个实施例中,在图7A中,两个接收层由不规则的(即,不直的)导线701、702以通常网格状的布局组成。在图7B中,发射层还由不规则导体703组成,该不规则导体703通常平行,并且水平地而不是垂直地穿过触发中心传感器模式。在一个实施例中,可以通过添加去耦电线或较宽的去耦平面来减轻拖影现象。

在一个实施例中,在图8A中,两个接收层由不规则的(即,不直的)导线801、802以通常菱形的布局组成。在图8B中,发射层由导体803组成,该导体803通常平行,并且水平地穿过触发中心传感器模式。在一个实施例中,可以通过添加去耦电线或较宽的去耦平面来减轻拖影现象。在一个实施例中,在发射层的每个导体803上发射频率正交的频率。每层上的对角导线801、802中的每一个连接到唯一的接收器。在一个实施例中,产生两个热图,一个热图对应于一组对角接收器和发射器之间的交互,另一个热图对应于其他组对角接收器和发射器之间的交互。在一个实施例中,两个热图可以被卷积在一起。在一个实施例中,卷积两个热图提供了提高的分辨率。在一个实施例中,卷积两个热图提供了改善的信噪(signal-to-noise)特征。在一个实施例中,卷积两个热图提供了关于所感测的动作的提高的保真度。

在一个实施例中,触发中心传感器模式的行-列方向以一角度被放置,使得行和列如同其在控制器100上定向的一样对角地穿过触发中心传感器模式的面。在一个实施例中,触发中心传感器的行和列以相对于控制器100上他们各自的方向近似30度的角度放置。在一个实施例中,触发中心传感器的行和列以相对于控制器100上他们各自的方向近似60度的角度放置。在一个实施例中,触发中心传感器模式由三层组成,包括相对于控制器100的触发中心部分通常对角地延伸的两层接收器,以及在两层接收器上方、下方或之间操作并且相对于控制器100的触发中心部分通常水平地放置或通常垂直地放置的第三层发射器。

在一个实施例中,将每个与发射器上发射的频率频率正交的一个或多个频率施加到用户身体。在一个实施例中,将与发射器上发射的频率频率正交的频率施加到用户身体。在一个实施例中,可以从控制器(未示出)上的一个或多个触点将施加到用户身体的频率施加到用户的手掌或手背。在一个实施例中,可以产生第三热图来解析所施加的频率。在实验测试中,针对所施加的频率数据感测到的数据显示出的峰与上述无施加频率的触摸所得到的峰的形状实质上不同,并且易于区分。在一个实施例中,针对所施加的频率的传感器数据被用于与传感器相距相对较长范围(例如,大于2cm)的接近度测量。在一个实施例中,针对所施加的频率的传感器数据被用于与传感器相距相对较短范围(例如,小于1cm)的位置测量。在一个实施例中,所施加的频率数据可以从两个或多个频率得到,该两个或多个频率与在发射器上彼此发射的频率频率正交并且彼此频率正交。在一个实施例中,可以从控制器(未示出)上的一个或多个触点将两个或多个施加的频率施加到用户的手掌或手背。在一个实施例中,可以从控制器(未示出)上的相同的一个或多个触点将两个或多个施加的频率中的每个施加到用户的手掌或手背。在一个实施例中,可以从控制器(未示出)上的不同的一个或多个触点将两个或多个施加的频率中的每个施加到用户的手掌或手背。在一个实施例中,可以从控制器(未示出)上的不同的一个或多个触点将两个或多个施加的频率中的每个施加到用户的手掌或手背,并且触点在物理位置上间隔开以导致信号之间的差异。

现在转到图9,示出了用户手105中的控制器100,其中计算机模型基于控制器主体114中的电容式传感器示出手位置。图9进一步示出了以图示方式显示的热图,该热图示出来自用户的另一只手的食指的位置和压力。如图9所示,用户的另一只手的食指107与身体传感器模式基本接触。

在一个实施例中,分离模式被用于身体传感器模式。不同于触发中心模式和拇指中心传感器模式,在一个实施例中,身体传感器模式可以在三个维度上以不规则和/或复合的曲率使用。在一个实施例中,如本文所讨论的,这既需要适当的传感器设计,也需要专门的软件以及数学考虑。

图10A示出了由遵循控制器100的不规则曲率的行和列组成的鱼骨传感器模式的一个视图的图示。图10B和10C示出了可以被用于形成主体部分114的左面的两个部件的实施例。图10D和10E示出了可以被用于形成主体部分114的右面的两个部件的实施例。图10F和10G示出了可以与图10D和10E所示的主体部分114的右面的部件结合使用的传感器模式和馈线的二维轨迹。图10G进一步示出了可以与控制器100上的拇指中心传感器模式(参见例如图1)的接收侧结合使用的传感器模式和馈线的二维轨迹。

图10B-E示出了在部件的内侧(例如,凹面)上提供给天线的机械槽(例如,空间)。图10C和10E所示的部件装配在图10B和10D所示的部件的内表面内。在一个实施例中,一旦装配了天线,图10B/C的组合与图10D/E的组合形成主体部分114的一半,以及与本文所述的控制器100相关联的用于感测的传感器模式。主体部分114的两半可以被装配在一起以形成主体部分114。在一个实施例中,如上文所讨论的,可以采用分离拇指中心传感器模式和触发中心传感器模式,并且可以由主体部分114支持。

在一个实施例中,通过将传感器定位为具有与其他传感器相同数量尽可能接近的行-列交叉,来容纳任意几何形状。因此,在一个实施例中,交叉的程度和数量应当尽可能相等。

在一个实施例中,主体部分114的左半部分和主体部分114的右半部分共享发射天线。在一个实施例中,主体部分114的左半部分和主体部分114的右半部分共享接收天线。因此,在一个实施例中,在左侧天线上发射的频率也在右侧天线上被发射,在右侧天线上发射的频率也在左侧天线上被发射。类似地,在一个实施例中,主体部分114的每一半上的接收天线可以与一个接收器相关联。因此,在一个实施例中,控制器100的主体部分114的左半部分中的每个发射天线与控制器100的主体部分114的右半部分中的发射天线共享公共频率,并且控制器100的主体部分114的左半部分中的每个接收天线被导电地耦合到控制器100的主体部分114的右半部分中的接收天线。以这种方式,可以使用较少数量的发射器和接收器来操作控制器100。

在一个实施例中,主体部分114的左半部分和主体部分114的右半部分不共享发射天线。在一个实施例中,主体部分114的左半部分和主体部分114的右半部分不共享接收天线。因此,在一个实施例中,在左侧天线上发射的频率不在右侧天线上被发射,在右侧天线上发射的频率不在左侧天线上被发射。类似地,在一个实施例中,主体部分114的每一半上的每个接收天线与其接收器相关联。因此,在一个实施例中,主体部分114的每一半上的每个接收天线与其接收器相关联,并且主体部分114的每一半上的每个发射天线与其发射器和其唯一的正交频率相关联。尽管如此,在一个实施例中,主体部分114的一半的每个传感器可以检测通体(thru-body)串扰。在一个实施例中,由于这种通体串扰,在主体部分114的一半上的接收器可以接收在主体部分114的另一半上的发射器上发射的信号。在一个实施例中,主体部分114的每一半上的接收器除了适于检测在主体部分114的自己那一半上发射的信号,还适于检测在主体部分114的另一半上发射的信号。

触觉像素

如本文中使用的,触觉像素是一个FMT逻辑发射器和一个FMT逻辑接收器之间的串扰的局部区域。在一个实施例中,多个导体元件可以连接到一个逻辑接收器或一个逻辑发射器。甚至当采用多个导电元件时,交互仍然提供仅一个逻辑发射器或逻辑接收器。此外,在多个逻辑元件连接到公共导电元件的情况下,由于电压求和的物理效果,该结构将在逻辑上简化,就好像TX/RX对的每个排列都是单独且分离一样。

通常,触觉像素表现得类似于具有天线模式的天线。在一个实施例中,触摸对象在触摸对象相对于触觉像素及其三维触摸响应的位置向量(X,Y,Z)等效的基线(非触摸)响应中引起干扰。在一个实施例中,由于固有的混淆,通常不选择从一个以上的中心(例如,天线模式的两个或多个中心)做出响应的触觉像素,该混淆可能会导致两个触摸对象在两个不同的位置矢量处导致相同的信号干扰。

触觉像素定义中使用的串扰的概念被澄清。给定的RX/TX对之间的意外串扰可以导致不期望的效果。例如,意外串扰可以导致非奇异的局部区域,并且很少期望将混淆引入干扰位置矢量计算。类似地,相对于所选的RX阻抗、RX增益、时域滤波和所采用的均衡方案,在给定应用中使用的多个RX信道上的不均匀或不相同的时域响应可以在时域中引入不期望的权衡。因此,如本文所用的串扰指代的是期望的和可测量的效果,而不是电子文献中通常指代的典型的不期望的效果。因此,当提及身体发射(body-transmitted)串扰时,本申请是指例如从第一位置到可感测到信号的另一位置的来自由身体(例如,手)携带的发射器的信号。因此,例如,食指107可以与发射唯一的正交频率的触发中心传感器模式接触,并且该唯一的正交频率可以被传导至接收天线,并且因此被传导至拇指中心传感器模式上的接收器(由手105传导的信号将被称为串扰)。

作为另一示例,其中信号A在导体X上,信号B在导体Y上,并且导体X和导体Y彼此接近的情况下,信号A的某些部分可以出现在导体Y上。用更常规的说法,串扰“攻击者”是信号A,串扰“受害者”是信号B。不同于串扰是不被期望的常规观点,鉴于本公开,对于本领域的技术人员将显而易见的是,可以从本文所公开和所述的新颖的FMT对象感测方法和设备中的串扰中获得有价值的信息。

在一个实施例中,触觉像素部件包括两个主要部分:对触摸对象(或注入频率)无反应的部分A;以及对触摸对象有反应的部分B。对于给定的触觉像素,在给定的频率下的总串扰为A+B。在一个实施例中,A:B的比率和A+B的总幅度对于理解使用FMT从传感器模式获得的数据都非常重要。

在一个实施例中,每个触觉像素串扰(A+B)与每个其他触觉像素串扰在时域求和,从而产生复杂的时域波形,该波形最终在Z域中被采样,并在频域中可分开为其组成频率和幅度。在一个实施例中,该复合时域波形的Vpp(峰峰值电压)不超出ADC(模数转换器)输入的限制。因此,在一个实施例中,系统设计(包括传感器设计)包括在ADC输入处优化Vpp。在一个实施例中,触觉像素A+B,给定接收器上的触觉像素的数量以及意外串扰控制该时域波形的Vpp。

尽管A对触摸对象无反应,并且因此,它对高信噪比设计没有直接贡献,但是好的传感器的设计要求同时考虑A和B。例如,高A比率(high A ratio)传感器可以更不容易受到外部噪声注入、系统噪声和意外串扰的影响。并且例如,高B比率(high B ratio)传感器可以对接近接触和更远距离的触摸对象具有更大的可测量响应,以及更强的信号注入和串扰耦合能力。因此,在一个实施例中,如鉴于本公开对于本领域技术人员显而易见的,对于给定的应用和期望的传感器响应,应当选择性地设计A和B两者以实现期望的结果。

在例如图1A-1F、3A-3D和10A-10G所示的人机界面控制器100的一个实施例的设计中,一个设计目标是为控制器主体部分114提供高悬停敏感度。在一个实施例中,将单独宽度的导电丝放置在机械槽中,该机械槽被切成复杂的弯曲表面,从而提供每个触觉像素在X,Y,Z空间中相对于控制器主体部分114的原点的精确布局。因此,控制器主体部分114中的触觉像素是由机械设计中的限定的固定点处的唯一的TX/RX交叉而产生的。

对于二维传感器(例如,触摸面板),可以通过仿真、经验测量或其他方式为传感器计算插值曲线。插值曲线是触觉像素处的FMT信号干扰与触摸对象到该触觉像素的距离之间的数学关系。该插值方程式允许计算触摸对象的XY位置。在一个实施例中,在来自多个触觉像素的数据上使用插值方程,并且即使当触摸对象不是直接在单个触觉像素上时,也可以识别触摸的位置。

在一个实施例中,在传感器模式为非平面的情况下,必须以XYZ表示触觉像素位置,并且可以提供和使用垂直于触觉像素的矢量以及XYZ中的插值曲线,以计算相对于给定的一组触觉像素的XYZ中的位置。因此,在一个实施例中,每行-列交叉表示用于重建的三维触觉像素,其中三维映射到与控制器100的表面垂直的方向的空间中。换句话说,触觉像素场方向被垂直投射到控制器100的表面,并且被重新映射到三维空间中。因此,在一个实施例中,构造了三维空间热图,并且触觉像素数据以及与触觉像素的定向相关的信息一起被用于填充热图。

因此,在使用例如图10A中描绘的鱼骨传感器的实施例中,对于控制器100的主体部分114,A+B主要是有利于高B比率而移动。在一个实施例中,有利于高B比率移动A+B可以延伸信号检测能力远离主体部分114的表面。在一个实施例中,有利于高B比率移动A+B可以通过增加TX层和RX层之间的分离层来实现。在一个实施例中,TX层和RX层之间的分离层为至少500微米。在一个实施例中,TX层和RX层之间的分离层为至少1000微米。在一个实施例中,随着TX导体和RX导体之间的距离的增加,A比B下降更快。因此,在一个实施例中,增加TX和RX层之间的分离层导致A+B的减少,但是B相对于A的比率的增加。在一个实施例中,A+B的减少允许TX Vpp的增加而不会超过ADC的限制。因此,在一个实施例中,采用至少18Vpp的TX电压。在一个实施例中,采用24Vpp的TX电压。

频率注入支持手部追踪

在一个实施例中,当由频率注入支持时,可以改善FMT电容式传感器手部追踪。对于FMT电容式传感器的说明,通常参见申请人的于2013年3月15日提交的题为“低延迟触敏设备(Low-Latency Touch Sensitive Device)”的在先美国专利申请No.13/841,436和2013年11月1日提交的题为“快速多点触摸后处理(Fast Multi-Touch Post Processing)”的美国专利申请No.14/069,609。频率注入是指将一个或多个频率施加到用户的身体,并且由此,将用户的身体当作该频率的导体用于FMT电容性传感器上。在一个实施例中,注入的频率是与在FMT电容性传感器发射器上发射的频率正交的频率。在一个实施例中,多个所注入的频率相对于彼此频率正交,并且与在FMT电容式传感器发射器上发射的频率频率正交。

通常,FMT采用传感器模式,其中行充当频率发射器,列充当频率接收器。(如上所述,行和列的指定是任意的,并不旨在表示例如网格状组织,也不是通常的笔直形状)。在一个实施例中,当将频率注入与FMT结合时,列被附加地用作接收器,以监听注入的一个或多个频率。在一个实施例中,当将频率注入与FMT结合时,这些行和列都被附加地用作接收器,以监听注入的一个或多个频率。

在一个实施例中,使用一个或多个单独的发射器将一个或多个已知的频率携带到例如,用户的手。在一个实施例中,每个单独的发射器与腕带、手带、座垫、扶手或任何其他可能与用户接触的对象相关联。在一个实施例中,当控制器100在使用中时,控制器100将一个或多个单独的发射器部署在控制器100的主体部分114的一个或多个部分上,控制器100的主体部分114通常与控制器用户的手接触。在一个实施例中,当控制器100在使用中时,具有手带的控制器100将一个或多个单独的发射器部署在手带102上,手带102通常与控制器用户的手接触。

在一个实施例中,在注入已知频率的情况下,FMT可以测量每个接收器处的一个或多个已知频率的强度。在一个实施例中,在注入已知频率的情况下,通过将接收器和信号处理器与每行和每列相关联,FMT可以测量每行和每列上的一个或多个已知频率的强度。在一个实施例中,对于每行上的一个或多个注入频率的信号强度的测量提供了关于传导注入频率的身体部位的位置的信息。

在一个实施例中,对于每行和每列上的一个或多个注入频率的信号强度的测量提供了关于传导注入频率的身体部位的位置的详细信息。在一个实施例中,来自行和来自列的位置信息提供了两个单独的信号强度的测量一维集合。在一个实施例中,两个一维集合提供了描述符,该描述符可以用于生成中间表示形式,诸如2D热图(类似于常规FMT发射器/接收器热图)。在一个实施例中,两个一维集合提供了一个描述符,该描述符可以在重构传感器附近的手指运动时用于实现更好的保真度。在一个实施例中,检测到的频率注入信号单独在FMT传感器图案范围内提供了增加的悬停范围。

在一个实施例中,频率注入描述符被用于创建与手指的一组离散位置相对应的信号强度的预定义分布。在一个实施例中,将描述符与基线和降噪技术或其他多维分析技术结合(例如,参见申请人的于2013年11月1日提交的题为“快速多点触摸后处理(FastMulti-Touch Post-Processing)”的在先美国专利申请No.14/069,609,和于2014年3月17日提交的题为“快速多点触摸降噪(Fast Multi-Touch Noise Reduction)”的美国专利申请No.14/216,791)以从这些描述符中提取可以与手指运动相关联的有意义的信息。在一个实施例中,FMT热图处理技术还可以被用在该频率强度信号上。通过将FMT热图处理与从检测到的频率注入信号得到的描述符结合起来,可以提高保真度。

在一个实施例中,使用虚拟手部的基于分层骨架的描述来计算手部追踪,以描述真实手部。在一个实施例中,频率注入描述符被映射到虚拟手部的该基于分层骨架的描述的连续的实时动画或其他数字表示中,从而模仿真实的手部运动。

对于本领域技术人员将显而易见的是,可以使用线性或非线性函数实时地实现映射,以将信号馈送转换为手指角度的馈送或骨骼角度的馈送。在一个实施例中,可以采用信号强度样本和地面真实参考之间的相关特性。在一个实施例中,使用另一个技术(诸如但不限于,运动捕捉、其他基于视觉的处理技术或预定义的捕捉姿势)捕捉地面真实参考。

对于本领域技术人员将显而易见的是,如上所述的施加到手部105并从手部105测量的信号注入的固有特性可以被用作定义模型映射的基础。在一个实施例中,以下通用数据技术中的一个或多个可以被用于此类映射:手动或自动监督或非监督训练、数据挖掘、数据分类或数据回归技术。在一个实施例中,数据技术被用于识别映射函数的适当定义,映射函数可以被用于手部建模,并因此用于手部追踪目的。如上文所讨论的,在一个实施例中,通过利用相同的FMT传感器模式、发射器和接收器,如上所述的信号注入硬件和软件可以与FMT功能结合。在一个实施例中,如上文所讨论的信号注入硬件和软件可以与FMT功能结合,由此给FMT触摸传感器系统补充附加接收器。在一个实施例中,如上文所讨论的信号注入硬件和软件可以与FMT功能结合,由此给FMT触摸传感器系统补充识别附加注入频率的能力。

合并触摸和悬停以及频率注入信息以追踪手部位置

在一个实施例中,一个或多个重叠的传感器用于追踪不同的信息。在一个实施例中,通过使用FMT,可以追踪触摸信息。参见例如申请人的于2013年11月1日提交的题为“快速多点触摸后处理(Fast Multi-Touch Post-Processing)”的美国专利申请No.14/069,609。使用FMT可以为接触和长达约4cm的悬停提供触摸信息。在一个实施例中,频率注入被添加到FMT。在一个实施例中,在手部或手部附近将一个或多个频率注入主体。在一个实施例中,将频率注入添加到FMT提供更好的保真度和悬停的更大范围。在一个实施例中,相同的传感器被用于读取FMT频率(也被称为“内部频率”)和一个附加注入频率(也被称为“外部频率”)。在一个实施例中,相同的传感器被用于读取FMT频率(也被称为“内部频率”)和多个附加注入频率(也被称为“外部频率”)。在一个实施例中,FMT和频率注入的结合有效地将手部建模的范围延伸超过4cm。在一个实施例中,FMT和频率注入的结合有效地将手部建模的范围延伸到超过5cm。在一个实施例中,FMT和频率注入的结合有效地将手部建模的范围延伸超过6cm。在一个实施例中,FMT和频率注入的结合有效地将手部建模范围延伸到全屈曲,即手部的全部运动范围。

在一个实施例中,单个传感器/传感器模式能够接收所有的频率信息。在一个实施例中,多个传感器模式(发射器和接收器层)是重叠的(参见,例如图3A-3D、5A、5B、8A、8B以及10A-10G)。

在一个实施例中,将元件(例如,天线)放置在控制器100的主体部分114的表面上或控制器100的主体部分114的表面附近,在控制器100的操作期间,元件可能在其中与用户的手部105接触。当在控制器100的操作中元件与手部105充分接触时,信号进入并通过手部105,传感器可以检测到该信号。传输环路从信号发生器到控制器100的主体部分114上的元件、再到手部105、再到接收天线(例如,列),在接收天线处通过FMT对其进行测量。在一个实施例中,当手部105触摸(但不一定接触)天线并且触摸(但不一定接触)接收天线时,传输回路闭合。在一个实施例中,将元件(例如,天线)放置在控制器带102的表面上,在控制器的操作期间元件可能在其中与用户的手部105的背面接触。如上所述,利用主体部分114的元件创建了传输回路,除了控制器带102的元件将与用户的手部105的背面接触而不是与例如手掌接触。在一个实施例中,信号注入系统为以下形式,或至少部分地为以下形式:腕带;手表;智能手表;移动电话;手套;戒指;触控笔;可装袋对象;弹性座垫或其他座垫;地毯;扶手;桌子表面;腰带;鞋子;可穿戴计算设备,或在控制器100的操作期间可能与用户接触的任何其他物体。在一个实施例中,由用户的身体在注入信号源与接收天线之间类似地创建传输回路。

在一个实施例中,从信号发生器到元件的信号的强度应当足以允许超过4cm的范围检测手部。在一个实施例中,从信号发生器到元件的信号的强度应当足以允许超过5cm的范围的检测。在一个实施例中,信号的强度允许超过7cm的检测。在一个实施例中,信号的强度允许手部105的整个屈曲的检测。

感测食指弯曲

在一个实施例中,食指弯曲是经由FMT通过使用接近悬停和接触数据来检测的。在一个实施例中,来自触发中心传感器模式的接近悬停和接触数据被用于感测食指弯曲。

在一个实施例中,存储参考帧。在一个实施例中,当控制器静止时,例如,由于没有接收到作为触摸的结果的可检测的信号,参考帧反映传感器的状态。在一个实施例中,原始信号数据的单个N×M帧被保存为基线。

在一个实施例中,通过使用基线,将输入帧转换为分贝(即-20.0f*log10(输入/基线)。转换的输入帧被称为热图。

在一个实施例中,计算平均信号值。平均信号值被称为波形。在一个实施例中,对于热图中的每列M,该列的平均信号值被计算为波形。在一个实施例中,对每行N计算波形。在一个实施例中,从行和列的信号值的组合计算波形。在一个实施例中,用于计算波形的信息的选择取决于传感器模式。

现在参考图11A,其中控制器100被抓握并且食指107几乎是垂直的。在一个实施例中,表示接近垂直的食指107的波形被保存为模板。在一个实施例中,模板与从其获取模板的手部105或用户相关联。在一个实施例中,多个模板(例如,用于多个手部和/或用户,和/或用于同一个手部)被保存供以后使用。在一个实施例中,多个模板可以被结合。模板可以被结合以归一化信息或获取与手部105和食指107有关的统计数据。

现在转到图11B,在一个实施例中,在典型的手指运动期间,可以将输入波形与模板进行比较。在一个实施例中,计算归一化均方根偏差(NRMSD),以提供输入波形和模板的相似度测量。在一个实施例中,NRMSD在零到一的范围内。

在一个实施例中,为了提高相似度测量的精确性,输入波形和模板被分为三个区域,该三个区域对应于食指107的各个骨骼(近端、中端、远端)以及它们沿传感器的位置。在一个实施例中,计算三个NRMSD值,手指的每个部分(NRMSD近端、NRMSD中端、NRMSD远端)。可以将输入波形与模板进行比较;虚线表示将波形和模板分为三段的位置。

在一个实施例中,NRMSD值被用作权重,以计算每个关节处的旋转。例如:

R近端=NRMSD近端*角度_最大近端

R中端=NRMSD中端*角度_最大中端

R远端=NRMSD远端*角度_最大远端

现在转到图11C,在一个实施例中,因为NRMSD总是为正,所以可以计算模板和输入波形的积分以确定食指107何时伸出。传入波形和模板的积分将小于零。在一个实施例中:

R近端=NRMSD近端*角度_伸展近端

R中端=NRMSD中端*角度_伸展中端

R远端=NRMSD远端*角度_伸展远端

实现架构

在一个实施例中,编写库使得来自控制器100(或其他设备)的输入可以由库的不同的模块化组件以不同的方式进行处理,但是库的客户端可以以同步方式获得输出。因此,在一个实施例中,当能够从库中获得数据时,每个模块处理的数据应来自相同的输入帧,并且每个处理模块应见到与所有其他处理模块相同的输入流。此外,在一个实施例中,考虑表示不同帧的数据。

转到图12,根据本发明的一个实施例,示出了整个库流水线。标记为(同步)((sync))的流水线的部分涉及同步,以确保完成上述目标。在一个实施例中,每个(同步)交互都使用缓冲对象(例如,RW交换缓冲区(RWSwapBuffer))来实现该目标。

在一个实施例中,缓冲区可以保留多个读取器可以访问的一个对象,可以向一个对象授予对单个客户端的写入访问权限,并且可以存储一个当前未使用并等待被读取的对象。这允许并发读写访问,并且适用于流数据源。

在一个实施例中,当(并且仅当)写入器完成写入新数据而任何读取器当前都保留较旧的数据结构,输出数据将被丢弃并且该输出数据将不会被任何客户端看到。如所述丢弃输出数据减轻了旧数据在系统中的传播,并有助于维持较低的端对端(end-to-end)延迟。

在一个实施例中,在图12中由框表示的每个组件,处理程序(Handler)302、帧缓冲状态(FrameBufferState)304和处理线程(ProcessingThread)306都被实现为模块,每个模块都有自己的生命周期和自己的运行线程。这种架构允许单个组件的可配置启动/拆卸,以遵循强大的生命周期并实现流水线内的并发。在一个实施例中,这些组件中的每一个都被实现为同属模块类的子类。这为处理每个组件的生命周期创建了蓝图,使得由子类实现的功能限定每个子类的行为。

同属模块中预期要被覆盖的功能及其预期目的如下:

初始化()(init())-分配可全局访问的资源,并进行运行全部所需的任何准备

开始循环()(startLoop())-分配线程特定的资源并进行启动线程会话所需的任何准备

结束循环()(finishLoop())-解除分配线程特定的资源并结束线程会话所需的任何操作

停止前()(preStop())-在请求线程停止之后但在线程上的阻塞加入之前执行任何必要的与命令相关的设置

停止后()(postStop())-线程加入后执行任何与命令相关的拆卸

循环()(loop())-主要工作功能,在线程上反复调用直到请求模块停止

在一个实施例中,功能初始化()、开始循环()和循环()可以传回在执行这些函数的过程中是否发生错误,如果发生错误则传回假(false)。调用初始化()时的错误阻止线程启动,并且开始循环()或循环()中的失败将导致线程终止。

在一个实施例中,结束循环()在每次线程退出时执行,旨在清理线程/会话资源并表示线程状态的变化,而停止前()和停止后()处理停止请求所需的任何处理,并表示命令的开始和结束。

在一个实施例中,除非覆盖了同属模块内部的默认函数实现,否则保证开始循环(),结束循环(),停止前()和停止后()在模块的生存期内仅运行一次。

在一个实施例中,在不等待退出信号(mStopRequested或shouldStop),同属模块内部或其任何子类中的功能可以永远不阻塞。在一个实施例中,由同属模块的子类覆盖的任何功能都应当调用其父类的功能,因为可以有预期被链接以用于适当的功能的类层次结构中的附加实现。

现在转到图13,该图示出了预期的调用顺序以及外部线程与同属模块的线程之间的交互,假定对开始循环()和循环()的所有调用均成功。简要地转到图14,状态机的图示示出了由同属模块支持的状态列表以及它们的转换条件。并且简要地转到图15,该图示出了成功创建线程并且在开始循环()或循环()期间没有发生错误的情况下同属模块的预期生命周期。

在一个实施例中,处理程序类从信道接收数据(例如,通过套接字的UDP数据报或从.pcap格式的文件中读取数据包),将数据格式化为要由库的其他组件使用的帧,并使帧数据可用于其余库的同步和使用。

在一个实施例中,在通用处理程序(GenericHandler)和处理线程306之间传递的帧可以被调整大小为可以根据库所连接到的控制器100中使用的传感器的类型而不同。可以使用接口类(I通用FMT帧(IGenericFMTFrame))来对帧提取信息,使用与当时使用的控制器100有关的配置特定的参数使帧模板化。在一个实施例中,I通用FMT帧(IGenericFMTFrame)类公开关于控制器100的信息,而无需事先知道正在使用哪些模板参数。处理程序类可以将帧视为输出缓冲区,并且在一个实施例中,不需要提供配置特定的参数。

在一个实施例中,处理程序类以与从控制器100通过线出现的相同数据顺序写出信息(例如,写入到帧中)。在一个实施例中,采用信道为主顺序。在一个实施例中,可以给输出缓冲区提供固定的位宽度(例如,32位或64位),该位宽度总是以二进制或信道为主,并且将二进制和信道固定为行或列。

在一个实施例中,帧缓冲状态304实现库中所有处理线程306的处理程序的输出数据的同步,以及处理线程的输出数据与API客户端的同步。

在一个实施例中,帧缓冲状态304阻塞所有处理线程,直到来自处理程序的帧是可获得的为止,等到所有处理线程都完成了当前保留的帧。解除阻塞后,来自处理线程的所有输出数据被提交并可供(多个)API客户端消耗。此后,该过程可以重复,其中帧缓冲状态304阻塞所有处理线程,直到可获得帧为止。

在一个实施例中,帧缓冲状态304是由处理程序拥有的模块。在其他实施例中,帧缓冲状态304是在库的生存期内存在的模块。后一种设计选择可以允许更强大、更灵活的启动和拆卸程序,以及用于模块状态转换的定义明确的规则。在一个实施例中,帧缓冲状态304可以允许处理线程添加和删除自身,并接收ID,该ID将该处理线程与其在帧缓冲状态304内部的处理/同步状态(等待处理的数据等)相关联。

在一个实施例中,帧缓冲状态304允许处理线程在运行库时随意注册和注销以免从输入流接收新帧。允许此注册可以扩大注意库的动向并确定事物之间如何交互所需的状态的数量。在一个实施例中,为了保持库的处理程序的状态和每个处理线程的更新,帧缓冲状态304包含消息队列,该消息队列允许其他模块在更改状态时通知帧缓冲状态304。因此,在一个实施例中,帧缓冲状态304内部有六个位集(bitset):

m处理ID位集(mProcIdBitset):追踪提供给已注册处理线程的ID

m处理启用位集(mProcEnabledBitset):追踪正在运行并准备处理数据的处理线程(通过帧缓冲状态的消息队列传递的状态的更改来设置和重置)

m处理数据位集(mProcDataBitset):追踪预期处理当前正在被处理的帧的处理线程

m处理提交位集(mProcDataCommitBitset):追踪具有需要提交以使客户端可获得的数据的处理线程

m开始启用位集(mStartEnabledBitset):追踪预期接收数据一起作为数据包的处理线程(用于在库启动时在所有启用的处理线程之间同步第一帧,以确保所有处理线程接收相同的数据流(除非提前禁用或延迟启用))

m力传回位集(mForceReturnBitset):追踪请求传回且不应当在任何帧缓冲状态304功能内阻塞的任何处理线程

在一个实施例中,一旦处理线程向帧缓冲状态304注册,它就会收到一个ID(经由添加处理线程()(addProcessingThread())),当处理线程注册时,该ID唯一地标识该处理线程。在实施例中,当处理线程注销(移除处理线程()(removeProcessingThread()))时,撤销该保证,并且可以将ID给予新线程。如果相同的处理线程稍后再次成功注册,则它可以接收具有相同保证的新ID。

在实施例中,所有处理线程必须在其帧缓冲状态304的实例上调用发送更新消息()(sendUpdateMessage()),以使帧缓冲状态的内部状态保持最新。如果这种情况没有发生,则处理线程可能无法接收新数据,或者可能导致流水线暂缓,等待线程在已经退出后继续处理数据。

转到图16,呈现了示出本发明的实施例中的调用顺序的序列图。

在一个实施例中,处理线程306的类旨在对将由API的任何客户端通过库访问的帧流执行任意计算。在一个实施例中,通用处理线程类用作用于旨在处理来自控制器的帧的任何组件的接口。因此,除了能够从同属模块中获得的功能外,通用处理线程可以为循环()提供适合处理帧数据的定义。在一个实施例中,循环()的实现处理确保每个处理线程正在使用前述的相同数据所需的帧获取和释放调用。在一个实施例中,循环()实现调用了一个新的虚函数进行处理()(doProcessing()),在新的帧数据已经被读取并准备好被处理时运行该函数,其中由专门处理线程完成大部分工作。在一个实施例中,每一类处理线程306都应当继承通用模块,并遵循上述生命周期。

在一个实施例中,该库保留一组指向每个处理线程的指针,处理线程被创建以访问其中的数据,进行所需的模块生命周期调用以匹配库的状态,并将模块公开给通过API从库的客户端请求的任何命令。

在一个实施例中,每个处理线程都应当公开启用/禁用功能,以允许客户端声明是否需要该线程的输出。在一个实施例中,公开的功能可能会限制库不必要地使用CPU和存储器。类似地,在一个实施例中,处理线程公开的任何可选特征(例如,对食指信息处理线程(FingerInfoProcessingThread)的食指追踪)应当能够被打开和关闭,特别是如果它们在计算上是昂贵的并且可能并不总是需要的话。

在一个实施例中,作为同属模块的子类,每个处理线程306继承一个互斥,该互斥可以用于根据需要锁定资源。在另一个实施例中,线程可以使用其自己的锁定策略,只要当保持基本模块的互斥时不休眠。

在一个实施例中,库中有存储控制器类型的参数的一组全局数据结构。在一个实施例中,控制器参数包括用于网格构造和解释的信息,以及有关从控制器发出的帧数据的格式的特定于板的信息(例如,二进制数量、信道数量、以位为单位的数据宽度)。

在一个实施例中,处理线程可以相对于它们输出的数据和运行的算法进行配置。在一个实施例中,该配置可以适于控制器类型,或取决于控制器的参数,或运行控制器的板的参数。

转到图17A和17B,示出了用于创建取决于所使用的控制器配置而不同地工作的处理线程306的两个实施例的结构。图17A示出了具有用于处理线程的抽象类的实施例,该抽象类将适用于支持多种配置特定的算法(例如,食指信息处理线程(FingerInfoProcessingThread))的通用处理线程子类化,其中处理在很大程度上取决于控制器类型。图17A中示出了通用模块402、I通用处理线程(IGenericProcessingThread)404、通用处理线程(GenericProcessingThread)406、I派生处理线程(IDerivedProcessingThread)408、派生处理线程1(DerivedProcessingThread1)410、派生处理线程2 412和派生处理线程3414。图17B示出了具有用作接口的独立类的实施例,这对于使由具体处理线程使用的数据类型抽象化可以是有用的。图17B中示出了通用模块402、I通用处理线程404、通用处理线程406、I派生处理线程408和派生处理线程416。当通用处理线程406接受它输出的数据类型作为模板参数时,如果每个配置中的数据类型都已模板化,则接口应当通过访问器函数对该数据类型抽象。在一个实施例中,如图17A和17B中示出的方法可以组合以支持具有配置特定的实现和数据类型的多个具体处理线程实现。

控制器配置/校准

在一个实施例中,提供控制器用户界面软件以允许控制器100的配置和/或校准。转到图18,提供了控制器UI(用户界面),包括用于惯用手、食指、手指和指垫的复选框。使用复选框,用户可以配置控制器100以为控制器100的已识别特征提供或排除新数据。

在一个实施例中,提供了用于校准控制器100的软件和热图的可视化。转到图19,观察到的颜色可以在从蓝色到红色的范围,示出电容式耦合强度(蓝色是最弱的,红色是最强的)。在一个实施例中,在对控制器100进行校准之前,可视化的热图可以看起来是有噪声的,如图19所示。在一个实施例中,为了校准控制器100并因此具有更准确的热图,用户可以用双手抓握控制器100以确保控制器100基本上被覆盖,然后放开控制器100。图20示出了来自被用双手抓握的控制器100的热图的可视化,并且图21示出了已经被释放的来自控制器100的热图的可视化,在每种情况下均如上所述。抓握和释放的过程允许控制器100被校准从而热图可视化被校准。简要地转向图22,示出了右手手持的经校准的控制器100的可视化。

转到图23,示出了库的基本生命周期。在一个实施例中,在可以从库中读取数据之前,在步骤502中,必须首先初始化并启动库。在一个实施例中,为了初始化库,初始化调用(例如,使用实时流触觉初始化()(TactualInitializeWithLiveStream()))必须成功传回。在一个实施例中,一旦被初始化,可以在保持相同设置的情况下多次启动和停止该库。因此,例如,如果将库初始化为从控制器读取实时数据流,则每次启动和停止该库时,仍将其设置为从控制器100流入数据,直到以不同的设置将其重新初始化为止。

在一个实施例中,在启动库之前,在步骤504中,必须启用生成所需数据的任何处理特征以确保那些特征被处理。在一个实施例中,在步骤504中,生成不需要的数据的特征应当被禁用。禁用生成不需要的数据的特征将减轻不必要的计算。在一个实施例中,默认情况下,所有处理特征都以禁用开始,并且可以通过可以在库启动后进行的调用(例如,触觉启用归一化强度()(TactualEnableNormalizedIntensity()))来启用(或重新禁用)。

在一个实施例中,在步骤506中,为了开始库中的处理特征,必须调用开始功能(例如,触觉开始()(TactualStart()));如果成功传回,则应该设置该库以处理来自其被初始化以读取的源中的任何数据。

在一个实施例中,在步骤508中,调用功能以从库中读取可获得的最新数据(例如,触觉同步数据()(TactualSyncData()))。在一个实施例中,在步骤510中,被调用以读取能够从库中获得的最新数据的功能会将可访问数据更新为最新的可获得的经处理的数据,然后调用数据访问功能以从库中读取可获得的数据。在一个实施例中,提供了另一个调用(例如,触觉有新数据()=真(TactualHasNewData()=TRUE))以确保能够获得新数据以用于读取最新数据(例如,在调用触觉同步数据()之后)。在一个实施例中,该库将仅从进行最后一次开始调用(例如,触觉开始()(TactualStart()))之前启用的处理特征中产生数据。在一个实施例中,在步骤512中,提供了停止调用(例如,触觉停止()(TactualStop))以停止库中的处理特征。在一个实施例中,一旦被停止,处理特征可以在随后调用开始功能时重新开始。在一个实施例中,在步骤514中,库中还能够获得资源解除分配功能(例如,触觉破坏()(TactualDestroy()))。当成功调用解除分配功能时,资源将被解除分配,并且库需要另一个重新初始化调用来重新初始化。

在一个实施例中,除其他事项外,设置线程将允许启用原始热图、启用归一化强度并启用手指位置,并且处理线程控制功能可以包括启用惯用手追踪、启用食指追踪、启用中指/无名指/小指追踪以及启用拇指追踪。在一个实施例中,例如,访问数据,但获取归一化强度热图数据(可能会被遮盖),并获取手部骨架数据。

手部骨架数据

图24包含人的手部以及与控制器相关的一系列关节和骨骼的图示。图示和所使用的模型可以被简化到一些部位(例如,腕骨)与控制器100产生的模型有关或可能无关的程度。具体地,图24示出了在人类手部上每个骨骼的对应位置(或简化位置)(浅蓝色点),相对于其他骨骼的层次结构(深蓝色线),并用名称标识骨骼。在一个实施例中,前臂中的节点是根节点,并且没有父节点。

在一个实施例中,手部骨架数据被存储在被打包的32位浮点数组中,其中每个骨骼都被视为所有数量以米为单位的(x,y,z)位置矢量的7元组以及(qx,qy,qz,qw)旋转四元数,每个元组被视为相对于其父级的局部变换(即,在考虑到其上代(ancestors)所做的任何旋转的情况下,在局部轴上进行平移)。对于本领域的技术人员将显而易见的是,尤其是考虑到控制器100所允许的敏感度、能力和自由度,可以使用许多其他数据结构来表示手部。

因此,图25示出了上述骨架数据的表示的表格的一个实施例。图25中的表格表示当该表格存在于计算设备的存储器中时该表格的一个实施例。图25中每个骨骼的名称与图24中的名称相对应。

图26示出了可以用于表示用户的手指信息的数据结构的实施例。根据实施例,数据结构可以表示与用户的手指和/或手部的位置和定向有关的各种信息。在一个实施例中,数据结构用如下来表示用户的手指信息:

标志是一个位集;

食指存在(indexPresence),中指存在(middlePresence),无名指存在(ringPresence)和小指存在(pinkyPresence)各自表示指示在控制器100附近的手指的存在的值--在一个实施例中,这些值是0和1之间的归一化浮点,其中0的值表示手指从控制器100完全伸离,值1表示手指完全收缩并触摸控制器100;

食指X(indexX)和食指Y(indexY)表示触发器上的位置--在一个实施例中,它们是笛卡尔坐标,其中-0.5的x值在触发器的最左侧,而0.5的值在触发器的最右侧;类似地,-0.5的y值在触发器的底部,而0.5的值在触发器的顶部--在一个实施例中,如果将任意一个值设置为-1,则控制器100将不支持该功能;

拇指X(thumbX)和拇指Y(thumbY)表示指垫上的位置--在一个实施例中,它们是笛卡尔坐标,其中-0.5的x值在指垫的最左侧,而0.5的值在指垫的最右侧;类似地,-0.5的y值在指垫的底部,而0.5的值在指垫的顶部;

拇指距离(thumbDistance)表示与控制器100的距离--在一个实施例中,0的值指示与控制器100接触,1的值指示拇指103不在控制器附近,而0与1之间的值指示拇指103远离控制器100一段距离悬停;

时间戳(timestamp)表示以该结构给定的传感器状态的时间--在一个实施例中,时间戳可以以例如微秒表示;

帧数(frameNum)是此数据何时相关的指示符,对于记录的数据会话,这可以表示在一组记录的帧内的位置,对于实时流会话,这可以表示接收到的每个传感器帧的增加的数量;

骨架姿势(skeletonPoses)表示手部骨架中的每个骨骼的位置和旋转--在一个实施例中,是一个浮点数组,其中每个骨骼以7元组的浮点数给定,7元组的浮点数分别表示(x,y,z)位置向量和(qx,qy,qz,qw)旋转四元数;

局部比例(localScale)反映了预期要在手部骨架的组件上执行的缩放比例--在一个实施例中,它是以(x,y,z)标量的三元组形式给定的浮点数组;

惯用手(handedness)表示当前握持控制器的是哪只手--在一个实施例中,惯用手具有介于0到2之间的整数,其中0表示没有手握持控制器,1表示左手握持控制器,2表示右手握持控制器。

图27和28是反映了示例性右手的骨架姿势(skeletonPoses)的实施例的表格,图27具有张开的手掌,图28是抓握的手掌。每个骨骼被反映在单独的行上,并且七个元组表示x、y、z位置矢量和qx、qy、qz、qw旋转四元数。位置(x,y,z)以米为单位。每个骨骼的轴都考虑到骨骼的上代中的任何所做的任何旋转(参考图24为人类手部每个骨骼的位置以及它们的层次结构的描绘)。所有平移和旋转均相对于骨骼的父级。示例性数量仅显示到小数点后五个位。

在一个实施例中,从控制器100上的一个或多个传感器模式获取的信息可以提供用于以低延迟以3D提供用户的手指、手部和手腕的模型的基础。骨架模型的低延迟递送可以允许VR/AR系统提供用户的手部的实时演绎。此外,本文呈现的骨架数据允许应用和操作系统软件具有信息,从该信息中不仅可以识别出在触摸敏感对象上的悬停、接触、抓握、压力和手势,而且该信息进一步提供手部的位置和方向,从中可以更容易得出手势意图。

上文参考控制器和对悬停、接触和压力敏感的其他对象的框图和操作说明,通过使用FMT或类似FMT的系统,描述了本系统。应该理解到,可以通过模拟或数字硬件和计算机程序指令的方式来实现框图或操作说明中的每一个框以及框图或操作说明中的框的组合。可以将计算机程序指令提供至通用计算机、专用计算机、ASIC,或其他可编程数据处理设备的处理器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令实现在框图或一个或多个操作框中所指定的功能/动作。

除了上述讨论明确限制之外,在一些替代实现中,在块中指出的功能/动作可以不按照操作说明中指出的顺序发生。例如,如果块被连续示出的执行顺序实际上可以同时或基本上同时执行,或者在可行的情况下,任何块可以相对于其他块以不同的顺序执行,这取决于所涉及的功能/动作。

虽然已经参照优选实施例具体示出和描述了本发明,但本领域内技术人员可以在不背离本发明的精神和范围的情况下在形式上和细节上对本发明作出多种改变。

64页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于双显示器设备的基于页面的导航

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类