(57)【要約】本出願は、シミュレーションとの正確な相互作用を提供することを目的とするシステム、方法、及びプログラムコードに関する。本発明は、インタフェイス装置を介してユーザ入力を検出すること、入力をトルク及び／又は位置情報に変換して制御すること、この情報を特定のオブジェクト又は車両パラメータに適合させること、車両パラメータ及びシミュレーション情報と組み合わせること 連続的な制御ループを介してインタフェイス装置に新たなインタフェイス装置セットポイントを出力することを含む。さらに、このインタフェイス装置の可変コンプライアンスを用いたスティフ位置制御を提供する。
2018516104.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによるエンゲージメントのためのフォースフィードバックインタフェイス装置を具備したシステムであって、
前記フォースフィードバックインタフェイス装置は、シミュレーションと協同して、前記シミュレーション内でオブジェクトを制御するための連続的な閉ループ制御システムを形成し、前記閉ループ制御システム内における前記オブジェクトと前記フォースフィードバックインタフェイス装置との通信は双方向的であり、
前記フォースフィードバックインタフェイス装置の変位は、前記オブジェクトの変位をもたらし、前記シミュレーションにおける前記オブジェクトへの力及び／又は前記オブジェクトとの相互作用は、前記オブジェクトの変位及び前記フォースフィードバックインタフェイス装置の変位をもたらす、システム。
【請求項２】
フォースフィードバック装置の前記変位は位置制御によって達成される請求項１に記載のシステム。
【請求項３】
前記位置制御は、可変コンプライアンスを有するスティフ位置制御を具備している、請求項２に記載のシステム。
【請求項４】
前記シミュレーションにおける前記オブジェクトの前記変位は、前記フォースフィードバックインタフェイス装置の変位のための位置にマップされる、請求項１に記載のシステム。
【請求項５】
前記シミュレーションにおける前記オブジェクトの前記変位は、前記フォースフィードバックインタフェイス装置の変位のためのトルクにマップされる、請求項１に記載のシステム。
【請求項６】
前記シミュレーションにおける前記オブジェクトは、シミュレートされた車両の少なくとも一部である、請求項１に記載のシステム。
【請求項７】
前記フォースフィードバックインタフェイス装置は、少なくともステアリングホイールである、請求項１に記載のシステム。
【請求項８】
前記フォースフィードバックインタフェイス装置のセットポイントは、前記システムによって、前記セットポイントがフォースフィードバック装置の設定及び能力に依存するようにセットされる、請求項１に記載のシステム。
【請求項９】
前記オブジェクトの相互作用は、オブジェクトパラメータによってカスタマイズされる、請求項１に記載のシステム。
【請求項１０】
前記オブジェクトと前記フォースフィードバックインタフェイス装置との間の相互作用を制御する仮想ステアリングラックを更に具備し、前記仮想ステアリングラックは、前記フォースフィードバックインタフェイス装置のセットポイント及びコンプライアンス又はスティフネスを計算及び出力する、請求項１に記載のシステム。
【請求項１１】
仮想トルクセンサを更に具備し、前記仮想トルクセンサは、前記フォースフィードバックインタフェイス装置の位置変位を用いて、フォースフィードバック装置の対応するトルク値を計算する、請求項１に記載のシステム。
【請求項１２】
リアルタイムでのフォースフィードバックを提供する方法であって、
フォースフィードバックインタフェイス装置からセンサ情報を受け取ることと；
前記フォースフィードバックインタフェイス装置に位置及びトルクの情報の少なくとも１つを提供することと；
オブジェクトとオブジェクトの位置に関連したシミュレーションからデータを受け取ることと；
オブジェクトに関連した位置及び力のデータの少なくとも１つを提供することと；
前記シミュレーション内でオブジェクトを制御するための連続的な閉ループ制御システムを形成することであって、前記閉ループ制御システム内における前記オブジェクトと前記フォースフィードバックインタフェイス装置との通信は双方向的であることと；
前記フォースフィードバックインタフェイス装置の位置制御を提供することであって、前記フォースフィードバックインタフェイス装置の変位は、前記オブジェクトの変位をもたらし、前記シミュレーションにおける前記オブジェクトへの力は、前記オブジェクトの変位及び前記フォースフィードバックインタフェイス装置の変位をもたらすことと、
を具備した方法。
【請求項１３】
前記位置制御を提供することは、可変コンプライアンスを有するスティフ位置制御を提供することを具備している、請求項１２に記載の方法。
【請求項１４】
前記シミュレーションにおける前記オブジェクトの前記変位を前記フォースフィードバックインタフェイス装置の変位のための位置及びトルクにマッピングすることを更に具備した、請求項１２に記載の方法。
【請求項１５】
前記シミュレーションにおける前記オブジェクトは、シミュレートされた車両の少なくとも一部である、請求項１２に記載の方法。
【請求項１６】
前記フォースフィードバックインタフェイス装置は、少なくともステアリングホイールである、請求項１２に記載の方法。
【請求項１７】
前記フォースフィードバックインタフェイス装置を設定することを更に具備し、前記設定工程は、前記フォースフィードバックインタフェイス装置のパラメータを検出することと、前記検出工程に基づいて前記フォースフィードバックインタフェイス装置のセットポイントをセットすることとを含んでいる、請求項１２に記載の方法。
【請求項１８】
前記オブジェクトのパラメータを設定することを更に具備した請求項１２に記載の方法。
【請求項１９】
前記オブジェクトと前記フォースフィードバックインタフェイス装置との間の相互作用を制御するための仮想ステアリングラックを設定することを更に具備し、前記仮想ステアリングラックは、前記フォースフィードバックインタフェイス装置のセットポイント及びコンプライアンス又はスティフネスを計算及び出力する、請求項１２に記載の方法。
【請求項２０】
前記仮想ステアリングラックは、オブジェクトのパラメータ及びフォースフィードバックインタフェイス装置のパラメータを前記フォースフィードバックインタフェイス装置へとマップすることにより形成される、請求項１９に記載の方法。
【請求項２１】
前記フォースフィードバックインタフェイス装置から位置センサデータを読み取って、前記位置センサデータを位置−力インタフェイスを通じてプロセスすることにより、仮想トルクセンサを形成することを更に具備した、請求項１２に記載の方法。
【請求項２２】
プロセッサにより実行された際に前記プロセッサに以下のことを行わせるように構成されたプログラムコードを具備した非一過性コンピュータ読取可能記録媒体：
フォースフィードバックインタフェイス装置からのセンサ情報を受け取り；
前記フォースフィードバックインタフェイス装置に位置及びトルクの情報の少なくとも１つを提供し；
オブジェクトとオブジェクトの位置に関連したシミュレーションからデータを受け取り；
オブジェクトに関連した位置及び力のデータの少なくとも１つを提供し；
前記シミュレーション内でオブジェクトを制御するための連続的な閉ループ制御システムを形成し、ここで、前記閉ループ制御システム内における前記オブジェクトと前記フォースフィードバックインタフェイス装置との通信は双方向的であり；
前記フォースフィードバックインタフェイス装置の位置制御を提供し、ここで、前記フォースフィードバックインタフェイス装置の変位は、前記オブジェクトの変位をもたらし、前記シミュレーションにおける前記オブジェクトへの力は、前記オブジェクトの変位及び前記フォースフィードバックインタフェイス装置の変位をもたらす。
【請求項２３】
位置制御を提供するように構成された前記プログラムコードは、可変コンプライアンスを有するスティフ位置制御を提供するように構成されたプログラムコードを具備している、請求項２２に記載の非一過性コンピュータ読取可能記録媒体。
【請求項２４】
前記シミュレーションにおける前記オブジェクトの前記変位を前記フォースフィードバックインタフェイス装置の変位のための位置及びトルクの少なくとも１つにマップするように構成されたプログラムコードを更に具備した請求項２２に記載の非一過性コンピュータ読取可能記録媒体。
【請求項２５】
前記シミュレーションにおける前記オブジェクトは、シミュレートされた車両の少なくとも一部である、請求項２２に記載の非一過性コンピュータ読取可能記録媒体。
【請求項２６】
前記フォースフィードバックインタフェイス装置は、少なくとも前記オブジェクトを制御するためのステアリングホイールである、請求項２２に記載の非一過性コンピュータ読取可能記録媒体。
【請求項２７】
前記オブジェクトと前記フォースフィードバックインタフェイス装置との間の相互作用を制御するための仮想ステアリングラックを設定するように構成されたプログラムコードを更に具備し、前記仮想ステアリングラックは、前記フォースフィードバックインタフェイス装置のセットポイント及びコンプライアンス又はスティフネスを計算及び出力する、請求項２２に記載の非一過性コンピュータ読取可能記録媒体。
【請求項２８】
前記フォースフィードバックインタフェイス装置から位置センサデータを読み取って、前記位置センサデータを位置−力インタフェイスを通じてプロセスすることにより、仮想トルクセンサを形成するように構成されたプログラムコードを更に具備した、請求項２２に記載の非一過性コンピュータ読取可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願への相互参照
本出願は、２０１５年３月２７日に出願されたチャド・ローレンデューによる「フォースフィードバックインタフェイス装置のためのシステム及び方法」と題する米国仮特許出願第６２／１３９，５７５号の利益を主張するものであり、その全体が参照により引用される。
【０００２】
本発明は、一般に、人間とコンピュータとの間のインタフェイス装置及びそのシステムに関し、より詳細には、ユーザにフォースフィードバックを提供するインタフェイス装置に関する。
【背景技術】
【０００３】
コンピュータ制御のシミュレーション、ゲーム、及びトレーニングは、多くの異なる産業において広範に使用されている。アプリケーションは、ワークステーションからＰＣ、ゲーム機まで、幅広い利用可能なハードウェアプラットフォーム上で実行できる。これらのハードウェアタイプは、本明細書の中で総称してコンピュータシステムと呼ばれてもよい。アプリケーションは、ユーザが仮想環境又はシミュレートされた環境で対話できるように設計されている。コンピュータシステムは、ユーザに表示画面上の視覚環境を表示し、ユーザは、人間−コンピュータ制御入力又はインタフェイス装置を用いて、シミュレートされた環境と対話することができる。所与のハードウェア実装に応じて、ユーザは、ゲーム又はシミュレーションと対話するために、多くの異なるタイプの制御入力又はインタフェイス装置を自由に使用できる。例えば、フォースフィードバックインタフェイス装置は、リモコン、ジョイスティック、マウス及びキーボード、ステアリングホイール、新しい新規コントローラなどを含むことができる。いくつかのデバイスでは、「触覚的」フィードバックがユーザに提供され、これはより一般的には「フォースフィードバック」として知られている。これらのタイプの装置は、ゲーム又はシミュレーションにおいて制御されているオブジェクトに対応する入力装置又はインタフェイス装置のユーザに物理的感覚を提供することができる。しかしながら、これらの感覚は、正確なシミュレーション経験を提供してきてはいない。
【０００４】
ほとんどの場合、インタフェイス装置によって出力される物理的感覚は、１つ以上の能動型、受動型又はハイブリッド型アクチュエータの使用によって達成される。これらのアクチュエータは、ホストコンピュータシステムによって制御され、インタフェイス装置に結合されている。  典型的には、コンピュータシステムは、インタフェイス装置からセンサ信号を受信し、それに応じて、適切なフォースフィードバック信号をシミュレーション又はゲームイベントと共にインタフェイス装置のアクチュエータに送る。  次に、アクチュエータは、インタフェイス装置に力を与える。  このようにして、コンピュータシステムは、シミュレートされた環境において、オブジェクトの視覚的及び聴覚的表現と関連して、インタフェイス装置によってユーザに「物理的感覚」を伝えることができる。  例えば、多くのアプリケーションでは、提供されるフィードバックは、鳴声又は振動の形である。
【０００５】
インタフェイス装置によって伝達される物理的感覚、すなわちフォースフィードバックは、シミュレートされたオブジェクトの現実の対応物をできるだけ近く模倣して、楽しく、現実的で没入感のある体験を提供するべきである。しかしながら、現在、このフィードバックは現実的ではない。このタイプの振動フォースフィードバックは、シミュレートされた物体がオブジェクトに衝突したり衝突や振動を引き起こし得る他の経験をしたりしたときを示すべきである。残念なことに、運動経験などのシミュレーション経験を提供する際には、これらの鳴声又は振動は包括的でない。なぜなら、運転経験は、ユーザによって提供される入力と、走行面との相互作用に応じたステアリングホイールの動きなどの車両の提供する力のフィードバックとの両方に基づいているからである。
【０００６】
運転シミュレーションに使用されるインタフェイス装置を使用するシステムの一例を図１に示す。図１において、フォースフィードバックシステム１０は、フォースフィードバックインタフェイス装置１２と、ホストコンピュータ１８とを含んでいる。図示のシステム１０は、ビデオゲーム、トレーニングプログラム若しくはシミュレーション、又は他のアプリケーションに使用することができる。ユーザは、ホストコンピュータ１８上のアプリケーション内のオブジェクトを制御するために１つ又はそれ以上の動きの自由度でインタフェイス装置１２を操作することができる。画像は、このような操作に応じて、コンピュータ１８のスクリーン２０などのディスプレイ装置に表示される。コンピュータ１８は、計算能力を有する任意の装置であってよく、例えば、パーソナルコンピュータ、ワークステーション、ビデオゲームコンソール、又は、他のコンピューティング装置若しくはディスプレイ装置であってもよい。ホストコンピュータ１８は、好ましくは、ユーザがデバイス１２及び適切であれば他の周辺機器を介して相互作用し、フォースフィードバック機能を含むことができるホストアプリケーションプログラムを実装している。ホストコンピュータ１８は、シミュレーション、ビデオゲーム、仮想現実訓練プログラム若しくはアプリケーション、又は、インタフェイス装置１２からの入力を利用してフォースフィードバックコマンドをインタフェイス装置１２に出力する他のアプリケーションプログラムなどのアプリケーションを実行することができる。
【０００７】
当初は、従来技術のフォースフィードバック装置は、最大の触覚忠実度を提供することに焦点を当てていた。しかしながら、必要な性能を提供することができるハードウェアに関連するコストのため、これらの装置は高価であり、主流の市場にとって実用的ではなかった。したがって、主力のマスマーケットでより多くのアクセスを可能にするデバイスを実現するために、よりコスト効率の高いソリューションが利用されている。これらのソリューションは、ＰＣやゲーム機など、当時の主流の消費者が利用できる技術に関連する制限に基づいて、同様の設計手法を使用している。この技術は、通信帯域幅、処理能力、及びホストアプリケーションとインタフェイス装置との間の通信のための標準化された言語の欠如の領域に制限を有している。したがって、製造会社は、共有フォースエフェクト処理、即ち「デュアルアーキテクチャ」システムの形で、また標準化されたアプリケーションプログラミングインタフェイス（ＡＰＩ）を作成することで、これらの制限を克服するソリューションを考案してきた。
【０００８】
デュアルアーキテクチャシステムは、インタフェイス装置へのフォースフィードバック効果の制御アスペクトを移動させることによって、通信帯域幅の制限及びホストＰＣの処理能力の制限を克服するように設計されている。デバイスにローカルマイクロプロセッサを提供することにより、フォース効果の記憶、管理、及び計算をローカルで行うことが可能になる。このデバイス上でのアプローチは、デバイスと計算ホストとの間のデータの送信に関連する時間ループによるレイテンシ効果を低減するために行われた。
【０００９】
デュアルアーキテクチャのハードウェアシステムは、特にマイクロソフト社のDirectX APIのDirectInputコンポーネントが導入されたことにより、業界標準となった。DirectInputは、ローカルマイクロプロセッサに格納され且つ実装された低レベルの高周波力効果を有するアーキテクチャ又はシステムの標準化を可能にした。ここで、高レベルの監視低周波力コマンドは、ホストアプリケーションによって計算され、インタフェイス装置に伝達される。
【００１０】
この規格は、部分的にはPC用のWindowsベースのオペレーティングシステムの人気のために、大きく普及している。したがって、ほとんどのフォースフィードバックインタフェイス装置は、DirectInputの機能に基づいて設計されている。DirectInputは、DirectXのコンポーネントとして、より低いレベルのプログラミングオーバーヘッドを利用して、インタフェイス装置との標準化された通信を可能にする。この標準化は、インタフェイスハードウェアに共通のフォースフィードバック「効果」のポートフォリオの作成によってさらに強化され、アプリケーション開発者がAPIを通じて容易に実装できる。APIで定義されている効果は、インタフェイス装置の「動き」又は「位置」に基づいて実行されるように設計された事前定義された条件と力の集合である。これにより、速度制御と位置制御の２つの制御モードが作成される。速度制御は抽象化であり、フォースフィードバックの直感性が減少する。なぜなら、インタフェイス装置の動きとシミュレートされたコンピュータエンティティ又はゲームエンティティの命令された動きとの間に直接の物理的なマッピングがないためである。位置制御は、インタフェイス装置の変位がシミュレートされたコンピュータエンティティ又はゲームエンティティの変位を直接指示するマッピングを指す。位置制御マッピングは速度制御よりも直観的であるが、シミュレートされたエンティティはユーザのインタフェイス装置オブジェクトが動かない限り移動できないため、位置制御マッピングには制限がある。これは、さらに別の抽象化であり、したがって、ある用途におけるフォースフィードバック技術の性能レベルに対する別の制限となっている。
【００１１】
現在、フォースフィードバックは現実的ではなく、デバイス間で一貫していない。様々なインタフェイス装置が異なる機能を果たし、車両シミュレーションは装置によって支配される。運転及び車両のシミュレーションは、使用される装置に関係なく、車両の特性に基づいて均一に感じられるべきである。したがって、一貫した経験を提供するために正規化された設定に装置を較正及び調整することが望ましい。図２は、インタフェイス装置１０２とゲーム中の車両タイヤ１０４との間の例示的な関係１００を示す。現在、装置１０２の変位１０６が、タイヤ１０８の変位を引き起こしている。しかしながら、この通信１１０は一方向的である。シミュレーション又はゲームにおけるイベントは、タイヤ１０８の変位を引き起こさず、したがって、装置１０２はゲーム中の力によっては変位されず、代わりに、フォースフィードバックとして装置１０２に渡される効果によってのみ変位される。例えば、現在、フォースフィードバックがシミュレーションで無効にされている場合、車両のホイールは、ゲーム内又はシミュレーション中のイベントに応答して移動しない。フォースフィードバックは、車両の現実的な制御を提供するものではなく、効果としてホイールにのみ提供されるので、フォースフィードバックがオンでない場合、シミュレーション中のイベント又は条件に応答するタイヤの動きは使用されない。
【００１２】
これを図３に示す。図3は、代表的なフォースフィードバック情報ループ３００を示している。このループは、ホストコンピュータ又はアプリケーション302とインタフェイス装置304との間にある。図示するように、インタフェイス装置304は、アプリケーション302に位置データ306を送信する。この位置データ306は、シミュレーション中の車両又はタイヤの動作を指示する。次に、アプリケーションはフォースフィードバックコマンド308をインタフェイス装置304に送り返す。これは、実際のシミュレーション中の相互作用が車両又はインタフェイス装置の動きに影響を与えないので非現実的であり、したがって、シミュレーション内のイベントが車両制御とインタフェイス装置との双方に影響するようなフィードバックループの完成が望ましい。
【００１３】
従来技術のフォースフィードバックアーキテクチャの限界は、リアリズム、没入感、及び全体的な「感じ」の欠如のために、車両シミュレーション、ゲーム、及びトレーニングアプリケーションにおいて明らかになる。例えば、実生活では、車両のインタフェイス装置であるステアリングホイールは、自動車のステアリングシステムの一部であり、車両の方向の変化を与えるように設計されている。運転者が回転力を加えることによってステアリングホイールが回転されると、ステアリングホイールは、その力をステアリング比によって支配されるその軸線周りのステアリングホイール変位に変換する。ステアリング比は、ステアリングホイールで回された角度の数と、前輪がその軸の周りでそらされる角度の数との比である。しかし、最も重要なことに、ステアリング比は、ステアリングホイールに必要な「力」を指示する機械的なアドバンテイジでもあり、フロントホイールをその軸の周りにそらせる必要がある。したがって、リアルタイムのシステムダイナミクスに従ってステアリングホイールに加えられる力は、前輪の変位量を決定する。また、車両とステアリングホイールとの間のリンクが、閉ループで動作する機械的に接続されたシステムで構成されていることを考慮すると、ステアリングホイールを回す原因と結果は、逆方向でも同様に有効である。したがって、前輪に作用してステアリング軸の周りに撓む「力」は、ステアリングシステムのダイナミックスを介して、ステアリングホイールの回転「位置」及び「力」の対応する変化に変換される。ステアリングシステムにおけるこの双方向の「位置及び力」の変換は、運動学的方程式及び車両固有パラメータによって支配され、それゆえ、すべての車両にわたって一定ではない。
【００１４】
車両シミュレーション、ゲーム、及びトレーニングアプリケーションにおいて従来技術のフォースフィードバックインタフェイス装置を使用するときに明らかな問題は、現在のアーキテクチャが、必要とされる位置及び力「両方」の双方向同時制御を提供する能力がないことである。 DirectInputモデルの普及を考えると、インタフェイスハードウェア、ファームウェア、及びホストアプリケーションソフトウェアは、すべてその限界によって規定されている。共有処理DirectInputモデルは、ハードウェアとファームウェアの高度な組み合わせであっても、フォースフィードバック制御ループに内在する元の基本的な関係によって依然として制約を受ける。これらの関係は、図３に示す従来のフォースフィードバックループを調べるときに示される。前述のように、DirectInput APIエフェクトの定義済みのコレクションは、インタフェイス装置オブジェクトの「移動」又は「位置」に基づいて実行されるように設計されており、インタフェイス装置オブジェクトの「位置を制御する」ように設計されてはいない。そのため、図3に示すように、現在の電流制御ループアーキテクチャは、現実の車両シミュレーションに必要とされるような双方向制御が不可能である。
【００１５】
さらに、現在のシミュレーションでは、インタフェイス装置のダイナミクス（慣性、摩擦、減衰など）のため、各車両の運動学的関係は同じである。これらは、それぞれの車両ごとに異なっているべきである。例えば、-5000のConstantForce信号などのインタフェイス装置に適用される現在の力は、フォーミュラカーとパワーアシストSUVの両方で同じ距離だけ車輪を移動させることになるが、これは非現実的である。したがって、車両ごとに装置データの解釈を調整することが望ましい。さらに、車両のパフォーマンスにも影響を及ぼすため、車両の動力学は同じ車両に対して装置ごとに変化すべきではない。シミュレーションでは、インタフェイス装置は、シミュレートされた車両のステアリングシステムの動きを指示する。これが、伝統的なフォースフィードバックの代わりに「位置フィードバック」が望まれる理由である。運転者がステアリングホイール又はコラムを介して感じる力は、その位置の副産物である。また、ConstantForce信号を使用すると、アプリケーションはフォースコマンドを送信し、回転はホイールのダイナミクスに基づいて行われる。したがって、同じフォースコマンドでは、異なる装置で同じ結果が得られない。
【００１６】
従来技術の触覚的インタフェイスシステムで明らかになった別の問題は、車両シミュレーション、ゲーム、及びトレーニングアプリケーションと共に使用される場合における、ステアリングラックの運動学及びタイヤのフォースダイナミックスのシミュレーションのインタフェイス装置への「オフロード」である。上述したように、車両及びステアリングホイールは、車両固有の運動方程式によって指示される双方向の「位置及び力」関係を有する閉ループで動作する機械的に接続されたシステムである。しかしながら、現時点では、シミュレーションでは、その関係は、標準化されたAPIコマンドに対するデバイスの応答を決定するそれぞれの特定のインタフェイス装置の独自の機械的ダイナミクスによって決定されます。例えば、DirectInputライブラリのConstantForceエフェクトは、（-10,000〜10,000）の範囲で、方向、大きさ、及び継続時間が定義された開ループベクトルの力です。これは、ステアリングホイール力の物理エンジン出力をインタフェイス装置にリンクするために、ホストアプリケーション開発者が最も頻繁に使用する効果である。しかし、2つの異なる製造元のインタフェイス装置に送られたホストアプリケーションからの正確に同じ持続時間の（-5,000）のConstantForce信号は、1つのデバイスのステアリングホイールを-15°回転させ、もう1つを-45°回転させることもあり得る。なぜなら、各々のインタフェイス装置は、異なったモータ、ギアリング、完成、摩擦、電源などに起因して、同一のConstantForce信号を異なって出力する固有のメカニカルダイナミクスを有しているためである。
【００１７】
これは、図3に示すような現在のフォースフィードバックループアーキテクチャでは、厄介な問題となり得る。このアーキテクチャでは、まず「力」の要求を送信し、次にステアリングホイールの「位置」を受信する。もしシミュレーションにおいて同一の車両を用いた同一のアプリケーションが、物理エンジンに起因する-5Nmの力を生成する場合、この力は、車両に特有の運動学を通じて、対応する力を有するステアリングホイールの回転量に翻訳されるべきである。しかしながら、正確に同じ信号を用いた上記の例に基づいて、ステアリングホイールの回転は、使用されるインタフェイス装置に依存して、-30°ほども変化し得る。インタフェイス装置のステアリングホイールの位置におけるこの-30°の変動は、シミュレートされた車両の前輪のステアリング軸周りの偏向における-2°（15：1のステアリング比に基づく）の変動に変換される。この点を強調すると、シミュレートされた車両のステアリングシステムの動力学は可変であり、インタフェイス装置の機械的動力学によって指示され、現実には基づかないシステムを生み出す。より現実的で一貫したシステムを提供することが望ましい。
【００１８】
車両シミュレーション、ゲーム、及び訓練アプリケーションにおける従来技術の触覚的インタフェイスシステムの別の欠点は、物理エンジンの力を標準化されたAPIに受け入れられるスケールされた範囲に、インタフェイス装置の機械的ダイナミックスに対応するように主観的に「マッピングする」ことである。ホストアプリケーション開発者は物理エンジンを使用して力を計算する。しかしながら、これらの力は、通常、標準化されたAPIの力の範囲、特にインタフェイス装置上で生成できる力の範囲には直接の相関がない。マッピングの欠如は、フォースフィードバックのクリッピングにつながる。例えば、ホストアプリケーションの物理エンジンがステアリングホイールをその回転軸を中心に「左」に回転させる-5Nmの力を計算した場合、DirectInputのConstantForce効果のどの値がマッピングに適しているか、即ちそれが-500であるか-5,000であるかは、開発者の裁量が用いられる。これは、各々のインタフェイス装置が独自の機械的ダイナミックスを持ち、マッピングされたConstantForce信号を別の方法で出力するという事実によってさらに複雑になる。さらに、現時点では、車両シミュレーションにおけるホストアプリケーションソフトウェアは、フォースレイヤリングとフォースサチュレーションが問題になっているため、フォースサチュレーションを見ておらず、これは対処されていません。
【００１９】
従来技術のフォースフィードバックインタフェイス及びフォースフィードバック制御システムは、車両シミュレーション、ゲーム、及びトレーニングアプリケーションにおいて、質の高い触覚的フィードバックを提供しようと試みてきた。しかしながら、車両特有の運動学的関係の不在、インタフェイスハードウェアとホストアプリケーションとの間の統合の欠如、標準化されたフォースフィードバックのアプリケーションプログラムインタフェイス（API）の制限により、あるアプリケーションにおいて、ユーザに臨場感及び没入感が欠けたままになっている。したがって、これらの技術に対する改善及び新しいアプローチが望まれる。インタフェイス装置のダイナミクスに関係なく、ホストアプリケーションが意図された設計に従って機能することを可能にするフォースフィードバックインタフェイスシステムの必要性が存在する。前記の装置に容易に接続することができる、又は前記の装置に埋め込むことができる既存及び将来の制御入力装置を収容することができるシステムに対する必要性が存在する。最後に、現実的で正確で、再プログラム可能であり、拡張可能であり、最も重要なことに、ユーザによって容易にカスタマイズ可能である完全なシステムの必要性が存在する。
【発明の概要】
【００２０】
本発明は、インタフェイス装置を介してユーザ入力を検出すること、入力をステアリングのためのトルク及び位置情報に変換すること、この情報を仮想ステアリングラック（VSR）に送信して特定のオブジェクトや車両パラメータに適合させること、車両パラメータ及びシミュレーション内情報と結合させること、並びに新しいインタフェイス装置のセットポイントを連続的制御ループを介してインタフェイス装置に出力することを含む、シミュレーションを実行する様々な態様を提供する。
【００２１】
本発明は、人間−コンピュータインタフェイス装置を操作するユーザに対する物理的感覚を制御及び提供するためのフォースフィードバックシステムに関する。 インタフェイス装置は、制御するホストコンピュータに接続され、インタフェイス装置にローカルな別個のマイクロプロセッサを含む。ローカルマイクロプロセッサはホストコマンドを受信し、独立した制御プロセスを実装する。
【００２２】
より詳細には、本発明によるシステムの一実施形態は、ユーザによって操作されるインタフェイス装置を制御するための本発明によるシステム及び方法を含み、入力制御信号を受信してホストコマンドを提供するホストコンピュータシステムを含んでいる。 ホストコンピュータは、入力制御信号に応じて、ホストアプリケーションプロセスを更新する。インタフェイス装置は、ユーザによって物理的に接触され且つ移動可能なユーザ操作可能なオブジェクトと、ユーザによって感じられる力を出力するアクチュエータと、ユーザ操作可能なオブジェクトに加えられる動き又は力を検出するセンサと、 インタフェイス装置にローカルでホストコンピュータとは離れている、ホストコマンドをプロセスし、センサ信号を送受信し、アクチュエータへの制御信号を出力するための装置マイクロコントローラとを含んでいる。
【００２３】
マイクロコントローラは、ユーザ操作可能なオブジェクトの位置、動き又はトルクを記述するセンサ信号に少なくとも部分的に基づいて、高周波閉ループ制御プロセスにおいて、位置に基づく可変コンプライアンスを有するホスト指令閉ループスティフ位置制御を管理し、 プロセッサ制御信号をアクチュエータに出力する。 可変コンプライアンスは、加えられた外力に応じて、セットポイント位置からのゆらぎを可能にする。
【００２４】
本発明は、ホストコンピュータシステムとローカルマイクロプロセッサとをインタフェイスするために、多くのコンピュータに含まれているUSBインタフェイスを使用することができる。 好ましくは、ホストコンピュータシステム及び／又はローカルプロセッサに時計が結合され、タイミングデータのためにアクセスされて、アクチュエータに出力される信号を決定するのを助けることができる。
【００２５】
ホストコンピュータシステムによって更新されるアプリケーションプロセスは、車両シミュレーション、ゲーム、又はトレーニングソフトウェアなどであり得るアプリケーションソフトウェアを含んでいることが好ましい。ホストコンピュータシステムは、ディスプレイスクリーンなどの視覚的出力デバイス上に画像を表示し、ユーザオブジェクトの位置及び動き、並びにオブジェクトに加えられる力を、画像及び視覚イベントと同期させる。本開示では車両及び車両シミュレーションが具体的に言及されるが、任意のシミュレートされるオブジェクトがこのように制御され得ることを理解されたい。 例えば、人物などのシミュレーション中の物体、又は仮想された物体が、フォースフィードバックインタフェイス装置によって制御されるシミュレーション中のオブジェクトであってもよい。車両は、ひとつの具体例として言及される。「オブジェクト」という用語は、車両又は単数若しくは複数のタイヤなどの車両の一部として交換可能に使用されてもよい。
【００２６】
本開示による実施形態の他の革新的な特徴は、車両固有のパラメータ及びリアルタイムのアプリケーション生成遠隔測定出力に応じて変化する「適応制御」の作成を通じて、特に車両シミュレーションの分野において、フォースフィードバックシステムの現実感、精度及び全体的な「感じ」の改善を提供することに向けられている。
【００２７】
実施形態の一態様において、本開示による革新的な方法は、シミュレーション中の車両オブジェクトの車両固有のパラメータに従ってインタフェイス装置を動的に調整するのに必要な機能を提供する。
【００２８】
本開示による実施形態の別の態様において、革新的な方法は、車両固有の運動学的力を各セットポイントにおける対応したレベルの力を有するインタフェイス装置の位置セットポイントに翻訳することによって、シミュレーション中の車両オブジェクトの車両固有のパラメータに適合した「仮想ステアリングラック」（ＶＳＲ）をシミュレートするために必要な機能を提供する。
【００２９】
本開示による実施形態の別の態様では、革新的な方法は、インタフェイス装置が必要なセンサデータを提供することができない場合に「仮想トルクセンサ」の機能を提供する。
【００３０】
本開示による実施形態の別の態様では、革新的な方法は、アクチュエータの「位置」及び「力」の両方を同時に制御するのに必要な機能を提供する。
【００３１】
本開示による実施形態の別の態様では、革新的な方法は、マイクロソフト社のDirectInputなどの標準化されたAPIを使用して、閉ループの「位置ベース可変コンプライアンスによるスティフ位置制御」を達成するために必要な機能を提供する。
【００３２】
本開示による実施形態の別の態様では、革新的な方法は、シミュレーション中の車両オブジェクトの車両固有のパラメータに従って入力装置の機械的ダイナミクスを「マッピング」する機能を提供する。
【００３３】
本開示による実施形態は、テンプレート及びプラグインベースのアーキテクチャを使用するカスタマイズ可能なシステムを有利に提供する。 このシステムは、車両固有の運動学的設定のあらかじめ定義されたテンプレートに基づいている。基本設定がユーザの要求に応じて真に没入感のある体験を提供しない場合、ユーザは直感的なソフトウェアインタフェイスを使用して設定を微調整することができ、それにより必要な所望の感触を作り出すことができる。カスタマイズに加えて、システムはさらなる拡張のために設計されている。これは、プラグインアーキテクチャと開発者APIを使用することによって実現され、これにより、さらなる強化、更新、及び機能拡張が可能になります。
【００３４】
本発明の実施形態の特徴及び利点のより良い理解は、本発明の以下の詳細な説明及び本発明の原理が利用される例示的な実施形態を示す添付図面を参照することによって得られる。
【図面の簡単な説明】
【００３５】
【図１】図1は、ホストコンピュータ及びフォースフィードバックインタフェイス装置を含んだフォースフィードバックシステムを示す。
【００３６】
【図２】図2は、従来技術のフォースフィードバックシステムにおける位置制御マッピングのダイアグラムである。
【００３７】
【図３】図3は、従来技術のフォースフィードバック情報フローを示すブロックダイアグラムを示す。
【００３８】
【図４】図４は、ホストコンピュータ及びフォースフィードバックインタフェイス装置を含んだフォースフィードバックシステムの他の実施態様の斜視図を示す。
【００３９】
【図５】図5は、本開示の一実施態様に係る双方向性フォースフィードバックシステムのダイアグラムである。
【００４０】
【図６】図6は、本開示の一実施態様に係るフォースフィードバック制御ループのブロックダイアグラムを示す。
【００４１】
【図７】図7は、本開示の一実施形態に係る車両制御プロセスのブロックダイアグラムを示す。
【００４２】
【図８Ａ】図８Ａは、本開示の一実施形態に係るフォースフィードバックループシステムの概略を示す。
【００４３】
【図８Ｂ】図８Ｂは、本開示の他の実施形態に係るフォースフィードバックループシステムの概略を示す。
【００４４】
【図９】図９は、本開示の一実施形態に係る開始セットポイントを決定することに関するフローチャートを示す。
【００４５】
【図１０】図１０は、本開示の一実施形態に係るフォースフィードバックシステムの概略を示す。
【００４６】
【図１１】図１１は、本開示の一実施形態に係るＶＳＲの入出力に関するフォースフィードバックシステムの一部の概略フローチャートを示す。
【００４７】
【図１２】図１２は、本開示の他の実施形態に係るＶＳＲの入出力に関するフォースフィードバックシステムの一部の概略フローチャートを示す。
【００４８】
【図１３Ａ】図１３Ａは、フォースフィードバックインタフェイス装置を制御するための本開示に係る方法の一実施態様を表すフローダイアグラムを示す。
【００４９】
【図１３Ｂ】図１３Ｂは、フォースフィードバックインタフェイス装置を制御するための本開示に係る方法の第２の実施態様を表すフローダイアグラムを示す。
【００５０】
【図１４】図１４は、フォースフィードバックインタフェイス装置を制御するための本開示に係る方法の第１の実施態様を表すフローダイアグラムを示す。
【００５１】
【図１５】図１５は、本開示の一実施態様に係るアプリケーション及び装置パラメータの調節方法を表すダイアグラムを示す。
【００５２】
【図１６】図１６は、本開示の一実施形態に係る装置起動ルーチンを表すダイアグラムを示す。
【００５３】
【図１７】図１７は、本開示の一実施形態に係る装置設定を表すダイアグラムを示す。
【００５４】
【図１８】図１８は、本開示の実施形態に係るシステム識別及びチューニングを示すダイアグラムを示す。
【００５５】
【図１９Ａ】図１９Ａは、本開示の一実施形態に係るホイール設定を表すダイアグラムを示す。
【００５６】
【図１９Ｂ】図１９Ｂは、本開示の一実施形態に係るペダル設定を表すダイアグラムを示す。
【００５７】
【図１９Ｃ】図１９Ｃは、本開示の一実施形態に係るシフタ設定を表すダイアグラムを示す。
【００５８】
【図１９Ｄ】図１９Ｄは、本開示の一実施形態に係るハンドブレーキ設定を表すダイアグラムを示す。
【００５９】
【図２０Ａ】図２０Ａは、本開示の一実施形態に係る様々なインタフェイス装置設定パラメータを表すダイアグラムを示す。
【図２０Ｂ】図２０Ｂは、本開示の一実施形態に係る様々なインタフェイス装置設定パラメータを表すダイアグラムを示す。
【図２０Ｃ】図２０Ｃは、本開示の一実施形態に係る様々なインタフェイス装置設定パラメータを表すダイアグラムを示す。
【図２０Ｄ】図２０Ｄは、本開示の一実施形態に係る様々なインタフェイス装置設定パラメータを表すダイアグラムを示す。
【図２０Ｅ】図２０Ｅは、本開示の一実施形態に係る様々なインタフェイス装置設定パラメータを表すダイアグラムを示す。
【００６０】
【図２１】図２１は、本開示の一実施形態に係るＶＳＲセットアップを表すダイアグラムを示す。
【００６１】
【図２２】図２２は、本開示の一実施形態に係るＶＳＲの使用のフローチャートを示す。
【００６２】
【図２３】図２３は、本開示の一実施形態に係る仮想トルクセンサインタフェイスを表すフローチャートを示す。
【００６３】
【図２４】図２４は、本開示の一実施形態に係るフォースフィードバックシステムの概略を示す。
【００６４】
【図２５】図２５は、フォースフィードバックインタフェイス装置を制御するための本開示の一実施形態に係るローカルマイクロプロセッサの実装を表すブロックダイアグラムである。
【００６５】
【図２６】図２６は、図２５のホスト通信プロセスを表すフローダイアグラムである。
【００６６】
【図２７】図２７は、図２５のコマンドプロセスを表すフローダイアグラムである。
【００６７】
【図２８】図２８は、図２５のセンサ更新プロセスを表すフローダイアグラムである。
【００６８】
【図２９】図２９は、図２５のレポーティングプロセスを表すフローダイアグラムである。
【００６９】
【図３０】図３０は、図２５のフォースアルゴリズム計算及びアクチュエータ制御プロセスを表すフローダイアグラムである。
【発明を実施するための形態】
【００７０】
本発明の実施形態は、改善されたフォースフィードバックシステムを提供する。本開示による実施形態は、車両固有のパラメータ及びリアルタイムの動的アプリケーション出力に応じて変化する「適応制御」の作成を通じて、車両シミュレーション、ゲーム、及びトレーニングにおいて、フォースフィードバックシステムの現実感、精度及び全体的な「感じ」の改善を提供し得る。これらの改善は、仮想トルクセンシングをアクチュエータ及びユーザがカスタマイズ可能なインタフェイスの独自の方法と組み合わせた革新的な力−位置インタフェイスを通じて、車両固有の運動学を用いて、各装置間のフォースフィードバックの「感じ」の標準化を可能とする、ハードウェア及びソフトウェア技術の新しい組み合わせによって実現される。ホスト制御閉ループフォースフィードバックに必要な忠実度を提供するために、一実施形態は、インタフェイス装置にローカルなプロセッサとホストコンピュータシステムとの間で計算上の負担を有利に分配するが、別の革新的な実施形態は、マイクロソフト社のDirectInputなどの標準化されたAPIを利用するホストコンピュータの必要とされる制御レベルを管理する。これらの進歩的な方法及びスステムの態様がここで記述される。
【００７１】
本開示は、ここで、様々な実施形態の詳細な説明を記載する。これらの実施形態は、フォースフィードバックシステム、フォースフィードバックシステムのためのセットアップ、及びフォースフィードバックシステムの設定に関する方法及び装置を提供する。
【００７２】
以下に記載される方法及び実施形態は、コンピュータ可読媒体上に格納されるか、又はコンピュータ可読媒体を介して転送されるプログラム命令又はコードで実装されていてもよい。このようなコンピュータ可読媒体は、デジタルメモリチップ又は他のメモリデバイスであってもよく、 ハードディスク、フロッピー（登録商標）ディスク、又はテープなどの磁気媒体であってもよく、CD-ROM、DVD、PCMCIAカードなどの他の媒体であってもよい。また、プログラム命令は、チャネル（ネットワーク、無線伝送など）を介して、異なるソースからホストコンピュータ又は装置（適切な場合）に伝送されてもよい。プログラム命令の一部又は全部は、例えば論理ゲートを用いて、ハードウェア中に実装されていてもよい。他の実施形態では、他のコンピュータ、媒体、処理メカニズム、又は伝送方法を使用してもよい。
【００７３】
以下の説明では、本発明の完全な理解を提供するために、多くの詳細が述べられている。当業者であれば、本発明の結果を達成しながら、これらの特定の詳細のバリエーションが可能であることを理解するであろう。周知の要素及び処理ステップは、一般的に、本発明の説明を不必要に不明瞭にすることを避けるために、詳細には説明されない。
【００７４】
この明細書を通して、例示された好ましい実施形態及び実施例は、本発明の限定としてではなく、例示として考慮されるべきである。本明細書で使用される場合、用語「発明」、「装置」、「方法」、「本発明」、「本装置」又は「本方法」は、本明細書に記載された発明の実施形態の任意の1つ及び任意の均等物を指す。 さらに、本明細書を通じて、「発明」、「装置」、「方法」、「本発明」、「本装置」又は「本方法」の様々な特徴を参照することは、クレームされた態様又は方法がこれらの特徴を含まなければならないということを意味しない。
【００７５】
ある要素又は特徴が別の要素又は特徴の「上に」又は「隣接している」と言及されているとき、それは他の要素又は特徴のすぐ上に又は隣接していてもよく、両者の間に介在する要素又は特徴が存在していてもよい。ある要素が他の要素に「接続されている」又は「結合されている」と言及されている場合、それは他の要素に直接的に接続又は結合されていてもよく、両者の間に介在要素が存在していてもよい。 対照的に、ある要素が別の要素に「直接接続されている」又は「直接結合されている」と言及されている場合、介在要素は存在しない。
【００７６】
「外側」、「上」、「下側」、「下に」、「水平」、「垂直」及び類似の用語等の相対的な用語は、本明細書では、ある特徴と別の特徴との関係を記述するために使用することがある。これらの用語は、図面に描かれている向きに加えて異なる向きを包含することが意図されていると理解されるべきである。
【００７７】
第1の要素が2つ以上の他の要素の「間に」「挟まれている」又は「間に挟まれている」と言及されている場合、第1の要素は2つ以上の他の要素の間に直接存在していてもよく、両要素の間に介在要素が存在していてもよい。例えば、第1の層が第2の層と第3の層との「間に」又は「間に挟まれて」いる場合、第1の層は第2及び第3の層の間に介在する要素なしで直接的に存在してもよく、第１の層が１つ又は複数の追加層に隣接しており、これらの追加層の全部が第2及び第3の層の間にあってもよい
【００７８】
第1及び第2などの用語は、本明細書では様々な要素又は部品を説明するために使用されるが、これらの要素又は部品は、これらの用語によって限定されるべきではない。 これらの用語は、ある要素又は部品を別の要素又は部品と区別するためにだけ使用される。したがって、以下に説明する第1の要素又は部品は、本発明の教示から逸脱することなく第2の要素又は部品と呼ぶこともできる。本明細書で使用される場合、用語「及び／又は」は、関連するリスト項目のうちの1つ又は複数の任意の及び全ての組み合わせを含む。
【００７９】
本明細書で使用される用語は、特定の実施形態のみを説明するためのものであり、本発明を限定するものではない。本明細書で使用されるように、単数形「a」、「an」及び「the」は、文脈上他に明白に示されていない限り、複数形も含むことが意図される。本明細書で使用される場合、用語「備える」「具備する」は、記載された特徴、インテジャ、工程、操作、要素、及び／又は部品の存在を特定するが、1つ又は複数の他の特徴、インテジャ、工程、操作、要素、部品、及び／又はこれらのグループの存在又は追加を排除するものではない。
【００８０】
本発明の実施形態は、本発明の実施形態の概略図であるフローチャート及び断面図を参照して本明細書で説明される。ここで、構成要素の配置は異なってもいてもよく、例えば製造技術及び／又は公差の結果としての形状の変形が予期される。さらに、単一の構成要素として示される構成要素は、複数の構成要素を含むことができ、複数の構成要素として示される態様は、単一の構成要素であり得る。本発明の実施形態は、ここで示される領域又は構成要素の配置、部材又は形状に限定されるものではなく、例えば製造又は実際に使用されるハードウェアから生じる形状及び構成要素の偏差を含むものとする。正方形又は長方形として図示又は説明される領域は、典型的には、製造上の公差のために、丸い又は湾曲した形状を有するであろう。したがって、図面に示された領域は本質的に概略的であり、その形状はデバイスの領域の正確な形状を示すことを意図するものではなく、本発明の範囲を限定するものではない。
【００８１】
本開示の実施形態は、ハードウェア及びソフトウェアの両方の構成要素と、これらの構成要素がどのように協働するかを含むことができ、その各々は以下で別々に説明される。ハードウェアに関しては、システムは、図４に示すものと同様のシステムを含むことができる。 図4に示すように、フォースフィードバックシステム40は、フォースフィードバックインタフェイス装置42及びホストコンピュータ48を含むことができる。図示のシステム40は、ビデオゲーム、トレーニングプログラム、若しくはシミュレーション、又は他のアプリケーションに使用することができる。 インタフェイス装置42は、ユーザによって接触されてもよく、1つ以上の運動の自由度で操作されてもよい。 このような操作に応じて、ゲームやシミュレーションに関連する画像が、コンピュータ48の画面41などの表示装置に表示される。 いくつかの実施形態では、コンピュータは表示装置を含むことができる。
【００８２】
コンピュータ48は、例えば、パーソナルコンピュータ、ワークステーション、ビデオゲームコンソール、タブレット、モバイルコンピューティングデバイス、又は任意の他のコンピューティング装置若しくはディスプレイ装置など、シミュレーション又はゲームをホスト又は処理する能力を有する任意のコンピュータであってもよい。 コンピュータシステムは、Windows（登録商標）、OS X、Linux（登録商標）、又は他のオペレーティングシステムなどの最新のオペレーティングシステムの下で動作するパーソナル又はポータブルコンピュータであってもよい。或いは、ホストコンピュータシステム48は、任天堂、マイクロソフト、又はソニーから入手可能なシステムなどの様々な家庭用ビデオゲームシステムのうちの1つであってもよい。或いは、システムは、タブレット、スマートフォン、スマートTV、又は、ゲーム若しくはシミュレーションを処理することができる他のデバイスであってもよい。さらに他の実施形態では、ホストコンピュータシステムがインタフェイス装置42に組み込まれていることもあり得る。
【００８３】
ホストコンピュータ48上で動作するソフトウェアは、様々なものがあり得る。例えば、ホストアプリケーションプログラムは、シミュレーション、ビデオゲーム、バーチャルリアリティトレーニングプログラム、アプリケーション、又はオブジェクト42の入力を利用してオブジェクト42にフォースフィードバックコマンドを出力する他のアプリケーションプログラムであってもよい。例えば、多くのゲームアプリケーションプログラムは、伝統的なフォースフィードバック機能を含んでおり、 マイクロソフト社のDirectXなどの標準的なプロトコル/ドライバ/ APIを用いてフォースフィードバックインタフェイス装置42と通信し得る。ここでは、コンピュータ48は、「グラフィカルオブジェクト」又は「コンピュータオブジェクト」を表示するものとして参照され得る。これらのオブジェクトは、当業者によく知られている通り、物理的オブジェクトではなく、コンピュータ48によるディスプレイスクリーン41上の画像などとして表示され得るデータ及び／又は手順の論理ソフトウェアユニットコレクションである。自動車や航空機などの表示された車両は、グラフィックオブジェクトと見なすことができる。
【００８４】
ディスプレイ装置41は、ホストコンピュータ48に含まれていてもよいし、別体であってもよい。ディスプレイ装置は、インタフェイスデバイス42によって制御されるオブジェクトの物理的表現を表示することができるものであれば何でもよい。ディスプレイ装置は、標準的なディスプレイスクリーン（LCD、CRTなど）、3Dゴーグル、又は任意の他の視覚的出力デバイスであってもよい。典型的には、ホストアプリケーションは、表示装置41に表示されるべき画像、及び／又は、聴覚信号などの他のフィードバックを提供する。 例えば、ディスプレイスクリーン41は、ゲームプログラムからの画像を表示することができる。
【００８５】
図4に示すインタフェイス装置４２は、ホストコンピュータ４８上で動作するアプリケーションへのインタフェイスを提供するために使用される。例えば、ユーザによって接触される装置42は、後により詳細に説明するように、1つ以上の自由度で移動可能なステアリングホイールであってもよい。他のタイプの多数のオブジェクトが本発明の方法及び装置と共に使用され得ることは理解されよう。実際、本発明は、人間／コンピュータインタフェイスを提供することが望ましい任意の機械的オブジェクトと共に使用することができる。このようなオブジェクトには、キーボード、マウス、ジョイスティック、ペダル（1つ又は複数のペダルを具備したペダルセット）、シフタ、ハンドブレーキ、飛行スティックなどが含まれ得る。図には、ステアリングホイールと、インタフェイス４５を介して結合された別体のペダル又はシフティングノブ４６とを示しているが、これらの制御は、図示のように分離されてもよいし、単一の構成要素に組み込まれてもよいし、他のグループに分けられていてもよい。これらの例示的な実施形態では、アナログ、デジタル、有線、無線などの特定の形態に関する何れか又は全ての接続44について特定の制限は意図されていない。
【００８６】
ステアリングホイールのような入力装置の機能は、当該技術分野において周知である。例えば、これらの装置は、一般に、機械的入力及び出力をインタフェイスするための機械的装置を備えたハウジングを含んでいる。機械的装置は、装置に利用可能な自由度を提供し、センサが自由度で動きを感知し、アクチュエータがそれらの自由度で力を提供することを可能にする。機械的装置は、以下により詳細に説明される。 機械的装置は、マイクロプロセッサなどのコンピュータ又は他のコンピューティング装置が、空間内を移動するときにオブジェクトの位置及び／又は向きを確認することができるデータを提供するように適合されている。この情報は、ディスプレイ上の画像を制御又は当該画像に影響を与えるために翻訳される。
【００８７】
システムは、パーソナルコンピュータ、ワークステーション、ビデオゲームコンソール、又は他のコンピューティング若しくはディスプレイ装置などのコンピュータを含むことができる。コンピュータシステムは、一般に、マイクロプロセッサ、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、入出力（I / O）電子装置、クロック、ディスプレイ装置、及び音声出力装置を含んでいる。マイクロプロセッサは、インテル、AMD、又は他の製造業者から市販されている様々なマイクロプロセッサを含むことができ、シングルチップ、マルチチップ、コプロセッサなどとすることができる。マイクロプロセッサは、当業者によく知られているように、好ましくは、RAM及びROMから、指示及び他の必要なデータを取得し保存することができる。コンピュータシステムは、センサデータ又はセンサ信号を受信することもできる。 そのようなデータは、I / Oデバイス又は他の場所から到着し得る。この情報は、デバイスのセンサ及び他の情報から無線で又はバスを介して受信することができる。
【００８８】
クロックは、コンピュータにより使用される標準的なクロッククリスタル又は同等の部材を含んでいてもよい。これは、マイクロプロセッサ及びコンピュータシステムの他の部材によって使用される電気信号へのタイミングを提供すると共に、位置／コンプライアンス値を決定するのに必要となり得るタイミング情報を提供するのに使用され得る。
【００８９】
センサインタフェイスは、センサ信号を、マイクロプロセッサ及び／又はコンピュータシステムによって解釈され得る信号に変換するために、電子インタフェイスに任意に含まれていてもよい。例えば、センサインタフェイスは、エンコーダなどのデジタルセンサ又はアナログ／デジタルコンバータ（ADC）を使用するアナログセンサからの信号を受信して変換することができる。或いは、マイクロプロセッサがこれらのインタフェイス機能を実行することができ、又は、センサからのセンサ信号がコンピュータシステムに直接供給されてもよい。アクチュエータインタフェイスは、装置のアクチュエータとマイクロプロセッサとの間に任意に接続して、マイクロプロセッサからの信号をアクチュエータの駆動に適した信号に変換することができる。インタフェイスは、電力増幅器、スイッチ、デジタル−アナログコントローラ（DAC）、及び当業者に周知の他のコンポーネントを含むことができる。或いは、マイクロプロセッサがこれらのアクチュエータインタフェイス機能を実行することができる。
【００９０】
インタフェイス装置は、センサ、アクチュエータ、及び他の機構を含むことができる。センサは、1つ又は複数の自由度に沿って、装置の位置、動き及び／又は他の特性を感知し、それらの特性を表す情報を含む信号をマイクロプロセッサに提供する。典型的には、オブジェクトを移動させることができる各自由度ごとにセンサが設けられているか、又は、単一の複合センサが複数の自由度のために使用される。本明細書に記載の実施形態に適したセンサの例は、デジタル回転光学式エンコーダであり、これは、回転軸周りの物オブジェクトの位置の変化を感知し、その位置の変化を示すデジタル信号を提供する。線形光学エンコーダは、同様に、線形自由度に沿った物体の位置の変化を感知することができる。或いは、ポテンショメータなどのアナログセンサを使用することもできえる。オブジェクトからの磁場を検出するための磁気センサやエミッタ／検出器の対を有するラテラル効果フォトダイオードなどの、装置に対して異なる位置にある非接触センサを使用することも可能である。さらに、速度センサ（例えば、タコメータ）及び／又は加速度センサ（例えば、加速度計）を使用することもできる。さらに、相対センサ又は絶対センサのいずれかを使用することもできる。
【００９１】
アクチュエータは、マイクロプロセッサ及び／又はコンピュータによる出力信号に応答して、1つ又は複数の自由度に沿って1つ又は複数の方向でオブジェクトに力を伝達する。即ち、それらは「コンピュータ制御」される。典型的には、力が伝達されることが望まれる自由度の各々について、ひとつのアクチュエータが設けられる。アクチュエータには、アクティブアクチュエータ、パッシブアクチュエータ、ハイブリッドアクチュエータの3種類が含まれ得る。アクティブアクチュエータには、線形電流制御モータ、ステッパモータ、空気／油圧アクティブアクチュエータ、トルカ（制限された角度範囲を有するモータ）、ボイスコイルアクチュエータ、及びオブジェクトに力を伝達する他のタイプのアクチュエータが含まれる。パッシブアクチュエータには、磁性粒子ブレーキ、摩擦ブレーキ、又は空気／油圧パッシブアクチュエータなどのアクチュエータが含まれ、ある動きの自由度における減衰抵抗又は摩擦を生成することができる。ハイブリッドアクチュエータには、アクティブアクチュエータとパッシブアクチュエータの両方の属性が含まれる。いくつかの実施形態では、センサ及びアクチュエータの全て又は一部を、センサ／アクチュエータ対トランスデューサとして一緒に含めることができる。アクチュエータインタフェイスは、マイクロプロセッサからの信号をアクチュエータの駆動に適した信号に変換するために、アクチュエータとマイクロプロセッサとの間に任意に接続することができる。必要に応じて、アクチュエータ用のパルス幅変調（PWM）コントローラ、エンコーダ処理回路など、センサインタフェイス及び／又はアクチュエータインタフェイスの機能の一部又は全部をマイクロプロセッサに組み込むことができる。コマンド値は、アナログ信号、PWM信号、又はアクチュエータに入力される他の信号として実装されてもよい。
【００９２】
インタフェイス装置は、ステアリングホイール、ジョイスティック、ペダル、又は他の装置若しくは物品であってもよい。 他の入力装置は、インタフェイスシステムに任意に含まれ、マイクロプロセッサ及び／又はコンピュータに入力信号を送ることができる。そのような入力装置は、ジョイスティックハンドル上のボタンなどのボタンを含んでいてもよく、ユーザからの入力をゲーム、シミュレーション、GUIなどに補うために使用され得る。また、ダイヤル、スイッチ、音声認識ハードウェア、又は他の入力メカニズムを使用することもできる。
【００９３】
車両固有のアーキテクチャの簡単な概要がここに記載される。自動車のステアリングシステム設計に関しては、実際の自動車やシミュレータの運転のために、コヒーレントな触覚的フィードバックが不可欠である。多くのフォースフィードバック戦略が研究されているが、研究から出てくる最も重要な事実は、「ゼロトルク」システムが運転をほとんど不可能にするということである。使用者が感じるステアリングホイールの力は、タイヤに加えられる路面接触力と、ステアリングシステムの運動学的な配置の結果である。ユーザの快適性を高めるために、パワーステアリングシステムがシステムに付加的に追加され、ユーザに必要な労力が軽減されている。 しかしながら、手動又は電動アシストのいずれであっても、ステアリングシステムは、車両の瞬時ダイナミクスに関する関連情報を伝える必要がある。この情報は、スピードと軌道に関連し、ステアリングタスクを実行するための視覚情報及び聴覚情報を強化するために使用される。
【００９４】
車両と運転者とによって形成される閉ループ制御システムは動的に機能する。 運転者は、ステアリングホイール及びペダルなどの制御入力と、ダッシュボードの読み取りやシフトライトなどの視覚的入力を介して、車両とインタフェイスする。コントローラとしての運転者は、車両をコントロールする能力に限界がある。その結果、車両ドライバシステムの出力挙動は、車両の特性に依存する。それゆえ、その車両の特性が、車両ドライバシステムの道路ホールディング挙動が外乱に対して安定したままであるかどうかを決定する際に主要な役割を果たす。
【００９５】
したがって、運転者の主な目的は、車両の方向「制御」を提供すると同時に「安定性」を維持することである。古典的な意味では、制御は、開ループ又は閉ループの2つの主要なタイプの何れかであり得る。開ループ（図3）は、例えば、ステアリングホイールを用いて車両に初期方向を与え、車両が意図された方向を維持すると仮定して「ハンズオフ」で運転することである。車両は運転者が提供する入力にのみ反応し、外部からのフィードバックは提供しない。
【００９６】
対照的に、閉ループシステム（図6）は、運転者が車両から得るフィードバック又は感覚に従って連続的な制御補正を行うことを可能にし、車両からの力がユーザによって感じられ、ユーザ制御に影響を及ぼす。最初の入力後、車両は何らかの応答をするが、運転者が要求するものと正確に一致する可能性は低いので、いくつかの是正措置が必要である。訂正入力は、感覚的手がかりと「感じ」からなる運転者の「内部モデル」に基づくであろう。この「感じ」は多くのレベルで存在し、いくつかの側面は純粋に主観的であるが、他の側面は車両のダイナミクスデータに基づいて数値を割り当てることができる科学的基盤を有する。
【００９７】
ユーザの感覚入力は、視覚的、触覚的、及び慣性的情報を供給する。訓練と練習を通して、ユーザは、ハンドリングとパフォーマンスの面で、彼らの車両のダイナミックな挙動の「内部モデル」又は「感じ」を獲得する。これにより、ユーザは、ステアリングホイールの動作に応じて、将来のコースを予測して計画することができる。この「感じ」の学習は、視覚情報のみからでも可能であるが、関連する触覚的フィードバック、即ちステアリングフィードバック又は「エフォート」が存在することによって向上することが研究により示されている。ステアリングエフォートは、ユーザに車両の安定性及び方向制御に関する情報を与える重要なフォードバック機構である。
【００９８】
自動車レースは、レースカー及び運転者から最大限の性能を引き出すことに捧げられている。したがって、各要素においてパフォーマンスを向上させることが極めて重要である。レースカー／運転者インタフェイスは、スピードの向上とラップタイムの短縮に影響を及ぼすために、レースカーの性能改善を制御し活用することができなければならない。したがって、「最適なステアリングフィードバック」は、運転者がレースカーから最大の性能を引き出すために必要である。
【００９９】
車両とステアリングホイールとの間のリンクは、閉ループで動作する機械的に接続されたシステムからなる。ステアリングホイールは、車両の方向の変化を与えるように設計された車両ステアリング「システム」の一部である。 車両ステアリングシステムは、ステアリングホイール、ステアリングコラム、1つ又は複数のユニバーサルジョイント、ラックーアンドーピニオン、及び前輪に接続されたステアリングタイロッドから構成される。
【０１００】
運転者が回転「力」を加えることによりステアリングホイールが回転されると、ステアリングホイールは、その力を「ステアリング比」によって支配されるその軸線周りのステアリングホイール変位に変換する。ステアリング比は、ステアリングホイールで回された角度の数と、前輪がその軸の周りで偏向される角度の数との比である。しかし、最も重要なことは、ステアリング比は、前輪をその軸の周りに偏向させるためにステアリングホイールに必要な「力」を指示する機械的な利点であることである。したがって、リアルタイムのシステムダイナミクスに従ってステアリングホイールに加えられる力は、前輪の変位量を決定する。また、車両とステアリングホイールとの間のリンクが閉ループで動作する機械的に接続されたシステムで構成されていることを考慮すると、ステアリングホイールを回転させる「原因」と「結果」とは逆も等しく真である。したがって、前輪に作用してステアリング軸の周りに撓ませる「力」は、ステアリングシステムのダイナミクスを介して、ステアリングホイールの回転「位置」及び「力」の対応する変化に翻訳される。ステアリングシステムにおけるこの双方向的な「位置及び力」の変換は、運動学的方程式及び車両固有パラメータによって支配され、したがって、全ての車両にわたって一定ではない。
【０１０１】
これらの方程式は、ステアリング比、ステアリングコラムのスティフネス、減衰、慣性、ラックのスティフネス、及びステアリングコラムをフレキシブル要素としてモデル化するような変数を含む。これらの方程式は、当業者には周知であり、ステアリングシステムダイナミクスのための堅固な数学モデルを構築するための基礎を提供する。
【０１０２】
現実に合致させるために、車両ステアリングホイールインタフェイス及び車両制御プロセスと整合する制御ループは、図５及び図６に類似したものとなるであろう。図２に関連して上述したシステムとは対照的に、本開示によるシステムは、ジョイスティック又はステアリングホイールなどのインタフェイス装置の変位によるゲーム内のオブジェクトの変位、及び、ゲーム内のオブジェクトの変位によるインタフェイス装置の変位の双方を可能とする。
【０１０３】
従来技術のシステムは、開ループシステムで動作する。つまり、インタフェイス装置からの入力はゲーム内オブジェクトに影響するが、ゲーム内オブジェクト及びインタラクションはインタフェイスに影響を与えない。予め準備された出力及び効果が提供される場合はあるが、これらは単なる効果であり、真のフォースフィードバックを提供するものではない。本開示によるシステムは、ゲーム入力の外部（インタフェイス入力）とゲーム内のイベント及びオブジェクトの両方が互いに影響を及ぼすような閉ループシステムを提供する。図5は、インタフェイス装置502とゲーム内車両タイヤ504との間の例示的な関係500を示す。ここで、装置502の変位506は、タイヤ508の変位を引き起こしている。従来技術とは対照的に、この通信510は双方向的である。シミュレーション又はゲームにおけるイベントは、タイヤ508の変位を引き起こし、したがって、ゲーム中の力のために装置502が移動され、真のフォースフィードバックがもたらされ、単に効果によって変位されるのではなく、フォースフィードバックとしてデバイス502に伝達される。例えば、インタフェイス装置のフォースフィードバックがシミュレーション中で無効にされても、車輪は、ゲーム内又はシミュレーション中のイベントに応答して移動する。真のフォースフィードバックが車輪に供給され、車両の現実的な制御が提供されるため、フォースフィードバックがオンであるか否かにかかわらず、シミュレーション中のイベント又は条件に応答するタイヤの動きが使用される。
【０１０４】
本発明の1つの達成は、真のフォースフィードバックを提供する閉ループシステムを提供することである。この閉ループシステムは、可変コンプライアンスを維持しながらスティフ位置制御をインタフェイス装置に供給する制御機構をもたらす。スティフであるか又は可変コンプライアンスを有しない（特定の位置に移動し、外力にもかかわらずその位置に留まる）装置とは対照的に、本発明による制御システムは、適用された外力に依存して予期した位置からのずれを可能とする可変コンプライアンスを有している。例えば、スプリング機構を模倣することにより、位置制御された適応可能なスプリングが作成される。具体的には、車両及びステアリングホイールのようなインタフェイス装置に関するシミュレーションの例では、車両のタイヤをある量だけ運動学的に動かすタイヤに働く外力は、ステアリングホイールをあるセットポイントまで動かすであろう。しかしながら、そのセットポイントにおけるステアリングホイールのスティフネス、及び、ステアリングホイールをそのセットポイントから動かすために必要な力は、表面の種類（即ち、砂／砂利、舗道、雪など）や車速等の情報、及び、インタフェイス装置、この場合はステアリングホイールに既に加えられている反力などの多数の変数に依存して大きく変化し得る。ほとんどのフォースフィードバックシステムは、抵抗力のある方法でユーザの相互作用に逆らって動くように設計されたスティフ電気駆動によってアクチュエートされる。しばしば、これらの駆動は、「ストール」の定常状態の近くで又は定常状態で動作し、それにより、時間の経過とともにメカニズムに熱及び損傷を誘発する。アクチュエーションにおけるコンプライアンスは、仮想バネの平衡点を変化させて、損傷が発生するのを防ぐことができる。アクチュエータのコンプライアンスを変える1つの方法は、スティフアクチュエータのソフトウェア制御によるものである。外力又はトルクの測定に基づいて、コントローラによって一定の偏差が計算され、スティフアクチュエータによってセットされる。このタイプのコンプライアントアクチュエータは、動作中のコンプライアンスの調整を可能にする高周波制御ループを有するアクチュエータ、センサ、及びコントローラを必要とする。したがって、これは、可変／アクティブコンプライアンスである。
【０１０５】
本開示の閉ループシステムの一例が図６に示されている。このループは、ホストコンピュータ又はアプリケーション602とインタフェイス装置604との間にある。図示のように、インタフェイス装置604は、力、圧力及び位置データ606をアプリケーション602に送信する。このデータ606は、シミュレーション内の車両又はタイヤに移動を指示し、場合によっては、どの程度の移動力で移動するかを指示する。次に、アプリケーションは、位置及びおよびコンプライアンスセットポイント情報を含むコマンド608を、インタフェイス装置604に送り返す。これは、実際のシミュレーションにおける相互作用が車両又はインタフェイス装置の動きに影響を及ぼすので、より現実的な相互作用ループである。インタフェイス装置とシミュレーション中のオブジェクト位置情報の両者の組み合わせは、インタフェイス装置だけでなく、ゲーム内又はシミュレーション中のオブジェクト位置を決定するためにも使用される。ゲーム内のオブジェクトの位置とインタフェイスデバイスの位置との間に完全な双方向ループが作成される。より具体的には、図6では、フォースフィードバック制御ループは、（1）そのセットポイントに対応するコンプライアンス／スティフネスを有するセットポイントをインタフェイス装置に送信するホストコンピュータアプリケーション、（2）「仮に」ユーザによって入力された場合に力（トルク）データを返送することによって応答するインタフェイス装置を含んでいる。この制御ループは、次に車両制御プロセスに整合される。車両制御プロセスは、（1）車両が前輪位置に基づいて運転者にステアリングホイールを「提示する」こと、（2）運転者がステアリングホイールに力（トルク）を加えて車両の方向変更を行うことであって、 （3）ステアリングシステム及び車両ダイナミクスがトルクの合計に基づいて前輪の新しい位置を決定すること、そして（4）ステアリングホイールの位置、力（トルク）、慣性、及び摩擦の変化を決定するステアリングシステムの運動学をもたらすことを含んでいる。その後、新しいステアリングホイールの位置及びコンプライアンスが運転者に「提示」されるフィードバックがループによりなされ、プロセスが再び開始される。
【０１０６】
本開示の真のフォースフィードバックループは、図７に示されるように、車両における実際のフィードバックループに類似している。この制御ループは、車両制御プロセスに合わせて調整される。車両制御プロセスは、（1）車両が前輪位置に基づいて運転者にステアリングホイールを「提示する」こと、（2）運転者がステアリングホイールに力（トルク）を加えて車両の方向変更を行うことであって、 （3）ステアリングシステム及び車両ダイナミクスがトルクの合計に基づいて前輪の新しい位置を決定すること、そして（4）ステアリングホイールの位置、力（トルク）、慣性、及び摩擦の変化を決定するステアリングシステムの運動学をもたらすことを含んでいる。その後、新しいステアリングホイールの位置及びコンプライアンスが運転者に「提示」されるフィードバックがループによりなされ、プロセスが再び開始される。
【０１０７】
図8Aは、真のフォースフィードバックループを利用するシステム800がどのように機能するかの例示的なフローチャートである。第1のステップ802では、システムの開始セットポイントが決定される。 次に、システムは、車両シミュレーション及びインタフェイス装置804の両方の変化を検出する。最後に、ステップ804で検出された変化を組み合わせて、車両運動に適用する。 ステップ804及び806は、シミュレーションが終了するまで繰り返される。
【０１０８】
図8Bは、類似しているが別の実施形態を示す。この実施形態では、システム801のステップ802及び804は、図8Ａのステップ802及び804と同じである。しかしながら、第3のステップ807がわずかに異なる。変化を検出した後、システムはこれらの変更を車両運動に影響するように適用するとともに、この情報を使用してシステムの新しいセットポイントを決定する。 セットポイントは、システムのノルム、ゼロ点、又は休止点とみなすことができる。
【０１０９】
図9は、図8Ａ及び図８Ｂのセットポイント決定ステップ802内で行われ得るステップのより詳細な図900を示す。はじめに、システムは、システム９０２と共に使用されているハードウェアを検出又は分析してもよい。例えば、これは、システムにどのような周辺装置が接続されているかを検出すること、これら周辺装置の各々の能力を具体的に検出すること、及びこれらの周辺装置を所望の使用目的のために較正することを含むことができる。次に、システムは、シミュレーション内で使用される車両パラメータ904を検出又は分析することができる。これには、車両物理エンジン関連特性、ステアリングラックに関連するより具体的な特性、ステアリング比、及び他の事項を検出することが含まれ得る。 続いて、システムは、検出及び分析された情報に基づいてセットポイント906を構成する。
【０１１０】
図10は、真のフォースフィードバックループを利用するシステム1000がどのように機能するかを表すフローチャートを示す。第1のステップ1002において、システムはパワーアップしなければならない。これは、システムの電源投入、又は単に特定のシミュレーションアプリやゲームを実行するための命令であってもよい。次に、システムは、セットアップモード1004と考えられ得るものに入る。
【０１１１】
セットアップモード1004内で、システムは、実行されているシミュレーションがシステムに固有のものであるか、又は、第三者シミュレーションであるかどうかを検出1006しなければならない。ここでの区別は、第三者シミュレーションは、真のフォースフィードバックループをネイティブには使用できず、単に効果だけを提供する伝統的なフォースフィードバックシステムを使用するように元々作成されているかもしれないことである。もしこれがネイティブシミュレーションである場合、システムはステップ1008に進む。そうでない場合、システムは、インタフェイスアプリケーションを初期化及び実行してシステムと第三者シミュレーションとの間をインタフェイス又は仲介1007する。システムは、その後にステップ1008に進む。ステップ1008において、システムは、シミュレーションで使用される車両及びこの車両に関連付けられた関連変数を検出する。次に、ステップ1010において、システムは、車両及び車両制御の操作及びインタラクションに影響するであろう検出された車両変数をロード及び構成する。シミュレーション検出及び車両検出が完了した後、システムは、インタフェイス装置の検出を含むステップ1012に進む。この検出ステップに続いて、システムは、インタフェイス装置1014をシステムと共に動作するように構成する。これらのステップは、装置がどのようなタイプのセンサ（力又はトルクセンサなど）を含んでいるかを読み取ったり、装置の異なった構成を検出したり、前ステップに基づいて装置及びシステムのセットポイントを設定したりすることを含んでいてもよい。さらに、これらのステップは、インタフェイス装置がシステムに固有のものであるか第三者の装置であるかに基づいて異なる可能性があり、能力やセンサの種類が調査され間に合わせで実行される必要があり得る。この時点で、セットアップ1004のステップが完了し、システムはシミュレーションの実行に進む。
【０１１２】
セットアップに続いて、システムは、インタフェイス装置からのセンサデータ及びシミュレーションデータを処理し始め、ステップ1016で出力する。次いで、１つ又は複数の装置及びシミュレーションの両方からのデータが組み合わされて、ステップ1018において、１つ又は複数の装置及びシミュレーションの双方を制御する。ステップ1016及び1018は、シミュレーションが完了するまで、連続的にループする。
【０１１３】
図11は、現在のアプリケーションの一実施形態によるシステムのコンポーネントを示す例示的なチャートである。 システム1100は、インタフェイス装置（1108,1110,1112）及びシミュレーション（1104、1106）の入出力を受け取るＶＳＲ1102を含んでいる。前述したように、本開示によるシステムは、関連するインタフェイス装置1108,1110又は第三者デバイス1112と共に使用することができる。また、システムは、ネイティブシミュレーション（ＶＳＲ1102を含んだソフトウェアの一部であってもよい）と共に使用されてもよく、部分1104及び1106に示すような追加のコンポーネントを必要としうる第三者シミュレーションと共に使用されてもよい。この図の簡略化されたバージョンが図12に含まれている。 図12には、サードパーティではなくネイティブシミュレーションを使用する同じシステムが示されている。
【０１１４】
図示されているように、VSRを含む制御アプリケーションは、ネイティブインタフェイス装置1108,1100及び第三者ホイール又は装置1112の双方由来のセンサデータからネイティブに又は解釈されて、圧力、位置、及びトルクのデータを受容する。制御アプリ及びVSRはまた、上記の真のフォースフィードバックループに従ってユーザにフィードバックを提供するために、インタフェイス装置に位置及びコンプライアンス／スティフネスのデータを出力する。
【０１１５】
ネイティブシミュレーションが使用される実施形態では、シミュレーションデータ及びフィードバックは、VSRを含むアプリケーション内で処理及び管理される。 第三者シミュレーションが使用される他の実施形態では、システムは、第三者シミュレーションと協力するためにオーバーレイ又はインタフェイスアプリケーションを利用することができる。これは、車両選択情報1106を傍受するための構成要素を含むことができる。これは、シミュレーションデータ、API、及びジョイスティック位置情報1104を傍受又は解釈するための構成要素を含むこともできる。データは、メモリマップファイル又は他の場所に保存することができる。
【０１１６】
図11及び12に示すシステムを実行するために、様々な通信及び処理方法を使用することができる。例えば、システムとインタフェイス装置との間でUSB接続方法を使用することができる。 しかしながら、ブルートゥース（登録商標）又は他の有線及び無線接続などの他の任意のタイプの通信チャネルが使用されてもよいことに留意すべきである。 さらに、システムデータ及びコメントの処理は、コンピュータなどのメインシステム上にあるプロセッサによって実行されてもよい。 しかし、他の実施形態では、この処理の一部は、インタフェイス装置又は独立したプロセッサ上で行うこともできる。
【０１１７】
図13A及び図13Bは、本開示によるフォースフィードバックシステム及びインタフェイス装置を制御するための方法1300の実施形態を示すフロー図である。フォースフィードバックシステムは、シミュレーションのためのシステム自身のソフトウェアを使用して実行されてもよく、第三者ソフトウェアを使用して実行されてもよい。さらに、システムは、システム自身のインタフェイス装置及びマイクロプロセッサ上で実行されてもよく、第三者の装置及び／又はマイクロプロセッサ上で実行されてもよい。方法1300は、ホストコンピュータシステム1302が、インタフェイス装置互換通信経路上で、可変コンプライアンス（又は真のフォースフィードバック）を用いた閉ループスティフ位置制御を維持する、「ホスト制御」の実施形態に向けられている。いくつかの実施形態では、装置は、標準化されたUSB「HID / PID」デバイスプロトコル、又は、MicrosoftのDirectXTMのコンポーネントであるDirectInputなどのAPIを使用して、装置のマイクロプロセッサに直接低レベルコマンドを提供することによって制御することができる。他の通信方法及び処理レベルが使用されてもよいことも理解されるべきである。
【０１１８】
ユニバーサルシリアルバス（USB）規格を使用する実施形態では、ベンダ固有のドライバは、ほとんどの装置において必ずしも要求されない。USBは、このクラスに属する装置の動作を定義するいくつかの「デバイスクラス」を定義している。入力装置を扱う際の主要なクラスは 「HID」（Human Input Device）である。例えば、HIDデバイスは、マウス、キーボード、ゲームコントローラである。しかしながら、HIDデバイスは、フォースフィードバックを実装するようには設計されていない。したがって、「PID」（Physical Interaction Devices）クラスの形式でHIDクラスの拡張が作成され、フォースフィードバック装置の機能と標準が定義された。PIDクラスの装置には、入出力の用途を示す「ディスクリプタ」がある。「用途」は、装置のある側面を説明する情報を示すHID仕様由来の用語である。 PIDの用途は、出力機能によってＨＩＤ用途を拡張し、インタフェイスオブジェクト上にどのような力又は「効果」を与え得るかを装置がホストに知らせることを可能とする。
【０１１９】
これらの「効果」をWindowsベースの環境に与えるために、DirectXのDirectInput APIがPIDを制御するための標準となっている。 DirectInputは各々が特定のパラメータを有する「効果」のセットを定義する。ハードウェアベンダは、現在定義されている標準のDirectXエフェクトを追加することができるため、開発者は、フォースフィードバックの分野で、より特有のデバイス機能を利用することができる。このアプローチは非常に柔軟であるが、開発者は、アプリケーションをある特定のデバイスだけに制限せず、可能な限り多く使うようにしたいので、ほとんど使用されない。DirectInputで定義された標準的なエフェクトは、いくつかのニーズを満たすのに十分強力であるため、ベンダ定義の効果を使用することはほとんどない。現在定義されている「標準DirectInputフォース」とそのパラメータは、以下で説明する通りであり、２つのグループに分けられる：即ち、出力のみのものと、フィードバックループ内の効果の２つである。標準DirectInputフォースは以下の通りである。Constant Force：これは最も簡単な力のタイプである。それは、方向及び大きさを有する力ベクトルを表し、場合によっては時間の経過とともに力を変調するエンベロープを有する。エンベロープ効果については後述する。コンスタントフォース効果は、出力のみの効果である。Ramp Force：ランプ力は、2番目に単純な力の種類です。ランプ力は、可変の一定の力として定義される。一定の大きさを有する代わりに、開始及び終了時の大きさを有し、効果の再生時間の間、これら2つの端の間で線形スイープを実行する。コンスタントフォースの場合と同様に、それは、方向を有し、任意にエンベロープを有する。ランプ力効果は出力のみの効果である。 Periodic：DirectInputは、全てが周期効果タイプのグループに属する多数の非常に類似した効果を定義している。これらの力は、異なった周期波形を表す。それらのすべては同一のパラメータを有する：周波数、位相、方向、大きさ、そして任意にエンベロープ。使用可能な波形は、方形波、正弦波、三角波、のこぎり状のアップウェーブ、のこぎり状のダウンウェーブである。周期的効果は、出力のみの効果である。Custom Force：Periodicと類似して、カスタムフォースは、周期的な波形である。通常の周期効果とは対照的に、カスタムフォースは、所定の波形を有しない。むしろ、アプリケーションは、波形がどのような形であるかを、カーブ上の全ての関連点を特定することにより、サウンドサンプルのような形で、定義する。カスタムフォースは、周期的パラメータと同じパラメータを持つ。カスタムフォース効果は、出力のみの効果である。Spring：スプリング力は、定義された中心点からのたわみに応じて直線的に変化する力を適用する。Damper：ダンパーは、バネのようなものである。違いは、中心からの偏向（距離）ではなく、基準点からの速度の差に作用するということである。Inertia：ここでも、慣性は、ダンパーやバネに非常に似ているが、コントローラの加速にのみ作用する。Friction：フリクションは、ジョイスティックを動かすとすぐに力が得られる効果である。
【０１２０】
DirectXは、ハードウェア特有のパラメータを明示的に考慮する必要なしに、ゲーム開発者が直接的且つ少ないオーバヘッドで既存のハードウェアと通信することを可能にするように設計され、目標とされている。それは、ハードウェアの最小限の抽象化として見ることができる。ゲーム／シミュレーション（アプリケーションプログラム）とハードウェアの間には、特定のハードウェアの抽象化を実現するデバイスドライバがある。
【０１２１】
図13A及び図13Bは、真のフォースフィードバックシステム及び関連するインタフェイス装置を制御する方法1300を示す、簡略化された、より詳細なフローチャートを示す。システムは、電源を投入する最初のステップ1301から始まる。電源が投入されると、処理及び制御が、2つの理論的な分岐である、ホストアプリケーション／シミュレーション1302とインタフェイス装置1304とに分割されることが分かる。ホストアプリケーションがインタフェイス装置にネイティブである構成では、これらの分岐を組み合わせることができる。ホストアプリケーション1302は、シミュレーション自体を含んでいてもよく、部分1306に付加的に示されているように、外部シミュレーションとインタフェイスしていてもよい。それにかかわらず、この方法は、同時に、車両パラメータ1308を検出又は分析し、インタフェイス装置1310を同定及び構成し、デバイスインタフェイス1312を通じてデータを処理した後にインタフェイス装置制御計算1314を行うことにより継続する。これらのステップの出力は、その後に、インタフェイス装置1304と協働するホストアプリケーション1302に送り返される。インタフェイス装置1304は、インタフェイス装置センサ1316を処理し、センサ処理及びホストアプリケーション1302からの出力に基づいて、インタフェイス装置のモータ及びアクチュエータに信号及び指示を送ることにより、インタフェイス装置1318を物理的に制御する。
【０１２２】
図1３Ｂの各コンポーネント内に、さらなる詳細が示されている。これは方法1300に描かれており、プロセスは、ステップ1301で開始する。ステップ1301において、ホストアプリケーション1302及びインタフェイス装置1304は、例えばユーザが電源スイッチを起動することによって、電源が投入される。ステップ1301の後、プロセスは2つの並列プロセスに分岐する。1つのプロセスは、ホストコンピュータシステム又はアプリケーション1302上に実装され、他のプロセスは、インタフェイス装置1304に関連付けられたローカルマイクロプロセッサ上で実装される。
【０１２３】
ホストアプリケーション1302のプロセスでは、アプリケーションプログラムが処理される。このアプリケーションは、シミュレーション、ビデオゲーム、トレーニングプログラム、又は他のプログラムであり得る。画像は出力表示画面上にユーザ用に表示することができ、オーディオフィードバックなどの他のフィードバックを提示することができる。このステップでは、第三者のシミュレーションが使用されているか、ネイティブシミュレーションが使用されているかを判断することもできる。第三者シミュレーションが利用されている場合、付加的なステップ1306が処理される。
【０１２４】
インタフェイス装置に戻って参照すると、2つのブランチは、同時に実行されている2つのプロセスがある（マルチタスキング）ことを示すために、インタフェイス装置1304を出る。1つのプロセスでは、ステップ1316が実行され、センサデータが受信され、処理され、ホストに送信される。ローカルプロセッサは、センサからの信号を継続的に受信し、生データを処理し、処理されたセンサデータをホストに送信することができる。本明細書で言及する「センサデータ」は、1つ又は複数の自由度で1つ又は複数のインタフェイス装置の動きを検出する、センサから得られる位置、速度、及び／又は加速度の値を含むことができる。さらに、インタフェイス装置のボタンがユーザによって起動されたことを示す信号など、他の入力装置から受信した他の任意のデータも、ステップ1316でセンサデータとしてホストによって受信されることができる。最後に、「センサデータ」という用語は、1つ又は複数の自由度でインタフェイス装置オブジェクトに適用される速度又はトルクを計算するために以前に記録され格納された位置の値などの値の履歴も含むことができる。もちろん、ホストは、センサデータをホストアプリケーションの入力として使用して、それに応じてホストアプリケーションの更新も行う。インタフェイス装置は、ステップ1314から分岐してステップ1318で開始するプロセスを、上述のホストコンピュータプロセスと並列に実装する。より詳細には、ステップ1316は、プロセッサが生データ（センサ読み取り値）をセンサから読み取ることによって実現される。このような生データは、好ましくは、所定の自由度に沿ったユーザオブジェクトの位置を記述する位置値を含む。センサは、最後に読み取った位置からの位置の変化を表す位置値を提供する相対センサである。プロセッサは、指定された基準位置から相対位置を測定することによって絶対位置を決定することができる。別の実施形態では、センサは、インタフェイス装置の速度及び加速度の生の値を提供するための速度センサ及び加速度計を含むことができる。ステップ1316で読み取られた生データは、アクティベートされたボタンや他のインタフェイス装置の制御からの他の入力を含んでいてもよい。
【０１２５】
センサデータがステップ1316で読み取られた後、プロセスはステップ1318に続き、並行プロセスのステップ１３１４から来るセンサデータや新たな位置／コンプライアンス情報が、インタフェイス装置の「位置及びコンプライアンス」を管理する「低レベル」HID/PIDインタフェイス装置制御ループを更新する。ステップ1314が完了すると、ステップ1314は、DirectInput APIのConstantForceコマンドをインタフェイス装置のマイクロプロセッサに出力する。このConstantForceコマンドは、典型的には、上述のパラメータに従って決定された方向および大きさの値を含んでいる。DirectXが利用されない他の実施形態では、他の変数及び方法を使用して、力、位置、及びコンプライアンス変数を渡すことができる。プロセスはその後、1302と通信するステップ1304に戻り、ホストは、ユーザによる装置の操作や他の任意のユーザ入力の受け取りに応じてアプリケーションプログラムを更新すると共に、位置及びコンプライアンスの値が変更され並行プロセスにおいて適用される必要があるかどうかを決定する。これらのステップは、ローカルプロセッサからデータを読み取りインタフェイス装置の位置及びコンプライアンス値を更新する連続的なループによって実装される。
【０１２６】
ホスト1302から発するステップは、インタフェイス装置を操作するユーザにフォースフィードバックを与えるための位置／コンプライアンスコマンドを決定するホストコンピュータ又はアプリケーションのプロセスに関する。第三者シミュレーションが使用されている場合、方法は次にステップ1306に進み、別個のアプリ／サブルーチンがホスト又は第三者シミュレーションから生データを読み取り、それをシェア可能なメモリマップファイル（MMF）データ構造に保存する。このデータ構造は、データへのシームレスで迅速なアクセスを提供する。また、シミュレーションアプリケーションの機能ではない、データの格納も可能とする。このプロセスは、ホストアプリケーションの遅れを引き起こすことなしに、ホストアプリケーションの下流の他のアプリケーションにデータを「サーブ」する能力を提供する。これは、ホストアプリケーションのパフォーマンスを最大限に引き出すために重要である。例えば、別個のアプリケーション／サブルーチンは、MMFファイルから生データを読み取り、一連のキネマティックアルゴリズムに従って処理する。アルゴリズムは予め定義され、標準化されているが、いくつかの構成変数は車両特有であり、力−位置インタフェース（以下「F2PI」と呼ぶ）を使用したユーザインタフェイス装置の位置／コンプライアンスの正確な決定を助ける。
【０１２７】
ステップ1312及び1314において、位置／コンプライアンスの変更がインタフェイス装置に要求されているかどうかの判定が行われる。位置／コンプライアンスの変更が現在必要でない場合、プロセスはホストに戻り、ホストアプリケーションを更新し、インタフェイス装置に戻り、そのような位置／コンプライアンスの変更が必要になるまで処理ループを再開する。そのような変更が必要な場合、ステップ1314におけるインタフェイス装置制御計算が実施され、ホストコンピュータは、インタフェイス装置のローカルマイクロプロセッサに送信される適切なDirectInput API ConstantForceコマンドを決定する。
【０１２８】
ステップ1312において、適用可能であれば、受信された生データをセンサデータに変換する処理を行うことができる。例えば、この処理は、２つのステップを含み得る：生の位置データから速度及び／又は加速度値を計算すること（速度及び／又は加速度が力を計算するために必要な場合）、並びに、計算された速度及び加速度データをフィルタリングすること。速度及び加速度値は、受信された生の位置データ及び記憶された位置及び時間値から計算される。好ましくは、位置値が受信されたときに対応するいくつかの位置値及び時間値がアプリケーション又は装置の何れかに格納されてもよい。速度及び加速度は、当業者には周知のように、格納された位置データ及びタイミングデータを使用して計算することができる。計算された速度及び／又は加速度値は、インタフェイス装置の位置の急激な変化から速度計算をもたらす大きなスパイクのような、データからのノイズを除去するためにフィルタリングすることができる。したがって、記載された実施形態におけるセンサデータは、位置、速度、加速度、及び他の入力データを含んでいる。別の実施形態では、プロセッサに電気的に結合されているがプロセッサとは別個の回路が生データを受信し、速度及び加速度を決定することができる。例えば、特定用途向け集積回路（ASIC）又はディスクリート論理回路は、カウンタなどを使用して速度及び加速度を決定し、マイクロプロセッサの処理時間を節約することができる。この生データは、インタフェイス装置又はホストアプリケーションの何れかで処理することができる。これにより、ホストは、位置データから速度及び加速度をフィルタリングして計算する必要がある。したがって、インタフェイス装置がこの処理を行って、ホスト上で実行される処理量を低減することが好ましい。
【０１２９】
他の実施形態では、フィルタリングはホスト上で実行され、速度及び加速度計算はインタフェイス装置上で実行されてもよい。また、速度及び／又は加速度センサが速度及び加速度の生データを提供するために使用される実施形態では、速度及び／又は加速度の計算を省略することができる。
【０１３０】
ステップ1318は、インタフェイス装置のプロセッサが、インタフェイス装置上のアクチュエータ又は他の装置を制御して、ホストによって計算される力を提供することに関する。これは、コマンドが受信されたかどうかをチェックすることから始まる。もし受信されていなければ、プロセスは、そのようなフォースコマンドを継続的にチェックする。フォースコマンドが受信されると、インタフェイス装置のプロセッサは、出力フォースを所望の大きさ及び方向などに設定するために、指定されたアクチュエータに低レベルのプロセッサフォースコマンドを出力する。このフォースコマンドは、受信したDirectInput ホストからのAPI ConstantForceコマンドと同等であってもよく、アクチュエータによって使用可能な適切な形式に変換されてもよい（或いは、アクチュエータインタフェイスがそのような変換を実行し得る）。 その後、プロセスは、他のフォースコマンドのチェックに戻る。
【０１３１】
さらに、クリアコマンドがホストに利用可能であってもよい。このコマンドは、特定の自由度を指定するパラメータを含むことができ、ホストコンピュータが指定された自由度の全てのコマンド／力を取り消すことを可能にする。 これは、他のコマンド／力が適用される前にコマンド／力を除去することを可能にする。
【０１３２】
また、構成ホストコマンドを提供することができる。このコマンドは、特定の通信パラメータを受信し、特定のアプリケーションのためにどの入力及び出力が使用されるかを指定するために、インタフェイス装置を最初にセットアップすることができる。例えば、ホストは、ローカルマイクロプロセッサに、ホストコンピュータに特定の情報を報告すること、そして情報を報告する頻度を指示することができる。例えば、ホストコンピュータ又はアプリケーションは、マイクロプロセッサに、特定の自由度からの位置情報、インタフェイス装置の特定のボタンからのボタン状態、そしてホストに起こるエラーを報告する程度を指示することができる。 「情報要求」コマンド又は一覧は、シリアル番号、モデル番号、スタイル情報、較正パラメータ及び情報、センサの分解能、フォース制御の分解能、提供された自由度に沿った動きの範囲などの、製造時にインタフェイス装置に格納された情報を受信するために、ホストによってインタフェイス装置に送信されてもよい。この情報は、ローカルプロセッサに出力するコマンドを特定のタイプのインタフェイス装置に合わせて調整しカスタマイズできるように、ホストにとって必要であるかもしれない。例えば、この情報は、デバイス識別及び構成中に、ステップ1310で処理される。これは、ステップ1308における車両パラメータの識別及び構成、並びに、ステップ1312及び1314におけるVSR及びインタフェイス装置計算の処理に関するステップと並行して実行される。ベンダID、デバイスクラス、電源管理情報などの、インタフェイスに必要な他の情報は、要求コマンドに応じてホストに提供され得る。
【０１３３】
図13A及び図13Bは、第三者インタフェイス装置又はネイティブインタフェイス装置の何れかと連携するように構成されたシステムを示す。図14は、同様のシステム1400を示す。 ただし、このシステムは、余分な処理や種々の第三者デバイスからのデータの解釈に対応するための追加手順を必要としないネイティブインタフェイス装置で動作するように特別に構成されている。システムは、電源投入1401から開始する。次に、並列プロセスが、ホストアプリケーション1402及びインタフェイス装置1404内で実行される。
【０１３４】
ホストアプリケーション1402は、第三者シミュレーション又はネイティブシミュレーションの何れが実行されているかどうかを検出しなければならず、それによって第三者アプリケーション用の任意のステップ1406を実行するか、ステップ1408及び1412に直接進むかを選択しなければならない。ステップ1406は、第三者アプリケーションに関連するデータファイルを読み取り、これらを解釈して、ホストアプリケーションが、ある意味でホストアプリケーションと第三者シミュレーションとの間で動作するような役割を果たす。次に、システムは、特定の車両パラメータに対してシステムを較正するために、車両パラメータ検出及び分析1408を処理することによって進む。同時に、ホストは、VSR、仮想トルクセンサ、及び他のそのような仮想化などの、デバイスインタフェイス1412を介してデータを処理する。次いで、このデータは、シミュレーションデータ処理コンポーネント1414へと送られ、位置又はコンプライアンスの変化が必要かを計算し、これら変化を決定し、そのデータをホストアプリケーション、シミュレーション、及びインタフェイス装置へと送る。この際、シミュレーション及び装置は、閉じた真のフォースフィードバックループを維持しなければならない。
【０１３５】
これらのプロセス中、インタフェイス装置は、デバイス1410を識別し、構成し、及びセットポイントする並列処理を実行すると共に、装置センサデータ1416を処理し、物理的デバイスコントロール1418を提供する。
【０１３６】
図１４は、 別の実施形態に関連して、より具体的に説明することができる。図14は、本開示のフォースフィードバックシステムを制御するための方法1400の第1の実施形態を示すフロー図である。方法1400は、「ハイブリッド制御」の態様に向けられている。この態様においては、ホストコンピュータシステムは、マイクロプロセッサへの高レベルコマンドを提供することによって、インタフェイス装置についての可変コンプライアンス制御を伴った閉ループ位置を維持し、マイクロプロセッサは、独立に、センサ及びアクチュエータを用いて低レベル閉ループ制御を管理し、高レベルコマンドに従ったインタフェイス装置オブジェクトの要求される位置及び対応するコンプライアンスを達成及び維持する。
【０１３７】
図１４の「ハイブリッド制御された」実施形態は、 USBなどの高速通信インタフェイスのために設計されている。 しかしながら、ローカルマイクロプロセッサの使用がホストプロセッサから計算負荷の大部分を軽減することができるので、低速通信バスにも適している。
【０１３８】
プロセスは、1401で開始する。ステップ1401において、ホストコンピュータシステム及びインタフェイス装置は、例えば、ユーザが電力スイッチを起動することによって、電源投入される。ステップ1401の後、プロセス1400は2つの並列（同時）プロセスに分岐する。 1つのプロセスがホストコンピュータシステム上に実装され、他のプロセスがローカルマイクロプロセッサ上に実装される。これらの2つのプロセスは、その同時性を示すために、異なる方向にステップ1401から分岐している。
【０１３９】
ホストコンピュータシステムプロセスでは、最初にステップ1402が実行され、アプリケーションプログラムが処理又は更新される。このアプリケーションは、シミュレーション、ビデオゲーム、トレーニングプログラム、又は他のプログラムであり得る。画像は、出力表示画面上にユーザ用に表示することができ、オーディオフィードバックなどの他のフィードバックを提示することができる。ステップ1402の後、ホストアプリケーションがシステムの一部ではなく第三者アプリケーションである場合には、付加的なステップ1406を実行することができる。
【０１４０】
１つのプロセスでは、ステップ1412が実行され、センサデータがホストコンピュータによってローカルマイクロプロセッサから受信される。以下のマイクロプロセッサプロセスで詳しく説明するように、ローカルプロセッサは、センサからのシグナルを連続的に受信し、生データを処理し、処理されたセンサデータをホストコンピュータに送信する。或いは、ローカルプロセッサは、生データを直接ホストコンピュータシステムに送信する。本明細書で言及する「センサデータ」は、1つ又は複数の自由度でオブジェクトの動きを検出する、センサから得られる位置、速度、及び／又は加速度の値を含むことができる。さらに、インタフェイス装置のボタンがユーザによってアクティベートされたことを示すシグナルなど、他の入力装置から受信した他の任意のデータも、ステップ1418においてセンサデータとして受信されることができる。最後に、「センサデータ」という用語は、1つ又は複数の自由度でインタフェイス装置オブジェクトに適用される速度又はトルクを計算するために以前に記録され格納された位置の値などの値の履歴も含むことができる。
【０１４１】
ステップ1416及び1418でセンサデータが読み取られた後、プロセスはステップ1402に戻り、ステップ1416及び1418で受信されたオブジェクトのユーザ操作及び他のユーザ入力に応答して、ホストコンピュータシステムがアプリケーションプログラムを更新することができる。また、ホストコンピュータシステムは、ステップ1414の並列プロセスにおいて、位置及びコンプライアンス値が変更されオブジェクトに適用される必要があるかを決定することができる。ステップ1416及び1418は、ローカルプロセッサからデータを読み取る連続ループで実施される。
【０１４２】
2つの分岐がステップ1402/1406を終了して、ホストコンピュータシステム上で同時に2つのプロセス（マルチタスキング）が実行されていることを示す。ステップ1402からの第2の分岐は、ホストコンピュータが位置／コンプライアンスコマンドを決定してユーザ操作オブジェクトにフォースフィードバックを提供するプロセスに関する。第2の分岐は、ステップ1412の後ステップ1414へと続き、別個のアプリ／サブルーチンがホストアプリから生データを読み取り、シェア可能なメモリマップファイル（MMF）データ構造に保存される。ここで、メモリマップファイル（MMF）データ構造は、当業者によく知られた仮想メモリ中のアドレス可能なスペースである。このデータ構造は、ホストアプリケーションデータへのシームレスで迅速なアクセスを提供する。また、ホストアプリケーションの機能ではないデータの格納も可能である。このプロセスは、ホストアプリケーションの遅れを引き起こすことなく、ホストアプリケーションの下流の他のアプリケーションにデータを「サーブ」する能力を提供する。これは、ホストアプリケーションのパフォーマンスを最大限に引き出すために重要である。
【０１４３】
ステップ1414を通じて、別個のアプリケーション／サブルーチンは、MMFファイルから生データを読み取り、一連のキネマティックアルゴリズムに従って処理する。アルゴリズムは予め定義され、標準化されているが、いくつかの構成変数は車両特有であり、力−位置インタフェース（以下「F2PI」と呼ぶ）を使用したユーザインタフェイス装置の位置／コンプライアンスの正確な決定を助ける。
【０１４４】
ステップ1414は、位置／コンプライアンスの変更がインタフェイス装置に要求されているかどうかの判定が行われる場所である。 ステップ1414において位置／コンプライアンスの変更が現在必要でない場合、プロセスはステップ1402に戻ってホストアプリケーションを更新し、ステップ1414に戻って位置／コンプライアンスの変更が必要になるまで処理ループを再び開始する。 そのような変更が必要な場合、ステップ1414が実行され、ホストコンピュータは、インタフェイス装置のローカルマイクロプロセッサに送信される適切な位置／コンプライアンスコマンドを決定する。
【０１４５】
決定された位置／コンプライアンスコマンドがマイクロプロセッサに出力される。この位置／コンプライアンスコマンドには、通常、上述のパラメータに従って決定された位置／コンプライアンスが含まれる。プロセスは、ステップ1402に戻り、ホストアプリケーションプログラムを処理／更新する。
【０１４６】
プロセスは、ホストコンピュータが、上記のパラメータによって決定されるように異なる位置／コンプライアンスコマンドが出力されるべきかどうかをチェックするところに継続する。もしそうであれば、新しい位置／コンプライアンスコマンドが決定され、出力される。位置／コンプライアンスの変更が必要ない場合、ホストコンピュータは他のコマンドを発行しない。なぜなら、マイクロプロセッサが最後の位置／コンプライアンスコマンドに応じてアクチュエータの低レベル制御を管理し続けるからである（或いは、位置／コンプライアンスの変更が必要ない場合であっても、ホストコンピュータがコマンドの出力を継続してもよい）。ステップにおける後続のフォースコマンド出力は、ステップのパラメータに依存して、同じプロセス又は異なるプロセスに従って決定することができる。
【０１４７】
さらに、ホストコンピュータは、好ましくは、ホストアプリケーションに関連する任意の適切な視覚フィードバック、聴覚フィードバック、又は他のフィードバックを、ユーザオブジェクト上の位置／コンプライアンスを通じた力の適用と同期させる。例えば、ビデオゲームアプリケーションでは、表示画面上でユーザと衝突するオブジェクトなどの視覚的事象の発現や開始は、視覚的イベントに対応又はそれを補足するように、ユーザによって感じられる力の発現又は開始と同期されるべきである。
【０１４８】
ローカルマイクロプロセッサは、上述のホストコンピュータプロセスと並列に、ステップ1401から分岐しステップ1404から開始するプロセスを実施する。ステップ1404において、インタフェイス装置が起動される。例えば、ホストコンピュータとインタフェイス装置との間でシグナルが送信され、インタフェイス装置が現在アクティブであることを確認することができる。 ステップ1404から、2つのプロセスが分岐して、ローカルプロセッサ上で同時に実行されている2つのプロセス（マルチタスク）があることを示す。
【０１４９】
1つのプロセスでは、プロセッサがセンサから生データ（センサ読み取り値）を読み取るステップ1416が実行される。 このような生データは、好ましくは、与えられた自由度に沿ったユーザオブジェクトの位置を記述する位置値を含む。一実施形態では、センサは、最後に読み取られた位置からの位置の変化を表す位置値を提供する相対センサである。プロセッサは、指定された基準位置から相対位置を測定することによって絶対位置を決定することができる。 別の実施形態では、センサは、オブジェクトのトルク、速度、及び加速度の生の値を提供するトルクセンサ、速度センサ、及び加速度計を含むことができる。 ステップ1416で読み取られた生データは、アクティベートされたボタン又はインタフェイス装置の他の制御からの入力などの他の入力を含むこともできる。
【０１５０】
ステップ1416は、適用可能であれば、プロセッサの受信された生データをセンサデータに変換する処理によって継続する。一実施形態では、この処理は、２つのステップを含む：生の位置データから速度及び／又は加速度値を計算すること（速度及び／又は加速度が力を計算するために必要な場合）、並びに、計算された速度及び加速度データをフィルタリングすること。速度及び加速度値は、ステップ1416で受信された生の位置データ並びに記憶された位置及び時間値から計算される。好ましくは、プロセッサは、位置値が受信されたときに対応するいくつかの位置値及び時間値を格納する。プロセッサは、その自身の若しくはローカルシステムのクロック又は共通のクロックを使用して、タイミングデータを決定することができる。
速度及び加速度は、当業者には周知のように、格納された位置データ及びタイミングデータを使用して計算することができる。計算された速度及び／又は加速度値は、インタフェイス装置の位置の急激な変化から速度計算をもたらす大きなスパイクのような、データからのノイズを除去するためにフィルタリングすることができる。したがって、記載された実施形態におけるセンサデータは、位置、速度、加速度、及び他の入力データを含んでいる。別の実施形態では、プロセッサに電気的に結合されているがプロセッサとは別個の回路が生データを受信し、速度及び加速度を決定することができる。例えば、特定用途向け集積回路（ASIC）又はディスクリート論理回路は、カウンタなどを使用して速度及び加速度を決定し、マイクロプロセッサの処理時間を節約することができる。
【０１５１】
このプロセスの間、プロセッサは、トルクセンサデータがセンサ又は他の入力から受信されたか否かをチェックする。トルクセンサが存在せず、したがってデータが処理されていない場合、プロセッサは、位置センサデータを読み取り、それを位置−力インターフェイス（以下、P2FIという）によって処理し、それによって仮想トルクセンサ（以下、VTSという）データストリームを作製する。P2FIを介してVTSを使用する場合、インタフェイスオブジェクトの位置変位データは、ホストアプリケーション内でシミュレートされる車両の適切な対応するインタフェイスオブジェクトトルク値に変換される。別の実施形態では、トルクセンサが存在しない場合、VTSは「カレント検出」を使用することによってアクチュエータに加えられる力を測定することもできる。これらの計算は、1412内で行われ得る。実際の又は仮想のトルクセンサデータが受信されると、プロセスはステップ1414に進み、以下の２つのステップを含む処理を行う：即ち、車両固有のトルク値をインタフェイスオブジェクトの対応する変位にマッピングし、その後、インタフェイスオブジェクトの変位をUSB-HIDジョイスティック入力へと変換する。プロセッサが処理されたセンサデータをホストコンピュータに送信するこれらのステップ1414が実施された後、処理はステップ1416に戻り、生データを読み取る。このように、ステップ1414、1416及び1418は、ホストコンピュータシステムにカレントセンサデータを提供するために連続的に実施される。
【０１５２】
ステップ1404からの第2の分岐は、ホストコンピュータによって計算されたスティフ位置制御及び対応するコンプライアンスをオブジェクトに提供するようにアクチュエータを制御するプロセッサに関する。 第2の分岐はステップ1414から始まり、プロセッサはバスを介してホストコンピュータから高レベルの位置／コンプライアンスコマンドが受信されたか否かをチェックする。そうでない場合、プロセスは、そのような位置／コンプライアンスコマンドを継続的にチェックする。位置／コンプライアンスコマンドが受信されたとき、プロセッサは、指定されたアクチュエータへの低レベルコマンドによるインタフェイスオブジェクトの位置及び対応するコンプライアンスの閉ループ制御を維持する。 次に、プロセスはステップ1414の開始に戻り、ホストコンピュータからの別の位置／コンプライアンスコマンドをチェックする。
【０１５３】
ステップ1408及び1401は、セットアップ手順に関する。ステップ1408は車両固有のパラメータをセットアップすることに関連し、ステップ1410はインタフェイス装置自体をセットアップすることに関する。
【０１５４】
図15は、車両パラメータの検出及び分析1500を処理するコンポーネント1308及び1408のより詳細な図の実施形態を示すフローチャートである。第1のステップ1502において、車両構成ファイルがシミュレーションから読み込まれる。次の1504では、その構成ファイルに沿ってアプリケーションパラメータが調整される。例えば、VSRが調整される。これに続いて、接続されたデバイスが列挙され（1506）、デバイス能力が調査される（1508）。次のステップは、デバイスが構成可能であるかどうかが決定される（1510）。デバイスが構成不可能である場合、セットアップは完了する。デバイスが構成可能である場合、デバイス構成は、構成1512の車両パラメータと比較される。次に、この比較1514によって構成が必要でないことが明らかになれば、セットアップは完了する。構成が必要な場合、構成が調整される（1516）。最後に、システムは、構成可能なマイクロプロセッサが利用可能かどうかを検出し（1518）、そうであれば、このマイクロプロセッサに構成コマンドを送信して（1520）、システムセットアップのこの部分を完了する。
【０１５５】
図16〜18は、図13A、13B及び14の装置同定及び構成ステップ1310及び1410で着手されたプロセスの一実施態様の詳細を示す図である。
【０１５６】
図16は、デバイス起動ルーチン1600の一実施形態を示すフローチャートを示す。このルーチンは、デバイス1602を列挙することから始まる。次に、デバイス記述子及び識別子が読み出される（1604,1606）。これらのステップに続いて、システムは、これらのデバイスがデバイスデータベース中にあるか否かをチェックする（1608）。そうでない場合は、プロファイル1610を作成することによって、デバイスがデータベースに追加される。デバイスプロファイルが見つけられるか又は作成されると、システムは、デバイス範囲をテストしなければならないかどうかを確認する（1612）。もしそうであれば、デバイス限界がテストされる（1614）。範囲が分かっているか又はテストされた場合、システムは、デバイスのセンタを決定する（1618）か、又は、手動センタをセッティングする（1620,1622）ことにより、デバイスのセンタを発見する（1616）ことによって進行する。次に、システムは、デバイスの識別及びチューニングが必要かどうかをチェックし（1624）、終了するか、又は、図18により詳細が示されるプロセス1626へと進む。
【０１５７】
図17は、デバイス構成プロセス1700の実施形態を示す。最初に、システムは、デバイス構成が受信されたかどうかを判定する（1702）。そうである場合、システムは、デバイスをスタートアップ位置に移動させる最後のステップに進む（1710）。もしそうでなければ、システムは、ホイール、シフタ、ペダル及びハンドブレーキの調整をするなど、デバイス構成を処理する（1704）。次に、必要に応じて、調整又は構成が、例えばマイクロプロセッサ又はデータ格納システム上に格納される（1706）。次に、システムは、デバイス物理制御パラメータを格納することもできる（1708）。これらは、アクチュエータ制御パラメータ又は他の動作に特有の制御パラメータであってもよい。 最後に、システムは、デバイスを始動位置又は初期位置に移動させる（1710）。
【０１５８】
図18は、装置構成及びセットアッププロセスの一部であり図1６のプロセスの一部を示すシステム識別及びチューニングプロセス1800の一実施形態を示す。第1のステップでは、システムは、デバイスプロファイル1802を取得及び／又は読み取る。次に、システムは、デバイスがデータベースにあるかどうかを判定する（1804）。そうであれば、システムは、必要に応じて、デバイスダイナミクスを再調整する（1806）。次いで、システムは、自動再調整を行う（1812）か、又は、ユーザを介して手動で再調整する（1810）か、を決定してもよい（1808）。自動再調整の間、システムはダイナミクステストを実行し（1812）、これは、モータテストの実行（1814）、システムパラメータの計算（1816）、及び、データベースへのこれらのシステムパラメータ（ユーザ又は自動パラメータ）の保存（1818）を含む。デバイスのダイナミクスがデータベース内にある場合、システムは、代わりに、デバイスの基本値が存在するかどうかを評価する（1820）。もしそうであれば、システムは同じダイナミクステストに進む（1812）。そうでない場合、ユーザは、モータ電圧又は電源仕様などのデバイスパラメータをクエリされ得る（1822）。ユーザは、これらを入力してもよいし（1824、1826）、プロセスを終了して、ダイナミクステスト（1812）又はデバイスチューンフラグの設定（1828）をトリガしてもよい。
【０１５９】
いくつかの例示的なシステム識別試験は、速度対電圧、スピンアップ／スピンダウン、ブレーキ摩擦トルク、又はステップ入力電圧などのモータ又はシステム試験を含むことができる。テストには、パラメータ識別テストが含まれてもよい。このテストには、例えば、モータ又はシステムのパラメータを計算すること、伝達関数への曲線フィットテスト出力、速度／トルク傾斜の計算、ストール時のトルク（最大）の計算、ストール電流の検証、効率の計算、 機械的及び電気的時定数の計算、角加速度（最大）の計算、ピーク電源供給能の計算などが含まれる。
【０１６０】
図19A〜19Dは、種々のデバイスのための様々な構成ルーチンの様々な実施形態を示す。 図２0A〜20Eは、これらのデバイスのいくつかの様々な構成パラメータを示す。
【０１６１】
図21〜23は、システムのVSR及び仮想トルクセンサインタフェイス（VTSI）コンポ―ネントの実施形態及び使用法を示す。これらのコンポーネントは、シミュレーションに応答して装置のセットポイント及びコンプライアンス又はスティフネスを計算して出力し、シミュレーションに影響を及ぼす装置のトルクを測定又は計算する。具体的には、図21は、VSR2100をセットアップするプロセスの実施形態を示す。第1のステップで、システムは、特定の車両ステアリングシステムパラメータを検出する（2102）。次に、システムは、これらのパラメータに基づいてステアリング回転を算出する（2104）。その後、システムは、力、摩擦、慣性などのインタフェイス装置の能力を検出する（2106）。 最後に、システムは、VSRを生成するために、パラメータをインタフェイス装置にマップする（2108）。
【０１６２】
図22は、VSRシステム2200の実施形態のより詳細な図を示す。システムは、車両ダイナミクスを計算することから始まる（2202）。システムのこの部分は、現在の変数及び状態を評価する。それは、ホストアプリケーションからデータをプルするか又は読み取ることから始まる。これは、関連するシミュレーション、第三者シミュレーション、又はプロプライエタリなソフトウェアであってもよい。データは、任意の種類のファイル又はフォーマットであり得るが、場合によっては、生データを抽出することが可能である。次に、ダイナミクス自体が提供されない場合には、この生データに基づいて車両ダイナミクスが計算される。車両ダイナミクスの計算に続いて、トータルのタイヤ及びキングピン力が計算される。 次に、ベース力が計算され、これがコンプライアンス又はスティフネスを決定するために使用される。車両ダイナミクスの計算（2202）が終了した後、システムはVTSI（又は仮想トルクセンサ）の出力を読み込む（2204）。このステップについては、図２３においてより詳細に説明する。
【０１６３】
次に、システムは、車両運動学を計算し（2206）、車両ダイナミクスがVTSI出力と組み合わされる。この部分では、インタフェイス装置の位置は、装置及び車両のハンドル位置が計算されるように直接的に、又は、トルクを使用して正味の位置を計算することによって間接的に、使用されてもよい。次に、VSRを用いて新たなステアリングホイール位置を計算し、ステアリング減速比を適用し、仮想車両上のタイヤ角度又は度数変位を計算する。 最後に、システムは、インタフェイス装置制御を計算して出力する（2208）。これは、ステアリングロックのパーセンテージを計算することから始まる。このパーセンテージは、使用されている装置のタイプに依存したパーセンテージとしてスケーリングされる。次に、位置などの装置入力が計算される。最後に、インタフェイス装置の位置及びコンプライアンス（又はスティフネス）が出力される。
【０１６４】
図23は、VSRシステム内で使用されるVTSI2300の実施形態をより詳細に示す。 VSRはインタフェイス装置からのトルク及び位置情報を必要とするので、インタフェイス装置がトルクセンサ及び位置センサの両方を有さない場合には、この情報を作成することが望ましい。この例示的なVTSIは、インタフェイス装置2302からセンサデータを受け入れが又は受信し、車両パラメータを適用することによって動作する（2304）。次に、並行して、装置からのトルクデータ（利用可能な場合）が位置データ（2306,2310,2314,2318,2322）に変換され、位置データ（利用可能な場合）がトルクデータ（2308,2312,2316,2320,2326）に変換され、キングピントルク2324がこれらの組み合わせから計算される。
【０１６５】
VTSIの車両パラメータの適用（2304）は、例えば、図20Aに示すホイール構成パラメータを適用することに関連し、又は、車両ステアリングモデルに関する他の構成パラメータに関連する。一般的なプラクティスでは、車両は、システムがどのように反応し、応答し、運転者とのインタフェイスを提示するかを制御する一連の設計意図の運動学的方程式を有する。車両はまた、使用される物理的コンポ―ネント及びそれらの組み立てに基づいて、そのインタフェイスをどのように提示するかが見られる。しかし、最も重要なことに、各システムは、ステアリングタイプ、ステアリング比、及び慣性、摩擦、減衰などの付随するシステムダイナミックスによって特徴付けられ得る。
【０１６６】
これらの要因は、慣性、摩擦、ダンピング、及びラックスティフネスなどの所定のステアリングシステムダイナミクスにおいて、ユーザがステアリングホイールを「ｘ」度回転したときに、その変位を達成するために運転者によって適用される「ｙ」の量のトルクが必要とされる、などの計算をする方程式を通じて、車両モデルに関連したパラメータを適用することによって、例えば、トルクからの位置の決定を助ける。それゆえ、この情報から、運転者のステアリングホイールトルク値を決定することができる。システムは、仮想システムを物理的且つ実世界の経験又は車両に接続することに関するので、これらの変換は、ヴァーチャルからリアルへ、またリアルからヴァーチャルへの体験の翻訳に不可欠であり得る。
【０１６７】
トルクデータがインタフェイス装置2306から利用可能である場合、これがステアリングホイールのトルクからキングピントルクを計算するために使用される（2310）。次に、キングピントルクに基づいてステアリングホイール変位が計算され（2314）、ホイール変位又は位置が計算される（2328）。このプロセスは、運転者のステアリングホイール位置2322の計算を可能にする。
【０１６８】
位置データがインタフェイス装置2308から利用可能である場合、これは、ステアリング変位に基づいてキングピントルク2312を計算するために使用される。次に、キングピントルクに基づいてステアリングホイールトルクが計算され（2316）、ステアリングホイールトルクが計算される（2320）。これにより、運転者のステアリングホイールトルクの計算が可能になる。ステアリングホイールトルク2310又はステアリングホイール変位2312を介して計算されたキングピントルクは、キングピントルク変数2324として出力される。このプロセスにより、運転者のステアリングホイール位置、運転者のステアリングホイールトルク、及びキングピントルクの計算が、インタフェイス装置が位置、トルク、又はそれら両方のためのセンサのみを有しているか否かにかかわらず、可能となる。それによって、仮想トルクセンサを生成するプロセスを作成する。運転者のステアリングホイール位置、運転者のステアリングホイールトルク、及びキングピンのトルクデータは、VSRに関して説明したように、車両及びインタフェイス装置を制御するために使用されるシステムの残りの部分に出力される。
【０１６９】
図24は、本開示の一実施形態による例示的なシステム2400の概略を示す。図２４の仮想車両制御システム2400は、シミュレーション又はビデオゲームであり得るアプリケーション2402を含む。アプリケーション2402は、VSRを制御する運動学エンジン2404と通信する。運動学エンジン2404は、インタフェイス装置2408に伝達される各クロックサイクルのセットポイント2406を決定する。インタフェイス装置2408は、センサ2410を含む。現在のクロックサイクルからのインタフェイス装置情報及びセンサ情報は、運動学エンジンに戻されて、次のセットポイントを計算する。運動学エンジンは、物理又はアニメーションエンジン2412と通信し、運動学的情報（デバイス及びセンサからの出力並びにこれらが車両にどのように影響するかを含む）をアプリケーション環境の物理ルールと組み合わせ、この情報をアプリケーション又はシミュレーションに戻して、車両を表示する。
【０１７０】
システムの他の特徴には、インタフェイス装置のスティフ位置制御が含まれる。システムが位置を検出し出力するにつれて、各々のクロックサイクル（連続的にコンスタントループ及び計算を生成する）及びインタフェイス装置のストール状態が低減される。これは、装置に対して、そのタイムフレームにおいて何が起きるかにかかわらず一定時間にわたって力を出すように指示する伝統的なシステムとは異なっている。従来のシステムは、介入するイベント又はユーザのやりとりにかかわらず、インタフェイス装置のホイールに特定の方向にスピンするように指示するかもしれない。これらのシステムは、ユーザが力を止めるのを待っているため、モータに失速が生じる。本システムでは、各クロックサイクルで位置制御が使用されるため、ホイールは特定の位置に移動し、次に電流が下げられてこの位置を保持する。これにより、ストール状態が達成されることはない。さらに、システムは、ユーザインタラクションに基づいて位置を再計算し、失速を低減する。ストール状態の頻度を低減することは、モータの摩耗及び熱を低減する可能性があるため、重要である。
【０１７１】
さらに、他の実施形態では、ユーザは、多かれ少なかれ道路の感触や他の好みなどの操舵感覚に対する好みを設定することができる。他の実施形態では、ステアリングの感覚が、異なるタイヤモデル又はステアリングシステムタイプに対して調整されてもよい。
【０１７２】
以下の情報は、システムの他のコンポーネントに関連する。これらは、一実施形態に基づく例示的な構成であり、他の構成又は実施形態を使用することもできる。 また、これらの組み合わせ及び変形を用いてもよい。
【０１７３】
図25は、ホストコマンド及び構成パラメータを処理して、可変コンプライアンスでスティフ位置制御を維持することによってユーザオブジェクトにフォースフィードバックを出力するための、本発明の機能的マイクロプロセッサ2550の実装2580の一例を示すブロック図である。 実装2580は、好ましくは、メモリに格納された命令を使用してマイクロプロセッサ2550上に提供される。 マイクロプロセッサ上で動作を実行するためのプログラム命令の使用は、当業者には周知であり、「非一過性コンピュータ可読媒体」に格納することができる。ここで、そのような媒体は、例として、 ROM、磁気ディスク、CD-ROMなどの光学読み取り可能な媒体、半導体メモリなどを含む。それぞれの場合において、媒体は、小型ディスク、SDカード、USBフラッシュドライブなどのポータブルアイテムの形態をとり得る。または、ハードディスクドライブのような、比較的大きい又は設置型のアイテムの形態を取ることもできる。
【０１７４】
好ましくは、様々なサブプロセス2582,2584,2586,2587、及び2588が、フォースフィードバックインタフェイス装置の応答性を最適化するために、マイクロプロセッサ2550上で並列に実行される。これらのプロセスは、本明細書では「プロセッサ」とも呼ばれる。 好ましい実施形態では、様々なパラメータ及びデータが実装2580のサブプロセスによって共有される。
【０１７５】
通信プロセス2582は、マイクロプロセッサ2550とホストコンピュータ2518との間の通信リンクを維持する。通信プロセス2582は、ホスト2518から高レベルのホストコマンド及び構成パラメータを受信し、このデータをコマンドプロセス2584に送信する。プロセス2582は、 以下に説明する報告プロセス2587からのセンサデータも受信する。 プロセス2582は、プロセス2587から受け取った情報をホスト2518に直接受け渡す。好ましくは、プロセス2582は、ホストコンピュータ2518からの入力コマンド及びデータをバッファするために使用されるマイクロプロセッサ2550上の入力バッファを管理する。 入力バッファは、USBインタフェイスや高通信レートの他のインタフェイスを含む態様において特に有用である。
【０１７６】
コマンドプロセス2584は、ホスト2518からの入力高レベルホストコマンド及び構成パラメータを処理し、通信プロセス2582を介して送信される。入力コマンドに基づいて、コマンドプロセス2584は、センサ更新プロセス2586、報告プロセス２５８７、及びアクチュエータ制御プロセス２５８８のための構成パラメータを設定すると共に、アクチュエータ制御プロセス2588に送られる高レベルホストコマンドを処理する。プロセス2586,2587及び2588の構成パラメータは、マイクロプロセッサ2550の内部パラメータである。
【０１７７】
例えば、報告パラメータは、どの特定のデータをどのようなレートでホストコンピュータ２５１８に報告するかをマイクロプロセッサ2550に指し示す内部パラメータである。報告パラメータは、例えば、特定の自由度におけるユーザオブジェクトの位置、速度、又はトルクを報告するかどうかを指定したり、通信スピードを指定したり、エラーを報告するか否か、そしてどのような形で報告するかを指定したりすることができる。報告パラメータは、ホストコンピュータ2518から受信した構成コマンドから導出され、センサ更新プロセス2586及び報告プロセス2587に提供され、これにより、プロセス2587は、通信プロセス2582を介してどの情報をホストコンピュータ2518に報告するかを知る。
【０１７８】
センサ更新プロセス2586は、コマンドプロセス2584から報告及び構成パラメータを受け取る。受け取ったパラメータに基づいて、プロセス2586はセンサ2560及びクロックを読み取り、センサの読み取り履歴及びタイミング履歴を保存する。プロセス2586はまた、センサ位置データ、センサデータ履歴、タイミングデータ、又はこれらのデータの組み合わせから導出された速度又は加速度などの値を計算することができる。ここで、「センサデータ」という用語は、センサから直接受け取ったデータ（センサ読取値）及び／又はセンサデータの履歴を含むセンサ読取値から導かれた値の両方を指す。 「タイミングデータ」又は「時間データ」は、タイミングデータの履歴を含む、ある期間を表す特定の値を指す。定期的に、報告プロセス2587は、プロセス2586によって提供され格納されたデータを読み取る（又は、プロセス2586は、プロセス2587に直接データを送信することができる）。センサ及びタイミングデータはまた、アクチュエータ制御プロセス2588に「送信」される。本明細書では、「送信される」又は「受信される」という用語は、別のプロセスが最終的に受け取るデータを提供する1つのプロセスを指す。プロセス間でデータを送受信するための実際の実装は、様々な実施形態で異なることがある。例えば、送信プロセスは、計算されたデータをメモリに格納し、受信プロセスは、それ自身のレートでメモリからデータを取り出すことができる。
【０１７９】
報告プロセス2587は、センサ更新プロセス2586からセンサデータを受信し、適切な時間に又は通信プロセス2582を介してホスト2518から要求を受信したときに、このデータをホストコンピュータ2518に報告する。報告パラメータは、コマンドプロセス2584によってプロセス2587に送られる。さらに、一般的なステータス及びエラー情報が、アクチュエータ制御プロセス2588から報告プロセス2587に送信されてもよい。報告プロセス2587によって実施されるプロセスは、図22に関してより詳細に説明される。 別の実施形態では、例えば、データをホストに定期レートで報告する（「ストリーム」モード）場合、報告プロセス2587をバックグラウンドプロセス2582と合体することができる。
【０１８０】
アクチュエータ制御プロセス2588は、閉ループでアクチュエータ2562を制御することによって、コマンドプロセス2584からの位置／コンプライアンスコマンド及びセンサ更新プロセス2586からのセンサデータを使用して、ユーザオブジェクトに加えられる力を計算する。アクチュエータ制御パラメータは、当業者には周知のように、（PID、PI、PD、フィードフォワード、カスケードPIなどの）様々な制御法モデルを特徴付ける構成パラメータから導出される。プロセス2588は、アクチュエータに適用される合成PWM信号を計算する。
【０１８１】
図２５の実装2580内のプロセス2582,2584,2586,2587、及び2588は、 例えばマルチタスク環境を使用して、マイクロプロセッサ2550上で並列に実行されることが好ましいことは強調されるべきである。これらのすべてのプロセスを順番に実行すると、ユーザオブジェクトのユーザ操作に対するフォースフィードバック応答が劇的に遅くなる。
【０１８２】
図２5に示す実装2580は、マイクロプロセッサ2550の様々なサブプロセスを論理分割に分割する方法の一例として意図されている。 他の実施形態では、マイクロプロセッサ2550の記載された機能の一部又は全部に結合又は分離するために、様々な他の実施形態を提供することができる。
【０１８３】
図26は、図25の通信プロセス2582をより詳細に示すフロー図である。最初に、ホストコンピュータは、ステップ2602において、インタフェイス装置との通信リンクを確立する。これは、インタフェイス装置が受信するのを待っている所定の信号又は情報を送信することによって達成することができる。 次に、インタフェイス装置は、コマンドを受信する準備ができていることを示す応答信号を送信することができる。
【０１８４】
USB通信インタフェイスが使用されている場合、コマンド処理2582は、好ましくはホストからUSBアドレスを要求し、ホスト2582はこれを受け取り、記憶する。データパケットがホストから送信されるたびに、コマンドプロセッサはデータパケットのアドレスをチェックし、それを格納されたアドレスと比較して、パケットがマイクロプロセッサ2550用であるかどうかを判断することができる。さらに、ＵＳＢが実装されている場合、コマンドプロセッサは、USB通信プロトコル中のデータをチェックして、報告プロセッサがこのプロトコル中のデータを送出することができる。このプロトコルは、当業者には周知のように、トークンパケットの後にデータパケットが続き、その後にハンドシェイクパケットが続く。 ホストコマンドは、データパケットで暗号化することができる。
【０１８５】
次のステップ2604において、ホストコンピュータは、特定のインタフェイス装置に適した適切なコマンドがホストコンピュータによって提供されることができるように、インタフェイス装置の特性を要求することができる。 これらの特性は、例えば、シリアル番号、モデル番号、ユーザオブジェクトの提供された自由度の数、較正パラメータ、及びインタフェイス装置の報告レートを含み得る。「情報要求」コマンドなどのホストコンピュータからのそのような情報の要求を受信すると、マイクロプロセッサ2550は、ステップ2604において、その情報をホストコンピュータに送信する。ホストコンピュータは、通常、これらの特性を電源投入時又はフォースフィードバック実装の開始時にのみ要求する。
【０１８６】
図27は、図2５のコマンド処理2584をより詳細に示すフロー図である。次のステップ2702において、プロセスは、ホストコマンドが受信されたかどうかをチェックする。 そうでなければ、ステップ2702は、ホストコマンドが受信されるまで連続的にループする。
【０１８７】
ホストコマンドが受信された場合、ステップ2704が続いて実行される。ここで、プロセスは、受信されたコマンドが構成コマンドであるかどうかを決定する。コマンドが構成コマンドである場合、ステップ2706が実行され、報告プロセス、センサ更新プロセス、及びアクチュエータ制御プロセスのためにパラメータが設定される。
【０１８８】
ステップ2704が受信したコマンドが構成コマンドではないと判定した場合、ステップ2704は、インタフェイス装置のフォースフィードバック機能を制御する高レベルホストコマンドを検出する。高レベルのホストコマンドが検出されると、ステップ2708は、アクチュエータ制御パラメータに従ってホストコマンドを処理し、次にステップ2710でアクチュエータ制御プロセッサにコマンドを送信する。ステップ2706又は2710が完了した後、プロセスは制御をステップ2702へとループバックし、別のホストコマンドの受信を待つ。
【０１８９】
さらに、好ましい実施形態では、プロセス2584は、所定の時間間隔後に、ホストコンピュータからハートビート信号を定期的にチェック／受信している。この信号は、ホストコンピュータがまだインタフェイス装置に接続されていること、及びホストが「OK」状態であることを示す安全チェックである。時間間隔内にハートビート信号が受信されない場合、インタフェイス装置が非アクティブ化され、ホストからの初期化コマンドを待つことができる。 ハートビート信号は、通常の信号若しくはホストコマンドであってもよく、又は、時間間隔内に他の信号が送信されていない場合にホストコンピュータが送信できるハートビート信号として特に使用される信号であってもよい。 信号がステップ2702で受信された後、プロセス2584は、好ましくは、信号が受信された時間を特定のメモリ位置に記憶する。
【０１９０】
図28は、図25のセンサ更新プロセス2586を示すフロー図である。ステップ2802において、プロセス2586は、コマンドプロセス2584によって設定された報告及び構成パラメータを検査する。好ましくは、プロセス2586は、コマンドプロセス2584によって更新されたメモリ内の報告及び構成パラメータを検査する。報告及び構成パラメータの両方から、ステップ２８０４はどのセンサが読み取られるかを決定する。構成パラメータは、どのセンサデータがアクチュエータ制御プロセス2588に必要であり、どのセンサデータがホストに報告される必要があるかを決定する。
【０１９１】
例えば、y軸ではなくx軸に関して位置及び力を制御する必要があると構成パラメータが判断した場合、y軸からのセンサデータは必要ない。報告パラメータは、どのセンサデータをホストコンピュータに報告するかを決定する。 したがって、報告パラメータは、ホストコンピュータがその特定のデータを無視していることから、y軸センサデータをホストコンピュータに送信する必要がないことを指定することもできる。したがって、y軸データは、力を計算するために使用されておらず、ホストによって必要とされないので、マイクロプロセッサ2550は、ステップ2804において、y軸センサを読み取らないと判定する。
【０１９２】
ステップ2808は、速度及び／又は加速度が常に計算されるかどうかを決定する。 このステップの結果は、実装される特定の実施形態に依存する。いくつかの実施形態では、速度／加速度データが力を計算するために必要であるか、又はホストに送信される必要があるかにかかわらず、速度及び／又は加速度データが常に計算される方が処理がより簡単であるかもしれない。他の実施形態では、速度／加速度データは、そのようなデータが位置/力の値を計算するために必要な場合、又はホストがこれらの値を必要とする場合にのみ計算することができる。 さらに他の実施形態では、特定の用途又は他の決定要因に応じてモード（「常に計算する」又は「必要なときにのみ計算する」）を設定することができる。
【０１９３】
速度及び加速度を常に計算する実施形態では、速度及び／又は加速度値がセンサ読み取り値及びタイミングデータを用いて計算されるステップ2808及び2812が実装される。例えば、記録された位置の値の履歴及び関連する時間間隔を用いて速度を計算することができる。プロセスは、その後ステップ2818に続く。このような実施形態が使用されていない場合、ステップ2816は、適切な場合にのみ、速度及び／又は加速度値を計算する。プロセス2586は、速度及び／又は加速度値を計算すべきかどうかを決定するために、ステップ2804と同様に構成パラメータ及び報告パラメータを検査することができる。
【０１９４】
ステップ2806は、トルクデータが読み出されて記憶される必要があるかどうかを判定する。ステップ2806でトルクデータが必要な場合、ステップ2810において、フォースフィードバックシステムでトルクセンサが利用可能かどうかをチェックする。トルクセンサが利用できないと判定された場合、ステップ2814は、仮想トルクセンサ（VTS）を使用して、位置−力インタフェイスを介して必要なデータを提供する。
【０１９５】
ステップ2810,2808,2814又は2816の後、ステップ2818が実行され、ここで、プロセス2586は、センサ、クロックから読み出され、ステップ2808又は2816で計算されたセンサデータ及びタイミングデータをメモリに記憶する。センサデータ及びタイミングデータは、例えば、インタフェイス装置上のボタンが押された場合（センサデータ）など、他の入力デバイスに関するデータも含むことができる。 上述のように、プロセス2586は、複数のプロセスが並列に実行されているので（マルチタスク）、マイクロプロセッサ2550の処理時間を共有することが好ましい。 この場合、プロセス2586は、マイクロプロセッサ2550が利用可能になるまでステップ2820で待機するか、別の待機プロセスがマイクロプロセッサ2550を使用することを意図的に許可する必要があり得る。
【０１９６】
図29は、ホストコンピュータにデータを報告する図25の報告プロセス2587を示すフロー図である。 ステップ2902は、構成コマンドがコマンドプロセス2584によって受信されたかどうかを判定する。構成コマンドが受信された場合、ステップ2906は、指定された報告パラメータをセットし、ステップ2902にループバックして、別のコマンドを受信するのを待つ。構成コマンドが受信されない場合、プロセスはステップ2904に続く。
【０１９７】
ステップ2904は、報告がクエリモード又はストリームモードで行われるかどうかを決定する。この説明では、クエリモードは、ホストコンピュータからの情報要求に基づく非同期的報告方法を使用し、ストリームモードは所定の時間間隔に基づく同期的報告方法を使用する。
【０１９８】
クエリ報告モードでは、ステップ2908は、ホストコンピュータから報告要求が受信されたかどうかを判定する。要求は、報告プロセス2587によって直接受け取ることができ、或いは、要求がコマンドプロセス2584を介して報告プロセス2587に中継されてもよい。要求が受信されると、ステップ2910は、図28のステップ2818において格納されたセンサデータ及びタイミングデータ並びにプロセス2688からのエラー情報及びフォース値をホストへと報告（即ち送出）する。送出される特定のデータは、構成コマンドで指定された報告パラメータ及びホストから受信した要求によって異なる。例えば、いくつかの実施形態では、ホストは特定の情報を要求することができる。次に、プロセスはステップ2904に戻り、クエリ又はストリームモードが使用されているかどうかを判定する。それゆえ、記載された実施形態では、モードは、データ送信中の任意の時点で切り替えられ得る。別の実施形態では、1つの特定の報告モードが利用可能な唯一のオプションであってもよい。或いは、両方のモードが利用可能であってもよいが、インタフェイス装置の動作の開始時に1つのモードが選択されると、そのモードは切り替え不能であってもよい。
【０１９９】
ストリーム報告モードでは、ステップ2912は、報告期間が終了したかどうかを判断する。好ましくは、標準報告期間は、インタフェイス装置とホストコンピュータが最初にセットアップされるときにセットされる。時間間隔が終了すると、ステップ2914は、報告パラメータにしたがって図28のステップ2818で記憶されたデータを報告する。時間が切れていなければ、プロセスはステップ2904に戻り、報告モードを再び決定する。
【０２００】
図30は、図25のアクチュエータ制御プロセス2588を示すフロー図である。 好ましくは、各自由度における全ての位置／コンプライアンス設定値の組み合わせは、電源投入時又はホストコンピュータからのクリアコマンドの受信時に、このプロセスの前にゼロに初期化される。その後、プロセス2588は、ステップ3002から開始する。ステップ3002では、位置／コンプライアンスのセットポイントが適用される軸又は自由度が選択される。 ここで、「軸」は、インタフェイス装置によって提供される自由度と同義である。
【０２０１】
ステップ3004において、プロセス2588は、比例−積分−微分（PID）制御システムなどの構成パラメータにしたがって、フィードバック制御システムを管理する。 このような制御システムは、その特性がよく知られている標準的なシステムである。図24は、従来技術において周知のPID制御ループの構造を示す。 PID制御ループは、PIDコントローラと、制御されるべきプロセスとを含む。プロセスに関連するプロセス変数PVが測定され、セットポイント値SPと比較される。セットポイント値とプロセス値の差として定義されるエラー値がPIDコントローラへの入力として供給される。PIDコントローラの出力は「プロセス」を駆動する。
【０２０２】
PIDコントローラの「プロセス」は、多くの目的を含むことができるが、通常、コントローラのこの形式は、アクチュエータを指令された位置に移動させるために使用される。例えば、位置制御において、PIDコントローラは、出力機構の位置を直接指令する。 例えば、機構に負荷がかかると、システムはPWM信号を調整して、指令された位置に到達して機構を維持するために必要な電力を供給する。PWM信号を使用して指令された「位置」を変更することによって、機構を制御された方法で動かすことができる。
【０２０３】
PWM（パルス幅変調）信号は、アクチュエータを制御するための1つの方法である。 PWM制御では、電力が供給されている所定の電圧のパルス幅を任意に変化させることにより、アクチュエータに入力される電力を制御する。 マイクロプロセッサ2550は、方向信号及びパルス幅変調信号の2つの信号を各アクチュエータに供給する。方向信号は、その自由度の範囲内で2つの方向の一方に沿って力を与えるようにアクチュエータに指示する。 PWM信号は、一定の周波数（例えば24kHz）及び変動するデューティサイクルを有する信号を供給することによって力の大きさを制御する。 高いデューティサイクルは大きな力を提供し、その逆も正しい。 マイクロプロセッサ2550からの方向及びPWM信号は、アクチュエータインタフェイスに入力される。 アクチュエータインタフェイスは、マイクロプロセッサ2550からの制御信号を、電源によって供給される適切な高電流レベルで駆動アクチュエータに提供する。
【０２０４】
プロセス2588は、それゆえ、センサデータ、タイミングデータ、アクチュエータ制御処理パラメータ、及び／又はステップ３００４で必要とされる他のデータを取得して、フィードバック制御システムを管理し、それによりアクチュエータのためのPWMシグナル値を計算する。
【０２０５】
ステップ3006において、プロセス2588は、別の軸（自由度）が計算された位置／コンプライアンスを有する必要があるかどうかを決定する。 そうであれば、他の軸の合計位置／コンプライアンスが計算されるまで、ステップ3002及び3004が他の軸に対して繰り返される。
【０２０６】
ステップ3006が、力が計算される必要がある軸（自由度）がもうないと判定した場合、ステップ3008は、各軸上のPWM信号を制限することができる。上記で計算された軸上の力の合計は、アクチュエータ力出力などのインタフェイス装置のハードウェア仕様を超え得るので、ステップ3008は、PWM信号をハードウェアの設計範囲内にセットする。PWM信号値は、最大出力の75％などの、アクチュエータの最大ダイナミックレンジの予め設定されたユーザ設定可能なパーセンテージに制限される。これは、例えば、ユーザが機構に負荷をかけているときに行われ、システムの出力能力が完全に飽和しないようにされ、コマンドされた位置／コンプライアンスセットポイントに到達及び維持するためのより多くの電力を適用するようにPWMシグナルを調整する能力を有している。ステップ3008はまた、エラーフラグによって示されるように、ユーザに危険である可能性がある場合に、上記で計算された力の合計を修正することができる。例えば、好ましい実施形態では、以下のステップ3010〜3014に記載されているように、安全条件に違反した場合、エラーフラグをセットすることができる。これにより、出力PWM信号がゼロになる。
【０２０７】
次に、ステップ3010は、ステップ3008から得られた各軸上の力の合計に安全条件を適用する。特定のコマンドがホストコンピュータによって送信されるとき、安全条件が破られる可能性がある。安全条件に違反すると、ステップ3012でアクチュエータへの力がゼロにセットされる。ステップ3014でエラーフラグがセットされ、エラーが発生したときの違反及びタイミング情報が書き込まれる。 次に、プロセス2588は、マイクロプロセッサが再び進行する準備が整うまでステップ3018で待機する。
【０２０８】
追加の安全機能として、プロセス2588は、好ましくは、ホストのハートビート信号が要求された時間間隔内に受信されたかどうかを判定するためにメモリを検査する。最後の信号が許容された時間間隔外に受信されたとプロセス2588が判定した場合、プロセス2588は、ホストが切断されているか、又はエラーがあったとみなす。したがって、適切な初期化コマンドがホストから受信されるまで、アクチュエータへの全ての電力が安全対策としてオフにされる。
【０２０９】
ステップ3010において安全条件に違反していない場合、ステップ3016において、各軸のPWM信号が適切なアクチュエータに送られて、対応する力をユーザオブジェクトのそれらの軸に適用する。さらに、プロセス2588は、上述のようにホストにデータを送信するかどうかを決定する報告プロセス2587に出力された任意のエラー情報及び任意のフォース値を送信することができる（エラー情報は、安全情報に関係なくプロセス2587に送信される）。 好ましくは、プロセス2588は、この情報を報告プロセッサ2587が取り出すことができるメモリに書き込む。 その後、プロセス2588は、マイクロプロセッサ2550が準備完了になるまでステップ3018で待機する。 ステップ3018の後、プロセスはステップ3002に戻り、位置／コンプライアンスセットポイントの計算及び適用の新しい反復を行うべく別の軸を選択する。
【０２１０】
前述したように、本明細書に記載されたシステム及び方法は、任意のフォースフィードバック可能なインタフェイス装置を有するシミュレーションにおける任意のオブジェクトを制御するために使用されてもよい。実施例では車両及びステアリングホイールが使用されているが、それらは単なる例示である。これらの方法及びシステムは、例えば、ジョイスティック若しくは新規のインタフェイス装置、一人称シューティングゲーム、又は他のゲームなど、任意のデバイス及びシミュレーションで使用することができる。これらは、航空機のシミュレーションにも使用できる。大型及び小型の航空機は、通常、ロール用補助翼、ピッチ用エレベータ、及びヨー用舵などの複数の飛行制御面を有する。現代の航空機の主要な飛行操作コンポーネントの制御のための様々なタイプの制御システムが存在する。航空機のサイズ及びタイプに応じて、そのような制御システムは、機械的ケーブル接続に接続されたヨーク又はスティックから、「フライ−バイ−ワイヤ」と呼ばれる最新の制御技術まで様々である。車両と同様に、航空機システムは、機械的な閉ループを提供し、航空機のダイナミクスを操縦室の制御器に「戻す」ように伝達する。スティック、ホイール、ペダルの動作を制御面の偏向に変換する航空機の制御システムは、パイロットと機体との間のインタフェイスを構成する。パイロットに与えられる力の合図に関係する航空機制御システムの態様は、制御負荷システム（CLS）と呼ばれる。航空機の飛行シミュレータは、上手く実行された操縦を行うのに必要な制御力を操縦者に習得させる。
【０２１１】
車両と同様に、CLSは、シミュレータ及びパイロットからの入力を取り込んで、パイロット及びシミュレータの出力を提供しなければならない。 入力は力と機体状態のアプリケーションであり、出力は飛行制御の位置及び力である。CLSには、コクピット制御が機械的にリンクされた制御の動作を模倣できるようにする電気サーボを提供する「アクティブサイドスティック」技術も含まれている。制御からフライーバイーワイヤシステムへとデータが流れ、デジタル飛行制御からサイドスティックへもデータが流れる。飛行制御コンピュータからのデータは、サイドスティックを一緒に動かすとともに、オートパイロットが飛行制御システムへの入力を行う際にサイドスティックを動かす。これらはまた、構造的及び空力的限界のための触覚的合図や、ストールバリア保護のためのスティックシェイカー及びプッシャーをも提供することができる。しかしながら、本出願の方法及びシステムの以前には、正確な触覚的フィードバックが提供されていなかった。
【０２１２】
シミュレーション又は実際のコックピットにおいて、本方法及びシステムは、航空機制御システムの位置制御を提供するために使用され、航空機又は航空機シミュレーションからのフォースキューをコクピットの部品に似せてモデルしたようなフォースフィードバックインタフェイス装置に正確にもたらすために使用され得る。インタフェイス装置の相互作用／力及び航空機のオブジェクト相互作用／力の両方を他方に伝達するために、同じ連続的閉ループシステムを使用することができる。 このように、これらのインタフェイス装置にも、様々なコンプライアンスを伴うスティフ位置制御を提供することができる。
【０２１３】
上述の記載は、当業者が本発明の最良の形態であると現在考えられているものを製造し使用することを可能にするが、当業者は、本発明の特定の実施形態、方法、及び実施例の、変形、組み合わせ及び均等物の存在を理解及び認識するであろう。したがって、本発明は、上述の実施形態、方法、及び実施例によって限定されるものではなく、本発明の範囲及び精神内の全ての実施形態及び方法によるべきである。
【０２１４】
例えば、多くの可能なタイプのアクチュエータ及びセンサを本発明で使用することができる。 また、1つまたは複数の自由度を提供するために、多くのタイプの機構を含めることができる。 さらに、ホストコンピュータをローカルマイクロプロセッサに接続するために、異なるタイプのインタフェイスを使用することができる。 本発明により、幅広い種類及びタイプの力をユーザオブジェクトに伝達することができる。 多くの異なるタイプのアクチュエータ制御法則モデルが、マイクロプロセッサ上で実行される多くの異なるプロセスで実施されることができ、そのうちの幾つかのみが本明細書で説明されている。
【０２１５】
さらに、特定の用語が説明を明瞭にする目的で使用されているが、これらは本発明を限定するものではない。 したがって、添付の特許請求の範囲は、本発明の真の精神及び範囲内にあるような変更、修正及び置換のすべてを含むことが意図される。
【０２１６】
本明細書に提示される実施形態は例示的なものであることが意図されていると理解される。本発明の実施形態は、様々な図に示されている互換性のある特徴の任意の組み合わせを含むことができ、これらの実施形態は、明示的に例示され説明されたものに限定されるべきではない。
【０２１７】
本発明は、その特定の好ましい構成を参照して詳細に記載されているが、他の変形も可能である。したがって、本発明の精神及び範囲は、上記のバージョンに限定されるべきではない。
【図１】
2018516104.tif 000003
【図２】
2018516104.tif 000004
【図３】
2018516104.tif 000005
【図４】
2018516104.tif 000006
【図５】
2018516104.tif 000007
【図６】
2018516104.tif 000008
【図７】
2018516104.tif 000009
【図８Ａ】
2018516104.tif 000010
【図８Ｂ】
2018516104.tif 000011
【図９】
2018516104.tif 000012
【図１０】
2018516104.tif 000013
【図１１】
2018516104.tif 000014
【図１２】
2018516104.tif 000015
【図１３Ａ】
2018516104.tif 000016
【図１３Ｂ】
2018516104.tif 000017
【図１４】
2018516104.tif 000018
【図１５】
2018516104.tif 000019
【図１６】
2018516104.tif 000020
【図１７】
2018516104.tif 000021
【図１８】
2018516104.tif 000022
【図１９Ａ】
2018516104.tif 000023
【図１９Ｂ】
2018516104.tif 000024
【図１９Ｃ】
2018516104.tif 000025
【図１９Ｄ】
2018516104.tif 000026
【図２０Ａ】
2018516104.tif 000027
【図２０Ｂ】
2018516104.tif 000028
【図２０Ｃ】
2018516104.tif 000029
【図２０Ｄ】
2018516104.tif 000030
【図２０Ｅ】
2018516104.tif 000031
【図２１】
2018516104.tif 000032
【図２２】
2018516104.tif 000033
【図２３】
2018516104.tif 000034
【図２４】
2018516104.tif 000035
【図２５】
2018516104.tif 000036
【図２６】
2018516104.tif 000037
【図２７】
2018516104.tif 000038
【図２８】
2018516104.tif 000039
【図２９】
2018516104.tif 000040
【図３０】
2018516104.tif 000041
【国際調査報告】
2018516104.tif 000042
2018516104.tif 000043
2018516104.tif 000044