首页> 中国专利> 用于与空间操作系统一起使用的空间多模式控制设备

用于与空间操作系统一起使用的空间多模式控制设备

摘要

一种包括有输入设备的系统,该输入设备包括耦接至处理器的检测器。检测器检测输入设备的取向。输入设备具有与该取向对应的多个模式取向。模式取向与姿势控制系统的多个输入模式对应。检测器耦接至姿势控制系统并且响应于该取向自动控制输入模式的选择。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-06

    未缴年费专利权终止 IPC(主分类):G06F 3/02 专利号:ZL2010800334089 申请日:20100527 授权公告日:20160420

    专利权的终止

  • 2016-04-20

    授权

    授权

  • 2012-07-11

    实质审查的生效 IPC(主分类):G06T7/00 申请日:20100527

    实质审查的生效

  • 2012-05-16

    公开

    公开

说明书

相关申请

本申请要求2009年5月27日提交的第61/181,621号美国(US)专 利申请的优先权。

本申请是2006年2月8日提交的第11/350,697号美国专利申请的部 分继续申请。

本申请是2008年4月24日提交的第12/109,263号美国专利申请的部 分继续申请。

本申请是2009年9月3日提交的第12/553,845号美国专利申请的部 分继续申请。

本申请涉及2010年5月4日提交的第12/773,605号美国专利申请。

技术领域

描述了与控制系统和设备有关的实施例,该控制系统和设备包括有在 计算处理之内或者在计算处理之间的数据表示、操作和交换。

背景技术

计算系统的实时控制要求用户的物理行为被翻译成输入信号。例如, 电视遥控响应于按钮按下而生成特定的信号,计算机键盘响应于键按下而 生成信号,而鼠标生成表示双轴线移动和按钮按下的信号。在空间或姿势 输入系统中,手和物体在三维空间中的移动被解释为能够表示高达六个空 间自由度和大量的模态或姿态的信号。

通过引用的合并

在本说明书中提及的每项专利、专利申请和/或出版物都以其全部内 容通过引用合并在本文中到以下程度:好像每项单独的专利、专利申请和 /或出版物都被具体且单独地指示出是通过引用被合并的一样。

附图说明

图1示出了根据实施例的棒状多模式输入设备(MMID);

图2是根据实施例的使用磁场跟踪的MMID的框图;

图3是根据实施例的跟踪环境下的MMID的框图;

图4a和4b示出了根据实施例的具有红外(IR)发光二极管(LED) 的MMID的输入状态;

图5a和5b示出了根据替选实施例的具有IR LED的MMID的输入 状态;

图6是根据实施例的姿势控制系统的框图;

图7是根据实施例的标记标签的图;

图8是根据实施例的姿势词汇中的姿态的图;

图9是根据实施例的姿势词汇中的取向的图;

图10是根据实施例的姿势词汇中的两手组合的图;

图11是根据实施例的姿势词汇中的取向混合的图;

图12是根据实施例的系统操作的流程图;

图13/1和13/2示出了根据实施例的示例命令;

图14是根据实施例的包括使用色拉(slaw)、蛋白质(protein)和池 (pool)的数据表示的处理环境的框图;

图15是根据实施例的蛋白质的框图;

图16是根据实施例的记述(descrip)的框图;

图17是根据实施例的摄取(ingest)的框图;

图18是根据实施例的色拉的框图;

图19A是根据实施例的在池中的蛋白质的框图;

图19B1和19B2示出了根据实施例的色拉头部格式;

图19C是根据实施例的使用蛋白质的流程图;

图19D是根据实施例的构造或生成蛋白质的流程图;

图20是根据实施例的包括使用色拉、蛋白质和池的数据交换的处理 环境的框图;

图21是根据实施例的下述处理环境的框图,该处理环境包括多个设 备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等离子 体构造(即池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响 应由设备所生成的事件;

图22是根据可替换实施例的下述处理环境的框图,该处理环境包括 多个设备和在所述设备中的一个或更多个设备上运行的众多程序,其中, 等离子体构造(即池、蛋白质和色拉)用于允许众多运行的程序共享并集 体地响应由设备所生成的事件;

图23是根据另一个可替换实施例的下述处理环境的框图,该处理环 境包括多个输入设备,所述多个输入设备耦接在运行于设备中的一个或更 多个设备上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉) 用于允许众多运行的程序共享并集体地响应由输入设备所生成的事件;

图24是根据又一个可替换实施例的下述处理环境的框图,该处理环 境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备 上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允 许众多运行的程序共享并集体地响应由设备所生成的事件;

图25是根据再一个可替换实施例的下述处理环境的框图,该处理环 境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备 上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允 许对运行的程序进行状态检查、可视化和调试;

图26是根据另外的可替换实施例的下述处理环境的框图,该处理环 境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备 上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允 许影响或控制该进程池中产生和放置的状态信息的特性。

具体实施方式

这里,描述了一种用于将多模式输入提供给空间或姿势计算系统的系 统和方法。系统和方法的实施例是在空间操作环境(SOE)的背景下提供 的,以下将进行详细描述。包括姿势控制系统或者基于姿势的控制系统的 SOE可以可替换地被称为空间用户接口(SUI)或者空间接口(SI)。

在此,描述了多模式输入设备(MMID)的大量实施例,其中,MMID 使得空间或姿势输入系统的用户能够直观并且以人机工程学有效的方式 访问一系列输入的功能性。实施例的MMID为手持输入设备。实施例的 MMID包括能够精确且实时地跟踪设备的位置和取向的装置。实施例的 MMID包括物理和机械结构,使得持有和操作该设备的人可以容易地绕 着该设备的一个或更多个轴线旋转该设备。实施例的MMID包括物理和 机械结构,使得可以用多于一次旋转紧握来舒适地握住和操作该设备。实 施例的MMID包括软件部件或机构,该软件部件或机构能够将用户维持 和操作设备的旋转紧握状态以及这些操作旋转状态之间的转换二者解译 并且翻译成用户输入信号。该软件部件依赖于与设备对应的跟踪数据。此 外,这样的输入设备可以具有集成在其形式中的其他输入能力,其形式诸 如按钮、操纵杆、滑动块和滚轮。设备还可以具有集成的输出能力,诸如 灯、音频扬声器、光栅显示器、以及振动电机。

如在此提出的那样,对于各种实施例的多模式输入设备,各种各样的 具体配置都是可能的。设备可以在物理形状、机械和人机工程学方面不同。 设备还可以在由物理设计、跟踪技术和软件处理的组合支持的离散模态数 量上不同。此外,MMID可以在辅助机载输入(即除位置、取向和模态 之外)的设计方面和在机载输出能力方面不同。

实施例的MMID包括具有壳的棒状设备,该壳具有与消费电子远程 控制类似的形状因子。图1示出了根据实施例的棒状MMID 100。MMID 100大约五英寸长、一个半英寸宽、具有三角形横截面,然而不限于此。 MMID 100壳的每个面包括单个输入传感器,实施例中的输入传感器包括 机电按钮,然而,替选实施例可以在每个面上具有更多或更少量的按钮、 或者具有不同类型的按钮。当用户握住MMID 100时,三角形棱柱的长 边缘104中的一个自然在用户的手中面向下,从而,容置在用户的手指的 弯曲中,同时,棱柱的相对面被定向成向上并且坐落在用户的拇指的下面。 MMID 100可以在手指和拇指的最小移动的情况下绕着长轴线旋转120 度,以将棱柱的相邻面变成向上的取向。从而,棱柱包括与棱柱的面对应 的三个明显的易于访问的模式取向。用户MMID 100通过所有(例如, 三个)取向快速、可重复且重复地旋转,甚至可以通过用户首次试用该设 备来通过所有(例如,三个)取向快速、可重复且重复地旋转。

实施例的MMID 100的位置通过使用磁场跟踪来跟踪,这一点将在 以下描述,然而,实施例的MMID 100的位置也可以通过使用其他跟踪 技术(其中某些在此进行描述)来跟踪。MMID 100包括电路、微控制器 和用于相对于交流(AC)磁场或电磁场(EMF)来跟踪设备的程序代码。 实施例的EMF是通过接近MMID的兼容基站来生成和发射的,但是不 限于此。MMID 100包括也称为输入传感器的一个或更多个机械按钮、连 同用于数字化一个或更多个按钮的状态的相应的电子器件。此外,MMID 100包括提供无线电链路以向主系统报告跟踪数据(例如,取向数据、位 置数据等)和按钮按下原始数据的电路。此外,MMID 100还包括电池和 电源电路。

输入处理软件将原始跟踪和按钮按下数据翻译成包括有空间位置和 取向的六个度、按钮向下转换、按钮向上转换和按钮状态的运行账户的数 据。实施例的输入处理软件部分地在设备上执行、并且部分作为应用代码 在主系统上执行,但是不限于此,而是可以在任何数量/组合的处理器设 备或仅在一个处理器上以分布式方式运行。该数据被传送给应用软件,作 为一系列规划的“事件”(规划的事件的处理在下面详细描述)。此外,该 输入处理层向应用软件提供模式转换和运行模式状态事件。如下面详细描 述的,可能有三个状态(例如,i、ii和iii)和六个转换(例如,i->ii、i->iii、 ii->iii、ii->i、iii->i、以及iii->ii)。

实施例的处理层使用滞后使得用户能够在不离开给定模式的情况下 访问沿着MMID的长轴线的旋转的最大值,并且来防止在MMID接近转 换角度的边缘时模式状态之间的快速且不需要的翻转(flip-flopping)。在 使用该滞后时,为了触发模式之间的转换,实施例的MMID应当以相对 于之前的模式的中心角度大于120度的角度旋转。因此,如果MMID处 于模式(i),其中,绝对角度中心为零度,则MMID逻辑上保持处于模 式(i)状态,直到在任一方向上检测到大于例如150度的围绕长轴的旋 转为止。当MMID被旋转151度时,其转换至模式状态(ii),模式状态 (ii)具有120度的角度中心。为了实现返回到状态(i),MMID必须在 相反的意义下被旋转越过该角度中心-150度,以使其越过-30(或者330) 度的绝对角度。滞后带——假定大约30度(150度减去120)——是能够 通过程序来设定的,并且可以通过应用代码或者通过用户喜好设置来调 节。该滞后示例例如被设置用于三面MMID,如上所述,但不限于在此 对于三面设备描述的值;替选实施例的旋转角度和/或滞后带根据壳或棒 的形状因子以及设计者/用户喜好来确定。

此外,可以通过应用代码来有选择地停用某些模式。因此,可以通过 应用代码将MMID视为输出恒定的模态状态(i)、(ii)或(iii)的单模 式设备。或者,可以通过将停用的模式专有地映射至两个剩余模式中的任 一个或者通过将停用的模式视为滞后带的附加区域来停用任意一个模式。

此外,系统可以被配置成永久地将MMID的物理面(例如,三角形 棱柱)与每个模式相关联,其中,面借助于有源或无源记号被可选地标记 为模式关联。或者,系统可以被配置成以联系上下文的方式向面分配模式。 作为后面的情况的示例,MMID可以被配置成使得当其在不活动的一段 时间之后被用户首次拿起时,初始向上的面与模式(i)相关联。在这种 情况下,可以在MMID上、在用户留意的图形显示器上、或者在MMID 和图形显示器的组合上设置有源模式的指示器。

MMID的每个面包括一个按钮,该一个按钮也称为输入传感器。这 些按钮由应用层软件同样地处理,但是不限于此。从用户的角度来看,可 以认为设备具有一个逻辑按钮,由于人机工程学实用性而具有三个物理体 现。MMID的电路和软件确实区分不同物理按钮的操纵,然而,系统可 以被布置成使得在特定组合中按下按钮将设备放置在各种配置中并且重 置状态。

实施例的MMID通过使用磁场跟踪技术(参见例如美国专利第 3,983,474号)来起作用。将正交线圈用于生成和感测磁场的应用已经用 于定位和跟踪远程物体。例如,美国专利第3,644,825号教导了生成和感 测相对于彼此移动的线圈。或者,磁场可以被制成旋转,这一点在Kalmus 的“A New Guiding and Tracking System”(IRE Transactions on  Aerospace and Navigational Electronic,March 1962,第7至10页)中 进行了教导。

也已经使用了将坐标变换器用于确定第一坐标系统相对于第二坐标 系统的取向的应用。例如,美国专利第3,474,241和3,660,648号公开了以 下的变换器:该变换器将在第一坐标系中测得的角度速率或角度误差变换 成关于中间坐标系的轴而限定的角速率,关于中间坐标系的轴限定了角度 旋转或速率,并且接着结合角度旋转或速率以确定限定角度轴序列的角 度,该角度轴序列通过欧拉角(Euler angle)的使用限定第一坐标系相对 于第二坐标系的取向。

图2是根据实施例的使用磁场跟踪的MMID的框图。被定位成接近 或在MMID的跟踪环境下的基站210提供跟踪场并且与MMID 211通信。 在基站中,信号发生器通过使用场发生器电路201产生磁场,以交替地在 三个正交线圈202中生成波形。由三个线圈生成的电磁信号由MMID中 的三个正交线圈203来接收。从三个线圈接收到的信号通常通过使用运算 放大器204被放大并且被变换成可以通过微处理器207来采样的数字信号 205。微处理器通过使用数字信号处理(DSP)技术来分析三个线圈的输 入。DSP处理提供从基站投影MMID的距离和取向的位置向量、以及确 定MMID的取向的取向矩阵。

附加信息(例如,时间戳、通用ID等)也可以与MMID位置数据 组合。一个或更多个用户输入传感器206也感测状态。输入传感器206 举例来说可以是瞬时开关、拨动开关、操纵杆型输入设备、和/或触摸传 感器等。来自这些开关的采样数据包括一个比特(用于触摸按钮)或更复 杂的数据值,诸如用于触摸传感器的浮点x、y坐标。

在实施例中,微处理器将包括有位置数据和取向数据的数据从 MMID无线地传达给主进程。MMID具有射频发射机和接收机(TX/RX) 208,用于将数据通过“接入点”209传达给网络。该无线电链路可以使 用任意无线协议(例如,蓝牙、802.11、无线USB、专有方案、Nordic 半导体nRF24L01低功率无线电方案等)。接入点可以将接收到的数据流 通过局域网(例如,无线互联网10/100/1000BaseT、802.11等)或者其他 接口(例如USB等)传达给一个或更多个主计算机。

图3是根据实施例的跟踪环境下的MMID的框图。MMID 304被示 出为与跟踪环境300有关。如上所述,MMID与基站301通信,但是, MMID可以在跟踪环境300下与任意数量的不同类型的电子设备和/或电 子设备的组合通信。跟踪环境不限于特定的尺寸,这是因为:由于射频通 信信道的范围可以与AC磁场的范围不同,所以具有线圈的附加AC磁场 发生器305/306/308可以被设置成产生附加跟踪信标。这些信标可以以不 同的频率操作和/或在不同时间传送。当MMID的用户远离场发生器302 并朝着发生器305移动时,MMID将使用任意瞬间更强的信号来确定位 置和取向,但是仍通过使用接入点303将该数据传回网络。

当MMID离开接入点303的范围并且朝着基站306移动时,MMID 将无线电链路与基站306中的接入点相关联。最终,在磁场发生器与数据 接入点之间徘徊的能力使得MMID能够用在任意大的跟踪环境中。注意, 接入点和磁场发生器不需要在相同的位置307/308处。由于接入点和场发 生器二者具有通过局域网与一个或更多个主设备通信的装置,所以频率发 生器305可以自主地操作以使得能够进行更容易的安装。

下面是人使用实施例的MMID的操作示例。在操作过程中,操作者 站在三张相联(triptych-format)格式的宽的高宽比的投影屏幕前面的某 个距离(例如十英寸)处,投影屏幕大约是两米高四米宽;她的紧前面立 有一点五米宽的桌子。桌子本身也被在正头顶天花板安装的投影仪视为投 影表面。操作者用她的右手舒适地握住具有三角形横截面MMID的 MMID,其中,平坦的侧面“i”指向上。当她将MMID朝着前屏幕并围 绕前屏幕瞄准时,部分透明的图形光标表示MMID的指示向量与屏幕表 面的相交。输入系统的高帧速率和低等待时间有助于因果直观性的有力感 测:在操作者改变MMID的瞄准时,光标在前向屏幕上的对应的移动没 有明显地落后;感知是摇动了闪光灯或者激光指针。

由操作者进行的使用方面的应用是产品打包预览系统,并且该应用被 配置成以与很多类似的应用相同的方式使用MMID;因而,MMID模态 对于操作者来说是非常熟悉的。模式“i”使得能够在完全详细的级别进 行应用元件的直接操纵;模式“ii”进行元件的元操纵(例如,在组级别); 而模式“iii”允许三维操纵。在任意情况下,光标的出现不仅反映当前模 式而且还可视地表示切换MMID的模式所必需的轴向旋转的方向。目前, 光标示出了MMID的顺时针旋转会产生至“ii”的模式转换,而逆时针旋 转会产生至模式“iii”的转换。

在前向屏幕三张相联中的左边第三个上布置的是小物体分组的阵列。 在她的拇指下面,操作者顺时针轴向地旋转MMID,直到下一个面向上 瞄准为止,并且光标改变以表示至状态“ii”的模式转换。她将MMID向 左瞄准,并且,当光标在每个物体分组上行进时,加亮的边界渐强,接着, 在光标离开分组的凸起的外壳时,加亮的边界渐弱。操作者使得光标能够 停留在特定的分组上并且接着压下紧在她的拇指下面的按钮。光标表示物 体分组已经被抓住,并且在她朝着前向屏幕的中心摇动MMID时分组移 动以跟踪光标。操作者在她已经将缩小的分组带到紧在她前面的位置处时 释放按钮。分组快速地扩展以充满第三前向屏幕的中心的全部区域,以揭 示各种形状的塑料瓶和文字指示“宠物能量饮料”的集合。

操作者再次绕着MMID的长轴顺时针旋转MMID,由此,光标改变 以表示模式“iii”现在在操作中,并且从而3D操纵被启用。操作者将光 标瞄准形状如戴有头饰的狮子狗的腿的特定的球形瓶子处,并且瓶子可视 地加亮;接着,操作者按按钮。现在,系统进入直接操纵模式,在该直接 操纵模式中,MMID的平移和旋转控制被描绘的虚拟空间中的所选物体 的平移和旋转。因此,在操作者朝着她自身(直接沿着至前向屏幕的几何 法线)拉动MMID时,瓶子变得更大,以朝着虚拟相机逼近。类似地, MMID的左右移动被翻译成所描绘的瓶子的左右移动(沿着屏幕的水平 轴线),而MMID的上下平移产生瓶子的垂直平移。向这些平移施加能够 对于每个操作者进行定制的适当的比例因子,使得MMID的适度的移动 影响虚拟物体的更大的移动;从而,使得能够在不超出操作者舒适的手部 移动的范围的情况下访问图形/虚拟环境的全部区域。

对自MMID取向至被描绘的瓶子的绝对旋转位置的映射施加类似的 换算功能。在本示例中,操作者的喜好命令进行四倍的换算,使得MMID 的围绕任意轴线的九十度的旋转产生虚拟物体的全三百六十度的旋转(90 度乘以四(4)得到360度)。这确保了在操作者从每个可能的角度检查瓶 子时,基于手腕和基于臂部的MMID旋转保持在舒适的范围内。因此, 例如,在她向上旋转MMID,以围绕本地x轴线将MMID倾斜九十度, 使得MMID从向前指示发展成向上指示时,瓶子执行围绕屏幕本地x轴 线的全旋转,以回到其初始取向,正如MMID实现完全向上的姿势。注 意,只要MMID的按钮保持按下,则施加适当的模式锁定影响:在不引 起MMID切换至模式“i”的情况下、操作者可以绕着MMID的长轴线 将MMID顺时针旋转一百七十度(以产生虚拟物体的五百一十度“屏幕 内”旋转)。

