首页> 中国专利> 用于手功能受限个人的数据输入设备和数据输入方法

用于手功能受限个人的数据输入设备和数据输入方法

摘要

本发明所提出的用于手功能受限制的用户的模拟键盘数据输入设备包括一个戴在手上的具有多个能检测手指微小活动的传感器的手套,这种微小的随意活动显著地比通常在一个传统的键盘上击键所需的活动小。一个传感器解释器个别地配置成将用户的手指动作识别为一个键盘上的相应的键。用户就可以通过重复那些微小手指活动的组合在模拟键盘上“打入”文本,使用户能通过传感器解释器产生键盘字符。可取的是,传感器解释器包括一个虚拟击键检测器和一个键解码器,它们都是按用户个别校准的。

著录项

  • 公开/公告号CN1480822A

    专利类型发明专利

  • 公开/公告日2004-03-10

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN03149733.0

  • 发明设计人 C·J·金布尔;

    申请日2003-08-06

  • 分类号G06F3/00;

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人于静;李峥

  • 地址 美国纽约

  • 入库时间 2023-12-17 15:09:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-25

    专利权有效期届满 IPC(主分类):G06F 3/00 专利号:ZL031497330 申请日:20030806 授权公告日:20050622

    专利权的终止

  • 2009-05-20

    专利申请权、专利权的转移(专利权的转移) 变更前: 变更后: 登记生效日:20090410 申请日:20030806

    专利申请权、专利权的转移(专利权的转移)

  • 2005-06-22

    授权

    授权

  • 2004-05-19

    实质审查的生效

    实质审查的生效

  • 2004-03-10

    公开

    公开

说明书

技术领域

本发明涉及数字数据处理,特别是涉及供有残疾个人使用的数字数据输入设备。

背景技术

在二十世纪的下半世纪,开始了一个称为信息革命的现象。虽然信息革命是一个历史性的开拓,在范围上超出任何一个事件或机器,但还没有一个设备可以象数字电子计算机那样更能代表这场信息革命。计算机系统的出现的确是一场革命。每年,计算机系统都会变得更快、可以存储更多的数据,为它们的用户提供更多的应用。

数字计算设备的计算成本的降低和普遍可用性引起了在这种设备上可得到的信息大量激增,使这种设备可用于各式各样的应用。近些年来,经济的“个人计算机”已经可供个人在家使用或者个人在办公场所使用。越来越小型化已使得设计便携式的“膝上型”计算机和个人数字助理(PDA)成为可能。这些设备加上因特网的流行已大规模地给公众带来数字信息和计算能力。

这些进展的一个结果是导致应用计算机技术有困难(无论是什么原因)的个人处于不利地位,而这种不利随着时间会变得越来越显著。例如,现在高等院校在课程安排、分配、成绩等方面普遍通过因特网与学生通信。在一些机构内,对因特网的依靠已经达到不用因特网要完成必修课程是困难的甚至是不可能的程度,而这个趋势很可能会继续下去。有迹象表明数字技术和因特网的这种使用还要扩展到中学和再低级一些的课程。

尽管有这些进展,许多个人仍不能完成包括使用计算机在内的基本任务或者不能熟练地完成这种任务。对于这些缺陷有许多各种各样的原因,这些原因在这里并不都涉及到。对于有些个人,使用计算机有困难主要或者部分是由于身体障碍,使得这些个人很难甚至不可能使用传统的数字输入和输出设备。

身体障碍可以呈现为不同的形式,不是所有的都立刻就清楚的。一个可以影响个人使用计算机的能力的身体障碍的具体形式是手活动受限制。如在这里所指的那样,手活动受限制意味着不能象一个未受损伤的人那样在整个范围内使用手和手指,但是并未意味着手完全麻痹。这种障碍可以是由于反复性的扭伤、关节炎或其他原因引起的。一个手活动受限制的人能用他的手完成许多甚至几乎所有的日常工作,诸如把握一个物体、拧动照明开关之类。因此,这些人可以不是呈现为完全有障碍的。通常,所讨论的这些人实际上可以在可以认为是正常的范围内移动手的受到损害的关节,但这样做会很费力。在有些情况下,如果象在一个传统计算机键盘上打字那样经常性操作的话可能只是费力的。甚至可以预料会有未来损伤或基本状态进一步恶化的危险性,因此虽然在正常的整个关节活动范围内活动手的受到损害的关节不会立即引起诸如疼痛之类的症状,但是可预料一直重复这样做会造成损伤或使损伤更为严重。

手活动受限制是一个很普遍的问题,但由于考虑的往往是有利于障碍更为严重的情况而被忽视。例如,手完全不能活动(或者没有手)的人可以使用另一些专用的输入设备,诸如语音识别或安装在脚上或身体其他部位的传感器。当然,手活动受限制的人也可以使用这种设备。但是,这种设备提供的是一种慢而易出错的输入方式,或者在其他方面通常不如传统的键盘的输入方式。

所希望的是为手活动受限制的人提供一种可以按他们的具体障碍用户化的更为适当的输入设备,在输入效率上接近或等于传统的键盘。

发明内容

本发明所提出的模拟键盘数据输入设备包括一个手活动传感装置和一个传感器解释器。传感装置优选地呈现为可戴在用户一只手(或双手)上的一只(或一副)手套的形式,其中装有多个能检测手指微小的随意活动的传感器,这种微小的随意活动明显小于激励一个传统的计算机键盘上的键所需的活动。在一个接收数字设备内的一个传感器解释器按个别用户配置成将符合这个个别用户的能力的不同手指动作或手指动作的组合识别为与键盘上的键相应的各个字符。一旦配置了这种模拟键盘输入设备,用户就可以通过重复那些微小手指活动的组合在模拟键盘上“键入”文本,使用户能通过传感器解释器产生键盘字符。

在这个优选实施例中,传感器解释器包括一个虚拟击键检测器和一个键解码器。虚拟击键检测器最好是一种算法函数,周期性地扫描这些传感器,将局部挠曲最大的检测为虚拟击键。键解码器最好是一个经适当训练的人工神经网络,输入是检测到的虚拟击键的传感器数据而输出是键盘字符。神经网络的适当训练数据可以例如通过请求用户“键入”各种范例文本、使传感器结果与所要求的输出一致来得到。神经网络最好由在可编程处理器内执行的程序代码模拟。

最好,数据手套内的这些传感器通过电缆连接到一个传感器接收器上,传感器接收器是一个小型的便携式专用电子设备,可以方便地由用户佩带,适合放在口袋内或扣在衣服上,与数字计算机通信。虚拟击键检测器最好安装在接收机内,而键解码器神经网络以对数字计算机编程的形式实现。然而,传感器解释器功能也可以全部在数字计算机内实现,或者全部在一个诸如传感器接收器之类的专用设备内实现。

在这个优选实施例的一种情况下,用户戴一副解释手的所有十个手指的活动的手套。然而,在另一种情况下,一个只使用一只手的用户可以戴一只手套,或者手指少于十个的用户可以使用相应的手套。可以利用手指动作的任意“和弦”组合来为使用少于十个手指的个人得到所需数目的键盘字符。

如在这里说明的模拟键盘输入设备因此提供了使身体不能以预定方式使用传统的键盘的个人仍然能以与传统键盘的非残疾用户类似的方式输入数据,在一些情况下效率可以接近非残疾用户的效率。

本发明的详细情况,无论是它的结构还是工作情况,可以从以下对附图所作的说明中清楚地看出。在这些附图中同样的标注数字所标的是同样的部分。

附图说明

