CN102804206B - 包括数据表示、操作和交换的基于姿势的控制系统 - Google Patents

包括数据表示、操作和交换的基于姿势的控制系统 Download PDF

Info

Publication number
CN102804206B
CN102804206B CN201080030018.6A CN201080030018A CN102804206B CN 102804206 B CN102804206 B CN 102804206B CN 201080030018 A CN201080030018 A CN 201080030018A CN 102804206 B CN102804206 B CN 102804206B
Authority
CN
China
Prior art keywords
data
event
space
gesture
posture
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201080030018.6A
Other languages
English (en)
Other versions
CN102804206A (zh
Inventor
约翰·S·昂德科夫勒
克温德拉·赫尔特曼·克拉默
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oblong Industries Inc
Original Assignee
Oblong Industries Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/553,845 external-priority patent/US8531396B2/en
Priority claimed from US12/572,689 external-priority patent/US8866740B2/en
Application filed by Oblong Industries Inc filed Critical Oblong Industries Inc
Priority claimed from PCT/US2010/033613 external-priority patent/WO2010129599A1/en
Publication of CN102804206A publication Critical patent/CN102804206A/zh
Application granted granted Critical
Publication of CN102804206B publication Critical patent/CN102804206B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明描述了用于检测、表示和解译三维空间输入的系统和方法。在SOE的背景下,系统的实施例对来自多个空间跟踪数据源的低等级数据进行处理、而且对这些在语义上不相关的时空数据进行分析、而且根据动态地可配置的内隐的和外显的姿势描述来生成高等级的姿势事件。所产生的事件适于由交互系统消费,并且实施例提供了一个或更多个机制用于对将事件分配到这些消费者进行控制和影响。实施例还提供给其事件的消费者以用于在任意空间的参照系和语义上的参照系之间变换姿势事件的设施。

Description

包括数据表示、操作和交换的基于姿势的控制系统
相关申请
本申请要求2009年5月4日提交的第61/175,374号美国(US)专利申请的优先权。
本申请是2009年10月2日提交的第12/572,689号US专利申请的部分继续申请。
本申请是2008年4月24日提交的第12/109,263号US专利申请的部分继续申请。
本申请是2009年9月3日提交的第12/553,845号US专利申请的部分继续申请。
技术领域
描述了与基于姿势的控制系统有关的实施例,该基于姿势的控制系统包括有在计算处理之内或者在计算处理之间的数据表示、操作和交换。
背景技术
传统的编程环境不完全支持交叉网络运行和/或大量的计算处理之间灵活地共享数据。例如,传统的面向用户的计算平台提供了用于在多个处理之间传输事件数据的设施。但是,这些传统的机制全部都遭受到难以建构起多处理和多机制应用的缺点的制约。例如,传统的事件框架是强类型的,这使得这些事件框架是不灵活的并且形成了与日益流行的动态应用程序的设施的失配。传统的框架还被配置成仅支持点对点的数据传送,这使协调多于少数几个截然不同的处理的活动变得困难或者是不可能的。传统的框架还强烈地依赖于特定的本地存储器内的数据结构,这使得传统的框架不适合在盘(on-disk)存储或者跨越网络的传输。
通过引用的合并
在本说明书中提及的每项专利、专利申请和/或出版物都以其全部内容通过引用合并在本文中到以下程度:好像每项单独的专利、专利申请和/或出版物都被具体且单独地指示出是通过引用被合并的一样。
附图说明
图1是根据实施例的用于检测、表示和解译三维空间输入的系统的框图。
图2是根据实施例的用于检测、表示和解译三维空间输入的系统的以处理为中心的框图。
图3是根据实施例的用于检测、表示和解译三维空间输入的系统的可替换框图。
图4是根据实施例的姿势I/O的框图。
图5是根据实施例的姿势I/O的数据漏斗。
图6是根据实施例的姿势I/O的姿势引擎。
图7是根据实施例的分配器的匿名异步知识库分配机制的框图。
图8是根据实施例的分配器的定向接收分配机制的框图。
图9是根据实施例的空间连续输入系统的框图。
图10是根据实施例的姿势控制系统的框图。
图11是根据实施例的标记标签的图。
图12是根据实施例的姿势词汇中的姿态的图。
图13是根据实施例的姿势词汇中的取向的图。
图14是根据实施例的姿势词汇中的两手组合的图。
图15是根据实施例的姿势词汇中的取向混合的图。
图16是根据实施例的系统操作的流程图。
图17是根据实施例的指令的示例。
图18是根据实施例的包括使用色拉(slaw)、蛋白质(protein)和池(pool)进行数据表示的处理环境的框图。
图19是根据实施例的蛋白质的框图。
图20是根据实施例的记述(descrip)的框图。
图21是根据实施例的摄取(ingest)的框图。
图22是根据实施例的色拉的框图。
图23A是根据实施例的在池中的蛋白质的框图。
图23B示出了根据实施例的色拉头部格式。
图23C是根据实施例的使用蛋白质的流程图。
图23D是根据实施例的构造或生成蛋白质的流程图。
图24是根据实施例的包括使用色拉、蛋白质和池进行数据交换的处理环境的框图。
图25是根据实施例的下述处理环境的框图,该处理环境包括多个设备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等离子体构造(即池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。
图26是根据可替换实施例的下述处理环境的框图,该处理环境包括多个设备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等离子体构造(即池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。
图27是根据另一个可替换实施例的下述处理环境的框图,该处理环境包括多个输入设备,所述多个输入设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由输入设备所生成的事件。
图28是根据又一个可替换实施例的下述处理环境的框图,该处理环境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。
图29是根据再一个可替换实施例的下述处理环境的框图,该处理环境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允许对运行的程序进行状态检查、可视化和调试。
图30是根据另外的可替换实施例的下述处理环境的框图,该处理环境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(即池、蛋白质和色拉)用于允许影响或控制该进程池中产生和放置的状态信息的特性。
具体实施方式
描述了用于对来自多个空间跟踪数据源的低等级数据进行处理的系统和方法。这些方法和系统的实施例是在空间操作环境(SOE)的背景下提供的,以下将进行详细描述。包括姿势控制系统或者基于姿势的控制系统的SOE可以可替换地被称为空间用户接口(SUI)或者空间接口(SI)。
图1是根据实施例的用于检测、表示和解译三维空间输入的系统10的框图。在SOE 5的背景下,系统10的实施例对来自多个空间跟踪数据源的低等级数据1进行处理、而且对这些在语义上不相关的时空数据进行分析、而且根据一组动态地可配置的内隐的和外显的姿势描述2来生成高等级的姿势事件3。所产生的事件3适于由交互系统(未示出)消费,而实施例提供了一个或更多个机制4用于控制和影响将事件分配到这些消费者。实施例还提供给其事件3的消费者以用于在任意空间的参照系和语义上的参照系之间变换姿势事件的设施。
在这里,实施例的中心是断言姿势的概念域是空间的和语义上的连续体6。在连续体6的一端的是完全不受约束的自由空间姿势输入6A,其中,一个或更多个手配合以通过三维空间描述曲线轨迹,以及其中,同时地,聚集的手指姿态随着时间而发展。在另一端是表面接触输入6D,其中,一个或更多个手指被“约束”成依赖一维或二维的流形(文献上通常将这种形式称为“基于触摸的输入”)。在这些极端情况之间的是可以被称为“盘旋(hover)输入”的触摸确立6C;在这里,手指仍然是接近流形的但是并不与流形接触;接触需求的这种松弛允许展开另外的自由度。更一般地说,有用的是提及“接近输入”6B,其中,姿势发生在已定义的接近一个或更多个表面的范围内或者局限于特定的体积。每种姿势“种类”显然会逐渐变为下一个姿势“种类”——从自由空间6A到接近的6B、到盘旋6C、到触摸6D——此外,每种这样的种类适当地、形式上地以及几何上地包含下一种类。还会理解的是“姿势输入”的这种连续体6决不局限于人的手:加了标签的或者以其他方式可跟踪的物理对象也是输入连续体6中的有效参与者。
在这里,实施例对可以考虑的多个点沿着输入连续体6的两种方式加以外显的区别。从感测的优势来讲,不同的输入机制看上去订阅了连续体6的不同区域:例如,高保真度运动捕捉器械(rig)看起来提供了六个自由度的自由空间输入6A,而电场感测装置看起来生成了盘旋类型的输入6C,而通常的电容性感测单元看起来报告了触摸输入6D。从事件消费的优势,由此从语义学的优势来讲,应该很少对事件的低等级起源感兴趣;而事实上,通常非常有用的是能够理解被译成不同表示的同一事件(例如,被译成自由空间姿势以及被译成盘旋姿势)。然而,现有技术倾向于合并两种优势。即就是,例如,其他的系统通常将触摸屏表面认为是必要的而仅生成二维的触摸事件。
相反地,在此描述的实施例的一个优点是维持两种优势之间的区别。图2是根据实施例的用于检测、表示和解译三维空间输入的系统10的以处理为中心的框图。实施例的第一阶段11对来自源的完全不同的集合的低水平输入进行核对而将以不同方式产生的低水平事件适配成统一表示的时空数据的单个流。第二阶段12将所适配的低水平数据解析成语义上有意义的姿势事件而且以中立的但是完全连贯的形式来表示这些姿势事件。第三阶段13将所得到的中立事件分配给消费者而且向消费者提供可以通过其将任何事件变换成局域最优的语义上的形式的设施。如此,例如实施例使用逐手指的高保真度六个自由度的输入以产生相对于工作台表面的触摸事件;在该情况下,表面自身是非仪表化的,而是可以数学地表示的,例如表示成几何结构,以使得在缺少专用触摸感测硬件的情况下仍然可以经由几何相交而通过计算推演出触摸。简而言之,实施例的形式体系使得能够对多样化的空间输入进行完全一般的应用。
以下对实施例进行描述,该描述包括(1)实施例的更大的背景:实施例起到关键作用的系统的典型生态;(2)包含实施例的三个管道状部件的概要;(3)对三个部件的详细描述,每个都具有偶然的例证性示例;(4)管道的第二部件的完全的实施方式;以及(5)示出由实施例实现的不同交互系统的四个场景。
在以下的描述中,介绍了众多具体的细节以提供对在此描述的实施例的彻底理解在此描述的实施例的描述,并且这些细节使得能够实现对在此描述的实施例的描述。然而,本领域技术人员会认识到,这些实施例可以在没有具体细节中的一个或更多个细节的情况下或者在具有其他部件、系统等的情况下实行。在其他情况下,公知的结构或操作未被示出或者未被详细描述,以避免模糊了所公开的实施例的方面。
以下的术语在这里使用时意在以下通常的意义。这里使用的术语“处理”意味着可分离的程序运行背景。计算机架构和操作系统在处理实施方式的技术细节方面不同。在此描述的机制被配置成在宽范围的处理实施方式上工作并且被配置成对混合应用程序设计或者利用尽可能多的可用计算资源的配置有利。
这里使用的术语“设备”意味着运行一个或更多个程序或算法的任何基于处理器的设备、运行在一个或更多个程序或算法下的任何基于处理器的设备、和/或耦接或连接到运行一个或更多个程序或算法和/或运行在一个或更多个程序或算法下的任何设备。这里使用的术语“事件”意味着与运行或执行程序或算法、基于处理器的设备和/或耦接或连接到基于处理器的设备的设备相关联的任何事件(例如,事件可以包括但不限于输入、输出、控制、状态、状态变化、动作、数据(而不管数据的格式或者与数据相关联的处理的阶段)等)。
如上所述的,系统和方法的实施例是在空间操作环境(SOE)的背景下提供的。SOE是完整的应用程序开发和执行平台,并且在某些方面与操作系统相似。然而,SOE特许了真实世界三维几何和计算机与人类操作员之间的高效、高带宽交互,而由此实施了复杂的接口方案。而SOE又以新的低水平以及中等水平的系统基础结构代替了许多传统的OS服务和体系结构,对于这种丰富的、有细微差别的接口的要求来说传统的OS服务器和体系结构是不适当的。
图3是根据实施例的用于检测、表示和解译三维空间输入的系统20的可替换框图。系统20在SOE 5的上下文中工作。SOE5的主要组成是姿势I/O 14、基于网络的数据表示、传输和互换15、以及空间适配的显示网格16。以下将详细地描述SOE 5的组成中的每一个。
在描述实施例的姿势I/O 14时,人手的组合蕴涵——人手的主体位置和取向连同由人手手指的弯曲的聚集形成的“姿态”——和由大多数人所享受的精确运动神经控制(motor control)一起使得基于手的姿势成为SOE输入系统中的至关重要的外部部件。SOE 5由此以高保真度贯穿三维空间体积地跟踪手。其她的从属对象(例如用于多路传输(channeling)或操纵数字内容的物理的并且通常可抓取的“工具”)也可以被跟踪。姿势交互最通常地相对于在视觉域、听觉域和触觉阈工作的二维和三维显示器上所描绘的动态实体来进行。激活反馈“图示符”同时使用SOE的显示器,从而(a)报告操作员系统即时的和正在进行的对姿势输入的解译;(b)基于系统状态以及局域姿势历史,列举可能的姿势的“接下来的步骤”;以及(c)提供对姿势序列的临近的操纵结果的概略的预览。
结构上,SOE的姿势I/O 14系统的输入部分采用大约线性流水线形式。在最早的阶段,流水线进行动作以来处理、关联和接合来自可能的多个源的空间跟踪信息,其中,源包括任何数目、类型、和/或数据流/源SY(其中Y是任何数目1,2,......)的组合;而之后收集各单独的元素以成为已知配置和能够期望的聚集(例如开始被认为是单独的手指被收集成整个手的表示)。流水线的第二阶段是姿势引擎,该姿势引擎分析第一阶段的结果并且企图检测姿势发生和消除姿势发生的歧义。在第三阶段中,媒体水平表示的“事件”被传到事件消费者,该事件消费者可以使用SOE设施以用于将这些通用的事件变换成与局域环境几何相关的形式。
实施例的基于网络的数据表示、传输和互换15包括被称为“等离子体”的系统,该系统包括子系统“色拉”、“蛋白质”以及“池”,如以下详细描述的。色拉是自描述的数据结构,其包括原子形式——字符串和数值类型的扩张集合,包括支持以下元素:复数、矢量、Clifford(或者“多矢量”)和矩阵实体以及任意地可嵌套的聚集形式——“对”并矢量(dyads)、异类列表以及唯一键(unique-keyed)关联列表。蛋白质是多个色拉的规定结构封装:被称为“记述”的、色拉的任意长度的级联(通常,字符串)提供了对蛋白质的便利地可搜索的描述;而被称为“摄取”的、键值对并矢量的任意长度的级联形成了蛋白质的数据有效载荷。在实施例中,蛋白质自身是特定种类的色拉。池是蛋白质的持久线性顺序集合;任意许多处理可以并行地连接到给定的池。每个被连接的处理可以将蛋白质存放在池中,从池中检索蛋白质,或者二者皆可。低水平的池机制确保本地计算机上的池事物以及(跨网络)远程进行的池事物从程序员的和运行的代码的角度上讲都是不能辨别的。对由远距离处理存放的蛋白质的检索自动地使所有被封装的色拉适配,以使得硬件专用的以及体系结构专用的数据格式差异(例如,端部(Endianess))无形中被分辨。池在概念上具有无限的容量和持续时间,以使得处理在任何时间都可以穿过池的历史向后“回绕”,访问越来越老的蛋白质。等离子体的实施方式是极端最优化的;池中介的蛋白质由此为接口事件、系统事件、进程间发送消息、高密度媒体流、结构化数据交换等形成了高度理想的表示机制。此外,等离子体系统的提供实现并鼓励了将复杂“应用程序”构造成通过蛋白质互换来协同的独立的模块化进程的生态。
如上所述的,实施例的SOE 5包括空间上适配的显示网格16。SOE 5的中心前提是计算进程的外部表现(视觉、听觉和触觉显示,进程通过它们表现进程的状态并且表示信息)必须使其自身在逻辑上与其所嵌入的真实世界空间适配。由此,SOE5在每个编程水平都提供了用于描述和操纵三维几何结构的基本构造的系统。
几何形状总是用“真实世界”坐标系描述,这样的坐标特意地适于对SOE 5所处的室或空间的描述。如此,例如,由SOE 5控制的任何二维视觉显示器(比方说监测器)不仅维持了对其像素分辨率的描述,还维持了对其在室中的物理尺寸、定位以及取向的描述。这意味着,显示器上的各个像素都具有真实世界定位和范围;以及类似地,显示在设备上的图形构造拥有可信的物理(与室适配的)几何形状。这种基于几何形状的表示方案具有直接的、极大的重要性,这是因为SOE的输入系统采用了同样的几何形状和坐标系。因此,SOE 5可以提供协同定位的输入和输出。当操作员从一定距离处指向显示在屏幕上的图形对象时,系统能够逻辑地认为操作员和图形(以可知的几何关系)呈现在同一三维空间连续体中。因此,确定正指向的对象的相交计算在数学上是微不足道的,而几何对象则可以立即使自己对操作员的操纵作出反应或服从。所得到的空间因果关系又导致了操作员对图形与操作员一起在室中的感知和认知确信;而在相关的感觉中,这样的确信是准确的。由此,由当前起支配作用的人/机接口所引起的期望和模态经历了有价值的逆转,而获得了“直接空间操纵”的范例。
SOE5提供了附加的设施用于使不相交的空间几何地相关(例如用使跨越特许的视觉显示器的两个或更多个分离的交互地址“接合”的电视协作系统)以及用于转换几何构造以允许在不同的局域参照系中的解译。最终,SOE 5提供了针对“简化了的几何形状”的清晰可见的表示,其中,“简化了的几何形状”即不能经由连接的空间(即Euclidean,Minkowski,anti de Sitter等)形式被有意义地理解的数据之间的逻辑关系;此处,SOE提供了基本的拓扑表现。
此处所描述的实施例形成了SEO 5的姿势I/O系统14的输入侧的主要部分。实施例可以被视为与下述流水线类似,该流水线将非常低水平(语义上:“信号水平”)的输入变换成更加结构化的、符号的以及上下文专用的输入以由比方说更高水平的SOE组成来消费。然而,这并不是说实施例以非结构化的、纯文字的或者上下文穷尽的模式来工作:流水线的许多关键效能得自于其对属于SOE的组成系统中的其他的高水平的几何和计算的上下文的无障碍访问。
图4是根据实施例的姿势I/O 14的框图。概括地讲,姿势I/O 14的最早阶段20概念“数据漏斗”20对来自可能的多个源的空间跟踪信息进行处理、关联和接合。例如,实施例的流水线是其一部分的SOE 5会同时协同地使用(a)服务不同的体积的几个运动跟踪设备、(b)在各个工作站附近的受范围约束的机器视觉跟踪、以及(c)与大的投影台相关联的电场分析接近度和触摸感测。漏斗20根据任何数目、类型、和/或组合的数据流/源SY(其中Y是任何数目1,2,......)用适配的坐标表示(相对于全局室空间)来描绘低水平的空间事件。紧接其后,漏斗20在适当的地方生成表示既是文字的几何特性又是语义特性的逻辑聚集(在该阶段,各个手指分别加了标签的手使得出现了连同手指姿态的紧凑标记的作为高精度的总位置和取向的描述)。
这些元素事件被传递到输入系统的第二阶段,“姿势引擎”21,其中,“姿势引擎”21的工作是检测特定时空环境——“姿势”——并消除其歧义,该特定时空环境对于单独的进程、激活的计算对象、系统范围的通知构造等会是感兴趣的。姿势引擎21的活动由一组时空规则——对特定姿势或者多类姿势的描述——指导,该时空规则可以被静态地或者动态地配置。引擎产生了使被检测的姿势环境连贯的详细的但是中立地描述的数据束(“原事件”)。
最后,姿势I/O 14的第三阶段22将由姿势引擎发出的原事件分配到如同会与该引擎编程接触一样的事件消费机制。每个事件消费者能够访问由第三阶段所提供的设施,该设施可以“以局域术语”重新描绘原事件束:即可以相对于特定的局域几何形状以空间语义的形式重新表达事件。例如,食指和无名指形成“胜利符号”V的推向屏幕的手可以被描绘成在精确的三维室位置处的单个姿态配置;或者被描绘为相对于屏幕的总体手接近的状态;或者被描绘为一系列接近触摸事件,其中,每根手指分别被考虑。
图5是根据实施例的姿势I/O 14的数据漏斗20。数据漏斗20(此处也被称为输入漏斗20)将低水平的空间输入数据1(从语义的角度,“信号级”)变换成要被馈送到流水线的第二阶段(姿势引擎21)的姿势引擎就绪(GER)数据27的时间分辨流。由数据漏斗运行的变换包括:采集、时间对准23和空间接合24低水平的输入数据以形成单个合成(“适配”)的数据流。然后,漏斗然后进行识别适配数据的特权子集以及将每个子集装配25成降低了熵的语义聚集。
漏斗接收一个或更多个时空数据流SY(其中Y是任何数目1,2,......)作为输入。数据流SY可以固有地表示不同自由度计数:光学运动跟踪系统通常可以通过(三个平移的以及三个旋转的)所有六个自由度以高保真度分辨被适当地加了标签的手指;基于渡越时间的相机基于所使用的分析方法提供了关于手的指部(digit)的三自由度数据、五自由度数据或者六自由度数据;电场感测器械可以提供描述了手的总体(overall mass)的位置的三自由度信息,其中,分辨率级差地取决于位置;触摸屏可以发送受到物理接触约束的二维跟踪信息等。数据流SY可以以级差的速率提供单独的时空事件。数据流SY可以被中断,例如当被跟踪的手或者其他对象进入或者离开由感测机制所加工的体积时。
在可用的情况下,数据流SY包括对被表示的空间和时间数目的精确度或者可能的误差范围的估计。例如,来自电场感测器械的数据流可以用对空间误差的评估来注释每个事件,空间误差对于这样的设备不仅沿着局域x轴和y轴(“平面”)与沿着局域z轴(“距离”)是不同的,还在总数目上也取决于真实空间位置而有差别。这种精确的注释可以是“接收的”数据流的元素(如果设备自身或者设备驱动器能够提供该元素)或者可以通过漏斗的早期处理而推演出来(在维持了发起设备的操作的模态的情况下)。
漏斗20的部件在时间上使多个数据流SY对准23。漏斗20可以被配置成以几种截然不同的方式完成这样的对准。对准方案23包括但不限于以下的:(1)在来自一个或更多个数据流的每个“真实”瞬时事件实例处插值提供来自所有其他数据流的“虚拟的”时空时间事件;(2)在数据速率是最高的流中的每个瞬时事件实例处插值提供了来自其他流中的每个的虚拟事件,其他流的“真实”事件被抛弃;(3)如之前所述的那样,但是外显指定的流被用作为所有其他流向其对准的“滴答响节拍器(tickingmetronome)”;(4)如之前所述的那样,但是外部地施加的节拍器滴答响不与任何流相配,以使得所有的流被插值。时间对准23的结果是下述数据流:对于该数据流,在每个时间步长处,发出表示事件的可能的多重性,每时间步长的聚集提供了对同一“客观的”(真实世界)事件的可能的可替换解译。在可能的情况下,每个所得到的对准后事件包括具有其独特的身份的表示(例如,当适当地贴标签或者可靠地推演时,特定的手指或者对象)。这种身份信息对于随后的处理(例如当必须从同一真实世界事件的可替换表示中合成单个空间事件时)是有用的。在时间对准23的操作改变了部件自由度的估计误差或精确度范围时,事件被据此加了标签。
实施例的漏斗20空间地接合24来自多个数据流的事件。空间接合24通常但并不总预示着被加以身份标签的事件的预先时间对准。空间接合24通常需要将每个贡献事件提高成可能的最高水平的描述。在这样的描述提高使部件自由度的估计误差或精确度范围改变的情况下,事件被据此加以标签。对于其这种提高是不可能的自由度被外显地加以标签。在一些情况下,这种情况功能地或者外显地对应于无限的误差范围。描述提高可以仅使得参加的事件被重新描绘成适配的空间参照系(在数据流初始地表示局域框架中的空间事件的情况下是必须的)。这又需要漏斗维持或者具有对每个局域框架相对于通用(“室”)框架的关系的概念的访问。由此,例如,使用表面的已知的物理几何结构将来自接触感测表面的、初始以表面的局域(x',y')框架表示的触摸事件变换成室的(x,y,z)框架;在该情况下将三个旋转自由度加标签为不可知的,这是因为它们不能从设备的数据流中推演出来。可替换地,也可以使用对描述提高的更加复杂的方法,包括依赖推论和推演技术的方法。
随后,空间接合24针对同一真实世界事件的可替换描述的每个聚集产生单个的“合成”事件(作为真实世界事件的最准确的表示)。合成方法包括但不限于:(1)从多个输入数据流中选择单个描述并抛弃其余的——合成事件是“胜者全拿”;(2)针对每个提高的描述的自由度,从单个描述中选择对应的组成数据并抛弃其余的——合成事件是依部件的“胜者全拿”;(3)跨越所有描述执行每个自由度部件的加权平均,权重由可配置且上下文灵敏的函数所确定;(4)置换(2)和(3)。对合成的方法进行选择所依据的规则可以内隐地或者外显地固定,或者可以是静态或动态配置的,以响应上下文。
在示例中,体积由同样的传感器的集合“处理”,同样的传感器中的每一个都具有有限的范围,同样的传感器中的每个的精确度都随着接近其感测范围的边沿而降低,以及同样的传感器在空间上设置成使得它们的感测范围重叠。当所关心的事件正好在单个传感器的高精度范围之内时,空间接合会选择单个描述,但是当事件发生在第一传感器的范围界限附近时,则空间接合会执行相邻传感器流之间的加权平均。权重响应于事件与各个感测边界的被估计的接近程度而在空间上不同。
在第二示例中,事件流表示高保真度光学运动跟踪装置以及接触表面。空间接合通常支持运动跟踪装置,但是随着跟踪接近触摸表面,将调整函数施加到光学位置数据,以使得距触摸表面的距离渐进地减小。只有当触摸表面感测到确定的接触时才允许接合事件的位置与表面几何且语义地相配的。
在最后的示例中,用显示器做背面的表面配备有高精度的电场感测装置,而具有立体深度处理的一对相机在表面上被训练。(与视觉系统相比)场感测器械为显示器附近的手指提供了更好地被分辨的位置数据,但是场感测的检测取向的能力是可忽略的,从而空间接合将来自一个传感器的三个位置组成与其他传感器的三个取向组成合并,从而导致了在所有六个自由度上都展示了良好的分辨能力。
漏斗的外显可配置的或者上下文可触发的方面是允许空间接合24先于时间对准23;这可以连续地发生或者间歇地发生。例如,漏斗20可以被配置成使得:输入流SY相对于最高数据速率流是普通地对准的,而当检测到异常事件时(比方说手指跨越了接近阈),通过将所有其他流内插到检测的时间来生成“切分的(syncopated)”的聚集事件。
实施例的漏斗还执行了语义聚集25,其包括将从前述的漏斗操作中得到的相关事件收集成语义聚集。可以静态或动态地配置这种聚集收集25发生的方式或式样。在该阶段,可以配置漏斗而产生的聚集通常然而并不总是:(1)外显地特定的,以使得聚集的识别和装配是服从不复杂的推论的直接且因果的问题;以及(2)具有通用的“下游”实用性的。极其深入的示例进行了对人手装配的识别:在各个手指被加以标签以使得可靠地报告每个手指的六个自由度几何结构以及身份的输入基础结构中,手的组成元素可以是先验指定的。然后,形成更高水平的语义手聚集的行动就仅是从适配的输入流中选择出下述标签的问题,该标签的身份与已知包括手的静态身份匹配。
注意到即使在该示例中——在该示例中只要在输出流中报告了组成标签就保证了组装聚集的可能性——输出流会可能不仅包括所得到的高水平表示还可能包括低水平的标签信息,聚集已经根据该低水平的标签信息而被装配。由此提供给事件信息的后来的用户以在需要时以及根据需要访问低水平数据的可能性(参见紧接的下文)。
此外,在以上描述的一个或更多个操作期间,漏斗20可以执行元信息加标签26。当元信息加标签用在以上所述的任何操作处或者用作为作为该操作的一部分时,所得到的事件带有与事件的构造有关的信息,包括得出该事件的原事件的完整的或者删节的列表、导致特定的合成方法的决策途径等。后来的消费者然后会选择遍历该原信息,从而重新解译或者进一步分析这些合成事件。
图6是根据实施例的姿势I/O 14的姿势引擎21。姿势引擎21将表示空间和几何出现的低水平的语义上的一群原始数据(“姿势引擎就绪数据”或GER数据27)翻译成一个或更多个表象地分类的姿势元事件3。实施例的GER数据27包括但不限于以下:(1)单个手指的三维空间位置以及,可能地,取向;(2)整个手的“主体”三维空间位置以及取向,连同手的姿态的语义摄取——即手的手指的聚集弯曲;(3)惰性的非生物对象的三维空间位置以及取向;(4)其他的在解剖学上密切相关的结构的三维空间位置以及取向,举个实例,诸如操作员的头。
姿势引擎21参考可能的多个截然不同的姿势描述准则并且企图将各种空间GER数据27与这些准则相匹配。作为匹配练习的结果,会满足准则中的零个、一些或者所有准则;针对每个匹配,GER数据27中的零个或更多个会被牵连其中。姿势引擎21可以被配置成“排他地”处理GER数据27,以使得牵连在一个匹配中的数据随后不会参与使第二个匹配满足,或者姿势引擎21会改为允许数据参加入多个匹配中。响应于每个肯定的匹配,姿势引擎21准备零个或更多个“原事件”3:这些“原事件”3提供了依照所匹配的姿势准则的语义上下文解译的、匹配的低水平数据的摄取。原事件3被传递到流水线的第三阶段,如下所述的。
姿势引擎21可以包括逻辑上封闭的运行路径,在该路径中驻留固定且不变的一组姿势识别准则或者有限的一组可选且可配置的姿势识别准则(该选择和配置会从引擎的局域边界的外部实施)。但是,在实施例中,每个识别准则作为被称为“识别器”的、在逻辑上独立的单元而存在;识别器可以选自于库(未示出)并且可以独立于姿势引擎21被编写。在该实施例中,外部机构选择并配置一个或更多个识别器,然后使得每个识别器与姿势引擎21在数据结构上相关联。这可以在姿势引擎的启用之前进行一次,或者外部机构会在姿势引擎的激活运行时动态地添加28、移除29和/或修改或重新配置(未示出)识别器。还注意,实施例允许姿势引擎21——响应于一定的条件——自己添加28、移除29和/或修改或重新配置(未示出)与其相关联的识别器。识别器还可能移除29和/或重新配置自己,或者添加28、移除29或重新配置与同一姿势引擎21相关联的其他识别器。
GER数据体27在罕见的情况下可以在时间上是唯一的,以使得姿势引擎的活动仅进行一次,但是GER数据体27最通常的是时变的并且被周期地呈现给姿势引擎21。在后面的情况中,输入数据27最通常的是拥有不变的身份,以使得识别器可以将由在时间T_n的数据D_i所表示的几何信息与在时间T_n+1的数据D_j所表示的几何信息可知地相关联:D_i和D_j表示穿过空间移动(以及可能地变形)的同一真实世界对象。贯穿本说明的剩余部分,将会理解的是:“GER数据”指的是带有同一身份信息的这些时间顺序数据的正在进行的演变,即指的是同一真实世界对象。在实施例中,识别器维持内部状态,从而表示所关心的输入数据的时空轨迹的多个方面。
在一种情况下,识别器维持期望地“休眠状态”,直到一个或更多个输入数据27的几何的和时空的环境与识别器的特定“激活”准则相匹配为止,识别器随之变成“激活的”。只要输入数据27满足第二组“维持”准则(该组准则可以与激活准则相同也可以不同),识别器就维持是激活的。当输入数据27未能满足第二组准则时,识别器变成停用的。
对识别器的自然分类以及由此对可识别的姿势的自然分类出现自对以下的考虑:(1)激活和维持准则可以采用的不同形式,以及(2)原事件从姿势引擎发送的环境。
当姿势引擎21被配置成排他地处理GER数据27,通过一个识别器将数据包括在成功的初始匹配中禁止另一个识别器对该数据的使用。以这种方式,识别器可以“捕捉”一个或更多个GER数据27,而贯穿识别器是激活时的间隔,这些被捕捉的数据仍然保持持续不可用于由其她识别器进行考虑。
在实施例中,姿势引擎21会根据“首位度量”来对其相关联的识别器分等级。这样的度量可以在贯穿姿势引擎21的存在时是静态的;可以是由姿势引擎21外部的机构在离散的间隔处有意识地修改或替换的;或者可以随着姿势引擎21的执行自动地且动态地或离散或连续地发展。在所有这样的情况下,姿势引擎21按照由首位度量分等级所建议的顺序来给出对其多个识别器的考虑;在当姿势引擎21被如此配置并且附加地设置成排他地处理输入数据的情况下,更高等级的识别器由此能够“篡夺”之前由其他更低等级的识别器所捕捉的数据。在该事件中,其数据被篡夺的识别器会被通知并且给予返回到停用状态的机会,发送描述强制的状态变化可能所需的任何原事件。
为了说明的目的,以下将充分详细地连贯描述姿势引擎的实施方式及其识别器。
图7和图8示出了根据不同实施例的姿势I/O 14的分配器22。实施例的“分配器”22将由之前的流水线活动生成的原事件3传送到一个或更多个下一阶段的接收者。由此传送的原事件3的主要种类包括由姿势引擎检测到的姿势事件,但是分配器22可以被配置成另外传送没有参与检测和合成“良好形成的姿势”的那些低水平事件。事件接收者或者其她下游系统可用的分配器22的附加的设施允许所传输的原事件3被重解译成(变换成)特定的几何和语义的形式。
事件分配的机制是不同的,而分配器可以静态地或动态地涉及启用这些机制的任意集合。实施例的分配机制包括但不限于以下:匿名异步知识库;定向异步知识库;以及定向同步知识库。以下描述分配机制。
图7是根据实施例的分配器22的匿名异步知识库分配机制的框图。根据匿名异步知识库分配机制,分配器22运行其到一个或更多个知识库30的连接,该知识库可能具有到一些数目的审计员31的耦接或连接。分配器22将原事件3存放在这些知识库30中;原事件随后由感兴趣的审计员31检索。这样的知识库30可以存在与分配器22相同的运行空间中并且支持与审计员31的接近的或不相交的连接;或者可以作为分离的进程存在于同一硬件上并且支持经由中间进程通信协议与审计员31和与分配器22的连接;或者可以作为进程存在于远程的硬件上并且支持通过网络与分配器22和审计员31的连接;或者可以存在有从前述的那些置换的性质。这种分配模式共同之处是分配器22不需要知道审计员31的数目和性质。实施例通过提供蛋白质和池实施了这样的知识库,如以下详细描述的。
图8是根据实施例的分配器22的定向接收分配机制。当分配器22包括或运行定向异步接收分配机制时,分配器22维持了包括异步审计员33的列表的审计员列表32;审计员列表32的人数被静态地或者动态地控制。分配器22将每个所生成的原事件3的拷贝都传输到每个异步的审计员33,这样的传输以异步的模态进行,以使得没有必要从异步审计员33处接收确认。概念上,这种模态的异步消费类似于由Erlang编程语言提供的传递消息的“邮箱”通信。实施例通过提供互斥保护共享存储器方法实施这样的异步消费。
当分配器22包括或者运行定向同步接收分配机制时(继续参照图8),分配器22维持了包括同步审计员33的列表的审计员列表32;审计员列表32的人数被静态地或者动态地控制。分配器22将每个所生成的原事件3的拷贝都传送到每个同步的审计员33,这样的传输同步地进行,以使得由分配器的同步审计员33接收的事件在有限制的编程时间中是内隐地或者外显地被承认的。当消费者存在于与分配器22相同的执行空间中时,可以实现对这样的同步消费最简单的实施;然后,可以使用定向功能呼叫来完成对原事件3的传输。对于消费者与分配器进程分离的情况,可以采用进程间通信技术以实施同步传输。
与分配器的事件传输或者分配活动无关,并且参照图7和图8,分配器22包括事件变换器34并为事件变换器34产生可用的设施。任何数目的恳求者实体SE可以通过以上连贯的同步的和异步的手段将这样的事件变换请求传达到分配器22,而在恳求者实体SE自身也是审计员33的情况下,并不要求这样的事件变换请求采用与审计的通信手段相同的通信手段。提交的用于变换的事件可以是来源于分配器22(例如原事件3),或者可以表示在分配器的活动之外所合成或获得的时空数据。在前一种情况下,恳求者实体SE可以选择将“事件”重新传送到分配器22,以充分的文字细节传递事件,或者可以代替地传递对事件的参考——与事件相关联的唯一标识符——借助于该标识符可以由分配器22检索到事件。
恳求者实体SE可以请求简单的几何事件变换,在该变换中,构成事件的坐标系统受到仿射变换。这样的变换通常不仅导致事件的几何的数值表示的变化(即基于坐标的元素的变化)也导致了事件的语义内容的某些部分的变化。
如此,例如表示成以下的原事件E
E:[[DESCRIPS::event,:pointing,:manus,3,:evt-grp-qid,12831//INGESTS::griPe=>″^^||-:-x″,:pos=>v3(-200.0|+1000.0|+500.0),:aim=>v3(+0.35|+0.00|-0.94)...}]]
会经受绕着y轴的九十度旋转以及向下的平移(相当于下述坐标系中的几何表示:自原始坐标系统y旋转了负九十度并且向下平移)以产生:
E-->E′:[[DESCRIPS::event,:pointing,:manus,3,:evt-grp-qid,12831.1//INGESTS::gripe=>"^^||-:.-″,:pos=>v3(+500.0|+0.0|200.0),:aim=>v3(-0.94|+0.00|-0.35)...}]].
注意在这个情况下,作为对手的总体手指姿态的配置和聚集取向的语义摄取的GRIPE字符串(此处所描述的)也改变了:最后的两个指定基本取向的字符(从“-x”)变为“.-”。
由分配器22运行的更复杂的事件变换涉及对新的上下文中的原事件的几何的和语义的内容的一些组合的重新解译。同一上述原事件E——明显的“指向”姿势的示例,其中手的食指和中指伸出,拇指竖直设置,而无名指和小手指弯曲——可以在布置在手的正前方的接近显示器屏幕的局域几何上下文中被重新解译。
E-->{E1′,E2′}
E1′:[[DESCRIPS::event,:proxing,:manus,3,:dactyl,:middle,:evt-grp-qid,12831.2//INGESTS::pos=>v3(-203.0|+1000.0|+386.0),:proximals=>{{(:phys-surf.0x3dd310),(:dist.15.4)},...}]]
E2′:[[DESCRIPS::event,:proxing,:manus,3,:dactyl,:index,:evt-grp-qid,12831.3//INGESTS::pos=>v3(-203.0|+1000.0|+393.0),:proximals=>{{(:phys-surf.0x3dd310),(:dist.22.4)},...}]]
参照以上所描述的实施例,接下来有姿势引擎实施方式的无数示例。图9是根据实施例的姿势引擎实施方式900的框图。以下的姿势引擎实施方式假设一些主要元素以及对这些主要元素中的每个的描述遵循参照姿势引擎实施方式900。
以下姿势引擎实施方式示例的第一主要元素是一些数目的跟踪实体的出现,每个跟踪实体包括(a)高保真度的主体三维空间位置;(b)高保真度的主体三维空间取向;以及(c)实体“姿态”的表达性描述,即对其自由度的半语义性的摄取。将这样的实体称为“握持实体(GripeEnt)”(握持实体对应于以上的通用“GER数据”)。握持实体的特别重要的种类是人手,对于人手,“姿态”描述了手指的各种弯曲,其可以使用在第11/35069号美国专利申请中连贯描述的表示方案而表达出来。
以下姿势引擎实施方式示例的第二主要元素是用于关联来自一个或更多个源的低水平空间输入数据以及用于分析该数据从而周期地更新握持实体的集合的系统。该系统在此被称为“握持精细装置(GripeRefinery)”,其中握持精细装置可以对应于上述的“数据漏斗”。为了提供概念上满意的交互,握持精细装置必须以超过三十赫兹的速率产生全部输出集。
以下姿势引擎实施方式示例的第三主要元素是包括姿势匹配模块的集合,这被称为“姿势器集”或者“GTot”(GTot对应以上的通用“识别器”,但是实施例不限于此)。每个GTot在任何时刻具有“多样性”S:对于GTot表示的姿势的成功认知,S个截然不同的握持实体是需要的。在任何时候,每个GTot都处于“等待”或者“激活”的状态。与这些状态相关联的是GTot的两个主要的执行路径:分别为“EntranceAttempt”以及“ContinuationAttempt”,它们中的任何一个或者二者都可以发出中等水平的交互事件数据。可选的第三运行路径是GTot的“更新”例行程序,其为GTot提供了预循环机会以执行为维持其内部状态所必须的附加的计算。EntranceAttempt的运行会产生以下三种可能的结果代码中的一种:COPACETIC、PROMOTE以及EXCLUSIVE。ContinuationAttempt的运行会产生以下三种可能的结果代码中的一种:COPACETIC、DEMOTE以及EXCLUSIVE。
EntranceAttempt为处于等待状态中的GTot测试针对GTot的特定进入准则的可用握持实体;当满足这些准则时,GTot被设置成处于激活状态,而已参与到满足准则中的(一个或更多个)握持实体被标记成用GTot捕捉的并且与GTot相关联。对于处于激活状态的GTot,ContinuationAttempt首先行动以验证之前所捕捉的握持实体是(1)仍然可用的——即这些握持实体是否没有被具有更高首位的GTot“篡夺”以及(2)仍然在空间、语义和上下文上满足GTot准则。如果情况不是(1)或(2),从与GTot的关联中解除之前所捕捉的握持实体;否则,握持实体保持被捕捉。
在以下的状态转换描述中详细地说明这些逻辑关系和因果。
以下姿势引擎实施方式示例的第四主要元素是包括仲裁引擎,其以规定的顺序遍历全部GTot集并且允许每个GTot运行其EntranceAttempt或者ContinuationAttempt例行程序。该仲裁引擎此处被称为“姿势器(Gestator)”(姿势器对应于以上的通用“姿势引擎”,但是实施例不限于此)。姿势器维持了所有处于激活状态的GTot的动态列表以及所有处于等待状态的GTot的这样的单独列表。这些列表必须是不相交的。姿势器具有单个主要的运行路径:“ProcessTot”。
以下姿势引擎实施方式示例的第五主要元素是存在对通过姿势器的活动所生成的“事件”的立即接收。该接收可以是简单的知识库,如具有分派机制的FIFO缓冲器,其工作是将所积累的事件周期地分配给合适的终端消费者。可替换地,或者附加地,接收可以是更加复杂的流水线,该流水线起作用以对由姿势器提供的中间水平事件细化、结合或者以其她方式调节,以产生有利于预期子系统的具有上下文专用信息的高水平事件构造。
穿过系统的输入处理循环的单程包括允许握持精细装置更新每个握持实体的状态;以及然后运行姿势器的ProcessTot;这又(连同其她工作一起)使得需要执行运行每个已注册的GTot的EntranceAttempt或者ContinuationAttempt。
实施例的姿势器的ProcessTot的例行程序如下:
PTl.将GTot的整个集合分类成元组MS[1..n]。分类准则可以是静态的或者动态的。典型的静态准则是“形成由GTot描述的姿势所需要的协同动作的握持实体的数目”——以上的重数S;因此,在这样的情况下,元组MS[n]包括这些需要n个握持实体以描述姿势的GTot。
PT2.为每个元组MS[i]中的GTot选择顺序,以使得MS[i][j]是第j个GTot;则元组包括MS[i][1..m]。分类准则又可以是静态的或者动态的。在某些情况下,顺序可以仅对应于以下顺序:在该顺序中,GTot被初始实例化且被添加到姿势器。
PT3a.遍历激活的GTot的姿势器列表;运行每个GTot的更新。
PT3b.遍历等待的GTot的姿势器列表;运行每个GTot的更新。
PT4.构造所有握持实体的列表。称其为avail_ents。
PT5.从MS[n]到MS[1]遍历元组。
PT6a.针对每个元组MS[i],从MS[i][m]到MS[i][1]遍历组成GTot,依次考虑每个GTot MS[i][j]。
PT6b.如果MS[i][j]处于激活状态,则运行其ContinuationAttempt算法,使得列表avail_ents对其可用;否则,继续进行(PT6a)中的遍历。
PT6c.如果来自(PT6b)的结果代码是COPACETIC,则继续进行(PT6a)中的遍历。列表avail_ents已被修改。
PT6d.如果来自(PT6b)的结果代码是EXCLUSIVE,则放弃(PT6a)中的遍历而进行到(PT7a)。列表avail_ents已被修改。
PT6e.其他情况(结果代码是DEMOTE),则从激活的GTot的姿势器列表中移除MS[i][j],将该MS[i][j]添加到等待的GTot的列表;继续进行(PT6a)中的遍历。
PT7a.针对每个元组MS[i],从MS[i][m]到MS[i][1]遍历组成GTot,依次考虑每个GTot MS[i][j]。
PT7b.如果MS[i][j]处于等待状态,则运行其EntranceAttempt算法,使得列表avail_ents对其可用;否则,继续进行(PT7a)中的遍历。
PT7c.如果来自(PT7b)的结果代码是COPACETIC,则继续进行(PT6a)中的遍历。
PT7d.如果现在知道结果代码是PROMOTE或者PROMOTE_EXCLUSIVE;则从等待的GTot的姿势器列表中移除MS[i][j],将该MS[i][j]添加到激活的GTot的列表。列表avail_ents已被修改。
PT7e.如果(PT7b)的结果代码是PROMOTE_EXCLUSIVE,则放弃(PT7a)中的遍历而行进到(PT8),完全结束ProcessTot运行。
PT7f.其他情况(结果代码是PROMOTE),则继续进行(PT7a)中的遍历)。
PT8.结束ProcessTot运行。
实施例的GTot的EntranceAttempt的例行程序如下:
EA1.遍历列表avail_ents。
EA2.将avail_ents中的元素与特定的进入准则比较,每次考虑S个(其中S是GTot的重数)。
EA3.如果列表中的所有合适的组合都被穷尽而没有匹配,则返回响应代码COPACETIC。
EA4.否则,握持实体的一些s元组(tuple)——称之为GE[1..s]——已经满足了进入准则。
EA5.从列表avail_ents中移除GE[1..S]中的每个GE[k]。
EA6.记录匹配的GE[1..S]中的每个GE[k]作为由GTot承载的坚持状态的一部分。
EA7.生成并注入到事件队列中任何如下述这样的一个或更多个事件,所述事件可以适合于对其所描述的姿势的、GTot的初始“识别”的描述。
EA8.返回结果代码PROMOTE,或者,如果GTot的上下文和条件是如此设置的,则返回结果代码PROMOTE EXCLUSIVE。
实施例的GTot的ContinuationAttempt的例行程序如下:
CAl.确认所捕捉的握持实体GE[1..S]中的每一个都存在于列表avail_ents中。
CA2.如果情况不是(CA1)——意味着具有比当前GTot更大的首位的GTot已经篡夺了之前由当前GTot捕捉的组成握持实体中的一个或更多个——则向前跳跃至(CA5)。
CA3.确认所捕捉的握持实体GE[1..S]中的每一个都语义地且几何地满足当前GTot的维护准则。
CA4.如果情况是(CA3),则向前跳跃至(CA8);如果情况不是(CA3)——意味着包括GE[1..S]的姿势输入已经“跌出”由当前GTot所描述的姿势——则向前进行至(CA5)
CA5.生成并注入到事件序列中任何如下述这样的一个或更多个事件,所述事件可以适合于对由当前GTot所描述的姿势的终止处的描述。
CA6.从由当前GTot所承载的坚持状态中移除对之前所捕捉的GE[1..S]的参照。
CA7.返回结果代码DEMOTE。
CA8.从列表avail_ents中移除所捕捉的握持实体组GE[1..S]中的每个GE[k]。
CA9.根据假定刚被更新了的握持实体组GE[k]来生成任何如下述这样事件,所述事件可以适合于对展开的姿势状态的描述;将同样的事件注入到事件队列中。
CA10.返回结果代码COPACETIC或者,如果GTot的上下文和条件如此设置的,则返回结果代码EXCLUSIVE。
以下是对采用以上介绍的空间连续体输入系统的实施例三个示例性应用的详细描述。每个示例都假定:属于一个或更多个操作员的手由传感器跟踪,该传感器以高精度和高时间速率分辨操作员的手指的位置和取向,或者有可能是整个手主体的位置和取向;系统进一步分析所得到的空间数据,从而将每个手的“姿态”特征化——“姿态”即手指相对于彼此以及相对于手主体的几何布置。
以下将详细描述传感器、跟踪和分析操作员的手的方法、以及用于表示手的姿态、位置和总取向的方案;为了说明性的特征,会根据标记方案来描绘贯穿以下描述的符号姿态表示。然而要注意,由示例所图示的实施例可以利用其他类似的系统,只要该系统拥有等价的符号和表示功效。
类似地,为了图示的目的,示例参照了如以上所勾勒的单个实施方式体系结构的元素,但是可替换地,类似的体系结构和实施方式同样地适用。
在资料丰富的情况下,在姿势交互期间得出的通常更高水平的事件结构中的一些在以下也再产生出来。这些事件用与它们优选的表象方案相一致的标记被描绘,这就像从原语“色拉”建成的“蛋白质”那样(将在以下详细描述)。这样的事件蛋白质通常存放在“池”中,即独立于平台的、历史保留的中间进程数据控制和交互机制(以在以下详细描述);以及,在从合适的池检索和进一步的上下文专用调节之后,池被系统地分配到可能是感兴趣的程序对象。对于容纳池的机器的本地的进程以及经由网络对于在远程机器上运行的进程,池是透明地可访问的。这些事件蛋白质散布在遍及以下的普通描述中,并且在每种情况下参照在前面紧接的自然段中所描述的交互。还注意,连贯的蛋白质未必是“完整的”:可能对于完全运行系统所必须的某些字段通过提升清晰度、相关性和简要性而被删节。
第一示例是立体几何指导。在该第一示例中,操作员站在水平桌状表面旁边,该水平桌状表面大概一平方米并且在腰部高度。显示系统将立体成像投影到表面上,另外跟踪操作员的头,以使得正确地生成左眼视图和右眼视图,以当操作员相对于桌子移动时对应操作员的即时位置。操作员佩戴了立体眼睛。
桌子提供了几何指导;各种多面体被以多维度地显示(即立体地而非物理地)。每个多面体被定位和定向以使得该多面体在其表面中的一个表面上稳定地“静止”。每个大约十五厘米高。
操作员举起她的右手并且用她的食指和中指“指”向桌子(第四根和第五根手指是弯曲的,而拇指向左指,即垂直于食指);手被定向成手掌基本朝向下。该姿态可以被描述为[^^||-:v*]。当操作员的手采取这样的姿态时,桌子紧接着显示出动态光标。精确的几何计算允许光标出现在最接近的分割多面体(如果有的话)的表面上或者桌子的表面上(如果多面体没有被分割)。操作员以类似的姿态举起她的左手并且还开始用手来指。作为另外的暗示,多面体通过变色来响应这种“指交互”:当操作员用她的右手来指时,最接近的被分隔的多面体从灰色变成蓝色;当操作员用她的左手来指时,最接近的被分隔的多面体从灰色变成绿色。当多面体不再被分隔时,该多面体返回到其原始的灰色。
A.[[DESCRIPS::event,:pointing,:action,:move,:state,0,:manus,3,:evt-grp-qid,17381//INGESTS::gripe=>″^^||-:vx",:pos=>v3(+215.3|+304.7|+434.6),:aim=>v3(-0.22|-0.51|-0.83):intersectees=>{(:vfeld.0xaf32b8),(:phys-surf.0x3dd310),(:geom-obj.0x4a4e9c)}]]
当指向十二面体时,操作员用关节移动她的拇指,以使得其暂时地与她的食指平行并且相接触,然后返回到拇指的原始的垂直取向([^^||-:-*]→[^^|||:-*]→[^^||-:v*])。十二面体通过发出图形标签来反应,该图形标签是方形框架,该方形框架以多维度地位于桌子的表面上并且包括印刷描述″{5,3}″(十二面体的Schlaefli符号)。标签从其接近十二面体的基部的初始位置朝向桌子的最接近的边沿平稳地滑动,在该边沿处标签停住。操作员通过绕着桌子连续地指向并且“单击”她的拇指生成了另外的这种标签;所得到的标签都以绕着桌子的边沿排列而结束。
B.[[DESCRIPS::event,:pointing,:action,:inc-state,:state,1,:manus,3,:evt-grp-qid,17381//INGESTS::gripe=>″^^|||:vx″,:pos=>v3(+124.3|+313.4|+413.2),:aim=>v3(-0.14|-0.82|-0.55):intersectees=>{(:vfeld.0xaf32b8),(:phys-surf,0x3dd310),(:geom-obj,0x604ddc)}]]
C.[[DESCRIPS::event,:pointing,:action,:move,:state,1,:manus,3,:evt-grp-qid,17381//INGESTS::gripe=>″^^|||:vx″,:pos=>v3(+124.3|+313.4|+413.2),...]]
D.[[DESCRIPS::event,:pointing,:action,:dec-state,:state,0,:manus,3,:evt-grp-qid,17381//INGESTS::gripe=>″^^|||:vx″,...]]
操作员然后稍微向前倾并且伸出她的左手,手掌仍然大致面向下,但是中指和拇指现在根据([^^^|>:v*])向下并且在桌子合适的表面上轻轻地弯曲。当操作员的手在桌子上跨越了二十厘米的阈值平面时,系统的图形反馈改变:在之前(通过光标的位置)所指示的操作员的正在指向的手指的目标向量与仿真的各种表面和几何元素相交的情况下,现在反馈系统展示多重“铅垂线”光标,这些光标指示了相关表面上的、距离手指的即时位置最近的点。如此,例如,光标直接出现在手指“之下”,同时地在桌子的表面上跟踪手指。当手指的位置在多面体表面的平面上的正交投影位于面的多边形内时,光标也出现。此外,暗淡的“水平线”出现在接近的多面体面上从而提示与桌子平行并且包括手指的位置的平面。这些图形标记以系统的自然框架速率(大约90赫兹)被连续地更新,因此认知地“跟踪”手指的移动。
E.[[DESCRIPS::event,:proxing,:action,:move,:manus,3,:evt-grp-qid,17385//INGESTS::gripe=>″^^^|>:vx″,:pos=>v3(-93.2|+155.7|+60.8),:proximals=>{(:vfeld.0xaf32b8),(:phys-surf.0x3dd310),(:geom-obj.0x4a4e9c),(:geom-obj.0x604ddc),...}]]
当操作员将其手指伸到多面体中的一个的三厘米之内,与接近的手指最靠近的面开始改变色调,以指示近距离接触的接近。当最终手指几何地穿过多面体的表面而到达其内部体积时,整个形状闪烁,同步的音频提示标记了接触的时机;而就在更远的进行指向的手在Platonic形状上“单击”时,图形标签从形状的基部发出并滑向桌子的最接近的边沿。操作员由此同样能够通过从远方指向或者通过进行直接接触而访问系统的几何内容。
F.[[DESCRIPS::event,:palping,:action,:move,:state,:exterior,:manus,3,:dactyls,{:index},:evt-grp-qid,17391//INGESTS::gripe=>"^^^|>:vx",:pos=>v3(...),:palpees=>{((:geom-obj.0x4a4e9c).(:dist.+13.5))}]]
G.[[DESCRIPS::event,:palping,:action,:surface-intersect,:state,:interior,:manus,3,:dactyls,{:index},:evt-grp-qid,17391//INGESTS::gripe=>″^^^|>:vx″,:pos=>v3(...),:palpees=>{((:geom-obj.0x4a4e9c).(:dist.-1.8))}]]
现在,操作员伸展她她的活动的手的终止,以使得该中指与食指平行([^^||>:v*])。在这样的模式中,与系统的多面体的几何接触启用了仿真物理,以使得当操作员在八面体的一侧轻轻拨动时,其受到与到接触点的径向矢量和拨动矢量的叉积(对于几何代数的追随者,正是楔积)成比例的扭矩。以这种方式,通过用操作员的食指和中指轻轻拨动或者轻弹,操作员使得八面体绕着穿透过该八面体的底表面中心的竖直轴(重力对准的)旋转。然后,她通过竖直拨动她的手指穿过八面体最顶部的体积而停止该旋转。
H.[[DESCRIPS::event,:palping,:action,:move,:state,:exterior,:manus,3,:dactyls,{:index,:middle},:evt-grp-qid,17394//INGESTS::gripe=>″^^||>:vx″,:pos=>v3(...),:vel=>v3(...),:palpees=>{((:geom-obj.0x21b3b8).(:dist.+21.4))}]]
I.[[DESCRIPS::event,:palping,:action,:surface-intersect,:state,:interior,:manus,3,:dactyls,{:index,:middle},:evt-grp-qid,17394//INGESTS::gripe=>"^^||>:vx",:pos=>v3(...),:vel=>v3(...),:palpees=>{((:geom-obj.0x21b3b8).(:dist.-5.5))}]]
类似地,操作员可以重新定位仿真的对象。当她将她的食指和中指的指尖靠近四面体的基部时,形成了黄色的“光晕”,该光晕的亮度与手指到桌子表面的接近度成反比。当操作员的手指与物理表面直接接触时(通常在解剖学上中指倾向于首先做此事),光晕从黄色变成红色,与手指的自其初始接触点的偏移相等的平移偏移被连续地施加到四面体。操作员由此能够绕着桌子表面滑动任何所显示的对象;仅断开与桌子的接触就能结束滑动互动。
J.[[DESCRIPS::event,:palping,:action,:move,:state,:surface-contact,:manus,3,:dactyls,{:index,:middle},:evt-grp-qid,17394//INGESTS::gripe=>″^^||>:.v″,:pos=>v3(...),:vel=>>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.-3.0)),((:geom-obj.0x9d1104).(:dist.+19.7))}]]
最后,操作员可以通过远距离指向和最接近的轻轻拨动交互二者来对已经聚集在桌子边沿的标签进行操纵。操作员使得她她的左手向下朝向一组标签所处的、桌子的左侧。随着通过手接近任何标签,该标签的亮度开始增加:并且还是与从标签到最接近的手指的距离成以反比例。此外,当任何手指的接近度跨越五厘米的外阈值时,(在桌子表面的平面内的)一条线从标签迂回到与标签相关联的多面体。
K.[[DESCRIPS::event,:palping,:action,:move,:state,:exterior,:manus,4,:dactyl,:middle,:evt-grp-qid,17402//INGESTS::pos=>v3(...),;vel=>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.+9.4)),((:tag.″octahedron").(:dist.+9.4))}]]
L.[[DESCRIPS::event,:palping,:action,:move,:state,:exterior,:manus,4,:dactyl,:ring,:evt-grp-qid,17402//INGESTS::pos=>v3(...),:vel=>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.+15.8)),((:tag.″octahedron").(:dist.+15.8)),((:tag.″tetrahedron").(:dist.+15.8))}]]
当手指最后与标签接触时——即与在投影标签的几何边界内的点处的桌子表面接触——标签的边界变红;标签和手指是逻辑的绑定;只要操作员的手指仍然与桌子接触,标签就会跟随着手指,以使得操作员能够绕着桌子的表面滑动标签。
M.[[DESCRIPS::event,:palping,:action,:move,:state,:surface-contact,:manus,4,:dactyl,:middle,:evt-grp-qid,17402//INGESTS::pos=>v3(...),:vel=>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.-0.7)),((:tag."octahedron").(:dist.-0.7))}]]
N.[[DESCRIPS::event,:palping,:action,:move,:state,:exterior,:manus,4,:dactyl,:ring,:evt-grp-qid,17402//INGESTS::pos=>v3(...),:vel=>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.+5.2)),((:tag.″tetrahedron").(:dist.+5.2))}]]
逐手指绑定到各个标签意味着在这种模式下,操作员能够独立地使用她的手指:每个手指可以独立地触摸和控制单独的标签,正好像操作员正在轻轻地触摸和滑动一些硬币。随着每个滑动标签的位置的发展,标签及其多面体之间的弯曲的线被合适地更新,以使得两个结构仍然图形地连接。
O.[[DESCRIPS::event,:palping,:action,:move,:state,:surface-contact,:manus,4,:dactyl,:middle,:evt-grp-qid,17402//
INGESTS::pos=>v3(...),:vel=>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.-0.7)),((:tag.″octahedron").(:dist.-0.7))}]]
P.[[DESCRIPS::event,:palping,:action,:move,:state,:surface-contact,:manus,4,:dactyl,:ring,:evt-grp-qid,17402//INGESTS::pos=>v3(...),:vel=>v3(...),:palpees=>{((:phys-surf.0x3dd310).(:dist.-1.1)),((:tag.″tetrahedron″).(:dist.-1.1))}]]
当操作员从标签举起她的手指时,标签仍然在其最近的位置,只要该位置仍然基本在仿真表面的边沿;如果操作员距边沿太远地“在内地”释放标签,那么标签放射状地向外滑动以当再次接近边沿时停止。可替换地,如果操作员将任何标签滑动离开了桌子的边沿,将其“丢弃”在了地板上,则该标签被放弃并且消失。
第二示例是电影操纵系统。在该第二示例中,“快速成型”电影生产工作区包括:相对于彼此九十度地安装在相交的墙上的两个大投影屏;设置成距离正前的屏幕两米处的适度倾斜的投影桌。操作员正好站在投影桌的后面,面向正前的屏幕。显示在正前的屏幕并且填满正前的屏幕的是来自最近拍摄的电影镜头的序列的静止框架。
操作员举起她的手至肩部高度,每只手的手掌都向前,手指平行而拇指水平([||||-:x^&&||||-:x^]),操作员获得对镜头序列的更大集合的访问(此处称为“后推”控制系统,以下将详细描述):随着操作员将她的手直接向前平移,维持手指的整体姿态,当前框架后退,就好像该框架被推后到透视图中。随着框架在屏幕上的尺寸的减小,该框架会由其她侧向设置的框架接合,因此原始框架被展示成框架的水平带中的一个框架。操作员可以分别通过将她的手再向前推或者将手拉回来而看到更多的或者更少的框架,该接口模态由此模仿了对弹性载入结构进行推挤的物理交互。类似地,随着操作员左右移动她的手,框架的水平集合被左推或右推。实施例的后推系统通过忽略手的竖直位移来有意地约束了导航,但并不限于此。
图形地以屏幕为中心的十字线——其待操作员一启用后推系统就出现——指示了当后推交互被终止时哪个框架会被“选择”。操作员将她的手向右移动,她将新的框架定位在十字线正下方且将两手闭合成拳([^^^^>:x^&&^^^^>:x^]),结束后推对话。随着所选择的框架回弹向前、以自身为中心且快速地填满投影屏幕,十字线逐渐消失。
系统提供对镜头回放的基本控制:操作员可以以以下的单位速率向前播放镜头:通过以平行于地板的平的姿态保持任何一只手([|||||:vx]),然后顺时针旋转该手直到手指大概指向右([|||||:vR])为止。类似地,通过将平的手逆时针地旋转可以相反地显示镜头([|||||:vx]→[|||||:vL])。操作员通过以手掌向前的“警察的暂停”姿态([|||||:x^])举起任何一个手来暂停——“中止”——回放。
通过使任何一只手成为手指向前指的([|||||-x])竖直平面姿态,操作员获得另外的对回放位置和速率的控制。这样做启用了“对数时间线”,其在屏幕上被表示成定位在屏幕的底部的水平条的堆叠。时间线堆叠中最上面的条表示镜头序列的全部时间宽度,条的左端对应于最早的框架而条的右端对应于最终的框架。每个依次更低的条表示小了R倍的镜头的子区间(由此被更加精细地“分辨”);N个条中的最底部的条由此表示了比全部时间存续期更小的镜头R^^(N-1)的间隔。
操作员通过将她的手沿着基本垂直的轴(朝着地板或者远离地板)平移,访问不同的条——由此访问不同的时间分辨率。侧向摇摆操作员的手启用了镜头的可变速度回放:手的向右旋转(如果是右手,则从[|||||:-x]稍微成[|||||:x+];如果是左手,则从[|||||:-x]稍微成[|||||:.-])开始向前穿梭镜头;另外的旋转增加穿梭的速度。将手返回到被定位成直接向前朝向屏幕的姿势使得回放暂停(可选地,可以提供关于该中心角位置的小的角形停止域以辅助对暂停的回放的可靠维持),而手的继续向左的旋转开始使镜头向后穿梭。要理解,总的穿梭速度由当前激活的条所确定;即针对操作员的控制手的给定的角形姿态,镜头播放与“在顶部的条”相比减慢了R^^n倍,其中,条的序数范围为0..n-1(零表示最上部的条)。
每个条的侧向极值用如此表示的瞬时镜头时间戳来标注;在条的堆叠的之下显示了属于当前被访问的或者被显示的框架的时间戳;而图形标记在每个条中描绘了该当前框架的位置。此外,出现在每个条之内的是“被标记的帧”的时间对数的图形指示——已经以一些方式标注了镜头中一部分。一些这样的标记可以指示编辑点;该示例的其余内容可以考虑这些标记指示循环播放元素(rotoscoped element)的可用性的情形。
当操作员已经将镜头导航到包括可用元素的时间点时,她将控制手从时间线姿态松开,而穿梭模式被放弃。时间线减弱成半透明的,而在显示屏的右方出现了竖直阵列的图形标签;每个标签表示了在镜头的当前框架中可用的元素。
操作员将她的手带到头部高度,手指伸出、拇指侧向而手掌与地面平行([||||-:vx]),随着操作员这样做,最上面的元素标签展开并且被加亮,指示元素的选择。同时,在正前屏幕上的暂停的镜头框架之内,如此地被标记的元素变亮而框架的其余部分变暗淡以实现低的微弱的亮度。随着操作员举起或者降低她的手,保持姿态大概恒定,她连续地访问整个元素标签集(而每个元素标签依次加亮,对应地在框架内指示元件自己)。
随着某个特定的循环播放元素由此被选择和加亮,操作员使用后接“拇指单击”修正(拇指放下与食指平行:[^^^||:-x])的指向姿势(所有手指弯曲除了食指;拇指在上;食指指向正前屏幕:[^^^|-:-x])来从前方屏幕抓取所选择的元素。紧接着,加亮元素的副本出现。当所选的元素是静态的(作为暂停镜头当前框架的一部分)情况,新的副本是“激活的”,向前播放并且在循环播放序列的结束处循环。当维持拇指单击姿态时,操作员然后降低她的手直到手指向桌子的表面;在整个该操作中,活动的循环播放元素精确地遵循操作员的“目标”:首先滑下正前屏幕,消失在正前屏幕和桌子之间的几何空隙中,然后当指向手的目标与桌子的四边形的表面合适地相交时,重新出现在那里。操作员通过重新瞄准她的指向手来暂时地继续调整在桌子上的活动的循环播放元素的位置;然后举起她的拇指([^^^||:-v]→[^^^|-:-v]),于是元素留在在桌子上的合适位置。
操作员重复以上的姿势操作,从同一序列框架拉出独立的第二元素,然后穿梭导航至同一序列中的另一个点,以将第三元素增加到在桌子上堆积的组成。操作员然后(通过启用后推交互)访问完全不同的序列,操作员从该序列添加另外的元素到桌子;等等。
最终,桌子表面保持了包括一打循环播放元素的组合:隔离的字符、道具、背景等;这些元素都是连续地活动的,并且按照这些元素被添加到组合中的顺序而被绘制——以使得对于不透明的元素,最近被添加的遮蔽其正下方的元素。因为这些元素的(全部或部分)不透明度以及它们潜在的几何重叠意味着顺序是组合的明显特征,所以现在将这些元素称为“层”是适当的。
组合的层中的每个由符号、图形标签表示;标签集合沿着桌子表面的右边沿(沿着前后轴)布置。当新的元素被添加到桌子的组成时,标签的直线布置平稳地调整以与每个新来的元素结合。
操作员现在允许她的手悬在桌子右侧之上约十厘米,在标签集合的正上方。随着操作员将她的手向前和向后平移,与手最接近的标签以及该标签所参照的元素层二者被“选择”:这是由标签通过进一步向右滑动且增加亮度和不透明度、而所有其她的组成层减弱成几乎完全透明而指示出来的。由此将所选择的层视觉地隔离。
当操作员的右手保持在特定标签之上的大致稳定的位置,并且单个层由此被选择时,操作员使得她的左手向下朝着桌子表面、接近所选层的视觉中心的地方。当操作员的左手遍历第一阈值平面(与表面平行但是在表面之上大约二十厘米),视觉反馈系统被启用:小图形交叉(“加号”)的规则格栅呈现在表面上并且位置在表面上固定;每个交叉的亮度和不透明度根据手高于表面的高度以及该交叉距手的向下投影的中心的二维径向距离二者而改变。施加到这两个参数的合适的比例因数和附加常数产生跟踪手的位置(按照被投影成与表面相交)并且在有限半径圆内照亮固定的栅格的移动聚光灯的印象。所照亮的栅格随着手朝向表面下降而变得更亮。
操作员的左手下降,然后变得与桌子物理接触,并且触发了反馈系统的模式的改变:现在,之前固定到表面的反馈栅格连同接触的手一起被拖动。同时,层重定位被启用,使得随着操作员绕着桌子滑动她的手,层精确地跟随着;印象是绕着表面在表面上滑动一张纸(当然,除了层自身继续活动之外)。
已经令操作员满意地重新定位了层,然后操作员举起她的左手,断开与表面的接触。层“拖动”模式被终止而层留在原地。基于栅格的反馈系统同时返回到之前的模式,以使得栅格相对于桌子表面保持固定。当最终手移动得(竖直地)距离桌子足够远时,手重新跨越了第一阈值而栅格反馈被视觉地取消。充分地移动右手——竖直地或者侧向地(左右)——类似地超过层标签的接近阈值,如此,所有的标签和层变成未被选择的,又将所有的层返回到完全不透明,以使得整个组成(现在有一层被移动)再一次被显示出来。
操作员通过使得她的右手向下以使得手的手指与接近桌子的右边沿的层标签中的一个接触,由此启用的另外的层交互,因此标签变亮且切换色调以指示其进入了“直接操纵”模式。操作员现在将她的手沿着桌子、平行于右边沿向前向后滑动;操作员手指下的标签跟随着,如果平移得足够远,则该标签改变其(相对于其她标签的)顺序位置。当操作员抬起她的手离开表面时,保留了新的标签顺序,并由此产生了对应层的新的逻辑顺序。以这种方式,可以操纵层的绘图顺序,而各个层可以在堆叠中“向上”或“向下”移动。
最后,可获得一组“瞬时”姿势以执行对系统及其内容的高水平操作。例如操作员可以掠过她的手,保持平且所有的手指和拇指伸出并且初始地统一地向前向外指向一侧,以使得右手指向右而左手指向左([|||||:vx&|||||:vx]→[||||:v+&||||:v+]),从而清除和删除至此所聚集的组成。或者执行向左的两手“推”运动,该运动结束于两手共面,其中一只手保持在另一只手的上方,向左指的手掌([|||||:Lx&|||||:Lx])将正前屏幕的内容移动到左屏幕:该姿势触发正前镜头开始平稳地向左平移,同时绕着竖直轴逆时针方向旋转,直到其中心和法向量与左屏幕的中心和法向量一致为止。由此重新布置了应用程序及其组成数据的整个区段或者将它们在显示表面之间移动。
注意到,这里所描述的电影操纵系统还包括许多设施——例如由手从元素的包含序列中文字地循环播放出这些元素的模式,其中,操作员的手指逐帧地描绘出相关的轮廓;用于将组成桌子上的元素时间对准(或者精确的时间偏移)的装置;等——但是本公开所考虑的基于自由空间、接近度和触摸的姿势交互不再通过对这些模式的详细检验来进一步(或者单独地)阐明。
第三示例是关于搬运板的。在该第三示例中,具有广泛实用性的交互涉及称为“搬运板(portage slate)”(或者“p-板”)的一个或更多个有特权的物理对象。搬运板功能自动地可用于被建立在此处所描述的系统之上的每个合适地配置的应用程序。搬运板是物理盘,在其上操作员可以“刮”显示在第一位置的几何对象和物品,并且板化对象从该搬运板随着来回的传输而被转移成在第二位置的、具有第二显示上下文的新的应用程序。
参照以上第一示例和第二示例说明该第三示例。几何指导操作员刚刚“抽出”了二十面体,以使得表示其的标签停留在桌子边沿的附近,并且她随后以上述方法设置了二十面体旋转。操作员现在用她的左手捡起附近的p板。p板是一片刚性的不光滑有色的塑料,尺寸大约为二十厘米乘三十厘米,并且p板由系统通常(虽然未必)通过与用于跟踪操作员的手的机制相同的机制主动地跟踪。
操作员将p板靠近桌子边沿并且将其定向成p板边沿中的一个与桌子边沿平行且几乎与桌子边沿接触。服务桌子表面的投影系统被设置成其像素的延伸的锥形的有意地“溢出”桌子的严格的物理边界;实际上,当p板与桌子抵接时,被投影的像素区域足够大来处理整个p板,如现在这样。
p板的接近存在使得系统的一部分具有到投影像素的局域访问以实例化瞬时寄生显示(“TPD”)构造。TDP的功能是对物理地落在作为独立显示器的p板上的像素的子集进行操纵;补偿(即反转)由像素子阵列不规则投影入射在p盘上所引起的任何几何失真;以及向p盘和被授权写在p盘上的任何进程提供虚拟描绘上下文。
正是描绘上下文使得p盘能够产生在其最接近桌子的角中的一个角中的活动图示符作为对该p盘是活的且可用的指示。具有同步活动的匹配图示符产生在接近p板的桌子上。操作员理解示出两个表面——一个表面是固定的而另一个是移动的——的图示符并矢量是逻辑的连接着的。
操作员的右食指落在二十面体的标签上;操作员滑动她的手指——并且由此因果地滑动标签——绕着桌子的周长并滑动到p板上。虽然现在标签在桌子边界的外侧,但是此时并不将其认为是被放弃的(如在根据第一示例的交互中,其中标签被“扔在地板上”);而是,系统现在声称标签“处于”p盘上。
确实,随着操作员移动将要离开多面体几何工作站并且动身跨越室,她的轨迹使得p盘些微的更高然后向前通过桌子的投影锥。系统的低等待时间跟踪使得能够改变p盘的位置和取向,以对移动显示器的几何的TPD的内部模态更新;该模态使得TPD构造能够继续精确地征用与移动表面相交的那些投影仪像素。p盘仅继续相对于它自己的刚性几何描绘其在当前位置的内容,而不外显地参照(的确,或许是在计算上遗忘了)在它和投影仪之间展开的复杂的投影关系。操作员由此观察到:标签仍然在她将其放置的、p盘上的原位置处;在每种认知相关的意义上,标签现在在p盘上。
当操作员的向前进使得p盘发生平移从而p盘的几何位置与投影锥完全分离时,系统停止使用TPD构造并且将其描绘内容标记成惰性的。
随着操作员朝向长室的另一端走去时,她通过投影仪是激活的其他体积。在每种情况下,连接着网络的跟踪系统使得该系统的事件流可用于能够访问局域投影像素的进程。只要跟踪事件显示出p盘与椎体投影锥的新的相交,另一个TPD构造就被实例化。由此,p盘能够在其短暂的通过投影体积的期间重新描绘其“内容”;具体地,看到二十面体标签仍然固定于其在p板上的位置处。
不久,操作员到达了第二示例中的快速原型电影工作站。此处,投影参数也被设置以使得向下的投影仪的像素良好地充满装配台。随着操作员使p盘靠近工作台,局域TPD再一次被实例化,而标签再一次显示。此外,图示符的并矢量再次出现——一个在p盘上一个在桌子上——以指示出两个表面处于数据逻辑接触。
操作员将p盘定位在了桌子的最后边沿的右侧(即最接近她的身体)。操作员现在用她的左手保持p盘,将她的右手的手指向下带到标签上,该标签变亮以确认接触。操作员平稳地使标签向前滑动、跨越p盘的正前边沿且到桌子上。当操作员从桌子举起她的手指终止了与标签的接触时,标签移动以加入循环播放元素的竖直阵列,这又对元件的位置进行了微调以容纳新的标签。
当现在操作员在她刚刚添加到桌子的标签上轻击时,该标签展开其“有效负载”:二十面体的二维投影,仍然如操作员所留下的那样地旋转、从标记的位置快速的滑动、随着其移动而按比例地变大并且占据了组成桌子的中心处的位置。二十面体现在如在该组成中使用的其他电影元素中的任何元素那样行动:操作员可以重新定位二十面体、改变其层顺序等。
第四示例涉及对盘旋类型的输入进行特定使用的通用交互模态。该第四示例在城市服务应用程序的上下文中展开;此处大的正前屏幕示出了市区的三维图,包括地上结构以及地下结构——电、水、气、污水和地铁元素的多个相互贯通的层。自由空间姿势导航允许操作员以以下详细描述的方式在正前操显示器的屏幕上“飞绕(fly around)”透视场景。同时,在操作员紧前方的投影桌示出了同一市区的自顶向下的正视图。此处描述的基于盘旋的交互允许应用程序的表面下结构的探索和选择。
操作员身子前倾并且将她的手——一开始在某个市中心区的上方——向下带到桌子的表面。随着她的手下降通过桌子上方的阈值(例如大概桌子上方二十厘米),结构选择机制被使能,而生动的半透明盘图形地重叠在城市的地图状视图上。出现了针对位于盘的半径之内的每个表面下结构的简明视觉表示。同时,对这些同样的“加亮”结构的更加详细的三维描述出现在在前透视图上的正确的三维位置处。因为操作员将她的手侧向的平移,将手保持在表面上方的恒定高度处,所以盘平移,这总是在手正下方显示。加亮的结构的集合被连续地更新,以使得移动的盘如同作为一种选择聚光灯那样地工作。
实施例的交互子系统还执行对被跟踪的手在桌子表面上的高度以及选择盘的半径进行的映射;该映射是反转关系,以使得当操作员将她的手移近桌子时,盘的尺寸减小。选择最大的半径以将合理的“概览”选择作为初始启用的模式。选择最小的半径以使得或多或少可能对单独表面下元素进行选择,该最小的半径是在操作员的手与桌子直接接触时获得的。以这种方式,与显示器表面平行的单个手的平移自由度中的两个被映射到域专用的空间自由度,而第三轴被映射到在应用程序中在概念上是“精确”或者“专用”的参数。
注意,在该交互中,在盘旋和实际的物理桌子接触(触摸)之间没有逻辑上的区别——系统不会归于不同的接触手段。然而,操作员享有由充分接触的可能性带来的具体物理优点:当操作员的手指接触桌面时,选择盘最小,这意味着侧向手运动产生了选择的最大的可能变化(最大的,即相对于盘的尺寸);然而,操作员的手指一旦与表面接触就获得了坚实的位置稳定性。
操作员当然也可以用双手驱动应用程序,以使得一只手进行基于盘旋的元素选择而另一只手用于执行对正前透视图的六自由度的操纵。可替换地,两个操作员可以配合,每人使用一只手。
最后,选择可以通过用第二只不进行盘操纵的手在发光盘的附近轻敲桌子而被“锁定”。该短暂的轻敲活动确实与触摸大不相同。随着选择状态由此冻结,原始的手可以自由地从桌子移开。总之,然后,机制允许用可变的选择半径对空间分布元素的平面选择。
自然地,在实际应用中,其他交互操纵——例如调节应用程序从而使得只对电和气固定装置进行选择——围绕着核心的选择活动。但是,实施例并不限于此。
空间操作环境(SOE)
这里,在空间操作环境(SOE)的背景下描述了空间连续体输入系统的实施例。作为示例,图10是根据实施例的空间操作环境(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制造的相机,诸如ViconMX40相机。该相机包括相机上(on-camera)处理,并能够以1000帧/秒进行图像捕捉。运动捕捉相机能够检测和定位标记。
在所描述的实施例中,相机是用于光学检测的传感器。在其他实施例中,可使用用于电磁、静磁、RFID或任何其他适当类型的检测的相机或其他检测器。
预处理器105用于产生三维空间点重构以及骨架点标注。姿势翻译器106将3D空间信息和标记运动信息转换成可以被计算机处理器解译的语言,以便更新显示器上光标的位置、形状和动作。在SOE 100的可替换实施例中,预处理器105和姿势翻译器106可以集成或组合成单个设备。
计算机107可以是任何通用计算机,诸如由Apple、Dell或任何其他适合的生产商生产的。计算机107运行应用程序,并提供显示输出。光标信息现在来自姿势系统,而不是来自鼠标或其他现有技术的输入设备。
标记标签
实施例的SOE预期使用用户的一个或更多个手指上的标记标签,从而使得系统能够定位用户的手、识别该系统正查看的是左手还是右手以及哪些手指是可见的。这允许该系统检测用户手的位置、取向以及移动。该信息允许多个姿势被系统识别并且被用户用作命令。
在一个实施例中,标记标签为物理标签,其包括基片(在本实施例中适于附在人手上的各个位置)和以独特识别图案设置在基片表面上的离散标记。
所述标记和相关联的外部感测系统可以操作于下述的任何域(光、电磁、静磁等)中,这些域允许准确、精确、快速并连续获取它们的三维空间位置。所述标记自身可以有源地(例如通过发射结构化的电磁脉冲)或者无源地操作(例如通过如本实施例中的光回射方式)。
在获取的每个帧中,检测系统接收所恢复的三维空间位置的聚集“云(cloud)”,所述三维空间位置包括来自在仪表化的工作空间体积(相机或其他检测器的可见范围内)中存在的标签的所有标记。每个标签上的标记具有充分的多样性,并以独特的图案来设置,从而使得该检测系统能够执行以下任务:(1)分段,其中每个被恢复的标记位置被分配给形成单个标签的点的一个且唯一的子集合;(2)做标签,其中每个分段后的点的子集合被标识为特定标签;(3)定位,其中所标识的标签的三维空间位置被恢复;以及(4)取向,其中所标识的标签的三维空间取向被恢复。通过标记图案的特定性质,有可能执行任务(1)和(2),如下所述以及如图11中的一个实施例所示的。
在一个实施例中,标签上的标记被附于常规栅格位置的子集。如本实施例中,在下面的栅格可以是传统的笛卡尔类型;或者替换地可以是某些其他常规平面棋盘式布置(例如三角形的/六边形的平铺排列)。栅格的尺寸和间隔相对于标记感测系统的已知空间分辨率来建立,使得相邻的栅格位置不可能被混淆。针对所有标签的标记图案的选择应该满足以下约束:通过旋转、平移或镜像的任何组合,标签的图案不与任何其他标签的图案重合。可以进一步对标记的多样性和排列进行选择,以容许某特定数目的组成标记的丢失(或闭塞):在任意变换之后,其应该仍然不可能使经折衷的模块与任何其他模块混淆。
现在参考图11,其示出多个标签201A-201E(左手)以及202A-202E(右手)。每个标签是矩形并且在本实施例中组成5×7的栅格阵列。选择矩形形状作为确定标签取向的辅助,并且减少镜像复制的可能性。在所示出的实施例中,针对每个手上的每个手指都有标签。在某些实施例中,每个手使用一个、两个、三个或四个标签可能就足够了。每个标签具有不同灰度或颜色阴影的边界。在该边界内是3×5的栅格阵列。标记(由图11中的黑点表示)被设置于栅格阵列中的某些点处,以便提供信息。
通过将每个图案分段成“共同”和“独特”的子图案,可以将资格信息编码到标签的标记图案中。例如,本实施例规定了两个可能的“边界图案”,即矩形边界线周围的标记的分布。由此建立了标签“家族”——计划用于左手的标签可能因此全部使用如标签201A-201E中所示的相同边界图案,而那些附着于右手手指的标签可被分配如标签202A-202E中所示的不同图案。选择该子图案使得在标签的所有取向中左图案可区别于右图案。在所示的示例中,左手图案包括在每个拐角中的标记以及从拐角栅格位置起的第二个中的标记。右手图案仅在两个拐角中具有标记并在非拐角栅格位置中具有两个标记。对图案的检查表明,只要四个标记中的任何三个是可见的,左手图案就肯定能够区别于右手图案。在一个实施例中,也可使用边界的颜色或阴影作为偏手性(handedness)的指示。
当然每个标签必须仍然采用独特的内部图案,即分布于其家族的公共边界内的标记。在所示出的实施例中,已经发现:由于手指的旋转或取向,内部栅格阵列中的两个标记足以没有重复地唯一标识十个手指中的每个。即使标记之一被闭塞,标签的图案及偏手性的组合也导致唯一的标识符。
在本实施例中,栅格位置在视觉上呈现在刚性基片上,作为对将每个回射标记附在其预期位置的(手动)任务的辅助。这些栅格和预期标记位置通过彩色喷墨打印机被逐字打印到基片上,所述基片在这里是一片(初始地)柔软的“收缩膜”。每个模块被从该片切下来,然后被烘烤,在该热处理期间,每个模块经受精确并可重复的收缩。在该过程后的短暂间隔内,冷却的标签可被轻微成型——例如,沿手指的长度曲线;其后,基片是适度刚性的,且标记可以附在所指示的栅格点。
在一个实施例中,标记自身是三维的,如通过粘合剂或某些其他适当方式附于基片的小的反射球。标记的三维性比二维标记更有助于检测和定位。不过,两者均可以使用,而不脱离在此描述的SOE的精神和范围。
目前,标签通过维可牢(Velcro)或其他适当方式被附于操作员所戴的手套上,或者可替换地,使用温和的双面胶带直接附于操作员的手指上。在第三实施例中,可以与刚性基片一起分配,并将各标记直接附于或“绘制”在操作员的手指和手上。
姿势词汇
实施例的SOE预期有包括手姿态、取向、手组合以及取向混合的姿势词汇。在SOE的姿势词汇中,还实施了符号语言(notation language)用来设计并传达姿态和姿势。姿势词汇是用于以紧凑的文本形式来表示运动联接(kinematic linkage)的瞬时“姿态状态”的系统。这里所讨论的联接可以是生物学的(例如人手,或者整个人体;或者蝗虫腿;或者狐猴的关节脊柱),或者替代地可以是非生物的(例如机器人手臂)。在任何情况下,所述联接可以是单个的(脊柱)或者是分支的(手)。SOE的姿势词汇系统针对任何特定的联接建立固定长度的字符串;因此,占据字符串“字符位置”的特定ASCII字符的聚集是所述联接的瞬时状态或“姿势”的唯一描述。
手姿态
图12示出了根据本实施例的SOE的姿势词汇实施例中的手姿态。SOE假设一只手的五个手指中的每个都被使用。这些手指的代码为p-小手指、r-无名指、m-中指、i-食指以及t-拇指。图12定义并示出了针对手指和拇指的多个姿态。姿势词汇字符串针对联接(本例中为手指)中的每个可表达的自由度建立单个字符位置。此外,每个这样的自由度被理解为离散化的(或“量化的”),从而可通过在该字符串位置分配有限数目的标准ASCII字符中的一个来表示其全范围的运动。这些自由度是相对于特定于体部的原点及坐标系统(手背、蝗虫体部的中心;机器人手臂的基部等)来表达的。因此,使用少量的附加姿势词汇字符位置,在更全局的坐标系统中来表达作为整体的所述联接的位置和取向。
仍然参考图12,使用ASCII字符来定义和标识了多个姿态。某些姿态被分成拇指的和非拇指的。本实施例中的SOE用编码,使得ASCII字符本身就是姿态的暗示。不过,任何字符都可用于表示姿态,无论是暗示性的与否。另外,本实施例并不要求使用ASCII字符用于记号字符串。任何合适的符号、数字或其他表示都可使用,而不脱离本发明的范围和精神。例如,如果需要,所述记号可以针对每个手势使用两个比特,或者根据需要来使用其他数目的比特。
弯曲的手指由字符“^”来表示,而弯曲的拇指由“>”表示。向上指的伸直的手指或拇指由“1”指示,而某个角度的手指或拇指由“\”或“/”表示。“-”表示直指向侧面的拇指,而“x”表示指向平面内的拇指。
使用这些单独的手指和拇指描述。可以使用本发明的方案来定义和书写稳健数目的手姿态。每个姿态由五个字符利用上述的p-r-m-i-t顺序来表示。图12图示了多个姿态,且以图示和示例的方式在此描述其中的一些。保持平并平行于地面的手表示为“11111”。拳表示为“^^^^>”。“OK”标志表示为“111^>”。
当使用暗示性字符时,字符串提供了直接的“人可读性”的机会。通常着眼于快速识别和明显相似性来选择描述每个自由度的可能的字符集。例如,数杠(‘|’)可能意味着联接元素为“直的”,(‘L’)可能意味着90度的弯曲,而弯曲形(‘^’)可指示急剧的弯曲。如上所述,可以根据需要来使用任何字符或编码。
采用如上所述的姿势词汇字符串的任何系统在此享受高计算效率的字符串比较的好处——识别或搜索任何指定的姿态完全变成在期望的姿态字符串和瞬时的真实字符串之间进行的“字符串比较”(例如,UNIX的‘strcmp()’功能)。此外,“通配符”的使用为编程人员或系统设计者提供了额外的熟悉效率和功效:瞬时状态与匹配无关的自由度可以被指定为问号(‘?’);可以分配另外的通配符含义。
取向
除手指和拇指的姿态以外,手的取向也可以表示信息。描述全局空间取向的字符也可以显然地选择出来;当在取向字符位置中遇到字符‘<’、‘>’、‘^’以及‘<’时,其可以用于指示左、右、上和下的意思。图13图示了手取向描述符以及组合了姿态和取向的编码示例。在一个实施例中,两个字符位置首先指定手掌的方向,其次是手指的方向(如果假设手指是直的,则不考虑手指的实际弯曲)。针对这两个位置的可能的字符表示了取向的‘体部为中心’概念:‘-’、‘+’、‘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预期单手命令和姿态以及两只手的命令和姿态。图14图示了SOE的实施例中的两手组合和相关联符号。回顾第一示例中的符号,“完全停止(full stop)”表明其包括两个闭合的拳。“快照”示例中,每只手的拇指和食指伸展,拇指彼此互指,定义球门柱形的框。“舵和节流阀开始位置”为手指和拇指指向上、手掌朝向屏幕。
取向混合
图15图示了SOE的实施例中的取向混合的一个示例。在所示出的示例中,所述混合通过将取向符号对放入在手指姿态字符串之后的括号中来表示。例如,第一命令显示了全部直指的手指位置。第一对取向命令将导致手掌平朝向显示器,而第二对使手旋转到向着屏幕45度的斜度。尽管在该示例中示出了混合对,但SOE中预期任何数量的混合。
示例命令
图17图示了可以与SOE一起使用的多个可能的命令。尽管这里的某些讨论是关于对显示器上光标的控制,但是SOE不限于该行为。实际上,SOE可广泛应用于操纵屏幕上的任何和全部的数据及部分数据以及显示的状态。例如,在视频媒体的回放期间,可用所述命令来取代视频控制。所述命令可以用于暂停、快进、回退等。另外,可以实施命令来放大或缩小图像、改变图像的取向、在任何方向上摇动等。SOE还可用于代替菜单命令,如打开、关闭、保持等。换句话说,能够想象到的任何命令或行为都可以利用手姿势来实现。
操作
图16是图示了一个实施例中的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程序还可以在运行过程中使用,从而使接口特性在运动时改变。这种接口的实时改变使得下述行为成为可能:
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还提供了操作员可以凭意愿获取附加的上下文的有效方法:一种用于理解(无论是空间的、概念的还是计算的)附近或邻域的快速技术。
在某些实施例中,后推技术可以使用传统的输入设备(例如鼠标、跟踪球、集成的滑块或钮)或者可以依赖于操作员自己身体外的加了标签的或者被跟踪的对象(例如仪器化的运动联接、静磁跟踪的“输入砖”)。在其他可替换的实施例中,后推实施方式可以胜任作为整个控制系统。
实施例的SEO是更大的空间交互系统的组成并且集成在该更大的空间交互系统中,该SEO代替通常的基于鼠标的图形用户接口(‘WIMP’UI)方法用于控制计算机,代替地,SEO包括:(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)驱动的用于数据交换(例如本地存储器、盘、网络等)的灵活机制。此外,描述的实施例使得以不同的编程语言编写的进程之间的数据交换成为可能。另外,在此描述的实施例使得数据缓存和聚集状态的自动维护成为可能。
图18是根据实施例的包括使用色拉、蛋白质和池的数据表示的处理环境的框图。在此呈现的实施例的主要构造包括色拉、蛋白质和池。在此描述的色拉包括用于有效的不依赖于平台的数据表示和访问机制。在此详细描述的蛋白质提供数据封装和传输方案,并且实施例的蛋白质的有效载荷包括色拉。在此描述的池提供蛋白质的结构化但却灵活的聚集、排序、过滤和分配。池在进程之内、在局域进程当中、跨越远程或分布式进程之间的网络并且经由“较长期”(例如盘上)存储装置借助于蛋白质提供对数据的访问。
图19是根据实施例的蛋白质的框图。蛋白质包括长度头部、记述和摄取。如下面详细描述的那样,记述和摄取中的每一个都包括一个或更多个色拉。
图20是根据实施例的记述的框图。如下面详细描述的那样,记述包括偏移、长度和色拉。
图21是根据实施例的摄取的框图。如下面详细描述的那样,摄取包括偏移、长度和色拉。
图22是根据实施例的色拉的框图。如下面详细描述的那样,色拉包括类型头部和类型专用数据。
图23A是根据实施例的池中蛋白质的框图。蛋白质包括长度头部(“蛋白质长度”)、记述偏移、摄取偏移、记述和摄取。记述包括偏移、长度和色拉。摄取包括偏移、长度和色拉。
如在此描述的蛋白质是用于封装数据的机制,其中,所述数据需要在进程之间共享,或者需要跨越总线或网络或其他处理结构而移动。作为例子,蛋白质提供了用于传输和操纵数据的改进机制,其中,所述数据包括对应于或者关联于用户接口事件的数据;特别地,实施例的用户接口事件包括上述姿势接口的用户接口事件。作为进一步的例子,蛋白质提供了用于传输和操纵数据的改进机制,其中,所述数据包括但不限于图形数据或事件以及状态信息,这只是举几个例子。蛋白质是结构化的记录格式和用于操纵记录的方法的相关集合。如在此使用的对记录的操纵包括将数据放到结构中、将数据从结构取出以及查询数据的格式和存在。蛋白质配置成经由以多种计算机语言编写的代码来使用。如在此描述的那样,蛋白质还被配置成是用于池的基本构筑块。此外,蛋白质被配置成天然地能够在处理器之间并跨越网络移动,同时维持它们包括的数据原封不动。
与传统的数据传输机制形成对照,蛋白质是未定型的。虽然是未定型的,但是蛋白质提供了强大且灵活的模式匹配设施,在其上实施“类型相似”功能。如在此描述的那样配置的蛋白质还固有地为多点(尽管点对点形式作为多点传输的子集容易实现)。另外,蛋白质定义了“通用”记录格式,其例如在存储器内、盘上和线(网络)上格式之间并无不同(或者仅在所执行的可选优化的类型方面不同)。
参考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设施:创建特定类型的新色拉;创建或建立对来自盘上或存储器内字节的色拉的语言专用引用;以类型专用方式将数据嵌入色拉之内;查询色拉的尺寸;从色拉之内检索数据;克隆色拉;以及翻译色拉之内全部数据的端和其他格式属性。每个色拉都执行上述行为。
图23B示出了根据实施例的色拉头部格式。色拉的详细描述如下。
每个色拉的内部结构都优化类型分辨、对封装数据的访问以及用于该色拉实例的尺寸信息中的每一个。在实施例中,色拉类型的完全集合被设计得最小程度地完全,并且包括:色拉串;色拉对(cons)(亦即对);色拉列表;以及色拉数字对象,其自身表示成被理解为半打排列或这种基本属性的单独数字类型的广泛集合。任何色拉的其他基本性质是其尺寸。在实施例中,色拉具有量化成四的倍数的字节长度;这些四字节字在此被称为“四元组(quad)”。一般而言,这样的基于四的尺寸定位使得色拉与现代计算机硬件体系结构的配置良好对齐。
实施例中的每个色拉的前四个字节包括头部结构,其编码了类型描述和其他元信息,并且将特定类型意义归因于具体位模式。例如,色拉头部的第一个(最高有效)位用于指定该色拉的尺寸(以四字的长度计)是否遵循初始四字节类型头部。当这个位被设置时,可以理解的是,色拉的尺寸明确地记录在色拉的下四个字节中(例如字节五至八);如果色拉的尺寸不能以四个字节来表示(亦即,如果尺寸是或大于二的三十二次幂),那么色拉的初始四个字节的下一个最高有效位也被设置,这表明色拉具有八字节(而不是四字节)长度。在这种情况下,检查过程会发现存储在顺序字节五至十二中的色拉长度。另一方面,小数目的色拉类型意味着在许多情况下完全指定的典型的位模式“留下未使用”四字节色拉头部中的许多位;并且在这样的情况下这些位可以用于编码色拉的长度,节省否则会需要的字节(五至八)。
例如,实施例留下色拉头部的最高有效位(“长度跟随”旗标)未设置,并且设置下一位以指示色拉是“微对(wee cons)”,并且在这种情况下色拉的长度(以四计)被编码在剩余的三十位中。类似地,“微串(weestring)”用头部中的模式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的寄存器中时,存储器控制器硬件自身执行转换。
实施例的最小(和只读)蛋白质实施包括利用蛋白质的一个或更多个应用程序或编程语言中的操作或行为。图23C是根据实施例的用于使用蛋白质的流程图650。操作开始于查询652蛋白质的以字节计的长度。查询记述条目的数目654。查询摄取的条目656。通过指数检索658记述条目。通过指数检索660摄取。
在此描述的实施例还定义了允许蛋白质被构造并填充以数据的基本方法、使一般任务对程序员更容易的助手方法以及用于创建优化的钩子。图23D是根据实施例的用于构造或生成蛋白质的流程图670。操作开始于创建672新蛋白质。一系列的记述条目被附加674。摄取也被附加676。查询匹配记述的存在678,并且查询匹配摄取关键字的存在680。给定摄取关键字,摄取值被检索682。跨越记述执行684模式匹配。在蛋白质的开始附近嵌入686非结构化的元数据。
如上所述,色拉提供最低水平的用于进程间交换的数据定义,蛋白质提供中等水平的用于查询和过滤的结构和钩子,而池则提供高水平的组织和访问语义。池是用于蛋白质的仓库,提供线性序列和状态缓存。池还提供通过众多不同类型的多个程序或应用程序进行的多程序访问。此外,池提供一组共同的可优化的过滤和模式匹配行为。
可以容纳成千上万个蛋白质的实施例的池起作用以维持状态,以便单独的进程可以卸载对多进程程序代码共同的大多数冗长簿记。池维持或保持过去可用蛋白质的大缓冲器--柏拉图式理想的(Platonic)池明确地无限--以便参与的进程可以随意在池中向后和向前扫描。缓冲器的尺寸当然依赖于实施方式,但是在通常使用中常常可以将蛋白质保持在池中以小时或天计。
与现有的进程间通信框架所采取的机械式点对点方法形成对照,如在此所述的池使用的最通常的风格遵守生物学比喻。名称蛋白质暗指生物学灵感:池中的数据蛋白质可用于大量计算进程进行的灵活查询和模式匹配,就像活体组织中的化学蛋白质可用于大量细胞试剂进行的模式匹配和过滤。
两个另外的抽象依靠生物学比喻,包括使用“处理机(handler)”和高尔基(Golgi)框架。参与池的进程一般创建若干处理机。处理机是将匹配条件与处理行为相关联的相对小束的代码。通过将一个或更多个处理机联系到池,进程设立封装状态的灵活的回叫触发,并对新的蛋白质起反应。
参与几个池的进程一般从抽象高尔基类继承。高尔基框架提供若干有用的例程,用于管理多个池和处理机。高尔基类还封装双亲-子女关系,提供不使用池的本地蛋白质交换的机制。
根据实施例提供的池API配置成允许池以多种方式实施,以便既考虑系统专用目标,又考虑给定硬件和网络体系结构的可用能力。池所依靠的两个基本系统规定是存储设施和进程间通信的设备。在此描述的现存系统使用以下的灵活组合:共享存储器、虚拟存储器和用于存储设施的盘以及用于进程间通信的TCP/IP套接字和IPC队列。
实施例的池功能包括但不限于以下:参与池;将蛋白质放置在池中;从池中检索下一个未看到的蛋白质;反绕或快进池内的内容(例如蛋白质)。另外,池功能可以包括但不限于以下:设立用于进程的流池回叫;选择性地检索匹配记述或摄取关键字的特殊模式的蛋白质;向后和向前扫描匹配记述或摄取关键字的特殊模式的蛋白质。
上述蛋白质被提供给池,作为与其他应用程序共享蛋白质数据内容的方式。图24是根据实施例的包括使用色拉、蛋白质和池的数据交换的处理环境的框图。这个实例环境包括三个设备(例如设备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,等等)。虽然上面描述的例子包括耦接或连接在三个池当中的三个设备,但是任何数目的设备可以以任何方式或组合来耦接或连接在任何数目的池当中,并且任何池可以包括从任何数目或组合的设备中贡献的任何数目的蛋白质。这个例子的蛋白质和池如上所述参考图18-23。
图25是根据实施例的下述处理环境的框图,该处理环境包括多个设备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等离子体构造(例如池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。这个系统只是多用户、多设备、多计算机交互控制场景或配置的一个例子。更加具体地,在这个例子中,包括多个设备(例如设备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在蛋白质数据所对应的处理事件中可以使用蛋白质的数据。
耦接或连接到池的设备和/或程序可以在池中向后和向前浏览以查找具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其他蛋白质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的依靠。
图26是根据替换实施例的下述处理环境的框图,该处理环境包括多个设备和在所述设备中的一个或更多个设备上运行的众多程序,其中,等离子体构造(例如池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。这个系统只是多用户、多设备、多计算机交互控制场景或配置的一个例子。更加具体地,在这个例子中,包括多个设备(例如分别耦接到设备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等等)并将那些蛋白质存放到池中。
每个蛋白质都包括记述列表,其指定通过输入设备注册的动作以及用于设备自身的识别信息。在可能的情况下,蛋白质记述也可以给予设备动作以一般语义意义。蛋白质的数据有效载荷(例如摄取)承载了用于设备事件的有用状态信息的全部集合。
如上所述,蛋白质在由耦接或连接到池的任何程序或设备使用的池中是可用的,而不管程序或设备的类型。因此,在任何数目的计算机上运行的任何数目的程序都可以从输入池中提取事件蛋白质。这些设备只需能够经由本地存储器总线或网络连接而参与池,以便从池中提取蛋白质。这个的直接后果是以下有益的可能性:将负责生成处理事件的进程与使用或解译事件的进程解耦。另一个后果是事件的源和消费者的多路化,以便输入设备可以由一个人控制或者可以由几个人同时使用(例如基于等离子体的输入框架支持许多并发用户),同时作为结果的事件流对多个事件消费者依次可见。
耦接或连接到池的设备和/或程序可以在池中向后和向前浏览以查找具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其他蛋白质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的依靠。
图27是根据另一个替换实施例的下述处理环境的框图,该处理环境包括多个输入设备,所述多个输入设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。这个系统只是多用户、多设备、多计算机交互控制场景或配置的一个例子。更加具体地,在这个例子中,包括多个输入设备(例如输入设备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的输入事件时可以使用蛋白质的数据。
耦接或连接到池的设备和/或程序可以在池中向后和向前浏览以查找具体的蛋白质序列。通常有用的是,例如设立程序以等待匹配一定模式的蛋白质出现,然后向后浏览以确定这个蛋白质是否已连同一定的其他蛋白质一起出现。用于利用输入池中的存储的事件历史的这种设施通常使编写状态管理代码不必要,或者至少显著减少对这样的不希望有的编码模式的依靠。
在此描述的系统实施例中使用的输入设备的例子包括如消费电子产品中使用的姿势输入传感器、键盘、鼠标、红外线遥控器以及面向任务的触媒对象,这只是举几个例子。
图28是根据又一个替换实施例的下述处理环境的框图,该处理环境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许众多运行的程序共享并集体地响应由设备所生成的事件。这个系统只是包括多个运行程序(例如图形A-E)和一个或更多个显示设备(未示出)的系统的一个例子,其中,使得程序中的一些或全部的图形输出以协调的方式可用于其他程序,使用等离子体构造(例如池、蛋白质和色拉)以允许运行的程序共享并对设备所生产的图形事件集体作出反应。
对于计算机程序而言通常有用的是显示由另一个程序生成的图形。几个通常的例子包括视频会议应用程序、基于网络的放映幻灯片和演示程序以及视窗管理器。在这种配置下,池用作等离子体库以实施一般化的框架,该框架封装视频、网络应用程序共享和视窗管理,并允许程序员添加在这种程序的当前版本中通常不可用的若干特征。
在等离子体组成环境中运行的程序(例如图形A-E)通过耦接和/或连接到池而参与协调池。每个程序都可以将蛋白质放在该池中,以指示不同类型的图形源的可用性。可用于显示图形的程序也存放蛋白质,以指示它们显示的能力、安全和用户简档以及物理和网络位置。
图形数据也可以通过池传输,或者显示程序可以指向其他种类的网络资源(例如RTSP流)。如在此使用的短语“图形数据”指的是依赖宽阔连续区的多种不同表示;图形数据的例子包括但不限于文字例子(例如“图像”或像素块)、程序性例子(例如“绘图”指示的序列,诸如流下典型的openGL流水线)以及描述性例子(例如借助于几何转换、裁剪和合成操作来组合其他图形构造的指令)。
在本地机器上,图形数据可以通过平台专用显示驱动器优化来递送。即使当图形没有经由池传输时,通常周期性的屏幕捕捉也会存储在协调池中,以便客户在不直接访问更深奥的源的情况下仍然可以显示后退图形。
在此描述的系统的一个优点在于,与大多数消息传递框架和网络协议不同,池维持数据的显著缓冲。所以程序可以向后回绕到池中以查看访问和使用模式(在协调池的情况下)或者提取以前的图形帧(在图形池的情况下)。
图29是根据再一个替换实施例的下述处理环境的框图,该处理环境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许对运行的程序进行状态检查、可视化和调试。这个系统只是包括多个设备(例如设备A、设备B等等)上的多个运行程序(例如程序P-A、程序P-B等等)的系统的一个例子,其中,一些程序使用或经由池访问其他程序的内部状态。
大多数交互计算机系统包括彼此并排运行的许多程序,它们或者在单个机器上或者在多个机器上,并且跨越网络进行交互。多程序系统可能难以配置、分析和调试,因为运行时间数据隐藏在每个进程内部并难以访问。在此描述的实施例的一般化框架和等离子体构造允许运行的程序使许多它们的数据经由池可用,以便其他程序可以检查它们的状态。这个框架启用比传统调试器更灵活的调试工具、复杂的系统维护工具以及可视化装备,所述可视化装备配置成允许人工操作员详细地分析一个或更多个程序已经过的状态的序列。
参考图29,在这个框架中运行的程序(例如程序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不仅向所述进程池中写入而且还从中读取)。
图30是根据另外的可替换实施例的下述处理环境的框图,该处理环境包括多个设备,所述多个设备耦接在运行于设备中的一个或更多个设备上的众多程序当中,其中,等离子体构造(例如池、蛋白质和色拉)用于允许影响或控制该进程池中产生和放置的状态信息的特性。在这个系统示例中,设备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等等),并且如对报告的内容适当的那样采取随后的处理动作。
用这种方式,使用等离子体作为互换介质最终趋于侵蚀调试、进程控制以及程序对程序通信与协调之间的区别。
最后,一般化的等离子体框架允许可视化和分析程序以松散耦接的方式设计。例如显示存储器访问模式的可视化工具可以结合输出其基本存储器读取和写入至池的任何程序一起使用。经历分析的程序不需要知道可视化工具的存在或设计,反之亦然。
以上述方式使用池并不过度影响系统性能。例如,实施例已允许在池中每秒存放几十万个蛋白质,以便使得即使相对冗长的数据输出也能够不显著地抑制大多数程序的响应性或交互特征。
在此描述的实施例包括一种方法,该方法包括:核对来自多个源的输入数据。所述输入数据是对象在所述对象的参照系中的瞬时空间和几何状态的语义上不相关的三维空间数据。实施例的方法包括将所述输入数据适配成时空数据流。所述流中的所述时空数据是统一表示的。实施例的方法包括使用多个姿势描述从所述时空数据中生成姿势事件。实施例的方法包括将所述姿势事件表示在原事件中,所述原事件包括是应用程序中立的并且充分连贯的数据格式。实施例的方法包括分配所述姿势事件以及提供由至少一个事件消费者经由对应的原事件在所述至少一个事件消费者的空间语义的参照系中对所述姿势事件的访问。
在此描述的实施例包括一种方法,该方法包括:核对来自多个源的输入数据。所述输入数据是对象在所述对象的参照系中的瞬时空间和几何状态的语义上不相关的三维空间数据;将所述输入数据相配成时空数据流,其中,所述流中的所述时空数据是统一表示的;使用多个姿势描述从所述时空数据中生成姿势事件;将所述姿势事件表示在原事件中,所述原事件包括是应用程序中立的并且充分连贯的数据格式;以及,分配所述姿势事件以及提供由至少一个事件消费者经由对应的原事件在所述至少一个事件消费者的空间语义的参照系中对所述姿势事件的访问。
实施例的所述输入数据包括所述对象的不受约束的自由空间姿势数据。
当所述对象是在相对于表面的接近的范围之内和在已定义的体积之内中的至少一种时,实施例的所述输入数据包括所述对象的近似姿势数据。
实施例的所述输入数据包括当所述对象在与表面邻近的平面内时所述对象的盘旋姿势数据。
实施例的所述输入数据包括当所述对象与表面接触时所述对象的表面接触姿势数据。
实施例的所述输入数据包括多个数据流。
实施例的所述方法包括在时间上对准所述多个数据流。
实施例的所述方法包括根据所述多个数据流空间地接合事件,并且生成单个合成事件。
实施例的所述方法包括执行语义上的聚集,所述语义上的聚集包括收集从先前操作所得到的相关事件。
实施例的所述方法包括执行对元信息加标签。
实施例的所述方法包括从光学运动跟踪系统、渡越时间跟踪系统、电场感测系统和触摸屏设备中的至少一个接收所述输入数据。
实施例的所述方法包括从光学运动跟踪系统接收所述输入数据。
实施例的所述方法包括从渡越时间跟踪系统接收所述输入数据。
实施例的所述方法包括从触摸屏设备接收所述输入数据。
实施例的所述方法包括从电场感测系统接收所述输入数据。
实施例的所述方法包括从电容性感测系统接收所述输入数据。
实施例的所述方法包括接收包括所述对象的三维空间位置的所述时空数据。
实施例的所述方法包括接收包括所述对象的三维空间取向的所述时空数据。
实施例的所述方法包括接收包括所述对象的运动的所述时空数据。
实施例的所述方法包括接收包括多个元件中的至少一个元件的主体三维空间位置的所述时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
实施例的所述方法包括接收包括多个元件中的至少一个元件的主体三维空间取向的所述时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
实施例的所述方法包括接收包括多个元件中的至少一个元件的主体运动的所述时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
实施例的所述方法包括接收包括有包括所述对象的多个元件的姿态的语义上的摄取。
实施例的所述方法包括比较所述时空数据与所述姿势描述。
实施例的所述方法包括响应于时空数据和姿势描述之间的匹配来生成所述原事件,其中,所述原事件包括有包括匹配的时空数据的摄取的数据格式,该数据格式在匹配的姿势描述的语义上下文中被解译。
实施例的所述方法包括提供多个识别器,其中,每个识别器都包括姿势描述。
实施例的所述方法包括对所述多个识别器执行多个操作,其中,所述多个操作包括将所述识别器分等级。
实施例的所述方法包括对所述多个识别器执行多个操作,其中,所述多个操作包括添加识别器。
实施例的所述方法包括对所述多个识别器执行多个操作,其中,所述多个操作包括移除识别器。
实施例的所述方法包括对所述多个识别器执行多个操作,其中,所述多个操作包括修改识别器。
实施例的所述方法包括对所述多个识别器执行多个操作,其中,所述多个操作包括重新配置识别器。
实施例的识别器在时空数据与所述识别器的激活准则匹配之前保持休眠。
当所述时空数据的几何方面和时空方面与激活准则匹配时,实施例的识别器成为激活的。
只要所述时空数据满足所述识别器的维持准则,实施例的所述识别器就保持激活。
当所述时空数据未能满足激活准则时,实施例的所述识别器成为停用的。
实施例的所述方法包括将所述原事件存储在至少一个知识库中用于由所述至少一个事件消费者的访问。
实施例的所述方法包括设置所述至少一个事件消费者的列表。
实施例的所述方法包括将所生成的每个原事件异步地传送到所述至少一个事件消费者中的每个事件消费者。
实施例的所述方法包括将所生成的每个原事件同步地传送到所述至少一个事件消费者中的每个事件消费者。
实施例的所述方法包括在与多个事件消费者对应的多个空间语义参照系中变换所述姿势事件。
实施例的所述方法包括将所述姿势事件重新描绘在所述至少一个事件消费者的空间语义参照系中。
实施例的所述方法包括通过下述方式生成所述原事件:生成至少一个数据序列,所述数据序列包括指定了所述姿势事件的姿势事件数据和所述姿势事件的状态信息;以及形成数据容器以包括所述至少一个数据序列,所述数据容器具有包括所述至少一个数据序列的独立于应用程序的表示的数据结构。
实施例的生成所述至少一个数据序列包括生成包括第一各自姿势事件数据的第一各自数据集。生成所述至少一个数据序列包括生成包括第二各自状态信息的第二各自数据集。生成所述至少一个数据序列包括形成第一数据序列以包括所述第一各自数据集和所述第二各自数据集。
实施例的生成所述至少一个数据序列包括生成包括第一各自姿势事件数据的第一各自数据集。生成所述至少一个数据序列包括生成包括第二各自状态信息的第二各自数据集。生成所述至少一个数据序列包括形成第二数据序列以包括所述第一各自数据集和所述第二各自数据集。
实施例的生成所述第一各自数据集包括生成第一各自数据集偏移,其中,所述第一各自数据集偏移指向所述第二数据序列的所述第一各自数据集。
实施例的生成所述第二各自数据集包括生成第二各自数据集偏移,其中,所述第二各自数据集偏移指向所述第二数据序列的所述第二各自数据集。
实施例的所述第一各自数据集是描述列表,所述描述列表包括对所述数据的描述。
实施例的所述的方法包括生成至少一个偏移。实施例的所述的方法包括形成所述数据容器以包括所述至少一个偏移。
实施例的所述的方法包括生成具有第一可变长度的第一偏移。所述第一偏移指向所述至少一个数据序列中的第一数据序列的姿势事件数据。
实施例的所述的方法包括生成具有第二可变长度的第二偏移。所述第二偏移指向所述至少一个数据序列中的第一数据序列的状态信息。
实施例的所述的方法包括使用所述至少一个偏移中的第一偏移通过所述数据容器形成第一代码路径。实施例的所述的方法包括使用所述至少一个偏移中的第二偏移通过所述数据容器形成第二代码路径。所述第一代码路径和所述第二代码路径是不同的路径。
实施例的所述第一偏移和所述第二偏移中的至少一个包括元数据,所述元数据包括上下文专用元数据。
实施例的所述至少一个事件消费者是多个交互式系统中的至少一个交互式系统,其中,所述多个交互式系统包括多个参照系。
实施例的所述至少一个事件消费者使用专用于所述至少一个事件消费者的应用程序类型来消费所述原事件。
实施例的所述至少一个事件消费者包括具有第一参照系的第一交互式系统以及具有第二参照系的第二交互式系统。
实施例的所述第一交互式系统使用第一应用程序类型来消费所述原事件,而所述第二交互式系统使用第二应用程序类型来消费所述原事件。
实施例的所述对象是人手。
实施例的所述对象是人手的至少一根手指。
实施例的所述对象包括至少一个人手和人手的至少一根手指。
在此描述的实施例包括一种方法,所述方法包括核对来自多个源的输入数据。所述输入数据是与对象对应的在语义上不相关的三维空间数据。所述多个源包括全异的源。实施例的所述方法包括从所述输入数据中描绘所述对象的多个空间事件。所述多个空间事件包括相对于全局空间的适配坐标的表示。实施例的所述方法包括根据所述空间事件生成所述空间事件的聚集。所述聚集是包括所述对象的文字几何和语义上的特性的逻辑聚集。实施例的所述方法包括根据所述空间事件的所述聚集检测姿势且消除姿势的歧义。实施例的所述方法包括生成表示所述姿势的数据束。所述数据束是中立描述的。实施例的所述方法包括分配所述数据束用于由多个全异的应用的消费。
在此描述的实施例包括一种方法,所述方法包括:核对来自多个源的输入数据,其中,所述输入数据是与对象对应的在语义上不相关的三维空间数据,其中,所述多个源包括全异的源;从所述输入数据中描绘所述对象的多个空间事件,其中,所述多个空间事件包括相对于全局空间的统一坐标的表示;根据所述空间事件生成所述空间事件的聚集,其中,所述聚集是包括所述对象的文字几何和语义上的特性的逻辑聚集;根据所述空间事件的所述聚集检测姿势且消除姿势的歧义;生成表示所述姿势的数据束,其中,所述数据束是中立描述的;以及分配所述数据束用于由多个全异的应用程序的消费。
在此描述的实施例包括一种系统,所述系统包括:数据漏斗,所述数据漏斗耦接到处理器。所述数据漏斗核对来自多个源的输入数据。所述输入数据是对象在所述对象的参照系中的瞬时空间和几何状态的语义上不相关的三维空间数据。所述多个数据源包括全异的源。所述数据漏斗将所述输入数据相配成时空数据流。所述流中的所述时空数据是统一表示的。实施例的所述系统包括姿势引擎,所述姿势引擎耦接到所述数据漏斗。所述姿势引擎使用多个姿势描述从所述时空数据中生成姿势事件。所述姿势引擎将所述姿势事件表示在原事件中,所述原事件包括是应用程序中立的并且充分连贯的数据格式。实施例的所述系统包括分配器,所述分配器耦接到所述姿势引擎。所述分配器提供由至少一个事件消费者经由对应的原事件在所述至少一个事件消费者的空间语义的参照系中对所述姿势事件的访问。
在此描述的实施例包括一种系统,所述系统包括:数据漏斗,所述数据漏斗耦接到处理器,其中,所述数据漏斗核对来自多个源的输入数据,其中,所述输入数据是对象在所述对象的参照系中的瞬时空间和几何状态的语义上不相关的三维空间数据,其中,所述多个数据源包括全异的源,其中,所述数据漏斗将所述输入数据适配成时空数据流,其中,所述流中的所述时空数据是统一表示的;姿势引擎,所述姿势引擎耦接到所述数据漏斗,其中,所述姿势引擎使用多个姿势描述从所述时空数据中生成姿势事件,其中,所述姿势引擎将所述姿势事件表示在原事件中,所述原事件包括是应用程序中立的并且充分连贯的数据格式;以及分配器,所述分配器耦接到所述姿势引擎,其中,所述分配器提供由至少一个事件消费者经由对应的原事件在所述至少一个事件消费者的空间语义的参照系中对所述姿势事件的访问。
实施例的所述输入数据包括所述对象的不受约束的自由空间姿势数据。
当所述对象是在相对于表面的接近的范围之内和在已定义的体积之内中的至少一种时,实施例的所述输入数据包括所述对象的近似姿势数据。
实施例的所述输入数据包括当所述对象在与表面紧邻的空间之内时所述对象的盘旋姿势数据。
实施例的所述输入数据包括当所述对象与表面接触时所述对象的表面接触姿势数据。
实施例的所述输入数据包括多个数据流。
实施例的所述数据漏斗在时间上校准所述多个数据流。
实施例的所述数据漏斗根据所述多个数据流空间地接合事件,并且生成单个合成事件。
实施例的所述数据漏斗执行语义上的聚集,所述语义上的聚集包括收集从所述数据漏斗的先前操作所得到的相关事件。
实施例的所述数据漏斗执行对元信息加标签。
实施例的所述输入数据从光学运动跟踪系统、渡越时间跟踪系统、电场感测系统和触摸屏设备中的至少一个接收。
实施例的所述输入数据从光学运动跟踪系统接收。
实施例的所述输入数据从渡越时间跟踪系统接收。
实施例的所述输入数据从触摸屏设备接收。
实施例的所述输入数据从电场感测系统接收。
实施例的所述输入数据从电容性感测系统接收。
实施例的所述姿势引擎接收包括所述对象的三维空间位置的所述时空数据。
实施例的所述姿势引擎接收包括所述对象的三维空间取向的所述时空数据。
实施例的所述姿势引擎接收包括所述对象的运动的所述时空数据。
实施例的所述姿势引擎接收包括多个元件中的至少一个元件的主体三维空间位置的所述时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
实施例的所述姿势引擎接收包括多个元件中的至少一个元件的主体三维空间取向的所述时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
实施例的所述姿势引擎接收包括多个元件中的至少一个元件的主体运动的所述时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
实施例的所述姿势引擎接收包括有包括所述对象的多个元件的姿态的语义上的摄取的时空数据。
实施例的所述姿势引擎比较所述时空数据与所述姿势描述。
实施例的所述姿势引擎响应于时空数据和姿势描述之间的匹配来生成所述原事件,其中,所述原事件包括有包括匹配的时空数据的摄取的数据格式,该数据格式在匹配的姿势描述的语义上下文中被解译。
实施例的所述姿势引擎包括多个识别器,其中,每个识别器都包括姿势描述。
实施例的所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括将所述识别器分等级。
实施例的所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括添加识别器。
实施例的所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括移除识别器。
实施例的所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括修改识别器。
实施例的所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括重新配置识别器。
实施例的所述识别器在时空数据与所述识别器的激活准则匹配之前保持休眠。
当所述时空数据的几何方面和时空方面与激活准则匹配时,实施例的所述识别器成为激活的。
只要所述时空数据满足所述识别器的维持准则,实施例的所述识别器就保持激活。
当所述时空数据未能满足激活准则时,实施例的所述识别器成为停用的。
实施例的所述分配器将所述原事件存储在至少一个知识库中用于由所述至少一个事件消费者访问。
实施例的所述分配器包括所述至少一个事件消费者的列表。
实施例的所述分配器将由所述姿势引擎生成的每个原事件异步地传送到所述至少一个事件消费者中的每个事件消费者。
实施例的所述分配器将由所述姿势引擎生成的每个原事件同步地传送到所述至少一个事件消费者中的每个事件消费者。
实施例的所述系统,包括变换器,所述变换器耦接到所述至少一个消费者的远程客户端设备,其中,所述变换器将所述姿势事件重新描绘在所述至少一个事件消费者的空间语义参照系中。
实施例的所述分配器包括所述变换器。
实施例的所述姿势引擎通过下述方式生成所述原事件:生成至少一个数据序列,所述数据序列包括指定了所述姿势事件的姿势事件数据和所述姿势事件的状态信息;以及形成数据容器以包括所述至少一个数据序列,所述数据容器具有包括所述至少一个数据序列的独立于应用程序的表示的数据结构。
实施例的生成所述至少一个数据序列包括生成包括第一各自姿势事件数据的第一各自数据集。实施例的生成所述至少一个数据序列包括生成包括第二各自状态信息的第二各自数据集。实施例的生成所述至少一个数据序列包括形成第一数据序列以包括所述第一各自数据集和所述第二各自数据集。
实施例的生成所述至少一个数据序列包括生成包括第一各自姿势事件数据的第一各自数据集。实施例的生成所述至少一个数据序列包括生成包括第二各自状态信息的第二各自数据集。实施例的生成所述至少一个数据序列包括形成第二数据序列以包括所述第一各自数据集和所述第二各自数据集。
实施例的生成所述第一各自数据集包括生成第一各自数据集偏移,其中,所述第一各自数据集偏移指向所述第二数据序列的所述第一各自数据集。
实施例的生成所述第二各自数据集包括生成第二各自数据集偏移,其中,所述第二各自数据集偏移指向所述第二数据序列的所述第二各自数据集。
实施例的所述第一各自数据集是描述列表,所述描述列表包括对所述数据的描述。
实施例的所述系统生成至少一个偏移。实施例的所述系统包括形成所述数据容器以包括所述至少一个偏移。
实施例的所述系统包括生成具有第一可变长度的第一偏移。所述第一偏移指向所述至少一个数据序列中的第一数据序列的姿势事件数据。
实施例的所述系统包括生成具有第二可变长度的第二偏移。所述第二偏移指向所述至少一个数据序列中的第一数据序列的状态信息。
实施例的所述系统包括使用所述至少一个偏移中的第一偏移通过所述数据容器形成第一代码路径。实施例的所述系统包括使用所述至少一个偏移中的第二偏移通过所述数据容器形成第二代码路径。所述第一代码路径和所述第二代码路径是不同的路径。
实施例的所述第一偏移和所述第二偏移中的至少一个包括元数据,所述元数据包括上下文专用元数据。
实施例的至少一个事件消费者是多个交互式系统中的至少一个交互式系统,其中,所述多个交互式系统包括多个参照系。
实施例的至少一个事件消费者使用专用于所述至少一个事件消费者的应用程序类型来消费所述原事件。
实施例的至少一个事件消费者包括具有第一参照系的第一交互式系统以及具有第二参照系的第二交互式系统。
实施例的所述第一交互式系统使用第一应用程序类型来消费所述原事件,而所述第二交互式系统使用第二应用程序类型来消费所述原事件。
实施例的所述对象是人手。
实施例的所述对象是人手的至少一根手指。
实施例的所述对象包括至少一个人手和人手的至少一根手指。
在此描述的实施例包括一种系统,所述系统包括数据漏斗,所述数据漏斗耦接到处理器。所述数据漏斗核对来自多个源的输入数据而且将所述输入数据相配成时空数据流。所述输入数据是主体在时间和空间点处的瞬时状态的绝对三维空间位置数据。实施例的所述系统包括姿势引擎,所述姿势引擎耦接到所述数据漏斗。所述姿势引擎使用多个姿势描述从时空数据中生成姿势事件。所述姿势引擎将每个姿势事件表示在原事件中,所述原事件包括是应用程序中立的数据格式。实施例的所述系统包括分配器,所述分配器耦接到所述姿势引擎。所述分配器提供了通过由多个事件消费者对多个原事件的访问而对所述姿势事件的访问。对所述姿势事件的所述访问是在多个事件消费者的空间语义的参照系中的。
在此描述的实施例包括一种系统,所述系统包括:数据漏斗,所述数据漏斗耦接到处理器,其中,所述数据漏斗核对来自多个源的输入数据而且将所述输入数据相配成时空数据流,其中,所述输入数据是时间和空间点处的体的瞬时状态的绝对三维空间位置数据;姿势引擎,所述姿势引擎耦接到所述数据漏斗,其中,所述姿势引擎使用多个姿势描述从时空数据中生成姿势事件,其中,所述姿势引擎将每个姿势事件表示在原事件中,所述原事件包括是应用程序中立的数据格式;以及分配器,所述分配器耦接到所述姿势引擎,其中,所述分配器提供了通过由多个事件消费者对多个原事件的访问而对所述姿势事件的访问,其中,对所述姿势事件的所述访问是在多个事件消费者的空间语义的参照系中的。
在此描述的系统和方法包括处理系统和/或在处理系统下运行和/或与处理系统相关联。如现有技术中所知的那样,处理系统包括一起操作的基于处理器的设备或计算设备、或者处理系统的或处理设备的组成部分的任何集合。例如,处理系统可以包括便携式计算机、在通信网络中操作的便携式通信设备和/或网络服务器中的一个或更多个。便携式计算机可以是从个人计算机、蜂窝电话、个人数字助理、便携式计算设备和便携式通信设备当中选择的设备的任何数目和/或组合,但不限于此。处理系统可以包括较大计算机系统之内的组成部分。
实施例的处理系统包括至少一个处理器和至少一个存储设备或子系统。处理系统还可以包括或耦接到至少一个数据库。通常在此使用的术语“处理器”指的是任何逻辑处理单元,诸如一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、应用程序专用集成电路(ASIC)等等。处理器和存储器可以整体集成到单个芯片上、分布在主机系统的若干芯片或组成部分当中、和/或由算法的某种组合来提供。在此描述的方法可以在(一个或更多个)软件算法、程序、硬件、部件、电路中的一个或更多个中以任何组合实现。
实施在此描述的系统和方法的系统部件可以位于一起或者位于分开的位置中。因此,实施在此描述的系统和方法的系统部件可以是单个系统的、多个系统的和/或地理上分开的系统的部件。这些部件还可以是单个系统的、多个系统的和/或地理上分开的系统的子部件或子系统。这些部件可以耦接到主机系统的或与该主机系统相耦接的系统的一个或更多个其他部件。
通信路径耦接系统部件并包括用于在部件当中传达或传送文件的任何介质。通信路径包括无线连接、有线连接和混合无线/有线连接。通信路径还包括至网络的耦接或连接,所述网络包括局域网(LAN)、城域网(MAN)、广域网(WAN)、专有网络、局间或尾端网络以及因特网。此外,通信路径还包括可移动固定介质,如软盘、硬盘驱动器、CD-ROM盘以及快闪RAM、通用串行总线(USB)连接、RS-232连接、电话线、总线以及电子邮件消息。
除非上下文明确要求,否则贯穿说明书,单词“包括”等在与排除或穷举的意义相反的包括的意义上阐释;即就是,在“包括但不限于”的意义上阐释。使用单数或复数的单词也分别包括复数或单数。另外,单词“在此”、“在下面”、“在上面”、“以下”以及类似含义的单词指的是作为整体的本申请而不是本申请的任何特殊部分。当在引用两个或更多条目的列表中使用单词“或者”时,该单词覆盖了所有的以下单词解释:列表中的任何条目、列表中的所有条目以及列表中条目的任何组合。
处理环境的实施例的上述描述并不旨在穷举或将描述的系统和方法限制到公开的精确形式。如本领域技术人员将会意识到的那样,虽然为了示意的目的在此描述了处理环境的特定实施例和例子,各种等效修改在其他系统和方法的范围之内都是可能的。在此提供的处理环境的教导可以适用于其他处理系统和方法,而不仅仅是用于上面描述的系统和方法。
上述各种实施例的要素和行为可以进行组合以提供另外的实施例。考虑到上述详细描述,可以对处理环境进行这些以及其他改变。
总体上,在所附权利要求中,不应将术语理解成将实施例限制在本说明书和权利要求中所公开的具体实施例,而是应该将术语理解成包括根据权利要求来操作的所有系统。因此,实施例并不被此处的公开限制,而是实施例的范围完全要由权利要求来确定。
虽然以下以某些权利要求的形式呈现出实施例的某些方面,发明人预期实施例的具有任何数目的权利要求形式的各个方面。因此,发明人在提交了该申请后仍保留有添加附加的权利要求的权利,从而追求这种针对实施例的其他方面的附加的权利要求。

Claims (120)

1.一种用于检测、表示和解译三维空间输入的系统,包括:
数据漏斗,所述数据漏斗耦接到处理器,并且所述数据漏斗被配置成接收包括来自多个源的数据的输入数据,其中,所述输入数据包括与形成姿势期间对象的多个元素中的每个元素对应的数据,所述姿势是所述对象的瞬时空间和几何状态,其中,所述数据漏斗通过空间地接合以及时间上对准来自所述多个源中的每个源的输入数据、将来自所述多个源的输入数据整理为时空数据的单个流,形成单个数据流,其中,所述接合包括根据分配给所述输入数据的权重来选择要包括在所述流中的输入数据,其中,所述权重根据所述对象与源的接近而被分配给每个源的输入数据;
姿势引擎,所述姿势引擎耦接到所述数据漏斗,并且所述姿势引擎被配置成使用多个姿势描述从所述时空数据中生成姿势事件,其中,所述姿势引擎使用应用程序中立的数据格式将所述姿势事件以原事件表示,所述原事件包括作为所述姿势事件的详细描述的数据;以及
分配器,所述分配器耦接到所述姿势引擎,并且所述分配器被配置成提供由至少一个事件消费者经由在所述至少一个事件消费者的参照系中、被提供给所述至少一个事件消费者的对应的原事件对所述姿势事件的访问。
2.根据权利要求1所述的系统,其中,所述输入数据包括所述对象的不受约束的自由空间姿势数据。
3.根据权利要求1所述的系统,其中,当所述对象是在相对于表面的最接近的范围之内和在限定的体积之内中的至少一种时,所述输入数据包括所述对象的近似姿势数据。
4.根据权利要求1所述的系统,其中,所述输入数据包括当所述对象在与表面紧邻的空间之内时所述对象的盘旋姿势数据。
5.根据权利要求1所述的系统,其中,所述输入数据包括当所述对象与表面接触时所述对象的表面接触姿势数据。
6.根据权利要求1所述的系统,其中,所述输入数据包括多个数据流。
7.根据权利要求6所述的系统,其中,所述数据漏斗在时间上对准所述多个数据流。
8.根据权利要求6所述的系统,其中,所述数据漏斗从所述多个数据流空间地接合事件,并且生成单个合成事件。
9.根据权利要求6所述的系统,其中,所述数据漏斗执行语义上的聚集,所述语义上的聚集包括收集从所述数据漏斗的先前操作所得到的相关事件。
10.根据权利要求6所述的系统,其中,所述数据漏斗执行对元信息加标签。
11.根据权利要求6所述的系统,其中,所述输入数据从光学运动跟踪系统、渡越时间跟踪系统、电场感测系统和触摸屏设备中的至少一个接收。
12.根据权利要求1所述的系统,其中,所述输入数据从光学运动跟踪系统接收。
13.根据权利要求1所述的系统,其中,所述输入数据从渡越时间跟踪系统接收。
14.根据权利要求1所述的系统,其中,所述输入数据从触摸屏设备接收。
15.根据权利要求1所述的系统,其中,所述输入数据从电场感测系统接收。
16.根据权利要求1所述的系统,其中,所述输入数据从电容性感测系统接收。
17.根据权利要求1所述的系统,其中,所述姿势引擎接收包括所述对象的三维空间位置的时空数据。
18.根据权利要求1所述的系统,其中,所述姿势引擎接收包括所述对象的三维空间取向的时空数据。
19.根据权利要求1所述的系统,其中,所述姿势引擎接收包括所述对象的运动的时空数据。
20.根据权利要求1所述的系统,其中,所述姿势引擎接收包括多个元件中的至少一个元件的主体三维空间位置的时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
21.根据权利要求1所述的系统,其中,所述姿势引擎接收包括多个元件中的至少一个元件的主体三维空间取向的时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
22.根据权利要求1所述的系统,其中,所述姿势引擎接收包括多个元件中的至少一个元件的主体运动的时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
23.根据权利要求1所述的系统,其中,所述姿势引擎接收包括多个元件的姿态的语义上的摄取的时空数据,所述多个元件包括所述对象。
24.根据权利要求1所述的系统,其中,所述姿势引擎比较所述时空数据与所述姿势描述。
25.根据权利要求24所述的系统,其中,所述姿势引擎响应于时空数据和姿势描述之间的匹配来生成所述原事件,其中,所述原事件包括有包含匹配的时空数据的摄取的数据格式,所述匹配的时空数据在匹配的姿势描述的语义上下文中被解译。
26.根据权利要求1所述的系统,其中,所述姿势引擎包括多个识别器,其中,每个识别器都包括姿势描述。
27.根据权利要求26所述的系统,其中,所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括将识别器分等级。
28.根据权利要求26所述的系统,其中,所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括添加识别器。
29.根据权利要求26所述的系统,其中,所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括移除识别器。
30.根据权利要求26所述的系统,其中,所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括修改识别器。
31.根据权利要求26所述的系统,其中,所述姿势引擎对所述多个识别器执行多个操作,其中,所述多个操作包括重新配置识别器。
32.根据权利要求26所述的系统,其中,所述识别器在时空数据与所述识别器的激活准则匹配之前保持休眠。
33.根据权利要求32所述的系统,其中,当所述时空数据的几何和时空方面与激活准则匹配时,识别器变成激活的。
34.根据权利要求33所述的系统,其中,只要所述时空数据满足所述识别器的维持准则,所述识别器就保持激活。
35.根据权利要求33所述的系统,其中,当所述时空数据不能满足激活准则时,所述识别器变成停用的。
36.根据权利要求1所述的系统,其中,所述分配器将所述原事件存储在至少一个知识库中用于由所述至少一个事件消费者访问。
37.根据权利要求36所述的系统,其中,所述分配器包括所述至少一个事件消费者的列表。
38.根据权利要求37所述的系统,其中,所述分配器将由所述姿势引擎生成的每个原事件异步地传送到所述至少一个事件消费者中的每个事件消费者。
39.根据权利要求37所述的系统,其中,所述分配器将由所述姿势引擎生成的每个原事件同步地传送到所述至少一个事件消费者中的每个事件消费者。
40.根据权利要求1所述的系统,包括变换器,所述变换器耦接到所述至少一个消费者的远程客户端设备,其中,所述变换器将所述姿势事件重新描绘在所述至少一个事件消费者的空间语义参照系中。
41.根据权利要求40所述的系统,其中,所述分配器包括所述变换器。
42.根据权利要求1所述的系统,其中,所述姿势引擎通过下述方式生成所述原事件:生成至少一个数据序列,所述数据序列包括指定所述姿势事件的姿势事件数据和所述姿势事件的状态信息;以及形成数据容器以包括所述至少一个数据序列,所述数据容器具有包括所述至少一个数据序列的独立于应用程序的表示的数据结构。
43.根据权利要求42所述的系统,其中,生成所述至少一个数据序列包括:
生成包括第一各自姿势事件数据的第一各自数据集;
生成包括第二各自状态信息的第二各自数据集;以及
形成第一数据序列以包括所述第一各自数据集和所述第二各自数据集。
44.根据权利要求43所述的系统,其中,生成所述至少一个数据序列包括:
生成包括第一各自姿势事件数据的第一各自数据集;
生成包括第二各自状态信息的第二各自数据集;以及
形成第二数据序列以包括所述第一各自数据集和所述第二各自数据集。
45.根据权利要求44所述的系统,其中,生成所述第一各自数据集包括生成第一各自数据集偏移,其中,所述第一各自数据集偏移指向所述第二数据序列的所述第一各自数据集。
46.根据权利要求44所述的系统,其中,生成所述第二各自数据集包括生成第二各自数据集偏移,其中,所述第二各自数据集偏移指向所述第二数据序列的所述第二各自数据集。
47.根据权利要求43所述的系统,其中,所述第一各自数据集是描述列表,所述描述列表包括对所述数据的描述。
48.根据权利要求42所述的系统,包括:
生成至少一个偏移;以及
形成所述数据容器以包括所述至少一个偏移。
49.根据权利要求48所述的系统,包括:
生成具有第一可变长度的第一偏移;
其中,所述第一偏移指向所述至少一个数据序列中的第一数据序列的姿势事件数据。
50.根据权利要求48所述的系统,包括:
生成具有第二可变长度的第二偏移;
其中,所述第二偏移指向所述至少一个数据序列中的第一数据序列的状态信息。
51.根据权利要求48所述的系统,包括:
使用所述至少一个偏移中的第一偏移通过所述数据容器形成第一代码路径;
使用所述至少一个偏移中的第二偏移通过所述数据容器形成第二代码路径;
其中,所述第一代码路径和所述第二代码路径是不同的路径。
52.根据权利要求51所述的系统,其中,所述第一偏移和所述第二偏移中的至少一个包括元数据,所述元数据包括上下文专用元数据。
53.根据权利要求1所述的系统,其中,所述至少一个事件消费者是多个交互式系统中的至少一个交互式系统,其中,所述多个交互式系统包括多个参照系。
54.根据权利要求53所述的系统,其中,所述至少一个事件消费者使用专用于所述至少一个事件消费者的应用程序类型来消费所述原事件。
55.根据权利要求54所述的系统,其中,所述至少一个事件消费者包括具有第一参照系的第一交互式系统以及具有第二参照系的第二交互式系统。
56.根据权利要求55所述的系统,其中,所述第一交互式系统使用第一应用程序类型来消费所述原事件,而所述第二交互式系统使用第二应用程序类型来消费所述原事件。
57.根据权利要求1所述的系统,其中,所述对象是人手。
58.根据权利要求1所述的系统,其中,所述对象是人手的至少一根手指。
59.根据权利要求1所述的系统,其中,所述对象包括至少一个人手和人手的至少一根手指。
60.一种用于检测、表示和解译三维空间输入的系统,包括:
数据漏斗,所述数据漏斗耦接到处理器,并且所述数据漏斗被配置成接收包括来自多个源的数据的输入数据并通过空间地接合以及时间上对准来自所述多个源中的每个源的输入数据、将所述输入数据整理为时空数据的单个流,形成单个数据流,其中所述输入数据包括与形成姿势期间对象的多个元素中的每个元素对应的数据,其中,所述接合包括根据分配给每个源的输入数据的权重来选择用于所述流的输入数据,所述权重根据所述对象与源的接近而被分配给每个源的输入数据;
姿势引擎,所述姿势引擎耦接到所述数据漏斗,并且所述姿势引擎被配置成使用多个姿势描述从时空数据流中生成姿势事件,其中,所述姿势引擎使用应用程序中立的数据格式将每个姿势事件以原事件表示,所述原事件包括作为所述姿势事件的详细描述的数据;以及
分配器,所述分配器耦接到所述姿势引擎,并且所述分配器被配置成提供通过由多个事件消费者对多个原事件的访问而对所述姿势事件的访问,其中,对所述姿势事件的访问是在所述多个事件消费者的空间语义的参照系中的。
61.一种用于检测、表示和解译三维空间输入的方法,包括:
通过空间地接合以及时间上对准来自多个源中的每个源的输入数据、核对来自所述多个源的输入数据,形成时空数据的单个数据流,其中,所述输入数据包括与形成姿势期间对象的多个元素中的每个元素对应的数据,所述姿势是所述对象的瞬时空间和几何状态,其中,所述接合包括根据分配给所述输入数据的权重来选择要包括在所述流中的输入数据,其中,所述权重根据所述对象与源的接近而被分配给每个源的输入数据;
使用多个姿势描述从所述时空数据生成姿势事件;
使用应用程序中立的数据格式将所述姿势事件以原事件表示,所述原事件包括作为所述姿势事件的详细描述的数据;以及
分配所述姿势事件并且提供由至少一个事件消费者经由对应的原事件在所述至少一个事件消费者的空间语义的参照系中对所述姿势事件的访问。
62.根据权利要求61所述的方法,其中,所述输入数据包括所述对象的不受约束的自由空间姿势数据。
63.根据权利要求61所述的方法,其中,当所述对象是在相对于表面的最接近范围之内和在限定的体积之内中的至少一种时,所述输入数据包括所述对象的近似姿势数据。
64.根据权利要求61所述的方法,其中,所述输入数据包括当所述对象在与表面邻近的平面内时所述对象的盘旋姿势数据。
65.根据权利要求61所述的方法,其中,所述输入数据包括当所述对象与表面接触时的所述对象的表面接触姿势数据。
66.根据权利要求61所述的方法,其中,所述输入数据包括多个数据流。
67.根据权利要求66所述的方法,包括在时间上对准所述多个数据流。
68.根据权利要求66所述的方法,包括从所述多个数据流空间地接合事件,并且生成单个合成事件。
69.根据权利要求66所述的方法,包括执行语义上的聚集,所述语义上的聚集包括收集从先前操作所得到的相关事件。
70.根据权利要求66所述的方法,包括执行对元信息加标签。
71.根据权利要求66所述的方法,包括从光学运动跟踪系统、渡越时间跟踪系统、电场感测系统和触摸屏设备中的至少一个接收所述输入数据。
72.根据权利要求61所述的方法,包括从光学运动跟踪系统接收所述输入数据。
73.根据权利要求61所述的方法,包括从渡越时间跟踪系统接收所述输入数据。
74.根据权利要求61所述的方法,包括从触摸屏设备接收所述输入数据。
75.根据权利要求61所述的方法,包括从电场感测系统接收所述输入数据。
76.根据权利要求61所述的方法,包括从电容性感测系统接收所述输入数据。
77.根据权利要求61所述的方法,包括接收包括所述对象的三维空间位置的时空数据。
78.根据权利要求61所述的方法,包括接收包括所述对象的三维空间取向的时空数据。
79.根据权利要求61所述的方法,包括接收包括所述对象的运动的时空数据。
80.根据权利要求61所述的方法,包括接收包括多个元件中的至少一个元件的主体三维空间位置的时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
81.根据权利要求61所述的方法,包括接收包括多个元件中的至少一个元件的主体三维空间取向的时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
82.根据权利要求61所述的方法,包括接收包括多个元件中的至少一个元件的主体运动的时空数据,所述多个元件包括所述对象和耦接到所述对象的多个元件。
83.根据权利要求61所述的方法,包括接收包括多个元件的姿态的语义上的摄取的时空数据,所述多个元件包括所述对象。
84.根据权利要求61所述的方法,包括比较所述时空数据与所述姿势描述。
85.根据权利要求84所述的方法,包括响应于时空数据和姿势描述之间的匹配来生成所述原事件,其中,所述原事件包括包含匹配的时空数据的摄取的数据格式,所述匹配的时空数据在匹配的姿势描述的语义上下文中被解译。
86.根据权利要求61所述的方法,包括提供多个识别器,其中,每个识别器都包括姿势描述。
87.根据权利要求86所述的方法,包括对所述多个识别器执行多个操作,其中,所述多个操作包括将识别器分等级。
88.根据权利要求86所述的方法,包括对所述多个识别器执行多个操作,其中,所述多个操作包括添加识别器。
89.根据权利要求86所述的方法,包括对所述多个识别器执行多个操作,其中,所述多个操作包括移除识别器。
90.根据权利要求86所述的方法,包括对所述多个识别器执行多个操作,其中,所述多个操作包括修改识别器。
91.根据权利要求86所述的方法,包括对所述多个识别器执行多个操作,其中,所述多个操作包括重新配置识别器。
92.根据权利要求86所述的方法,其中,所述识别器在时空数据与所述识别器的激活准则匹配之前保持休眠。
93.根据权利要求92所述的方法,其中,当所述时空数据的几何和时空方面与所述激活准则匹配时,识别器变成激活的。
94.根据权利要求93所述的方法,其中,只要所述时空数据满足所述识别器的维持准则,所述识别器就保持激活。
95.根据权利要求93所述的方法,其中,当所述时空数据不能满足所述激活准则时,所述识别器变成停用的。
96.根据权利要求61所述的方法,包括将所述原事件存储在至少一个知识库中用于由所述至少一个事件消费者访问。
97.根据权利要求96所述的方法,包括提供所述至少一个事件消费者的列表。
98.根据权利要求97所述的方法,包括将所生成的每个原事件异步地传送到所述至少一个事件消费者中的每个事件消费者。
99.根据权利要求97所述的方法,包括将所生成的每个原事件同步地传送到所述至少一个事件消费者中的每个事件消费者。
100.根据权利要求61所述的方法,包括在与多个事件消费者对应的多个空间语义参照系中变换所述姿势事件。
101.根据权利要求61所述的方法,包括将所述姿势事件重新描绘在所述至少一个事件消费者的空间语义参照系中。
102.根据权利要求61所述的方法,包括通过下述方式生成所述原事件:生成至少一个数据序列,所述数据序列包括指定所述姿势事件的姿势事件数据和所述姿势事件的状态信息;以及形成数据容器以包括所述至少一个数据序列,所述数据容器具有包括所述至少一个数据序列的独立于应用程序的表示的数据结构。
103.根据权利要求102所述的方法,其中,生成所述至少一个数据序列包括:
生成包括第一各自姿势事件数据的第一各自数据集;
生成包括第二各自状态信息的第二各自数据集;以及
形成第一数据序列以包括所述第一各自数据集和所述第二各自数据集。
104.根据权利要求103所述的方法,其中,生成所述至少一个数据序列包括:
生成包括第一各自姿势事件数据的第一各自数据集;
生成包括第二各自状态信息的第二各自数据集;以及
形成第二数据序列以包括所述第一各自数据集和所述第二各自数据集。
105.根据权利要求104所述的方法,其中,生成所述第一各自数据集包括生成第一各自数据集偏移,其中,所述第一各自数据集偏移指向所述第二数据序列的所述第一各自数据集。
106.根据权利要求104所述的方法,其中,生成所述第二各自数据集包括生成第二各自数据集偏移,其中,所述第二各自数据集偏移指向所述第二数据序列的所述第二各自数据集。
107.根据权利要求103所述的方法,其中,所述第一各自数据集是描述列表,所述描述列表包括对所述数据的描述。
108.根据权利要求102所述的方法,包括:
生成至少一个偏移;以及
形成所述数据容器以包括所述至少一个偏移。
109.根据权利要求108所述的方法,包括:
生成具有第一可变长度的第一偏移;
其中,所述第一偏移指向所述至少一个数据序列中的第一数据序列的姿势事件数据。
110.根据权利要求108所述的方法,包括:
生成具有第二可变长度的第二偏移;
其中,所述第二偏移指向所述至少一个数据序列中的第一数据序列的状态信息。
111.根据权利要求108所述的方法,包括:
使用所述至少一个偏移中的第一偏移通过所述数据容器形成第一代码路径;
使用所述至少一个偏移中的第二偏移通过所述数据容器形成第二代码路径;
其中,所述第一代码路径和所述第二代码路径是不同的路径。
112.根据权利要求111所述的方法,其中,所述第一偏移和所述第二偏移中的至少一个包括元数据,所述元数据包括上下文专用元数据。
113.根据权利要求61所述的方法,其中,所述至少一个事件消费者是多个交互式系统中的至少一个交互式系统,其中,所述多个交互式系统包括多个参照系。
114.根据权利要求113所述的方法,其中,所述至少一个事件消费者使用专用于所述至少一个事件消费者的应用程序类型来消费所述原事件。
115.根据权利要求114所述的方法,其中,所述至少一个事件消费者包括具有第一参照系的第一交互式系统以及具有第二参照系的第二交互式系统。
116.根据权利要求115所述的方法,其中,所述第一交互式系统使用第一应用程序类型来消费所述原事件,而所述第二交互式系统使用第二应用程序类型来消费所述原事件。
117.根据权利要求61所述的方法,其中,所述对象是人手。
118.根据权利要求61所述的方法,其中,所述对象是人手的至少一根手指。
119.根据权利要求61所述的方法,其中,所述对象包括至少一个人手和人手的至少一根手指。
120.一种用于检测、表示和解译三维空间输入的方法,包括:
通过空间地接合以及时间上对准来自多个源中的每个源的输入数据、核对来自所述多个源的输入数据,形成时空数据的单个数据流,其中,所述输入数据包括与通过对象形成姿势期间所述对象的多个元素中的每个元素对应的数据,其中,所述接合包括根据分配给每个源的输入数据的权重来选择要包括在所述流中的输入数据,所述权重根据所述对象与源的接近而被分配给每个源的输入数据;
从所述输入数据描绘所述对象的多个空间事件,其中,所述多个空间事件包括相对于全局空间的适配的坐标表示;
根据所述空间事件生成所述空间事件的聚集,其中,所述聚集是包括所述对象的文字几何形状和语义上的特性的逻辑聚集;
从所述空间事件的所述聚集检测姿势且消除姿势的歧义;
生成表示所述姿势的数据束,其中,所述数据束是中立描述的;以及
分配所述数据束用于由多个全异的应用程序消费。
CN201080030018.6A 2009-05-04 2010-05-04 包括数据表示、操作和交换的基于姿势的控制系统 Expired - Fee Related CN102804206B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US17537409P 2009-05-04 2009-05-04
US61/175,374 2009-05-04
US12/553,845 2009-09-03
US12/553,845 US8531396B2 (en) 2006-02-08 2009-09-03 Control system for navigating a principal dimension of a data space
US12/572,689 2009-10-02
US12/572,689 US8866740B2 (en) 2005-02-08 2009-10-02 System and method for gesture based control system
PCT/US2010/033613 WO2010129599A1 (en) 2009-05-04 2010-05-04 Gesture-based control systems including the representation, manipulation, and exchange of data

Publications (2)

Publication Number Publication Date
CN102804206A CN102804206A (zh) 2012-11-28
CN102804206B true CN102804206B (zh) 2016-11-30

Family

ID=

Similar Documents

Publication Publication Date Title
CN103988150B (zh) 用于初始化基于视觉的手跟踪器的快速指尖检测
CN102460510B (zh) 用于与空间操作系统一起使用的空间多模式控制设备
US10235412B2 (en) Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
KR101821418B1 (ko) 데이터의 표현, 조작 및 교환을 포함하는 제스처-기반 시스템
CN102177513B (zh) 用于在主要尺寸的数据空间中导航的控制系统
US9495013B2 (en) Multi-modal gestural interface
US10061392B2 (en) Control system for navigating a principal dimension of a data space
US8681098B2 (en) Detecting, representing, and interpreting three-space input: gestural continuum subsuming freespace, proximal, and surface-contact modes
CN102224476B (zh) 多进程交互系统和方法
JP2018077882A (ja) 複数クライアント装置およびディスプレイを有する動作環境のための方法、およびシステム
CN103930944A (zh) 用于空间输入装置的自适应跟踪系统
CN101536494A (zh) 用于基于姿势的控制系统的系统和方法
US20110018803A1 (en) Spatial, Multi-Modal Control Device For Use With Spatial Operating System
JP2015525381A (ja) 相互ユーザ手追跡および形状認識ユーザ・インターフェース
CN102804206B (zh) 包括数据表示、操作和交换的基于姿势的控制系统
Ogiela et al. Natural user interfaces for exploring and modeling medical images and defining gesture description technology
Wang et al. Design and implementation of virtual reality interactive product software based on artificial intelligence deep learning algorithm
Billinghurst et al. Multimodal Interfaces for Augmented Reality
Peng Design and Application of Cultural Digital Display System based on Interactive Technology
Lee et al. A real-time hand interaction system for image sensor based interface

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20161130

Termination date: 20210504