当操作者释放MMID的按钮时,所描绘的瓶子从直接操纵被释放并 且保持其瞬时位置和旋转。如果在按钮释放的时刻MMID处于通常会对 应于非“iii”的MMID模式的旋转姿态,则在模式切换被实际实现之前, 操作者被批准以一个第二时间滞后(视觉上表示为屏幕上的光标图形状态 的一部分);如果操作者将MMID旋转地返回到与模式“iii”对应的姿态, 则直接3D操纵模式继续。那么,她可以通过将光标叠加在球形瓶子上并 且再次按下按钮来执行另外的位置和姿态调整;而如果她将光标瞄准在不 同的瓶子处,则该物体会服从她的操纵。

操作者最终将MMID切换至模式“ii”并且通过使用拖曳模态来将调 色板从右屏幕带至中心屏幕,其中,该拖曳模态与她将瓶子分组带至中心 屏幕的模态相同;当她释放按钮时,调色板扩展并且定位其自身至球形瓶 子的侧面。接着,她旋转MMID以选择模式“i”并且操纵调色板的选择 界面;在她希望的深红色色调被选中时,她按下按钮并且将彩色样本从调 色板向下并向左拖曳,直到其覆盖形成球形瓶子的清洁材料为止。当她释 放按钮时,施加颜色并且瓶子的材料采用透明的深红色。

仍然在模式“i”中,操作者将MMID直接指向球形瓶子处,该瓶子 作为响应加亮并且操作者通过按下按钮向下摆动MMID,以将瓶子的图 像从前屏幕拖曳至紧在她前面的桌子的表面。她释放按钮并从而释放瓶 子,以让其在桌子上就位。接着,操作者旋转回到模式“ii”并且将MMID 向前指向其他宠物能量饮料瓶的集合处;她按下按钮并且立刻向左轻拍 MMID,以在不到一秒之后释放该按钮。瓶子的集合飞向左,并在其行进 时缩小尺寸,直到其以其开始的总体尺寸停在该位置处为止。接着,操作 者选择宠物保健产品的不同的分组,以将其如上地带入中心显示区域,以 便选择、检查和修改其中一个项目。她最终将所选物体添加至台式显示器。 操作者继续这样的监护过程。

在某点处,操作者选择通过使用简单的几何编辑器来修改宠物按摩油 的罐的物理几何形状,也根据前向屏幕三张相联中的右边第三个上出现的 工具的集合来拉动。为了清楚,除了两个MMID的同时使用,在此省略 了对于该编辑器的使用中涉及的很多操纵的描述。在本示例中,操作者使 用第二MMID,将第二MMID握在她的左手中,以通过使用一个MMID 抓取罐的几何形状的顶部并通过使用另一个MMID抓取罐的底部(两个 MMID都处于模式“iii”)来在罐(原本是具有矩形横截面的简单的挤压 形状)中放入捻合线。因此,由于顶部和底部分别“固定”,所以操作者 沿着相反的方向旋转MMID;这引起了围绕罐的主轴线的线性扭曲。操 作者完成这些几何修改并将编辑模块返回到右显示器;她将修改的罐添加 至桌子的扩大的分类。

最后,桌子上存在所描绘的一打物体,并且前向中心显示器再次成为 空的——操作者已经按模式“ii”向左边轻拍了最后一组(以及向右边轻 拍了调色板)。接着,仍然在模式“ii”下,她将MMID指向桌子处,但 是她的瞄准避免了这里的产品描绘;作为替代,她按下右按钮并且用 MMID描绘圆形轨迹,好像绕着所显示的物体描绘弯曲的畜栏形状。作 为响应,系统向之前区分的产品描绘施加分组操作,以组织他们的布局并 适配他们的相对大小。最后,操作者使用模式“ii”下的拖曳来弹性地将 图解的“导管”的输入孔径从右显示器延伸至中心显示器;接着,她拿起 桌子的定制的产品集合,将其向上拖至中心屏幕,并且将其放置在导管的 口中。管子吞下该集合并缩回到右显示器;该集合被输送给操作者的同事, 该同事正期待检查她的工作并且用其来构造宠物商店过道的相互作用的 显像。

替选实施例的MMID包括壳,该壳具有矩形形状因子。该替选实施 例的指针例如是五英寸长、一点五英寸宽、半英寸深,但是很多其他尺寸 和/或配置也是可以的。MMID包括以下详细描述的光学跟踪标签。MMID 不包括电子器件,这是因为处理软件在主系统环境中运行,但是实施例不 限于此。

用户很自然地握住指针,使得长轴线用于指向用户的环境中的物体 (包括虚拟物体)。可以将指针绕着长轴线旋转,以在两个模式取向(例 如,模式i和ii)之间转换。尽管只有两个模式,可能有四个模式转换, 这是因为系统可以在转换期间区分旋转的方向:从模式i至模式ii/顺时针 的转换;从模式i至模式ii/逆时针的转换;从模式ii至模式i/顺时针的转 换;从模式ii至模式i/逆时针的转换。根据上述MMID,在输入处理软件 中跟踪这些旋转转换,并且这些旋转转换可能易受滞后锁定的影响。

光学标签安装在指针的“前”部(例如,前半部分)上,例如在从用 户的手向外延伸的区域中,但是不限于此。指针的两个侧面中的每侧面安 装有两个标签。每侧面的最前向的标签被固定就位。每侧面的最后的标签 被定位在前向标签后面的某个距离(例如,五(5)厘米)处并且沿着相 同的轴线对准并且根据相同的轴线被定向。该后面的标签被固定至弹簧安 装的滑动机构(平移的方向与指针的长轴线对准),使得用户的拇指可以 在机构上向前推,以将两个标签之间的距离减小大约一厘米。

当两个标签之间的距离是五厘米时,输入处理软件将设备的逻辑按钮 状态解译成处于状态(0)。为了实现转换至状态(1),后面的标签移动一 定的距离,以更接近前面的标签(例如,到达距前面的标签4.2厘米的范 围内)。仅当标签之间的距离超过4.8厘米时,才触发回到按钮状态(1) 的转换。这与施加给设备的主要(旋转)模式转换的滞后类似。而且,滞 后带的尺寸是可配置的。

在光学跟踪MMID的实施例中,在标签上排列有大量点的情况下使 用光学跟踪标签。这些点例如可以是覆盖有后向反射器的很小的球,以使 得IR跟踪系统(以下描述)能够确定加标签的物体的位置和取向。在该 加标签的物体是输入MMID的情况下,可以期望提供一种用于跟踪系统 的装置,以确定什么时候用户提供非几何、状态变化的输入,该输入诸如 按下按钮。

各种替选实施例的MMID通过使用红外(IR)发光二极管(LED) (IR LED)来操作,以基于用户输入提供仅在某些状态下对相机可见的 跟踪点。这些替选实施例的MMID包括电池和由输入按钮控制的LED驱 动电路。图4a和4b示出了根据实施例的具有IR LED的MMID的输入 状态。本实施例的标签包括大量回射点402(示出为实心填充的点)和两 个IR LED 403和404。在图4a中,标签示出为处于如下状态,在该状态 下,MMID上的按钮未被按下,并且IR LED 403处于非点亮状态,而IR LED 404处于点亮状态。在图4b中,用户已经按下了MMID上的按钮, 并且响应于此,IR LED 403处于点亮状态,而IR LED 404处于非点亮状 态。光学处理系统检测两个标签的不同并且根据两个标签的状态确定用户 的意图。

图5a和5b示出了根据替选实施例的、具有IR LED的MMID的输 入状态。在本实施例中,仅切换一个LED。因而,参照图5a,当用户未 按下按钮时,LED 504处于非点亮状态。在图5b中,用户已经按下了按 钮,因而LED 504处于点亮状态。

通过使用类似的方式也可以启用另外的方法。在一个替选实施例中, 通过使用LED来构造完整的标签,并且该标签的存在或者不存在提供了 用户的输入。在另外的实施例中,产生两个相同的标签,这两个标签或者 重叠(偏移例如0.5cm)或者相邻。点亮一个标签或者另一个标签并且根 据另外的标签确定该标签的位置使得能够确定用户的输入状态。

其他替选实施例的MMID可以组合EMF跟踪和标签跟踪的使用。 如在此所描述的那样,这些替选实施例组合使用各种类型的标签的标签跟 踪和EMF跟踪的方面。

其他替选实施例的MMID包括结合两个红外光源使用的控制器,其 中,一个红外光源定位在用户的前面,而另一个红外光源定位在用户的后 面。这两个光源每个都具有三个独立的红外发射器,并且每个光源的发射 器被配置成不同的模式。本实施例的MMID使用惯性跟踪,包括两个模 式并且包括多个机械输入按钮,这一点将在下面进行描述。

本实施例的MMID可以被认为是支持两个模式取向的WiiTM远程控制设备的修改,其中,模式根据控制器的相对于其环境的直 接取向来确定。WiiTM控制器是用于在WiiTM平台上播放视频 游戏的很小的设备并且是相关联的红外光源。控制器通过使用一组低精度 的加速度计来惯性地跟踪其在空间中的运动。由于在数字积分期间累积的 误差,加速度计不足以精确到能够在几十秒的时间内提供很好的位置和取 向数据,因此,还使用光学跟踪系统(结合光源部件)。因此,WiiTM控 制器的光线跟踪系统还包括内部前向红外相机,该相机能够在二维图像平 面内定位四个亮的红外光源。因此,相机内嵌在被跟踪的设备中,并且被 光学定位的物体是固定位置的环境对象。通过测量环境中的已知红外光源 的感知的尺寸和位置,可以确定控制器指向的方向,并且可以使得远离这 些光源的控制器成三角形。可以将该红外跟踪技术视为在此描述的跟踪技 术的逆向技术,这是因为这里的实施例的红外跟踪技术使用放置在环境中 的相机来光学定位布置在设备、表面、手套和其他物体上的点。

在使用WiiTM操纵台的典型应用中,控制器通常指向显示 屏。显示屏的上方或下方放置有红外光源,以向控制器提供屏幕相关的取 向。相比较而言,实施例的控制器与两个红外光源一起使用,其中,一个 红外光源定位在用户的前面,而另一个红外光源定位在用户的后面。这两 个光源中的每个都具有三个独立的红外发射器,并且每个光源的红外发射 器被配置成不同的模式。

实施例的控制器通过蓝牙无线电与主计算机上运行的输入处理软件 或者部件通信。输入处理软件识别检测到的是哪个发射器图案,并且因此 识别控制器指向前还是指向后。根据该前向/后向判定得到两个模式取向。 在模式状态(i)下,控制器被定向成向前。在模式状态(ii)下,控制器 被定向成向后。在每种情况下,用户都逻辑地指向前。用户通过扭转控制 器“返回前面”来控制模式。这是与上述实施例不同的地方,在上述实施 例中,模式控制是设备的长轴线“滚动”。实施例的控制器可以包括嵌入 的扬声器,以提供声音输出、若干灯以及振动(或“噪声”)输出。

根据本说明书,在此描述的实施例的大量修改都是可能的。实施例的 控制器例如可以具有两个相机,其中,每个相机位于设备的一个端部,从 而排除了需要两个光源。可以借助于定时而非空间图案来区分光源。 空间操作环境(SOE)

这里,在空间操作环境(SOE)的背景下描述了空间连续体输入系统 的实施例。作为示例,图6是根据实施例的空间操作环境(SOE)的框图。 用户将他的手101和102放在相机104A-104D阵列的视区150内。相机 检测手指以及手101和102的位置、取向以及移动作为空间跟踪数据,并 产生输出信号给预处理器105。预处理器105将相机输出翻译成姿势信号, 该姿势信号被提供给系统的计算机处理单元107。计算机107使用该输入 信息产生用以控制一个或更多个屏上光标的命令,并向显示器103提供视 频输出。

尽管本系统示出了以单个用户的手来作为输入,但是SOE 100还可 以使用多个用户来实施本发明。另外,替代手,或除手之外,该系统还可 以跟踪用户身体的任何一个或更多个部位,包括头、脚、腿、臂、肘、膝 等。

在所示出的实施例中,使用4个相机或传感器来检测视区150内的用 户的手101和102的位置、取向和移动。应理解,SOE 100可以包括更多 (例如六个相机、八个相机等)或更少(例如两个相机)的相机或传感器, 而不脱离SOE的范围或精神。另外,尽管相机或传感器在示例实施例中 被对称地设置,但是在SOE中并没有这种对称的要求。在SOE中可以使 用容许用户手的位置、取向以及移动的任何数目或布置的相机或传感器。

在一个实施例中,所使用的相机是能够捕捉灰度图像的运动捕捉相 机。在一个实施例中,所使用的相机是由Vicon制造的相机,诸如Vicon MX40相机。该相机包括相机上(on-camera)处理,并能够以1000帧/ 秒进行图像捕捉。运动捕捉相机能够检测和定位标记。

在所描述的实施例中,相机是用于光学检测的传感器。在其他实施例 中,可使用用于电磁、静磁、RFID或任何其他适当类型的检测的相机或 其他检测器。

预处理器105用于产生三维空间点重构以及骨架点标注。姿势翻译器 106将3D空间信息和标记运动信息转换成可以被计算机处理器解译的语 言,以便更新显示器上光标的位置、形状和动作。在SOE 100的可替换 实施例中,预处理器105和姿势翻译器106可以集成或组合成单个设备。

计算机107可以是任何通用计算机,诸如由Apple、Dell或任何其他 适合的生产商生产的。计算机107运行应用程序,并提供显示输出。光标 信息现在来自姿势系统,而不是来自鼠标或其他现有技术的输入设备。 标记标签

实施例的SOE预期使用用户的一个或更多个手指上的标记标签,从 而使得系统能够定位用户的手、识别该系统正查看的是左手还是右手以及 哪些手指是可见的。这允许该系统检测用户手的位置、取向以及移动。该 信息允许多个姿势被系统识别并且被用户用作命令。

在一个实施例中,标记标签为物理标签,其包括基片(在本实施例中 适于附在人手上的各个位置)和以独特识别图案设置在基片表面上的离散 标记。

所述标记和相关联的外部感测系统可以操作于下述的任何域(光、电 磁、静磁等)中,这些域允许准确、精确、快速并连续获取它们的三维空 间位置。所述标记自身可以有源地(例如通过发射结构化的电磁脉冲)或 者无源地操作(例如通过如本实施例中的光回射方式)。

在获取的每个帧中,检测系统接收所恢复的三维空间位置的聚集“云 (cloud)”,所述三维空间位置包括来自在仪表化的工作空间体积(相机 或其他检测器的可见范围内)中存在的标签的所有标记。每个标签上的标 记具有充分的多样性,并以独特的图案来设置,从而使得该检测系统能够 执行以下任务:(1)分段,其中每个被恢复的标记位置被分配给形成单个 标签的点的一个且唯一的子集合;(2)做标签,其中每个分段后的点的子 集合被标识为特定标签;(3)定位,其中所标识的标签的三维空间位置被 恢复;以及(4)取向,其中所标识的标签的三维空间取向被恢复。通过 标记图案的特定性质,有可能执行任务(1)和(2),如下所述以及如图 7中的一个实施例所示的。

在一个实施例中,标签上的标记被附于常规栅格位置的子集。如本实 施例中,在下面的栅格可以是传统的笛卡尔类型;或者替换地可以是某些 其他常规平面棋盘式布置(例如三角形的/六边形的平铺排列)。栅格的尺 寸和间隔相对于标记感测系统的已知空间分辨率来建立,使得相邻的栅格 位置不可能被混淆。针对所有标签的标记图案的选择应该满足以下约束: 通过旋转、平移或镜像的任何组合,标签的图案不与任何其他标签的图案 重合。可以进一步对标记的多样性和排列进行选择,以容许某特定数目的 组成标记的丢失(或闭塞):在任意变换之后,其应该仍然不可能使经折 衷的模块与任何其他模块混淆。

现在参考图7,其示出多个标签201A-201E(左手)以及202A-202E (右手)。每个标签是矩形并且在本实施例中组成5×7的栅格阵列。选择 矩形形状作为确定标签取向的辅助,并且减少镜像复制的可能性。在所示 出的实施例中,针对每个手上的每个手指都有标签。在某些实施例中,每 个手使用一个、两个、三个或四个标签可能就足够了。每个标签具有不同 灰度或颜色阴影的边界。在该边界内是3×5的栅格阵列。标记(由图7 中的黑点表示)被设置于栅格阵列中的某些点处,以便提供信息。

通过将每个图案分段成“共同”和“独特”的子图案,可以将资格信 息编码到标签的标记图案中。例如,本实施例规定了两个可能的“边界图 案”,即矩形边界线周围的标记的分布。由此建立了标签“家族”——计 划用于左手的标签可能因此全部使用如标签201A-201E中所示的相同边 界图案,而那些附着于右手手指的标签可被分配如标签202A-202E中所 示的不同图案。选择该子图案使得在标签的所有取向中左图案可区别于右 图案。在所示的示例中,左手图案包括在每个拐角中的标记以及从拐角栅 格位置起的第二个中的标记。右手图案仅在两个拐角中具有标记并在非拐 角栅格位置中具有两个标记。对图案的检查表明,只要四个标记中的任何 三个是可见的,左手图案就肯定能够区别于右手图案。在一个实施例中, 也可使用边界的颜色或阴影作为偏手性(handedness)的指示。

当然每个标签必须仍然采用独特的内部图案,即分布于其家族的公共 边界内的标记。在所示出的实施例中,已经发现:由于手指的旋转或取向, 内部栅格阵列中的两个标记足以没有重复地唯一标识十个手指中的每个。 即使标记之一被闭塞,标签的图案及偏手性的组合也导致唯一的标识符。

在本实施例中,栅格位置在视觉上呈现在刚性基片上,作为对将每个 回射标记附在其预期位置的(手动)任务的辅助。这些栅格和预期标记位 置通过彩色喷墨打印机被逐字打印到基片上,所述基片在这里是一片(初 始地)柔软的“收缩膜”。每个模块被从该片切下来,然后被烘烤,在该 热处理期间,每个模块经受精确并可重复的收缩。在该过程后的短暂间隔 内,冷却的标签可被轻微成型——例如,沿手指的长度曲线;其后,基片 是适度刚性的,且标记可以附在所指示的栅格点。

在一个实施例中,标记自身是三维的,如通过粘合剂或某些其他适当 方式附于基片的小的反射球。标记的三维性比二维标记更有助于检测和定 位。不过,两者均可以使用,而不脱离在此描述的SOE的精神和范围。

目前,标签通过维可牢(Velcro)或其他适当方式被附于操作员所戴 的手套上,或者可替换地,使用温和的双面胶带直接附于操作员的手指上。 在第三实施例中,可以与刚性基片一起分配,并将各标记直接附于或“绘 制”在操作员的手指和手上。

姿势词汇

实施例的SOE预期有包括手姿态、取向、手组合以及取向混合的姿 势词汇。在SOE的姿势词汇中,还实施了符号语言(notation language) 用来设计并传达姿态和姿势。姿势词汇是用于以紧凑的文本形式来表示运 动联接(kinematic linkage)的瞬时“姿态状态”的系统。这里所讨论的 联接可以是生物学的(例如人手,或者整个人体;或者蝗虫腿;或者狐猴 的关节脊柱),或者替代地可以是非生物的(例如机器人手臂)。在任何情 况下,所述联接可以是单个的(脊柱)或者是分支的(手)。SOE的姿势 词汇系统针对任何特定的联接建立固定长度的字符串;因此,占据字符串 “字符位置”的特定ASCII字符的聚集是所述联接的瞬时状态或“姿势” 的唯一描述。

手姿态

图8示出了根据本实施例的SOE的姿势词汇实施例中的手姿态。SOE 假设一只手的五个手指中的每个都被使用。这些手指的代码为p-小手指、 r-无名指、m-中指、i-食指以及t-拇指。图8定义并示出了针对手指和拇 指的多个姿态。姿势词汇字符串针对联接(本例中为手指)中的每个可表 达的自由度建立单个字符位置。此外,每个这样的自由度被理解为离散化 的(或“量化的”),从而可通过在该字符串位置分配有限数目的标准ASCII 字符中的一个来表示其全范围的运动。这些自由度是相对于特定于体部的 原点及坐标系统(手背、蝗虫体部的中心;机器人手臂的基部等)来表达 的。因此,使用少量的附加姿势词汇字符位置,在更全局的坐标系统中来 表达作为整体的所述联接的位置和取向。