图1为按照本发明的优选实施例的模拟键盘数据输入设备的一个用于用户右手的数据输入手套,用于左手的手套的情况类似。

图2示出了按照优选实施例的数据输入手套的传感器接收器的主要内部组成部分。

图3例示了按照优选实施例的可以用数据手套输入设备来提供输入的典型的计算机系统。

图4例示了按照优选实施例的在多个传感器扫描周期内手总挠曲(aggregate deflection)的模拟度量。

图5A和5B(在这里一起合为图5)为例示按照优选实施例的虚拟击键检测程序的关键步骤的简化流程图。

图6为按照优选实施例的用于将传感器值解释为击键的神经网络功能的示意图。

图7A、7B和7C(在这里一起合为图7)为按照优选实施例的在校准和训练传感器解释器中所涉及的一些步骤的高层流程图。

图8为更详细示出按照优选实施例的在设置传感器系数中所涉及的一些步骤的流程图。

优选实施例详细说明

参见附图,在这些附图中同样的数字所标的是同样的部分,图1为一个按照本发明的优选实施例的模拟键盘数据输入设备的数据输入手套100的顶视图,这个手套用于用户的右手,而左手的手套(未示出)是与手套100对称的。数据输入手套100包括一个适合戴在用户手上的手套体101。多个微动传感器102-115分别安装在手套体101上用户的手的各个关节处附近。这些传感器通过数据传输电缆119接到可以插入数字数据设备的适当端口的连接插头120上。虽然手套体101在图1中例示性地示为一个完整的普通手套,由于手套体的作用只是支承安装传感器,因此实际的手套体可以是部分开口的,使用户更为舒适一些,例如,手套体101可以在指尖或手掌处开口。

在这个优选实施例中,传感器102-115是一些可变电阻应变仪。也就是说,传感器102-115每个都是一个用任何适当的导电材料或半导体材料的细线制成的无源电传感器,响应细线的应变(弯曲运动)改变电阻。这线最好安装在一个很薄的柔性平片构件上,以得到机械支持和稳定,当然也可以直接安装在手套体101上。柔性构件安装成跨在手指或手腕的关节上,因此随用户相应关节的弯曲而弯曲。弯曲柔性构件使应变仪的线弯曲,从而导致线的电阻改变,这可以用适当的传感器电子技术测量出来。

应该用足够多的传感器,以鉴别不同的键。因此,最好将应变仪106、109、111、113、115分别安置在贴近各手指和拇指底部的关节处,而将应变仪105、108、110、112、114安置在各个手指和拇指的中间关节处。还建议将应变仪102-104安置在手腕处,将额外的应变仪107安置在拇指和食指之间。虽然在图1这个优选实施例中示出的是这种传感器配置,但是可以理解,所用的传感器的数目可以不同,所配置的位置也可以不同。如在这里要进一步详细说明的那样,各个传感器为一个传感器解释器(最好是一个神经网络)提供输入数据,由这个传感器解释器将传感器数据解释为击键。单个击键通常导致多个传感器输出,呈现为一个与键关联的特征模式。传感器越多,传感器解释器可以可靠地鉴别不同的预想键的可能性越大。另一方面,传感器越多成本也越高,电缆119越厚,在有些点可能使用户明显地感到不舒服。在任何具体设计中所用的传感器的实际数目将是这些不同考虑的折衷。

数据输入手套的作用是检测手在正常的键盘打字员的整个移动范围内移动有困难甚至不可能的人的手活动,因此手套内的传感器应能检测远比一个未受损伤的人正常击键小的手指活动。应变仪传感器是一种成熟的技术,具有对甚至很小的手指活动非常敏感的优点,能够检测手指活动,甚至在手指实际活动几乎看不见的情况下也能鉴别不同的击键。然而,应变仪技术不一定就是按照本发明可以采用的唯一传感器技术。任何现有的或今后开发的传感器技术,只要能检测受损伤的人的手指的很微小的手指活动、为传感器解释器提供适当输入的都可以使用。例如,也可以使用压电压力传感器。

然而,可以理解,有时用来检测模拟键盘手指活动的有些类型的传感器不一定适合用于手功能受限制的人用的数据输入手套。特别是,可以认为这样的用户不会实际用他的指端接触一个键,因此对指尖处的压力响应的传感器不一定有用。类似,安装在指尖附近的至少部分取决于指接触一个已知物体的加速度或位置传感器可能对于本发明所预想的一些用户不是有用的,因为可以料想这些用户可以想象出适宜自己的表示键的手指活动,而不需要接触任何预先规定的物体。

图2示出了按照这个优选实施例设计的传感器接收器200的主要内部组成部分。最好,传感器接收器200安装在一个小型的可以用夹子、索带、项链或其他措施附着在用户的衣服或身体上的便携单元内,数据输入手套的连接插头120插入这个便携单元。在这个实施例中,单个传感器接收器200接收来自用户一手一只的两个数据输入手套100的检测参数。然而,也可以每个数据输入手套用一个独立的传感器接收器,或者只配置单个数据输入手套作为传感器接收器的输入(例如,在用户只用一只手的情况下)。

如图2所示,传感器接收器200包含相互通信的可编程处理器201和存储器202。处理器201最好是一个通用的可编程处理器,执行存储在存储器202内的指令。其中需要说明的一点是,这些指令使处理器201对传感器接收器200的操作进行控制,这是通过相继确定一对数据输入手套100内的各个传感器元件的电阻、将所检测到的电阻解释为击键和将击键数据传送给计算设备来实现的,如在这里进一步所说明的那样。存储器202是一个随机访问半导体存储器,含有一个可在处理器201上执行的控制程序。存储器202可以采用任何不同的存储设备技术,虽然所示为一个单片实体,但存储器202可以含有多个物理组成不同的模块。在一个实施例中,存储器202包括一个非易失性的闪速存储器,可以次数有限地予以写入,这个闪速存储器存有控制程序和各种神经网络配置变量。然而,存储器202也可以是动态存储器,在计算机系统初始化时装入控制程序和神经网络配置变量,还可以是其他形式的存储器或者存储器组合。

传感电子组件包括如图2所示连接的恒流源203、多路复用器204、高阻抗电压放大器205和模数变换器206。多路复用器204是一排由来自处理器201的多比特数字控制信号控制的开关。多路复用器204内的每个开关各自有一条导线从多路复用器204通过连接器120和电缆119接到数据手套100内传感器102-115中的一个相应传感器上。数据手套100内的每个电阻性应变仪传感器的一端各自接到来自多路复用器204的相应导线上,而另一端接到一条公共地线上,这条地线通过电缆119和连接器120返回到传感器接收器200。在工作中,来自处理器201的控制信号使多路复用器204闭合一个与一个所选传感器相应的所选开关,而将所有其他开关保留在断开状态。恒流源203于是驱使一个已知的恒定电流通过闭合的开关及其对应的电阻性应变仪传感器。由于多路复用器204内只有一个开关闭合,而放大器205是高阻抗的,因此电流源203产生的电流几乎全部通过选定的应变仪元件流入地线。按照欧姆定律,这在应变仪传感器两端从而也就在放大器205的输入端上产生与应变仪的电阻成正比的电压降。放大器205将这个电压降放大后输出给模数变换器(ADC)206。ADC 206将电压变换成一个数字值后输出给处理器201。处理器201使多路复用器204依次循环通过所有的传感器线路,逐一读取每个传感器的电阻(即一个扫描周期)。

