(57)【特許請求の範囲】
【請求項１】
ユーザの手の一部の運動を感知できる複数のセンサを含む感知デバイスと、
前記感知デバイス内の前記複数のセンサに結合されたセンサ・インタープリタであって、動きの異なる組合せの少なくともいくつかについて、個々のユーザの少なくとも１つの手が物体に触れることを必要とせずに、前記個々のユーザの前記少なくとも１つの手の一部の動きの異なる組合せを、キーボードのそれぞれの異なるキーの活動化として認識するように前記個々のユーザに合わせて構成可能であり、前記少なくとも１つの手の一部の異なるそれぞれの組合せの動きの選択が、事前に決定されるのではなくユーザの自由裁量によるセンサ・インタープリタと
を含むデータ入力装置。
【請求項２】
前記感知デバイスが、前記ユーザの手にはまる少なくとも１つの手袋を含み、前記複数のセンサが、前記少なくとも１つの手袋に取り付けられる、請求項１に記載のデータ入力装置。
【請求項３】
前記複数のセンサが、可変電気抵抗を有する複数のひずみゲージを含む、請求項２に記載のデータ入力装置。
【請求項４】
前記少なくとも１つの手袋内の前記センサが、ケーブルを介して、ユーザに取り付けられるポータブル・センサ・レシーバに結合され、前記センサ・レシーバが、前記センサからデータを受け取り、データをデジタル・コンピューティング・デバイスに通信する、請求項２に記載のデータ入力装置。
【請求項５】
前記センサ・インタープリタの少なくとも一部が、前記センサ・レシーバに含まれる、請求項４に記載のデータ入力装置。
【請求項６】
前記センサ・インタープリタが、（ａ）前記ユーザによる仮想キーストロークに対応する手の動きの発生を検出する、前記センサ・レシーバに含まれる仮想キーストローク・ディテクタと、（ｂ）前記仮想キーストローク・ディテクタによる仮想キーストロークの検出と一致する前記複数のセンサからの情報をキーボードの前記キーとしてデコードする、前記デジタル・コンピューティング・デバイスに含まれるキー・デコーダとを含む、請求項５に記載のデータ入力装置。
【請求項７】
前記少なくとも１つの手の任意の動きの前記異なる組合せが、キーボードのキーを活動化する典型的な手の動きより実質的に小さい、請求項１に記載のデータ入力装置。
【請求項８】
前記センサ・インタープリタが、少なくとも１つのニューラル・ネットワークを含む、請求項１に記載のデータ入力装置。
【請求項９】
前記センサ・インタープリタが、（ａ）前記ユーザによる仮想キーストロークに対応する手の動きの発生を検出する仮想キーストローク・ディテクタと、（ｂ）前記仮想キーストローク・ディテクタによる仮想キーストロークの検出と一致する前記複数のセンサからの情報をキーボードの前記キーとしてデコードするキー・デコーダとを含む、請求項１に記載のデータ入力装置。
【請求項１０】
前記仮想キーボード・ディテクタが、ウィンドウ中の事前定義された撓みの極大値として仮想キーストロークを検出し、前記事前定義された撓み測定値が、前記複数のセンサからのデータの関数である、請求項９に記載のデータ入力装置。
【請求項１１】
前記ウィンドウが、前記個々のユーザに合わせて構成可能である、請求項１０に記載のデータ入力装置。
【請求項１２】
前記事前定義された撓み測定値が、式
ΣK(i)×Fn(sensor_data(i))
の形であり、sensor_data(i)が、前記複数のセンサの第ｉセンサからのデータであり、Ｆｎ（sensor_data(i)）が、前記sensor_data(i)の事前定義された関数であり、Ｋ（ｉ）が、前記複数のセンサの第ｉセンサに対応する係数であり、各それぞれのセンサに対応する係数Ｋ（ｉ）が、前記個々のユーザに合わせて構成可能である、請求項１０に記載のデータ入力装置。
【請求項１３】
前記キー・デコーダが、少なくとも１つのニューラル・ネットワークを含み、前記ニューラル・ネットワークが、前記個々のユーザに合わせて構成可能である、請求項９に記載のデータ入力装置。
【請求項１４】
デジタル・デバイスにデータを入力する方法であって、
個々のユーザの少なくとも１つの手の一部の動きの異なる組合せを、キーボードのそれぞれの異なるキーの活動化として認識するように前記デジタル・デバイスを構成するステップであって、前記少なくとも１つの手の動きの前記異なる組合せの少なくともいくつかが他の物体に触れず、前記少なくとも１つの手の一部の異なるそれぞれの組合せの動きの選択が、事前に決定されるのではなくユーザの自由裁量による、前記構成するステップと、
前記デジタル・デバイス内で、ユーザの手の一部の動きを感知するセンサ入力を受け取るステップと、
前記センサ入力をキーボードのキーに対応する複数のキーストロークとして自動的に解釈するステップであって、前記構成ステップによって生成されるキーストロークのキーとして手の動きを認識するための構成と矛盾せずに前記デジタル・デバイスによって実行される、前記解釈するステップと
を含む方法。
【請求項１５】
前記少なくとも１つの手の任意の動きの前記異なる組合せが、キーボードのキーを活動化するのに典型的な手の動きより実質的に小さい、請求項１４に記載のデータを入力する方法。
【請求項１６】
複数のキーストロークとして前記センサ入力を自動的に解釈する前記ステップが、少なくとも１つの人工ニューラル・ネットワークを用いて前記センサ入力を処理することを含み、前記人工ニューラル・ネットワークが、前記構成ステップによって構成される、請求項１４に記載のデータを入力する方法。
【請求項１７】
コンピュータで実行されたとき、
（ａ）個々のユーザの少なくとも１つの手の一部の動きの異なる組合せを、キーボードのそれぞれの異なるキーの活動化として認識するようにデジタル・デバイスを構成するステップであって、前記少なくとも１つの手の動きの前記異なる組合せの少なくともいくつかが、動きの前記異なる組合せの少なくともいくつかについて他の物体に触れず、前記少なくとも１つの手の一部の異なるそれぞれの組合せの動きの選択が、事前に決定されるのではなくユーザの自由裁量による、前記構成するステップと、
（ｂ）前記デジタル・デバイス内で、ユーザの手の一部の動きを感知するセンサ入力を受け取るステップと、
（ｃ）前記センサ入力をキーボードのキーに対応する複数のキーストロークとして自動的に解釈するステップであって、前記構成ステップによって生成されるキーストロークのキーとして手の動きを認識するための構成と矛盾せずに前記デジタル・デバイスによって実行される、前記解釈するステップと
を実行するように適合されたプログラム・コード手段を含む、デジタル・デバイスにデータを入力するコンピュータ・プログラム。
【請求項１８】
前記プログラムが、前記ユーザに取り付けられたポータブル・センサ・レシーバ・デバイスのプロセッサで実行される第１部分と、汎用コンピューティング・デバイスで実行される第２部分とを含む、請求項１７に記載のプログラム。
【請求項１９】
データ入力デバイスを初期化する方法であって、
前記データ入力デバイスの複数のセンサの静止状態を判定するステップであって、前記センサが、ユーザの少なくとも１つの人間の手の一部の動きを感知する、前記判定するステップと、
前記少なくとも１つの手の一部の異なるそれぞれの組合せの運動によって複数の異なる仮想キーストロークを形成するように前記ユーザにプロンプトを出すステップであって、前記少なくとも１つの手の一部の異なるそれぞれの組合せの運動の選択が、事前に決定されるのではなくユーザの自由裁量による、前記プロンプトを出すステップと、
前記プロンプトを出すステップに応答するユーザの手の動きを複数のセンサを用いて感知するステップと、
前記複数のセンサの前記静止状態からのセンサ逸脱として前記複数の異なる仮想キーストロークを識別するステップと、
前記識別するステップによって識別された前記仮想キーストロークに対応する前記静止状態からのセンサ逸脱に似た将来のセンサ入力を、対応するそれぞれの仮想キーストロークとして認識するように前記データ入力デバイスを構成するステップと
を含む方法。
【請求項２０】
前記データ入力デバイスを構成する前記ステップが、前記識別するステップによって識別された前記センサ逸脱の少なくともいくつかからのセンサ・データを使用して少なくとも１つの人工ニューラル・ネットワークをトレーニングすることを含む、請求項１９に記載のデータ入力デバイスを初期化する方法。
【請求項２１】
前記データ入力デバイスを構成する前記ステップが、ピーク撓み測定値を仮想キーストロークとして識別するウィンドウのサイズを較正することを含む、請求項１９に記載のデータ入力デバイスを初期化する方法。
【請求項２２】
前記データ入力デバイスを構成する前記ステップが、各それぞれのセンサの出力に関連する複数の係数を較正することを含む、請求項１９に記載のデータ入力デバイスを初期化する方法。
【請求項２３】
前記データ入力デバイスを構成する前記ステップが、（ａ）前記ユーザによる仮想キーストロークに対応する手の動きの発生を検出する仮想キーストローク・ディテクタを構成すること、および（ｂ）前記仮想キーストローク・ディテクタによる仮想キーストロークの検出と一致する前記複数のセンサからの情報をキーボードの前記キーとしてデコードするキー・デコーダを構成することを含む、請求項１９に記載のデータ入力デバイスを初期化する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル・データ処理に関し、具体的には、身体障害を有する個人による使用のためのデジタル・データ入力デバイスに関する。
【背景技術】
【０００２】
２０世紀の後半に、情報革命として知られる現象が始まった。情報革命は、どの１つの事象や機械より範囲の広い歴史的発展であるが、デジタル電子コンピュータほど情報革命を表す機械はない。コンピュータ・システムの開発は、まさに革命であった。毎年、コンピュータ・システムは、より高速になり、より多くのデータを記憶し、より多くのアプリケーションをユーザに提供する。
【０００３】
コンピューティングのコスト低下とデジタル・コンピューティング・デバイスの一般入手性により、そのようなデバイスで使用可能な情報の量とそのようなデバイスが用いられるアプリケーションの種類が急増した。近年、安価な「パーソナル・コンピュータ」が、家庭での個人的使用のために、または職場での一個人の使用のために使用可能になってきた。小型化の高まりにより、ポータブル「ラップトップ」コンピュータや携帯情報端末（ＰＤＡ）の設計が可能になった。これらのデバイスは、インターネットの普及と共に、デジタル情報とコンピューティング機能を人々に大規模にもたらした。
【０００４】
これらの開発の結果の１つは、どのような理由であれ、コンピュータ技術にアクセスできない個人が不利な立場になり、この不利が、年を追うごとに大きくなっていることである。たとえば、大学が、時間割、研究課題、学年などを、インターネットを介して学生に伝えることは一般的である。場合によっては、このインターネットに依拠することが、インターネットの使用なしで必須科目を終了することが困難または不可能な範囲に達しており、これは、継続する可能性が高い傾向である。そのようなデジタル技術およびインターネットの使用は、高校以下の教育課程にさらに拡大する徴候を示す。
【０００５】
これらの進展にかかわらず、多くの個人が、コンピュータの使用を含む基本的な作業を実行できないか、そのような作業の実行に熟達しないままになっている。これらの欠足には多数のさまざまな理由があり、本明細書ではそのすべてには対処しない。一部の個人にとって、コンピュータ能力を欠いていることは、主にまたは部分的に、その個人が普通のデジタル入出力デバイスを使用することを困難または不可能にする身体障害に起因する。
【０００６】
身体障害は、さまざまな形を取る場合があり、そのすべてが即座に明らかになるわけではない。コンピュータを使用する個人の能力に影響する可能性がある身体障害の特定の形の１つが、制限された手の動きである。本明細書で使用する制限された手の動きは、健常者に典型的な範囲まで手および指を使用することはできないが、手の完全な麻痺は伴わないことを意味する。そのような障害は、反復運動損傷、関節炎、または別の原因によって引き起こされる可能性がある。手の動きが制限された個人は、物をつかむ、ライトのスイッチを入れるなど、日常の作業の多くまたはほとんどすべてを実行できる場合がある。したがって、その個人が、全く傷害を有しないように見える場合がある。しばしば、問題の個人が、手の障害のある関節を、正常とみなし得る範囲で動かすことができるが、それを行うのが苦痛である場合がある。場合によっては、普通のコンピュータ・キーボードをタイプする場合など、頻繁に行う場合に限って苦痛になる場合がある。基礎になる状態の将来の損傷または悪化の罹病性を予測でき、その結果、通常の動きの範囲全体で手の影響を受ける関節を動かすことが、痛みなどの即座の症状をもたらさないが、繰り返してそれを行うことによって損傷が発生するか悪化すると予想し得る場合もある。
【０００７】
制限された手の動きは、非常に一般的な問題であるが、しばしば、より重い障害を優先して、ヒューマン・ファクタ・プラニング（human factors planning）において無視される。たとえば、全く手が動かない（または手がない）人は、音声認識あるいは足または体の他の部位に取り付けるセンサなど、ある代替の特殊な入力デバイスを使用することができる。手の動きが制限された個人も、そのようなデバイスを使用できるということになる。しかし、そのようなデバイスは、遅いか、エラーが多いか、一般になんらかの点で普通のキーボードより劣る入力の形態を提供する。
【０００８】
米国特許第６３８８６５７号に、仮想現実感（ＶＲ）キーボードを実施するシステムおよび方法が開示されている。ＶＲキーボードのシステムおよび方法は、ＶＲ手袋位置を受け取り、所定のマッピングを使用してＶＲ手袋位置から対応するキー・コードを生成し、データまたはコマンドあるいはその両方のキーボードまたはキーパッドあるいはその両方の取込みに対応するキー入力としてキー・コードをアプリケーション・プログラムに送る。
【０００９】
米国特許第６０３５２７４号に、柔軟なフィルムによって分離された２つの対向する可変抵抗ひずみ感知要素を使用する、内部補償を有するゴニオメータが開示されている。このゴニオメータは、複雑なヒンジまたはジョイントの動きを検出するために組で使用することができ、ヒンジまたはジョイントの位置のパターンを使用して、記号を定義することができる。
【００１０】
米国特許第６４０７６７９号に、知覚手袋によって仮想環境でテキストを入力するシステムおよび方法が開示されている。ユーザは、手袋でキーボードの押下げをシミュレートすることによって、１つまたは複数の文字を表すキーを入力する。
【００１１】
しかし、従来技術は、上で説明した種類の障害を有する個人のキーボード入力の問題に対処していない。
【特許文献１】米国特許第６３８８６５７号
【特許文献２】米国特許第６０３５２７４号
【特許文献３】米国特許第６４０７６７９号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
したがって、本発明は、ユーザの人間の手の一部の随意運動を感知できる複数のセンサを含む感知デバイスと、前記感知デバイス内の前記複数のセンサに結合されたセンサ・インタープリタであって、個々のユーザの少なくとも１つの手が別の物体に触れることを必要とせずに、前記個々のユーザの前記少なくとも１つの手の一部の任意の動きの異なる組合せを、キーボードのそれぞれの異なるキーの活動化として認識するように前記個々のユーザに合わせて構成可能であるセンサ・インタープリタとを含むデータ入力装置を提供する。
【００１３】
したがって、手の動きが制限された個人には、その人の特定の障害に合わせてカスタマイズされ、入力効率において普通のキーボードに迫るかこれと同等である形の入力デバイスが提供されることが好ましい。
【課題を解決するための手段】
【００１４】
好ましい実施形態によれば、シミュレートされたキーボード・データ入力デバイスに、手動き感知装置およびセンサ・インタープリタが含まれる。感知装置は、ユーザの手（または両手）にはまる手袋（１つまたは１対）の形であることが好ましく、この手袋内に、指の微細な随意運動を検出できる複数のセンサが取り付けられ、微細な随意運動は、普通のコンピュータ・キーボードのキーを活動化させるのに通常必要な随意運動より実質的に小さい。受信デジタル・デバイス内のセンサ・インタープリタは、キーボードのキーに対応するそれぞれの文字として、個々のユーザの能力との一貫性を有する、異なる指の動きまたは指の動きの組合せを認識するように、個々のユーザのために構成されることが好ましい。シミュレートされたキーボード入力デバイスが構成されたならば、ユーザは、ユーザが可能な微細な指の動きの組合せを繰り返すことによって、シミュレートされたキーボードでテキストを「タイプ」し、センサ・インタープリタからキーボード文字を生成することができることが好ましい。好ましい実施形態では、センサ・インタープリタが、仮想キーストローク・ディテクタおよびキー・デコーダを含む。仮想キーストローク・ディテクタは、周期的にセンサをスキャンし、撓み極大値を仮想キーストロークとして検出する算法機能であることが好ましい。キー・デコーダは、その入力が検出された仮想キーストロークのセンサ・データであり、出力がキーボード文字である、適切にトレーニングされた人工ニューラルネットワークであることが好ましい。ニューラル・ネットワークの適切なトレーニング・データは、たとえば、さまざまなサンプル・テキストを「タイプ」するようにユーザに要求し、センサ結果を所望の出力に適合させることによって得ることができる。ニューラル・ネットワークは、プログラマブル・プロセッサ内で実行されるプログラミング・コードによってエミュレートされることが好ましい。
【００１５】
データ手袋内のセンサは、ケーブルを介してセンサ・レシーバに結合され、センサ・レシーバは、便利にユーザが身に着けるか、ポケットにおさまるか、衣類に取り付けることができ、デジタル・コンピュータと通信する、小さいポータブルな専用電子デバイスであることが好ましい。仮想キーストローク・ディテクタは、好ましくはレシーバに収納され、キー・デコーダ・ニューラル・ネットワークは、デジタル・コンピュータでプログラミングで実施される。しかし、センサ・インタープリタ機能を、その代わりに、完全にデジタル・コンピュータ内で、または完全にセンサ・レシーバなどの専用デバイス内で実施することができる。
【００１６】
好ましい実施形態の一態様では、ユーザは、手袋の対を身に着けて、手の１０本の指のすべての動きを解釈させる。しかし、代替態様では、片手だけ使えるユーザが、単一の手袋を身に着けることができ、あるいは、１０本未満の使える指を有するユーザのために複数の手袋を使用することができる。指の動きに任意の「和音」組合せを使用して、１０本未満の指を使える個人のために、所望の数のキーボード文字を得ることができる。
【００１７】
したがって、本明細書に記載のシミュレートされるキーボード入力デバイスは、所期の形で普通のキーボードを使用することが身体的に不可能な個人に対して、普通のキーボードの健常ユーザのデータ入力に似た形で、またいくつかの状況で健常ユーザの効率レベルに迫る効率のレベルで、データを入力する能力を提供する。
【００１８】
前記感知デバイスが、前記ユーザの前記人間の手にはまる少なくとも１つの手袋を含み、前記複数のセンサが、前記少なくとも１つの手袋に取り付けられることが好ましい。
【００１９】
前記複数のセンサが、可変電気抵抗を有する複数のひずみゲージを含むことが好ましい。
【００２０】
前記少なくとも１つの手袋内の前記センサが、ケーブルを介して、ユーザに取り付けられるポータブル・センサ・レシーバに結合され、前記センサ・レシーバが、前記センサからデータを受け取り、データをデジタル・コンピューティング・デバイスに通信することが好ましい。
【００２１】
前記センサ・インタープリタの少なくとも一部が、前記センサ・レシーバに含まれることが好ましい。
【００２２】
好ましい実施形態では、前記センサ・インタープリタが、（ａ）前記ユーザによる仮想キーストロークに対応する手の動きの発生を検出する、前記センサ・レシーバに含まれる仮想キーストローク・ディテクタと、（ｂ）前記仮想キーストローク・ディテクタによる仮想キーストロークの検出と一致する前記複数のセンサからの情報をキーボードの前記キーとしてデコードする、前記デジタル・コンピューティング・デバイスに含まれるキー・デコーダとを含む。
【００２３】
センサ・レシーバが、伝送インターフェースを介してデジタル・コンピューティング・デバイスと通信することが好ましい。
【００２４】
前記少なくとも１つの手の任意の動きの前記異なる組合せが、キーボードのキーを活動化する典型的な手の動きより実質的に小さいことが好ましい。
【００２５】
前記センサ・インタープリタが、少なくとも１つのニューラル・ネットワークを含むことが好ましい。
【００２６】
好ましい実施形態では、前記センサ・インタープリタが、（ａ）前記ユーザによる仮想キーストロークに対応する手の動きの発生を検出する仮想キーストローク・ディテクタと、（ｂ）前記仮想キーストローク・ディテクタによる仮想キーストロークの検出と一致する前記複数のセンサからの情報をキーボードの前記キーとしてデコードするキー・デコーダとを含む。
【００２７】
好ましい実施形態では、前記仮想キーボード・ディテクタが、ウィンドウ中の事前定義された撓み測定値の最大値として仮想キーストロークを検出し、前記事前定義された撓み測定値が、前記複数のセンサからのデータの関数である。
【００２８】
前記ウィンドウが、前記個々のユーザに合わせて構成可能であることが好ましい。
【００２９】
前記事前定義された撓み測定値が、式
ΣK(i)×Fn(sensor_data(i))
の形であり、sensor_data(i)が、前記複数のセンサの第ｉセンサからのデータであり、Ｆｎ（sensor_data(i)）が、前記sensor_data(i)の事前定義された関数であり、Ｋ（ｉ）が、前記複数のセンサの第ｉセンサに対応する係数であり、各それぞれのセンサに対応する係数Ｋ（ｉ）が、前記個々のユーザに合わせて構成可能であることが好ましい。
【００３０】
前記キー・デコーダが、少なくとも１つのニューラル・ネットワークを含み、前記ニューラル・ネットワークが、前記個々のユーザに合わせて構成可能であることが好ましい。
【００３１】
もう１つの態様によれば、本発明は、デジタル・デバイスにデータを入力する方法であって、個々のユーザの少なくとも１つの手の一部の任意の動きの異なる組合せを、キーボードのそれぞれの異なるキーの活動化として認識するように前記デジタル・デバイスを構成するステップであって、前記少なくとも１つの手の任意の動きの前記異なる組合せの少なくともいくつかが他の物体に触れないステップと、前記デジタル・デバイス内で、ユーザの手の一部の動きを感知するセンサ入力を受け取るステップと、前記センサ入力をキーボードのキーに対応する複数のキーストロークとして自動的に解釈するステップであって、前記構成ステップによって生成されるキーストロークのキーとして手の動きを認識するための構成と矛盾せずに前記デジタル・デバイスによって実行されるステップとを含む方法を提供する。
【００３２】
前記少なくとも１つの手の任意の動きの前記異なる組合せが、キーボードのキーを活動化するのに典型的な手の動きより実質的に小さいことが好ましい。
【００３３】
複数のキーストロークとして前記センサ入力を自動的に解釈する前記ステップが、少なくとも１つの人工ニューラル・ネットワークを用いて前記センサ入力を処理することを含み、前記人工ニューラル・ネットワークが、前記構成ステップによって構成されることが好ましい。
【００３４】
複数のキーストロークとして前記センサ入力を自動的に解釈するステップが、ユーザによる仮想キーストロークに対応する手の動きの発生を検出すること、およびキーボードのキーに対応するキーストロークとして複数のセンサからのセンサ・データをデコードすることであって、センサ・データが、検出ステップによって仮想キーストロークの検出と一致することを含むことが好ましい。
【００３５】
仮想キーストロークに対応する手の動きの発生を検出するステップが、それぞれのウィンドウ中に事前定義された撓み測定値の最大値を検出することであって、事前定義された撓み測定値が、複数のセンサからのデータの関数である、検出することを含むことが好ましい。
【００３６】
一態様によれば、本発明は、コンピュータで実行されたとき、（ａ）個々のユーザの少なくとも１つの手の一部の任意の動きの異なる組合せを、キーボードのそれぞれの異なるキーの活動化として認識するように前記デジタル・デバイスを構成するステップであって、前記少なくとも１つの手の任意の動きの前記異なる組合せの少なくともいくつかが他の物体に触れないステップと、（ｂ）前記デジタル・デバイス内で、ユーザの手の一部の動きを感知するセンサ入力を受け取るステップと、（ｃ）前記センサ入力をキーボードのキーに対応する複数のキーストロークとして自動的に解釈するステップであって、前記構成ステップによって生成されるキーストロークのキーとして手の動きを認識するための構成と矛盾せずに前記デジタル・デバイスによって実行されるステップとを実行するように適合されたプログラム・コード手段を含むコンピュータ・プログラムを提供する。
【００３７】
前記プログラムが、前記ユーザに取り付けられたポータブル・センサ・レシーバ・デバイスのプロセッサで実行される第１部分と、汎用コンピューティング・デバイスで実行される第２部分とを含むことが好ましい。
【００３８】
本発明は、デジタル・デバイスの少なくとも１つのプロセッサによって実行されたとき、前記デバイスに本発明のステップを実行させる、信号担持媒体に記録された複数のプロセッサ実行可能命令を含む、前記デジタル・デバイスへのデータの入力を管理するプログラム製品として実施することができる。
【００３９】
もう１つの態様によれば、本発明は、データ入力デバイスを初期化する方法であって、前記データ入力デバイスの複数のセンサの静止状態を判定するステップであって、前記センサが、ユーザの少なくとも１つの人間の手の一部の動きを感知するステップと、前記少なくとも１つの手の一部の異なるそれぞれの組合せの随意運動によって複数の異なる仮想キーストロークを形成するように前記ユーザにプロンプトを出すステップであって、前記少なくとも１つの手の一部の異なるそれぞれの組合せの随意運動の選択が、ユーザの自由裁量によるステップと、前記プロンプトを出すステップに応答するユーザの手の動きを複数のセンサを用いて感知するステップと、前記複数のセンサの前記静止状態からのセンサ逸脱として前記複数の異なる仮想キーストロークを識別するステップと、前記識別するステップによって識別された前記仮想キーストロークに対応する前記静止状態からのセンサ逸脱に似た将来のセンサ入力を、対応するそれぞれの仮想キーストロークとして認識するように前記データ入力デバイスを構成するステップとを含む方法を提供する。
【００４０】
プロンプトを出すステップが、徐々に増加する複雑さの複数のステージで実行されることが好ましい。
【００４１】
前記データ入力デバイスを構成する前記ステップが、前記識別するステップによって識別された前記センサ逸脱の少なくともいくつかからのセンサ・データを使用して少なくとも１つの人工ニューラル・ネットワークをトレーニングすることを含むことが好ましい。
【００４２】
前記データ入力デバイスを構成する前記ステップが、ピーク撓み測定値を仮想キーストロークとして識別するウィンドウのサイズを較正することを含むことが好ましい。
【００４３】
前記データ入力デバイスを構成する前記ステップが、各それぞれのセンサの出力に関連する複数の係数を較正することを含むことが好ましい。
【００４４】
前記データ入力デバイスを構成する前記ステップが、（ａ）前記ユーザによる仮想キーストロークに対応する手の動きの発生を検出する仮想キーストローク・ディテクタを構成すること、および（ｂ）前記仮想キーストローク・ディテクタによる仮想キーストロークの検出と一致する前記複数のセンサからの情報をキーボードの前記キーとしてデコードするキー・デコーダを構成することを含むことが好ましい。
【００４５】
例のみとして、図面を参照して、本発明の好ましい実施形態をこれから説明する。
【発明を実施するための最良の形態】
【００４６】
図面を参照すると、同一の符号が複数の図面を通じて同一の部品を示すが、図１は、本発明の好ましい実施形態による、シミュレートされたキーボード・データ入力デバイスのデータ入力手袋１００の平面図であり、この手袋は、ユーザの右手用であり、左手用の手袋（図示せず）は、手袋１００の鏡像になる。
【００４７】
データ入力手袋１００に、ユーザの手にはまる手袋本体１０１が含まれる。複数の微細動きセンサ１０２から１１５が、ユーザの手のさまざまな関節の位置の近くで本体１０１に取り付けられる。センサは、データ・ケーブル１１９およびデジタル・データ・デバイスの適切なポートに挿入されるカップリング１２０に接続される。手袋本体１０１は、図１では例示のために普通の完全な手袋として図示されているが、手袋本体の機能は、センサを支持し、収納することなので、実際の手袋本体は、ユーザの快適さを高めるために部分的に開いたものとすることができ、たとえば、手袋本体１０１を、指先部または掌部で開いたものとすることができる。
【００４８】
好ましい実施形態では、センサ１０２から１１５は、可変抵抗ひずみゲージである。すなわち、各センサ１０２から１１５は、ワイヤのひずみ（曲げる動き）に応答して抵抗が変化する、さまざまな適切な導体または半導体材料のいずれかを使用する薄いワイヤからなる受動電気センサである。ワイヤは、機械的支持および安定性のために薄く平らで柔軟な部材に取り付けられることが好ましいが、その代わりに、手袋本体１０１に直接に取り付けることができる。柔軟な部材は、指または手首の関節にまたがるように取り付けられ、したがって、ユーザが対応する関節を曲げることに応答して曲げられる。柔軟な部材およびひずみゲージ・ワイヤのこの曲げが、ワイヤの抵抗の変化を引き起こし、この抵抗変化を、適切なセンサ・エレクトロニクスによって測定することができる。
【００４９】
異なるキーを区別するのに十分な数のセンサを使用しなければならない。このために、ひずみゲージ１０６、１０９、１１１、１１３、および１１５を、各指の付け根の関節に隣接して配置し、別々のひずみゲージ１０５、１０８、１１０、１１２、および１１４を、各指の第２関節に配置することが推奨される。さらに、複数のひずみゲージ１０２から１０４を、手首に配置し、追加のひずみゲージ１０７を、親指と人差し指の間に配置することが推奨される。このセンサ配置が、図１の好ましい実施形態に示されているが、その代わりに異なる数および配置のセンサを使用できることを理解されたい。本明細書でさらに詳細に説明するように、さまざまなセンサは、センサ・インタープリタ（好ましくはニューラル・ネットワーク）の入力データを供給し、センサ・インタープリタは、センサ・データをキーストロークとして解釈する。単一のキーストロークが、通常は、そのキーに関連する特性パターンでの複数のセンサからの出力を引き起こす。センサの数が多いほど、センサ・インタープリタが異なる所期のキーを信頼性のある形で区別する可能性が高まる。その一方で、多数のセンサによって、コストも増え、ケーブル１１９の厚さが増え、ある点で、ユーザに顕著に不快になる可能性がある。特定の設計で使用されるセンサの実際の数は、これらのさまざまな考慮事項のトレードオフである。
【００５０】
データ入力手袋の目的は、健常キーボード・タイピストの動きの全範囲で手を動かすことが困難または不可能であることがわかっている人の手の動きを検出することであることが好ましく、したがって、手袋のセンサは、健常な個人の普通のキーストロークに典型的であるものよりはるかに小さい、指の小さい動きを検出できなければならない。ひずみゲージ・センサは、成熟した技術であり、指の微細な動きに対しても極度に敏感であるという長所を有し、指の動きがほとんど見えないほどの時であっても、指の動きを検出でき、異なるキーストロークを区別することができる。しかし、ひずみゲージ技術は、必ずしも、使用することができる唯一のセンサ技術ではない。現在存在するものであれ、今後開発されるものであれ、センサ・インタープリタに適切な入力を供給するために障害を有する個人の指の非常に微細な指の動きを検出できるすべてのセンサ技術を、その代わりに使用することができる。たとえば、圧電圧力センサが、その代わりに適する可能性がある。
【００５１】
しかし、シミュレートされたキーボードの指の動きを検出するのに時々使用されるあるタイプのセンサが、必ずしも、手の機能が制限された個人のデータ入力手袋での使用に適さないことを理解されたい。具体的に言うと、ユーザが、実際に、指先でキーに触れないことが期待され、したがって、指先の圧力に応答するセンサは、必ずしも有用でない。同様に、指先の近くに取り付けられ、指が既知の物体に触れることに少なくとも部分的に依存する加速度センサまたは位置センサは、ユーザが、事前に定義された物体に触れる必要なしに、キーを表す任意の指の動きを発明することができると期待されるので、あるユーザに有用でない可能性がある。
【００５２】
図２に、本発明の好ましい実施形態による、センサ・レシーバ２００の主要な内部構成要素を示す。センサ・レシーバ２００は、ユーザの衣服または体にクリップ、ストラップ、ネックレス、または他の手段を用いて取り付けることができ、データ入力手袋からのコネクタ１２０を接続できる、小さいポータブル・ユニットに収納されることが好ましい。この実施形態では、単一のセンサ・レシーバ２００が、ユーザの片手に１つの２つのデータ入力手袋１００から、感知されたパラメータを受け取る。しかし、その代わりに、データ入力手袋ごとに別々のセンサ・レシーバを使用すること、またはセンサ・レシーバへの入力として単一のデータ入力手袋だけを設ける（たとえば片手だけのユーザの場合に）ことが、可能である。
【００５３】
図２からわかるように、センサ・レシーバ２００には、お互いに通信する、プログラマブル・プロセッサ２０１およびメモリ２０２が含まれる。プロセッサ２０１は、メモリ２０２に記憶された命令を実行する、汎用プログラマブル・プロセッサであることが好ましい。とりわけ、これらの命令は、プロセッサ２０１に、本明細書で詳細に説明するように、データ入力手袋１００の対のさまざまなセンサ要素の電気抵抗を連続して判定し、感知された抵抗をキーストロークとして解釈し、キーストローク・データをコンピューティング・デバイスに通信することによって、センサ・レシーバ２００の動作を制御させる。メモリ２０２は、プロセッサ２０１で実行される制御プログラムを含むランダム・アクセス半導体メモリである。メモリ２０２は、さまざまなメモリ・デバイス技術のいずれかを使用することができ、単一の一体の実体として図示されているが、メモリ２０２に、異なる物理構成の複数のモジュールを含めることができる。一実施形態では、メモリ２０２に、制限された回数まで書き込むことができる不揮発性フラッシュ・メモリが含まれ、このフラッシュ・メモリには、制御プログラムおよびさまざまなニューラル・ネットワーク構成変数が含まれる。しかし、その代わりに、メモリ２０２を、コンピュータ・システムが初期化されたとき制御プログラムおよびネットワーク構成変数がロードされるダイナミック・メモリとすることができ、あるいは、メモリの他の形またはメモリ形態の組合せとすることができる。
【００５４】
感知エレクトロニクス構成要素には、図２に示されているように結合される、定電流源２０３、マルチプレクサ２０４、高インピーダンス電圧増幅器２０５、およびデジタル・アナログ変換器２０６が含まれる。マルチプレクサ２０４は、プロセッサ２０１からの複数ビット・デジタル制御信号によって制御されるスイッチのバンクである。マルチプレクサ２０４内の各スイッチは、マルチプレクサ２０４からコネクタ１２０およびケーブル１１９を介してデータ入力手袋１００のそれぞれのセンサ１０２から１１５に走るそれぞれの導電性ワイヤに対応する。データ手袋１００内の各抵抗ひずみゲージ・センサの一端が、マルチプレクサ２０４からのそれぞれの信号線に接続され、他端が、共通接地線に接続され、この共通接地線は、ケーブル１１９およびコネクタ１２０を介してセンサ・レシーバ２００に戻る。動作中には、プロセッサ２０１から制御信号により、マルチプレクサ２０４が、選択されたセンサに対応する単一の選択されたスイッチを閉じ、他のすべてのスイッチは開かれたままにする。定電流源２０３が、閉じられたスイッチおよびそれに対応する抵抗ひずみゲージ・センサを介して、既知の一定の電流を駆動する。マルチプレクサ２０４内の１つのスイッチだけが閉じられ、増幅器２０５が高インピーダンスであるため、定電流源２０３によって生成される電流の事実上すべてが、選択されたひずみゲージ要素を介して接地に駆動される。オームの法則によれば、これによって、ひずみゲージ・センサにまたがる、増幅器２０５への入力での電圧低下が生成され、この電圧低下は、ひずみゲージの抵抗に比例する。増幅器２０５は、この電圧低下に応答し、デジタル・アナログ変換器（ＡＤＣ）２０６への入力として、この電圧低下を増幅する。ＡＤＣ２０６は、電圧をデジタル量に変換し、このデジタル量が、プロセッサ２０１に入力される。プロセッサ２０１は、マルチプレクサ２０４に、すべてのセンサ線を順番にサイクルさせて、各センサの抵抗を個別に読み取る（すなわち、スキャン・サイクル）。
【００５５】
センサ・レシーバ２００には、さらに、コンピュータなどの外部デジタル・デバイスと通信する外部通信インターフェース２０７が含まれる。この通信インターフェースは、現在既知のまたは今後開発される、さまざまな通信手段のどれでも使用することができる。たとえば、外部デバイスとの通信は、適切なプロトコルのいずれかを使用して、接続されたケーブルによるものとするか、赤外線、無線周波数、または他の伝送リンクとすることができる。外部インターフェース２０７が、データ・ケーブルによるものである場合、電力を、そのケーブルを介してレシーバ２００に供給することができる。その代わりに、レシーバ２００が、電池（図示せず）など、それ自体の電源を有することができる。
【００５６】
図３に、データ手袋入力デバイス１００を使用して入力を供給することができる通常のコンピュータ・システム３００を示す。コンピュータ・システム３００には、ＣＰＵ３０１、主メモリ３０２、さまざまなデバイス・アダプタおよびインターフェース３０３から３０８、ならびに通信バス３１０が含まれる。ＣＰＵ３０１は、メモリ３０２に記憶された命令を実行する汎用プログラマブル・プロセッサであり、図３では単一のＣＰＵが示されているが、複数のＣＰＵを有するコンピュータ・システムを使用できることを理解されたい。メモリは、データおよびプログラムを記憶するランダムアクセス半導体メモリであり、メモリは、概念上単一の一体の実体として図示されているが、メモリが、しばしば、キャッシュおよび他のメモリ・デバイスの階層に編成されることを理解されたい。通信バス３１０は、異なるデバイスの間のデータ、コマンド、および他の情報の転送をサポートし、単一のバスとして単純化された形で図示されているが、複数のバスとして構成することができ、階層的な形で編成することができる。ディスプレイ・アダプタは、ビデオ・ディスプレイ３１１をサポートし、ビデオ・ディスプレイ３１１は、通常は、陰極線管であるが、他のディスプレイ技術を使用することができる。ポインタ・アダプタ３０４は、マウスと示されたポインティング・デバイス３１２をサポートするが、他の形のポインティング・デバイスを使用するか、ポインティング・デバイスを全く使用しないことが可能であることを理解されたい。ストレージ・アダプタ３０６は、１つまたは複数のデータ・ストレージ・デバイス３１３をサポートし、データ・ストレージ・デバイス３１３は、通常は、回転式磁気ハード・ディスク・ドライブであるが、他のデータ・ストレージ・デバイスを使用することができる。ポインタ・アダプタ３０７は、プリンタ３１４をサポートする。ネットワーク・インターフェース３０８は、他のコンピュータの外部ネットワークへのインターフェースを提供する。そのようなインターフェースは、インターネットを介するリモート接続、イーサネット（Ｒ）・ネットワークまたはトークン・リング・ネットワークなどのローカル・エリア・ネットワーク、またはサーバとして使用される単一の大型メインフレーム・コンピュータに複数のワークステーションを接続するのに使用できるメインフレーム端末チャネル・インターフェースとすることができる。インターフェースは、電気ワイヤ、光ファイバ、または他の物理媒体とするか、無線周波数接続などの伝送型インターフェースとすることができる。多数の他のタイプのインターフェースが可能である。コンピュータ・システム３００は、通常は、「ワークステーション」または「パーソナル・コンピュータ」と称する単一ユーザ・コンピュータ・システムのさまざまなモデルのいずれかである。図３の表現は、例示的な単純化された表現として意図されており、システム構成の多数の変形が、本明細書に記載のものに加えて可能であることを理解されたい。さらに、本明細書に記載の入力手袋を使用するデジタル・デバイスは、パーソナル・コンピュータ・システムである必要はなく、メインフレームに接続されたいわゆるダム端末、ノートブック・コンピュータ、ラップトップ・コンピュータ、専用デバイス、または他のさまざまなハードウェア変形形態とすることができる。
【００５７】
図３からわかるように、通信バス３１０に結合されたデータ手袋アダプタ３０５によって、バス（およびそれからコンピュータ３００のさまざまなデバイス）とセンサ・レシーバ２００の間の通信が可能になる。前述のように、この通信接続は、有線ケーブルの形とすることができ、あるいは、当技術分野で周知のように、さまざまなプロトコルのいずれかを使用する、赤外線、無線周波数、または他の伝送リンクとすることができる。高帯域幅は、一般に必要でないので、さまざまなシリアル通信プロトコルのどれもが、適切であるはずである。センサ・レシーバ２００とアダプタ３０５の間の通信リンクは、両方向通信をサポートすることが好ましい。
【００５８】
図３は、概念的な形で、メモリ３０２に常駐する、コンピュータ・システム３００の主要なソフトウェア構成要素を表す。オペレーティング・システム３２１は、当技術分野で周知のように、デバイス・インターフェース、メモリ・ページの管理、複数のタスクの管理など、さまざまな低水準ソフトウェア機能を提供する。データ手袋サポート・アプリケーション３２２は、下記で詳細に説明するように、データ手袋入力デバイスおよび関連するセンサ・レシーバの初期化、較正、および動作をサポートする。データ手袋サポート・アプリケーション３２２には、ユーザ固有パラメータを記憶する、特に、センサ・データをキーストロークにデコードするのに使用されるニューラル・ネットワークを定義する較正された値およびパラメータを記憶する、構成プロファイル３２３が含まれる。図３には１つの構成プロファイル３２３が示されているが、システム３００が複数の人によって共通して使用される場合、システム３００の複数の構成プロファイルに、異なるユーザのそれぞれに対応する別々のプロファイルを記憶することが可能である。普通のオペレーティング・システムの機能の１つは、キーストロークの形のユーザ入力を受け取ることであり、したがって、オペレーティング・システム３２１は、ユーザ・キーストロークであるように見えるデータ手袋からのユーザ入力を受け取るように構成される。データ手袋サポート・アプリケーション３２２は、オペレーティング・システム３２１と別に示されているが、オペレーティング・システムの一部にすることができる。
【００５９】
データ手袋サポート・アプリケーション３２２の他に、ＣＰＵ３０１で実行される１つまたは複数のユーザ・アプリケーション３２４および３２５が、ユーザの代わりにさまざまなタスクのいずれかを実行し、データ手袋入力デバイスによって生成されたデータ入力を受け取ることができる。そのような他のユーザ・アプリケーションには、たとえば、ワード・プロセッシング、会計、コード開発およびコンパイル、メール、予定表、または無数のユーザ・アプリケーションのどれでも含めることができる。２つのアプリケーション３２４および３２５が、図３に示されているが、そのようなアプリケーションの数は、変更することができ、通常はこれより多数である。
【００６０】
図３のソフトウェア構成要素は、概念的にメモリ３０２に常駐するものとして図示されているが、一般に、コンピュータ・システムのメモリが、すべてのプログラムおよびデータを同時に保持するには小さすぎ、情報が、通常は、回転式磁気ディスク・ドライブなどの１つまたは複数の大容量記憶装置を含むデータ・ストレージ・デバイス３１３に記憶され、情報が、必要に応じてオペレーティング・システムによってメモリにページングされることを理解されたい。
【００６１】
本発明の好ましい実施形態によれば、ユーザは、ユーザの手から感知された動きデータを普通のキーボードの異なるキーストロークとして解釈するように、センサ・インタープリタを個人的に構成する。感知データの解釈は、トレーニング可能で構成可能な人工ニューラル・ネットワークすなわち、プログラマブル・プロセッサで実行され、ネットワーク・パラメータを指定するのに構成データを使用する、コンピュータ・プログラミング・コードとして実施されるシミュレートされた神経網の形のキー・デコーダと、仮想キーストローク検出アルゴリズムを用いて達成されることが好ましい。ニューラル・ネットワークのトレーニングは、あるデータを「タイプ」するようにユーザにプロンプトを出し、プロンプトに続く任意のセンサ出力を所望のプロンプトを出されたデータとして解釈することによってネットワークをトレーニングすることによって達成される。トレーニングされたならば、ネットワークは、センサ・データを受け取り、それをキーとして解釈し、そのキーを、オペレーティング・システムまたはユーザ・アプリケーションによるさらなる使用のためにコンピュータ・オペレーティング・システムに渡す。このシステムの動作を、下記で詳細に説明する。
【００６２】
仮想キーストローク検出
普通のキーボードでは、キーストロークの検出が、ある臨界点までのキーの撓みを検出する電子センサを使用して達成される。任意の手の動きの場合の仮想キーストロークの検出は、より複雑である。ユーザは、キーストロークを示すために、必ずしも物体に触れない。手は、空中で動いており、おそらくは、目で観察することが困難なほどに微細に動く。
【００６３】
好ましい実施形態によれば、センサ・レシーバ２００で実行される仮想キーストローク検出プログラムは、センサを継続的にスキャンし、撓みの極大値を観察する。このデータが、キーストロークとして解釈されるが、対応するキーは、この時点ではデコードされない。撓みの極大値が、キーストロークであると判定されたとき、極大値に対応するセンサ・データが、ニューラル・ネットワークに入力されて、キーがデコードされる。Shift、Ctrl、Alt、および類似するキーの最初の活動化および最終的な解放を検出することも必要である。
【００６４】
仮想キーストローク検出プログラムでは、次式によって計算される集合手撓みという概念が使用される。
集合撓み＝ΣＫ（ｉ）×［Ｒ（ｉ）−Ｒ０（ｉ）］２    （１）
ここで、Ｋ（ｉ）は、センサｉの撓み係数であり、Ｒ（ｉ）は、センサ（ｉ）の抵抗であり、Ｒ０（ｉ）は、静止状態でのセンサｉの公称抵抗である。公称値からの抵抗の変化が、二乗され（単に絶対値をとるのではなく）て、抵抗のより大きい変化を有する（おそらくは所期のキーを最も示す）センサにより大きい重みを与え、他のセンサからの潜在的に雑音の読みの上へこれらの読みを持ち上げる。集合撓みは、式（１）を使用して、片手のすべてのセンサからのセンサ項を合計することによって、手ごとに別々に計算される。個々のユーザの能力に合わせて調整するために、Ｋ（ｉ）の値が、本明細書で詳細に説明するように較正されることが好ましい。しかし、単純な実施形態では、すべてのｉについてＫ（ｉ）＝１とするか、平均的なユーザに基づくＫの値の固定された組を仮定することが可能である。
【００６５】
図４に、時間の関数としてのシミュレートされた集合手撓み曲線を示す（複数スキャン・サイクル）。図を単純にするために、片手の集合撓み曲線を示すが、両手が別々に判定されることを理解されたい。図４には、３つの別個のキー（仮想キーストローク）の活動化が示されており、これは、極大値４０１から４０３によって示されている。定義により、極大値は、定義された時間ウィンドウ４０４から４０６内の特定の手のセンサの集合最大値である。小さすぎるウィンドウによって、ランダムな振動または他の要因の結果として、１つだけが意図されている場合の複数キー・活動化が登録される可能性がある。たとえば、図４を参照すると、ウィンドウ４０４内に２つの「ピーク」が示されている。ウィンドウ・サイズがはるかに小さい場合、これらのピークの両方が、別々に「キーストローク」として検出され、１つではなく２つのキーのデコードがもたらされる可能性がある。その一方で、大きすぎるウィンドウによって、隣より小さい集合撓みを示すいくつかの所期のキーストロークが検出できなくなる可能性がある。もう一度図４を参照すると、ウィンドウ４０５が実質的に拡大される場合、最終的に、極大値４０２より大きい集合撓みを有するウィンドウ４０４内のスキャン・サイクルが含まれ、その結果、極大値４０２が検出されなくなる。好ましい実施形態では、ウィンドウのサイズが、異なるユーザの異なるデータ入力レートに対処するために異なる値をセットすることができる構成可能変数である。
【００６６】
図５および６は、仮想キーストローク検出プログラムのより重要なステップを示す、単純化された流れ図である。仮想キーストローク検出プログラムは、イネーブル／ディスエーブル信号（図示せず）によってイネーブルされ、ディスエーブルされることが好ましい。イネーブル／ディスエーブル信号の目的は、ユーザがデータを入力することを意図していない時のスプリアス入力の生成を防ぐことである。たとえば、ユーザは、電話やコーヒーのカップをとるために手を上げる場合があり、それを行うのに必要な指の動きが、センサ・インタープリタによってキーストロークとして解釈されてはならない。ユーザが、マウスなどの代替入力デバイスを使用することを望む場合もある。イネーブル／ディスエーブル信号は、さまざまな形のいずれかで生成することができる。一実施形態では、ユーザがデータを「タイプ」することを望むとき、手が、圧力感知パーム・レストに置かれ、イネーブル／ディスエーブル信号が、パーム・レスト内の圧力スイッチによって生成される。他の実施形態に、フット・ペダル、音声活動化、またはイネーブル／ディスエーブル信号を生成する特殊なキーの組合せを含めることができる。
【００６７】
図５および６を参照すると、イネーブルされているとき、キーボード検出プログラムは、ブロック５０１で、スキャン・サイクルの始めを示すタイマの満了を待つ。キーストローク検出プログラムは、適度な精度でキーストロークを検出するのに十分な、プロセッサ２０１の能力との一貫性があるスキャン・レートでセンサの抵抗をスキャンする（スキャン・サイクルを実行する）（ステップ５０２）。好ましい実施形態では、毎秒約１００スキャン（１００Ｈｚ）のスキャン・レートが使用されるが、スキャン・レートを、これより速くまたはこれより遅くすることができることを理解されたい。各スキャン・サイクルに、各手袋の集合撓みが、上で説明した式（１）に従って別々に計算される（ステップ５０３）。
【００６８】
検出プログラムは、ステップ５０４で、右手袋集合撓みを右手袋静止閾値（RQ_Threshold）と比較する。RQ_Threshold（および左手袋の対応するLQ_Threshold）は、キーストロークを示さない小さい手の撓みをフィルタ・アウトすることを意図されたものである。すなわち、測定された集合撓みが、ある最小閾値を超えない限り、センサ・データが無視され、それ以上処理されない（ステップ５０４からの「Ｎｏ」分岐）。好ましい実施形態では、RQ_ThresholdおよびLQ_Thresholdの両方が、個々のユーザについて独立に較正され、セットされる。
【００６９】
RQ_Thresholdを超える場合には、ステップ５０４の「Ｙｅｓ」分岐をたどり、検出プログラムは、ステップ５０５で、右手袋集合撓みを右手袋シフト閾値（RS_Threshold）と比較する。RS_Threshold（および対応するLS_Threshold）は、シフトタイプのキー（すなわちShift、Ctrl、またはAlt）が活動化されている時を示すことを意図されたものである。これらの閾値も、個々のユーザについて独立に較正され、一般に、RQ_ThresholdおよびLQ_Thresholdより大きいが、そうである必要はない。RQ_Thresholdを超える場合、状態変数R_Key_Madeに「真」をセットし（ステップ５０６）、そうでない場合には、「偽」をセットする（ステップ５０７）。
【００７０】
検出プログラムは、最後のＮｗサイクルに行われた右手集合撓み計算のそれぞれを調べる（ステップ５０８）。これらの値は、計算されたときアレイに保存され、サイクル・カウントが増えるときエージ・アウトされる。Ｎｗの値は、極大のウィンドウ４０４から４０６の幅の約半分（サイクル数単位）を表す。定義により、集合撓み値は、ウィンドウ内（前後にＮｗサイクル以内）の他のすべての集合撓み値より大きい場合に限って、極大とみなされる。現在のサイクルの右手の集合撓みが、前のＮｗサイクルのいずれの右手集合撓みよりも大きい場合に（ステップ５０８の「Ｙｅｓ」分岐）、それが新しい仮の右極大値とみなされ、現在のサイクルからのすべてのセンサ・データが、新しい仮の右手極大値として保存され、前に保存された仮の右極大値のすべてが上書きされる（ステップ５０９）。
【００７１】
新しい右手極大値が見つからない場合（ステップ５０８からの「Ｎｏ」分岐）、検出プログラムは、前に保存された仮の右手極大値集合撓みが、Ｎｗサイクルよりも以前に検出されたかどうかを判定する（ステップ５１０）。そうである場合には、その仮の右手極大集合撓みが検出されたサイクルの前および後の両方のＮｗサイクルのウィンドウ内でより大きい集合撓み値が検出されておらず、この値が、真の極大値として確認されている。この場合、ステップ５１０からの「Ｙｅｓ」分岐をたどり、極大値が検出されたサイクルから保存されたセンサ・データをニューラル・ネットワークへの入力として使用して、ユーザによってどのキーが示されたかを判定する（ステップ５１１）。好ましい実施形態では、これが、極大値が検出されたサイクルのセンサ・データが、センサ・レシーバ２００からインターフェース２０７およびアダプタ３０５を介してコンピュータ３００に送られることを意味する。送られるデータに、右手の各センサからの読みならびにL_Key_Madeの現在値（シフトタイプのキーを検出するのに必要になる場合がある）およびサイクル番号（較正に使用され、進行中のトレーニング、診断、または類似するルーチンにも使用される場合がある）が含まれる。L_Key_Madeが「真」である場合、送信されるデータに、さらに、シフト・キーのデコードに必要になる可能性がある、左手のセンサからの最も最近の読みが含まれる）。検出プログラムは、仮の右極大値を記憶する変数をクリアし（ステップ５１２）、その結果、右極大値が記憶されないようにする。保存された仮の右極大値が、Ｎｗサイクルより以前に保存されたのでない場合、または仮の右極大値がない場合には、ステップ５１０の「Ｎｏ」分岐をたどる。
【００７２】
類似するステップが、左手センサ・データについて実行される、すなわち、図６に示されたステップ５１３から５２１は、それぞれステップ５０４から５１２と同一であるが、右手データではなく左手データに適用される。図示のように左手データを処理した後に、検出プログラムは、ステップ５０１に戻って、次のスキャン・サイクルを待つ。
【００７３】
キー・デコード
好ましい実施形態では、キー・デコード機能が、ＣＰＵ３０１で実行されるソフトウェアで実施される人工ニューラル・ネットワークによって実行される。しかし、本明細書で説明するように、キー・デコード機能の多数の代替実施形態が可能である。
【００７４】
人工ニューラル・ネットワークは、概念上、人工ニューロン（ノードとも称する）および接続の有向グラフであり、各接続は、２つのノードの間で単一方向に、ソース・ノードからターゲット・ノードに走る。適応重みが、各接続に関連する。適応重みは、ターゲット・ノードへの入力の一部を作るためにソース・ノードの出力に適用される係数である。ターゲット・ノードへの入力は、ターゲット・ノードへの接続について、各ソース出力値にそのそれぞれの接続重みをかけたものの合計すなわち、
Target_input＝ΣSource_output(i)×Weight(i)    （２）
である。ターゲット・ノード出力は、ターゲット・ノード入力の単一値関数すなわち、
Target_output＝F(target_input)    （３）
である。この関数は、線形または非線形になる可能性がある。好ましい実施形態では、周知のシグモイド関数が使用されるが、他の関数を使用できることを理解されたい。
【００７５】
データ手袋サポート・アプリケーション３２２に、ニューラル・ネットワーク機能が含まれることが好ましく、データ手袋サポート・アプリケーション３２２は、記憶されたパラメータを使用して、人工ニューラル・ネットワークを構成し、実行する。具体的に言うと、各レベルのネットワーク・ノードの個数、各接続の接続重み、およびノード出力関数のすべてを、特定のニューラル・ネットワークのパラメータとして記憶することができる。これらのパラメータは、プロファイル３２３に記憶される。初期化の際に、データ手袋サポート・アプリケーション３２２は、プロファイル３２３に記憶されたパラメータを読み取り、記憶されたパラメータに従って人工ニューラル・ネットワークを「構築」する。実行時に、データ手袋サポート・アプリケーション３２２は、プロファイルによって指定される人工ニューラル・ネットワークを実行して、センサ入力をキーストロークにデコードする。
【００７６】
図７は、本発明の好ましい実施形態による、データ入力手袋からの複数のひずみゲージ・センサの出力をキーストロークとして解釈するニューラル・ネットワーク機能を示す概念図である。好ましい実施形態のネットワークは、上位ノードから下位ノードへのフィードバック接続がない、完全に接続された３レベル（レイヤとも称する）の階層ネットワークである。この好ましいネットワークは、「バック・プロパゲーション（back propagation）」アルゴリズムおよび本明細書に記載のように入手されるトレーニング・データを使用してトレーニングされる。図７からわかるように、このネットワークには、第１レベルの複数の入力ノード、第２レベルの複数の隠れノード、および第３レベルの複数の出力ノードが含まれる。各入力ノードは、データ入力手袋のセンサの１つに対応し、これは、データ入力手袋のセンサと同数の入力ノードがあることを意味する。したがって、各入力ノードは、マルチプレクサ２０４が対応するセンサを選択したとき増幅器２０５によって検出され、ＡＤＣ２０６によってデジタル表現に変換された、センサにまたがる電圧低下から導出された値を入力として受け取る。これは、生の値とするか、正規化式に従って正規化することができる。各出力ノードは、データ入力用のキーボードの単一のキー、たとえば、アルファベットの２６文字のいずれか、１０個の数字のいずれか、あるいはスペース・バー、コンマ、ピリオドなどのさまざまな句読点または特殊キーのいずれかに対応する。
【００７７】
生じる問題の１つが、ユーザが複数のキーを同時に押す、シフトタイプ動作の解釈である。複数キー動作を受け取り、解釈する、複数の可能な手法がある。
【００７８】
理論上、そのようなキーの組合せごとに１つの出力ノードを有するニューラル・ネットワーク機能を構築することが可能である。たとえば、小文字の「Ａ」（他のキーが押されない、「Ａ」キー）の１つの出力ノード、大文字の「Ａ」（Shift-A）の１つの出力ノード、Alt-Aの組合せの１つの出力ノード、およびCtrl-Aの組合せの１つの出力ノードがある。Shift-Ctrl-Aおよび類似する複数の組合せの出力ノードも設けることができる。これらの出力ノードが、キーボードのすべてのキーについて複製される場合、非常に多数の出力ノードが必要になることがわかる。この多数のノードによって、ネットワークを正しくトレーニングすること、またはあるキーおよびキーの組合せを信頼性のある形で区別することが、困難になる可能性がある。したがって、そのような手法は、可能ではあるが、好ましい実施形態ではない。
【００７９】
好ましい実施形態では、活動化される主キー（すなわち、英数字キー、または記号キー）が、Shift、Ctrl、Alt、または類似するキーの活動化に使用されたのと違う手で活動化されると仮定する。この仮定に基づいて、各手からのセンサを、別々のニューラル・ネットワーク機能を使用して別々に解釈する。すなわち、左データ入力手袋のセンサの数（図１の例示的実施形態では１４センサ）と等しい数の入力ノードを有する左手データ入力手袋用の第１ニューラル・ネットワーク機能と、右データ入力手袋のセンサの数（やはり例示的実施形態では１４センサ）と等しい数の入力ノードを有する右手データ入力手袋用の第２ニューラル・ネットワーク機能がある。各ニューラル・ネットワークの出力ノードの数は、キーボードの各それぞれの半分のキーの個数におおむね対応する。どちらかの手が英数字キーまたは記号キーを活動化している間に他方の手がShiftキー、Ctrlキー、またはAltキーを活動化できるので、両方のニューラル・ネットワークが、Shift、Ctrl、およびAltの出力ノードを有する。複数のシフトタイプ・キーの組合せ、たとえばShift-Alt、Ctrl-Alt、Shift-Ctrl、およびShift-Ctrl-Altのそれぞれの出力ノードも設けることができる。標準キーボードまたはタイプライタの、１行のファンクション・キー、数字キーパッド、または類似物がない、４行のキーを仮定すると、各ニューラル・ネットワークは、約３０個の出力ノードを有し、これは、可能なキー組合せごとに別々の出力ノードが使用される場合に必要になる数百個のノードよりはるかに扱いやすい。この実施形態の隠れノードの数は、各ネットワークで約２０個である。
【００８０】
たとえば、どちらかといえば最小限の出力の実施形態では、通常の「ＱＷＥＲＴＹ」キーボード配置に対応して、下記のキー出力ノードが、左手ニューラル・ネットワークに割り当てられる。
１、２、３、４、５、Ｑ、Ｗ、Ｅ、Ｒ、Ｔ、Ａ、Ｓ、Ｄ、Ｆ、Ｇ、Ｚ、Ｘ、Ｃ、Ｖ、Ｂ、Tab、Shift、Ctrl、Alt、Shift-Alt、Ctrl-Alt、Shift-Ctrl、Cursor（２８ノード）
下記が、右手ニューラル・ネットワークに割り当てられる。
６、７、８、９、０、Ｙ、Ｕ、Ｉ、Ｏ、Ｐ、Ｈ、Ｊ、Ｋ、Ｌ、セミコロン、Ｎ、Ｍ、コンマ、ピリオド、／、Enter、Space、Shift、Ctrl、Alt、Shift-Alt、Ctrl-Alt、Shift-Ctrl（２８ノード）
【００８１】
出力ノード総数を減らすために、多くのコンピュータ・キーボードに存在するキーのいくつか（たとえば「Caps Lock」）が欠けていることが観察される。これらの文字または機能を、Shiftキー、Altキー、およびCtrlキーのさまざまな組合せを使用して簡単に形成できることを理解されたい。標準キーボードにはないが使用される１つの追加「キー」が、左手の「Cursor」キーである。この実施形態では、「Cursor」が、効果的に、右手がカーソル制御として機能するようにするシフトタイプ・キーである。たとえば、「Cursor」を押した状態では、キー「Ｉ」または「Ｏ」が、cursor_upに対応し、キー「Ｈ」または「Ｊ」が、cursor_leftに対応し、キー「；」が、cursor_rightに対応し、キー「，」または「．」が、cursor_downに対応する。キーのどれもが、必ずしも物理的位置を有しないので、ユーザは、「Cursor」を表す快適な独特の動きを発明することができる。たとえば、ユーザは、左手で拳（または、ユーザの障害が許容する範囲でそれに近いもの）を作って、「Cursor」キーを示すことができる。もちろん、上の出力キー割り当てが、可能な出力キー割り当ての１つにすぎないことと、キーボードに通常は存在する省略されたキーのいずれかまたはすべてに対応する出力ノードを追加するか、より少ない出力ノードとより多くのShift／Alt／Ctrlキーの組合せを使用することが可能であることを理解されたい。
【００８２】
シフト・キー組合せを扱う、さまざまな追加の代替技法がある。その１つが、ユーザが一度に１つのキーだけを押すように制限し、すべてのシフトタイプ・キーが、「Caps Lock」キーに似た、トグルオン、トグルオフ・モードで振る舞うようにすることである。もう１つの代替案は、フット・ペダルなど、シフトタイプ・キー用の補助入力手段を設けることである。どちらの技法も、理想的ではないが、一度に見られる出力組合せの数が減り、したがって、キーの区別を改善するのに役立つ可能性がある。さらに、一部の障害ユーザは、複数のキーを同時に活動化することが困難であることがわかる場合があり、その結果、トグル・モードまたはフット・ペダルの使用が、これらの個人にとってより安楽になる可能性がある。
【００８３】
仮想キーストロークが検出される（たとえば右手に関して）場合、右手のセンサ・データが、対応する右手ニューラル・ネットワークに入力され、ニューラル・ネットワークの出力が、押されたキーを示す。キーが、Shift、Alt、Ctrl、またはCursorとしてデコードされる場合には、そのキーは無視される。L_Key_Madeの値が偽である場合には、そのキーは、普通の小文字と仮定される。L_Key_Madeの値が真である場合には、シフト状態が存在する可能性があるが、異なる非シフト・キーが左手によって活動化されている可能性もある。L_Key_Madeが真の場合、左手センサ・データが、センサ・レシーバによってコンピュータ３００に送られ、デコードのために左手ニューラル・ネットワークに入力される。左手のデコードされたキーが、Shift、Alt、Ctrl、またはCursorである場合には、右手のデコードされたキーが、それ相応に修正される（たとえば、左手についてShiftキーがデコードされた場合には、右手について大文字を仮定する）。左手についてデコードされたキーが、他のキーである場合には、これを無視する。この場合には、押されたキーの最善の判定のために、左手撓みが極大値であるサイクルからのデータを使用することが正しい。
【００８４】
ニューラル・ネットワークの各それぞれのノードの出力は、浮動小数点値であり、通常は、０と１の間で正規化され、１は「真」（すなわち、対応するキーがデータと一致すること）を示し、０は偽を示す。理想的には、入力の組について、出力の１つが１になり、他のすべてが０になる。実際には、出力はこれより理想的でなく、したがって、出力の適切な閾値（たとえば０．７）が選択され、これによって、ノードの出力が閾値を超える場合、そのノードに対応するキーが所期のキーであると仮定される。一部の入力について、閾値を越える値がないことが有り得る。この場合には、システムは、エラー・フィードバック（可聴ビープなど）を提供するか、単に何も行わないことができる。複数の出力ノードが閾値を超えることは、ありそうもないが、この事実は、ニューラル・ネットワークの設計またはトレーニングが悪いことを示す傾向がある。複数の出力ノードが閾値を超える場合、システムは、単に最大の値を有する出力を選択するか、すべての出力を無視することを選択することができる。任意選択のエラー・フィードバックを設けることもできる。
【００８５】
システムが、すべての場合にユーザの所期のキーを完全に解釈はしないと期待されるが、それが可能な入力デバイスはない。トレーニングされたタッチ・タイピストであっても、普通のキーボードで誤りを犯す。
【００８６】
較正およびトレーニング
上で説明したように、センサ・インタープリタは、仮想キーストローク・ディテクタを較正し、ニューラル・ネットワーク・キー・デコーダをトレーニングすることによって、個々のユーザに合わせてカスタマイズされる。好ましい実施形態では、これが、マルチステージ・プロセスとして達成され、ユーザは、徐々に現実的になる条件の下で、徐々に難しくなるキーストロークの実行を徐々に実行する。具体的に言うと、ユーザは、システム・プロンプトに応答して、（ａ）単一キーストローク、（ｂ）シフトされたキーストローク、（ｃ）短い単語、（ｄ）段落などのサンプル・テキストの順序で入力する。
【００８７】
図８、９、および１０は、好ましい実施形態による、センサ・インタープリタの較正およびトレーニングに使用されるステップの高水準流れ図である。当初に、指へのキーのすべての割り当てが任意であることと、特定の手への特定のキーの割り当てを仮定できないことを仮定する。しかし、当初に、２本の手の構成が使用され、シフトタイプ・キーが、両方の手で使用可能であり、必ず主キーを活動化する手と反対の手で活動化されると仮定する。１本の手の動作については、シフトに関する異なる仮定を使用することができる。
【００８８】
図８から１０を参照すると、データ手袋サポート・アプリケーション３２２の一部である較正ルーチンは、まず、約１５秒間、データ入力の準備ができた位置で手の力を抜くように、ユーザにプロンプトを出す（ステップ７０１）。Ｒ０（ｉ）すなわち静止状態の各センサの抵抗を得るために、ユーザの手の力が抜けた状態でセンサを周期的に読み取り、各個々のセンサの平均値を計算する（ステップ７０２）。静止センサ値の判定は、すべての後続較正ステップの前提条件である。
【００８９】
較正ルーチンは、一度に１つずつ、個々のキー（シフトなし）を入力するようにユーザにプロンプトを出す。このキー・プロンプトは、ゆっくり、ランダムな順序で与えられ、ユーザが、キーを入力するのに十分な時間を与えられ、次のプロンプトを与える前に手の力を抜けるようにする。各キーが、少なくとも１回プロンプトを出されるが、較正ルーチンは、各キーのプロンプトを複数回出すことができる。シフトタイプ・キーは、この段階ではプロンプトを出されない。図８から１０からわかるように、キーは、システムによって選択され、プロンプトを出される（ステップ７０３）。キーのプロンプトが出されたとき、センサ・レシーバが、ステップ５０２に関して上で説明したスキャン・レートでセンサ・データをスキャンし、ステップ５０３に関して説明したように各手の集合撓みを計算する。しかし、Ｎｗ（ウィンドウ・サイズ）の値が、まだ確立されておらず、ユーザが、プロンプトで１つのキーだけを押すと仮定されるので、センサ・レシーバは、プロンプト間隔で最大の集合撓みを有するサイクルのセンサ・データを単純に保存する（ステップ７０４）。これは、手ごとに別々に行われる。プロンプト間隔で最大の集合撓みを有する手が、主キーを活動化する手であると仮定される。この手の感知データが、ニューラル・ネットワーク・キー・デコーダのトレーニングに使用するために、較正ルーチンによって保存される。プロンプトを出されるキーが残っている場合に（ステップ７０５）、較正ルーチンは、ステップ７０３に戻って、別のキーを選択し、プロンプトを出す。第１フェーズが終了した（すべての単一キーのプロンプトを出した）とき、ステップ７０５の「Ｎｏ」分岐をたどる。
【００９０】
RQ_Threshold、LQ_Threshold、RS_Threshold、およびLS_Thresholdが０であり、Ｎｗが非常に大きく、その結果、プロンプト間隔内のすべてのスキャン・サイクルを含むと仮定する場合、単一キー較正中にセンサ・レシーバが従う算法ステップが、上で説明し、図５および６に示したものと本質的に同一であることが観察される。
【００９１】
単一キー入力の完了によって、較正ルーチンが、キーを手に割り当てる、すなわち、どの手が各主キーに使用されるかを判定することが可能になる（ステップ７０６）。これは、下記で説明するように、シフト・キー組合せのデコードに有用である。
【００９２】
較正ルーチンは、一度に１つずつ、さまざまなシフト・キー組合せを入力するようにユーザにプロンプトを出す。個々のシフトされないキーの場合のように、キー・プロンプトは、ゆっくり、ランダムな順序で与えられる。すべてのシフト・キーを含めることと、各シフト・キーが両手について含まれることを保証することが必要であるが、シフト・キーと主キーの可能なすべての組合せを含める必要はない。シフト・キー組合せが、選択され、ユーザにプロンプトを出される（ステップ７０７）。キー組合せのプロンプトが出されたとき、センサ・レシーバは、ステップ５０２に関して上で説明したスキャン・レートでセンサ・データをスキャンする。どの手が主キーを活動化するかが既に判定されているので、ステップ５０３に関して説明したように、主キーを活動化する手の集合撓みを計算することだけが必要である。主キーを有する手の最大の集合撓みを有するサイクルが見つかったとき、両手のセンサ・データを保存する（ステップ７０８）。主キーを活動化する手と反対の手のセンサ・データを、適切なShiftキー、Altキー、Ctrlキー、またはCursorキーのトレーニング・データとして使用する。プロンプトを出されるシフト・キーがまだある場合には（ステップ７０９）、較正ステップは、ステップ７０７に戻って、別のキーを選択し、プロンプトを出す。較正ルーチンが、シフト・キー組合せのプロンプトを終了したとき、ステップ７０９の「Ｎｏ」分岐をたどる。
【００９３】
キーおよびシフト組合せごとの初期データを入手したので、較正ルーチンは、各手で活動化されたと判定された各キーの出力ノードおよびシフトタイプ・キーの追加出力ノードを割り当てることによって、その手のニューラル・ネットワークを構築する（ステップ７１０）。ニューラル・ネットワークを、バック・プロパゲーション・トレーニング・アルゴリズムを使用して、上で説明したように保存されたセンサ・データを用いてトレーニングする（ステップ７１１）。
【００９４】
較正ルーチンは、センサ撓み係数Ｋ（ｉ）の値を判定し、セットする（図８から１０ではステップ７１２として示され、図１１で詳細に説明する）。
【００９５】
理想的には、係数Ｋ（ｉ）は、各仮想キーストロークについて観察されるピーク集合撓みが同一になるように選択される。しかし、各手に１４個のセンサ（係数Ｋ（ｉ））と約２１から２２個のキー（シフト・キーを含まず）の場合、完全な解を保証することは不可能であり、集合撓みのおおまかな等化が十分である。さまざまな線形計画法または他の技法のいずれかを使用して、Ｋ（ｉ）の許容可能な組を得ることができ、好ましい実施形態として下記で説明するアルゴリズムは、そのような技法の単一の例にすぎない。Ｋ（ｉ）の値は、各手のセンサについて別々に計算され、下の手順では、片手の計算だけを説明するが、これが、他方の手についても繰り返されることを理解されたい。
【００９６】
まず、係数の組の「良さ」の測定値を確立する。各キーストロークのピーク集合撓みが、１のターゲット値への正規化について任意に選択され、逸脱（Deviation）の測定値が、
Deviation＝Σ（AggD(j)-1）２    （４）
として定義される。ここで、ＡｇｇＤ（ｊ）は、前の較正フェーズ中にセンサ・レシーバによって検出されたキーストロークｊの平均ピーク集合撓み（式（１）で定義される）である。較正ルーチンは、式（４）で定義されるDeviationの値が最小になるように係数Ｋ（ｉ）を調節することを試みる。
【００９７】
図１１を参照すると、Ｋ（ｉ）値は、まず、すべてのキーの平均ピーク集合撓みが１になるように正規化される（ステップ８０１）。すべてのキーの平均値は、各キーのピーク集合撓み（較正の第１ステージで判定される）を合計し、Ｍすなわち特定の手によって活動化されるキーの個数で割ることによって判定される。個々のＫ（ｉ）の値にこの数の逆数をかける場合、平均値が１になる。したがって、ステップ８０１では、
K(i)<==K(i)×M/ΣAggD(j)    （５）
が実行される。
【００９８】
Ｋ（ｉ）値の等化のために、各センサおよびキーストロークのピーク抵抗の値および公称抵抗の値が、前の較正フェーズで既知になり、固定される。したがって、式（１）は、さまざまな［Ｒ（ｉ）−Ｒ０（ｉ）］２項が定数であり、Ｋ（ｉ）が変数とみなされる線形方程式として表すことができる。Ｒ（ｉ）は各センサおよびユーザによって活動化された各キーについて異なるので、定数［Ｒ（ｉ）−Ｒ０（ｉ）］２は、ＲＳ（ｉ，ｊ）と表され、ここで、ｉは、センサを表し、ｊは、キーを表す。式（１）を
【００９９】
【数１】
0004628785.tif 000002
と書き直すことができ、式（４）を
【０１００】
【数２】
0004628785.tif 000003
と書き直すことができる。
【０１０１】
したがって、Deviationは、Ｎ個の変数（Ｋ（ｉ）のＮ個の異なる値）の関数である。ｉの任意の値が選択され（Ｉと示す）、Ｋ（Ｉ）以外のＫ（ｉ）のすべての値が一定に保たれる場合、式７によるDeviationは、Ｋ（Ｉ）の正の二次関数になり、この関数の最小値を突き止めるためにこれを微分することができる。たとえば、式（６）は、
【０１０２】
【数３】
0004628785.tif 000004
になる。ここで、合計は、定数である。式（７）は、
【０１０３】
【数４】
0004628785.tif 000005
になる。式を単純にするために、内側の合計項−１（ｊの値ごとに異なる定数）を、−Ｃ（ｊ）と表す。式（９）は、
【０１０４】
【数５】
0004628785.tif 000006
になる。Ｋ（Ｉ）に関するDeviationの導関数は、
【０１０５】
【数６】
0004628785.tif 000007
であり、Deviationは、
【０１０６】
【数７】
0004628785.tif 000008
のとき最小値に達する。
【０１０７】
図１１を参照すると、ステップ８０２で、Deviationを最小にするために、Ｋ（Ｉ）に式１２の値をセットする。Deviationの新しい結果の値を、Ｋ（Ｉ）の新しい値について計算する（ステップ８０３）。較正ルーチンは、終了条件が存在するかどうかを判定する（ステップ８０４）。終了条件は、（ａ）ステップ８０２から８０５のループの所定の回数の反復または（ｂ）Deviationがある事前定義された値未満であることのいずれかであることが好ましい。終了条件が満たされない場合には、ステップ８０４の「Ｎｏ」をたどる。この場合、値ｉが増分され、その結果、ループの次の反復で、新しい係数Ｋ（Ｉ＋１）を調整して、総Deviationを最小にする（ステップ８０５）。較正ルーチンは、ｉの新しい値に関してステップ８０２から８０４を実行する。終了条件が満たされる場合には、ステップ８０４の「Ｙｅｓ」分岐をたどる。Ｋ（ｉ）値の組を判定したので、較正ルーチンは、集合撓みの計算に使用するためにこれらの値をセンサ・レシーバに渡す（ステップ８０６）。
【０１０８】
較正ルーチンは、まず、Ｎｗを、速いタイピストに対応する可能な最も小さい設定にセットするようにセンサ・レシーバに指示する（ステップ７１３）。Ｎｗの値は、後の較正ステップで調整することができる。Ｎｗを小さくセットすることは、単一のキーだけが意図される場合の二重キーストローク検出という効果を有する可能性があるが、当初は、キーストロークの取りこぼしを防ぐために小さくセットされる。すなわち、較正ステージでは、キーストロークを無視するより、二重キーストロークを検出する（これを考慮に入れることができる）ほうがよい。
【０１０９】
較正ルーチンは、前に得られたセンサ・データから、RQ_Threshold、RS_Threshold、LQ_Threshold、およびLS_Thresholdの初期値も判定する（ステップ７１４）。これらの初期値は、必要なデータを無視しないように、どちらかといえば小さくセットされる。たとえば、RQ_Thresholdには、右手によって活動化されるキーのいずれかの最小の集合撓みの１０％（新しいＫ（ｉ）値を使用する）をセットすることができ、RS_Thresholdには、右手のシフト・キーのいずれかの最小の集合撓みの１０％をセットすることができ、以下同様である。
【０１１０】
較正ルーチンは、より難しいステージに進み、それぞれ短い単語または３、４文字を入力するようにユーザにプロンプトを出す。この実行の目的は、複数の文字が次々に入力される条件の下でトレーニング入力を入手することによって、ニューラル・ネットワーク・トレーニング・データをさらに洗練することである。しかし、シーケンスを短い単語に制限することによって、ユーザ入力エラーの確率が低く、次に進む前に各単語を分析することが可能である。したがって、較正ルーチンは、較正に使用される単語のリストからの短い単語をタイプするようにユーザにプロンプトを出す（ステップ７１５）。単語は、リストからランダムに選択される。したがって、ユーザは、プロンプトに応答して入力をタイプし、小休止し、システム・フィードバックを待つ。
【０１１１】
各短い単語を受け取った後に、較正ルーチンは、入力を処理する（ステップ７１６）。センサ・レシーバは、正確にユーザが実際のデータを入力しているかのように、ステップ７１２から７１４で決定されたＫ（ｉ）、初期閾値、およびＮｗパラメータ値を用いて、図５および６の手順を使用して入力を処理する。較正ルーチンは、ステップ７１１でトレーニングされたニューラル・ネットワークを使用して、プロンプト間隔にセンサ・レシーバから来たセンサ・データの各組（キー・活動化に対応する）をデコードする。
【０１１２】
ニューラル・ネットワークから出力されるデコードされたキー・データを、ユーザにプロンプトが出された単語の文字と比較する。４つの可能性がある、すなわち（ａ）デコードされたキー出力が、プロンプト単語と同一である、すなわちエラーが検出されなかった、（ｂ）プロンプト単語のすべての文字が、デコードされたキー単語に存在したが、文字の少なくとも１つが、二重の文字（または三重の文字）として現れた、（ｃ）プロンプト単語のすべての文字が、デコードされたキー単語に存在し、低い集合撓み値で１つまたは複数の関連しない単語があった、および（ｄ）ありそうなユーザ・エラーを含む、他のすべてのエラーがある。（ｂ）の場合、ユーザがデータを正しく入力したが、Ｎｗに、ユーザのタイピング速度に対して小さすぎる値がセットされている可能性がある。（ｃ）の場合、ユーザがデータを正しく入力したが、適用可能な閾値に、そのユーザについて低すぎる値がセットされている可能性がある。
【０１１３】
ありそうなユーザ・エラーを示す（ｄ）の場合、ステップ７１７の「Ｙｅｓ」をたどり、同一の単語を入力するように、ユーザにもう一度プロンプトを出す（ステップ７１８）。（ａ）、（ｂ）、または（ｃ）の場合には、ユーザが正しいデータを入力したと仮定して、ステップ７１８の「Ｎｏ」分岐をたどり、センサ・データを後の使用のために保存する（ステップ７１９）。プロンプトを出すべき単語が残っている場合には、ステップ７２０の「Ｙｅｓ」分岐をたどり、較正ルーチンは、プロンプトを出すもう１つの単語を選択する（ステップ７１５）。この実行のすべての単語が完了したとき、ステップ７２０の「Ｎｏ」分岐をたどる。
【０１１４】
較正ルーチンは、ここで、複数のパラメータを調整することができる。二重の文字を有する単語があった場合、Ｎｗを大きい方に調整する必要がある場合がある（ステップ７２１）。Ｎｗは、下記のように調整される。二重文字の各出現について、最大の集合撓みを有する文字を、真の文字とみなし、他の出現をエラーとみなす。各単語の各隣接する文字（誤りの二重文字を無視して）の間の差（サイクル数単位の）を計算する。Ｎｗを１つ増分し、Ｎｗのこの新しい値に関するエラーの数の合計をとる。この新しい値は、１つまたは複数の二重文字エラーを除去するのに十分に大きい場合がある、すなわち、Ｎｗの新しい値が、試行単語が入力されたときセンサ・レシーバによって使用された場合、レシーバが、二重文字の両方が同一ウィンドウ内にあるので、二重文字を検出しなかったはずである。しかし、エラーの数が増える場合もある。エラーの数を合計する際に、３Ｎｗ未満の隣接する文字の間のサイクル数の相違も、エラーと仮定する。これは、Ｎｗが大きくなる際に、隣接文字のウィンドウが互いに干渉し、その結果、仮想キー・ディテクタがＮｗの新しい大きい値を使用する場合に１つの文字だけが仮想キー・ディテクタによって検出されるようになる可能性があるからである。３Ｎｗでは、この確率はかなり低いが、Ｎｗの保守的な値が、現在の較正フェーズで探される。Ｎｗを所望の値に調整することは、すべての二重文字エラーがなくなるまで、または隣接文字干渉から生じるエラーの結果としてエラーの数が増え始めるまで（どちらかが最初に発生したとき）Ｎｗを繰り返して増分することになる。
【０１１５】
類似する形で、RQ_ThresholdおよびLQ_Thresholdを調整して、小さい集合撓み値で余分な関連しない文字を含むエラーを減らすことができる（ステップ７２２）。右手から始めると、右手から検出される低い集合撓み値でのすべての余分な文字がなくなるまで、またはRQ_Thresholdの値が、最小の集合撓み値を有する右手からの正しく入力された文字の集合撓み値の半分に達するまで（どちらかが最初に発生したとき）、RQ_Thresholdの値を繰り返して増分する。RS_Thresholdが、RQ_Thresholdの調整された値未満である場合には、RS_Thresholdを、RQ_Thresholdと等しくなるようにセットする（LS_Thresholdについても同様である）。
【０１１６】
エラーとして排除されなかったキーからのセンサ・データを、追加のトレーニング・データとして使用して、ニューラル・ネットワークを更新する。すなわち、バックプロパゲーション・アルゴリズムを用い、追加データを使用して、ネットワークをもう一度トレーニングする（ステップ７２３）。このデータは、文字の列として入力されたので、このデータが、較正の第１フェーズの単一文字の入力よりも高い度合まで実際の使用中のユーザ入力状態を近似する可能性が高い。
【０１１７】
較正ルーチンは、最後のさらに難しいステージに移り、文または段落などの１つまたは複数のテキストの一節をタイプするように、ユーザにプロンプトを出す。この実行の目的は、現実的な入力状態の下でトレーニング入力を入手することによってニューラル・ネットワーク・トレーニングをさらに洗練し、Ｎｗおよび閾値のよりよい測定値を得ることである。したがって、較正ルーチンは、１つまたは複数のテキストの節を表示し、ユーザが、その節をタイプできるようにする（ステップ７２４）。
【０１１８】
ユーザが非常に正確なタイピストでない限り、ユーザが、段落全体を入力する際になんらかの誤りを犯す可能性が高い。したがって、入力は、単にエラーが見つかったからといって拒絶はされない。較正ルーチンは、デコードされた文字ストリームをプロンプトを出されたテキストと突き合わせることを試みる（ステップ７２５）。文字が一致する範囲まで、これらの文字を作ったセンサ・データが、ニューラル・ネットワークのトレーニング用の追加トレーニング・データとして使用される。具体的に言うと、バックプロパゲーション・アルゴリズムをもう一度使用して、追加データを用いてニューラル・ネットワークをトレーニングする（ステップ７２６）。
【０１１９】
前の較正フェーズと同様に、すべての二重文字または低い集合撓み値を有する文字が、上で説明したようにＮｗパラメータおよび閾値をさらに洗練するのに使用される。しかし、これは、最後の較正フェーズなので、より攻撃的なパラメータ値を使用して、エラーを最小にすることが可能である。具体的に言うと、Ｎｗを調整するとき、２Ｎｗ（３Ｎｗではなく）未満の隣接文字の間のサイクル数の相違が、エラーと仮定され、これによって、Ｎｗがわずかに大きくなる可能性がある（ステップ７２７）。閾値を調整するときには、すべて小さい集合撓みの文字が除去されるまで、または閾値の値が、最小の集合撓み値を有する対応する手からの正しく入力された文字の集合撓み値に達するまで（どちらかが最初に発生したとき）、閾値を繰り返して増分する（ステップ７２８）。これによって、較正およびトレーニングが完了する。
【０１２０】
初期較正トレーニング・ルーチンを、上でニューラル・ネットワーク・キー・デコーダに関して説明したが、実際の使用中にユーザから追加トレーニング・データを継続的にまたは周期的に収集し、この追加データを使用してニューラル・ネットワークをトレーニングすることが、任意選択として可能である。たとえば、ユーザが訂正しないタイプされたテキストを、正確にデコードされたと仮定することができるが、訂正されたタイプされたテキストは、疑わしく、トレーニング・データとして使用してはならない。追加トレーニング・データを用いるバックプロパゲーションによるニューラル・ネットワークの周期的再トレーニングは、ネットワークの精度をさらに洗練するのに役立つ。
【０１２１】
上で説明したマルチステージ較正処理が使用される理由と、最終ステージのようにテキスト段落を入力するようにユーザに要求しない理由を質問される可能性がある。問題は、ユーザが誤りを犯す可能性があり、ユーザがタイプする速さを誰も知らないという事実にある。ユーザが、テキスト段落の既知のレートでエラーなしでタイプすることが保証されるならば、初期のステージは余分になる。したがって、第１ステージおよび第２ステージが、エラーなしで実行された（したがって、手へのキーの割り当てが正しく、ニューラル・ネットワークのトレーニング全体も正しい）と仮定することができる。したがって、より難しいタスク中の時折のユーザ・エラーは、さらなるトレーニング・データの基礎として使用されるのではなく、おそらくは検出され、拒絶される。
【０１２２】
較正パラメータおよびニューラル・ネットワーク・パラメータが、プロファイル３２３に保存され、システムが再初期化されるか同一のユーザがデータ入力のためにデータ手袋を身に着けるたびに再ロードされ、その結果、完全な再較正が不要になることが好ましい。データ手袋がユーザの手から外され、その後、手にはめられたとき、手袋のはまり方に起因して、センサ読み、特に静止状態のセンサ値の変動が生じる場合があると期待される。したがって、ユーザが手袋をはめるとき、必ず、１５秒間データ入力位置で手の力を抜くようにユーザにプロンプトを出し、その結果、システムが、静止センサ値を読み取れるようにすることが好ましい。残りの値は、一般に、使用のたびの再較正を必要としない。しかし、経時的に、これらのパラメータも変化する可能性がある。たとえば、経時的に、ユーザの障害が悪化し、その結果、ユーザの指の動きが変化する可能性がある。この場合、時折、上で説明した手順を使用する完全な再較正を実行する必要が生じる可能性がある。
【０１２３】
本明細書で、特定の較正手順を説明したが、仮想キーストロークの検出およびキーのデコードを左右するパラメータ値の数およびタイプ、ならびにこれらのパラメータを較正するか他の形で導出する形において、多数の変形形態が可能であることを理解されたい。較正手順のステージの数を、変更することができ、１つだけにすることができる。さらに、そのような値のすべてを較正する必要はなく、いくつかの値について、値を仮定するか、ユーザに入力を求めることが許容可能である可能性がある。たとえば、ユーザに、遅い、中程度、または速いタイピストのどれであるかを示すように求めることができ、その入力だけに基づいてＮｗの値をセットすることができる。
【０１２４】
追加の変形形態および実施形態
一般に、本発明の示された実施形態を実施するために実行されるルーチンは、オペレーティング・システムの一部あるいは特定のアプリケーション、プログラム、オブジェクト、モジュール、または命令のシーケンスのどれとして実施されるものであっても、本明細書では「コンピュータ・プログラム」と称する。コンピュータ・プログラムには、通常、コンピュータ・システムのデバイスまたはシステム内の１つまたは複数のプロセッサによって読み取られ、実行されたとき、これらのデバイスまたはシステムに、本発明の実施形態のステップを実行するかその要素を生成するのに必要なステップを実行させる。さらに、本発明を、完全に機能するコンピュータ・システムに関して説明するが、本発明のさまざまな実施形態は、さまざまな形のプログラム製品として配布することができ、本発明は、配布を実際に実行するのに使用される信号担持媒体の特定のタイプにかかわらずに適用されることが好ましい。信号担持媒体の例には、それだけに限定しないが、揮発性および不揮発性のメモリ・デバイス、フロッピ・ディスク、ハードディスク・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、磁気テープなどの記録可能型媒体と、ワイヤレス通信リンクを含むデジタル通信リンクおよびアナログ通信リンクなどの伝送型媒体が含まれる。信号担持媒体の例が、図２ではメモリ２０２、図３ではメモリ３０２またはストレージ・デバイス３１３として示されている。
【０１２５】
好ましい実施形態では、データ手袋が、ワイヤ・データ・ケーブルを使用して小さいポータブル・センサ・レシーバに物理的に結合され、このセンサ・レシーバが、汎用コンピュータと通信する。センサ・インタープリタの仮想キーストローク検出機能は、主にセンサ・レシーバ内のプログラマブル・プロセッサによって実行されるが、キー・デコード機能は、汎用コンピュータ内のニューラル・ネットワークをエミュレートするデータ手袋サポート・アプリケーションによって実行される。この例示的実施形態が、機能および電子パッケージを設計できる可能な形の１つに過ぎず、多数の代替形態が可能であることを理解されたい。たとえば、データ手袋または他のセンサ・デバイスは、ケーブルを介して結合される必要はなく、小さい電池などのオンボード電源および赤外線リンクまたは無線周波数リンクなどの伝送通信インターフェースを有することができる。さらに、データ手袋が、すべてのセンサ解釈機能を実行する汎用コンピュータと直接に通信することが可能である。さらに、通常のキーボードのように、センサ・レシーバ内のエレクトロニクスが、仮想キーストローク検出機能およびキー・デコード機能の両方を実行し、デコードされたキーだけをコンピュータに通信することが可能である。さらに、センサ・インタープリタは、仮想キーストローク検出機能とキー・デコード機能の間の明瞭な線引きがなくなるように設計することができる。多数の他の変形形態が可能である。
【０１２６】
本明細書に記載の好ましい実施形態では、センサが、ユーザの手にはまる手袋内に物理的に取り付けられる。しかし、必要な微細な手の動きを検出し、センサ・インタープリタへの入力を供給するのに十分な精度およびユーザにとっての快適さを有する代替感知装置を構築することもが可能であり、そのような感知装置は、必ずしも手にはまる手袋の形である必要はない。
【０１２７】
好ましい実施形態では、人工ニューラル・ネットワークを使用して、センサ・データを個々のキーストロークとしてデコードする。任意のセンサ読みのキーストロークとしてのデコードが、パターン・マッチングの全般的なカテゴリに含まれ、既知であれ今後開発されるものであれ、さまざまなパターン・マッチング・アルゴリズムのどれであっても、その代わりに使用できることを理解されたい。さらに、好ましい実施形態として本明細書に記載のニューラル・ネットワークは、この目的に使用できるニューラル・ネットワークの一例にすぎず、多数の変形形態が、キーストロークとしてのセンサ・データのデコードに適するニューラル・ネットワークの設計に存在することを理解されたい。
【０１２８】
好ましい実施形態では、ウィンドウの概念を使用する仮想キーストローク検出アルゴリズムが使用され、ウィンドウ内のピーク集合撓み値が、キーストロークと仮定される。仮想キーストローク検出の多数の変形形態が可能であることを理解されたい。本明細書で集合撓み値と称する量の多数の代替測定値がある。ピーク値は、必ずしも固定サイズのウィンドウに頼らない、積分または他の手段によって検出することができる。さらに、仮想キーストローク検出の機能を、キー・デコードと一体化することができる。たとえば、十分な処理能力が使用可能であると仮定すると、各スキャン・サイクルのセンサ入力をデコーダ（たとえばニューラル・ネットワーク）で評価することが可能であり、このデコーダは、キーが活動化されたかどうかと、活動化されたキーのタイプの両方を判定することができる。そのようなシステムは、本明細書で好ましい実施形態として説明されたものより高い潜在的な精度を有する可能性があるが、より高いプロセッサ・リソースを必要とする（この理由から、本明細書に記載の実施形態が好ましい）。
【０１２９】
上で説明したトレーニング可能ニューラル・ネットワークなどの個別に構成可能なセンサ・インタープリタの主要な長所の１つは、センサ・インタープリタが、手の異なる部分の動きの任意の組合せを異なるキーストロークとして解釈できることである。具体的に言うと、指が、キーまたはキーに似た他の物体あるいはあらゆる物体に触れる必要がない。さらに、右手または左手のニューラル・ネットワークへのキーの割り当てを上で開示し、そのような割り当ては、通常のＱＷＥＲＴＹキーボードを近似するものであったが、ユーザは、キーの任意の組を左手に割り当て、キーの任意の組を右手に割り当てることができる。さらに、手の動きが、いかなる形でもキーに触れることに似通う必要はない。訓練されたタッチ・タイピストが、ユーザの障害によって許容される動きに制限はされるが、キーボードのキーに対応して指を動かすことを望む可能性があると期待されるが、このキーへの指の関連付けは、必要ではない。ユーザは、異なるキーストロークに対応する独自の任意の指の動きを発明することを望むことができ、これらの任意の動きは、本明細書では「仮想キーストローク」と称するが、キーストロークに似通う必要はない。拳や「Ｖ」サインを作ることが、キーストロークとして解釈できる動きの例である。
【０１３０】
上の説明では、シミュレートされたキーボード・データ入力デバイスが、手の機能が制限された個人によって使用されるデバイスとして説明された。そのような個人が、本明細書に記載のデータ入力デバイスから最大の利益を引き出すと予想されるが、その使用は、かならずしも手の機能が制限された個人に制限されない。本発明は、個人的な能力およびプリファレンスに合わせたカスタマイズをたやすくサポートするので、手の障害を有しない個人が、より効率的に（すなわち、より速く、より正確に、より少ない疲労で、または他の形あるいはこれらの要因の組合せで）データを入力できることに気付くことがありえる。
【０１３１】
本発明の可能な応用例の追加の例として、センサ・インタープリタをトレーニングして、手話の手の動きをテキスト文字またはテキスト文字の組合せとして認識することができる。そのような応用例は、手話の教育に有用である可能性があり、これによって、生徒（ユーザ）が、コンピュータから即座にフィードバックを受け取る。
【図面の簡単な説明】
【０１３２】
【図１】好ましい実施形態による、ユーザの右手のためのシミュレートされたキーボード・データ入力デバイスのデータ入力手袋（左手用の手袋はこれに類似することが好ましい）を示す平面図である。
【図２】本発明の好ましい実施形態による、データ入力手袋のセンサ・レシーバの主要な内部構成要素を示す図である。
【図３】本発明の好ましい実施形態による、データ手袋入力デバイスを使用して入力を提供することができる通常のコンピュータ・システムを示す図である。
【図４】本発明の好ましい実施形態による、センサの複数のスキャン・サイクルにまたがる集合手撓みのシミュレートされた測定値を示す図である。
【図５】本発明の好ましい実施形態による、仮想キーストローク検出プログラムのより重要なステップを示す単純化された流れ図の一部である。
【図６】本発明の好ましい実施形態による、仮想キーストローク検出プログラムのより重要なステップを示す単純化された流れ図の一部である。
【図７】本発明の好ましい実施形態による、キーストロークとしてセンサ値を解釈するニューラル・ネットワーク機能を示す概念図である。
【図８】本発明の好ましい実施形態による、センサ・インタープリタの較正およびトレーニングに使用されるステップを示す高水準流れ図の一部である。
【図９】本発明の好ましい実施形態による、センサ・インタープリタの較正およびトレーニングに使用されるステップを示す高水準流れ図の一部である。
【図１０】本発明の好ましい実施形態による、センサ・インタープリタの較正およびトレーニングに使用されるステップを示す高水準流れ図の一部である。
【図１１】本発明の好ましい実施形態による、センサ係数を設定する際に使用されるステップを詳細に示す流れ図である。
【図１】
0004628785.tif 000009
【図２】
0004628785.tif 000010
【図３】
0004628785.tif 000011
【図４】
0004628785.tif 000012
【図５】
0004628785.tif 000013
【図６】
0004628785.tif 000014
【図７】
0004628785.tif 000015
【図８】
0004628785.tif 000016
【図９】
0004628785.tif 000017
【図１０】
0004628785.tif 000018
【図１１】
0004628785.tif 000019