仍然参考图8,使用ASCII字符来定义和标识了多个姿态。某些姿态 被分成拇指的和非拇指的。本实施例中的SOE用编码,使得ASCII字符 本身就是姿态的暗示。不过,任何字符都可用于表示姿态,无论是暗示性 的与否。另外,本实施例并不要求使用ASCII字符用于符号字符串。任 何合适的符号、数字或其他表示都可使用,而不脱离本发明的范围和精神。 例如,如果需要,所述符号可以针对每个手势使用两个比特,或者根据需 要来使用其他数目的比特。

弯曲的手指由字符“^”来表示,而弯曲的拇指由“>”表示。向上 指的伸直的手指或拇指由“1”指示,而某个角度的手指或拇指由“\”或 “/”表示。“-”表示直指向侧面的拇指,而“x”表示指向平面内的拇指。

使用这些单独的手指和拇指描述。可以使用本发明的方案来定义和书 写稳健数目的手姿态。每个姿态由五个字符利用上述的p-r-m-i-t顺序来 表示。图8图示了多个姿态,且以图示和示例的方式在此描述其中的一些。 保持平并平行于地面的手表示为“11111”。拳表示为“^^^^>”。“OK” 标志表示为“111^>”。

当使用暗示性字符时,字符串提供了直接的“人可读性”的机会。通 常着眼于快速识别和明显相似性来选择描述每个自由度的可能的字符集。 例如,数杠(‘|’)可能意味着联接元素为“直的”,(‘L’)可能意味着 90度的弯曲,而弯曲形(‘^’)可指示急剧的弯曲。如上所述,可以根据 需要来使用任何字符或编码。

采用如上所述的姿势词汇字符串的任何系统在此享受高计算效率的 字符串比较的好处——识别或搜索任何指定的姿态完全变成在期望的姿 态字符串和即时的真实字符串之间进行的“字符串比较”(例如,UNIX 的‘strcmp()’功能)。此外,“通配符”的使用为编程人员或系统设计者 提供了额外的熟悉效率和功效:瞬时状态与匹配无关的自由度可以被指定 为问号(‘?’);可以分配另外的通配符含义。

取向

除手指和拇指的姿态以外,手的取向也可以表示信息。描述全局空间 取向的字符也可以显然地选择出来;当在取向字符位置中遇到字符‘<’、 ‘>’、‘^’以及‘<’时,其可以用于指示左、右、上和下的意思。图9 图示了手取向描述符以及组合了姿态和取向的编码示例。在一个实施例 中,两个字符位置首先指定手掌的方向,其次是手指的方向(如果假设手 指是直的,则不考虑手指的实际弯曲)。针对这两个位置的可能的字符表 示了取向的‘体部为中心’概念:‘-’、‘+’、‘x’、‘*’、‘^’以及‘v’ 描述了向中间、侧向、前向(向前,从体部离开)、后向(向后,从主体 离开)、头部的(向上)以及尾部的(向下)。

在一个实施例的符号方案中,指示字符的五个手指姿态后面跟着冒 号,然后是两个取向字符,以定义完整的命令姿态。在一个实施例中,起 始位置被称为“xyz”姿态,其中当用右手来作该姿态时,拇指向上直指, 食指向前指,而中指垂直于食指指向左。这由字符串“^^x1-:-x”表示。

‘XYZ手’是利用人手的几何形状以允许视觉呈现的三维结构的全部 六自由度(six-degree-of-freedom)导航的技术。尽管该技术仅仅依赖于 操作员手的主体平移和旋转——使得其手指可以大体上保持住所需要的 任何姿态——但是,本实施例优选静态结构,其中食指指向离开体部的方 向;拇指指向天花板;而中指指向左右。由此,这三个手指描述了(粗略 地,但是具有清楚地明显的目的)三维空间坐标系统的三个相互正交的轴 线:因此称为‘XYZ手’。

然后,利用保持在操作员体部前在预定‘中立位置(neutral position)’ 处的手(如上所述的某种姿态的手指)来进行XYZ手导航。对三维空间 物体(或相机)的三个平移自由度和三个旋转自由度的获取以下面的自然 方式来实现:手的左右移动(相对于体部的自然坐标系统)导致沿着计算 上下文的x-轴移动;手的上下移动导致沿着受控上下文的Y-轴移动;而 手的前后移动(朝向/离开操作员的体部)导致在上下文内的Z-轴运动。 类似地,操作员的手绕着食指的旋转导致计算上下文取向的‘滚动’变化; 通过操作员的手分别绕着中指和拇指的旋转,类似地实现‘倾斜(pitch)’ 和‘摇摆(yaw)’变化。

注意,尽管‘计算上下文’在此用来指通过XYZ手方法控制的实体 ——并且看起来暗示合成的三维空间物体或相机——应理解,该技术同样 可用于控制真实世界物体的各自由度:例如,配备有适当的旋转致动器的 视频或运动画面相机的摇动/倾斜/滚动(pan/tilt/roll)控制。另外,甚至 在虚拟阈中,由XYZ手姿态提供的物理自由度可能稍微较不确切地被映 射:在本实施例中,XYZ手还用于提供对大全景显示图像的导航接入, 从而操作员手的左右和上下运动导致关于图像的预期的左右或上下‘摇 动’,而操作员手的前后运动映射到‘缩放(zooming)’控制。

在每种情况下,手的运动和所导致的计算平移/旋转之间的耦接可以 是直接的(即,通过某些线性或非线性函数,操作员手的位置或旋转偏移 一对一地映射到计算上下文中的物体或相机的位置或旋转偏移),或者是 间接的(即,通过某些线性或非线性函数,操作员手的位置偏移或旋转偏 移一对一地映射到计算上下文中的位置/取向的一阶或更高阶导数;然后, 正在进行的积分实现计算上下文的实际零阶位置/取向的非静态变化)。后 面的这种控制手段类似于使用汽车的‘油门踏板’,其中踏板的恒定偏移 或多或少地导致恒定的汽车速度。

用作真实世界XYZ手的局域六自由度坐标原点的‘中立位置’可以 被建立作为:(1)空间中的绝对位置和取向(比方说,相对于封闭室); (2)相对于操作员自身的固定位置和取向(例如,在体部前面八英寸、 下颚以下十英寸以及侧向与肩平面对齐),与操作员的总体位置和‘朝向’ 无关;或者(3)交互式地,通过操作员的有意的副动作(例如,使用由 操作员的‘另一只’手发出的姿势命令,所述命令指示XYZ手的当前位 置和取向此后应被用作平移和旋转的原点)。

另外,方便的是提供关于XYZ手的中立位置的‘停止(detent)’区 域(或‘死域’),使得在该体积内的移动不映射到受控上下文中的移动。

其他姿态可包括:

[|||||:vx]为手掌朝下且手指向前的平的手(拇指平行于手指)。

[|||||:x^]为手掌朝前且手指朝向天花板的平的手。

[|||||:-x]为手掌朝向体部中心(如果是左手则朝右,如果是右手则朝左) 且手指朝前的平的手。

[^^^^-:-x]为单手拇指向上(拇指指向天花板)。

[^^^|-:-x]为模仿指向前方的枪。

两手组合

实施例的SOE预期单手命令和姿态以及两只手的命令和姿态。图10 图示了SOE的实施例中的两手组合和相关联符号。回顾第一示例中的符 号,“完全停止(full stop)”表明其包括两个闭合的拳。“快照”示例中, 每只手的拇指和食指伸展,拇指彼此互指,定义球门柱形的框。“舵和节 流阀开始位置”为手指和拇指指向上、手掌朝向屏幕。

取向混合

图11图示了SOE的实施例中的取向混合的一个示例。在所示出的示 例中,所述混合通过将取向符号对放入在手指姿态字符串之后的括号中来 表示。例如,第一命令显示了全部直指的手指位置。第一对取向命令将导 致手掌平朝向显示器,而第二对使手旋转到向着屏幕45度的斜度。尽管 在该示例中示出了混合对,但SOE中预期任何数量的混合。

示例命令

图13/1和13/2图示了可以与SOE一起使用的多个可能的命令。尽管 这里的某些讨论是关于对显示器上光标的控制,但是SOE不限于该行为。 实际上,SOE可广泛应用于操纵屏幕上的任何和全部的数据及部分数据 以及显示的状态。例如,在视频媒体的回放期间,可用所述命令来取代视 频控制。所述命令可以用于暂停、快进、回退等。另外,可以实施命令来 放大或缩小图像、改变图像的取向、在任何方向上摇动等。SOE还可用 于代替菜单命令,如打开、关闭、保持等。换句话说,能够想象到的任何 命令或行为都可以利用手姿势来实现。

操作

图12是图示了一个实施例中的SOE的操作的流程图。在701中,检 测系统检测标记和标签。在702中,确定是否检测到标签和标记。如果没 有,则系统返回到701。如果在702中检测到标签和标记,则系统前进到 步骤703。在703中,系统从所检测的标签和标记中识别手、手指和姿态。 在704中,系统识别姿态的取向。在705中,系统识别所检测到的一只或 多只手的三维空间位置。(请注意,703、704和705中的任何或全部都可 以被组合)。

在706中,信息被翻译成上述的姿势符号。在707中,确定姿态是否 有效。这可以通过使用所产生的符号字符串进行简单的字符串比较来完 成。如果姿态是无效的,则系统返回701。如果姿态是有效的,则在708 中,系统发送该符号和位置信息给计算机。在709中,该计算机确定响应 于所述姿势将采取的适当的动作,并在710中相应地更新显示。

在SOE的一个实施例中,701-705通过相机上的处理器来完成。在其 他实施例中,如果需要,所述处理可以通过系统计算机来完成。

解析和翻译

系统能够“解析”和“翻译”由底层系统恢复的低级姿势流,并将这 些被解析和翻译的姿势转换成事件数据或命令流,所述事件数据或命令流 可用来控制宽范围的计算机应用程序和系统。这些技术和算法可以在包括 计算机代码的系统内实施,所述计算机代码提供实施这些技术的引擎以及 用于构建利用该引擎性能的计算机应用程序的平台二者。

一个实施例关注于使人手的丰富的姿势能够在计算机界面中使用,还 能够识别由其他体部部位(包括但不限于臂、躯干、腿和头)做出的姿势 以及各种非手的物理工具做出的姿势,所述物理工具为静态的和链接的, 包括但不限于卡钳、圆规、灵活的曲线近似器以及各种形状的指向设备。 标记和标签可应用于可以由操作员根据需要携带和使用的物品和工具。

在此描述的系统结合了多个创新,所述多个创新使得可以建立具有可 以被识别和按照其来动作的丰富的姿势的姿势系统,而同时易于集成到应 用程序中。

一个实施例中的姿势解析和翻译系统包括:

1)以几个不同等级的聚集指定(用于在计算机程序中使用的编码) 姿势的紧凑和有效的方式:

a.单手的“姿态”(手的各部分相对于彼此的配置和取向),在三维空 间中的单手的取向和位置。

b.两手组合,针对任一只手,考虑姿态、位置或两者都考虑。

c.多人组合;系统可跟踪多于两只手,因此多于一个人可以可协作地 (或在游戏应用程序情况下,竞争地)控制目标系统。

d.连续姿势,其中姿态被组合成一个系列;我们称之为“动画”姿势。

e.“字形”姿势,其中操作员跟踪空间中的形状。

2)用于对来自与给定的应用程序上下文有关的以上每一类别的特定 姿势进行注册的编程技术。

3)用于解析姿势流使得已注册的姿势可被识别以及封装这些姿势的 事件可被传递到相关的应用程序上下文的算法。

具有构成元素(1a)至(1f)的规范系统(1)提供了使用在此描述 的系统的姿势解析以及翻译能力的基础。

单手“姿态”被表示为以下的字符串:

i)手指和手背之间的相对取向,

ii)量化到小数目的离散状态。

使用相对联合取向使得在此描述的系统可以避免与不同的手尺寸和 几何形状相关联的问题。使用该系统不需要“操作员校准”。另外,将姿 态指定为字符串或者相对取向的集合使得通过将姿态表示与另外的过滤 器及规范相组合而易于创建更为复杂的姿势规范。

使用针对姿态规范的小数目的离散状态使得能够紧凑地指定姿态,并 能够利用多种底层跟踪技术(例如,使用相机的无源光学跟踪、使用点亮 的点和相机的有源光学跟踪、电磁场跟踪等)来确保准确的姿态识别。

在每一类别(1a)至(1f)中的姿势可以被部分(或最小地)指定, 从而忽略非关键数据。例如,其中两根手指的位置确定而其他手指位置不 重要的姿势可以通过单个规范来表示,该单个规范中,给出了两个相关手 指的操作位置,且在同一字符串内,针对其他手指,列出了“通配符”或 通用的“忽略这些”的指示。

将在此描述的用于姿势识别的所有创新推广到超越手姿势规范到使 用其他身体部位以及“制造的”工具和对象的姿势规范,上述创新包括但 不限于多层次规范技术、使用相对取向、数据量化以及允许在每一级别的 部分规范或最小规范。

用于“注册姿势”的编程技术(2)包括限定的应用程序编程接口调 用的集,其允许编程人员来定义引擎应使哪些姿势可用于运行系统的其他 部分。

这些API例程可以在应用程序建立的时间来使用,从而创建运行应 用程序的整个存在期间使用的静态接口定义。这些API程序还可以在运 行过程中使用,从而允许接口特性在不工作时(on the fly)改变。这种接 口的实时改变使得下述行为成为可能:

i)建立复杂的上下文和条件控制状态,

ii)动态地添加滞后现象(hysterisis)到控制环境,并且

iii)创建应用程序,其中用户能够改变或扩展运行系统自身的接口词 汇。

用于解析姿势流的算法(3)将在(1)中被指定并在(2)中被注册 的姿势与进入的低级别姿势数据进行比较。当针对注册的姿势的匹配被识 别时,表示已匹配姿势的事件数据沿堆栈向上到达运行着的应用程序。

在设计该系统时期望有效的实时匹配,且指定的姿势被当作尽可能 快地被处理的概率树对待。

另外,操作员内部使用的用以识别指定姿势的原语比较也可以被应 用程序的编程人员使用,使得即使从应用程序上下文内也可以进行进一步 比较(例如,在复杂或复合姿势中的灵活的状态检查)。

识别“加锁(locking)”语义是在此描述的系统的创新。这些语义 通过注册API(2)(以及,在更小程度上,嵌入到规范词汇(1)内)来 暗示。注册API调用包括:

i)“进入(entry)”状态通知者以及“继续(continuation)”状态通 知者,以及

ii)姿势优先级指定者。

如果姿势已被识别,则针对相同或较低优先级的姿势,其“继续” 条件优先于所有的“进入条件”。进入状态和继续状态之间的这种区别大 大增加了所感知的系统的可用性。

在此描述的系统包括面对真实世界的数据错误和不确定性的健壮 操作的算法。来自低级跟踪系统的数据可能是不完整的(由于多种原因, 包括在光学跟踪、网络丢弃或处理延时中的标记的闭塞等)。

丢失的数据通过解析系统来标记,且被插值(interpolate)成“最 后已知”或“最有可能”的状态,这取决于所丢失数据的量和上下文。

如果关于特定姿势组成的数据(例如,特定关节的取向)丢失,但 是该特定组成的“最后已知”的状态可被分析为在物理上可能,则系统在 其实时匹配中使用该最后已知的状态。

相反地,如果该最后已知状态被分析为在物理上不可能,则该系统 回退到针对所述组成的“最佳猜测范围(best guess range)”,并在其实时 匹配中使用该合成数据。

在此描述的规范和解析系统已被仔细地设计以支持“偏手性不可知 论”,使得对于多手的姿势,任一只手被允许满足姿态需求。

导航数据空间

实施例的SOE能够实现“后推”,操作员人手的线性空间运动或者类 似维度的活动的执行,以通过图形的或者其他数据表示的空间来控制线性 的接近(verging)运动或运载(trucking)运动。SOE以及由SOE建立 的计算的和认知的关联提供了基础的结构化的方式来导航多级比例,从而 遍历主要的线性“深度维度”,或者——最通常地——访问量化的或者“停 止”的参数空间。SOE还提供了操作员可以凭意愿获取附加的上下文的 有效方法:一种用于理解(无论是空间的、概念的还是计算的)附近或邻 域的快速技术。

在某些实施例中,后推技术可以使用传统的输入设备(例如鼠标、跟 踪球、集成的滑块或钮)或者可以依赖于操作员本人以外的加了标签的或 者被跟踪的对象(例如仪器化的运动联接、静磁跟踪的“输入砖”)。在其 他可替换的实施例中,后推实施方式可以胜任作为整个控制系统。

实施例的SOE是更大的空间交互系统的组成并且集成在该更大的空 间交互系统中,该SOE代替通常的基于鼠标的图形用户接口(‘WIMP’ UI)方法用于控制计算机,代替地,SOE包括:(a)可以跟踪一种或更 多种对象(例如人手、人手上的对象、无生命的对象等)的物理传感器; (b)用于将被感测的手的演变位置、取向和姿态分析成为姿势事件序列 的分析部件;(c)用于表示这种空间和姿势事件的描述方案;(d)用于将 这种事件分配到控制程序和在控制程序中分配这种事件的框架;(e)用于 将由姿势事件流所编码的人为目的(指令)与事件流自身和应用程序专用 的事件解译结果二者的图形、听觉和其它显示模式的描述同步的方法,以 下对所有这些进行详细介绍。在这种实施例中,后推系统集成有附加的空 间和姿势输入和接口(input-and-interface)技术。

通常,数据空间的导航包括根据经由检测器接收的姿势数据来检测身 体的姿势。姿势数据是身体在时间和物理空间的点处的瞬时状态的绝对三 维空间位置数据。检测包括使用姿势数据识别姿势。导航包括将姿势翻译 成姿势信号以及响应于该姿势信号通过数据空间进行导航。数据空间是包 括在物理空间中表示的数据集的数据表示空间。

在实施例的总的往返等待时间(手运动,到传感器,到姿态分析,到 后推解译系统,到计算机图形描绘,到显示设备,再回到操作员的视觉系 统)保持低的情况下(例如实施例展示了大约为十五毫秒的等待时间)以 及在系统的其他参数被合适地调谐的情况下,后推交互的知觉结果是明显 的物理因果意义:SOE将推压弹性载荷结构的物理共振隐喻文字化。感 知到的因果是高度有效的反馈;这种反馈连同由后推系统提供的其他更多 的抽象图形反馈模态以及连同对操作员移动的解译中的一些自由度的有 意抑制一起又允许将既粗略又精细的人运动神经(motor)活动稳定、可 靠和可重复地用作为控制机制。

在评估SOE的上下文时,许多数据集固有地是空间的:它们表示了 实际物理空间内的现象、事件、测量、观察或结构。对于更抽象的、或者 对文字而非空间的信息编码的其他数据集,通常期望准备(视觉的、听觉 的、或者涉及其他显示模态的)表示,该表示的某基础方面由单个的标量 取值的参数来控制;然后将该参数与空间尺寸相关联也常常受益。正是对 这种单个标量参数的操纵(以下将详细描述)受益于借助后推机制的操纵。

表示会进一步给它们的参数中的少数几个离散值——的确有时仅一 个离散值——以特权,其中,数据集在这些离散值处被认为是最优的。在 这种情况下,有用的是谈及“停止的(detented)参数”或者如果参数被 外显地映射到表示空间的一个维度上则谈及“停止的空间”。在此,术语 “停止的”的使用意在引起不仅参数的优选量化还有对棘齿、磁校准机构、 慢进往复轮(jog-shuttle wheel)以及具有有意的机械棘爪的大量的其他 世俗设备的的视觉触觉感觉。

这样的参数的不言而喻的但是至关重要的示例包括但不限于:(1)合 成相机的距离,在计算机图形环境中,来自数据集的可描绘的表示;(2) 数据从原始数据集被采样并被转换为可描绘的形式的密度;(3)采样从时 变的数据集中被检索出来并被转换成可描绘的表示的时间指标。这些是通 用的方法,还存在有无数的域专用参数化。

SOE的后推通常将数据集的参数控制轴线与物理空间中的局域相关 的“深度维度”对准,并且允许沿着深度维度的结构化的真实世界运动以 实现沿着控制轴线的数据空间平移。结果是用于对数据空间导航的非常高 效的装置。以下是实施在SOE中的后推的代表性实施例的详细描述。