传感器接收器200还包含一个与诸如计算机之类的外部数字设备通信的外部通信接口207。这个通信接口可以采用任何现在已知的或者今后开发的不同通信装置。例如,与外部设备的通信可以借助于一条连接电缆用任何适当的协议进行,也可以是一个红外、射频或其他传输链路。如果外部接口207用一条数据传输电缆,可以通过电缆向接收器200供电。或者,也可以是接收器200有它自己的电源,诸如一个电池(未示出)。

图3例示了可以用数据手套输入设备100来提供输入的典型计算机系统300。计算机系统300包括CPU 301、主存储器302、各种设备适配器和接口303-308以及通信总线310。CPU 301是一个通用的可编程处理器,执行存储在存储器302内的指令;虽然图3中示出的是单个CPU,但可以理解,也可以使用具有多个CPU的计算机系统。存储器是一个随机存取半导体存储器,用来存储数据和程序;存储器在原理性地示为一个单片实体,当然,存储器通常配置成一个由高速缓存器和其他存储器件构成的分层结构。通信总线310支持在不同的设备之间传送数据、命令和其他信息。通信总线310虽然是以简化形式示为单条总线,但也可以结构成多总线,和可以配置成分层结构形式。显示适配器支持视频显示器311,视频显示器311通常是一个阴极射线管显示器,虽然也可以采用其他显示技术。指点器适配器304支持一个示为鼠标的指点器312,当然也可以采用其他形式的指点器甚至完全没有指点器。存储装置适配器306支持一个或多个数据存储装置313,这些数据存储装置通常是旋转的磁硬盘驱动器,虽然也可以使用其他数据存储装置。打印机适配器307支持打印机314。网络接口308提供了一个对其他计算机的外部网络的接口。这样一个接口可以是一个通过因特网或诸如以太网或令牌环网之类的局域网的远程连接,或者是一个诸如可以用来将多个工作站连接到一个用作服务器的较大主计算机上的主机终端信道接口。这个接口可以是一条电线、光纤或其他物理媒体,也可以是一个诸如射频连接之类的传输型接口。许多其他类型的接口也是可行的。计算机系统300通常是称为“工作站”或“个人计算机”的任何不同型号的单用户计算机系统。图3所示的是一个示范性的简化模型,当然除了在这里所提到的那些,系统配置中的许多变更都是可行的。此外,如在这里所说明的采用输入手套的数字设备不必是一个个人计算机系统,也可以是一个接到主机上的所谓哑终端、笔记本或膝上型计算机、专用设备或任何硬件变形。

如图3所示,接到通信总线310上的数据手套适配器305使总线(从而计算机300的各个组件通过总线)与传感器接收器200之间可以进行通信。如上面所说明的,这个通信连接可以呈电缆形式,也可以是红外、射频或其他传输链路,采用如在该技术领域内所知的任何协议。由于通常不需要高带宽,因此任何串行通信协议都能胜任。传感器接收器200与适配器305之间的通信链路最好能支持双向通信。

图3以概念上驻留在存储器302内的方式示出了计算机系统300的主要软件组件。如在该技术领域内众所周知的,操作系统(OS)321提供各种低级软件功能,诸如设备接口、存储页面管理、多任务管理之类。数据手套支持应用322支持数据手套输入设备以及所关联的传感器接收器的初始化、校准和操作,如下面还要充分说明的那样。数据手套支持应用322含有配置简表323,用来存储用户专用参数,特别是存储校准的值和定义一个用来将传感器数据解码成击键的神经网络的参数。虽然图3中示出的是一个配置简表323,但是系统100通常由多个人员使用,因此在系统100内可能存有多个配置简表,每个不同的用户各有一个独立的相应简表。传统的操作系统的功能中的一个功能是接收击键形式的用户输入,因此操作系统321配置成接收来自数据手套的呈现为用户击键的用户输入。数据手套支持应用322与操作系统321分别示出,虽然它也可以是操作系统的一部分。

除了数据手套支持应用321,在CPU 301上执行的一个或多个用户应用(APP)324、325可以为用户完成各种任务,接收由数据手套输入设备产生的数据输入。其他这样的用户应用可以包括例如文字处理、记帐、代码开发和编辑、邮件、日历或数以千计的用户应用中的任何应用。虽然在图3中只是例示性地示出了两个应用324、325,但是这样的应用的数量可以不同,通常是很多的。

虽然图3的这些软件组件原理上示为驻留在存储器302内,但很清楚,通常计算机系统的存储器太小,不能同时保留所有的程序和数据,因此信息通常存储在包括一个或多个诸如旋转磁盘驱动器之类的海量存储器的数据存储装置313内,按照需要由操作系统按页调入存储器。

按照本发明的这个优选实施例,用户个人将一个传感器解释器配置成将从用户的手检测到的活动数据解释为一个传统键盘上的不同击键。最好,解释所检测到的数据用虚拟击键检测算法和一个呈现为可训练和可配置的人工神经网络(即一个体现为在一个可编程处理器上执行和用配置数据规定网络参数的计算机程序代码的模拟神经网络)实现。训练神经网络是通过提示用户“键入”一定的数据实现的,将遵循提示的任意传感器输出解释为所要求的提示数据来训练神经网络。一旦受到训练,网络接收到传感器数据后就将它解释为一些键,传给计算机操作系统,供操作系统或用户应用进一步使用。下面将更为详细地对这个系统的操作进行说明。

虚拟击键检测

在一个传统的键盘中,检测击键是用一个电子传感器检测键相对某个临界点的挠曲来实现的。在任意手活动的情况下检测虚拟击键就比较复杂。用户将不一定接触一个表示击键的物体;手在空中活动,可能动作小到很难用眼睛观测到。

按照这个优选实施例,在传感器接收器200内执行的虚拟击键检测程序不断地对传感器进行扫描,观测挠曲的局部最大值。这个数据理解为击键,虽然此时并没有解码为对应的键。在确定挠曲的一个局部最大值为一个击键时,与这个局部最大值相应的传感器数据就输入神经网络,对键解码。还需要检测Shift(换档)、Ctrl(控制)、Alt(交替)和类似的一些键的开始激励和最后释放。

虚拟击键检测程序采用手总挠曲的概念,总挠曲(Aggregatedeflection)计算如下:

Aggregate deflection=∑K(i)×[R(i)-R0(i)]2          (1)

其中,K(i)为传感器i的挠曲系数,R(i)为传感器(i)的电阻,而R0(i)为传感器i在静态状况下的标称电阻。将电阻相对它的标称值的改变量平方(而不是仅仅取绝对值)可以给电阻有最大改变的那些传感器(因此可能最能表示想“击”的键)较大的加权,从而将这些读数提高到超过可能来自其他传感器的噪声读数。对于每个手通过用式(1)将这个手内所有的传感器的传感器项加在一起分别计算总挠曲。最好,K(i)的值是经如在这里详细说明的那样校准的,以便适应个别用户的能力。然而,在一个简单的实施例中,可以对于所有的i都设置K(i)=1,或者根据用户的平均情况假设一组固定的K值。

图4例示了作为时间函数的模拟手总挠曲曲线(多个扫描周期)。为了简明起见,所示的是单个手的总挠曲曲线,可以理解,对于两个手是分别确定的。图4例示了激励三个各别的键(虚拟击键),分别由局部最大值401-403表示。根据定义,局部最大值是分别在规定的时间窗口404-406内一个特定的手的这些传感器的总合最大值。如果窗口太小,可能在只想激励一个键的情况下由于随机振动或其他因素会探测到多个键被激励。例如,如图4所示,在窗口404内有两个“峰”。如果窗口小得多,这两个峰都分别检测为一个“击键”,从而导致解码成两个键,而不是一个。另一方面,如果窗口太大,就可能检测不到有些想要的但总挠曲显现为比它们邻近的小的击键。再来看图4,如果窗口405扩得很大,它最终将包括一些在窗口404内的扫描周期,从而具有比局部最大值402大的总挠曲,这样就不会检测到局部最大值402。在这个优选实施例中,窗口的大小是一个配置变量,可以设置为适应不同用户的不同数据输入率的不同的值。

