(57)【要約】実施形態は、ハプティック出力デバイスを制御するためのアーキテクチャおよび通信プロトコルを目的とする。実施形態によれば、第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第二駆動信号と、パケット識別子とを含む複合駆動信号が生成される。コントローラは、第一ユーザ入力エレメントに関連する第一ハプティック出力デバイスと、第二ユーザ入力エレメントに関連する第二ハプティック出力デバイスとを含む。複合駆動信号はコントローラに伝送され、第一および第二駆動信号の実行順序は、パケット識別子に基づいて決定される。【選択図】図２
2018500960.tif 000002
【特許請求の範囲】
【請求項１】
複数のアクチュエータを駆動する方法であって、各アクチュエータは、複数のユーザ入力エレメントのうちの一つに関連し、前記方法は、
第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第二駆動信号と、パケット識別子とを含む複合駆動信号を生成するステップであって、前記第一ハプティック出力デバイスは、第一ユーザ入力エレメントに関連し、前記第二ハプティック出力デバイスは、第二ユーザ入力エレメントに関連する、ステップと、
前記複合駆動信号をコントローラに伝送するステップと
を含み、
前記コントローラでの前記第一および第二駆動信号の実行は、前記パケット識別子に基づく、
方法。
【請求項２】
前記第一および第二駆動信号を同時に伝送するステップをさらに含む、請求項１記載の方法。
【請求項３】
第一クロックと第二クロックとを同期させるステップをさらに含み、前記第一クロックはホストデバイスに設けられ、前記第二クロックは周辺デバイスに設けられる、請求項１記載の方法。
【請求項４】
前記複合駆動信号は、ＵＳＢ対応チャネル上で受信される、請求項１記載の方法。
【請求項５】
前記複数のユーザ入力エレメントは、コントローラまたはゲームパッドを含む周辺デバイスに設けられる、請求項１記載の方法。
【請求項６】
前記第一または第二ユーザ入力エレメントは、周辺デバイスのトリガエレメントである、請求項１記載の方法。
【請求項７】
プロセッサと、
前記プロセッサによる実行のためのプログラムを記憶するメモリと、を備え、前記プログラムは、
第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第二駆動信号と、パケット識別子とを含む複合駆動信号を生成し、前記第一ハプティック出力デバイスは、第一ユーザ入力エレメントに関連し、前記第二ハプティック出力デバイスは、第二ユーザ入力エレメントに関連し、
前記複合駆動信号をコントローラに伝送するための命令を含み、
前記コントローラでの前記第一および第二駆動信号の実行は、前記パケット識別子に基づく、
デバイス。
【請求項８】
前記第一および第二駆動信号を同時に伝送するための命令をさらに含む、請求項７記載のデバイス。
【請求項９】
第一クロックと第二クロックとを同期させるための命令をさらに含み、前記第一クロックはホストデバイスに設けられ、前記第二クロックは周辺デバイスに設けられる、請求項７記載のデバイス。
【請求項１０】
前記複合駆動信号は、ＵＳＢ対応チャネル上で受信される、請求項７記載のデバイス。
【請求項１１】
複数のユーザ入力エレメントは、コントローラまたはゲームパッドを含む周辺デバイスに設けられる、請求項７記載のデバイス。
【請求項１２】
前記第一または第二ユーザ入力エレメントは、周辺デバイスのトリガエレメントである、請求項７記載のデバイス。
【請求項１３】
プロセッサによって実行されるように構成されたプログラムを記憶する非一時的コンピュータ可読記憶媒体であって、前記プログラムは、
第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第二駆動信号と、パケット識別子とを含む複合駆動信号を生成し、前記第一ハプティック出力デバイスは、第一ユーザ入力エレメントに関連し、前記第二ハプティック出力デバイスは、第二ユーザ入力エレメントに関連し、
前記複合駆動信号をコントローラに伝送するための命令を含み、
前記コントローラでの前記第一および第二駆動信号の実行は、前記パケット識別子に基づく、
コンピュータ可読記憶媒体。
【請求項１４】
前記第一および第二駆動信号を同時に伝送するための命令をさらに含む、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１５】
第一クロックと第二クロックとを同期させるための命令をさらに含み、前記第一クロックはホストデバイスに設けられ、前記第二クロックは周辺デバイスに設けられる、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１６】
前記複合駆動信号は、ＵＳＢ対応チャネル上で受信される、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１７】
複数のユーザ入力エレメントは、コントローラまたはゲームパッドを含む周辺デバイスに設けられる、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１８】
前記第一または第二ユーザ入力エレメントは、周辺デバイスのトリガエレメントである、請求項１３記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先出願
本出願は、参照により全体として本明細書に組み込まれる２０１４年１２月２３日に出願の米国特許仮出願第６２／０９６，２５１号の利益を主張する。
【０００２】
実施形態は、一般に電子デバイスを目的とし、より具体的には、ハプティック効果を生み出す電子デバイスを目的とする。
【背景技術】
【０００３】
ビデオゲームおよびビデオゲームシステムが非常に人気となっている。ビデオゲームデバイスまたはコントローラは通常、ユーザにフィードバックを提供するために、視覚および聴覚キューを用いる。いくつかのインタフェースデバイスでは、運動感覚フィードバック（例えば能動および抵抗力フィードバック）、および／または触知フィードバック（例えば振動、触感、温度変化など）がユーザに提供されうる。一般的に、そのようなフィードバックは「ハプティックフィードバック」または「ハプティック効果」の総称で知られている。ハプティックフィードバックは、ユーザのビデオゲームコントローラまたは他の電子デバイスとの相互作用を強化および簡素化するキューを提供する。例えばハプティック効果は、ユーザに特定のイベントを警告するため、または、模擬環境もしくは仮想環境内でのより高い没入感を生むリアルなフィードバックを提供するために、ビデオゲームコントローラまたは他の電子デバイスのユーザにキューを提供しうる。
【０００４】
ユーザがユーザ入力エレメントと相互作用して動作を引き起こすその他のデバイスも、ハプティックフィードバックまたはハプティック効果から利益を受けうる。例えばそのようなデバイスには、医療デバイス、自動車制御、遠隔制御、および他の類似のデバイスを含むことができる。
【発明の概要】
【０００５】
本発明の実施形態は、関連技術を実質的に改良するハプティック効果を生み出すように構成された電子デバイスを目的とする。
【０００６】
実施形態の特徴および効果は、以下の説明に記載され、または説明から明らかとなり、または本発明の実施から習得されうる。
【０００７】
一つの実施形態例では、アーキテクチャおよび通信プロトコルにしたがってハプティック出力デバイスを制御するための機能が提供される。第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第一駆動信号と、パケット識別子とを含む複合駆動信号が生成される。コントローラは、第一ユーザ入力エレメントに関連する第一ハプティック出力デバイスと、第二ユーザ入力エレメントに関連する第二ハプティック出力デバイスとを含む。複合駆動信号がコントローラに伝送され、第一および第二駆動信号の実行順序はパケット識別子に基づいて決定される。
【０００８】
以上の概要および以下の詳細な記載は例示および説明的なものであり、本発明を記載された例に制限することを目的としたものではないことを理解されたい。
【０００９】
添付の図面とあわせて理解されるべき以下の好ましい実施形態の詳細な説明から、さらなる実施形態、詳細、利点、および修正が明らかとなる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態例に係るシステムのブロックダイヤグラムである。
【図２】本発明の実施形態例に係るハプティック効果を提供するためのシステムの簡略ブロックダイヤグラムである。
【図３】本発明の実施形態例に係るハプティック効果ソフトウェアスタックのブロックダイヤグラムである。
【図４】本発明の実施形態例に係るハプティック通信を制御するためのシステムの簡略ブロックダイヤグラムである。
【図５】本発明の実施形態例に係る複数のハプティック出力デバイスを駆動するための機能のフローダイヤグラムである。
【図６】本発明の実施形態例に係る期待される入力信号を用いてユーザ入力エレメントの位置をマッピングするための機能のフローダイヤグラムである。
【図７】本発明の実施形態例に係るホストデバイスからコントローラに送信されるハプティックストリームレポートの例である。
【図８】本発明の実施形態例に係るコントローラからホストデバイスに送信されるハプティックストリームレポートの例である。
【図９】本発明の実施形態例に係るコントローラからホストデバイスに送信される能力レポートの例である。
【図１０】本発明の実施形態例に係るホストデバイスからコントローラに送信されるステータスリクエストレポートの例である。
【図１１】本発明の実施形態例に係るホストデバイスからコントローラに送信される構成変更レポートの例である。
【図１２】本発明の実施形態の用途に適したコントローラの機能ブロックダイヤグラムである。
【図１３Ａ】本発明の実施形態の用途に適したコントローラの図である。
【図１３Ｂ】本発明の実施形態の用途に適したコントローラの図である。
【発明を実施するための形態】
【００１１】
実施形態例は、アーキテクチャおよび通信プロトコルにしたがってハプティック出力デバイスを制御するための機能を目的とする。第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第二駆動信号と、パケット識別子とを含む複合駆動信号が生成される。コントローラは、第一ユーザ入力エレメントに関連する第一ハプティック出力デバイスと、第二ユーザ入力エレメントに関連する第二ハプティック出力デバイスとを含む。複合駆動信号はコントローラに伝送され、第一および第二駆動信号の実行順序はパケット識別子に基づいて決定される。
【００１２】
様々な実施形態において、デバイスを使用するための様々なユーザインタフェースおよび方法が記載される。一部の実施形態では、デバイスは、携帯可能電子デバイス（例えばゲームコントローラ、コンソール、携帯電話、スマートフォン、タブレットなど）である。しかし、ユーザインタフェースおよび関連の方法は、キーボード、マウス、トラックボールなどの一つ以上の他の物理的ユーザインタフェースデバイスを含みうる、パーソナルコンピュータ、医療デバイス、ラップトップなどの多数の他のデバイスに適用されうることを理解されたい。
【００１３】
図１は、本発明の実施形態例に係るシステム１００のブロックダイヤグラムである。
【００１４】
システム１００は、リモートソースからデータを伝送および／または受信するように構成された通信デバイス１１０を含みうる。通信デバイス１１０は、ネットワーク（図示せず）上でプロセッサ１２０から別のデバイスへ送信されるデータを符号化し、ネットワーク上で別のシステムからプロセッサ１２０のために受信されるデータを復号することにより、プロセッサ１２０と他のデバイスとの間の接続性を可能にすることができる。
【００１５】
例えば、通信デバイス１１０は、ワイヤレスネットワーク通信を提供するように構成されたネットワークインタフェースカードを含みうる。赤外線、無線、ブルートゥース（登録商標）、Ｗｉ‐Ｆｉおよび／またはセルラ方式通信を含め、様々なワイヤレスコミュニケーション技術が使用されうる。あるいは、通信デバイス１１０は、イーサネット（登録商標）接続等の有線ネットワーク接続（単数または複数）を提供するように構成されてもよい。
【００１６】
プロセッサ１２０は、システム１００の計算および制御機能を行うために、一つ以上の汎用または専用プロセッサを含みうる。プロセッサ１２０は、マイクロプロセシングデバイス等の単一の集積回路を含んでもよいし、またはプロセッサ１２０の機能を達成するために協働する複数の集積回路デバイスおよび／もしくは回路基板を含んでもよい。加えて、プロセッサ１２０は、メモリ１４０内に格納された、オペレーティングシステム１４１、通信ジュール１４２、および他のアプリケーション１４３等のコンピュータプログラムを実行しうる。
【００１７】
システム１００は、プロセッサ１２０により実行するための情報および命令を格納するメモリ１４０を含みうる。メモリ１４０は、データの取り出し、提示、修正、および格納のための様々なコンポーネントを含みうる。例えば、メモリ１４０は、プロセッサ１２０により実行されたときに機能を提供するソフトウェアモジュールを格納しうる。モジュールは、システム１００にオペレーティングシステム機能を提供するオペレーティングシステム１４１を含みうる。モジュールは、システム１００とコントローラ１５０との間のパケットベースの通信を制御するように構成された通信モジュール１４２をさらに含みうる。一部の場合には、パケットベースの通信は、一つ以上のＵＳＢ（「Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ」）チャネル上でシステム１００とコントローラ１５０との間をリレーされる。また、通信モジュール１４２は、様々な他のアプリケーション１４３とインタフェースし、他のアプリケーション１４３から生じるハプティック命令を一つ以上の標準および／または独自の通信プロトコルを使用してリレーする。本明細書にはＵＳＢチャネルが例として記載されるが、本発明の実施形態はブルートゥース等の他の通信プロトコルに容易に適用できる。システム１００内の他のアプリケーション１４３は、コントローラ１５０（例えばゲームパッド、ウェアラブルデバイスなど）等の周辺デバイスに制御機能を提供するように構成された周辺ファームウェア等の追加の機能を含みうる。
【００１８】
非一時的メモリ１４０は、プロセッサ１２０によりアクセスできる様々なコンピュータ可読媒体を含みうる。様々な実施形態において、メモリ１４０は、揮発性および不揮発性媒体、取外し可能および取外し不可能媒体を含みうる。例えば、メモリ１４０は、ランダムアクセスメモリ（「ＲＡＭ；ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ」）、ダイナミックＲＡＭ（ＤＲＡＭ；ｄｙｎａｍｉｃ  ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ；ｓｔａｔｉｃ  ＲＡＭ）、リードオンリメモリ（「ＲＯＭ；ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ」）、フラッシュメモリ、キャッシュメモリ、および／または他の任意のタイプの非一時的コンピュータ可読媒体の任意の組み合わせを含みうる。代わりにまたは加えて、メモリ１４０は、一つ以上のネットワークまたはクラウドでアクセス可能な記憶媒体を含みうる。
【００１９】
単一のシステムとして図示されているが、システム１００の機能は、分散システムとして実装されてもよい。例えば、メモリ１４０およびプロセッサ１２０は、システム１００を集合的に構成する複数の異なるコンピュータに分散されてもよい。一実施形態では、システム１００はデバイス（例えばパーソナルコンピュータ、コンソール、ビデオゲームコンソール等）の一部であってもよく、システム１００は、デバイスにハプティック効果機能を提供する。別の実施形態では、システム１００は、デバイスとは別個であってもよく、デバイスに上述の機能をリモートで提供してもよい。
【００２０】
システム１００は、コントローラ１５０に動作可能に接続されうる。コントローラ１５０は、入力をシステム１００に提供するように構成された周辺デバイスであってもよい。コントローラ１５０は、無線接続または有線接続を用いてシステム１００に動作可能に接続されうる。コントローラ１５０は、無線接続または有線接続を用いてシステム１００と通信するように構成されたローカルプロセッサも含むことができる。あるいは、コントローラ１５０は、ローカルプロセッサを含まないように構成されてもよく、コントローラ１５０に関連する全ての入力信号および／または出力信号が、システム１００のコンポーネントにより処理されてもよい。コントローラ１５０がローカルプロセッサを有する実施形態では、制御機能を提供するように構成された通信モジュールおよび周辺ファームウェア等の追加の機能がコントローラ１５０内にあってもよい。ここで、ホストデバイスのクロックと周辺デバイスのクロックとは同期されうる。
【００２１】
コントローラ１５０は、ユーザが相互作用することができ、システム１００に入力を提供することができる、一つ以上のデジタルボタン、一つ以上のアナログボタン、一つ以上のバンパ、一つ以上の方向パッド、一つ以上のアナログもしくはデジタルスティック、一つ以上のドライビングホイール、および／または一つ以上のユーザ入力エレメントをさらに含むことができる。コントローラ１５０は、ユーザがさらに相互作用することができ、システム１００にさらに入力を提供することができる、一つ以上のアナログまたはデジタルトリガボタン（または「トリガ」）も含むことができる。より詳細に後述するように、コントローラ１５０は、コントローラ１５０の少なくとも一つのトリガに対して双方向押／引力を及ぼすように構成された、モータまたは別のタイプのアクチュエータもしくはハプティック出力デバイスをさらに含むことができる。
【００２２】
コントローラ１５０は、一つ以上のアクチュエータまたは他のタイプのハプティック出力デバイスも含むことができる。コントローラ１５０のローカルプロセッサ、またはコントローラ１５０がローカルプロセッサを含まない実施形態におけるプロセッサ１２０は、コントローラ１５０の少なくとも一つのアクチュエータに、ハプティック効果に関連したハプティック信号を伝送すればよい。次に、アクチュエータが、ハプティック信号に応じて振動触知ハプティック効果、運動感覚ハプティック効果、または変形ハプティック効果等のハプティック効果を出力する。ハプティック効果は、コントローラ１５０のユーザ入力エレメント（例えば、デジタルボタン、アナログボタン、バンパ、方向パッド、アナログもしくはデジタルスティック、ドライビングホイールまたはトリガ）で経験されることができる。あるいは、コントローラ１５０の外側表面でハプティック効果が経験されてもよい。
【００２３】
アクチュエータはハプティック出力デバイスの一例であり、ここで、ハプティック出力デバイスは、駆動信号に応じて振動触知ハプティック効果、静電摩擦ハプティック効果、温度変化、および／または変形ハプティック効果等のハプティック効果を出力するように構成されたデバイスである。代替的実施形態では、コントローラ１５０内の一つ以上のアクチュエータは、何らかの他のタイプのハプティック出力デバイスで置き換えられてもよい。ハプティック出力デバイスは、例えば、電動モータ、電磁アクチュエータ、ボイスコイル、形状記憶合金、電気活性ポリマ、ソレノイド、偏心モータ（「ＥＲＭ；ｅｃｃｅｎｔｒｉｃ  ｒｏｔａｔｉｎｇ  ｍａｓｓ  ｍｏｔｏｒ」）、ハーモニックＥＲＭモータ（「ＨＥＲＭ；ｈａｒｍｏｎｉｃ  ＥＲＭ  ｍｏｔｏｒ」）、線形共振アクチュエータ（「ＬＲＡ；ｌｉｎｅａｒ  ｒｅｓｏｎａｎｔ  ａｃｔｕａｔｏｒ」）、圧電アクチュエータ、高帯域アクチュエータ、電気活性ポリマ（「ＥＡＰ；ｅｌｅｃｔｒｏａｃｔｉｖｅ  ｐｏｌｙｍｅｒ」）アクチュエータ、静電摩擦ディスプレイ、または超音波振動ジェネレータでありうる。一部の場合には、ハプティック出力デバイスは、ハプティック出力デバイス駆動回路を含んでもよい。一部の実施形態では、ハプティック出力デバイスは、一方向性でも双方向性でもよい。
【００２４】
コントローラ１５０は、一つ以上のスピーカをさらに含むことができる。コントローラ１５０のローカルプロセッサ、またはコントローラ１５０がローカルプロセッサを含まない実施形態におけるプロセッサ１２０は、コントローラ１５０の少なくとも一つのスピーカに音声信号を伝送すればよく、次いでスピーカが音声効果を出力する。スピーカは、例えば、ダイナミックラウドスピーカ、エレクトロダイナミックラウドスピーカ、圧電ラウドスピーカ、磁気歪ラウドスピーカ、静電ラウドスピーカ、リボンプラナー磁気ラウドスピーカ、屈曲波ラウドスピーカ、フラットパネルラウドスピーカ、ハイルエアモーショントランスデューサ、プラズマアークスピーカ、およびデジタルラウドスピーカであればよい。
【００２５】
コントローラ１５０は、一つ以上のセンサをさらに含むことができる。センサは、音、移動、加速度、生体信号、距離、流量、力／圧力／歪み／屈曲、湿度、線形位置、方位／傾斜、無線周波数、回転位置、回転速度、スイッチの操作、温度、振動、または可視光強度等であるがこれに限定されない、エネルギーの一形態または他の物理的性質を検出するように構成できる。センサは、検出エネルギーまたは他の物理的特性を、電気信号または仮想センサ情報を表す任意の信号に変換するようにさらに構成でき、コントローラ１５０は、変換された信号を、コントローラ１５０のローカルプロセッサに、またはコントローラ１５０がローカルプロセッサを含まない実施形態におけるプロセッサ１２０に送信することができる。
【００２６】
図２は、本発明の実施形態例に係るハプティック効果を提供するためのシステム２００の簡略ブロックダイヤグラムである。
【００２７】
図２に示すように、システム２００は、一つ以上のアプリケーション２１０を含む。各アプリケーション２１０は、様々な命令２１５を生成しうる。命令２１５は、通信ドライバ２２０に供給される。命令２１５を受信すると、通信ドライバ２２０は、命令２１５に基づいて一つ以上のハプティック駆動信号２２５を生成しうる。一部の構成においては、ハプティック駆動信号２２５は、一つ以上のレポートフォーマットにしたがって構成されうる。それからハプティック駆動信号２２５は、コントローラ２３０に伝送される。
【００２８】
コントローラ２３０で、ハプティック駆動信号２２５が一つ以上のハプティック出力デバイス２３２によって実行されうる。ハプティック駆動信号２２５を実行することによって、ハプティック出力デバイス２３２はエンドユーザにハプティック効果を表現する。
【００２９】
図３は、本発明の実施形態例に係るハプティック効果ソフトウェアスタック３００のブロックダイヤグラムである。図３に示されるように、ソフトウェアスタック３００は、デバイスモジュール３１０、周辺ファームウェアモジュール３２０、コントローラモジュール３３０、駆動モジュール３４０、およびランブル駆動モジュール３５０を含む。ハプティック効果ソフトウェアスタック３００は、図１のシステム１００等のシステムに実装される。
【００３０】
デバイスモジュール３１０は、入力管理コード３１１、周辺入力アプリケーションプログラミングインタフェース（「ＡＰＩ；ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ」）３１２、ランブルＡＰＩ３１３、ハプティック効果ＡＰＩ３１４、直接プレイバック／クロスオーバ部３１５、トリガエンジン３１６、空間化エンジン３１７およびエンコーダ３１８等の様々なモジュールを含みうる。
【００３１】
入力管理コード３１１は、デバイス内で実行されるゲームアプリケーションまたは他のタイプのアプリケーションの文脈でコントローラ３３０により提供される入力を管理するコンピュータ可読命令のセットを含みうる。
【００３２】
周辺入力ＡＰＩ３１２は、コントローラ３３０により提供される入力を受信および管理するためにゲーム入力管理コード３１１が周辺ファームウェア３２０と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含みうる。
【００３３】
ランブルＡＰＩ３１３は、コントローラ３３０の一つ以上のランブルモータまたはランブルアクチュエータ（例えば図３のランブルモータＬおよびＲ）にランブル命令を伝送するために入力管理コード３１１が周辺ファームウェア３２０と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含みうる。加えて、ランブル命令は、コントローラ３３０のランブルモータまたはランブルアクチュエータに一般的ハプティック効果またはランブルハプティック効果を生み出させることができる。
【００３４】
（図３に「ＡＰＩ」として識別される）ハプティック効果ＡＰＩ３１４は、入力管理コード３１１にアクセス可能であり、入力管理コード３１１がコントローラ３３０にハプティック命令を伝送するために周辺ファームウェア３２０と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含みうる。加えて、ハプティック命令は、コントローラ３３０の一つ以上のターゲットモータまたはターゲットアクチュエータに、コントローラ３３０の一つ以上のユーザ入力エレメントでハプティック効果を生み出させうる。
【００３５】
ハプティック効果ＡＰＩ３１４は、一つ以上のハプティック効果定義を記憶することもできる。ハプティック効果定義は、ハプティックファイルまたはハプティックストリーム等、予め定義され、記憶装置内に記憶されることができ、一つ以上のランブルモータ、ランブルアクチュエータ、ターゲットモータ、またはターゲットアクチュエータに送信されて、コントローラ３３０のコンポーネントまたはユーザ入力エレメントでハプティック効果を生み出すことができる、ハプティック信号等のハプティックデータを含むデータ構造である。ハプティックデータは、対応するハプティック効果の一つ以上の属性を含むことができ、属性は、パラメータとして記憶されることができる。ハプティック効果定義のパラメータの例には、振幅パラメータ、周波数パラメータ、波形パラメータ、エンベロープパラメータ、マグニチュード（または強度）パラメータ、および持続時間パラメータが含まれうる。
【００３６】
ハプティック効果ＡＰＩ３１４は、ゲーム入力管理コード３１１が直接プレイバック／クロスオーバ部３１５、トリガエンジン３１６、および空間化エンジン３１７と相互作用することを可能にでき、さらに、ゲーム入力管理コード３１１により呼び出されたリクエストにしたがって直接プレイバック／クロスオーバ部３１５、トリガエンジン３１６、および空間化エンジン３１７を管理することができる。さらに、ハプティック効果ＡＰＩ３１４は、周辺ファームウェア３２０との通信に使用される、一つ以上のハプティック効果の生成に使用されるデータを記憶することができる。
【００３７】
直接プレイバック／クロスオーバ部３１５は、ハプティックデータを入力として受信し、ハプティックデータを出力として生み出し、ハプティックデータをコントローラ３３０の一つ以上のターゲットモータ、またはターゲットアクチュエータ（例えば図３のモータＬおよびＲ）に伝送しうる。ある実施形態では、直接プレイバック／クロスオーバ部３１５は、入力されたハプティックデータのフォーマットを修正せずに、入力されたハプティックデータを直接出力すればよい。その結果、入力されたハプティックデータが「そのまま」再生される。他の実施形態では、直接プレイバック／クロスオーバ部３１５は、入力されたハプティックデータを第一フォーマットから第二フォーマットへ変換し、さらに変換されたハプティックデータを出力することができる。再生のタイプに応じて、直接プレイバック／クロスオーバ部３１５は、ハプティックデータを変換するためにプログラマブルクロスオーバを任意に使用することができる。ハプティックデータを変換することにより、デバイスモジュールは、ハプティック効果を分解し、複数のアクチュエータでハプティック効果を再生することができる。
【００３８】
ハプティックデータのフォーマットは、ハプティックエレメンタリストリーム（「ＨＥＳ；ｈａｐｔｉｃ  ｅｌｅｍｅｎｔａｒｙ  ｓｔｒｅａｍ」）フォーマットであればよい。ＨＥＳフォーマットは、デバイスにストリーミングされうるハプティックデータを表すためのファイルまたはデータフォーマットである。ハプティックデータは、圧縮されていない音が表されるのと同一または類似の様式で表されうるが、ハプティックデータは、ＨＥＳフォーマットにおいて暗号化されうる。
【００３９】
トリガエンジン３１６は、ハプティック効果定義等のハプティックデータを受信し、トリガデータ３２３等のユーザ入力データに基づいて、ハプティックデータを修正することができる。トリガデータは、コントローラ３３０の一つ以上のトリガ（例えば図３のトリガＬおよびＲ）の位置および／または範囲を指示する一つ以上のパラメータを含むデータである。トリガエンジン３１６は、コントローラ３３０にハプティック命令をさらに伝送することができる。例えば、トリガエンジン３１６は、コントローラ３３０の様々なユーザ入力エレメントにハプティック命令を伝送することができる。前述したように、ハプティック命令は、コントローラ３３０の一つ以上のターゲットモータまたはターゲットアクチュエータに、コントローラ３３０の一つ以上のユーザ入力エレメントでハプティック効果を生み出させることができる。
【００４０】
空間化エンジン３１７は、ハプティックデータを受信し、空間化データに基づいてハプティックデータを修正することができる。空間化データには、それぞれのユーザ入力エレメント上のハプティック効果の順序付け等のハプティック効果の所望の方向および／または流れを指示するデータを含むことができる。ある実施形態では、空間化エンジン３１７は、方向および／または流れを含む空間化データを入力管理コード３１１から受信しうる。
【００４１】
空間化エンジン３１７は、コントローラ３３０の一つ以上のランブルモータまたはランブルアクチュエータ（例えば図３のランブルモータＬおよびＲ）に関してトリガハプティック効果等のハプティック効果がスケーリングされ、コントローラ３３０の一つ以上のターゲットモータまたはターゲットアクチュエータ（例えば図３に示したモータＬおよびＲ）に関してもハプティック効果がスケーリングされるように、ハプティックデータを修正することができる。換言すれば、空間化エンジン３１７は、全体的なハプティック効果の方向および流れの感覚を伝えるために、各モータまたはアクチュエータに送信されるハプティックデータを修正し、これにより各モータまたはアクチュエータで経験されるハプティック効果を修正することができる。例えば、空間化エンジン３１７は、あるモータまたはアクチュエータで経験されるハプティック効果を強調するために、ハプティック効果の一つ以上の部分をスケーリングすることができる。例えば、空間化エンジン３１７は、ハプティック効果を経験させるモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、ハプティック効果をより目立たせることができる（例えば、大きさ、持続時間を増加させるなど）。加えて、空間化エンジン３１７は、他のモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、それらのモータまたはアクチュエータで経験される他のハプティック効果を目立たないようにすることができる（例えば、大きさ、持続時間を減少させるなど）。一部の実施形態では、空間化エンジン３１７は、ハプティックデータを実時間でまたは実質的に実時間で修正することができる。さらに、一部の実施形態では、空間化エンジン３１７は、全体的トリガハプティック効果を誇張するために、入力とモータまたはアクチュエータの出力との間の非線形関係を有していてもよい。
【００４２】
エンコーダ３１８は、直接プレイバック／クロスオーバ部３１５、トリガエンジン３１６、および／または空間化エンジン３１７から受信したハプティックデータを一フォーマットに符号化する。一実施形態では、このフォーマットはＨＥＳフォーマットであってもよい。エンコーダ３１８は、符号化されたハプティックデータを周辺ファームウェア３２０に伝送することができる。
【００４３】
周辺ファームウェア３２０は、一つ以上の周辺デバイス（例えばコントローラ）のためのファームウェアである。周辺ファームウェア３２０は、デコーダおよびクロスオーバ部３２１、トリガ制御部３２２、トリガデータ３２３、他の機能３２４、およびランブル制御部３２５等の様々なモジュールを含みうる。
【００４４】
デコーダおよびクロスオーバ部３２１は、エンコーダ３１８から符号化されたハプティックデータを受信でき、符号化されたハプティックデータを復号する。一部の実施形態では、デコーダおよびクロスオーバ部３２１は、符号化されたハプティックデータを復号するために、プログラマブルクロスオーバを計算する。デコーダおよびクロスオーバ部３２１は、プログラマブルクロスオーバを実時間で計算しうる。
【００４５】
トリガ制御部３２２は、コントローラ３３０（例えば図３のモータＬおよびＲ）の一つ以上のターゲットモータまたはターゲットアクチュエータのための低レベル制御ＡＰＩである。トリガ制御部３２２は、トリガ命令を受信し、トリガ命令を、コントローラ３３０の指定のターゲットモータまたはターゲットアクチュエータへの低レベルトリガ命令に変換し、低レベルトリガ命令を、コントローラ３３０の指定のターゲットモータまたはターゲットアクチュエータに伝送することができる。低レベルトリガ命令は、指定のターゲットモータまたはターゲットアクチュエータに、コントローラ３３０の指定のトリガでトリガハプティック効果を生み出させることができる。
【００４６】
前述のように、トリガデータ３２３は、コントローラ３３０の一つ以上のトリガ（例えば図３のトリガＬおよびＲ）の位置および／または範囲を指示する一つ以上のパラメータを含むデータである。周辺ファームウェア３２０によって、コントローラ３３０からトリガデータ３２３が受信されうる。周辺ファームウェア３２０は、トリガデータ３２３をさらに記憶することができ、トリガデータ３２３をデバイスモジュール３１０にさらに伝送することができる。
【００４７】
他のゲームパッド機能３２４は、周辺ファームウェア３２０によって管理されるコントローラ３３０の機能であってもよい。このような機能には、有線／無線通信、入力報告、プロトコル実装、電力管理などの機能を含むことができる。
【００４８】
ランブル制御部３２５は、コントローラ３３０の一つ以上のランブルモータまたはランブルアクチュエータ（例えば図３のランブルモータＬおよびＲ）のための低レベル制御ＡＰＩである。ランブル制御部３２５は、ランブル命令を受信し、ランブル命令を、コントローラ３３０の指定のランブルモータまたはランブルアクチュエータのための低レベルランブル命令に変換し、低レベルトリガ命令を、コントローラ３３０の指定のランブルモータまたはランブルアクチュエータに伝送することができる。
【００４９】
通信ドライバモジュール３２６は、デバイスモジュール３１０とコントローラ３３０との間のパケットベースの通信を制御するように構成されたファームウェアモジュールである。例えば、パケットベースの通信は、一つ以上のＵＳＢチャネル上でデバイスモジュール３１０とコントローラ３３０との間をリレーされうる。デバイスモジュール３１０から命令を受信すると、通信ドライバモジュール３２６は、一つ以上のハプティック駆動信号を生成しうる。一部の構成では、ハプティック駆動信号は、一つ以上のレポートフォーマットにしたがって生成される。
【００５０】
通信ドライバモジュール３２６は、ハードウェアに依存してもしなくてもよいファームウェアの複数のセクションを含みうる。一部の場合には、ハードウェアに依存しないファームウェアのセクションは、ハードウェアに依存するセクションから分離されてもよい。ここで、ハードウェアに依存しないファームウェアは、機能ポインタを用いてハードウェアに依存するファームウェアと相互作用しうる。
【００５１】
コントローラ３３０は、トリガＬおよびＲを含みうる。コントローラ３３０は、ギヤボックスＬおよびＲ、ならびにモータＬおよびＲをさらに含みうる。モータＬおよびギヤボックスＬは、コントローラ３３０内のトリガＬに動作可能に結合される。同様に、モータＲおよびギヤボックスＲは、コントローラ３３０内のトリガＲに動作可能に結合される。モータＬがトリガ命令を受信すると、モータＬおよびギヤボックスＬが集合的にトリガＬでトリガハプティック効果を経験させうる。同様に、モータＲがトリガ命令を受信すると、モータＲおよびギヤボックスＲが集合的にトリガＲでトリガハプティック効果を経験させうる。周辺ファームウェア３２０は、駆動エレクトロニクス３４０を用いてコントローラ３３０のモータＬおよびＲにトリガ命令を送信しうる。
【００５２】
コントローラ３３０は、ポテンショメータＬおよびＲをさらに含みうる。ポテンショメータＬは、トリガＬの位置および／または範囲を検出することができ、検出されたトリガＬの位置および／または範囲をトリガデータとして周辺ファームウェア３２０にさらに送信することができる。同様に、ポテンショメータＲは、トリガＲの位置および／または範囲を検出することができ、検出されたトリガＲの位置および／または範囲をトリガデータとして周辺ファームウェア３２０にさらに送信することができる。
【００５３】
コントローラ３３０は、ランブルモータＬおよびＲをさらに含みうる。ランブルモータＬがランブル命令を受信すると、ランブルモータＬは、コントローラ３３０の左コンポーネントに沿ってハプティック効果を経験させる。同様に、ランブルモータＲがランブル命令を受信すると、ランブルモータＲは、コントローラ３３０の右コンポーネントに沿ってハプティック効果を経験させる。周辺ファームウェア３２０は、ランブル駆動エレクトロニクス３５０を用いてランブルモータＬおよびＲにランブル命令を送信することができる。
【００５４】
図４は、本発明の実施形態例に係るハプティック通信を制御するためのシステム４００の簡略ブロックダイヤグラムである。
【００５５】
システム４００への入力として、一つ以上のアプリケーション４１０は様々なハプティック命令を生成しうる。一部の場合には、ハプティック命令は、ハプティック効果ライブラリ４１５から取り出されうる。ハプティック命令は、システム４００の様々なコンポーネントによって解析され、混合され、ＵＳＢ対応チャネル上の伝送に適したパケット化されたハプティック駆動信号に変換されうる。
【００５６】
ハプティックエンジン４２０は、低レベルＡＰＩ機能を使用してアプリケーション４１０から生じるハプティック効果命令を管理する高レベルＡＰＩ（「アプリケーションプログラミングインタフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）」）である。例えば、ハプティックエンジン４２０は、ハプティック効果の再生をロード、開始、停止、修正および／または表現するように構成されうる。
【００５７】
ハプティックエンジン４２０は、ハプティック効果解析器４３０とインタフェース接続する。名称が示す通り、ハプティック効果解析器４３０は、ハプティック効果命令をそれらの動作特性を定義するセグメントを解析するように構成される。一部の場合には、ハプティック効果解析器４３０は、追加の動作特性をメモリ（例えばハプティック効果ライブラリ４１５）から取り出すこともできる。代わりにまたは加えて、ハプティック効果解析器４３０は、ハプティック効果をメモリにロードし、ハプティック効果フォーマットを検証し、パケットサイズ、効果持続時間および他のハプティック効果データ等のハプティック効果に関係する様々な情報を取り出すためのＡＰＩを含む。
【００５８】
ハプティックエンジン４２０は、ハプティックミキサ４４０ともインタフェース接続する。ハプティックミキサ４４０では、様々なハプティック出力デバイスを対象とするハプティック命令が、単一のハプティック命令セットに組み合わせられうる。ハプティックミキサ４４０を実装することにより、システム４００は、複数のハプティック効果を異なるハプティック出力デバイスで同時に再生することができる。ここで、様々なハプティック効果の開始および／または停止時間が調節および／または決定されうる。加えて、ハプティックミキサ４４０は、ミキサバッファ（図示せず）のコンテンツを管理しうる。
【００５９】
ハプティックエンジン４２０は、ハプティックデバイスハンドラ４５０とさらにインタフェース接続する。ハプティックデバイスハンドラ４５０は、ハプティック出力デバイスとの通信を開始および管理する。例えば、ハプティックデバイスハンドラ４５０は、個々のハプティック出力デバイスのハンドラ（例えば識別子）を取り出すように構成される。そのためハプティックデバイスハンドラ４５０は、システム４００の様々なハプティック出力デバイスでハプティック効果を表現することができる。一部の場合には、ハプティックデバイスハンドラ４５０はまた、ハプティック効果を表現するために利用されるいくつかの状態機械構造を初期化する。
【００６０】
さらに、ハプティックデバイスハンドラ４５０は、ハプティックレポートハンドラ４６０とＵＳＢ  ＨＩＤ（「ヒューマンインタフェースデバイス（Ｈｕｍａｎ  Ｉｎｔｅｒｆａｃｅ  Ｄｅｖｉｃｅ）」）ライブラリ４７０とを含むＵＳＢ通信レイヤとインタフェース接続する。ハプティックレポートハンドラ４６０は、アプリケーション４１０から生じるハプティック命令を、ＵＳＢチャネル上の伝送に適したパケット化されたデータにパッケージする。そしてＵＳＢ  ＨＩＤライブラリ４７０は、ＵＳＢ通信を促進するために使用される様々な機能を記憶する。例えば、ＵＳＢ  ＨＩＤライブラリ４７０は、ハプティック命令を符号化および復号するための機能を記憶する。別の例では、ＵＳＢ  ＨＩＤライブラリ４７０は、ＵＳＢ通信に対処するためのＵＳＢ記述子および機能を記憶する。
【００６１】
コンポーネント４２０〜４７０を含むシステム４００の様々なコンポーネントを利用することによって、コントローラ（図２のコントローラ２３０等）とアプリケーション４１０との間のＵＳＢ対応通信が達成されうる。コントローラとアプリケーション４１０との間に、ゲームパッドファームウェア４８０およびコントローラ入力リーダ４９０等の追加のレイヤが使用されてもよい。例えば、コントローラ入力リーダ４９０は、コントローラのユーザ入力エレメントの状態をアプリケーション４１０にレポートする。
【００６２】
図５は、本発明の実施形態例に係る複数のハプティック出力デバイスを駆動するための機能のフローダイヤグラムである。一部の構成においては、図５（そして、下記の図６）のフローダイヤグラムの機能は、メモリもしくは他のコンピュータ可読または有形の媒体に記憶されたソフトウェアにより実装され、プロセッサにより実行されうる。他の実施形態では、機能は、ハードウェア（例えば、特定用途向け集積回路（「ＡＳＩＣ；ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ」）、プログラム可能ゲートアレイ（「ＰＧＡ；ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ」）、フィールドプログラム可能ゲートアレイ（「ＦＰＧＡ；ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ」）などを用いて）、またはハードウェアおよびソフトウェアの任意の組み合わせにより実施されてもよい。
【００６３】
最初に、機能５００は５１０で、第一ハプティック出力デバイスにより表現される第一駆動信号と、第二ハプティック出力デバイスにより表現される第二駆動信号と、パケット識別子とを含む複合駆動信号を生成する。ここで、第一ハプティック出力デバイスは第一ユーザ入力エレメントに関連し、第二ハプティック出力デバイスは第二ユーザ入力エレメントに関連しうる。次に、５２０で、複合駆動信号が、第一および第二ハプティック出力デバイスを有するコントローラに伝送される。最後に、５３０で、第一および第二駆動信号の実行順序が、パケット識別子に基づいて決定される。
【００６４】
図６は、本発明の実施形態例に係る期待される入力信号を用いてユーザ入力エレメントの位置をマッピングするための機能６００のフローダイヤグラムである。
【００６５】
最初に、６１０で、コントローラのユーザ入力エレメントが初期化されうる。ここで、機能６００は、最初にユーザ入力エレメントの位置および範囲情報を設定しうる。一部の場合には、これらの値は、最大外方位置からグラウンド位置までのユーザ入力デバイスの移動に基づいて計算されうる。
【００６６】
次に、機能６００は６２０で、ユーザ入力エレメントのプロファイルを決定し、記憶する。決定されたプロファイルは、ユーザ入力デバイスの各位置をアナログデジタル変換（「ＡＤＣ；ａｎａｌｏｇ  ｔｏ  ｄｉｇｉｔａｌ  ｃｏｎｖｅｒｓｉｏｎ」）値にマッピングしうる。例えば、６２０の決定されたプロファイルは、ユーザ入力デバイスの各位置を０〜２５５の間のＡＤＣ値にマッピングしうる。
【００６７】
決定されたプロファイルは、増加または減少プロファイルを利用しうる。例えば、８ビットのＡＤＣデータからユーザ入力値の位置が読み出されるとき、増加プロファイルは［０，２５５］の値を生み出す。同様に、８ビットのＡＤＣデータから読み出されるとき、減少プロファイルは［２５５，０］の値を生み出す。
【００６８】
その後、機能６００は、６３０で、ユーザ入力デバイスの位置ごとに期待される入力信号を決定し、記憶する。一部の場合には、ユーザ入力値の範囲が、期待される入力信号に関連づけられうる。
【００６９】
一部の場合には、ユーザ入力エレメントの静止位置は、異なる時間で変動しうる。例えば、様々なユーザ入力デバイスの使用の後に、ユーザ相互作用が除去されたときに同じ静止位置に戻らないユーザ入力デバイスもありうる。このような場合には、機能６００は、６４０で、このようなユーザ入力エレメントの決定されたプロファイルおよび期待されるユーザ入力値を調節しうる。このように、ユーザ入力エレメントの位置をモニタしながら変更された静止位置（単数または複数）が考慮されうる。
【００７０】
図７は、本発明の実施形態例に係るホストデバイスからコントローラに送信されるハプティックストリームレポート７００の例である。ハプティックストリームレポート７００の中で、レポート識別子７１０が、タイマ識別子７２０とハプティック駆動パケット７３０とに関連づけられる。ハプティック駆動パケットは、ハプティック出力デバイスのそれぞれ（例えば左ランブル、右ランブル、左トリガ、右トリガなど）に割り当てられた所定のバイト数（例えば２５バイト）を含みうる。ハプティックストリームレポート７００の全長は、バイト数識別子７４０によって示されうる。
【００７１】
ハプティック駆動パケット７３０の中では、ハプティックストリームレポートの更新時（例えば周期的に５ｍｓ毎）に力値が修正され、および／または各ハプティック出力デバイスに適用されうる。例えば、ホストデバイスが新たなハプティック効果を再生するリクエストを受信すると、ホストデバイスはメモリからハプティック効果データを取り出し、次の７０ｍｓ（例えばアクチュエータあたり１４の力値で１４×５ｍｓとなる）で複数のハプティック出力デバイスに適用されるべき力値をハプティックストリームレポート７００に読み込みうる。ここで、バイトオフセット２での開始ティック値等のタイマ識別子７２０を用いて、ハプティック出力デバイスの駆動バッファ内の正しい場所での記憶を確保することによってハプティック命令が同期されうる。
【００７２】
様々な構成において、力値の意味および範囲は、ハプティック出力デバイスとその方向性に依存しうる。例えば、二つのタイプのハプティック出力デバイスにトリガおよびランブルアクチュエータが含まれる。トリガアクチュエータは、典型的に双方向性であり、押す動きおよび引く動きに応答するように構成される。これに対してランブルアクチュエータは、双方向性でも一方向性でもありうる。ランブルおよびトリガアクチュエータの両者の力値の範囲は、同じでありうる（例えば０×００および０×ＦＦ）。しかし、ハプティック出力デバイスは、それぞれの特性に基づいて異なって力値の範囲を利用してもよい。
【００７３】
トリガアクチュエータの例では、［０，１２７］の範囲内の力値は、トリガアクチュエータを引く方向に動かしうる。ここで、力値が増加するにしたがって引く強さが減少しうる。１２８の力値は、トリガアクチュエータを押すことも引くこともできない。そして、［１２９，２５５］の範囲内の力値は、トリガアクチュエータを押す方向に動かしうる。ここでは、力値が増加するにしたがって押す強さが増加する。
【００７４】
別の例では、一方向性ランブルアクチュエータにおいて、［０，１２７］の範囲内の力値は無視されうる。１２８の力値は、一方向性ランブルアクチュエータを動かせず、［１２９，２５５］の範囲内の力値は、力値が増加するにしたがって増加する速度で一方向性ランブルアクチュエータを時計回りの方向に動かしうる。
【００７５】
さらに別の例では、双方向性ランブルアクチュエータにおいて、［０，１２７］の範囲内の力値は、アクチュエータを反時計回りの方向に動かしうる。１２８の力値は、アクチュエータを動かせない。［１２９，２５５］の範囲内の力値は、力値が増加するにしたがって増加する速度でアクチュエータを時計回りの方向に動かしうる。
【００７６】
このように、ハプティックストリームレポート７００は、複合駆動信号の例を提供する。この構成例では、複数のハプティック出力デバイスのための駆動信号が、一つのレポーティング構造（例えば７００）の中でコントローラに同時に供給されうる。次に、コントローラが、レポート識別子７１０、タイマ識別子７２０およびハプティック駆動パケット７３０等のハプティックストリームレポート７００内の様々なフィールドに基づいて複数のハプティック出力デバイスについての実行（または実行順序）を決定しうる。
【００７７】
図８は、本発明の実施形態例に係るコントローラからホストデバイスに送信されるハプティックストリームレポート８００の例である。ハプティックストリームレポート８００は、ハプティック出力デバイスに関連するユーザ入力エレメントの位置に関する情報を通信しうる。例えば、ハプティックストリームレポート８００は、トリガおよびジョイスティックの位置を伝えるために、それぞれ１バイトの六つのポテンショメータ値のデータを記憶しうる。ハプティックストリームレポート８００の例は、各ボタン状態に１ビットを割り当てて最大１６のボタンを記憶およびレポートしうる。
【００７８】
図９は、本発明の実施形態例に係るコントローラからホストデバイスに送信される能力レポート９００の例である。能力レポート９００は、ハプティック出力デバイスの数、ハプティックデバイス更新レート、および各ハプティック出力デバイスに割り当てられたバッファ識別子等のコントローラ能力を通信しうる。加えて、能力レポート９００は、コントローラによってサポートされる通信プロトコルおよび／またはファームウェアをさらに識別しうる。
【００７９】
図１０は、本発明の実施形態例に係るホストデバイスからコントローラに送信されるステータスリクエストレポート１０００の例である。例えば、ホストデバイスは、直近のＵＳＢパケットまたはコマンドのステータスをチェックしうる。ステータスリクエストレポート１０００に応答して、コントローラは、コマンドが有効である、無効である、サポートされていないなどをレポートしうる。
【００８０】
図１１は、本発明の実施形態例に係るホストデバイスからコントローラに送信される構成変更レポート１１００の例である。構成変更レポートを用いて、コントローラは、ホストデバイスのファームウェア設定に対する変更をリクエストしうる。例えば、構成変更レポート１１００を用いて、ハプティック出力デバイス更新レートを変更しうる。
【００８１】
図８〜１１のレポート８００〜１１００のそれぞれは、追加的な複合信号の例である。これらの例のそれぞれにおいては、複数のユーザ入力エレメントおよびハプティック出力デバイスの位置、能力、ステータスおよび構成が、ホストデバイスとコントローラとの間で同時に通信されうる。レポート８００〜１１００のそれぞれにおいて、レポート、コマンド、モジュール、パラメータおよび他の識別子等の様々な識別子が使用されうる。
【００８２】
図１２は、本発明の実施形態の用途に適したコントローラ１２００の機能ブロックダイヤグラムである。
【００８３】
図１２に示すように、コントローラ１２００は、様々なユーザ入力エレメントの一つ以上を含みうる。ユーザ入力エレメントは、ホストコンピュータ１２０４と相互作用するためにユーザにより操作される任意のインタフェースデバイスを指しうる。ユーザ入力エレメントの例には、アナログまたはデジタルジョイスティック１２１０、ボタン１２１４、トリガ１２１８などが含まれる。通常の技術を有する当業者には当然のことながら、各ユーザ入力エレメントの一つ以上が、コントローラ１２００上に含まれうる。例えば、トリガ１２１８の本記載は、コントローラ１２００を単一のトリガに限定しない。同様に、当業者には当然のことながら、複数のアナログまたはデジタルスティック、ボタン、および他のユーザ入力エレメントが使用されてもよい。
【００８４】
コントローラ１２００は、ローカルプロセッサ１２０８を含むことができる。ローカルプロセッサ１２０８は、接続１２０５を介してホストコンピュータ１２０４とコマンドおよびデータを交換しうる。接続１２０５は、当業者に公知の一つ以上の通信プロトコルを用いた有線または無線接続でありうる。一部の場合には、コントローラ１２００は代わりに、ローカルプロセッサ１２０８を含まないように構成されてもよい。ここで、コントローラ１２００からの入力／出力信号は、ホストコンピュータ１２０４により直接対処および処理されてもよい。ホストコンピュータ１２０４は、ゲームデバイスコンソールであってもよく、ディスプレイデバイス１２０６は、ゲームデバイスコンソールに動作可能に結合されたスクリーンであってもよい。一部の場合には、ホストコンピュータ１２０４およびディスプレイデバイス１２０６が、単一のデバイスに組み合わせられてもよい。
【００８５】
コントローラ１２００は、そのユーザ入力エレメントの各々を直接駆動するためのターゲットアクチュエータ１２１２、１２１６、１２２０（例えばモータ）、ならびにユーザの手が大抵置かれる場所でハウジング１２０２に動作可能に結合された一つ以上の一般的アクチュエータまたはランブルアクチュエータ１２２２、１２２４を含みうる。より具体的には、アナログまたはデジタルスティック１２１０は、アナログまたはデジタルスティック１２１０に動作可能に結合されたターゲットアクチュエータまたはモータ１２１２を含み、ボタン１２１４は、ボタン１２１４に動作可能に結合されたターゲットアクチュエータまたはモータ１２１６を含み、トリガ１２１８は、トリガ１２１８に動作可能に結合されたターゲットアクチュエータまたはモータ１２２０を含む。複数のターゲットアクチュエータに加えて、コントローラ１２００は、そのユーザ入力エレメントの各々に動作可能に結合された位置センサを含む。より具体的には、アナログまたはデジタルスティック１２１０は、アナログまたはデジタルスティック１２１０に動作可能に結合された位置センサ１２１１を含み、ボタン１２１４は、ボタン１２１４に動作可能に結合された位置センサ１２１５を含み、トリガ１２１８は、トリガ１２１８に動作可能に結合された位置センサ１２１９を含む。ローカルプロセッサ１２０８は、ターゲットアクチュエータ１２１２、１２１６、１２２０、ならびにアナログまたはデジタルスティック１２１０、ボタン１２１４およびトリガ１２１８のそれぞれの位置センサ１２１１、１２１５、１２１９に、動作可能に結合される。ローカルプロセッサ１２０８は、位置センサ１２１１、１２１５、１２１９から受信した信号に応じて、有向運動感覚効果またはターゲット運動感覚効果を、アナログまたはデジタルスティック１２１０、ボタン１２１４およびトリガ１２１８にそれぞれ直接提供するようにターゲットアクチュエータ１２１２、１２１６、１２２０に命令する。このようなターゲット運動感覚効果は、コントローラ本体全体に沿って一般的アクチュエータ１２２２、１２２４により生み出される一般的ハプティック効果またはランブルハプティック効果とは識別もしくは区別可能である。集合的ハプティック効果により、複数のモダリティを同時に駆使することで（例えば映像、音声、および触覚）、ユーザがゲームへのより高い没入感を得られる。
【００８６】
図１３Ａおよび１３Ｂは、本発明の実施形態の用途に適したコントローラ１３００の異なる図である。図１３Ａおよび図１３Ｂに示すように、コントローラ１３００は、ハウジング１３０２、アナログまたはデジタルジョイスティック１３１０、ボタン（単数または複数）１３１４、トリガ１３１８、ならびにランブルアクチュエータ１３２２および１３２４等、様々なコンポーネントを含みうる。
【００８７】
ハウジング１３０２は、ユーザがコントローラ９００を握り易いように成形される。コントローラ１３００はコントローラの実施形態の例であり、本発明の実施形態を他のコントローラの形状に容易に適用できる。
【００８８】
このように、本発明の実施形態は、ハプティック出力デバイスのための改良されたアーキテクチャおよび通信プロトコルを提供する。様々な実施形態を実装することによって、複数のハプティック出力デバイスのための駆動信号が同時に通信され、実行されうる。
【００８９】
当業者には当然のことながら、上述の本発明は、異なる順序のステップを用いて、および／または、開示された構成とは異なる構成の要素を用いて実施されてもよい。したがって、これらの好ましい実施形態に基づいて本発明を記載しているが、当業者には当然のことながら、本発明の趣旨および範囲を逸脱しない、ある修正、変更、および代替的構成が明らかであろう。したがって、本発明の境界および範囲を決定するためには、添付の特許請求の範囲を参照しなければならない。
【図１】
2018500960.tif 000003
【図２】
2018500960.tif 000004
【図３】
2018500960.tif 000005
【図４】
2018500960.tif 000006
【図５】
2018500960.tif 000007
【図６】
2018500960.tif 000008
【図７】
2018500960.tif 000009
【図８】
2018500960.tif 000010
【図９】
2018500960.tif 000011
【図１０】
2018500960.tif 000012
【図１１】
2018500960.tif 000013
【図１２】
2018500960.tif 000014
【図１３Ａ】
2018500960.tif 000015
【図１３Ｂ】
2018500960.tif 000016
【国際調査報告】
2018500960.tif 000017
2018500960.tif 000018