在后推示例中,操作员站在大墙显示器之前一段舒适的距离处,在大 墙显示器上呈现出包括文字和影像的单个“数据框架”,这些图形数据元 素可以是静态的或动态的。数据框架例如可以包括图像,但不限于此。数 据框架虽然自身是二维构造的,但仍处于三维计算机图形描绘环境中,其 基础的坐标系统被设置成了与真实世界的坐标相配,以便于描述室及其内 容,包括显示器和操作员。

操作员的手由传感器跟踪,该传感器以高精度和高时间速率分辨操作 员的手指的、或者有可能是操作员的整个手主体的位置和取向;系统分析 所得到的空间数据,以将每个手的“姿态”特征化——即手指相对于彼此 以及相对于手主体的几何布置。虽然该示例实施例跟踪是人手的对象,但 是在可替换的实施例中无数其他的对象可以作为输入设备被跟踪。一个示 例是单侧后推场景,其中,主体是处于暴露位置(open position)的操作 员的手,手掌面向前方(沿着z轴)(例如朝向操作员前面的显示屏)。为 了本描述的目的,将墙显示器视为占据了x和y维度;而z描述了操作员 和显示器之间的维度。与该后推实施例相关联的姿势交互空间包括抵接在 常数z的平面处的两个空间;离显示器较远(或者距操作员更近)的停止 的间隔空间被称为“死域”,而更近的半个空间是“活阈”。死域向后向(朝 着操作员并且远离显示器)无限延伸而仅向前延伸有限的距离,在死域阈 值处截止。活阈从死域阈值处朝向显示器延伸。描绘在显示器上的数据框 架通过主体在活阈中的移动被交互地控制或“后推”。

数据框架以与显示器的尺寸和纵横比精确匹配的尺寸和纵横比被构 造,并且被定位和取向以使得该数据框架的中心和法向量与显示器的这些 物理属性相配,虽然实施例并不限于如此。用来描绘该场景的虚拟相机被 定位成从显示器向正前并粗略地在操作员的距离。在这种上下文中,所描 绘的框架由此精确地填满显示器。

逻辑地设置在可见框架的左边和右边的是一些另外的共面数据框架, 这些数据框架均匀地间隔并且具有将每个数据框架与其紧邻的邻居分隔 的适度的间隙。因为这些数据框架位于计算机图形描绘几何形状的物理/ 虚拟描绘边界的外侧,这些侧向放置的相邻数据框架不是初始可见的。如 可以看到的,给定其几何结构的数据空间拥有沿着z方向的单个自然停止 和多个x-停止。

操作员举起她的左手至她的肩部,其中,她的左手保持成松散拳姿势。 操作员然后伸出手指以使得它们向上指而伸出拇指以使得该拇指向右指; 操作员的手掌朝向屏幕(在以下详细描述的姿势描述中,这种姿势转化可 以被表示为[^^^^>:x^成为||||-:x^])。当检测到新姿态时,系统触发后推 交互并立即记录下首先进入的姿态的绝对三维空间手位置:该位置被用作 为“原点”,随后的手运动将被报告成距该原点的相对偏移。

紧接着,两个同心的、部分透明的图示符叠加在框架的中心(由此在 显示器的中心)。例如,图示符可以指示在死域中的体部后推姿势直到死 域阈值点。第二图示符小于第一图示符是对操作员的手处于死域中的指 示,后推操作“尚未”通过其被启用。随着操作员将其手向前(朝向死域 阈值和显示器)移动,第二图示符增长地变大。在操作员的手在死域阈值 处的点处,第二图示符具有与第一图示符相等的尺寸。该示例的图示符描 述了图示符的同心元素随着操作员的手从其起始位置朝向分离死域和活 阈的死域阈值向前行进而进行的演变。图示符的内部“多齿(toothy)” 的部分例如随着手接近阈值而变大并且被设置成使得随着手达到阈值位 置来精确地匹配内图示符和(静态的)外图示符的半径。

随着操作员移动其手远离死域阈值并且远离显示器,第二图示符在尺 寸上缩小在第一图示符中,然而总是保持与第一图示符同心并且以显示器 为中心。关键地,只有操作员手运动的z分量被映射成为图示符的等比例 缩放,而手运动的附带的x分量和y分量不做贡献。

当操作员的手经过死域的向前阈值,跨入到活阈时,后推机制被启用。 手的(从阈值测量的)相对z位置遵循比例缩放函数,而所得到的值被用 于实现数据框架的侧向邻居和数据框架的z轴位移,使得框架的描绘图像 被看到是从显示器后退;相邻的数据帧然后也变成可视的,从显示空间的 边沿“填满”——合成相机的恒定角度对向(subtent)几何地“捕捉” 随着框架所位于的平面远离相机移动时该平面的更多。z位移被连续地更 新,以使得操作员在将其手推向显示器以及将手拉回向自己时直接响应操 作员的移动来感知框架后退和接近的侧向集合。

作为从对应的后推得到的数据帧的第一相对z轴位移的示例,数据框 架的描绘图像被看到从显示器后退而相邻数据框架变成可视的,从显示空 间的边沿“填满”。包括一些附加的共面数据框架的相邻数据框架被按照 逻辑设置在可视的框架的左边和右边、均匀地间隔开并且具有将每个框架 与其紧邻的邻居分隔的适度的间隙。作为从对应的后推得到的数据帧的第 二相对z轴位移的示例,并且考虑第一相对z轴位移,并且假设有从得到 第一相对z轴位移的推起操作员的手的另外的推(沿着z轴朝向显示器并 且远离操作员的推),框架的描绘图像被看到从显示器进一步后退以使得 附加的相邻数据框架变成可视的,进一步从显示空间的边沿“填满”。

此时,成对的同心图示符现在展示修改的反馈:随着操作员的手进入 到活阈,第二图示符从基于等比例缩放的反应切换到旋转反应,在该旋转 反应中,手的距阈值的物理z轴偏移被映射成正(平面内)角度偏移。在 指示死域中超过死域阈值点的体部后推姿势(沿着z轴朝向显示器并且远 离操作员)的图示符的示例中,图示符描绘了当操作员的手跨过了死域阈 值时——即当后推机制被活性地启用时的图示符的演变。由此,用第二图 示符的顺时针及逆时针旋转可视地指示操作员的手朝向和远离显示器的 移动(如之前那样,第一图示符提供静态参照状态),使得图示符的“多 齿”元素根据手的距阈值的偏移的线性函数旋转,从而将线性运动转化为 旋转表示。

因此,在该示例中,沿着z轴朝向显示器的手移动的附加的第一增加 通过第二图示符的增加的顺时针旋转被视觉指示(如之前那样,第一图示 符提供静态参照状态),使得图示符的“多齿”元素旋转了与手距阈值的 偏移的线性函数对应的第一个量。沿着z轴朝向显示器的手移动的附加的 第二增加通过第二图示符的增加的顺时针旋转被视觉指示(如之前那样, 第一图示符提供静态参照状态),使得图示符的“多齿”元素旋转了与手 距阈值的偏移的线性函数对应的第二个量。此外,沿着z轴朝向显示器的 手移动的附加的第三增加通过第二图示符的增加的顺时针旋转被视觉指 示(如之前那样,第一图示符提供静态参照状态),使得图示符的“多齿” 元素旋转了与手距阈值的偏移的线性函数对应的第三个量。

在该样本应用程序中,当操作员的手处于活阈时启用第二维度灵敏 度:手的侧向(x-轴)运动再次通过可能的比例缩放函数被映射成水平帧 序列的x-位移。如果比例缩放函数是正的,则效果是操作员的手的位置“跟 随”中的一个,而操作员感知到她正在左右滑动框架。作为由体部的侧向 运动而得到的数据框架的侧向x-轴位移的示例,数据框架从左滑向右,使 得特定的数据框架经由显示空间的左边沿从图中消失或部分地消失而附 加的数据帧从显示空间的右边沿填满。

最后,当操作员使得她的手退出手掌向前的姿态(通过例如将手闭合 成拳),后推交互被终止而框架的集合快速地返回到其原始的z停止(即 与显示器共面)。同时,框架集合被侧向地调整以实现单个框架与显示器 的x相配;该框架结束,由此“以显示器为中心”是在后推终止的瞬间与 同心图示符的中心最接近的那一个框架:最近的x停止。这里看到,图示 符结构用作为第二功能,作为选择采集线,但是实施例并不限于此。框架 集合的z位置和x位置通常允许在短时间间隔上发展到它们最终的显示相 配值,从而提供了“弹性载荷的返回”的视觉感觉。

如本示例中所采用的后推系统提供了高效的控制模态用于:(1)通过 沿着直接的视觉视线——深度维度——可变地设置聚集数据集来获取认 知上有价值的“邻域上下文”,由此使得看到更多的数据集(换取减小数 据集的任意给定部分的角度对向);(2)在“滚动”的相似意义上,通过 沿着侧向排列的数据集的自然水平维度来可变地放置该侧向排列的数据 集,从而获取邻域上下文,保持了数据的任何给定段的角度对向,但是以 旧数据的可视性交换了新数据的可视性;(3)通过快速的以及在维度上受 约束的导航来选择数据集的离散元素。

在实施例的后推的另一个示例中,操作员站成紧邻着腰部水平的显示 设备,该显示设备的有效表面位于与地板平行的水平面中。此处,坐标系 统以与之前的示例相配的方式被建立:显示器表面位于xz平面中,以使 得表示表面的法线的y轴对准成与物理重力矢量反向。

在体部被水平地保持在桌状显示器表面之上的示例物理场景中,体部 是操作员的手,但是实施例并不限制于此。后推交互是双面的,从而有上 死域阈值和下死域阈值。此外,由后推操纵器访问的线性空间在上活域中 设置有离散的空间停止(例如,“第一停止”、“第二停止”、“第三停止”、 “第四停止”),而在下活域中设置有离散的空间停止(例如,“第一停止”、 “第二停止”、“第三停止”、“第四停止”)。实施例的交互空间被配置成使 得包括上死域和下死域的相对小的死域以启用后推的竖直(y轴)位置为 中心,其中,活域在死域以上并且活域在死域以下。

操作员工作于被分析成是数据框架的离散平行平面的堆叠的示例数 据集。该数据集可以以上述方式布置,这是由于数据集所表示是物理现实 的自然结果(例如来自x线断层扫描的离散切片、三维集成电路的多个层 等),或者是因为分离和离散化数据是按逻辑的并且是资料丰富的(例如 在一些光谱带中所获得的卫星影像、按地理组织的人口普查资料(其中每 十年的数据分别存储在分离的层中)等)。数据的视觉表现还可以是静态 的或者还可以包括动态元素。

在后推功能没有被启用的间隔期间,单个层被认为是“当前的”并且 由显示器视觉显著地呈现出来,并且被感知为与显示器是物理相配的。在 该示例中,在当前层以上和以下的层不是视觉明显的(虽然将紧凑的插图 用来指示这些层的存在)。

操作员将其闭合的右手伸到显示器的上方;当她打开手——手指向前 伸、拇指向左伸而手掌指向下(变换:[^^^^>:vx]成为[||||-:vx])时——后 推系统被启用。在短暂的间隔期间(例如200毫秒),与当前层相邻的一 些数目的层以级差可见性渐强;其上下组合有模糊过滤器和透明度,它们 的“程度(severity)”取决于层的距当前层的顺序距离。

例如,与当前层(例如数据框架)相邻的层(例如数据框架)随着后 推提供被启用而以级差可见性渐强。在该示例中,堆叠包括可以使用后推 系统遍历的许多(与数据框架的数据集合适的任何数目的)数据框架。

同时,出现了与之前示例相类似的同心反馈图示符;在这种情况下, 交互被配置使得小死域以启用后推的竖直(y轴)位置为中心,其中,活 域既在死域以上又在死域以下。这种设置提供了对“重新获得”原始层的 辅助。图示符在这种情况下伴随有指示出与连续层定向接近的附加的单个 图示符。

当操作员的手仍然待在死域中时,层堆叠不发生位移。图示符展示了 与在前述示例中的行为相同的“预备”行为,其中,内图示符随着手接近 区域的任何一个边界而变大(当然,此处行为是双面的并且对称的:内图 示符在手的起始y位置处是尺寸最小的,并且不论手是向上还是向下移动 内图示符都朝着与外图示符相配地变大)。

当操作员的手向上移动通过死区的上平面时,内图示符和外图示符接 合,并且如之前那样,手沿着该方向的另外的移动引起了内图示符的逆时 针旋转运动。同时,层堆叠开始“向上传递”:在原始的当前层之上的这 些层呈现出更大的透明度和模糊度;原始的当前层自身变得更加透明和更 加模糊;而在原始的当前层之下的层朝向更加具有可见性和较不模糊发 展。

在堆叠的向上传递的另一个示例中,先前的当前层呈现出更大的透明 度(在该示例中,变得不可见),而与先前的当前层相邻的层变得如先前 的当前层一样的可见。此外,与先前的当前层相邻的层随着堆叠向上传递 而以级差可见性渐强。如上所述的,堆叠包括可以使用后推系统遍历的许 多(与数据框架的数据集合适的任何数目的)数据框架。

用在真实世界距离(即当以室坐标测量时操作员的手距其初始位置的 位移)和连续层之间的“逻辑”距离之间的映射来配置层堆叠。层堆叠的 传递当然是该映射的结果,就好像接近图形的瞬时显现,其同时还(首先) 指示了显示器平面和当前层之间的增长的距离;其还指示出显示器平面目 前在当前层以下。

手的运动继续进行而堆叠层最终通过了当前层和下面的下一个层刚 好横跨显示器平面(即距显示器平面是等距)的位置;刚一通过该点,接 近的图像就被改变以指示出显示器平面现在高于当前层:“当前层状态” 现在已经被分配给了下一个更低的层。总体上,当前层总是最接近物理显 示器平面的层并且是当操作员解除后推系统时会被“选中”的层。

随着操作员继续举起她的手,每个接连的层被带向显示器平面,变得 渐强地更加清晰可见,获得与显示器平面的瞬间相配,而然后返回成透明 和模糊的以利于下一个更低的层。当操作员遍历了她的手的运动方向后, 操作员将手降低,过程被逆转,而内图示符顺时针旋转。随着手最终通过 死域,堆叠暂停,而原始的当前层处于与显示器平面精确地y对准;然后 堆叠的y行进重新开始,使得在原始的当前层之上的那些平面被接连地聚 焦。操作员总体感知强烈并简单的是:操作员正在用她的手将层的堆叠下 推或上拉。

当最后操作员通过闭合她的手(或者以其他方式改变手的姿态)来释 放后推时,系统将堆叠“回弹(spring)”成与显示器平面停止地y轴对 准,将在退出后推时最接近现实平面的任何层作为当前层。在该定位重对 准的短暂间隔期间,所有其他层消退回完全透明而反馈图示符平缓地消 失。

该示例的数据集(此处,层)的离散化元素沿着主后推(深度)轴被 分配;之前,元素(数据框架)是沿着与深度轴正交的维度共面的并且侧 向排列的。这种呈现布置连同透明技术的使用意味着数据总是叠加的—— 一些层通过其他层被观察。操作员在该示例中仍然还享有(1)快速获取 邻域上下文(当前层之上和之下的层的上下文是什么?)的设施;以及(2) 在数据集中的并行、堆叠的元素之间高效地选择和切换的设施。当操作员 仅意在(1)时,死域的提供允许她确信地返回到原始选择的层。贯穿操 纵,两个传递维度的抑制实现了速度和准确度(大多数人在没有侧向偏离 的情况下垂直平移手相对困难,但是如所描述的模态完全忽略了任何这样 的侧向位移)。

注意的是,为了某些目的,方便的是配置后推输入空间以使得死域具 有无穷小的延伸;然后,只要后推被启用,其激活机制也被启用。在此所 呈现的第二示例中,这会意味着:一旦后推操纵开始,没有将原始的当前 层与任何其它层不同地对待。根据经验,死域的线性范围是操作员优选的 问题。

在这个第二示例中描述的模态涉及跨越了广泛的各种显示器,包括二 维设备(无论是投影的还是发射的)和三维设备(无论是否是自动立体的、 是否是空间成像产品等)二者。在后者即3D的实施方式的情况下,媒体 的某些特性会极其有助于在后推之下的知觉机制。例如,视差、光学景深 和视觉调节现象的结合可以允许同时理解多层,由此消除了使远离显示器 平面的层剧烈地减弱和模糊的(或者甚至一起排除在外)需要。此外,应 用模态而不考虑显示器的取向:如在示例中的,其可以是基本水平的,或 者可以正如有用地那样以眼睛的高度安装在墙上。

该第二示例的场景的扩展描绘了两手操纵的有用性。在一些应用中, 必要的是将整体的层堆叠或者单独的层侧向(沿着x方向和z方向)地平 移。在实施例中,操作员的另一个手——即非后推的手——例如通过下述 模态可以实现该变换,在该模态中,使手非常接近显示器表面允许数据集 的层中的一个层“环绕地滑动”,使得该层的偏移xz位置遵循着手的位置。

操作员通常会发现同时采取侧向平移和后推操纵是方便的以及容易 驾驭的。或许不是完全虚幻的是:提出将连续域操纵分配给一只手而将离 散类型的工作分配给另一只手会起到使认知负荷最优化的作用。

有教益的是考虑根据SOE的后推的又一个示例,其中,没有对于数 据集的自然视觉方面。代表性的是监测多个音频信道以及从集合中断续地 选择一个的问题。后推系统的应用程序在被配备成用于听觉的而不是视觉 的输出的环境中实现了这样的任务;该模态与先前示例的模态极其相似。

站着的或者坐着的操作员正在听单个信道的音频。概念上,该音频存 在于几何上包括操作员的耳朵的竖直平面(称为“听觉平面”)中;音频 的另外的信道处于与听觉平面平行的、但是沿着z轴被朝前和朝后放置的 另外的平面。

打开操作员的手、将手保持在她的前方九英寸处,手掌面向前,操作 员启用了后推系统。几个接近的平面中的音频级差地渐强;每个的音量相 反地取决于其距当前信道平面的序数距离。在实践中,在知觉上无真实感 的是:允许多于两个或者四个的附加的信道变成听得见的。同时,“音频 图示符”渐强以提供接近的反馈。初始地,当操作员的手保持在死域中时, 图示符是几乎不能听到的两个音符的和弦(初始是同音地)。

随着操作员向前或者向后移动她的手通过死域,音频信道的音量仍然 固定,而图示符的音量增加。当手横跨死域的前或后阈值时,图示符达到 其“活”音量(其仍然是从属于当前信道的音量)。

一旦操作员的手移动开始穿过活域——比方说沿着向前的方向—— 就获得了音频信道的预期效果:当前信道平面被推得远离听觉平面,而当 前信道的音量(以及向前更远的这些信道的音量)被渐进地减低。另一方 面,每个“背面”的信道平面的音量随着其接近听觉平面而增加。

同时,音频图示符具有切换模式。手的向前进伴随着音调中的一个的 频率的增加;在“中途点”处,当听觉平面位于一个音频平面和下一个音 频平面正中间时,音调形成了精确的五音度(数学上应该是三全音间隔, 但是有应该避开三全音间隔的许多原因)。随着手继续更远地向前,可变 音节的频率继续增加,直到最终操作员“达到”了下一个音频平面,在该 点处音调精确地跨越了八音度。

对各种信道的审计继续,操作员将她的手向前向后平移,以依次访问 每个信道。最终,操作员仅闭合她的手来选择一个信道,结束了后推对话 并使得音频平面的集合“回弹”成对准。其他的(未被选择的)信道减弱 成不可听见的,就如图示符那样。

该示例示出了后推应用的变体,其中,再次给予了同样的设施:访问 邻域上下文以及对离散化的数据元素(此处,单独的音频流)的快速选择。 场景代替了听觉反馈机制,而特别是利用了人辨识一定的频率间隔的可靠 能力的机制,以提供该操作员关于她是否与目标信道“足够接近”以进行 选择的信息。这在语音信道的情况下是特别重要的,其中,“可听见”信 号仅是间歇性地呈现的;音频反馈图示符的连续性质使得即使当信道自身 已经无声的情况下音频反馈图示符也是出现和清晰的。