图5A和5B(在这里一起合为图5)为例示虚拟击键检测程序的较为关键的步骤的简化流程图。最好,虚拟击键检测程序由一个启用/禁用信号(未示出)启用和禁用。启用/禁用信号的作用是避免在用户不想输入任何数据时产生虚假的输入。例如,用户可能抬手拿电话机或一杯咖啡,而这样做所需要的手指动作不应该被传感器解释器理解为击键。用户也可能希望使用另一个输入装置,诸如鼠标。启用/禁用信号可以用许多方式中的任何一种方式产生。在一个实施例中,在用户希望“键入”数据时将手放在一个压敏掌座上,由掌座内的压力开关产生启用/禁用信号。其他具体实施方式可以包括用踏脚板、语音激活或专用键组合来产生启用/禁用信号。

来看图5,在启用后,击键检测程序在方框501等待一个指示一个扫描周期开始的定时器期满。击键检测程序用足以以合理的精度检测击键和符合处理器201的能力的扫描速率扫描各传感器的电阻(执行一个扫描周期)(步骤502)。在这个优选实施例中,扫描速率近似为每秒100次(100Hz),当然,扫描速率可以再慢一些或快一些。对于每个扫描周期,如上面所说明的那样分别按照式(1)计算出每个手套的总挠曲(步骤503)。

在步骤504,检测程序将右手套总挠曲(R_Deflection)与一个右手套静态门限(RQ_Threshold)相比较。RQ_Threshold(和左手套的相应LQ_Threshold)用来滤除小的不表示任何击键的手挠曲。也就是说,除非测量的总挠曲超过某个最小门限值,传感器数据将被忽略,不予进一步处理(步骤504的“否”分支)。在这个优选实施例中,RQ_Threshold和LQ_Threshold都是为个别用户独立校准和设置的。

如果超过RQ_Threshold,就从步骤504进入“是”分支,于是在步骤505,检测程序将右手套总挠曲与右手套换档门限(RS_Threshold)相比较。RS_Threshold(和相应的LS_Threshold)用来表明激励了一个换档键(即Shift、Ctrl或Alt)。这些门限也对个别用户独立校准,而且通常高于RQ_Threshold和LQ_Threshold,虽然不一定要高于RQ_Threshold和LQ_Threshold。如果超过RQ_Threshold,就将状态变量R_Key_Made设置为“真(T)”(步骤506);否则,将状态变量R_Key_Made设置为“假(F)”(步骤507)。

然后,检测程序检验对最近NW个周期分别所作的各个右手总挠曲计算(步骤508)。这些值在计算出时保存在一个阵列内,而且随着周期计数的增大而“老化”。NW的值为检测局部最大值的窗口404-406的宽度(以周期数计)的二分之一左右。按定义,一个总挠曲值仅当它大于在窗口内(在它前或后的NW个周期)的所有其他总挠曲值时才认为是一个局部最大值。如果对于当前周期的右手总挠曲大于前NW个周期的任何一个周期内的右手总挠曲(从步骤508进入“是”分支),就将它认为是一个新的推测右局部最大值,从而保存来自当前周期的所有传感器数据,作为一个新的推测右手局部最大值,改写任何先前保存的推测右局部最大值(步骤509)。

如果未发现一个新的右手局部最大值(从步骤508进入“否”分支),检测程序就确定是否任何先前保存的推测右手局部最大总挠曲是在NW个周期以前检测到的(步骤510)。如果是,于是在一个为检测到推测右手局部最大总挠曲的这个周期的前后两侧各NW个周期的窗口内没有检测到更大的总挠曲值,就将这个值确认为一个真的局部最大值。在这种情况下,从步骤510进入“是”分支,将从检测到局部最大值的那个周期保存的传感器数据用作神经网络的输入,确定用户所表示的是哪个键(步骤511)。在这个优选实施例中,这意味着检测到局部最大值的这个周期的传感器数据通过接口207和适配器305从传感器接收器200发送给计算机300。所发送的数据包括从右手的每个传感器得到的读数以及L_Key_Made的当前值(可以是检测一个换档型键所必需的)和周期序号(用于校准M,也可以用于正在进行的训练、诊断或类似的例行程序)。如果L_Key_Made为“真”,所发送的数据还包括从左手的传感器得到的最近读数(这可以是对一个换档键解码所必需的)。然后,检测程序清除存储推测右局部最大值的变量(步骤512),从而没有右局部最大值被存储。如果所保存的推测右局部最大值不是NW个周期以前保存的,或者如果没有推测右局部最大值,就从步骤510进入“否”分支。

对于左手传感器数据执行类似的步骤,即如图5中所示的步骤513-521分别与步骤504-512相同,但是应用于左手数据而不是右手数据。在如所示那样处理了左手数据后,检测程序返回到步骤501,等待下一个扫描周期。

键解码

在这个优选实施例中,键解码功能由体现为在CPU 301上执行的软件的人工神经网络实现。然而,象在这里所讨论的,键解码功能的许多其他具体实施方式也是可行的。

一个人工神经网络在概念上是一个由一些人工神经元(也称为节点)和连接构成的有向图,每个连接在两个节点之间单向地从一个源节点通达一个目标节点。每个连接都有一个与之关联的自适应加权。自适应加权是一个系数,施加到源节点的输出上,产生这输出的一部分,输入目标节点。目标节点的输入Target_input为每个源输出值Source_output乘以接入这个目标节点的连接的相应连接加权Weight之和,即:

Target_Input=∑Source_output(i)×Weight(i)        (2)

目标节点输出(Target_output)是目标节点输入的某个单值函数,即:

Target_output=F(target_Input)                     (3)

这个函数可以是线性的,也可以是非线性的。在这个优选实施例中,采用众所周知的S形函数(sigmoid function),当然也可以采用其他函数。

最好,数据手套支持应用312含有一个神经网络函数,它用所存储的参数构成和实现一个人工神经网络。具体地说,每一层的网络节点数、每个连接的连接加权和节点的输出函数都可以存储为一个具体的神经网络的参数。这些参数存储在简表23内。初始化后,数据手套支持应用312读出存储在简表323内的参数,按照所存储的参数“构成”一个人工神经网络。在执行中,数据手套支持应用312执行由简表规定的神经网络,将传感器输入解码成击键。

图6为按照这个优选实施例设计的将来自数据输入手套的多个应变仪传感器的输出解释为击键的神经网络函数的示意图。这个优选实施例的网络是一个由三个层构成的完全连接的分层网络,没有从高层节点到下层节点的反馈连接。这个优选的网络用“后向传播(back propagation)”算法和如在这里所说明的那样得到的训练数据进行训练。如图6所示,网络包括第一层的大量输入节点、第二层的大量隐藏节点和第三层的大量输出节点。每个输入节点分别与一个数据输入手套内这些传感器中的一个传感器相应,这意味着有着与数据输入手套内的传感器一样多的输入节点。每个输入节点因此在多路复用器204选择相应传感器时接收由放大器205检测到的从相应传感器两端的电压降得出的、经ADC 206变换成数字表示的值作为输入。这可以是一个原始值,也可以是按照一个归一化公式归一化的值。每个输出节点与用于数据输入的键盘上的一个键相应,例如与26个字母字符之一、十个数字之一或者诸如空格键、逗号、句号之类的各标点符号或专用键之一相应。

