(57)【特許請求の範囲】
【請求項１】
ホストコンピュータからの要求に応答してスケジュールされた力効果を生成する力フィードバック装置に於いて、
（ａ）力フィードバック装置のユーザが握るようにしてなる構成材と、
（ｂ）前記構成材に結合された動力源であって、前記構成材に作用する力を発生する前記動力源と、
（ｃ）前記動力源に結合されたプロセッサであって、力効果をレンダリングして、前記動力源に結合される駆動信号を発生し、前記動力源にその力効果に対応する力を生成せしめるプロセッサと、
（ｄ）前記プロセッサによって実行されるスケジューラであって、ホストコンピュータによって要求される時間間隔中に力効果が生成されるように力効果をスケジュールするスケジューラと、
（ｅ）ホストコンピュータと前記プロセッサとを結合する通信リンクであって、
力効果をレンダリングするためにホストコンピュータから前記プロセッサに前記要求を搬送して力効果をスケジュールするための通信リンクと、
（ｆ）前記ホストコンピュータから初期的に受け取った力効果のプロファイルおよび前記プロファイルに割り当てられている固有の識別子を記憶するメモリであって、ここで、前記スケジューラは複数の前記力効果をスケジュールするときに使用するために、前記ホストコンピュータによって要求される各力効果についての固有の識別子を受け取り、前記プロセッサは前記ホストコンピュータから複数の力効果のプロファイルを受け取り、前記複数の力効果のプロファイルは前記スケジューラによって単一の力効果に組み合わされ、該単一の力効果に対しては１つの識別子が割り当てられているメモリと
有し、各力効果が複数の異なるクラスの１つに属し、前記複数の異なるクラスが、力効果が前記構成材の動きに応じて発生する挙動効果である挙動クラスと、前記構成材の動きの速度が増加するにつれて力効果が増加するウエーブテーブルクラスと、力効果が時間可変性の関数として表される合成クラスと、前記ホストコンピュータにより力効果のパラメータを変更可能な可変パラメータクラスと、前記挙動クラス、前記ウェーブテーブルクラス、前記合成クラスおよび可変パラメータクラスの力効果の組み合わせを規定する処理リストクラスとを含んでおり、
スケジューラが固有の前記識別子と、ホストコンピュータから記憶されたプロファイルのパラメータの変更とを受信し、前記プロセッサが力効果をレンダリングするときにそのパラメータの変更を使用することを特徴とする力フィードバック装置。
【請求項２】
請求項１に記載の力フィードバック装置に於いて、要求中のホストコンピュータから受け取ったコマンドに応答して、力効果についての実行順序を前記スケジューラが確立することを特徴とする力フィードバック装置。
【請求項３】
請求項１に記載の力フィードバック装置に於いて、ホストコンピュータから受け取ったコマンドに応答して、生成した各力効果についての開始時間と停止時間とを前記スケジューラが確立することを特徴とする力フィードバック装置。
【請求項４】
請求項１に記載の力フィードバック装置に於いて、更に各時間間隔について持続時間を決定するために使用されるサーボクロックを有し、前記スケジューラが前記サーボクロックに応答して力効果の持続時間を制御することを特徴とする力フィードバック装置。
【請求項５】
請求項１に記載の力フィードバック装置に於いて、複数の力効果を同時に実行することによって、複数の力効果を重ね合わせることを特徴とする力フィードバック装置。
【請求項６】
請求項１に記載の力フィードバック装置に於いて、スケジューラによって結合されて単一の力効果となる複数の力効果プロファイルをプロセッサが受け取り、前記単一の力効果が固有の識別子を指定されていることを特徴とする力フィードバック装置。
【請求項７】
請求項１に記載の力フィードバック装置に於いて、ゲームポートと楽器デジタルインタフェースポートとを通信リンクが有することを特徴とする力フィードバック装置。
【請求項８】
請求項１に記載の力フィードバック装置に於いて、通信リンクが汎用シリアルバスポートを有することを特徴とする力フィードバック装置。
【請求項９】
請求項１に記載の力フィードバック装置に於いて、通信リンクがゲームポートとシリアルポートとを有することを特徴とする力フィードバック装置。
【請求項１０】
請求項１に記載の力フィードバック装置に於いて、前記構成材に結合された複数の動力源を有し、少なくとも前記複数の動力源の１つが前記構成材に作用して各力効果を生成することを特徴とする力フィードバック装置。
【請求項１１】
請求項１０に記載の力フィードバック装置に於いて、更に検知器を有し、前記構成材をユーザが握っているか否かを示す信号を前記検知器が発生し、前記プロセッサが検知器に結合されており、且つユーザがその構成材を握っていないときには前記動力源が力効果を生成しないようにすることによって前記プロセッサが信号に応答することを特徴とする力フィードバック装置。
【請求項１２】
請求項１に記載の力フィードバック装置に於いて、スケジューラに依って制御される複数のスケジュールされた力効果の中で、同時に実行される複数の力効果を重ね合わせられた力効果が含むことを特徴とする力フィードバック装置。
【請求項１３】
請求項１に記載の力フィードバック装置に於いて、シーケンシャル力効果が、スケジューラによって制御されるスケジュールされた複数の効果の中でシーケンシャルに実行される複数の力効果を備えることを特徴とする力フィードバック装置。
【請求項１４】
請求項１に記載の力フィードバック装置に於いて、スケジューラによって制御されたスケジュール済みの複数の力効果の中で、シーケンシャルに実行され且つ所定の包絡線を持つ複数の力効果を備え、シーケンシャルに実行される前記複数の力効果の振幅を制御することを特徴とする力フィードバック装置。
【請求項１５】
ホストコンピュータからの要求に応答してスケジュールされた力効果を生成する力フィードバック装置に於いて、
（ａ）力フィードバック装置のユーザが握るようにしてなる構成材と、
（ｂ）前記構成材に結合された動力源であって、前記構成材に作用する力を発生する前記動力源と、
（ｃ）前記動力源に結合されたプロセッサであって、力効果をレンダリングして、前記動力源に結合される駆動信号を発生し、前記動力源にその力効果に対応する力を生成せしめるプロセッサと、
（ｄ）前記プロセッサによって実行されるスケジューラであって、ホストコンピュータによって要求される時間間隔中に力効果が生成されるように力効果をスケジュールするスケジューラと、
（ｅ）ホストコンピュータと前記プロセッサとを結合する通信リンクであって、
力効果をレンダリングするためにホストコンピュータから前記プロセッサに前記要求を搬送して力効果をスケジュールするための通信リンクと、
（ｆ）前記ホストコンピュータから初期的に受け取った力効果のプロファイルおよび前記プロファイルに割り当てられている固有の識別子を記憶するメモリであって、ここで、前記スケジューラは複数の前記力効果をスケジュールするときに使用するために、前記ホストコンピュータによって要求される各力効果についての固有の識別子を受け取り、前記プロセッサは前記ホストコンピュータから複数の力効果のプロファイルを受け取り、前記複数の力効果のプロファイルは前記スケジューラによって単一の力効果に組み合わされ、該単一の力効果に対しては１つの識別子が割り当てられているメモリと
有し、プロセッサに結合されたスイッチを更に有し、前記スケジューラが力効果をスイッチにマッピングすることにより、スイッチが作動したときに前記力効果がプロセッサによってレンダリングされ、
スイッチにマッピングされる前記力効果を示すホストコンピュータからの要求をプロセッサが受け取り、
スイッチが作動したときに、スイッチにマッピングされた力効果を直ちにスケジューラがレンダリングし、且つ発生せしめ、またスイッチが最早作動しない時に、直ちにスケジューラが前記力効果の発生を停止することを特徴とする力フィードバック装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはある種の装置のユーザにフィードバック力を与えるための装置と方法、更に詳しくは、通信リンクを介してホストコンピュータにより局所プロセッサに指示されている装置中の局所プロセッサによって発生する触覚効果をレンダリング（rendering）するための装置と方法に関する。
【０００２】
【従来の技術】
力フィードバックは、ユーザの入力に応答する力を発生することによって、ジョイスティックのような制御装置のユーザに対するタッチの感覚（以下触感効果という）をシミュレートすることが出来、あるいはまたバーチャルワールド環境中での状態をシミュレートするフィードバック力を生成することが出来る。典型的には、力フィードバック装置は、少なくとも機械的にユーザに力を伝達する装置の能力よりも速いサーボループ速度を持つサーボモーターを使用する。例えば、最高サーボループ速度が５０Ｈｚの比較的動きの堅い機構を持つ力フィードバック装置のユーザには、現実的な触感効果を知覚するようになるには５００Ｈｚ以上のサーボループ速度を必要とする。
【０００３】
歴史的には、サーボモーターがユーザに希望する触感効果を伝達し、または希望する触感効果を与えることが出来るようにサーボモーター用の計算値をレンダリングするために、ホストコンピュータが使用されている。先行技術では、このような効果を与える時には、その効果はユーザに伝達するための力フィードバック装置にホストコンピュータによってダウンロードされる。多くのホストコンピュータは計算値をリアルタイムでレンダリングすることが可能であるが、計算集約的なホストコンピュータによって実行される同時アプリケーションでは、ユーザに対する触感効果の計算とそれに続く伝送とに待ち時間を生じることがある。待ち時間が生じた場合は常に、触感効果は同時のアプリケーションと最早同期せず、ユーザはリアルタイムでその効果を経験するようにはならない。従って触感により意図されリアルの感覚は、このような問題により悪影響を受け、またスプリング等の閉ループ効果が不安定となる可能性がある。
【０００４】
ユーザに力フィードバック効果をレンダリングするための先行技術に於いて一般に使用される技術には、２種類の技術がある。第１の技術はアプリケーションに使用される効果を記憶することの出来る記憶装置を有する力フィードバック装置を使用するものである。その効果は触感フィードバック装置へコマンドを送るアプリケーションによって、または触感フィードバック装置の制御装置を起動するユーザに応答して、能動化される。ホストコンピュータは、記憶された効果に対するパラメータを提供し、触感フィードバック装置は供給されたパラメータに基づいて力出力を生成するに過ぎない。
【０００５】
第２の技術では、ホストコンピュータと力フィードバック装置とは、共通の「ワールドビュー」、即ち共通のシミュレーションを共有する。ホストコンピュータは、バーチャルワールド中のグラフィックと音とをレンダリングし、バーチャルワールド中の対象とそれらの形状との特徴とを力フィードバック装置に指示する。力フィードバック装置はバーチャルワールドの形状をレンダリングして、動く被対象物の処置をホストコンピュータに報告する。重要なことは、両方の手法共に、リアルタイムの触感効果をレンダリングする場合に固有の問題点を持っていることである。第１の手法では、各触感効果の時間間隔を変化させ、またその効果をユーザへの伝達をスケジュールするために、力フィードバック装置と連続して対話を行なうことがホストコンピュータに要求される。第２の手法では、バーチャルワールド中に配置された対象物の形状と位置を計算するために力フィードバック装置に多量の処理力を集中させることが要求される。
【０００６】
【発明が解決しようとする課題】
明らかに、力フィードバック効果をレンダリングするための手法としては、上記の先行技術の問題点を避けることが要求される。力フィードバック装置によって複数の指示された触感効果を発生するようにスケジューリングして、これらの効果を力フィードバック装置とホストコンピュータとの間に広範囲な通信を必要とすることなく実行できるようにすることが好ましい、アプリケーションで使用される効果は、力フィードバック装置中に記憶されるのでなければ、ホストコンピュータから力フィードバック装置中のプロセッサにダウンロード可能でなければならない。ホストコンピュータは、或る効果に割当てられた識別コードに基づいてその効果が発生されることを或るアプリケーションが要求したときに、その効果をプロセッサに適用すべきであることを指示することが出来なければならない。力フィードバック装置中のスケジューラは、それらの効果がホストコンピュータと力フィードバック装置との間にそれ以上の相互作用を要求されることなく、プロセッサによってレンダリングされる順序を管理しなければならない。非常に複雑な効果を与えることが出来るようにシーケンシャル効果、連結効果、または重ね合わせ効果をスケジュールすることが可能でなければならない。現在公知の先行技術の触感制御システムでは、このような効果のリアルタイムなレンダリングを達成するための手法は行なわれていない。
【０００７】
【課題を解決するための手段】
本発明に従えば、力フィードバック装置は、ホストコンピュータからのリクエストに応答してスケジュールされた力効果を発生するものと定義される。力フィードバック装置は、その力フィードバック装置のユーザが握るように構成された部材を含んでいる。動力源がその構成材と結合されており、その構成材に作用する力を発生する。動力源にはプロセッサが接続されており、力効果をレンダリングして駆動信号を発生し、駆動信号は動力源に接続される。駆動信号によって動力源は力効果に対応する力を発生する。プロセッサによってスケジューラが実行されて力効果をスケジューリングして、ホストコンピュータによって要求された時間間隔中に力効果を発生する。通信リンクはホストコンピュータをプロセッサに連結し、また力効果をスケジュールするために力効果をレンダリングする要求をホストコンピュータからプロセッサへ搬送する。
【０００８】
スケジューラは、ホストコンピュータから受け取ったコマンドに応答して力効果についての実行順序を確立する。好ましくは、スケジューラはホストコンピュータから受け取ったコマンドに応答して発生した各力効果について開始時間と停止時間とを確立する。
【０００９】
各時間間隔の長さを決定するために、サーボクロックを使用する。スケジューラはサーボクロックに応答して力効果の存続期間を制御する。複数の力効果を同時に実行することができ、それらの複数の力効果を重ね合わせることができる。一般に１つの力効果が他の複数の力効果を含む様にすることもできる。
【００１０】
ホストコンピュータから最初に受け取った力効果のプロファイルと、そのプロファイルに割当てられた識別子とを記憶するために記憶装置が設けられている。スケジューラは、力効果をスケジュールするときにホストコンピュータから要求される各力効果の固有の識別子を使用する。例えば、力効果を修正するために、ホストコンピュータはその固有の識別子とそれ以前にプロセッサに記憶されていたプロファイルのパラメータの修正変更を伝送して、プロセッサは力効果をレンダリングするときにそのパラメータの修正変更を利用する。
【００１１】
プロセッサは、スケジューラによって結合されて単一の力効果を構成するホストコンピュータからの複数の力効果のプロファイルを受け取ることができる。この単一の力効果は次いで固有の識別子を割当てられる。
【００１２】
本装置には予め定義した力効果プロファイルのテーブルを記憶する記憶装置が含まれている。各プロファイルにはそれぞれ固有識別子が含まれており、スケジューリングされた発揮すべき力効果に含まれている各定義済みの力効果を識別するときにスケジューラによって使用される。
【００１３】
各力効果は複数の異なるクラスの１つに属している。この複数の異なるクラスには、挙動クラス、ウエーブテーブルクラス、合成クラス、可変パラメータクラスおよび処理リストクラスとが含まれる。
【００１４】
またこの力フィードバック装置には、プロセッサに結合されたスイッチが含まれている。スケジューラは、スイッチが作動したときに力効果がプロセッサによってレンダリングされるように力効果をスイッチにマッピングする。プロセッサは、スイッチにマッピングされるべき力効果を示すリクエストをホストコンピュータから受け取る。スケジューラは、スイッチが入ったときに、スイッチにマッピングされた力効果を直ちにをレンダリングして発生し、またスイッチがそれ以上作動しないときには、力効果の発生を停止することができる。
【００１５】
好ましくは、通信リンクはゲームポートと楽器デジタルインタフェースポートとを有している。別法としては、通信リンクは汎用直列バスポートを有している。
【００１６】
力フィードバック装置の好ましい形態では、複数の動力源がグリップ要素に結合されている。複数の動力源の少なくとも１つがグリップ要素に作用して各力効果を生成する。
【００１７】
またユーザがグリップ要素を握っているか否かを示す信号を生成するための検知器が設けられている。検知器にはまたプロセッサが結合され、またユーザがグリップ要素を握っていないときには、検知器に応答して動力源により力効果が生成しないようになっている。
【００１８】
複数の同時に実行される力効果から成る重ね合わせ力効果が、スケジューラによって制御される複数のスケジューリングされた力効果の中に含まれる。更に、シーケンシャルに実行される複数の力効果より成るシーケンシャル力効果と、シーケンシャルに実行され且つ所定の包絡線を持つ複数の連結された力効果とを含むシーケンシャル力効果が、スケジューラによって制御される複数のスケジューリングされた力効果中に含まれている。シーケンシャル制御される複数の力効果の振幅は包絡線によって制御される。
【００１９】
本発明のその他の側面は力効果を発生する装置を制御する方法を対象としている。この方法には、この方法には、以上に説明した力フィードバック装置の要素により実行される機能と一般に一致した工程を含んでいる。本発明の上述の側面およびこれに伴う利点の多くは、添付の図面との関係に於いて以下の詳細な説明を参照することにより理解の深まるにつれて、いっそう容易に評価されるようになるであろう。
【００２０】
【発明の実施の形態】
触感ジョイスティックと力フィードバックシステムの概観
図１について説明する。図１には力フィードバック（触感）ジョイスティック１１が示されているが、本発明の好ましい実施の形態の典型的な適用として、バーチャル環境中、即ちここで説明するゲームで、ユーザのタッチの感覚をシミュレートするために使用される。ジョイスティック１１は、ユーザが手で握り、２次元（Ｘ軸およびＹ軸）で旋回することができ、またＺ軸の回りを回転することができる制御ハンドル１３を備えている。触感ジョイスティックは、トリガスイッチ１５、複数の押しボタンスイッチ１９、ハットスイッチ２１および回転可能な制御ノブ２３（典型的にはスロットル制御用に使用される）を有している。触感ジョイスティックに取付けられたその他のスイッチはこの図には示されていない、ユーザが開始した制御動作に関係した手触りの感覚および／またはフィードバックを達成するために、ジョイスティックの基盤１７内に配置されている直流サーボモーターによって力が発生される。力（Ｘ軸とＹ軸のいずれかまたは両方に関係する）は制御ハンドルを介して伝達されて、ユーザはそれを感じ取る。
【００２１】
図２には、ジョイスティック１１を含む力フィードバックシステム３１の概要が示されている。ホストコンピュータ３３がプロセッサ３５に接続されている。プロセッサ３５は、好ましい実施の形態に於ける場合のようにマイクロコントロール装置（ＭＣＵ）を有してもよく、またはＭＣＵ用に使用される単一の集積回路中に含まれている記憶装置、アナログ・デジタル変換器（ＡＤＣ）等の付加的な離散的構成材を有するマイクロプロセッサまたは中央演算処理装置を有することもできる。ホストコンピュータからのコマンドおよびプロセッサからの応答は、通信リンク４１を経て伝送される。ホストコンピュータ３３は、力効果についてのパラメータを送信し、この通信リンクを通ってプロセッサ３５によって. レンダリングされるべき効果を指示する。力効果をレンダリングするプロセッサから生じる駆動信号はプロセッサ３５によって、ユーザに伝達するための触感力を発生するアクチュエータ３９に供給される。位置検知器３７がプロセッサ３５に接続されており、ジョイスティック制御ハンドルの位置を示す出力信号がプロセッサに供給されるか、またはホストコンピュータに送信される。
【００２２】
ホストコンピュータ３３で実行するアプリケーションが力効果を使用するときには常に、ホストコンピュータは典型的には、アプリケーションによってサポートされる力効果用の力のプロファイル（データ構造とパラメータ）をプロセッサ３５へダウンロードする。典型的には、ダウンロード操作は、アプリケーションを起動したときに完成される。力効果のプロファイルが触感ジョイスティックにダウンロードされると、プロセッサは識別番号を各力効果に結び付ける。１つの識別番号は、以下に詳細に説明するように、数個の力効果の組み合わせを表わすことも出来る。識別番号はプロセッサ３５によってホストコンピュータ３３に提供される。レンダリングをユーザが経験できるように力効果をレンダリングすることをアプリケーションが要求すると、ホストコンピュータ３３は識別番号と、その識別番号によって識別された力効果のレンダリングに必要なパラメータの修正とをプロセッサ３５に指示する。この方法では、ホストコンピュータ３３とプロセッサ３５との間の通信リンク４１について要求される帯域幅は最小化され、また触感力効果を扱うためのホストコンピュータへの計算負荷も最小となる。好ましい実施の形態ではプロセッサ３５は各力効果についての識別番号を発生し、それをその力効果についての特定のプロファイルデータと共にホストコンピュータ３３に通信するが、別法として識別番号をホストコンピュータによって予め指定して、プロセッサに通信させるようにすることも出来る。第３の別法は、力効果のすべてに指定された同一の識別番号をホストコンピュータ３３とプロセッサ３５とがそれぞれ独立に判別するように、ホストコンピュータ３３とプロセッサ３５の両方によって実行される共有アルゴリズムを使用することである。いずれの場合にも、識別子を常に適用するように、各力効果はプロセッサ２４とホストコンピュータ３３との間で通信される時に、その力効果に関して常に使用される識別番号を割当て、その識別番号を一定して適用することが不可欠である。
【００２３】
触感ジョイスティック回路の詳細
触感ジョイスティックを制御する場合に使用する回路１００を図３に示す。この図について説明すると、電源１２がＭＣＵ１０（図２のプロセッサ３５に対応する）のＰＷＲ出力に接続されている。ユーザがＭＣＵ１０とその他のジョイスティック内部の関連電気部品を作動させることが出来るように、電源スイッチ１４がＭＣＵ１０の入力ポートＩＮ２に接続されている。更に、電源用ＬＥＤ１６がＭＣＵ１０の入力ポートに接続されて、電源スイッチ１４が入っている時に点灯する。ユーザがジョイスティックのハンドルを握っているときを検出するために、送信器（即ち光源）１８と受信器（即ち光検知器）２０とを有する光学的スイッチが設けられている。ＭＣＵ１０の出力ポートＯＵＴ４が送信器１８に接続されており、またＭＣＵ１０の入力ポートＩＮ１が受信器２０に接続されている。ＭＣＵ１０内に含まれている読み出し専用記憶素子（ＲＯＭは図示されていない）内に記憶されたプログラムは、発信器と受信器との間の光路を遮断するユーザの手によって生じる受信器からの出力信号の変化に応答して、ユーザがジョイスティックのハンドルを握っているか否かを判別する。
【００２４】
Ｙ軸の直流サーボモーター２２とＸ軸の直流サーボモーター２４とは、ＭＣＵ１０の出力ポート１と出力ポート２とに、それぞれ接続されている。回路１００の構成部品を冷却して過熱を防止するために、ファンモーター２６がＭＣＵ１０の出力ポートＯＵＴ３に接続されている。ホストコンピュータ３２はＭＣＵ１０に接続されている。コード（図示されていない）が触感ジョイスティック１１からゲームポートよびホストコンピュータの通信ポートＣＯＭ１に延びている。また、より新しいコンピュータのＵＳＢポートを、ゲームポートとＣＯＭ１ポートの代わりに、ホストコンピュータとＭＣＵの間の通信路用に使用することも出来る。
【００２５】
ゲームポートはジョイスティック制御ハンドルの方位と回転位置、およびその他の状態を示すデジタル信号を、ホストコンピュータ３２で操作するアプリケーションに伝送するためにＭＣＵ１０により使用される。ゲームポートのボタン列がデジタルプロトコル中のデータ値とクロック値とを伝送するために使用される。通信ポートＣＯＭ１は２方向性で、コマンド応答を触感ジョイスティックからホストコンピュータに送るため、およびホストコンピュータからジョイスティックにコマンドを伝送するために使用される。例えば、力効果コマンドがホストコンピュータによって、通信ポートＣＯＭ１を介してＭＣＵ１０に供給される。好ましい実施の形態では、通信ポートＣＯＭ１は最初にホストコンピュータ３２と通信するために、楽器デジタルインタフェース（ＭＩＤＩ）を使用する。
【００２６】
更に、ＭＣＵ１０はホストコンピュータに連結されて、ゲームポート上の特別な「ドングル（dongle）」信号状態を検知することが出来る。この特別な状態では、ホストコンピュータにデータを伝送するために、ＭＩＤＩプロトコルの代わりに直列インタフェースプロトコルを通信ポートＣＯＭＩを使用すべきであることがＭＣＵ１０に指示される。この特別の状態が検出されると、ＭＣＵ１０は自動的にＣＯＭ１ポートの機能性を、ＲＳー２３２等の標準の直列インタフェースプロトコルの機能性に切り換える。ゲームポートとの通信中に、直列インタフェースプロトコルはデータを、通信ポートＣＯＭ１を通って毎秒約３８．４キロビットの速度で２方向に伝送する。このようにして、ユーザはオペレーティングシステムまたは音響カードで触感ジョイスティックを楽しむことが出来るが、本発明の適正な操作に必要な方法ではＭＩＤＩプロトコルを支援しないようにすることも出来る。
【００２７】
力効果は、典型的にはＭＣＵ１０によって実行される機械語命令（ソフトウエアプログラム）に従ってスケジューリングされ、レンダリングされる。このプログラムはＭＣＵ内のＲＯＭに記憶される。効果データその他の変数は、同様にＭＣＵ内に含まれているランダムアクセス記憶装置（ＲＡＭ）にロードされる。力効果は、その力効果のパラメータを定義する方程式またはその他のデータをＹ軸直流モーター２２および／またはＸ軸直流モーター２４に適用する駆動信号を発生するために用いられ、モーターはそれに対応する力を発生し、その力は触感ジョイスティックの制御ハンドルに加えられる。その結果、レンダリングされた効果がジョイスティックのユーザにより制御ハンドルを介してユーザの手に働く力として体験される。
【００２８】
Ｘ軸位置ＬＥＤ３４およびＹ軸位置ＬＥＤ３６とがそれぞれＭＣＵ１０の出力ポートＯＵＴ５と出力ポートＯＵＴ６に結合されている。更に、スロットルＬＥＤ４０がＭＣＵ１０の出力ポートＯＵＴ７に結合されている。Ｘ軸位置ＬＥＤ、Ｙ軸位置ＬＥＤおよびスロットルＬＥＤによって放射される光は、時間多重化され、四分位置検出器４０の表面に投射される。この位置検出器は４つの４分円内のこれらの各ＬＥＤから受けとった光に応答し、多重化され、またＭＣＵ１０のＩＮ４入力ポートに加えられる検知器位置信号を発生する。ＭＣＵ１０によって実行されるプログラムは、多重化位置信号を使用してジョイスティックハンドルとスロットルの正確な位置を決定する。ここで重要なのは、プログラムが２つのＬＥＤのみを使用してジョイスティックのＸ軸、Ｙ軸および回転位置を決定することである。
【００２９】
先行技術のジョイスティックは典型的には、ユーザまたは力効果が制御ハンドルを変位させていない時に制御ハンドルを中心に位置させるためにスプリングまたは弾性のバンドを使用している。触感ジョイスティック１１は、スプリングを使用する代わりに、Ｘ軸とＹ軸の直流サーボモーターを使用してセンタリング力を制御ハンドルに加える。四分位置検出器４０が制御ハンドルの位置と制御ハンドルの中心位置に対する相対的変位とを検知する。次いでＭＣＵ１０が制御ハンドルをセンタリングするために駆動信号を２つの直流サーボモーターに供給する。ここで明らかなことであるが、力効果が適用されているときに、直流サーボモーターによって適用される力は制御ハンドルを中心位置から変位させることが出来る。しかし更に典型的には、ユーザが制御ハンドルを握っている間に、ユーザによって制御ハンドルが中心位置から変位すると、ＭＣＵが直流サーボモーターにコマンドを送り、変位が生じた軸の１つまたは両軸にハンドルに作用する力を与え、この力は制御ハンドルを中心位置に戻すように作用する。ユーザにとっては、中心位置から離れるように制御ハンドルを動かすことは、典型的には制御ハンドルが再び中心位置に来るまでその運動に逆らうように加えられる力を生じることになる。復元力は力効果のレンダリングの結果であることがあり、従って従来のスプリング力、正または負の非線形力またはそれよりも複雑な力として現われることがある得る。その他の力がアプリケーションによって加えられていない時には、デフォルトは、直流サーボモーター２２と２４とによって加えられる力の代わりに、スプリングによってジョイスティックが中心に位置づけされているとした場合にユーザが期待するような効果に対応するセンタリングスプリング力効果である。センタリングスプリング力効果は。全ての制御ハンドル位置での最大力の動的範囲について無効化されることが出来る。
【００３０】
好ましい実施の形態に於いて、ＰＢ１スイッチ２８からＰＢ１３スイッチ３０までの１３のスイッチ／押しボタンがそれぞれＭＣＵ１０のＩＮ５からＩＮ１７までの入力ポートに接続されている。これらのスイッチは以下のように構成される。即ち、（ａ）１つのトリガースイッチがジョイスティックのハンドルに、即ち図１のトリガー１５に配置され、（ｂ）３つのスイッチがジョイスティックの制御ハンドルに取付けられて、（ｃ）５つの押しボタン１９がジョイスティックの基盤上に配置され、その内の１つがシフトキーの機能を持ち、また（ｄ）ハットスイッチを含む４つのスイッチがあり、そのハットスイッチはジョイスティックの制御ハンドルに配置されている。好ましい実施の形態に於いて、ＭＣＵ１０は２５ＭＨｚ、１６ビットのマイクロコントローラであって、４８キロバイトのＲＯＭ、２キロバイトのＲＡＭ、８つのアナログーデジタル（ＡーＤ）変換器入力ポートおよび複数の入力および出力ポートを有している。ＡーＤ変換器ポートは制御ハンドルの位置を決定し、電源によって供給される電力を検知し、デッドマン型のスイッチを備え、また制御ハンドルの位置をセンタリングし、また較正するために使用される。また出力ポートＯＵＴ１およびＯＵＴ２に生じる信号は、ＭＣＵ１０がＸ軸直流サーボモーター２２とＹ軸直流サーボモーター２４とによって発生する力を非常に正確に制御出来るようにパルス幅変調（ＰＷＭ）されている。
【００３１】
力効果をレンダリングするときに使用される論理
本発明の１つの重要な側面は、制御ハンドルを介してユーザに伝達される力効果のレンダリングを制御するために使用される技術である。本発明では力効果のレンダリングを制御するためにＭＣＵ１０によりソフトウエアで実行されるスケジューラを使用する。ユーザに伝達される力効果の順序付けとタイミングをとるためにスケジューラによって使用される論理段階を図４に示す。スタートブロックから始まって、論理はブロック１０２に進み、そこでサーボクロックの現在値が取り出される。殆どの処理装置と同様に、ＭＣＵ１０は全てのタイミング機能について使用される時間基準を含んでいる。本発明では、力効果をレンダリングするときにサーボクロックの１目盛りを決定するために、時間基準を使用する。また現在のサーボクロック値は、ＭＣＵ１０の電源が入ったときに最初に記憶される。判断ブロック１０４では、現在のサーボクロック値と記憶されているサーボクロック値との間の差がそのサーボクロックの１目盛りより大きいかどうか、本発明の好ましい実施の形態では２ミリ秒より大きいかどうか、について判断が行なわれる。その差がこの時間間隔以下であるときには、手続きは判断ブロック１０４で肯定判断がなされるまでブロック１０２を通るループに継続する。サーボクロックの１目盛りが経過すると、論理はブロック１０４へ進み、そこでサーボクロックの現在値が記憶される。次にブロック１０６に於いて、制御ハンドルの位置値が記憶される。四分位置検出器４０からの信号は多重化されて、制御ハンドルのＸ軸位置、Ｙ軸位置および回転位置の指示を決定するために使用される。これらの値を記憶したのち、論理はブロック１０８に進み、２ミリ秒前に記憶した値に関係した記憶位置値の変化に基づく制御ハンドルに対する速度値を決定する。記憶した位置値と速度値とは、ノイズにより誘導される誤差を濾波される。更に濾波後の速度値は、２ミリ秒早く測定された、前の速度値に対する制御ハンドルの速度の変化を決定することによって、制御ハンドルの記憶されている加速値を決定するために使用される。
【００３２】
濾波後の位置値、濾波後の速度値および加速度値が記憶されると、論理はブロック１１０へ進み、また押しボタンとジョイスティックに関係する種々のスイッチの状態が、活動状態表を用いたボタンリスト用に更新され、現在作動している押しボタンとスイッチとが示される。論理はブロック１１２に移動し、データパケットがホストコンピュータへの伝送用に構成される。データパケットは丁度記憶された位置値と押しボタンの状態とを含んでおり、またホストコンピュータがデータパケットを提供するようにＭＣＵ１０に要求しなくとも各サーボクロックの１目盛りごとに形成される。
【００３３】
論理はブロック１１４に進み、インターロック（デッドマン型の光学的スイッチ）の状態が記憶される。インターロックの状態は発信器１８と受信器２０との間の光学的経路がブロックされているか否かによって決まる。論理はブロック１１６へ進み、また待機中のホストコンピュータのコマンドと装置応答が解析される。ブロック１１６については図５および図６の説明中に詳記する。論理は次にブロック１１８に進み、そこでボタンリストの作動押しボタンまたはスイッチに関係した力効果がレンダリングされ、またレンダリングから生じた力効果が合計される。例えば、ユーザが「空中戦」シミュレーションゲーム・アプリケーション中のジェット戦闘機上の機銃を発射するようにトリガー１５を作動したとすると、ボタンリスト中の機銃に関係したフィードバック力効果が、生じた力が制御ハンドルに加えられるようにレンダリングされる。論理がブロック１２０に進むと、そこで現在のサーボクロック目盛りについてスケジューリングされたプレーリスト上の力効果がレンダリングされ、合計される。
【００３４】
次に判断ブロック１２２に於いて、ユーザがジョイスティックのハンドルを握っているかどうかについての判別が行なわれる。ユーザがハンドルを握っていると、光学経路が遮断されて、力効果の発生が可能となる。対照的に、光学経路がハンドルを握ったユーザによって遮断されていないときは、力効果の発生は不能となり、論理はブロック１０２に戻る。判断ブロック１２２での判断が正しいと、論理はブロック１２４に進む。ボタンリストとプレーリストの両方からのレンダリングと合計された力効果が互いに加算され、レンダリングされる力効果の全合計を作成し、Ｘ軸とＹ軸の直流サーボモーター用の駆動信号を発生する。最後に、論理ループはブロック１０２に戻り、次のサーボクロック目盛り中に生じる力効果の判別を開始する。
【００３５】
ここで図５の説明に移る。図５は、ブロック１１８で実行される解析段階を詳細に示している。スタートブロックから進んで、論理は判断ブロック１２６に進み、ホストコンピュータからのコマンドを受け取るためのコマンド待ち行列が空いている否かについての判断が行なわれる。コマンド待ち行列は循環先入れ先出し（ＦＩＦＯ）データ構造を持っている。本発明の好ましい実施の形態に於いて、コマンド待ち行列は長さ８バイトで、サーボクロックの１目盛りごとに（２マイクロ秒ごとに）空になる。判断ブロック１２６の判別が真であると、論理は解析ルーチンからジャンプして図４の主論理流れ図に戻る。コマンド待ち行列が空いていない時には、論理はブロック１２８に進み、またコマンド待ち行列中の最初のデータ項目（バイト）はコマンドバッファ中に移動する。
【００３６】
コマンドバッファは１２８バイトまでのデータ項目を保留することができ。従って非常に複雑なコマンドもホストコンピュータ３２からＭＣＵ１０に渡すことが出来る。しかし、大抵のホストコマンドは比較的長さが短い。正弦波形の力効果を生成するためのコマンドはコマンドバッファ中で３０バイト程度を消費することがあるが、既にダウンロードされている正弦波力効果を修正または実行するためのその他のコマンドの中には僅かに３バイト程度を消費するに過ぎないものがある。従って、ホストコンピュータがまず力効果のプロファイル、即ちＲＯＭに記憶されていない力効果を定義するデータ構造とパラメータ、を最初にダウンロードした後に、ホストコンピュータと、力効果のレンダリングを制御するためのプロセッサとの間のコマンドがサーボクロックの１目盛り中に通常提供される。
【００３７】
次にブロック１２９に於いて、コマンドバッファ書き込みポインタが増分される。各コマンドは、コマンドバッファに対する１対の読み取りポインタと書き込みポインタを持っている。書き込みコマンドバッファポインタは、データ項目がコマンドバッファに書き込まれる毎に増分される。読み取りコマンドバッファポインタは、各データ項目が実行用にコマンドバッファから読み取られる毎に増分される。このようにして、読み取りポインタと書き込みポインタの値が互いに等しく、ゼロよりも大きい時には、コマンドバッファ中に書き込まれたコマンドがまたそのバッファから確実に読み出されたことを確認する検査が行なわれる。
【００３８】
判断ブロック１３０で、データ項目が新しいコマンドの演算コード（第１バイト）を含んでいるか否かについての判別が行なわれる。真であれば、論理はブロック１３２に移り、新しいコマンドフラグが真に設定される。そのループをブロック１２６へ戻って、コマンド待ち行列が空いているか否かについてもう一度判別が行なわれる。もしも判別が否定であると、論理は、コマンド待ち行列の次の最初のデータ項目がコマンドバッファ中に記憶されることを規定するブロック１２８に進む。判断ブロック１３０での判別が否定であると、論理は判断ブロック１３４に移り、コマンドバッファ中のコマンドが完全であるか否かについて、即ち現在のデータ項目がそのコマンドの最後のバイトであるか否かについて、判断するためにもう一度判別が行なわれる。もしも否定であると、論理は判断ブロック１３４に於ける判別が真になるまで判断ブロック１２６にループバックする。
コマンドバッファ中のコマンドが完全であると判断されると、論理は判断ブロック１３６に移り、そこでホストコンピュータとジョイスティックとの間でのデータ通信用に指定されているＭＩＤＩチャネルを通ってコマンドが伝送されているか否かについての判別が行なわれる。この判別はミュージックシンセサイザー・コマンド等の、ＭＣＵ１０用に意図されていない、ＭＩＤＩコマンドを濾波して取り除くのに役立つ。判断ブロック１３６での判別が誤りであると、論理はブロック１３８に移り、そこでコマンドバッファ用の読み込みポインタと書き込みポインタとが、ゼロに設定される。次に、ブロック１２４に於いて、新しいコマンドフラグが誤りに設定される。論理の流れは再び判断ブロック１２６に戻り、プログラムはいずれかのコマンドがホストコマンド待ち行列中に残っているか否かを判別する。
【００３９】
判断ブロック１３６での判別が肯定判断であると、プログラムは図５Ｂに示すようにブロック１４０に進む。コマンドの健全性が、そのコマンドの第１バイト中のコマンド演算コードをジョイスティックについての正しいコマンドのルックアップテーブルと比較することによってチェックされる。論理は判断ブロック１４２に進み、新しいコマンドのコマンド演算コードが妥当コマンドのルックアップテーブル中に見出されたか否かについて判別がなされる。否であると、論理はブロック１４８に移動し、否定確認（ＮＡＣＫ）応答が装置（ジョイスティック）応答待ち行列に置かれ、その応答待ち行列は直ちにホストコンピュータに送信される。論理は図６に示したように、ブロック１２４へジャンプする。ブロック１２４では、新しいコマンドフラグが誤りに設定される。次に論理はブロック１２６に進み、論理のフローは図５に関して前に説明したように最初から再開される。
【００４０】
判断ブロック１４２での判断が真であると、論理はブロック１４４に進む。コマンド中のデータの健全性が、コマンドについての検査合計を実行し、そのコマンドについての正確なバイト数がコマンドバッファ中に存在するか否かを判別することによって、評価される。判断ブロック１４６に於いて、論理はコマンドが健全であるか否か、即ちコマンドが両方のデータ健全性検査を通過したか否かを判別する。もし否であると、論理はブロック１４８に移り、否定確認（ＮＡＣＫ）応答がホストコンピュータ３２への伝送用の装置応答待ち行列中に置かれる。もしも判別が真であれば、論理はコマンドバッファ中のコマンドを実行することを規定したブロック１５０に進む。コマンドバッファ中の各データ項目が実行されると、読み取りコマンドバッファポインタが増分される。次に、論理は判断ブロック１５１に進み、コマンドが実行に失敗したか否かについて判別する。読み取りと書き込みのコマンドバッファポインタの値が比較されて、コマンドの実行中に正しいバイト数が読み取られたか否かが判別される。両方のポインタが同一の値を持っていないと、論理はブロック１４８に移動し、否定確認（ＮＡＣＫ）応答がホストコンピュータ３２への伝送用の装置応答待ち行列中に置かれる。しかし、読み取りおよび書き込みコマンドバッファポインタが同一の値を持つ時は、論理はブロック１５２に移動し、肯定確認（ＡＣＫ）応答が装置応答待ち行列中に置かれる。肯定確認（ＡＣＫ）応答がホストコンピュータ３２に伝送されると、論理は（図６中の）ブロック２４にジャンプする。新しいコマンドフラグが偽に設定され、論理の流れは判断ブロック１２６に移り、方法１００の論理段階が再度新たに開始出来るようになる。
【００４１】
装置応答待ち行列中の肯定確認（ＡＣＫ）応答と否定確認（ＮＡＣＫ）応答は、同一のＭＩＤＩチャネルのホストコンピュータに送られ、そこでコマンドがホストコマンド待ち行列用のＭＣＵ１０によって受信される。装置応答待ち行列は、一度に２つの肯定確認（ＡＣＫ）／否定確認（ＮＡＣＫ）応答（６バイト）よりも僅かに多くを含むに十分な大きさ（８バイト）であるので、それらの応答はＭＣＵによって各データ項目が判断された後にホストコンピュータに送られる。ＭＩＤＩプロトコルは６．２５バイトのデータを２ミリ秒毎にホストコンピュータに伝送することが出来る。またコマンドのサイズ、ＡＣＫ／ＮＡＣＫ応答および診断メッセージの長さは少なくとも３バイトである。従って、サーボ目盛り１目盛り当たりの装置応答待ち行列中に登録される応答は２応答以下である。これと対蹠的に、ホスト用に構成され、位置値とボタン／スイッチ状態値を含む各ゲームポート・データパケットはＭＣＵによって要求毎にホストコンピュータに伝送されるだけである。
【００４２】
触感ジョイスティックによる力効果のレンダリングが所定の時間長さ（好ましい実施の形態では４０ミリ秒）を超えているいがどうかを判別するために、ウオッチドッグタイマが使用される。コマンドの実行時間が４０ミリ秒を超えると判別されると、力効果のレンダリングと発生が失敗したと判別されたことになり、論理は直ちにプログラムの実行を中断し、また論理のフローがスケジューラの全工程の実行を再開できるように、ＭＣＵ１０中に含まれているプロセッサをリセットする。
【００４３】
コマンドセットの例示
このこの好ましい実施の形態に於いては、複数のコマンドが図４、図５および図６の論理によって示されたプログラムにより実行されるが、有効なコマンドのリストの一部を下記の表に例示する。
【００４４】
【表１】
0004750234.tif 000002
上の表１に示したコマンドリストは少なくとも５種類のコマンド、即ち効果、プレイバック、ユーティリティ、効果操作および生産が、明示されている。装置コマンドセットにより、本発明はホストコンピュータ３２によりＭＣＵ１０に伝送される非常に多様な力効果とシステムの処理手順を実現することが出来る。
【００４５】
スケジューラと力効果の種別
スケジューラは、ＭＣＵ１０によって実行されるソフトウエアで実行されるが、主としてホストコンピュータにより要求された力効果を触感ジョイスティックがレンダリング出来るようにする役割を果たす。スケジューラは力効果のプレイバックを命令するプレイリストを実行するためのラウンドロビン待ち行列を持っている。力効果には５つのクラスがある。即ち挙動、合成、ウエーブテーブル、可変パラメータおよび処理リストの５クラスである。各クラスの効果は、ホストコンピュータにより変更可能な少なくとも１つのパラメータおよびその他の１つのクラスの力を他のクラスから識別する特徴を有している。挙動力効果は力効果を発生するために位置、速度および／または加速度の値を使用する力プロファイルを有している。これらの値は、ユーザが制御ハンドルを動かしたときに、そのハンドルの動きに応答してＭＣＵ１０によって決定される。例えば摩擦力、制動力、慣性、スプリングおよび恒常力は全て触感ジョイスティックの制御ハンドルを動かすユーザに応答して発生する挙動効果である。従って、挙動効果は、バーチャルワールド内の仮想対象物の動きに関係した力効果をシミュレートするのに特に適している。
【００４６】
合成効果は時間可変性である数式の関数として、ＭＣＵ１０によってレンダリングされる。これらの合成効果式は多項式、変換係数、正弦波形、余弦波形および三角波形を含んでいる。合成効果についてホストコンピュータによって修正可能なパラメータには、方向、周波数および包絡線（力効果の時間変更振幅）が含まれている。
【００４７】
ウエーブテーブルの力効果は、ＭＣＵ１０のＲＡＭまたはＲＯＭ中のテーブルに記憶されている任意のプロファイルに基づいてそのＭＣＵによりレンダリングされる。これらの力効果は合成された力効果に類似しており、相違点は力データが所定のサーボ目盛りについて得られる方法に於いてのみである。ホストコンピュータからダウンロードされたウエーブテーブルの力効果はいずれもＲＡＭに記憶されるが、定義済みのウエーブフォーム力効果はＭＣＵ１０内のＲＯＭに記憶される。押しボタンまたはスイッチは力効果のいずれのクラスにもマッピングされることが出来るので、ＲＡＭまたはＲＯＭのいずれかに記憶されているウエーブテーブル効果にマッピングすることも出来る。ＲＯＭ中に記憶されたウエーブテーブルの部分的効果と、各力効果に割当てられたＲＯＭの識別番号と各力効果に適用されるパラメータ（出力速度、利得および存続期間）のリストの一部を下表２に示す。
【００４８】
【表２】
0004750234.tif 000003
力効果の第４のクラス、即ち可変パラメータ、は上で説明した挙動、合成およびウエーブテーブルの各力効果の組み合わせを含んでいる。この組み合わせ力効果のパラメータは数式の関数として、またはジョイスティックの制御ハンドルの配置に従って、時間を切り換える変数であることが出来る。可変パラメータ力効果の例には、スプリングの振幅を変調するための正弦波と、ジョイスティック制御ハンドルを動かすときの速度が増加するにつれてより強くなるウエーブテーブル効果とを含んでいる。レンダリング中の力効果のパラメータを、ホストコンピュータの代わりにＭＣＵによって変化出来るようにすることが著しく望まれる。ホストコンピュータに、リアルタイムでパラメータを変化させることと、プロセッサを連続的に更新することが要求されたとすれば、タスクはコンピュータ負荷を相当に増加することになると考えられる。
【００４９】
注目すべきことは、スケジューラが、現在のサーボクロック目盛りについてスケジュールされているプレイリスト上の全ての力効果を重ね合わせ、従ってＭＣＵだけで現在の目盛りに対するこれらの力効果の合計をレンダリングすることである。或る力効果と関係したスイッチまたは押しボタンがユーザが作動すると、その力効果についての識別番号がプレイリストに入力され、またＭＣＵによってレンダリングされる。更に、力効果が加えられる時間間隔は通常スイッチ／押しボタンが作動したままとなっている時間に等しい。
【００５０】
処理リスト、プレイリストおよびボタンリスト
処理リスト力効果は、最初の４つの力効果クラス、即ち挙動力効果、合成力効果、可変パラメータ力効果およびウエーブテーブル力効果、の組み合わせのレンダリングを規定する処理リストに基づいている。処理リストには、重ね合わせ、シーケンシャルおよび連結の３つの種類がある。重ね合わせ処理リスト中に含まれる力効果は全て同時に発生される。ここで重要なのは、重ね合わせ処理リストは各力効果の存続期間に従ってそのリスト上の各力効果を実行することである。このようにして、リスト上の力効果は、種々の時間で停止し、また開始することがあり、従って全ての力効果の重ね合わせは、リストされた力効果の全てが発生されているときに、処理リストの総括的存続期間のその部分に対してのみ生じる。処理リスト中に含まれるいずれの力効果も、そのパラメータに指定された力効果の期間が完了すると終了することができ、その他の力効果は生成され続けることが出来る。
【００５１】
シーケンシャル処理リストは、そのリスト中にシーケンシャルに含まれる力効果のシーケンシャルなレンダリングと発生を規定し、従って連続する各力効果は直前の力効果が完了し後にのみ発生される。ここで重要なのは、各力効果がその力効果のパラメータ中に指定された振幅包絡線を保持することである。シーケンシャル処理リストは常に各力効果を別々に、その力効果の規定期間が完了するまで実行する。その後に於いてのみ、シーケンシャル処理リストの次の力効果がＭＣＵによってレンダリングされて、発生される。
【００５２】
連結処理リストは、そのリストの力効果が、リスト上に現われる順序で個別にレンダリングされ、また発生するので、シーケンシャル処理リストに類似している。しかし、連結処理リストではまた、そのリストに含まれている力効果の個別に定義された振幅包絡線に代わって総括的な振幅包絡線が呼び出される。従って、連結処理リスト中の個々の力効果は、総括的振幅包絡線下でシーケンシャル実施されるが、この総括的振幅包絡線によって各力効果についてプロファイルパラメータ中に示された振幅を有意に修正することができる。
【００５３】
更に、処理リストは他の処理リストに対してネストされた基準を含むことが出来る。この方法で、複数の処理リストをネスト化して非常に複雑な力効果をレンダリングしまた発生するようにすることが出来る。処理リストは、力効果の複雑な組み合わせを、その組み合わせに指定されている単一のコマンド（識別番号）で呼び出すことが出来る点でサブルーチン呼び出しに似ている。プレイリスト上で使用可能な処理リストはサーボクロックの増分（目盛り）ごとにスケジューラによって実行されるが、処理リストはその処理リストの個々の力効果をレンダリングおよび発生した後に、それ自身の処理リストクロックを使用して個々の力効果をタイムアウトさせる。
【００５４】
スケジューラによって実行されるプレイリストは、恐らく特別な場合の重ね合わせ処理リストとして最も良く理解することが出来る。プレイリストは、各サーボクロックの各目盛りごとにホストコンピュータにより指示された全ての力効果の識別子を入力順に順序付けしている。プレイリストは、サーボクロック目盛り毎に完全にトラバースされるので、ＭＣＵによってレンダリングされる実際の力効果は、その時間に示されるプレイリスト上の全ての効果の総和である。更に各力効果は関連する存続期間を持ち、また力効果に対する残りの時間はプレイリストのトラバース毎に計算される。力効果はＭＣＵの記憶装置中に以後に使用するために記憶されたままであるが、タイムアウトしているプレイリスト上に初めから在った力効果は不活動とマークされて、そのリストから除去される。
【００５５】
ホストコンピュータは発生中の力効果のパラメータを、その力効果についての新しいパラメータと識別番号とを含むコマンドをＭＣＵに送ることによって、リアルタイムで変更することができる。しかし、力効果はレンダリング中はＭＣＵによって変更されない。その代わりにレンダリング中の変更は、ホストコマンド解析ルーチンで同期的に実行される。また力効果は、ホストコンピュータがその力効果の識別番号と希望の動作とを示す時に開始し、また停止することが出来る。停止された力効果がその存続期間カウンタがタイムアウトする前に再開される時は常にその存続期間カウンタはその中断が発生する前に記憶されている初期値で再開される。
【００５６】
上述したように、ボタンリストは作動したスイッチと押しボタンの状態を含んでおり、またプレイリストとは別個にＭＣＵによって維持される。典型的には、ボタンリストは、１対１の対応で特定の押しボタンまたはスイッチにマッピングされている力効果の識別番号を含んでいる。しかし、複数の力効果に対応する複数の識別番号を単一のスイッチまたは１つの押しボタンにマッピングすることも出来る。ホストコンピュータはスイッチと押しボタンのマッピングを指示し、またはユーザが所望の力効果を特定の押しボタンまたはスイッチにマッピング出来るようにすることも可能である。１つの力効果にマッピングされた押しボタンまたはスイッチが入りの状態にあるときには、力効果がプレイリストに加えられ、その押しボタンまたはスイッチが解除されるまでリスト中に残る。従って、押しボタンまたはスイッチの状態（入り／解除の状態）に変化を生じると、マッピングされた効果はプレイリストに加えられ、またはプレイリストから除去される。
【００５７】
力効果の対象の例
図７は力効果の対象１６８の一般概要図である。力効果の対象に適用される特別のデータ構造１５４は、ブロック２５６の力効果クラス、ブロック１６０の存続期間値およびデータポインタ１５８を含んでいる。ブロック１５６は力効果のクラス、即ち、挙動、ウエーブテーブル、合成、または可変パラメータを示すために使用される。データポインタ１５８は特定の力効果のパラメータを記憶するために使用されるデータ構造１６２の記憶装置内のアドレスを指示し、またデータ構造１６２はブロック１６４内の第１のパラメータからブロック１６６のｎ番目のパラメータまでを含んでいる。データ構造１５４およびデータ構造１６２が力効果の特定のクラスの力プロファイルを作成するために使用されると、力効果の対象１６８に識別番号が指定される。
【００５８】
ホストコンピュータは、識別子を使用してＭＣＵ１０によりレンダリングするための特定の力効果を指示するので、ホストコンピュータでは、特定の力効果を示するのに２つのデータ構造の識別を記憶するように実際のメモリを割り当てる必要はない。その代わりに、ＭＣＵ１０は、力効果をレンダリングできるように、力効果に適用するデータ構造についての対応する記憶位置に、力効果についての識別番号を変換するタスクを有している。この方法より、力効果のレンダリングを示すためにホストコンピュータに要求される演算オーバーヘッドは激減する。また、ホストコンピュータ３２は、関連する力効果の識別番号を規定するコマンドを送るだけでデータ構造１６２内に含まれているパラメータの値を更新することができ、そのパラメータに新しい値を提供する。
【００５９】
この好ましい実施の形態において、ＭＣＵ１０は、１６の力効果プロファイルと１６の識別番号についてＲＡＭ内に所定の記憶位置を有している。ホストコンピュータ３２からＭＣＵ１０にダウンロードされた力効果プロファイルは、特定の順番で供給され、ＭＣＵにより力効果プロファイルを記憶するために割り当てられたＲＡＭの量を保存することができる。ホストコンピュータ３２は、先ず初めに、全ての非処理リスト力効果についての力効果プロファイルをＭＣＵ１０に供給し、ホストコンピュータは、そのプロファイルがＭＣＵにダウンロードされた後に各力効果に指定された識別番号を受け取る。次に、ホストコンピュータ３２は、ＭＣＵ１０により提供された識別番号を使用して、ＭＣＵにダウンロードされた処理リスト力効果についての力効果プロファイルを識別する。本発明の別の実施形態では、ホストコンピュータによりダウンロードされた力効果プロファイルの数とタイプを整合させるように、力効果プロファイル用に割り当てられたＲＡＭの量の動的スケーリングを行なうようにすることもできる。
【００６０】
処理リストの対象１６９の概要を図８に示す。処理リストは力効果の対象の特別の場合であるが、これは力効果リストに必要な存続期間値は処理リストの対象には適用されないからである。処理リストの対象１６９は、ブロック１９０およびデータポインタ１９２での処理としてクラスを識別する一般データ構造１８８を使用するが、ブロック１９４の存続期間値は含まれない。その代わりに、処理リストの対象の存続期間は、データポインタ１９２によって指示されるメモリアドレスの特定のデータ構造１７０内に含まれている値により決定される。注目すべきは、識別番号は、処理リストの対象１６９と関係付けて、ホストコンピュータ３２があたかも単一の効果を表わしている力効果の対象であるかのように処理リストをＭＣＵに示すことができることである。
【００６１】
データ構造１７０は、ブロック１７２の処理タイプ、ブロック１７４の効果指標１からブロック１８２の効果指標ｎまでを含む複数の効果指標、およびにブロック１７６と１８４の関連存続期間値を含んでいる。存続期間のデフォルト値は、個々の効果データ構造について最初にダウンロードされた値である。しかし、存続期間値はホストコンピュータによってデフォルト値から修正することもできる。ブロック１７２の処理タイプは、リストにより識別された効果がプロセッサによりどのようにレンダリングさせられるか、例えば、重ね合わせか、連結か、またはシーケンシャルか、を示す。リストフラグの末端部１８６は、処理リストによって指標付けされた全ての効果が識別されたことを表わす。
【００６２】
次に、図９について説明する。同図は典型的な処理リストの対象１６９’の拡大図である。一般的なデータ構造１８８はブロック１９０を含み、これはクラスをプロセスリストオブジェクトとして識別する。データポインタ１９２は処理リストの対象のための特定データ構造１７０’のメモリアドレスを指示し、またブロック１７２’は処理リストの対象がシーケンシャルであることを示している。ブロック１７４’の効果指標１は別の特定データ構造１５４’を示し、またその特定構造のブロック１５６’は力効果クラスがウエーブテーブルであることを規定している。ブロック１６０’の存続期間値（７５）はデータ構造１５４’と関連しているが、ブロック１７６’の力効果存続期間が処理リストに対するウエーブテーブル効果の実際の存続期間（存続期間）を決定する。この実施形態においては、処理リスト存続期間値は７５サーボ・クロック目盛りであり、ウエーブテーブル効果の存続期間値と同じである。しかし、これらの値が異なる場合には、ウエーブテーブル力効果が生成される処理リスト上の時間の長さの決定において、ブロック１７６’の力効果存続期間値がブロック１６０’の存続期間値に置き代わる。
【００６３】
特定データ構造１５４’は、またウエーブテーブル力効果のパラメータを記憶するためのデータ構造１６２’を示すデータポインタ１５８’を含んでいる。データ構造１６２’はブロック１６４’のパラメータ１で始まりブロック１６６’のパラメータｎで終了する。
【００６４】
ブロック１７８’の力効果指標２は別の特定データ構造１５４”を示し、またブロック１５６”は力効果クラスがスプリングであることと定義する。存続期間値（６０）はデータ構造１５４”のブロック１６０”に示されているが、ブロック１８０’の力効果存続期間値が処理リスト上のスプリング効果の実際の持続時間（存続期間）を決定する。この実施形態では、処理リスト存続期間はブロック１８０’の５０サーボ・クロック目盛りに設定されている。したがって、ブロック１８０’の力効果存続期間はブロック１６０”で指示した存続期間値（６０）に取って替わり、その結果処理リストに対するスプリング効果の実際の存続期間は短縮される。
【００６５】
リストフラグ末端部１８６’は、処理リストが既にトラバースされており、プロセッサによるレンダリングについてリスト上には力効果は残っていないことを示している。したがって、ホストコンピュータが処理リストの対象１６９’についての識別番号をプロセッサに示すと、ウエーブテーブルの力効果とスプリング力効果はそれぞれ７５と５０のサーボ・クロック目盛り（計１２５目盛り）の間シーケンシャルにレンダリングされる。複数の力効果の対象を、単に最初の処理リストに指定された識別番号を参照するだけで、別の入れ子になっている処理リストを含む処理リストにより実施できることも想定される。
【００６６】
次に、図１０について説明する。同図はプレイリストの対象２００の概要図である。プレイリストの対象の一般データ構造は複数の力効果指標と力効果時間を含んでいる。プレイリストの対象のデータ構造は、プレイリストの対象が処理タイプを含まないことを除き、処理リストの対象のデータ構造に類似している。その代わりに、プレイリストの対象２００は重ね合わせ力効果のリストを含んでいる。プレイリスト（の対象）はサーボクロックの各増分（目盛り）ごとにトラバースされ、特定の目盛りについてスケジュールされた各力効果はレンダリングされ合計される。ブロック２０２の力効果指標１からスタートしてブロック２１０の力効果指標ｎで終了し、現在のサーボクロック目盛りについてスケジュールされた各力効果が識別される。ブロック２０４の力効果時間からブロック２１２の力効果時間ｎまでの値は、対応する力効果指標のスケジューリングを決定するために使用される。力効果時間は力効果についての存続期間値を含んでおり、また開始時を含んでいてもよい。リストフラグ末端部２１６は、サーボクロックの各目盛りごとにいつプレイリストが完全にトラバースされたかを判別するために使用される。サーボクロックの現在目盛りについて決定された全ての力効果が累計され、その結果、ＭＣＵ１０は現在目盛りについての力効果の合計のみをレンダリングする。
【００６７】
ブロック２０２の力効果指標１は処理リストについての一般データ構造１８８を指し、ブロック２０４の最初の力効果時間（２００）の値は、プレイリスト上で、データ構造１８８により定義された処理リストの実際の存続期間即ち持続時間を決定するために使用される。プレイリストの最初の力効果時間の値は、プロセスリストの力効果存続期間の合計時間よりも少ない場合も多い場合もあり得る。上記のデータ構造１８８についての説明はこの実施形態にも適用される。
【００６８】
注目すべきことに、プレイリストの力効果時間が力効果をレンダリングするためにプロセッサにより示された時間の総量に置き代わることである。プレイリストの最初の力効果存続期間値（２００）は、指標付けされた処理リスト力効果（１２５）の存続期間を超えるので、処理リストはプレイリスト存続期間値の終わりまでループする。
【００６９】
ブロック２０６の力効果指標２は合成力効果に対する特定データ構造１５４´´´ を指す。データポインタ１５８´´´ は合成力効果についてのパラメータを含むデータ構造１６２´´´ を指す。合成力効果が適用される実際の時間の量は、ブロック２０８の値（５０）によって決定されるが、この時間は、ブロック１６０´´´ の存続期間値の値（６０）と異なる場合には常にこれに取って替わる。したがって、上記のように一般データ構造２１４は、サーボクロックの各目盛りごとにスケジューラにより完全にトラバースされるので、ＭＣＵ１０によりレンダリングされた力効果は、サーボクロックの現在目盛りについてスケジュールされた全ての力効果の累積として発生する。本発明について本発明の好ましい実施の形態との関連に於いて説明したが、本技術の当業者であれば本請求の範囲内で多く変更が可能であることを理解するであろう。したがって、本発明の範囲はいかなる場合においても上記の説明により制限されるものではなく、請求の範囲を参照して決定されるべきである。
【図面の簡単な説明】
【図１】本発明の好ましい実施の形態を具体化した触感ジョイスティックの側面図。
【図２】好ましい実施の形態の概要システムブロック図。
【図３】本発明の好ましい実施の形態の概要ブロック図。
【図４】好ましい実施の形態に於いて実施される論理を示す流れ図。
【図５】好ましい実施の形態に於いて実施される論理を示す流れ図。
【図６】好ましい実施の形態に於いて実施される論理を示す流れ図。
【図７】効果の対象についてのデータ構造を示すブロック図。
【図８】処理リストの効果の対象についてのデータ構造を示すブロック図。
【図９】処理リストの効果の対象についてのデータ構造の例を示すブロック図。
【図１０】プレイリストについてのデータ構造を示すブロック図。
【符号の説明】
１１  力フィードバック（触感）ジョイスティック
１３  制御ハンドル
２２  Ｙ軸モータ
３３  ホストコンピュータ
３５  プロセッサ
３６  Ｙ軸位置表示ＬＥＤ
３７  位置機検知器
３８  スロットル位置表示ＬＥＤ
１６８  力効果の対象
１６９  処理リストの対象
２００  プレイリストの対象
【図１】
0004750234.tif 000004
【図２】
0004750234.tif 000005
【図３】
0004750234.tif 000006
【図４】
0004750234.tif 000007
【図５】
0004750234.tif 000008
【図６】
0004750234.tif 000009
【図７】
0004750234.tif 000010
【図８】
0004750234.tif 000011
【図９】
0004750234.tif 000012
【図１０】
0004750234.tif 000013