注意的是:如果在本示例中的SOE包括空间化的音频的能力,那么 对后退到向前的距离的以及从后部接近的(反之亦然)相继音频层的感知 可以大大增强。此外,以操作员前面的相继层以及操作员后面的在前层, 将选择的音频平面更确切地“定位”在操作员的位置处的机会是有效地可 利用的。

音频图示符的其他示例是可能的,并且的确各种信道内容的性质包括 它们的频谱分布趋于指示哪种图示符会是最清楚地可辨识的。通过示例, 另一个音频图示符格式保持恒定的体积但是采用了周期的单击,其中,单 击之间的间隔与听觉平面和最近的音频信道平面之间的接近度成比例。最 后,在某些情况下,并且取决于操作员的敏锐度,可以使用根本没有反馈 图示符的音频后推。

参照后推机制,随着在数据集的表示中空间停止的数目和密度向巨大 增加,空间及其参数化变得有效地连续——也就是说,不停止的。然而, 在这样的极端情况下,后推仍然是有效的,这部分地是因为先于后推的每 个调用的、数据集的“初始状态”可以作为临时的停止来对待,简单地实 现为死域。

这种不停止的后推的应用可以连同无限(或者至少基本上)可缩放图 的概念一起建立。对缩放功能的后推控制将偏移手位置与仿射的标度值相 关联,以使得随着操作员将她的手向前向后推,缩放度(分别)减少或者 增加。然而,原始的预后推的缩放状态总是容易地可访问,这是因为将位 置直接映射到缩放参数保证了将控制手返回到死域也实现了将缩放值返 回到其初始状态。

在以上示例中所描述的每个场景提供了对后推系统的显著方面以及 后推系统在SOE下的使用的描述。还应该理解的是:此处所描述的操纵 中的每个都可以以秒或者更短的时间精确地并且易理解地进行,这是由于 允许一定类型的感知反馈来指导人运动所实现的效率和精度。在另一些时 候,操作员还发现有用的是将单个连续后推“对话”保持几十秒:长间隔 的后推良好地为探索的上下文获取目的服务。

以上所描述的示例采用了物理输入(姿势)空间到表示空间的线性映 射:对真实空间中的控制手平移A单位总是产生在表示空间中的B单位 [原始]的平移,而不管进行A平移的真实空间的位置。然而,其他的映射 是可能的。具体地,由大多数操作员所享有的对精确运动神经的控制度允 许使用非线性的映射,其中,例如,与接近活阈值的姿势平移相比,远离 该阈值的级差姿势平移可以被翻译成沿着参数化的维度的更大的位移。

相配的虚拟/显示及物理空间

系统可以提供一种环境,在该环境中在一个或更多个显示设备(“屏 幕”)上描绘的虚拟空间被当作与系统的一个或更多个操作员所处的物理 空间相配来处理。在此描述这种环境的一个实施例。当前实施例包括在固 定位置处由三个投影仪驱动的屏幕,由单个台式计算机驱动,并且使用在 此描述的姿势词汇和接口系统来控制。然而,应注意,所描述的技术支持 任何数目的屏幕;这些屏幕可以是移动的(而非固定的);屏幕可以被许 多独立的计算机同时驱动;且整个系统可以由任何输入设备或技术来控 制。

本公开中描述的接口系统应具有确定屏幕在物理空间中的尺度、取向 以及位置的装置。给定这些信息,系统能够动态地将屏幕所处的(且系统 的操作员所处的)物理空间映射到在系统上运行的计算机应用程序的虚拟 空间中作为投影。作为该自动映射的一部分,系统还根据系统所掌管的应 用程序的需要,以多种方式来转换两个空间的比例、角度、深度、维度以 及其他空间特性。

在物理和虚拟空间之间的这种连续的转换使得可以一致且深入地使 用多种接口技术,所述接口技术在现有的应用程序平台上难以实现,或者 必须针对现有平台上运行的每个应用程序来逐件执行。这些技术包括(但 不限于):

1)使用“精确指向”--在姿势接口环境中使用手,或使用物理指向 工具或设备--作为普遍和自然的接口技术。

2)自动补偿屏幕的移动或重新定位屏幕。

3)根据操作员位置而变化的图形描绘,例如模仿视差变动以增强深 度感。

4)在屏上显示中包含物理物体--考虑真实世界的位置、取向、状态 等。例如,站在大且不透明的屏幕前的操作员可以看见应用图形以及屏幕 后面的比例模型的真实位置的表示(以及也许是移动的或改变的取向)。

重要的是应该注意,精确指向不同于在基于鼠标的窗口接口以及大多 数其他当代系统中使用的抽象指向。在那些系统中,操作员必须学会管理 虚拟指针和物理指向设备之间的翻译,并且必须在二者之间进行可认知地 映射。

与之对照,在本公开所描述的系统中,无论从应用程序或用户角度, 在虚拟空间和物理空间之间没有不同(除了虚拟空间更服从于数学操纵), 因此对操作员没有认知翻译的要求。

与在此描述的实施例所提供的精确指向的最类似的是触敏屏(例如, 如许多ATM机器上所发现的)。触敏屏提供屏幕上的两维显示空间和屏 幕表面的两维输入空间之间的一对一映射。以类似方式,在此描述的系统 提供显示在一个或更多个屏幕上的虚拟空间和操作员所处于的物理空间 之间的灵活映射(可能但不一定是一对一)。尽管所述类似是有用的,但 是应该理解的是,将该“影射方法”扩展到三维、任意大的结构环境以及 多个屏幕并非是微不足道的。

除了在此描述的组成之外,系统还可以实施在环境的物理空间和每个 屏幕上的显示空间之间实施连续、系统级映射(也许通过旋转、平移、比 例缩放或其他几何变换来修改)的算法。

描绘堆栈(rendering stack),其获得计算的物体以及映射并输出虚 拟空间的图形表示。

输入事件处理堆栈,其从控制系统获得事件数据(在当前的实施例中, 来自系统和鼠标输入的姿势和指向数据二者)并将来自输入事件的空间数 据映射到虚拟空间中的坐标。经翻译的事件随后被传递到正在运行的应用 程序。

“胶层(glue layer)”,其允许所述系统掌管在局域网上跨几个计算 机运行的应用程序。

空间连续体输入系统的实施例在这里被描述成包括基于网络的数据 表示、转化和互换,其包括被称为“等离子体”的系统,该系统包括子系 统“色拉”、“蛋白质”以及“池”,如以下详细描述的。池和蛋白质是在 此描述的用于对要在进程之间或者跨越进程被共享的数据进行封装的方 法和系统的组成。除了蛋白质和池之外,这些机制还包括色拉。一般而言, 色拉提供最低水平的用于进程间交换的数据定义,蛋白质提供中等水平的 用于查询和过滤的结构和钩子(hook),而池则提供高水平的组织和访问 语义。色拉包括用于有效的不依赖于平台的数据表示和访问的机制。蛋白 质提供使用色拉作为有效载荷的数据封装和传输方案。池在进程之内、在 局域进程当中、跨越远程或分布式进程之间的网络并且经由较长期(例如 盘上等)存储装置提供蛋白质的结构化的并且灵活的聚集、排序、过滤和 分配。

在此描述的实施例的配置和实施方式包括几个构造,它们一起使众多 能力成为可能。例如,在此描述的实施例提供了数据在大量进程之间的有 效交换,如上所述。在此描述的实施例还提供了灵活的数据“定型 (typing)”和结构,以便支持数据的广泛变化的种类和使用。此外,在 此描述的实施例包括全部由基本上类似的应用程序编程接口(API)驱动 的用于数据交换(例如本地存储器、盘、网络等)的灵活机制。此外,描 述的实施例使得以不同的编程语言编写的进程之间的数据交换成为可能。 另外,在此描述的实施例使得数据缓存和聚集状态的自动维护成为可能。

图14是根据实施例的包括使用色拉、蛋白质和池的数据表示的处理 环境的框图。在此呈现的实施例的主要构造包括色拉、蛋白质和池。在此 描述的色拉包括用于有效的不依赖于平台的数据表示和访问机制。在此详 细描述的蛋白质提供数据封装和传输方案,并且实施例的蛋白质的有效载 荷包括色拉。在此描述的池提供蛋白质的结构化但却灵活的聚集、排序、 过滤和分配。池在进程之内、在局域进程当中、跨越远程或分布式进程之 间的网络并且经由“较长期”(例如盘上)存储装置借助于蛋白质提供对 数据的访问。

图15是根据实施例的蛋白质的框图。蛋白质包括长度头部、记述和 摄取。如下面详细描述的那样,记述和摄取中的每一个都包括一个或更多 个色拉。

图16是根据实施例的记述的框图。如下面详细描述的那样,记述包 括偏移、长度和色拉。

图17是根据实施例的摄取的框图。如下面详细描述的那样,摄取包 括偏移、长度和色拉。

图18是根据实施例的色拉的框图。如下面详细描述的那样,色拉包 括类型头部和类型专用数据。

图19A是根据实施例的池中蛋白质的框图。蛋白质包括长度头部(“蛋 白质长度”)、记述偏移、摄取偏移、记述和摄取。记述包括偏移、长度和 色拉。摄取包括偏移、长度和色拉。

在此描述的蛋白质是用于封装数据的机制,其中,所述数据需要在进 程之间共享,或者需要跨越总线或网络或其他处理结构而移动。作为例子, 蛋白质提供了用于传输和操纵数据的改进机制,其中,所述数据包括对应 于或者关联于用户接口事件的数据;特别地,实施例的用户接口事件包括 上述姿势接口的用户接口事件。作为进一步的例子,蛋白质提供了用于传 输和操纵数据的改进机制,其中,所述数据包括但不限于图形数据或事件 以及状态信息,这只是举几个例子。蛋白质是结构化的记录格式和用于操 纵记录的方法的相关集合。如在此使用的对记录的操纵包括将数据放到结 构中、将数据从结构取出以及查询数据的格式和存在。蛋白质配置成经由 以多种计算机语言编写的代码来使用。如在此描述的那样,蛋白质还被配 置成是用于池的基本构筑块。此外,蛋白质被配置成天然地能够在处理器 之间并跨越网络移动,同时维持它们包括的数据原封不动。

与传统的数据传输机制形成对照,蛋白质是未定型的。虽然是未定型 的,但是蛋白质提供了强大且灵活的模式匹配设施,在其上实施“类型相 似”功能。如在此描述的那样配置的蛋白质还固有地为多点(尽管点对点 形式作为多点传输的子集容易实现)。另外,蛋白质定义了“通用”记录 格式,其例如在存储器内、盘上和线(网络)上格式之间并无不同(或者 仅在所执行的可选优化的类型方面不同)。

参考18和23A,实施例的蛋白质是字节的线性序列。在这些字节内 封装有记述列表和被称为摄取的关键值对的集合。记述列表包括任意精细 但却有效可过滤的每个蛋白质事件描述。摄取包括关键值对的集合,其包 括蛋白质的实际内容。

蛋白质与关键值对以及关于网络友好和多点数据交换的某些核心思 想的相关性,与给予“元组(tuple)”的概念特权的较早系统(例如Linda、 Jini)共享。蛋白质与面向元组的系统在几个主要方面不同,包括使用记 述列表以提供标准的可优化的模式匹配基底(substrate)。蛋白质还与面 向元组的系统在适合于多种存储和语言构造的记录格式的严格规范连同 对该记录格式的“接口”的几个具体实施方面不同。

转向对蛋白质的描述,蛋白质的前四个或八个字节指定了蛋白质的长 度,其在实施例中必须是16字节的倍数。这个16字节粒度确保了字节对 准和总线对准效能在当代的硬件上可实现。未被自然地“四倍长字对准” 的蛋白质被填充以任意字节,以便它的长度是16字节的倍数。

蛋白质的长度部分具有以下格式:呈大端(big-endian)格式的指定 长度的32位,其中四个最低阶位充当旗标以指示宏观水平蛋白质结构特 性;继之以32个另外的位,如果蛋白质的长度大于2^32字节的话。

实施例的16字节对准限制性条件意味着前四个字节的最低阶位作为 旗标可用。而且因此前三个低阶位旗标分别指示蛋白质的长度可以用前四 个字节表示还是需要八个,蛋白质使用大端还是小端(little-endian)字 节排序,以及蛋白质使用标准还是非标准结构,但是蛋白质不限于此。第 四个旗标位被保留以供将来使用。

如果八字节长度旗标位被设置,则蛋白质的长度通过以下计算:读取 下四个字节,并且使用它们作为大端的八字节整数的高阶字节(其中已经 读取的四个字节供应低阶部分)。如果小端旗标被设置,则蛋白质中的所 有二进制数值数据都将被解译为小端(否则为大端)。如果非标准旗标位 被设置,则蛋白质的剩余部分不符合下面将要描述的标准结构。

在此不会进一步讨论非标准蛋白质结构,除了要说的是,关于对使用 蛋白质和池的系统程序员可用的非标准蛋白质格式,存在用于描述和同步 化的各种方法,并且当空间或计算周期受到约束时,这些方法是可以使用 的。例如,实施例的最短蛋白质是十六字节。标准格式的蛋白质在这些十 六字节中不适合任何实际的有效负载数据(这些十六字节中最大的一份已 经用于描述蛋白质的组成部分的位置)。而非标准格式的蛋白质就能够可 以想象地使用其16个字节中的12个用于数据。交换蛋白质的两个应用程 序可以相互决定它们发出的任何16字节长的蛋白质总是包括例如表示来 自实时模拟数字转换器的12个8位传感器值的12个字节。

紧跟着长度头部,在蛋白质的标准结构中,出现两个更多的可变长度 整数。这些数分别制定了对记述列表中的第一个元素和第一个关键值对 (摄取)的偏移。这些偏移在此也分别被称为记述偏移和摄取偏移。这些 数的每四倍的字节顺序由蛋白质端旗标位指定。对于每个而言,前四个字 节的最高有效位确定数字是四个还是八个字节宽。如果最高有效位(msb) 被设置,则前四个字节是双字(八字节)数字的最高有效字节。这在此被 称为“偏移形式”。指向记述和对的单独偏移的使用允许记述和对通过不 同的代码路径被处理,使得例如与记述模式匹配和蛋白质装配相关的特定 优化成为可能。在蛋白质的开始处的这两个偏移的存在还允许几个有用的 优化。

大多数蛋白质不会如此大以至于需要八字节的长度或指针,所以一般 而言,长度(具有旗标)和两个偏移数字只会占据蛋白质的前三个字节。 在许多硬件或系统体系结构上,超过第一个的一定数目字节的提取或读取 是“免开销的”(例如16个字节正好与在Cell处理器的主总线上访问单 个字节占用相同数目的时钟周期)。

在许多实例中,允许蛋白质内部的实施专用或上下文专用的缓存或元 数据都是有用的。偏移的使用允许在蛋白质的开始附近创建任意尺寸的 “洞”,其中可以放置这样的元数据。可以利用八个字节的元数据的实施 在许多系统体系结构上免开销地得到那些字节,其中,每次提取蛋白质的 长度头部。

记述偏移指定了蛋白质的开始与第一个记述条目之间的字节数。每个 记述条目包括到下一个记述条目的偏移(当然是以偏移格式),然后是可 变宽度的长度字段(又是以偏移格式),然后是色拉。如果没有进一步的 记述,则偏移按规定是四个字节的零。否则,偏移指定这个记述条目的开 始与下一个记述条目之间的字节数。长度字段以字节的方式指定色拉的长 度。

在大多数蛋白质中,每个记述都是串,以色拉串的方式被格式化:四 字节长度/类型头部,其中最高有效位被设置并且只有较低的30位用于指 定长度,然后是头部的指示数目的数据字节。通常,长度头部从蛋白质取 其端。字节被假定编码UTF-8字符(并且这样一来--注意--字符数就不一 定与字节数相同)。

摄取偏移指定了蛋白质的开始与第一个摄取条目之间的字节数。每个 摄取条目包括到下一个摄取条目的偏移(以偏移格式),然后是长度字段 和色拉。摄取偏移在功能上等同于记述偏移,除了它指向下一个摄取条目 而不是下一个记述条目之外。

在大多数蛋白质中,每个摄取具有色拉对类型,其包括双值列表,一 般用作关键/值对。色拉对记录包括:四字节长度/类型头部,其中第二最 高有效位被设置并且只有较低的30位用于指定长度;到值(第二)元素 开始的四字节偏移;四字节长度的关键元素;用于关键元素的色拉记录; 四字节长度的值元素;以及最后用于值元素的色拉记录。

一般而言,对关键字是色拉串。跨越几个蛋白质、色拉对长度和偏移 字段的数据的重复提供了用于细化和优化的又一次机会。

如上所述,根据实施例使用的用于将定型的数据嵌入蛋白质内部的构 造是被称为“色拉”的标记字节序列规范和抽象。色拉是表示(可能是聚 集的)定型数据的字节的线性序列,并且与编程语言专用API相关联, 其允许色拉在存储器空间、存储介质和机器之间创建、修改和四处移动。 色拉类型方案旨在是可扩展并且尽可能重量轻的,并且成为可以从任何编 程语言使用的通用基底。

建立有效的大规模的进程间通信机制的愿望是色拉配置的驱动器。传 统的编程语言提供了在进程专用存储器布局中工作良好的复杂数据结构 和类型设施,但是当数据需要在进程之间移动或存储在盘上时,这些数据 表示总是损坏。色拉体系结构是用于进程间通信的第一基本上有效的多平 台友好的低水平数据模型。

但更重要的是,色拉被配置成连同蛋白质一起影响并其使能够进行对 未来计算硬件(微处理器、存储器控制器、盘控制器)的开发。对例如公 共可用的微处理器的指令集合的几个专用添加使得色拉可以甚至对于单 进程、存储器内数据布局变得与大多数编程语言中使用的方案一样有效。

每个色拉包括可变长度类型头部,随后是类型专用数据布局。在例如 支持C、C++和Ruby形式的全色拉功能的示例实施例中,通过可从每种 语言访问的系统头部文件中定义的通用整数来指示类型。更加复杂和灵活 的类型分辨功能也是可能的:例如经由通用对象ID和网络查找的间接定 型。

实施例的色拉配置允许色拉记录用作例如来自Ruby和C++两者的语 言友好方式的对象。C++编译器外部的一套实用程序完整性检查色拉字节 布局,创建专用于单独色拉类型的宏和外部文件,并且自动生成用于Ruby 的绑定。结果,良好配置的色拉类型即使当从单个进程之内使用时也十分 有效。进程的可访问存储器中任何地方的任何色拉都可以被寻址而无需复 制或“去串行化”步骤。

实施例的色拉功能包括用于执行以下中的一个或更多个的API设施: 创建特定类型的新色拉;创建或建立对来自盘上或存储器内字节的色拉的 语言专用引用;以类型专用方式将数据嵌入色拉之内;查询色拉的尺寸; 从色拉之内检索数据;克隆色拉;以及翻译色拉之内全部数据的端和其他 格式属性。每个色拉都执行上述行为。

图19B1和19B2示出了根据实施例的色拉头部格式。色拉的详细描 述如下。

每个色拉的内部结构都优化类型分辨、对封装数据的访问以及用于该 色拉实例的尺寸信息中的每一个。在实施例中,色拉类型的完全集合被设 计得最小程度地完全,并且包括:色拉串;色拉对(cons)(亦即对);色 拉列表;以及色拉数字对象,其自身表示成被理解为半打排列或这种基本 属性的单独数字类型的广泛集合。任何色拉的其他基本性质是其尺寸。在 实施例中,色拉具有量化成四的倍数的字节长度;这些四字节字在此被称 为“四元组(quad)”。一般而言,这样的基于四的尺寸定位使得色拉与 现代计算机硬件体系结构的配置良好对齐。

实施例中的每个色拉的前四个字节包括头部结构,其编码了类型描述 和其他元信息,并且将特定类型意义归因于具体位模式。例如,色拉头部 的第一个(最高有效)位用于指定该色拉的尺寸(以四字的长度计)是否 遵循初始四字节类型头部。当这个位被设置时,可以理解的是,色拉的尺 寸明确地记录在色拉的下四个字节中(例如字节五至八);如果色拉的尺 寸不能以四个字节来表示(亦即,如果尺寸是或大于二的三十二次幂), 那么色拉的初始四个字节的下一个最高有效位也被设置,这表明色拉具有 八字节(而不是四字节)长度。在这种情况下,检查过程会发现存储在顺 序字节五至十二中的色拉长度。另一方面,小数目的色拉类型意味着在许 多情况下完全指定的典型的位模式“留下未使用”四字节色拉头部中的许 多位;并且在这样的情况下这些位可以用于编码色拉的长度,节省否则会 需要的字节(五至八)。