引起的一个问题是解释用户同时按压多个键的换档型操作。有几个可行的途径接收和解释多键操作。

在理论上,是可以构成一个对于每个这样的键组合有一个输出节点的神经网络函数。例如,可以有一个对于小写“A”(只按压“A”键)的输出节点、一个对于大写“A”(Shift-A)的输出节点、一个对于Alt-A组合的输出节点和一个对于Ctrl-A组合的输出节点。甚至可以有对于Shift-Ctrl-A和类似的多重组合的输出节点。如果对于键盘上的每个键都倍增这些输出节点,可以看到需要非常多的输出节点。这么多的节点就很难适当训练网络或可靠鉴别一些键和键组合。因此,虽然这样一条途径是可行的,但并不是本发明的优选实施方式。

在本发明的优选实施例中,假设要激励的主键(即字母键、数字键或符号键)用与用来激励Shift、Ctrl、Alt或类似的键不同的另一个手激励。根据这个假设,来自每个手的传感器数据分别用一个独立的神经网络函数解释。也就是说,有一个用于左手数据输入手套、输入节点的个数等于左数据输入手套内的传感器的个数(在图1这个例示性的实施例中有14个传感器)的第一神经网络函数和一个用于右手数据输入手套、输入节点的个数等于右数据输入手套内的传感器的个数(在这个例示性的实施例中也是有14个传感器)的第二神经网络函数。在每个神经网络内的输出节点的个数大致与相应的二分之一键盘上的键的个数相应。由于无论哪一只手都可以激励一个Shift、Ctrl或Alt键,同时另一只手激励一个字母、数字或符号键,因此两个神经网络都有Shift、Ctrl和Alt的输出节点。对于每个多个换档型键组合(例如对于Shift-Alt、Ctrl-Alt、Shift-Ctrl甚至Shift-Ctrl-Alt)也可以各有一个输出节点。假设一个标准的键盘或打字机有四行键而不带功能键行、数字小键盘之类,每个神经网络将有大致30个输出节点,这比对于每个可能的键组合用一个独立的输出节点所需要的几百个节点容易管理得多。这个实施例的隐藏节点的个数在每个网络内大约为20个。

例如,在一个与典型的“QWERTY”键盘配置相应的具有相当少的输出的实施例中,左手神经网络配有下列键输出节点:

1,2,3,4,5,Q,W,E,R,T,A,S,D,F,G,Z,X,C,V,B,Tab,Shift,Ctrl,Alt,Shift-Alt,Ctrl-Atl,Shift-Ctrl,Cursor(光标)(共28个节点)

右手神经网络指配有下列键输出节点:

6,7,8,9,0,Y,U,I,O,P,H,J,K,L,分号,N,M,逗号,句号,/,Enter,Space,Shift,Ctrl,Alt,Shift-Alt,Ctrl-Atl,Shift-Ctrl(共28个节点)

可以看到,为了减少输出节点,没有配置在许多计算机键盘上有的一些键(例如“Caps Lock(大写锁定)”)。可以理解,可以用Shift、Alt和Ctrl键的各种组合很容易形成这些字符或功能。所用的一个附加的在标准键盘内没有的“键”是左手的“Cursor”键。在这个实施例中,“Cursor”实际上是一个换档型键,使右手起光标控制作用。例如,按住“Cursor”,键“I”或“O”就与cursorup(上移光标)相应,键“H”或“J”与cursor_left(左移光标)相应,键“;”与cursor_right(右移光标)相应,而键“,”或“。”与cursor_down(下移光标)相应。由于这些键都不必有一个物理位置,因此用户可以自创任何舒服和特殊的活动来表示“光标”。例如,用户可以用左手握成一个拳(或者接近拳,如果用户可以这样)来表示“Cursor”键。当然,可以理解,以上的输出键指配只是一种可能的输出键指配,可以再增添与任何或所有所省略的而在一个键盘上通常存在的键相应的输出节点,或者用少一些的输出节点和多一些的Shift/Alt/Ctrl键组合。

有各种其他处理换档键组合的附加技术。一种是限制用户每次只按压一个键,使所有的换档型键按与“Caps Lock”键类似的以乒乓开关的通断方式工作。另一种是配置换档型键的辅助输入装置,诸如脚踏开关之类。这两种技术都不理想,但是它们可以减少在任一时刻查看的输出组合数,因此有助于改善键鉴别。此外,有些残疾用户可能发现难以同时激励多个键,因此对于这些个别用户采用乒乓开关方式或者脚踏开关就可能比较方便。

如果检测到一个(例如,是用右手的)虚拟击键,右手的传感器数据输入相应的右手神经网络,而神经网络的输出就表示所按压的键。如果这个键解码为一个Shift、Alt、Ctrl或Cursor,就忽略这个键。如果L_Key_Made的值为“假”,就将这个键假设为普通的小写。如果L_Key_Made的值为“真”,于是就可能存在一个换档条件,虽然也可能是正用左手激励一个不同的非换档键。在L_Key_Made为“真”的情况下,传感器接收器将左手传感器数据发送给计算机300,输入到左手神经网络予以解码。如果解码得的左手键是一个Shift、Alt、Ctrl或Cursor,就因此修改对右手解码得到的键(例如,如果对于左手解码得到的是一个Shift键,就假设对于右手的是大写)。如果对于左手解码得到的键是其他键,就忽略这个键;在这种情况下,用从左手挠曲处于局部最大值的周期得到的数据很好地确定正按压的键是适当的。

神经网络的每个相应的节点的输出都是一个浮点值,通常归一化为0和1之间,其中1表示“真”(也就是表示相应的键与数据匹配),而0表示“假”。理想上,对于一组输入,其中一个输出将为1,而所有其他的输出都为0。实际上,输出并不理想,因此选择一个适当的输出门限(例如为0.7),这样,如果一个节点的输出超过这个门限,就可以认为与这个节点相应的键就是想要的键。对于有些输入有可能没有一个值超过这个门限。在这种情况下,系统可以提供某种出错反馈(例如一个听得到的嘟嘟声),也可以只是不动作。或许可能有多个输出节点超过门限,但是这种情况往往表示神经网络设计或训练得不好。如果有多个输出节点的值超过门限,系统可以就选择值最大的输出,或选择忽略所有的输出。也可以提供出错反馈。

可以预期,这种系统不会在各种情况下都能完美地解释用户想要的键,但是没有一个输入装置能做到这一点,即使是训练有素的打字员在一个传统的键盘上也难免出错。

校准和训练

如上面所说明的那样,传感器解释器通过校准虚拟击键检测器和训练神经网络键解码器而用户化,以适应个别用户。在这个优选实施例中,这是作为一个多阶段过程实现的,用户在越来越逼真的状况下逐渐执行越来越困难的击键练习。具体地说,用户响应系统提示按以下次序输入:(a)单个击键;(b)换档击键;(c)短词;以及(d)范例正文,例如一个段落。

图7A、7B和7C(在这里一起合为图7)为按照优选实施例设计的在校准和训练传感器解释器中所涉及的一些步骤的高层流程图。最初假设,所有为手指分配键都是任意的,甚至能不假设将一个特定的键分配给一个特定的手。然而,最初假设采用双手配置,换档型键可供双手使用,而且始终用与激励主键的手不同的另一只手激励。对于单手操作,可以采用不同的对于换档的假设。

参见图7,作为数据手套支持应用312一部分的校准例行程序首先向用户提示在一个准备输入数据的位置上放松双手15秒左右(步骤701)。在用户双手放松的情况下周期性地读传感器,计算每个传感器各自的平均值,以便得到每个传感器在静态下的电阻R0(i)(步骤702)。确定静态传感器值是所有后来的校准步骤的前提。

于是,校准例行程序向用户提示输入各个键(不换档),每次一个。这些键提示以随机次序慢慢给出,使用户有充裕的时间输入这个键而在给出下一个提示前将手放松。每个键至少提示一次,虽然校准例行程序也可以每个键提示若干次。在这个阶段不提示换档型键。如图7所示,键由系统选择和提示(步骤703)。在提示一个键时,传感器接收器以上面对步骤502所说明的扫描速率对传感器数据进行扫描,如对步骤503所说明的那样计算出每个手的总挠曲。然而,由于NW的值(窗口宽度)还没有确定,而且假设用户将按提示只按压一个键,因此传感器接收器只是保存在提示间隔内总挠曲(Agg D)最大的这个周期的传感器数据(步骤704)。这分别对每个手执行。在提示间隔内总挠曲最大的手假设为激励主键的手。这只手的传感数据由校准例行程序保存,供训练神经网络键解码器用。如果还有键要提示(步骤705),校准例行程序就返回到步骤703,选择和提示另一个键。在第一阶段结束时(已经提示了所有的单键),就从步骤705进入“否”分支。

可以看到,如果假设RQ_Threshold、LQ_Threshold、RS_Threshold和LS_Threshold都为0,而NW非常大使得它包括在提示间隔内的所有扫描周期,在单键校准期间传感器接收器所遵循的这些算法步骤就基本上与上面所说明的和图5中所示的相同。

完成了单键输入使得校准例行程序可以将键分配给手,也就是说,可以确定每个主键是用哪只手输入的(步骤706)。这在对换档键组合解码中是有用的,如下面所说明的那样。

然后,校准例行程序向用户提示输入各种换档键组合,每次一个。如在各个非换档键的情况下那样,也是以随机次序慢慢给出键提示。必须包括所有的换档键,保证对于双手都包括每个换档键,但是不必包括换档键和主键的所有可能组合。选择和向用户提示一个换档键组合(步骤707)。在提示一个组合键时,传感器接收器以上面对步骤502所说明的扫描速率对传感器数据进行扫描。由于已经确定了哪只手将激励主键,因此只需要如对步骤503所说明的那样计算激励主键的手的总挠曲。在发现有主键的手总挠曲最大的周期时,保存双手的传感器数据(步骤708)。与激励主键的手相对的那只手的传感器数据用作适当的Shift、Alt、Ctrl或Cursor键的训练数据。如果还有换档键要提示(步骤709),校准例行程序就返回到步骤707,选择和提示另一个键。在校准例行程序结束提示换档键组合时,从步骤709进入“否”分支。

得到了每个键和换档组合的初始数据,校准例行程序就为每只手构造一个神经网络(步骤710),就是通过为每个确定已由该手激励的键分配一个输出节点和为换档型键分配辅助输出节点进行的。然后,用后向传播训练算法以如上面所说明的那样保存的传感器数据训练这个神经网络(步骤711)。

然后,校准例行程序确定和设置传感器挠曲系数K(i)的值(图7中示为步骤712,详细情况示于图8)。

在理想上,系数K(i)选择成使对于每个虚拟击键所观测到的峰值总挠曲相同。然而,在每只手有14个传感器(系数K(i))和大约21-22个键(不包括换档键)的情况下,不可能保证有一个完美的解决方案,因此使总挠曲大致均衡就足够了。可以用各种线性规划中的任何一种线性规划或其他技术来获得一组可以接受的K(i)值,下面作为一个优选实施例所说明的算法只是这种技术的一个例子。对于每只手的传感器分别计算K(i)的值;在下面的程序中,只说明对一只手的计算,当然,对于另一只手情况也是这样。

最初,确定一组系数的“优良性”的度量。任意选择每个击键的峰值总挠曲,归一化为一个为1的目标值,离差(deviation)的度量定义为:

Deviation=∑(AggD(j)-1)2                             (4)

其中AggD(j)为如在前面的校正阶段期间传感器接收器所检测到的击键j的平均峰值总挠曲(如在式(1)中所定义的)。校准例行程序将试图将系数K(i)调整成使象在式(4)中所定义的离差的值减到最小。

参见图8,K(i)值最初归一化成使所有键的平均峰值总挠曲为1(步骤801)。对所有的键的平均值通过将各个键的峰值总挠曲(如在校准的第一阶段所确定的)相加后除以由这只特定的手激励的键的个数M确定。如果将个别的K(i)值乘以这个数的倒数,平均值将为1。因此,步骤801执行以下赋值:

K(i)<==K(i)×M/∑AggD(j)                                 (5)

为了均衡K(i)值,每个传感器和击键的峰值电阻和标称电阻是已知的,由前面的校正阶段确定。因此,式(1)可以表示为一个线性方程,各个[R(i)-R0(i)]2项都是常量,而K(i)认为是一个变量。由于R(i)对于每个传感器和每个由用户激励的键是不同的,因此常数[R(i)-R0(i)]2可以表示为RS(i,j),其中i表示传感器而j表示键。于是式(1)可以改写为: >>AggD>>(>j>)>>=>>Σ>>i>=>1>>N>>K>>(>i>)>>×>RS>>(>i>,>j>)>>.>.>.>.>.>.>.>.>.>.>>(>6>)>>>s>

而式(4)可以改写为: >>Deviation>=>>Σ>>j>=>1>>M>>>(>>(>>Σ>>i>=>1>>N>>K>>(>i>)>>×>RS>>(>i>,>j>)>>)>>->1>>)>2>>.>.>.>.>.>.>.>.>.>.>.>>(>7>)>>>>s>

离差因此是N个变量(K(i)的N个不同的值)的函数。如果选择i的一个任意值(标为I)而除了K(I)之外所有的K(i)的值都保持不变,按照式7得到的离差就降为K(I)的一个正二次函数,可以通过对这个函数求微分确定它的最小值的位置。例如,式(6)成为: >>AggD>>(>j>)>>=>K>>(>I>)>>×>RS>>(>I>,>j>)>>+>>Σ>>i>=>1>,>i>≠>1>>N>>K>>(>i>)>>×>RS>>(>i>,>j>)>>.>.>.>.>.>.>.>.>.>>(>8>)>>>s>

其中总和是一个常数。式(7)成为: >>Deviation>=>>Σ>>j>=>1>>M>>>(>K>>(>I>)>>RS>>(>I>,>j>)>>+>>(>>Σ>>i>=>1>,>i>≠>1>>N>>K>>(>i>)>>×>RS>>(>i>,>j>)>>)>>->1>>)>2>>.>.>.>.>.>.>.>.>>(>9>)>>>>s>

为了使表达式简明起见,将内部的小于1的总和项(是一个对于每个j的值是不同的常数)标为C(j)。于是式(9)简化为: >>Deviation>=>K>>>(>I>)>>2>>>Σ>>j>=>1>>M>>RS>>>(>I>,>j>)>>2>>->K>>(>I>)>>>Σ>>j>=>1>>M>>2>RS>>(>I>,>j>)>>C>>(>j>)>>+>>Σ>>j>=>1>>M>>C>>>(>j>)>>2>>.>.>.>.>.>.>.>.>>(>10>)>>>s>

于是离差对K(I)的导数为: >>Deviatio>>n>′>>=>2>K>>(>I>)>>>Σ>>j>=>1>>M>>RS>>>(>I>,>j>)>>2>>->>Σ>>j>=>1>>M>>2>RS>>(>I>,>j>)>>C>>(>j>)>>.>.>.>.>.>.>.>>(>11>)>>>s>