例如,实施例留下色拉头部的最高有效位(“长度跟随”旗标)未设 置,并且设置下一位以指示色拉是“微对(wee cons)”,并且在这种情况 下色拉的长度(以四计)被编码在剩余的三十位中。类似地,“微串(wee  string)”用头部中的模式001来标记,其留下二十九位用于表示色拉串的 长度;并且头部中的引导0001描述“微列表(wee list)”,其根据二十八 个可用长度表示位可以是高达二的二十八次幂个四元组大小的色拉列表。 “全串(full string)”(或对或列表)具有不同的头部中的位签名,其中 最高有效头部位必定被设置,因为色拉长度分开编码在字节五至八(或十 二,在极端情况下)中。注意,等离子体实施在色拉构造之时“决定”是 使用这些构造的“微”还是“全”版本(该决定基于作为结果的尺寸是否 会“配合”可用的“微”位),但是“全”对比于“微”的细节相对于等 离子体实施的用户是隐藏的,用户只知道和关心他正在使用色拉串或色拉 对或色拉列表。

数值色拉在实施例中用引导头部模式00001指示。随后的头部位用于 表示可能以任意排列进行组合的一组正交性质。实施例使用但不限于五个 这样的字符位以指示数字是否是:(1)浮点;(2)复数;(3)无符号;(4) “宽(wide)”;(5)“粗短(stumpy)”(对(4)“宽”和(5)“粗短”进 行排列以指示八、十六、三十二和六十四位数表示)。两个另外的位(例 如(7)和(8))指示封装的数值数据是二、三或四元素矢量(其中两个 位为零表明数值是“一元素矢量”(亦即标量))。在这个实施例中,第四 个头部字节的八个位用于编码封装的数值数据的尺寸(以字节计而不是四 元组)。这个尺寸编码被偏移一,以便它可以表示包括一和二百五十六字 节之间的任何尺寸。最后,两个字符位(例如(9)和(10))用于指示数 值数据编码单独数值条目的阵列,其中的每一个具有由字符位(1)至(8) 描述的类型。在阵列的情况下,单独数值条目不是每个都用另外的头部标 记,而是包装为连续的数据,其跟随单个头部亦即可能的明确色拉尺寸信 息。

这个实施例提供了简单而有效的色拉复制(其可以实施为字节对字节 复制)和极其直接和有效的色拉比较(在这个实施例中当且仅当考虑序列 的两个色拉的组成字节中的每一个一一匹配时,这两个色拉才相同)。这 后一性质例如对于蛋白质体系结构的有效实施是重要的,蛋白质体系结构 的关键性和普遍的特征之一是搜索或“匹配”蛋白质的记述列表。

进一步,此处的实施例允许简单且有效地构造聚集色拉形式(例如色 拉对和色拉列表)。例如,实施例通过以下从两组成色拉(其可以具有任 何类型,包括它们自己聚集)建立色拉对:(a)查询每个组成色拉的尺寸; (b)分配尺寸等于两个组成色拉的尺寸和头部加上尺寸结构所需的一个、 两个或三个四元组之和的存储器;(c)在前四个、八个或十二个字节中记 录色拉头部(加上尺寸信息);以及然后(d)依次将组成色拉的字节复制 到紧接着后续的存储器中。重要的是,这样的构造例程不需要知道关于两 组成色拉的类型的任何东西;只有它们的尺寸(以及作为字节序列的可访 问性)要紧。相同的过程适用于色拉列表的构造,所述色拉列表是(可能 地)异类类型的任意许多子色拉的排序封装。

作为存储器内顺序字节的色拉系统的基础格式的另一个结果结合“遍 历”活动--例如循环使用模式使用--获得对色拉列表中存储的单独色拉的 顺序访问。表示在蛋白质结构之内的记述和摄取的单独色拉必须类似地遍 历。以非常直接且有效的方式完成这样的调度:为了“到达”色拉列表中 的下一个色拉,将当前色拉的长度添加到其存储器内的位置,并且作为结 果的存储器位置等同于下一个色拉的头部。这样的简化是可能的,因为色 拉和蛋白质设计避免“间接”;不存在指针;相反地,数据简单地以其整 体就位。

关于色拉比较这一点,等离子体系统的完全实施必须承认跨越不同操 作系统、CPU和硬件体系结构以及它们当中的不同且不兼容的数据表示 方案的存在。大多数这样的不同包括字节排序策略(例如小端对比于大端) 和浮点表示;其他不同也存在。等离子体规范要求色拉所封装的数据保证 可解译(亦即必须以从中检查色拉的体系结构或平台的自然格式出现)。 这个要求依次表明等离子体系统自身对数据格式转化负责。然而,规范仅 规定,在色拉变得对可能检查它的执行进程“根本可见”之前发生转换。 因此达到单独的实施,在该点它选择执行这样的格式c转换;两个适当的 方法是,色拉数据有效载荷符合本地体系结构的数据格式(1)当单独的 色拉从它已被包装在其中的蛋白质中“拉出”时,或者(2)对于同时在 蛋白质中的全部色拉,当该蛋白质从它处于其中的池中提取时。注意,转 换规定考虑硬件辅助实施的可能性。例如,建立有明确等离子体能力的联 网芯片组可以基于接收系统的已知特性智能地并且在“传输时”执行格式 转换。交替地,从传输的过程可以将数据有效载荷转换成规范格式,其中 接收过程对称地从规范转换到“本地”格式。另一个实施例执行“在金属 (at the metal)”的格式转换,意味着数据总是以规范格式存储,即使在 本地存储器中也是,并且当数据从存储器中检索并放置在就近CPU的寄 存器中时,存储器控制器硬件自身执行转换。

实施例的最小(和只读)蛋白质实施包括利用蛋白质的一个或更多个 应用程序或编程语言中的操作或行为。图19C是根据实施例的用于使用 蛋白质的流程图650。操作开始于查询652蛋白质的以字节计的长度。查 询记述条目的数目654。查询摄取的条目656。通过指数检索658记述条 目。通过指数检索660摄取。

在此描述的实施例还定义了允许蛋白质被构造并填充以数据的基本 方法、使一般任务对程序员更容易的助手方法以及用于创建优化的钩子。 图19D是根据实施例的用于构造或生成蛋白质的流程图670。操作开始于 创建672新蛋白质。一系列的记述条目被附加674。摄取也被附加676。 查询匹配记述的存在678,并且查询匹配摄取关键字的存在680。给定摄 取关键字,摄取值被检索682。跨越记述执行684模式匹配。在蛋白质的 开始附近嵌入686非结构化的元数据。

如上所述,色拉提供最低水平的用于进程间交换的数据定义,蛋白质 提供中等水平的用于查询和过滤的结构和钩子,而池则提供高水平的组织 和访问语义。池是用于蛋白质的仓库,提供线性序列和状态缓存。池还提 供通过众多不同类型的多个程序或应用程序进行的多程序访问。此外,池 提供一组共同的可优化的过滤和模式匹配行为。

可以容纳成千上万个蛋白质的实施例的池起作用以维持状态,以便单 独的进程可以卸载对多进程程序代码共同的大多数冗长簿记。池维持或保 持过去可用蛋白质的大缓冲器--柏拉图式(Platonic)池外显地是无限的-- 以便参与的进程可以随意在池中向后和向前扫描。缓冲器的尺寸当然依赖 于实施方式,但是在通常使用中常常可以将蛋白质保持在池中以小时或天 计。

与现有的进程间通信框架所采取的机械式点对点方法形成对照,在此 所述的池使用的最通常的风格遵守生物学比喻。名称蛋白质暗指生物学灵 感:池中的数据蛋白质可用于大量计算进程进行的灵活查询和模式匹配, 就像活体组织中的化学蛋白质可用于大量细胞试剂进行的模式匹配和过 滤。

两个另外的抽象依靠生物学比喻,包括使用“处理机(handler)”和 高尔基(Golgi)框架。参与池的进程一般创建若干处理机。处理机是将 匹配条件与处理行为相关联的相对小束的代码。通过将一个或更多个处理 机联系到池,进程设立封装状态的灵活的回叫触发,并对新的蛋白质起反 应。

参与几个池的进程一般从抽象高尔基类继承。高尔基框架提供若干有 用的例程,用于管理多个池和处理机。高尔基类还封装双亲-子女关系, 提供不使用池的本地蛋白质交换的机制。

根据实施例提供的池API配置成允许池以多种方式实施,以便既考 虑系统专用目标,又考虑给定硬件和网络体系结构的可用能力。池所依靠 的两个基本系统规定是存储设施和进程间通信的设备。在此描述的现存系 统使用以下的灵活组合:共享存储器、虚拟存储器和用于存储设施的盘以 及用于进程间通信的TCP/IP套接字和IPC队列。

实施例的池功能包括但不限于以下:参与池;将蛋白质放置在池中; 从池中检索下一个未看到的蛋白质;快退或快进池内的内容(例如蛋白 质)。另外,池功能可以包括但不限于以下:设立用于进程的流池回叫; 选择性地检索匹配记述或摄取关键字的特殊模式的蛋白质;向后和向前扫 描匹配记述或摄取关键字的特殊模式的蛋白质。

上述蛋白质被提供给池,作为与其他应用程序共享蛋白质数据内容的 方式。图20是根据实施例的包括使用色拉、蛋白质和池的数据交换的处 理环境的框图。这个实例环境包括三个设备(例如设备X、设备Y和设 备Z,在此集体被称为“设备”),它们通过使用如上所述的色拉、蛋白质 和池来共享数据。设备中的每一个耦接到三个池(例如池1、池2、池3)。 池1包括众多蛋白质(例如蛋白质X1、蛋白质Z2、蛋白质Y2、蛋白质 X4、蛋白质Y4),它们从各个设备贡献或传送到池(例如,蛋白质Z2由 设备Z传送或贡献到池1,等等)。池2包括众多蛋白质(例如,蛋白质 Z2由设备Z传送或贡献到池1,等等)。池2包括众多蛋白质(例如蛋白 质Z4、蛋白质Y3、蛋白质Z1、蛋白质X3),它们从各个设备贡献或传 送到池(例如,蛋白质Y3由设备Y传送或贡献到池2,等等)。池3包 括众多蛋白质(例如蛋白质Y1、蛋白质Z3、蛋白质X2),它们从各个设 备贡献或传送到池(例如,蛋白质X2由设备X传送或贡献到池3,等等)。 虽然上面描述的例子包括耦接或连接在三个池当中的三个设备,但是任何 数目的设备可以以任何方式或组合来耦接或连接在任何数目的池当中,并 且任何池可以包括从任何数目或组合的设备中贡献的任何数目的蛋白质。 这个例子的蛋白质和池如上所述参考图14-19。

图21是根据实施例的下述处理环境的框图,该处理环境包括多个设 备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等离子 体构造(例如池、蛋白质和色拉)用于允许众多运行的程序共享并集体地 响应由设备所生成的事件。这个系统只是多用户、多设备、多计算机交互 控制场景或配置的一个例子。更加具体地,在这个例子中,包括多个设备 (例如设备A、B等等)和在设备上运行的若干程序(例如应用程序 AA-AX、应用程序BA-BX等等)的交互系统使用等离子体构造(例如池、 蛋白质和色拉)以允许运行的程序共享并集体地响应由这些输入设备所生 成的事件。

在这个例子中,每个设备(例如设备A、B等等)将由运行于各个设 备上的程序(例如应用程序AA-AX、应用程序BA-BX等等)生成的或者 从其输出的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放 到等离子体池中。例如,程序AX生成数据或输出并提供该输出给设备A, 设备A依次将原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等等) 并将那些蛋白质存放到池中。作为另一个例子,程序BC生成数据并提供 该数据给设备B,设备B依次将数据翻译成蛋白质(例如蛋白质1B、蛋 白质2B等等)并将那些蛋白质存放到池中。

每个蛋白质包含记述列表,其指定通过应用程序注册的数据或输出以 及用于程序自身的识别信息。在可能的情况下,蛋白质记述也可以给予输 出事件或动作以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载 了用于程序事件的有用状态信息的全部集合。

如上所述,蛋白质在由耦接或连接到池的任何程序或设备使用的池中 是可用的,而不管程序或设备的类型。因此,在任何数目的计算机上运行 的任何数目的程序都可以从输入池中提取事件蛋白质。这些设备只需能够 经由本地存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个 直接后果是以下有益的可能性:将负责生成处理事件的进程与使用或解译 事件的进程解耦。另一个后果是事件的源和消费者的多路化,以便设备可 以由一个人控制或者可以由几个人同时使用(例如基于等离子体的输入框 架支持许多并发用户),同时作为结果的事件流对多个事件消费者依次可 见。

作为例子,设备C可以从池中提取一个或更多个蛋白质(例如蛋白 质1A、蛋白质2A等等)。在蛋白质提取之后,设备C在蛋白质数据所对 应的处理事件中可以使用从蛋白质的记述和摄取的色拉中检索或读取的 蛋白质的数据。作为另一个例子,设备B可以从池中提取一个或更多个 蛋白质(例如蛋白质1C、蛋白质2A等等)。在蛋白质提取之后,设备B 在蛋白质数据所对应的处理事件中可以使用蛋白质的数据。

耦接或连接到池的设备和/或程序可以在池中向后和向前浏览以查找 具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的 蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其他蛋白 质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写 状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的 依靠。

图22是根据替换实施例的下述处理环境的框图,该处理环境包括多 个设备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等 离子体构造(例如池、蛋白质和色拉)用于允许众多运行的程序共享并集 体地响应由设备所生成的事件。这个系统只是多用户、多设备、多计算机 交互控制场景或配置的一个例子。更加具体地,在这个例子中,包括多个 设备(例如分别耦接到设备A和B的设备X和Y)和在一个或更多个计 算机(例如设备A、设备B等等)上运行的若干程序(例如应用程序AA-AX、 应用程序BA-BX等等)的交互系统使用等离子体构造(例如池、蛋白质 和色拉)以允许运行的程序共享并集体地响应由这些输入设备所生成的事 件。

在这个例子中,每个设备(例如分别耦接到设备A和B的设备X和 Y)被管理和/或耦接以在一个或更多个程序之下或者与其相结合地运行, 所述一个或更多个程序驻留在各个设备上(例如设备A、设备B等等), 各个设备将由设备(例如设备X、设备A、设备Y、设备B等等)硬件所 生成的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放到等 离子体池中。例如,与驻留在设备A上的应用程序AB相结合地运行的设 备X生成原始数据,将离散的原始数据翻译成蛋白质(例如蛋白质1A、 蛋白质2A等等)并将那些蛋白质存放到池中。作为另一个例子,与驻留 在设备A上的应用程序AT相结合地运行的设备X生成原始数据,将离 散的原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等等)并将那 些蛋白质存放到池中。作为再另一个例子与驻留在设备C上的应用程序 CD相结合地运行的设备Z生成原始数据,将离散的原始数据翻译成蛋白 质(例如蛋白质1C、蛋白质2C等等)并将那些蛋白质存放到池中。

每个蛋白质都包括记述列表,其指定通过输入设备注册的动作以及用 于设备自身的识别信息。在可能的情况下,蛋白质记述也可以给予设备动 作以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载了用于设备 事件的有用状态信息的全部集合。

如上所述,蛋白质在由耦接或连接到池的任何程序或设备使用的池中 是可用的,而不管程序或设备的类型。因此,在任何数目的计算机上运行 的任何数目的程序都可以从输入池中提取事件蛋白质。这些设备只需能够 经由本地存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个 的直接后果是以下有益的可能性:将负责生成处理事件的进程与使用或解 译事件的进程解耦。另一个后果是事件的源和消费者的多路化,以便输入 设备可以由一个人控制或者可以由几个人同时使用(例如基于等离子体的 输入框架支持许多并发用户),同时作为结果的事件流对多个事件消费者 依次可见。

耦接或连接到池的设备和/或程序可以在池中向后和向前浏览以查找 具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的 蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其他蛋白 质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写 状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的 依靠。

图23是根据另一个替换实施例的下述处理环境的框图,该处理环境 包括多个输入设备,所述多个输入设备耦接在运行于设备中的一个或更多 个设备上的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉) 用于允许众多运行的程序共享并集体地响应由设备所生成的事件。这个系 统只是多用户、多设备、多计算机交互控制场景或配置的一个例子。更加 具体地,在这个例子中,包括多个输入设备(例如输入设备A、B、BA 和BB等等)和在一个或更多个计算机(例如设备A、设备B等等)上运 行的若干程序(未示出)的交互系统使用等离子体构造(例如池、蛋白质 和色拉)以允许运行的程序共享并对这些输入设备所生成的事件集体作出 反应。

在这个例子中,每个输入设备(例如输入设备A、B、BA和BB等 等)由驻留在各个设备上(例如设备A、设备B等等)的软件驱动器程 序管理,所述各个设备将由输入设备硬件所生成的离散原始数据翻译成等 离子体蛋白质,并且将那些蛋白质存放到等离子体池中。例如,输入设备 A生成原始数据并提供该原始数据给设备A、设备A依次将离散的原始 数据翻译成蛋白质(例如蛋白质1A、蛋白质2A等等)并将那些蛋白质 存放到池中。作为另一个例子,输入设备BB生成原始数据并提供该原始 数据给设备B,设备B依次将离散的原始数据翻译成蛋白质(例如蛋白质 1B、蛋白质2B等等)并将那些蛋白质存放到池中。

每个蛋白质包含记述列表,其指定通过输入设备注册的动作以及用于 设备自身的识别信息。在可能的情况下,蛋白质记述也可以给予设备动作 以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载了用于设备事 件的有用状态信息的全部集合。

为了示意,这里是这样的系统中的用于两个典型事件的示例蛋白质。 蛋白质在这里被表示为文本,然而在实际实施中,这些蛋白质的组成部分 是定型的数据束(例如色拉)。描述一般而言“一根手指点击”姿势(在 相关申请中有描述)的蛋白质如下:

作为进一步的例子,描述鼠标点击的蛋白质如下:

前述样本蛋白质中的任一个或两者都可能使主机设备的参与程序运 行其代码的特殊部分。这些程序可能对一般的语义标签感兴趣:全部当中 最一般的是“point”,或者更特定的对“engage,one”。或者它们可以寻 找似乎仅会由精确设备生成的事件:“one-finger-engage”,乃至单个聚集 对象“hand-id-23”。

如上所述,蛋白质在由耦接或连接到池的任何程序或设备使用的池中 是可用的,而不管程序或设备的类型。因此,在任何数目的计算机上运行 的任何数目的程序都可以从输入池中提取事件蛋白质。这些设备只需能够 经由本地存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个 的直接后果是以下有益的可能性:将负责生成“输入事件”的进程与使用 或解译事件的进程解耦。另一个后果是事件的源和消费者的多路化,以便 输入设备可以由一个人控制或者可以由几个人同时使用(例如基于等离子 体的输入框架支持许多并发用户),同时作为结果的事件流对多个事件消 费者依次可见。

作为例子或蛋白质使用,设备C可以从池中提取一个或更多个蛋白 质(例如蛋白质1B等待)。在蛋白质提取之后,设备C在处理蛋白质数 据所对应的输入设备CA和CC的输入事件时可以使用从蛋白质的记述和 摄取的色拉中检索或读取的蛋白质的数据。作为另一个例子,设备A可 以从池中提取一个或更多个蛋白质(例如蛋白质1B等等)。在蛋白质提 取之后,设备A在处理蛋白质数据所对应的输入设备A的输入事件时可 以使用蛋白质的数据。

耦接或连接到池的设备和/或程序可以在池中向后和向前浏览以查找 具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的 蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其他蛋白 质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写 状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的 依靠。

在此描述的系统实施例中使用的输入设备的例子包括如消费电子产 品中使用的姿势输入传感器、键盘、鼠标、红外线遥控器以及面向任务的 触媒对象,这只是举几个例子。