因此离差在 >>K>>(>I>)>>=>>Σ>>j>=>1>>M>>RS>>(>I>,>j>)>>C>>(>j>)>>/>>Σ>>j>=>1>>M>>RS>>>(>I>,>j>)>>2>>.>.>.>.>.>.>.>.>>(>12>)>>>s>

时达到最小值。参见图8,在步骤802,将K(I)设置为式(12)的值,使离差减到最小。对于新的K(I)的值计算出新得到的离差的值(步骤803)。然后,校准例行程序确定是否存在一个退出条件(步骤804)。退出条件最好是:(a)经预定次步骤802-805的循环迭代;或者(b)离差低于某个预定值。如果退出条件不满足,就从步骤804进入“否”分支。在这种情况下,值i加1,因此在循环的下一次迭代中将调整一个新的系数K(I+1),使总离差减到最小(步骤805)。于是校准例行程序对i的新的值执行步骤802-804。如果退出条件满足,就从步骤804进入“是”分支。确定了一组K(i)值后,校准例行程序将这些K(i)值传给传感器接收器(步骤806),供计算总挠曲用。

校准例行程序命令传感器接收器将NW最初设置为与一个快速打字员相应的最低可能值(步骤713)。NW的值可以在稍后的校准步骤中加以调整。将NW设置得低可以引起在只想要单个键时会两次检测到击键,但是为了避免遗漏击键,最初将它设置得低。也就是说,在校准阶段检测到双击键可以认为比完全检测不到击键要好。

校准例行程序还根据先前获得的传感器数据确定RQ_Threshold、RS_Threshold、LQ_Threshold和LS_Threshold的初始值(步骤714)。这些初始值宁可设置得低一些,以免忽略任何必需的数据。例如,可以将RQ_Threshold设置为任何由右手激励的键的最小总挠曲的10%(使用新的)K(i)值),将RS_Threshold设置为任何右手换档键的最小总挠曲的10%,等等。

然后,校准例行程序转至一个较为困难的阶段,向用户提示输入一些各有3、4个字母的短词。这个练习的目的是通过在依次输入多个字母的条件下获得训练输入进一步改善神经网络的训练数据。然而,由于将序列限制为一些短词,用户输入出错的概率就小,因此有可能对每个词在进入下一个词前进行分析。因此校准例行程序向用户提示打入一个列有这种用来校准的词的表内的一个短词(步骤715)。词是随机地从这个表中选出的。因此,用户随提示键入输入,然后暂停一下等待系统的反应。

接收到每个短词后,校准例行程序对输入进行处理(步骤716)。传感器接收器以在步骤712-714中确定的K(i)、初始门限和NW这些参数值用图5的程序就像用户输入真正数据那样处理输入。校准例行程序用如在步骤711所训练的神经网络对在提示间隔内来自传感器接收器的每个传感器数据(与键激励相应)进行解码。

然后将从神经网络输入的经解码的键数据与向用户提示的词内的字母相比较。有四种可能:(a)解码得到的键输出与提示词相同,也就是说没有检测到差错;(b)解码得到的键词内有提示词的所有字母,但至少有一个字母呈现为一个重写字母(甚至一个三写字母);(c)在解码得到的键词内有提示词的所有字母,但还有总挠曲值小的一个或多个无关字母;以及(d)所有的其他差错,包括可能的用户差错。在(b)的情况下,也许是用户输入数据正确,但是对于用户的打字速度来说NW设置得太小。在(c)的情况下,也许是用户输入数据正确,但是对于用户来说所用的门限设置得太低。

在(d)的情况下,表示一个可能的用户差错,从步骤717进入“是”分支,向用户提示重新输入同一个词(步骤718)。在(a)、(b)或(c)的情况下,认为用户已经输入正确的数据,从而从步骤718进入“否”分支,保存传感器数据(步骤719),供以后使用。如果还有更多的词要提示,从步骤720进入“是”分支,校准例行程序选择另一个词提示(步骤715)。在完成了练习所有的词时,从步骤720进入“否”分支。

校准例行程序现在可以调整一些参数。如果有任何词具有重写字母,可以将NW向上调整(步骤721)。NW的调整情况如下。对于每出现一个双重字母,就将具有最大的总挠曲的字母认为是真的字母,而将出现的另一个认为是一个差错。计算出每个词的每个相邻字母(忽略错误的双重字母)之间的间隔(以周期数计)。然后将NW加1,再总计对于这个新的NW值的差错数。这个新的值可能大到足以除去一个或多个双重字母差错,也就是说,如果传感器接收器在输入试验词时用了新的NW值,接收器不会检测到双重字母,因为这两个字母在同一个窗口内。然而,它也可能增大差错数。在总计差错数中,任何相邻字母之间周期数的差少于3NW的也认为是一个差错。这样做的原因是随着NW的增大,有可能相邻字母的窗口会相互干扰,使得虚拟键检测器就会只检测到一个字母,如果虚拟键检测器使用这个新的较大的NW值的话。在3NW的情况下,这样的可能性仍然十分小,但是在当前的校准阶段寻找的是一个保守的NW值。将NW调整到一个所希望的值实际上是将NW迭代地加1直到所有的双重字母差错消失,或者直到差错数由于相邻字符干扰呈现的差错开始增多,无论是哪个首先出现。

以类似的方式,可以将RQ_Threshold和LQ_Threshold调整成减少涉及多余的具有小的总挠曲值的无关字母的差错(步骤722)。从右手开始,将RQ_Threshold迭代地加1,直到从右手检测到的所有的具有小总挠曲值的多余字母消失,或者直到它的值达到从右手正确输入的具有最小总挠曲值的字母的总挠曲值的二分之一,无论是哪个首先出现。如果RS_Threshold小于经调整的RQ_Threshold值,就将RS_Threshold设置为等于RQ_Threshold(对于LS_Threshold情况类似)。

从没有作为差错删去的键得到的传感器数据于是用作更新神经网络的附加训练数据。也就是说,网络用后向传播算法以附加数据再予以训练(步骤723)。由于这数据作为一个字符串输入,很可能比如在校准的第一阶段内输入单个字符更接近实际使用的用户输入状况。

然后,校准例行程序进入最后一个也是更难的阶段,向用户提示打入一个或多个文本章节,例如句子或段落。这个练习的目的是通过在实际的输入状况下获得训练输入进一步提炼神经网络的训练数据,以及获得NW和门限的更精细调节。因此,校准例行程序显示一个或多个文本章节,让用户打入这章节(步骤724)。

除非用户是一个非常准确的打字员,否则很可能用户在输入整个段落中产生一些差错。因此,不因为发现一个差错就拒绝输入。校准例行程序将试图将解码得到的字符流与提示文本相匹配(步骤725)。达到字符匹配的程度,就将产生这些字符的传感器数据用作训练神经网络的附加训练数据。具体地说,再次用向后传播算法以附加数据来训练神经网络(步骤726)。

如在前面的校正阶段那样,用任何双重字母或具有非常小的总挠曲值的字母来进一步细调NW参数和门限,如上所述。然而,由于这是最后校准阶段,因此可以利用较过分的参数值使差错减到最少。具体地说,在调整NW时,任何相邻字母之间的周期数之差少于2NW(而不是3NW)的都认为是一个差错,这可以使NW稍高一些(步骤727)。在调整门限时,迭代地提高门限,直到除去了所有总挠曲小的字母,或者直到门限值达到从相应的手正确输入的具有最小总挠曲值的字母的总挠曲值,无论是哪个首先出现(步骤728)。这样就完成了校准和训练。