图24是根据又一个替换实施例的下述处理环境的框图,该处理环境 包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上 的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允 许众多运行的程序共享并集体地响应由设备所生成的事件。这个系统只是 包括多个运行程序(例如图形A-E)和一个或更多个显示设备(未示出) 的系统的一个例子,其中,使得程序中的一些或全部的图形输出以协调的 方式可用于其他程序,使用等离子体构造(例如池、蛋白质和色拉)以允 许运行的程序共享并对设备所生产的图形事件集体作出反应。

对于计算机程序而言通常有用的是显示由另一个程序生成的图形。几 个通常的例子包括视频会议应用程序、基于网络的放映幻灯片和演示程序 以及视窗管理器。在这种配置下,池用作等离子体库以实施一般化的框架, 该框架封装视频、网络应用程序共享和视窗管理,并允许程序员添加在这 种程序的当前版本中通常不可用的若干特征。

在等离子体组成环境中运行的程序(例如图形A-E)通过耦接和/或 连接到池而参与协调池。每个程序都可以将蛋白质放在该池中,以指示不 同类型的图形源的可用性。可用于显示图形的程序也存放蛋白质,以指示 它们显示的能力、安全和用户简档以及物理和网络位置。

图形数据也可以通过池传输,或者显示程序可以指向其他种类的网络 资源(例如RTSP流)。如在此使用的短语“图形数据”指的是依赖宽阔 连续区的多种不同表示;图形数据的例子包括但不限于文字例子(例如“图 像”或像素块)、程序性例子(例如“绘图”指示的序列,诸如流下典型 的openGL流水线)以及描述性例子(例如借助于几何转换、裁剪和合成 操作来组合其他图形构造的指令)。

在本地机器上,图形数据可以通过平台专用显示驱动器优化来递送。 即使当图形没有经由池传输时,通常周期性的屏幕捕捉也会存储在协调池 中,以便客户在不直接访问更深奥的源的情况下仍然可以显示后退图形。

在此描述的系统的一个优点在于,与大多数消息传递框架和网络协议 不同,池维持数据的显著缓冲。所以程序可以向后回绕到池中以查看访问 和使用模式(在协调池的情况下)或者提取以前的图形帧(在图形池的情 况下)。

图25是根据再一个替换实施例的下述处理环境的框图,该处理环境 包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上 的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允 许对运行的程序进行状态检查、可视化和调试。这个系统只是包括多个设 备(例如设备A、设备B等等)上的多个运行程序(例如程序P-A、程序 P-B等等)的系统的一个例子,其中,一些程序使用或经由池访问其他程 序的内部状态。

大多数交互计算机系统包括彼此并排运行的许多程序,它们或者在单 个机器上或者在多个机器上,并且跨越网络进行交互。多程序系统可能难 以配置、分析和调试,因为运行时间数据隐藏在每个进程内部并难以访问。 在此描述的实施例的一般化框架和等离子体构造允许运行的程序使许多 它们的数据经由池可用,以便其他程序可以检查它们的状态。这个框架启 用比传统调试器更灵活的调试工具、复杂的系统维护工具以及可视化装 备,所述可视化装备配置成允许人工操作员详细地分析一个或更多个程序 已经过的状态的序列。

参考图25,在这个框架中运行的程序(例如程序P-A、程序P-B等 等)在程序启动时生成或创建进程池。这个池注册在系统年鉴中,并且施 加安全与访问控制。更加具体地,每个设备(例如设备A、B等等)将由 运行于各个设备上的程序(例如程序P-A、程序P-B等等)生成的或者从 其输出的离散原始数据翻译成等离子体蛋白质,并且将那些蛋白质存放到 等离子体池中。例如,程序P-A生成数据或输出并提供该输出给设备A, 设备A依次将原始数据翻译成蛋白质(例如蛋白质1A、蛋白质2A、蛋 白质3A等等)并将那些蛋白质存放到池中。作为另一个例子,程序P-B 生成数据并提供该数据给设备B,设备B依次将数据翻译成蛋白质(例如 蛋白质1B-4B等等)并将那些蛋白质存放到池中。

在程序寿命的存续期间,具有充分访问许可的其他程序可以附接到池 并读取程序存放的蛋白质;这表示基本检查模态,并且在概念上是“单路” 或“只读”命题:在程序P-A中感兴趣的实体检查由其进程池中的P-A 存放的状态信息流。例如,在设备C下运行的检查程序或应用程序可以 从池中提取一个或更多个蛋白质(例如蛋白质1A、蛋白质2A等等)。在 蛋白质提取之后,设备C可以使用蛋白质的记述和摄取的色拉中检索或 读取的蛋白质的数据以访问、解译和检查程序P-A的内部状态。

但是,回顾等离子体系统不仅是有效的状态传输方案,而且是全方向 消息收发环境,几个另外的模式支持程序对程序状态检查。授权的检查程 序可以自己将蛋白质存放到程序P的进程池中,以影响或控制该进程池中 产生和放置的状态信息的特性(毕竟,程序P不仅向所述进程池中写入而 且还从中读取)。

图26是根据另外的可替换实施例的下述处理环境的框图,该处理环 境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备 上的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于 允许影响或控制该进程池中产生和放置的状态信息的特性。在这个系统示 例中,设备C的检查程序例如可以请求程序(例如程序P-A、程序P-B 等等)或者在单个瞬间或者在具体的一段时间倾卸比正常更多的状态到池 中。或者,预示调试通信的下一个“等级”,感兴趣的程序可以请求程序 (例如程序P-A、程序P-B等等)发出列举其运行时间环境中现存的对象 的蛋白质,它们单独地能够并且可用于经由调试池进行交互。由此可知, 感兴趣的程序可以“寻址”程序运行时间中的对象当中的个体,将蛋白质 放置在具体的对象单独会占用并作出反应的进程池中。感兴趣的程序例如 可以请求对象发出报告蛋白质,描述其全部成分变量的瞬时值。甚至更重 要的是,感兴趣的程序可以经由其他蛋白质指导对象改变其行为或其变量 的值。

更加具体地,在这个例子中,设备C的检查应用程序将对于对象列 表的请求(例如“请求对象列表”)(以蛋白质的形式)放置到池中,该请 求然后由耦接到池的每个设备(例如设备A、设备B等等)提取。响应 于该请求,每个设备(例如设备A、设备B等等)将列举其运行时间环 境中现存的对象的蛋白质(例如蛋白质1A、蛋白质1B等等)放置到池 中,它们单独地能够并且可用于经由调试池进行交互。

由此可知经由来自设备的举例,并且响应于对象的举例,设备C的 检查应用程序寻址程序运行时间中的对象当中的个体,将蛋白质放置在具 体的对象单独会占用并进行响应的进程池中。设备C的检查应用程序例 如可以将请求蛋白质(例如蛋白质“请求报告P-A-O”、“请求报告P-B-O”) 放置在池中,对象(例如分别是对象P-A-O、对象P-B-O)发出报告蛋白 质(例如蛋白质2A、蛋白质2B等等),描述其全部成分变量的瞬时值。 每个对象(例如分别是对象P-A-O、对象P-B-O)提取其请求(例如分别 是“请求报告P-A-O”、“请求报告P-B-O”),并且做为响应,将蛋白质放 置到包括所请求的报告(例如分别为蛋白质2A、蛋白质2B)的池中。设 备C然后提取各种报告蛋白质(例如蛋白质2A、蛋白质2B等等),并且 如对报告的内容适当的那样采取随后的处理动作。

用这种方式,使用等离子体作为互换介质最终趋于侵蚀调试、进程控 制以及程序对程序通信与协调之间的区别。

最后,一般化的等离子体框架允许可视化和分析程序以松散耦接的方 式设计。例如显示存储器访问模式的可视化工具可以结合输出其基本存储 器读取和写入至池的任何程序一起使用。经历分析的程序不需要知道可视 化工具的存在或设计,反之亦然。

以上述方式使用池并不过度影响系统性能。例如,实施例已允许在池 中每秒存放几十万个蛋白质,以便使得即使相对冗长的数据输出也能够不 显著地抑制大多数程序的响应性或交互特征。

在此描述的实施例包括一种系统,该系统包括有输入设备的系统。实 施例的系统包括耦接至处理器并且检测输入设备的取向的检测器。实施例 的输入设备具有与该取向对应的多个模式取向。实施例的多个模式取向与 姿势控制系统的多个输入模式对应。实施例的检测器耦接至姿势控制系统 并且响应于该取向自动控制多个输入模式中的输入模式的选择。

在此描述的实施例包括一种系统,该系统包括:输入设备,以及耦接 至处理器并且检测该输入设备的取向的检测器,其中,该输入设备具有与 该取向对应的多个模式取向,其中,该多个模式取向与姿势控制系统的多 个输入模式对应,其中,检测器耦接至姿势控制系统并且响应于该取向自 动控制该多个输入模式中的输入模式的选择。

实施例的检测器将输入设备的取向解译并且转换成姿势控制系统的 输入信号。

实施例的检测器将输入设备的、在多个模式取向之间的取向转换解译 并且转换成姿势控制系统的输入信号。

实施例的取向的检测包括检测输入设备在时间和空间中的点处的瞬 时状态的绝对三维空间位置。

实施例的检测器跟踪输入设备的在多个模式取向之间的取向转换。

实施例的取向转换是围绕输入设备的轴线的旋转转换。

实施例的取向转换是围绕输入设备的多条轴线的旋转转换。

实施例的系统包括在取向转换期间向输入模式的选择施加滞后。

实施例的检测器实时跟踪瞬时取向。

实施例的检测器将输入设备的原始跟踪数据翻译成空间取向的六个 度。

实施例的检测器实时跟踪输入设备的瞬时位置。

实施例的检测器将输入设备的原始跟踪数据翻译成空间位置的六个 度。

实施例的系统包括至少一个输入传感器,其中,输入传感器被定位在 输入设备上。

实施例的检测器将原始输入传感器位置数据翻译成输入传感器状态。

实施例的检测器将原始输入传感器位置数据翻译成输入传感器转换 数据。

实施例的输入传感器的位置控制多个输入模式。

实施例的输入设备包括检测器。

实施例的检测器是远离输入设备的远程检测器。

实施例的检测器包括由输入设备承载的输入设备检测器部件以及远 离输入设备的远程检测器部件。

实施例的输入设备是手持输入设备。

实施例的检测器检测输入设备在时间和空间中的点处的瞬时状态的 绝对三维空间位置。

实施例的多个输入模式包括直接操纵模式,在直接操纵模式中,瞬时 状态用于耦接至姿势控制系统的部件的应用元件的直接操纵。

实施例的多个输入模式包括元操纵模式,在元操纵模式中,瞬时状态 用于耦接至姿势控制系统的部件的一组应用元件的直接操纵。

实施例的多个输入模式包括三维操纵模式,在三维操纵模式中,瞬时 状态用于耦接至姿势控制系统的部件的应用元件的三维操纵。

实施例的姿势控制系统控制耦接至姿势控制系统的三维空间物体。

实施例的系统包括通过三个平移自由度和三个旋转自由度控制三维 空间物体。

实施例的控制包括三维空间物体与输入设备的运动之间的直接耦接。

实施例的控制包括三维空间物体与输入设备的运动之间的间接耦接。

实施例的三维空间物体被呈现在耦接至处理器的显示设备上。

实施例的系统包括通过将输入设备的多个输入模式映射至三维空间 物体的多个物体平移来控制三维空间物体的移动。

实施例的映射包括多个输入模式与多个物体平移之间的直接映射。

实施例的映射包括多个输入模式与多个物体平移之间的间接映射。

实施例的映射包括将多个输入模式的位置偏移与三维空间物体的物 体平移的位置偏移相关联。

实施例的映射包括将输入设备的位置偏移与三维空间物体的物体平 移的平移速度相关联。

实施例的系统包括通过将输入设备的线性姿势映射至三维空间物体 的线性平移来控制三维空间物体的移动。

实施例的系统包括通过将输入设备的旋转姿势映射至三维空间物体 的旋转平移来控制三维空间物体的移动。

实施例的系统包括通过将输入设备的线性姿势映射至三维空间物体 的旋转平移来控制三维空间物体的移动。

实施例的系统包括通过将输入设备的旋转姿势映射至三维空间物体 的线性平移来控制三维空间物体的移动。

实施例的检测包括检测输入设备的推断位置与虚拟空间相交的时间, 其中,虚拟空间包括在耦接至姿势控制系统的显示设备上描画的空间。

实施例的检测器检测输入设备的事件,其中,事件与输入设备的三维 空间位置和三维空间取向中的至少一个对应,其中,事件与第一类型的应 用对应。

实施例的处理器生成数据序列,数据序列包括指定事件的输入设备事 件数据以及事件的状态信息,其中,输入设备事件数据和状态信息是具有 与姿势控制系统的第一应用对应的类型的类型专用数据。

实施例的处理器形成数据容器以包括数据序列,其中,数据容器具有 包括独立于应用的数据序列的表示的数据结构。

实施例的处理器将数据容器放置在知识库中。

实施例的、在第二类型的应用下运行的第二事件搜索知识库并且识别 数据容器与第二事件之间的对应关系,其中,第二类型的应用通过使用数 据容器的数据序列的内容来执行与第二事件对应的操作。

实施例的跟踪是电磁场(EMF)跟踪。

实施例的输入设备包括耦接至电路的检测器,其中,检测器包括多个 线圈。

实施例的系统包括远离输入设备的场发生器,其中,场发生器生成在 多个线圈中感应出信号的电磁场。

实施例的系统包括远离输入设备的多个场发生器,其中,在输入设备 接近感应出信号的场发生器时,每个场发生器在输入设备的多个线圈中感 应出信号。

实施例的检测器通过使用在多个线圈中感应出的电磁场信号来检测 输入设备的取向。

实施例的检测器通过使用在多个线圈中感应出的信号来检测输入设 备的位置。

实施例的输入设备包括耦接至处理器的发射机,其中,发射机是无线 发射机。

实施例的发射机将输入设备的取向传达给姿势控制系统。

实施例的发射机将输入设备的位置传达给姿势控制系统。

实施例的输入设备包括至少一个输入传感器,其中,发射机将至少一 个输入传感器的状态传达给姿势控制系统。

实施例的跟踪是光学跟踪。

实施例的系统包括连接至输入设备的至少一个标签。

实施例的至少一个标签包括连接至输入设备的前部区域的多个标签。

实施例的跟踪包括动态检测至少一个标签的位置。

实施例的跟踪包括检测耦接至输入设备的区域的标签组的位置。

实施例的标签组中的每个标签包括图案,其中,标签组中的每个标签 的每个图案不同于多个标签中的任意剩余标签的任意图案。

实施例的每个标签包括第一图案和第二图案,其中,第一图案为标签 组中的任意标签共用;而第二图案在标签组中的至少两个标签之间是不同 的。

实施例的标签组在输入设备上形成多个图案。

实施例的至少一个标签包括红外(IR)发光二极管(LED)组和回 射点组。

实施例的输入设备包括耦接至电路的微处理器,其中,电路耦接至红 外发光二极管组。

实施例的系统包括耦接至电路的至少一个输入传感器,其中,至少一 个输入传感器被定位在输入设备上。

实施例的至少一个输入传感器控制红外发光二极管的状态组。

实施例的每个红外发光二极管的状态与多个输入模式中的至少一个 输入模式对应。

实施例的至少一个标签包括连接至输入设备的至少一个跟踪点。

实施例的至少一个跟踪点包括至少一个红外(IR)发光二极管 (LED)。

实施例的至少一个跟踪点包括至少一个回射点。

实施例的至少一个跟踪点包括红外(IR)发光二极管(LED)和回 射点中的至少一个。

实施例的至少一个跟踪点包括红外发光二极管组和回射点组。

实施例的输入设备包括多个侧,其中,多个侧中的每个侧与多个模式 取向中的模式取向对应。

实施例的多个侧中的每个侧与多个输入模式中的输入模式对应。

实施例的多个侧中的每个侧被分配以与侧对应的输入模式。

实施例的多个侧中的每个侧基于上下文被动态地分配以输入模式。

实施例的多个侧中的至少一个侧包括输入传感器。

实施例的多个侧中的每个侧包括输入传感器。

实施例的每个侧的每个输入传感器基于该取向被动态地分配以功能。

实施例的每个侧的每个输入传感器基于上下文被动态地分配以功能。

实施例的多个侧包括三个侧,其中,输入设备具有三角形横截面,其 中,多个侧中的每个侧与多个模式取向中的模式取向对应。

实施例的多个侧中的每个侧与多个输入模式中的输入模式对应。

实施例的多个侧中的第一侧与第一输入模式对应,而多个侧中的第二 侧与第二输入模式对应,其中,包括将输入设备围绕纵向轴线相对于第一 侧的中心旋转大于120度的取向转换引起从第一输入模式至第二输入模 式的变化。

实施例的检测器在该取向转换期间向输入模式的选择施加滞后带。

实施例的滞后带是近似地等于和大于30度中的至少一个。

实施例的滞后带是可编程的。

实施例的多个侧中的每个侧包括输入传感器。

在此描述的实施例包括一种系统,该系统包括包括有耦接至电路的处 理器的输入设备。实施例的处理器控制姿势控制系统的多个输入模式。实 施例的系统包括检测器,该检测器耦接至处理器并且检测输入设备在时间 和空间中的点处的瞬时状态的绝对三维空间位置和取向。实施例的输入设 备具有与至少该取向对应的多个模式取向。实施例的多个模式取向与姿势 控制系统的多个输入模式对应。实施例的检测器耦接至姿势控制系统并且 响应于该取向自动控制多个输入模式中的输入模式的选择。

在此描述的实施例包括一种系统,该系统包括:输入设备,输入设备 包括耦接至电路的处理器,其中,处理器控制姿势控制系统的多个输入模 式;以及检测器,检测器耦接至处理器并且检测输入设备在时间和空间中 的点处的瞬时状态的绝对三维空间位置和取向,其中,输入设备具有与至 少该取向对应的多个模式取向,其中,多个模式取向与姿势控制系统的多 个输入模式对应,其中,检测器耦接至姿势控制系统并且响应于该取向自 动控制多个输入模式中的输入模式的选择。

在此描述的实施例包括一种输入设备,该输入设备包括手持壳,手持 壳包括处理器。实施例的处理器耦接至检测器,检测器检测输入设备当前 操作的取向和输入设备的多个取向之间转换,并且检测器将输入设备当前 操作的取向和输入设备的多个取向之间的转换翻译成输入信号。实施例的 输入信号自动控制姿势控制系统的多个输入模式。

在此描述的实施例包括一种输入设备,该输入设备包括手持壳,手持 壳包括处理器,其中,处理器耦接至检测器,检测器检测输入设备当前操 作的取向和输入设备在输入设备的多个取向之间的转换,并且检测器将输 入设备当前操作的取向和输入设备在输入设备的多个取向之间的转换翻 译成输入信号,其中,输入信号自动控制姿势控制系统的多个输入模式。

实施例的检测器包括包括有多个线圈的电路。

实施例的设备包括远程电磁场(EMF)发生器,该远程电磁场发生 器生成在多个线圈中感应出信号的电磁场。

实施例的设备包括多个远程电磁场发生器,其中,当壳接近感应出信 号的电磁场发生器时,每个电磁场发生器在多个线圈中感应出信号。

实施例的检测器通过使用在多个线圈中感应出的电磁场信号来检测 该取向。

实施例的检测器通过使用在多个线圈中感应出的信号来检测输入设 备的位置。

实施例的设备包括耦接至处理器的发射机,其中,发射机是无线发射 机。

实施例的发射机将该取向传达给姿势控制系统。

实施例的发射机将输入设备的位置传达给姿势控制系统。

实施例的设备包括耦接至处理器的至少一个输入传感器,其中,发射 机将至少一个输入传感器的状态传达给姿势控制系统。

实施例的检测器将原始输入传感器位置数据翻译成输入传感器状态。

实施例的输入传感器的位置控制姿势控制系统。

实施例的多个取向与姿势控制系统的多个输入模式对应。

实施例的多个输入模式包括直接操纵模式,在直接操纵模式中,输入 设备直接操纵耦接至姿势控制系统的部件的应用元件。