虽然上面说明了对一个神经网络键解码器的初始校准和训练例行程序,但按需要可以在实际使用期间不断地或者周期性地从用户收集附加训练数据。例如,用户没有正确校正的任何打入文本可以假设为得到精确解码的,而经校正的键入文本受到怀疑,不应该用作训练数据。用后向传播以附加训练数据对神经网络进行周期性的再训练有助于进一步改善网络的准确度。

可以问为什么使用如上所述的一个多阶段校准过程?为什么不就象在最后阶段那样要求用户键入一个文本段落?问题在于用户可能出错,而且不知道用户键入有多快。如果可以确信用户会以已知的速率键入文本段落而没有差错,前一些阶段就是多余的。实际上,可以假设第一和第二阶段将没有差错得到执行(因此将键分配给手是正确的,因为是神经网络的总训练)。因此可能检测到用户在较为困难的任务期间的偶然差错,予以剔除,而不是用作进一步训练数据的基础。

最好,校准参数和神经网络参数保存在简表323内,每当系统重新初始化或者同一个用户戴上数据手套进行数据输入时重新装入,因此不必完全重新校准。可以认为,在从用户的手上脱下数据手套以后再戴上时,由于手套拟合,传感器读数可能有一些改变,特别是在静态下的传感器值。因此,最好是每当用户戴上手套时,向用户提示在数据输入位置放松手15秒钟,使系统可以读取静态的传感器值。其余的值通常应该不需要每次使用时重新校准。然而,有可能随着时间的过去这些参数也有改变。例如,随着时间的过去用户的残疾可能更为严重,使用户的手指动作有所改变。在这种情况下,有时候可能必需用如上所述程序执行完全的重新校准。

虽然在这里对一个具体的校准程序作了说明,但是可以理解,在决定虚拟击键的检测和对键的解码的参数值的数量和类型上以及校准这些参数值或者得出这些参数值的方式上许多变形都是可行的。在一个校准程序中的阶段数可以有不同,可以只有一个阶段。此外,没有必要校准所有这样一些值,对于有些值,可以予以假设或者要求用户输入。例如,可以要求用户指出他是一个低速、中等或快速的打字员,而NW的值可以就根据这输入设置。

其他变形和实施例

通常,实现所例示的本发明的实施例所执行的例行程序,无论是作为一个操作系统或专门应用的一部分、程序、对象、模块还是指令序列实现的,在这里都称为“计算机程序”。计算机程序通常包括指令,在由按照本发明设计的计算机系统内的设备或系统的一个或多个处理器读取和执行时,使这些设备或系统实现执行体现本发明的各个方面的步骤或形成相应的构件所必需的步骤。此外,虽然本发明是在功能完全的计算机系统的环境下予以说明的,但本发明的各个实施例能作为一种呈许多形式的程序产品经销,无论实际执行经销所用的信号承载媒体是什么具体类型,本发明都同样适用。信号承载媒体的例子包括(但并不局限于)诸如易失和非易失性存储装置、软盘、硬盘驱动器、CD-ROM、DVD、磁带之类的可记录型媒体和诸如包括无线通信链路在内的数字和模拟通信链路之类的传输型媒体。信号承载媒体的例子在图2中示为存储器202,而在图3中示为存储器302或示为存储装置313。

在这个优选实施例中,数据手套用数据传输电缆物理上接到一个与通用计算机通信的小型便携式传感器接收器上。传感器解释器的虚拟击键检测功能大部分由传感器接收器内的可编程处理器完成,而键解码功能由在通用计算机内模拟一个神经网络的数据手套支持应用完成。可以理解,这个示范性的实施例只是一种可以设计功能和电子组件的可行方式,而许多其他方式也是可行的。例如,数据手套或其他传感装置不一定要通过电缆连接,也可以有一个诸如小电池之类的板上电源和一个诸如红外或射频链路之类的传输通信接口。数据手套与能完成所有的传感器解释功能的通用计算机直接通信也是可行的。也可以是传感器接收器内的电子设备完成虚拟击键检测和键解码两种功能,只将解码得到的键传送给计算机,犹如一个传统的键盘所作的那样。此外,传感器解释器可以设计成在虚拟击键检测功能与键解码功能之间没有明显的界线。许多其他变形也是可行的。

在这里所说明的这个优选实施例中,传感器真正安装在戴在用户手上的手套内。然而,也可以构成对用户足够准确和舒适的其他传感装置来检测必要的微小手活动和将输入提供给传感器解释器,而这种传感装置不一定要呈现为戴在手上的手套形式。

在这个优选实施例中,用人工神经网络将传感器数据解码为各个击键。可以理解,将任意传感器读数解码为击键属于通用的模式匹配范畴,因此也可以采用现在已知的或今后开发的任何模式匹配算法。此外,在这里作为优选实施例说明的神经网络只是可用于这种用途的神经网络的一个例子,当然,在设计一个适合将传感器数据解码为击键的神经网络中存在着许多变形。

在这个优选实施例中,采用了使用窗口概念的虚拟击键检测算法,在一个窗口内的峰值总挠曲被认为是一次击键。可以理解,虚拟击键检测的许多变形也是可行的。有许多其他对在这里称为总挠曲值的量的度量。可以通过不一定要依赖于一个宽度固定的窗口的积分或其他措施来检测峰值。此外,虚拟击键检测功能可以与键解码功能综合在一起。例如,如果可得到足够的处理能力,就可以在解码器(例如,神经网络)内根据每个扫描周期估计传感器输入,从而可以确定是否激励了一个键和所激励的键的类型。这样一个系统可以具有比在这里作为一个优选实施例所说明的大的潜在准确度,但是它需要量非常大的处理器资源(因此,这里所说明的实施例更为可取)。

诸如如上所述的可训练神经网络之类的可个别配置的传感器解释器的主要优点之一是这种传感器解释器能将手不同部分的活动的任意组合解释为不同的击键。特别是没有必要让一个手指接触一个键或者任何其他象一个键那样的物体或无论什么物体。此外,上面揭示的是将键分配给左右手神经网络,所述分配接近一个典型的QWERTY键盘的分配,但是用户可以将任何任意的键组分配给左手和将任何任意的键组分配给右手。此外,没有必要以任何方式让手的活动近似于接触一个键。可以设想,经训练的触动式打字员可能希望移动与键盘上的键相应的手指,尽管由于用户的残疾限制这样的移动,但是并不需要这样将手指与键关联起来。用户可能希望发明他自己任意的手指动作与不同的击键相应,这些任意的动作虽然在这里称为“虚拟击键”,但是不必近似于击键。握拳或作“V”形是可以理解为击键的动作的例子。

在以上说明中,说明了一种模拟键盘数据输入设备,作为一种供手功能受限制的个人使用的设备。虽然可以预料这样的个人可以从在这里说明的数据输入设备得到最大的好处,但是不一定局限于用于手功能受限制的个人。由于本发明很容易支持相对个人能力和偏好所进行的用户化,因此可能有些没有什么手残疾的个人会发现他们采用本发明能更有效(也就是,更快/更准确/更轻松)地输入数据。

作为本发明的一个可能应用的附例,传感器解释器可以训练成将象征性手语的手指动作识别为文本字符或文本字符的组合。这样一种应用可以用于手语教学,使学生(用户)可以从计算机接收到立即反应。

虽然上面揭示了本发明的一个具体实施例和一些备选方案,但熟悉该技术领域的人员可以看到在以下权利要求书所给出的本发明的专利保护范围内无论在形式上还是在细节上都可以作出其他的各种改变。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号