实施例的多个输入模式包括元操纵模式,在元操纵模式中,输入设备 直接操纵耦接至姿势控制系统的部件的一组应用元件。

实施例的多个输入模式包括三维操纵模式,在三维操纵模式中,输入 设备控制耦接至姿势控制系统的部件的应用元件的三维操纵。

实施例的输入信号响应于该取向自动控制多个输入模式中的输入模 式的选择。

实施例的设备包括在转换期间向输入模式的选择施加滞后。

实施例的转换是围绕输入设备的至少一个轴线的旋转转换。

实施例的检测器实时跟踪在时间和空间中的点处的瞬时三维空间取 向。

实施例的检测器将输入设备的原始跟踪数据翻译成空间取向的六个 度。

实施例的检测器实时跟踪在时间和空间中的点处的瞬时三维空间位 置。

实施例的检测器将输入设备的原始跟踪数据翻译成空间位置的六个 度。

实施例的壳包括多个侧,其中,多个侧中的每个侧与多个取向中的取 向对应。

实施例的多个侧中的每个侧与多个输入模式中的输入模式对应。

实施例的多个侧中的每个侧被分配以与侧对应的输入模式。

实施例的多个侧中的每个侧基于上下文被动态地分配以输入模式。

实施例的多个侧中的至少一个侧包括输入传感器。

实施例的多个侧中的每个侧包括输入传感器。

实施例的每个侧的每个输入传感器基于该取向被动态地分配以功能。

实施例的每个侧的每个输入传感器基于上下文被动态地分配以功能。

实施例的多个侧包括三个侧,其中,壳具有三角形横截面,其中,多 个侧中的每个侧与多个取向中的取向对应。

实施例的多个侧中的第一侧与第一输入模式对应,而多个侧中的第二 侧与第二输入模式对应,其中,包括将输入设备围绕纵向轴线相对于第一 侧的中心旋转大于120度的转换引起从第一输入模式至第二输入模式的 变化。

实施例的检测器在转换期间向输入模式的选择施加滞后带。

实施例的滞后带是近似地等于和大于30度中的至少一个。

实施例的滞后带是可编程的。

实施例的检测器检测输入设备的事件,其中,事件与输入设备的三维 空间位置和三维空间取向中的至少一个对应,其中,事件与第一类型的应 用对应。

实施例的处理器生成数据序列,数据序列包括指定事件的输入设备事 件数据以及事件的状态信息,其中,输入设备事件数据和状态信息是具有 与姿势控制系统的第一应用对应的类型的类型专用数据。

实施例的处理器形成数据容器以包括数据序列,其中,数据容器具有 包括独立于应用的数据序列的表示的数据结构。

实施例的处理器将数据容器放置在知识库中。

实施例的、在第二类型的应用下运行的第二事件搜索知识库并且识别 数据容器与第二事件之间的对应关系,其中,第二类型的应用通过使用数 据容器的数据序列的内容来执行与第二事件对应的操作。

实施例的姿势控制系统控制耦接至姿势控制系统的三维空间物体。

实施例的设备包括通过三个平移自由度和三个旋转自由度、经由设备 来控制三维空间物体。

实施例的控制包括三维空间物体与输入设备的运动之间的直接耦接。

实施例的控制包括三维空间物体与输入设备的运动之间的间接耦接。

实施例的三维空间物体被呈现在耦接至处理器的显示设备上。

实施例的设备包括通过将输入设备的多个输入模式映射至三维空间 物体的多个物体平移来控制三维空间物体的移动。

实施例的映射包括多个输入模式与多个物体平移之间的直接映射。

实施例的映射包括多个输入模式与多个物体平移之间的间接映射。

实施例的映射包括将多个输入模式的位置偏移与三维空间物体的物 体平移的位置偏移相关联。

实施例的映射包括将输入设备的位置偏移与三维空间物体的物体平 移的平移速度相关联。

实施例的设备包括通过将输入设备的线性姿势映射至三维空间物体 的线性平移来控制三维空间物体的移动。

实施例的设备包括通过将输入设备的旋转姿势映射至三维空间物体 的旋转平移来控制三维空间物体的移动。

实施例的设备包括通过将输入设备的线性姿势映射至三维空间物体 的旋转平移来控制三维空间物体的移动。

实施例的设备包括通过将输入设备的旋转姿势映射至三维空间物体 的线性平移来控制三维空间物体的移动。

实施例的检测包括检测输入设备的推断位置与虚拟空间相交的时间, 其中,虚拟空间包括在耦接至姿势控制系统的显示设备上描画的空间。

在此描述的实施例包括一种输入设备,该输入设备包括耦接至检测器 并且容纳在具有手持形状因子的壳中的处理器。实施例的检测器检测壳当 前操作的取向和壳的位置中的至少一个并且将壳当前操作的取向和壳的 位置中的至少一个翻译成输入信号。实施例的检测器通过使用在线圈中感 应出的信号来检测该取向和位置中的至少一个。实施例的输入设备包括耦 接至处理器的发射机。实施例的发射机将输入信号传达给姿势控制系统。 实施例的输入信号自动控制姿势控制系统的多个输入模式并且控制耦接 至姿势控制系统的三维空间物体的平移和旋转。

在此描述的实施例包括处理器,处理器耦接至检测器并且容纳在具有 手持形状因子的壳中,其中,检测器检测壳当前操作的取向和壳的位置中 的至少一个并且将壳当前操作的取向和壳的位置中的至少一个翻译成输 入信号,其中,检测器通过使用线圈中感应出的信号来检测该取向和位置 中的至少一个;以及发射机,发射机耦接至处理器,其中,发射机将输入 信号传达给姿势控制系统,其中,输入信号自动控制姿势控制系统的多个 输入模式并且控制耦接至姿势控制系统的三维空间物体的平移和旋转。

在此描述的实施例包括一种输入设备,该输入设备包括包括有处理器 的手持壳。实施例的处理器耦接至检测器,检测器检测输入设备当前操作 的取向以及输入设备的多个取向之间的转换,并且实施例的检测器将输入 设备当前操作的取向以及输入设备的多个取向之间的转换翻译成输入信 号。实施例的输入信号自动控制姿势控制系统的多个输入模式并且控制与 姿势控制系统耦接的三维空间物体。实施例的输入信号通过三个平移自由 度和三个旋转自由度控制三维空间物体。

在此描述的实施例包括包括有处理器的手持壳,其中,处理器耦接至 检测器,检测器检测输入设备当前操作的取向以及输入设备的多个取向之 间的转换,并且检测器将输入设备当前操作的取向以及输入设备的多个方 向之间的转换翻译成输入信号,其中,输入信号自动控制姿势控制系统的 多个输入模式并且控制与姿势控制系统耦接的三维空间物体,其中,输入 信号通过三个平移自由度和三个旋转自由度控制三维空间物体。

在此描述的实施例包括一种方法,该方法包括检测并且翻译输入设备 当前操作的取向以及输入设备的多个取向之间的转换。实施例的输入设备 包括包括有处理器的手持壳。实施例的方法包括响应于该取向和转换自动 控制多个输入模式中的输入模式的选择。实施例的方法包括根据输入模式 控制耦接至姿势控制系统的三维空间物体。

在此描述的实施例包括一种方法,该方法包括:检测并且翻译输入设 备当前操作的取向以及输入设备的多个取向之间的转换,其中,输入设备 包括包括有处理器的手持壳;响应于该取向和转换自动控制多个输入模式 中的输入模式的选择;以及根据输入模式控制耦接至姿势控制系统的三维 空间物体。

实施例的取向的检测包括检测输入设备在时间和空间中的点处的瞬 时状态的绝对三维空间位置。

实施例的转换是围绕输入设备的轴线的旋转转换。

实施例的转换是围绕输入设备的多条轴线的旋转转换。

实施例的方法包括在转换期间向输入模式的选择施加滞后。

实施例的检测包括实时检测瞬时取向。

实施例的翻译包括将输入设备的原始跟踪数据翻译成空间取向的六 个度。

实施例的检测包括实时检测输入设备的瞬时位置。

实施例的翻译包括将输入设备的原始跟踪数据翻译成空间位置的六 个度。

实施例的方法包括至少一个输入传感器,其中,传感器被定位在输入 设备上。

实施例的方法包括检测输入设备的输入传感器的原始输入传感器位 置数据并且将输入设备的输入传感器的原始输入传感器位置数据翻译成 输入传感器状态。

实施例的方法包括响应于输入传感器状态控制多个输入模式。

实施例的检测在输入设备上进行。

实施例的检测远离输入设备进行。

实施例的检测在输入设备上进行并且远离输入设备进行。

实施例的输入设备是手持输入设备。

实施例的检测包括检测输入设备在空间和时间中的点处的瞬时状态 的绝对三维空间位置。

实施例的多个输入模式包括直接操纵模式,在直接操纵模式中,瞬时 状态用于耦接至姿势控制系统的部件的应用元件的直接操纵。

实施例的多个输入模式包括元操纵模式,在元操纵模式中,瞬时状态 用于耦接至姿势控制系统的部件的一组应用元件的直接操纵。

实施例的多个输入模式包括三维操纵模式,在三维操纵模式中,瞬时 状态用于耦接至姿势控制系统的部件的应用元件的三维操纵。

实施例的方法包括经由姿势控制系统控制耦接至姿势控制系统的三 维空间物体。

实施例的方法包括通过三个平移自由度和三个旋转自由度控制三维 空间物体。

实施例的控制包括三维空间物体与输入设备的运动之间的直接耦接。

实施例的控制包括三维空间物体与输入设备的运动之间的间接耦接。

实施例的方法包括将三维空间物体呈现在显示设备上。

实施例的方法包括通过将输入设备的多个输入模式映射至三维空间 物体的多个物体平移来控制三维空间物体的移动。

实施例的映射包括多个输入模式与多个物体平移之间的直接映射。

实施例的映射包括多个输入模式与多个物体平移之间的间接映射。

实施例的映射包括将多个输入模式的位置偏移与三维空间物体的物 体平移的位置偏移相关联。

实施例的映射包括将输入设备的位置偏移与三维空间物体的物体平 移的平移速度相关联。

实施例的方法包括通过将输入设备的线性姿势映射至三维空间物体 的线性平移来控制三维空间物体的移动。

实施例的方法包括通过将输入设备的旋转姿势映射至三维空间物体 的旋转平移来控制三维空间物体的移动。

实施例的方法包括通过将输入设备的线性姿势映射至三维空间物体 的旋转平移来控制三维空间物体的移动。

实施例的方法包括通过将输入设备的旋转姿势映射至三维空间物体 的线性平移来控制三维空间物体的移动。

实施例的检测包括检测输入设备的推断位置与虚拟空间相交的时间, 其中,虚拟空间包括在耦接至姿势控制系统的显示设备上描画的空间。

实施例的检测包括输入设备的事件,其中,事件与输入设备的三维空 间位置和三维空间取向中的至少一个对应,其中,事件与第一类型的应用 对应。

实施例的方法包括生成数据序列,数据序列包括指定事件的输入设备 事件数据以及事件的状态信息,其中,输入设备事件数据和状态信息是具 有与姿势控制系统的第一应用对应的类型的类型专用数据。

实施例的方法包括形成数据容器以包括数据序列,其中,数据容器具 有包括独立于应用的数据序列的表示的数据结构。

实施例的方法包括将数据容器放置在知识库中。

实施例的、在第二类型的应用下运行的第二事件搜索知识库并且识别 数据容器与第二事件之间的对应关系,其中,第二类型的应用通过使用数 据容器的数据序列的内容来执行与第二事件对应的操作。

实施例的检测使用电磁场(EMF)跟踪。

实施例的方法包括生成在输入设备的多个线圈中感应出信号的电磁 场。

实施例的方法包括通过使用远离输入设备的多个场发生器来生成电 磁场,其中,当输入设备接近感应出信号的场发生器时,每个场发生器在 输入设备的多个线圈中感应出信号。

实施例的检测包括通过使用在多个线圈中感应出的电磁场信号来检 测输入设备的取向。

实施例的检测包括通过使用在多个线圈中感应出的信号来检测输入 设备的位置。

实施例的方法包括将输入设备的取向传达给姿势控制系统。

实施例的方法包括将输入设备的位置传达给姿势控制系统。

实施例的方法包括将输入设备的至少一个输入传感器的状态传达给 姿势控制系统。

实施例的检测使用光学跟踪。

实施例的方法包括跟踪连接至输入设备的至少一个标签。

实施例的至少一个标签包括连接至输入设备的前部区域的多个标签。

实施例的跟踪包括动态检测至少一个标签的位置。

实施例的跟踪包括检测耦接至输入设备的区域的标签组的位置。

实施例的标签组中的每个标签包括图案,其中,标签组中的每个标签 的每个图案不同于多个标签中的任意剩余标签的任意图案。

实施例的每个标签包括第一图案和第二图案,其中,第一图案为标签 组中的任意标签共用;而第二图案在标签组中的至少两个标签之间是不同 的。

实施例的标签组在输入设备上形成多个图案。

实施例的至少一个标签包括红外(IR)发光二极管(LED)组和回 射点组。

实施例的方法包括经由输入设备的至少一个输入传感器控制红外发 光二极管组的状态。

实施例的每个红外发光二极管的状态与多个输入模式中的至少一个 输入模式对应。

实施例的至少一个标签包括连接至输入设备的至少一个跟踪点。

实施例的至少一个跟踪点包括至少一个红外(IR)发光二极管 (LED)。

实施例的至少一个跟踪点包括至少一个回射点。

实施例的至少一个跟踪点包括红外(IR)发光二极管(LED)和回 射点中的至少一个。

实施例的至少一个跟踪点包括红外发光二极管组和回射点组。

实施例的方法包括将输入设备的多个侧中的每个侧与多个取向中的 取向相关联。

实施例的方法包括限定多个侧中的每个侧与多个输入模式中的输入 模式之间的对应关系。

实施例的方法包括将多个侧中的每个侧分配给输入模式。

实施例的方法包括基于上下文将多个侧中的每个侧动态地分配给输 入模式。

实施例的方法包括基于该取向给侧的输入传感器动态地分配功能。

实施例的方法包括基于上下文给每个侧的输入传感器动态地分配功 能。

实施例的多个侧包括三个侧,其中,输入设备具有三角形横截面,包 括将多个侧中的每个侧与多个取向中的取向相关联。

实施例的方法包括限定多个侧中的每个侧与多个输入模式中的输入 模式之间的对应关系。

实施例的对应关系包括多个侧中的与第一输入模式对应的第一侧以 及多个侧中的与第二输入模式对应的第二侧,其中,包括将输入设备围绕 纵向轴线相对于第一侧的中心旋转大于120度的转换引起从第一输入模 式至第二输入模式的变化。

实施例的方法包括在转换期间向输入模式的选择施加滞后带。

实施例的滞后带是近似地等于和大于30度中的至少一个。

实施例的滞后带是可编程的。

在此描述的实施例包括一种方法,该方法包括根据经由检测器接收到 的姿势数据自动检测输入设备的姿势。实施例的姿势数据是输入设备在时 间和空间中的点处的瞬时状态的绝对三维空间取向。实施例的方法包括通 过使用仅姿势数据来识别姿势。实施例的方法包括将姿势解释成姿势信 号。实施例的方法包括响应于姿势信号自动控制输入设备的多个输入模式 中的输入模式的选择。

在此描述的实施例包括一种方法,该方法包括根据经由检测器接收到 的姿势数据自动检测输入设备的姿势,其中,姿势数据是输入设备在时间 和空间中的点处的瞬时状态的绝对三维空间取向,以及,通过使用仅姿势 数据来识别姿势;将姿势解释成姿势信号;以及响应于姿势信号自动控制 输入设备的多个输入模式中的输入模式的选择。

在此描述的实施例包括一种方法,该方法包括检测输入设备的取向, 输入设备具有与该取向对应的多个模式取向。实施例的多个模式取向与姿 势控制系统的多个输入模式对应。实施例的方法包括响应于该取向自动控 制多个输入模式中的输入模式的选择。实施例的方法包括根据输入模式控 制与姿势控制系统耦接的三维空间物体。

在此描述的实施例包括一种方法,该方法检测输入设备的取向,输入 设备具有与该取向对应的多个模式取向,其中,多个模式取向与姿势控制 系统的多个输入模式对应;响应于该取向自动控制多个输入模式中的输入 模式的选择;以及根据输入模式控制与姿势控制系统耦接的三维空间物 体。

在此描述的系统和方法包括处理系统和/或在处理系统下运行和/或与 处理系统相关联。如现有技术中所知的那样,处理系统包括一起操作的基 于处理器的设备或计算设备、或者处理系统的或处理设备的组成部分的任 何集合。例如,处理系统可以包括便携式计算机、在通信网络中操作的便 携式通信设备和/或网络服务器中的一个或更多个。便携式计算机可以是 从个人计算机、蜂窝电话、个人数字助理、便携式计算设备和便携式通信 设备当中选择的设备的任何数目和/或组合,但不限于此。处理系统可以 包括较大计算机系统之内的组成部分。

实施例的处理系统包括至少一个处理器和至少一个存储设备或子系 统。处理系统还可以包括或耦接到至少一个数据库。通常在此使用的术语 “处理器”指的是任何逻辑处理单元,诸如一个或更多个中央处理单元 (CPU)、数字信号处理器(DSP)、应用程序专用集成电路(ASIC)等 等。处理器和存储器可以整体集成到单个芯片上、分布在主系统的若干芯 片或组成部分当中、和/或由算法的某种组合来提供。在此描述的方法可 以在(一个或更多个)软件算法、程序、硬件、部件、电路中的一个或更 多个中以任何组合实现。

实施在此描述的系统和方法的系统部件可以位于一起或者位于分开 的位置中。因此,实施在此描述的系统和方法的系统部件可以是单个系统 的、多个系统的和/或地理上分开的系统的部件。这些部件还可以是单个 系统的、多个系统的和/或地理上分开的系统的子部件或子系统。这些部 件可以耦接到主系统的或与该主系统相耦接的系统的一个或更多个其他 部件。

通信路径耦接系统部件并包括用于在部件当中传达或传送文件的任 何介质。通信路径包括无线连接、有线连接和混合无线/有线连接。通信 路径还包括至网络的耦接或连接,所述网络包括局域网(LAN)、城域网 (MAN)、广域网(WAN)、专有网络、局间或尾端网络以及因特网。此 外,通信路径还包括可移动固定介质,如软盘、硬盘驱动器、CD-ROM 盘以及快闪RAM、通用串行总线(USB)连接、RS-232连接、电话线、 总线以及电子邮件消息。

除非上下文明确要求,否则贯穿说明书,单词“包括”等在与排除或 穷举的意义相反的包括的意义上阐释;即就是,在“包括但不限于”的意 义上阐释。使用单数或复数的单词也分别包括复数或单数。另外,单词“在 此”、“在下面”、“在上面”、“以下”以及类似含义的单词指的是作为整体 的本申请而不是本申请的任何特殊部分。当在引用两个或更多条目的列表 中使用单词“或者”时,该单词覆盖了所有的以下单词解释:列表中的任 何条目、列表中的所有条目以及列表中条目的任何组合。

处理环境的实施例的上述描述并不旨在穷举或将描述的系统和方法 限制到公开的精确形式。如本领域技术人员将会意识到的那样,虽然为了 示意的目的在此描述了处理环境的特定实施例和例子,各种等效修改在其 他系统和方法的范围之内都是可能的。在此提供的处理环境的教导可以适 用于其他处理系统和方法,而不仅仅是用于上面描述的系统和方法。

上述各种实施例的要素和行为可以进行组合以提供另外的实施例。考 虑到上述详细描述,可以对处理环境进行这些以及其他改变。

总体上,在所附权利要求中,不应将术语理解成将实施例限制在本说 明书和权利要求中所公开的具体实施例,而是应该将术语理解成包括根据 权利要求来操作的所有系统。因此,实施例并不被此处的公开限制,而是 实施例的范围完全要由权利要求来确定。

虽然以下以某些权利要求的形式呈现出实施例的某些方面,发明人预 期实施例的具有任何数目的权利要求形式的各个方面。因此,发明人在提 交了该申请后仍保留有添加附加的权利要求的权利,从而追求这种针对实 施例的其他方面的附加的权利要求。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号