例示的実施形態は、ハプティック出力デバイスでユーザ入力信号を分離するための技術を目的とする。ハプティック出力デバイスに関連するユーザ入力エレメントから生じる信号は、ユーザ入力信号を含む。一部の場合には、ハプティック出力デバイスは、ユーザ入力信号に干渉しうる意図しないフィードバック信号を生成する。例えば、ハプティック出力デバイス(例えばトリガアクチュエータ)によって生成されるトルクによって、このようなフィードバック信号が引き起こされうる。干渉を防ぐために、受信された信号が、ユーザ入力信号を含む第一成分と、ハプティックフィードバック信号を含む第二成分とに分けられる。例えば、第一および第二成分は、ローパスフィルタ、ハイパスフィルタまたはバンドフィルタ等のフィルタを使用して分けられうる。ユーザ入力信号を有する第一成分はホストデバイスによって実行されうる一方で、第二成分は破棄または他の方法で無視されうる。
意図しないフィードバック信号の可能性を減少させるために、ハプティック効果の持続時間は、そのレンダリング速度未満でなければならない。例えば、あるゲーム武器のレンダリング速度が100msである場合、そのハプティック効果は100msにつき一度を超えてレンダリングされてはならない。レンダリング速度を考慮した後でも、意図しないフィードバック信号がなお大きな干渉を引き起こしうる。例えば、ハプティック出力デバイスによって生成されたトルクが、シャフトに連結されたギヤボックス機構を通じて数倍(例えば9倍)増幅されうる。このため、シャフトがハプティック出力デバイスの比較的小さな移動に応答して大きなトルクを受けうる。ハプティック出力デバイスのポテンショメータはシャフトに直接連結されうるため、増幅されたトルクに対応する電位差を生成する。例えば、高周波数ハプティック効果(例えば最大押引効果によって生成される機関銃効果)に応答して、ハプティック出力デバイスによって2Vのフィードバック信号が生み出されうる。高周波数効果が例として使用されるが、本発明の実施形態は様々なハプティック効果および応用例(例えばレースゲーム、スポーツゲームなど)に適用されうる。
様々な実施形態において、デバイスを使用するための様々なユーザインタフェースおよび方法が記載される。一部の実施形態では、デバイスは、携帯可能電子デバイス(例えばゲームコントローラ、コンソール、携帯電話、スマートフォン、タブレットなど)である。しかし、ユーザインタフェースおよび関連の方法は、キーボード、マウス、トラックボールなどの一つ以上の他の物理的ユーザインタフェースデバイスを含みうる、パーソナルコンピュータ、医療デバイス、ラップトップなどの多数の他のデバイスに適用されうることを理解されたい。
図1は、本発明の実施形態例に係るシステム100のブロックダイヤグラムである。
システム100は、リモートソースからデータを伝送および/または受信するように構成された通信デバイス110を含みうる。通信デバイス110は、ネットワーク(図示せず)上でプロセッサ120から別のデバイスへ送信されるデータを符号化し、ネットワーク上で別のシステムからプロセッサ120のために受信されるデータを復号することにより、プロセッサ120と他のデバイスとの間の接続性を可能にすることができる。
例えば、通信デバイス110は、ワイヤレスネットワーク通信を提供するように構成されたネットワークインタフェースカードを含みうる。赤外線、無線、ブルートゥース(登録商標)、Wi‐Fiおよび/またはセルラ方式通信を含め、様々なワイヤレスコミュニケーション技術が使用されうる。あるいは、通信デバイス110は、イーサネット(登録商標)接続等の有線ネットワーク接続(単数または複数)を提供するように構成されてもよい。
プロセッサ120は、システム100の計算および制御機能を行うために、一つ以上の汎用または専用プロセッサを含みうる。プロセッサ120は、マイクロプロセッサ等の単一の集積回路を含んでもよいし、またはプロセッサ120の機能を達成するために協働する複数の集積回路デバイスおよび/もしくは回路基板を含んでもよい。加えて、プロセッサ120は、メモリ140内に格納された、オペレーティングシステム141、ユーザ入力分離モジュール142、および他のアプリケーション143等のコンピュータプログラムを実行しうる。
システム100は、プロセッサ120により実行するための情報および命令を格納するメモリ140を含みうる。メモリ140は、データの取り出し、提示、修正、および格納のための様々なコンポーネントを含みうる。例えば、メモリ140は、プロセッサ120により実行されたときに機能を提供するソフトウェアモジュールを格納しうる。モジュールは、システム100にオペレーティングシステム機能を提供するオペレーティングシステム141を含みうる。モジュールは、コントローラ150のユーザ入力エレメントから生じるユーザ入力信号を分離するように構成されたユーザ入力分離モジュール142をさらに含みうる。例えば、ユーザ入力分離モジュール142は、コントローラ150のユーザ入力エレメントに関連するハプティック出力デバイスによって生成されるフィードバック信号をフィルタリングするように構成されうる。フィードバック信号をフィルタリングすることによって、システム100は、フィードバック信号からの干渉なしでユーザ入力信号を実行することができる。システム100は、コントローラ150(例えばゲームパッド、着用可能デバイスなど)等の周辺デバイスに制御機能を提供するように構成された周辺ファームウェア等の追加の機能を含む一つ以上の追加のアプリケーションモジュール143も含みうる。
非一時的メモリ140は、プロセッサ120によりアクセスできる様々なコンピュータ可読媒体を含みうる。様々な実施形態において、メモリ140は、揮発性および不揮発性媒体、取外し可能および取外し不可能媒体を含みうる。例えば、メモリ140は、ランダムアクセスメモリ(「RAM;random access memory」)、ダイナミックRAM(DRAM;dynamic RAM)、スタティックRAM(SRAM;static RAM)、リードオンリメモリ(「ROM;read only memory」)、フラッシュメモリ、キャッシュメモリ、および/または他の任意のタイプの非一時的コンピュータ可読媒体の任意の組み合わせを含みうる。代わりにまたは加えて、メモリ140は、一つ以上のネットワークまたはクラウドでアクセス可能な記憶媒体を含みうる。
単一のシステムとして図示されているが、システム100の機能は、分散システムとして実装されてもよい。例えば、メモリ140およびプロセッサ120は、システム100を集合的に構成する複数の異なるコンピュータに分散されてもよい。一実施形態では、システム100はデバイス(例えばパーソナルコンピュータ、コンソール、ビデオゲームコンソール等)の一部であってもよく、システム100は、デバイスにハプティック効果機能を提供する。別の実施形態では、システム100は、デバイスとは別個であってもよく、デバイスに上述の機能をリモートで提供してもよい。
システム100は、コントローラ150に動作可能に接続されうる。コントローラ150は、入力をシステム100に提供するように構成された周辺デバイスであってもよい。コントローラ150は、無線接続または有線接続を用いてシステム100に動作可能に接続されうる。コントローラ150は、無線接続または有線接続を用いてシステム100と通信するように構成されたローカルプロセッサも含むことができる。あるいは、コントローラ150は、ローカルプロセッサを含まないように構成されてもよく、コントローラ150に関連する全ての入力信号および/または出力信号が、システム100のコンポーネントにより処理されてもよい。コントローラ150がローカルプロセッサを有する実施形態では、ユーザ入力分離モジュールおよび制御機能を提供するように構成された周辺ファームウェア等の追加の機能がコントローラ150内にありうる。
コントローラ150は、ユーザが相互作用することができ、システム100に入力を提供することができる、一つ以上のデジタルボタン、一つ以上のアナログボタン、一つ以上のバンパ、一つ以上の方向パッド、一つ以上のアナログもしくはデジタルスティック、一つ以上のドライビングホイール、および/または一つ以上のユーザ入力エレメントをさらに含むことができる。コントローラ150は、ユーザがさらに相互作用することができ、システム100にさらに入力を提供することができる、一つ以上のアナログまたはデジタルトリガボタン(または「トリガ」)も含むことができる。より詳細に後述するように、コントローラ150は、コントローラ150の少なくとも一つのトリガに対して双方向押/引力を及ぼすように構成された、モータまたは別のタイプのアクチュエータもしくはハプティック出力デバイスをさらに含むことができる。
コントローラ150は、一つ以上のアクチュエータまたは他のタイプのハプティック出力デバイスも含むことができる。コントローラ150のローカルプロセッサ、またはコントローラ150がローカルプロセッサを含まない実施形態におけるプロセッサ120は、コントローラ150の少なくとも一つのアクチュエータに、ハプティック効果に関連したハプティック信号を伝送すればよい。次に、アクチュエータが、ハプティック信号に応じて振動触知ハプティック効果、運動感覚ハプティック効果、または変形ハプティック効果等のハプティック効果を出力する。ハプティック効果は、コントローラ150のユーザ入力エレメント(例えば、デジタルボタン、アナログボタン、バンパ、方向パッド、アナログもしくはデジタルスティック、ドライビングホイールまたはトリガ)で経験されることができる。あるいは、コントローラ150の外側表面でハプティック効果が経験されてもよい。
アクチュエータはハプティック出力デバイスの一例であり、ここで、ハプティック出力デバイスは、駆動信号に応じて振動触知ハプティック効果、静電摩擦ハプティック効果、温度変化、および/または変形ハプティック効果等のハプティック効果を出力するように構成されたデバイスである。代替的実施形態では、コントローラ150内の一つ以上のアクチュエータは、何らかの他のタイプのハプティック出力デバイスで置き換えられてもよい。ハプティック出力デバイスは、例えば、電動モータ、電磁アクチュエータ、ボイスコイル、形状記憶合金、電気活性ポリマ、ソレノイド、偏心モータ(「ERM;eccentric rotating mass motor」)、ハーモニックERMモータ(「HERM;harmonic ERM motor」)、線形共振アクチュエータ(「LRA;linear resonant actuator」)、圧電アクチュエータ、高帯域アクチュエータ、電気活性ポリマ(「EAP;electroactive polymer」)アクチュエータ、静電摩擦ディスプレイ、または超音波振動ジェネレータでありうる。一部の場合には、ハプティック出力デバイスは、ハプティック出力デバイス駆動回路を含んでもよい。一部の実施形態では、ハプティック出力デバイスは、一方向性でも双方向性でもよい。
コントローラ150は、一つ以上のスピーカをさらに含むことができる。コントローラ150のローカルプロセッサ、またはコントローラ150がローカルプロセッサを含まない実施形態におけるプロセッサ120は、コントローラ150の少なくとも一つのスピーカに音声信号を伝送すればよく、次いでスピーカが音声効果を出力する。スピーカは、例えば、ダイナミックラウドスピーカ、エレクトロダイナミックラウドスピーカ、圧電ラウドスピーカ、磁気歪ラウドスピーカ、静電ラウドスピーカ、リボンプラナー磁気ラウドスピーカ、屈曲波ラウドスピーカ、フラットパネルラウドスピーカ、ハイルエアモーショントランスデューサ、プラズマアークスピーカ、およびデジタルラウドスピーカであればよい。
コントローラ150は、一つ以上のセンサをさらに含むことができる。センサは、音、移動、加速度、生体信号、距離、流量、力/圧力/歪み/屈曲、湿度、線形位置、方位/傾斜、無線周波数、回転位置、回転速度、スイッチの操作、温度、振動、または可視光強度等であるがこれに限定されない、エネルギーの一形態または他の物理的性質を検出するように構成できる。センサは、検出エネルギーまたは他の物理的特性を、電気信号または仮想センサ情報を表す任意の信号に変換するようにさらに構成でき、コントローラ150は、変換された信号を、コントローラ150のローカルプロセッサに、またはコントローラ150がローカルプロセッサを含まない実施形態におけるプロセッサ120に送信することができる。
図2は、本発明の実施形態例に係るユーザ入力信号を分離するためのシステム200を示す簡略ブロックダイヤグラムである。
図2に示すように、コントローラ210は、一つ以上のユーザ入力エレメント211と一つ以上の対応するハプティック出力デバイス212とを含む。コントローラ210は、ホストデバイス220にユーザ入力信号215を送信するように構成されるが、ハプティック出力デバイス212もフィードバック信号を生成しうる。一部の場合には、フィードバック信号が、ユーザ入力信号215に干渉する。例えば、ハプティック出力デバイス212(例えばトリガアクチュエータ)によって生成されるトルクによりフィードバック信号が引き起こされうる。
ホストデバイス220は、ユーザ入力信号を受信するように構成されたアプリケーション221等の様々なプログラムを実行しうる。ホストデバイス220で、一つ以上のフィルタ222が、ハプティック出力デバイス212によって生成されたフィードバック信号からユーザ入力エレメント211によって生成されたユーザ入力信号を分けうる。一部の実施形態では、ユーザ入力信号とフィードバック信号とは、ローパスフィルタ、ハイパスフィルタまたはバンドフィルタ等のフィルタ222を使用して分けられうる。ユーザ入力信号およびフィードバック信号のそれぞれは典型的に異なる周波数で生成されるため、フィルタ222は、二つのシグナルタイプを分けるように構成される。このように、本発明の実施形態を実装することによって、アプリケーション221にユーザ入力信号だけが供給され、フィードバック信号は破棄または他の方法で無視されうる。
図3は、本発明の実施形態例に係るハプティック効果ソフトウェアスタック300のブロックダイヤグラムである。図3に示されるように、ソフトウェアスタック300は、デバイスモジュール310、周辺ファームウェアモジュール320、コントローラモジュール330、駆動モジュール340、およびランブル駆動モジュール350を含む。ハプティック効果ソフトウェアスタック300は、図1のシステム100等のシステムに実装される。
デバイスモジュール310は、入力管理コード311、周辺入力アプリケーションプログラミングインタフェース(「API;application programming interface」)312、ランブルAPI313、ハプティック効果API314、直接プレイバック/クロスオーバ部315、トリガエンジン316、空間化エンジン317およびエンコーダ318等の様々なモジュールを含みうる。
入力管理コード311は、デバイス内で実行されるゲームアプリケーションまたは他のタイプのアプリケーションの文脈でコントローラ330により提供される入力を管理するコンピュータ可読命令のセットを含みうる。
周辺入力API312は、コントローラ330により提供される入力を受信および管理するためにゲーム入力管理コード311が周辺ファームウェア320と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含みうる。
ランブルAPI313は、コントローラ330の一つ以上のランブルモータまたはランブルアクチュエータ(例えば図3のランブルモータLおよびR)にランブル命令を伝送するために入力管理コード311が周辺ファームウェア320と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含みうる。加えて、ランブル命令は、コントローラ330のランブルモータまたはランブルアクチュエータに一般的ハプティック効果またはランブルハプティック効果を生み出させることができる。
(図3に「API」として識別される)ハプティック効果API314は、入力管理コード311にアクセス可能であり、入力管理コード311がコントローラ330にハプティック命令を伝送するために周辺ファームウェア320と相互作用することを可能にするコンピュータ可読関数またはルーチンのセットを含みうる。加えて、ハプティック命令は、コントローラ330の一つ以上のターゲットモータまたはターゲットアクチュエータに、コントローラ330の一つ以上のユーザ入力エレメントでハプティック効果を生み出させうる。
ハプティック効果API314は、一つ以上のハプティック効果定義を記憶することもできる。ハプティック効果定義は、ハプティックファイルまたはハプティックストリーム等、予め定義され、記憶装置内に記憶されることができ、一つ以上のランブルモータ、ランブルアクチュエータ、ターゲットモータ、またはターゲットアクチュエータに送信されて、コントローラ330のコンポーネントまたはユーザ入力エレメントでハプティック効果を生み出すことができる、ハプティック信号等のハプティックデータを含むデータ構造である。ハプティックデータは、対応するハプティック効果の一つ以上の属性を含むことができ、属性は、パラメータとして記憶されることができる。ハプティック効果定義のパラメータの例には、振幅パラメータ、周波数パラメータ、波形パラメータ、エンベロープパラメータ、マグニチュード(または強度)パラメータ、および持続時間パラメータが含まれうる。
ハプティック効果API314は、ゲーム入力管理コード311が直接プレイバック/クロスオーバ部315、トリガエンジン316、および空間化エンジン317と相互作用することを可能にでき、さらに、ゲーム入力管理コード311により呼び出されたリクエストにしたがって直接プレイバック/クロスオーバ部315、トリガエンジン316、および空間化エンジン317を管理することができる。さらに、ハプティック効果API314は、周辺ファームウェア320との通信に使用される、一つ以上のハプティック効果の生成に使用されるデータを記憶することができる。
直接プレイバック/クロスオーバ部315は、ハプティックデータを入力として受信し、ハプティックデータを出力として生み出し、ハプティックデータをコントローラ330の一つ以上のターゲットモータ、またはターゲットアクチュエータ(例えば図3のモータLおよびR)に伝送しうる。ある実施形態では、直接プレイバック/クロスオーバ部315は、入力されたハプティックデータのフォーマットを修正せずに、入力されたハプティックデータを直接出力すればよい。その結果、入力されたハプティックデータが「そのまま」再生される。他の実施形態では、直接プレイバック/クロスオーバ部315は、入力されたハプティックデータを第一フォーマットから第二フォーマットへ変換し、さらに変換されたハプティックデータを出力することができる。再生のタイプに応じて、直接プレイバック/クロスオーバ部315は、ハプティックデータを変換するためにプログラマブルクロスオーバを任意に使用することができる。ハプティックデータを変換することにより、デバイスモジュールは、ハプティック効果を分解し、複数のアクチュエータでハプティック効果を再生することができる。
ハプティックデータのフォーマットは、ハプティックエレメンタリストリーム(「HES;haptic elementary stream」)フォーマットであればよい。HESフォーマットは、デバイスにストリーミングされうるハプティックデータを表すためのファイルまたはデータフォーマットである。ハプティックデータは、圧縮されていない音が表されるのと同一または類似の様式で表されうるが、ハプティックデータは、HESフォーマットにおいて暗号化されうる。
トリガエンジン316は、ハプティック効果定義等のハプティックデータを受信し、トリガデータ323等のユーザ入力データに基づいて、ハプティックデータを修正することができる。トリガデータは、コントローラ330の一つ以上のトリガ(例えば図3のトリガLおよびR)の位置および/または範囲を指示する一つ以上のパラメータを含むデータである。トリガエンジン316は、コントローラ330にハプティック命令をさらに伝送することができる。例えば、トリガエンジン316は、コントローラ330の様々なユーザ入力エレメントにハプティック命令を伝送することができる。前述したように、ハプティック命令は、コントローラ330の一つ以上のターゲットモータまたはターゲットアクチュエータに、コントローラ330の一つ以上のユーザ入力エレメントでハプティック効果を生み出させることができる。
空間化エンジン317は、ハプティックデータを受信し、空間化データに基づいてハプティックデータを修正することができる。空間化データには、それぞれのユーザ入力エレメント上のハプティック効果の順序付け等のハプティック効果の所望の方向および/または流れを指示するデータを含むことができる。ある実施形態では、空間化エンジン317は、方向および/または流れを含む空間化データを入力管理コード311から受信しうる。
空間化エンジン317は、コントローラ330の一つ以上のランブルモータまたはランブルアクチュエータ(例えば図3のランブルモータLおよびR)に関してトリガハプティック効果等のハプティック効果がスケーリングされ、コントローラ330の一つ以上のターゲットモータまたはターゲットアクチュエータ(例えば図3に示したモータLおよびR)に関してもハプティック効果がスケーリングされるように、ハプティックデータを修正することができる。換言すれば、空間化エンジン317は、全体的なハプティック効果の方向および流れの感覚を伝えるために、各モータまたはアクチュエータに送信されるハプティックデータを修正し、これにより各モータまたはアクチュエータで経験されるハプティック効果を修正することができる。例えば、空間化エンジン317は、あるモータまたはアクチュエータで経験されるハプティック効果を強調するために、ハプティック効果の一つ以上の部分をスケーリングすることができる。例えば、空間化エンジン317は、ハプティック効果を経験させるモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、ハプティック効果をより目立たせることができる(例えば、大きさ、持続時間を増加させるなど)。加えて、空間化エンジン317は、他のモータまたはアクチュエータに送信されるハプティックデータをスケーリングして、それらのモータまたはアクチュエータで経験される他のハプティック効果を目立たないようにすることができる(例えば、大きさ、持続時間を減少させるなど)。一部の実施形態では、空間化エンジン317は、ハプティックデータを実時間でまたは実質的に実時間で修正することができる。さらに、一部の実施形態では、空間化エンジン317は、全体的トリガハプティック効果を誇張するために、入力とモータまたはアクチュエータの出力との間の非線形関係を有していてもよい。
エンコーダ318は、直接プレイバック/クロスオーバ部315、トリガエンジン316、および/または空間化エンジン317から受信したハプティックデータを一フォーマットに符号化する。一実施形態では、このフォーマットはHESフォーマットであってもよい。エンコーダ318は、符号化されたハプティックデータを周辺ファームウェア320に伝送することができる。
周辺ファームウェア320は、一つ以上の周辺デバイス(例えばコントローラ)のためのファームウェアである。周辺ファームウェア320は、デコーダおよびクロスオーバ部321、トリガ制御部322、トリガデータ323、他の機能324、およびランブル制御部325等の様々なモジュールを含みうる。
デコーダおよびクロスオーバ部321は、エンコーダ318から符号化されたハプティックデータを受信でき、符号化されたハプティックデータを復号する。一部の実施形態では、デコーダおよびクロスオーバ部321は、符号化されたハプティックデータを復号するために、プログラマブルクロスオーバを計算する。デコーダおよびクロスオーバ部321は、プログラマブルクロスオーバを実時間で計算しうる。
トリガ制御部322は、コントローラ330(例えば図3のモータLおよびR)の一つ以上のターゲットモータまたはターゲットアクチュエータのための低レベル制御APIである。トリガ制御部322は、トリガ命令を受信し、トリガ命令を、コントローラ330の指定のターゲットモータまたはターゲットアクチュエータへの低レベルトリガ命令に変換し、低レベルトリガ命令を、コントローラ330の指定のターゲットモータまたはターゲットアクチュエータに伝送することができる。低レベルトリガ命令は、指定のターゲットモータまたはターゲットアクチュエータに、コントローラ330の指定のトリガでトリガハプティック効果を生み出させることができる。
前述のように、トリガデータ323は、コントローラ330の一つ以上のトリガ(例えば図3のトリガLおよびR)の位置および/または範囲を指示する一つ以上のパラメータを含むデータである。周辺ファームウェア320によって、コントローラ330からトリガデータ323が受信されうる。周辺ファームウェア320は、トリガデータ323をさらに記憶することができ、トリガデータ323をデバイスモジュール310にさらに伝送することができる。
他のゲームパッド機能324は、周辺ファームウェア320によって管理されるコントローラ330の機能であってもよい。このような機能には、有線/無線通信、入力報告、プロトコル実装、電力管理などの機能を含むことができる。
ランブル制御部325は、コントローラ330の一つ以上のランブルモータまたはランブルアクチュエータ(例えば図3のランブルモータLおよびR)のための低レベル制御APIである。ランブル制御部325は、ランブル命令を受信し、ランブル命令を、コントローラ330の指定のランブルモータまたはランブルアクチュエータのための低レベルランブル命令に変換し、低レベルトリガ命令を、コントローラ330の指定のランブルモータまたはランブルアクチュエータに伝送することができる。
トリガモニタ326は、コントローラ330におけるユーザ入力エレメントの位置とユーザ入力エレメントのそれぞれのハプティック出力デバイスのステータスとをモニタするように構成されたファームウェアモジュールである。加えて、トリガモニタ326は、ユーザ入力信号および/またはフィードバック信号がコントローラ330から受信されているか否かを判断するために、ユーザ入力エレメントとユーザ入力エレメントのそれぞれのハプティック出力デバイスとをモニタするように構成される。一部の場合には、フィードバック信号がハプティック出力デバイスによって生成され、トリガモニタ326は、ユーザ入力信号を分離し、フィードバック信号を破棄するように構成されうる。
様々な実施形態において、ハードウェアに依存しないファームウェアのセクションは、ハードウェアに依存するセクションから分けられうる。ここで、ハードウェアに依存しないファームウェアは、機能ポインタを用いてハードウェアに依存するファームウェアと相互作用しうる。
コントローラ330は、トリガLおよびRを含みうる。コントローラ330は、ギヤボックスLおよびR、ならびにモータLおよびRをさらに含みうる。モータLおよびギヤボックスLは、コントローラ330内のトリガLに動作可能に結合される。同様に、モータRおよびギヤボックスRは、コントローラ330内のトリガRに動作可能に結合される。モータLがトリガ命令を受信すると、モータLおよびギヤボックスLが集合的にトリガLでトリガハプティック効果を経験させうる。同様に、モータRがトリガ命令を受信すると、モータRおよびギヤボックスRが集合的にトリガRでトリガハプティック効果を経験させうる。周辺ファームウェア320は、駆動エレクトロニクス340を用いてコントローラ330のモータLおよびRにトリガ命令を送信しうる。
コントローラ330は、ポテンショメータLおよびRをさらに含みうる。ポテンショメータLは、トリガLの位置および/または範囲を検出することができ、検出されたトリガLの位置および/または範囲をトリガデータとして周辺ファームウェア320にさらに送信することができる。同様に、ポテンショメータRは、トリガRの位置および/または範囲を検出することができ、検出されたトリガRの位置および/または範囲をトリガデータとして周辺ファームウェア320にさらに送信することができる。
コントローラ330は、ランブルモータLおよびRをさらに含みうる。ランブルモータLがランブル命令を受信すると、ランブルモータLは、コントローラ330の左コンポーネントに沿ってハプティック効果を経験させる。同様に、ランブルモータRがランブル命令を受信すると、ランブルモータRは、コントローラ330の右コンポーネントに沿ってハプティック効果を経験させる。周辺ファームウェア320は、ランブル駆動エレクトロニクス350を用いてランブルモータLおよびRにランブル命令を送信することができる。
図4は、本発明の実施形態例に係るユーザ入力信号を分離するための機能400のフローダイヤグラムである。一部の場合には、図4(および下記の図5)のフローダイヤグラムの機能は、メモリもしくは他のコンピュータ可読または有形媒体に記憶されたソフトウェアにより実装され、プロセッサにより実行されうる。他の実施形態では、機能は、ハードウェア(例えば、特定用途向け集積回路(「ASIC;application specific integrated circuit」)、プログラム可能ゲートアレイ(「PGA;programmable gate array」)、フィールドプログラム可能ゲートアレイ(「FPGA;field programmable gate array」)などを用いて)、またはハードウェアおよびソフトウェアの任意の組み合わせにより実施されてもよい。
初めに、機能400は、410で、ハプティック出力デバイスに関連するユーザ入力エレメントから信号を受信する。受信された信号は、ユーザ入力信号を含み、意図しないフィードバック信号を含みうる。コントローラはホストデバイスにユーザ入力信号を送信するように構成されるが、ハプティック出力デバイスがユーザ入力信号に干渉する意図しないフィードバック信号を生成することもある。例えば、高周波数ハプティック効果(例えば(例えば機関銃効果)等の一部のハプティック効果は、フィードバック信号を生み出しうる。
次に、機能400は、受信された信号を第一成分と第二成分とに分ける。420において、第一成分はユーザ入力信号を含み、第二成分はフィードバック信号を含む。
一部の実施形態では、ユーザ入力信号およびフィードバック信号は、ローパスフィルタ、ハイパスフィルタ、またはバンドフィルタ等の一つ以上のフィルタを使用して分けられうる。周波数カットオフ値(単数または複数)およびフィルタ次数等のフィルタの具体的特性は、使用されるハプティック出力デバイスと、そのマイクロコントローラユニット(「MCU;microcontroller unit」)のための電力量とにしたがって決定されうる。例えば、ユーザ入力エレメントは、低周波数で動作するように構成されうる。一部の場合には、ユーザ入力信号とより高い周波数のフィードバック信号とを区別するために低周波数ユーザ入力信号が用いられうる。この例では、フィルタは、ユーザ入力信号をその低い周波数値に基づいて分離するように構成されうる。
代替的構成においては、ユーザ入力エレメントに適用される位置および/または圧力が測定され、受信された信号と比較されてもよい。一部の場合には、測定された位置および/または圧力に基づいて期待される受信信号が生成され、期待される信号が受信された信号と比較されうる。ここでは、ユーザ入力信号は、比較の結果に基づいて分離されうる。例えば、ハプティック効果がトリガを10%引き込み、ファームウェアがポテンショメータを30%と読み取る場合、残りの20%はエンドユーザのトリガ変位への寄与分である。換言すれば、ハプティック効果に基づいて期待される移動を実際の移動と比較することによって、ユーザ入力成分が計算されうる。
最後に、機能400は、430で、第一成分のユーザ入力信号を実行し、第二成分のフィードバック信号を破棄する。機能400を利用することにより、干渉フィードバック信号が除去されるため、ユーザ入力信号がより正確に実行される。
図5は、本発明の実施形態例に係る期待される入力信号を用いてユーザ入力エレメントの位置をマッピングするための機能のフローダイヤグラムである。
最初に、510で、コントローラのユーザ入力エレメントが初期化されうる。ここで、機能500は、最初にユーザ入力エレメントの位置および範囲情報を設定しうる。一部の場合には、これらの値は、最大外方位置からグラウンド位置までのユーザ入力デバイスの移動に基づいて計算されうる。
次に、機能500は520で、ユーザ入力エレメントのプロファイルを決定し、記憶する。決定されたプロファイルは、ユーザ入力デバイスの各位置をアナログデジタル変換(「ADC;analog to digital conversion」)値にマッピングしうる。例えば、520の決定されたプロファイルは、ユーザ入力デバイスの各位置を0〜255の間のADC値にマッピングしうる。
決定されたプロファイルは、増加または減少プロファイルを利用しうる。例えば、8ビットのADCデータからユーザ入力値の位置が読み出されるとき、増加プロファイルは[0,255]の値を生み出す。同様に、8ビットのADCデータから読み出されるとき、減少プロファイルは[255,0]の値を生み出す。
その後、機能500は、530で、ユーザ入力デバイスの位置ごとに期待される入力信号を決定し、記憶する。一部の場合には、ユーザ入力値の範囲が、期待される入力信号に関連づけられうる。
一部の場合には、ユーザ入力エレメントの静止位置は、異なる時間で変動しうる。例えば、様々なユーザ入力デバイスの使用の後に、ユーザ相互作用が除去されたときに同じ静止位置に戻らないユーザ入力デバイスもありうる。このような場合には、機能500は、540で、このようなユーザ入力エレメントの決定されたプロファイルおよび期待されるユーザ入力値を調節しうる。このように、ユーザ入力エレメントの位置をモニタしながら変更された静止位置が考慮されうる。
図6は、本発明の実施形態の用途に適したコントローラ600の機能ブロックダイヤグラムである。
図6に示すように、コントローラ600は、様々なユーザ入力エレメントの一つ以上を含みうる。ユーザ入力エレメントは、ホストコンピュータ604と相互作用するためにユーザにより操作される任意のインタフェースデバイスを指しうる。ユーザ入力エレメントの例には、アナログまたはデジタルジョイスティック610、ボタン614、トリガ618などが含まれる。通常の技術を有する当業者には当然のことながら、各ユーザ入力エレメントの一つ以上が、コントローラ600上に含まれうる。例えば、トリガ618の本記載は、コントローラ600を単一のトリガに限定しない。同様に、当業者には当然のことながら、複数のアナログまたはデジタルスティック、ボタン、および他のユーザ入力エレメントが使用されてもよい。
コントローラ600は、ローカルプロセッサ608を含むことができる。ローカルプロセッサ608は、接続605を介してホストコンピュータ604とコマンドおよびデータを交換しうる。接続605は、当業者に公知の一つ以上の通信プロトコルを用いた有線または無線接続でありうる。一部の場合には、コントローラ600は代わりに、ローカルプロセッサ608を含まないように構成されてもよい。ここで、コントローラ600からの入力/出力信号は、ホストコンピュータ604により直接対処および処理されてもよい。ホストコンピュータ604は、ゲームデバイスコンソールであってもよく、ディスプレイデバイス606は、ゲームデバイスコンソールに動作可能に結合されたスクリーンであってもよい。一部の場合には、ホストコンピュータ604およびディスプレイデバイス606が、単一のデバイスに組み合わせられてもよい。
コントローラ600は、そのユーザ入力エレメントの各々を直接駆動するためのターゲットアクチュエータ612、616、620(例えばモータ)、ならびにユーザの手が大抵置かれる場所でハウジング602に動作可能に結合された一つ以上の一般的アクチュエータまたはランブルアクチュエータ622、624を含みうる。より具体的には、アナログまたはデジタルスティック610は、アナログまたはデジタルスティック610に動作可能に結合されたターゲットアクチュエータまたはモータ612を含み、ボタン614は、ボタン614に動作可能に結合されたターゲットアクチュエータまたはモータ616を含み、トリガ618は、トリガ618に動作可能に結合されたターゲットアクチュエータまたはモータ620を含む。複数のターゲットアクチュエータに加えて、コントローラ600は、そのユーザ入力エレメントの各々に動作可能に結合された位置センサを含む。より具体的には、アナログまたはデジタルスティック610は、アナログまたはデジタルスティック610に動作可能に結合された位置センサ611を含み、ボタン614は、ボタン614に動作可能に結合された位置センサ615を含み、トリガ618は、トリガ618に動作可能に結合された位置センサ619を含む。ローカルプロセッサ608は、ターゲットアクチュエータ612、616、620、ならびにアナログまたはデジタルスティック610、ボタン614およびトリガ618のそれぞれの位置センサ611、615、619に、動作可能に結合される。ローカルプロセッサ608は、位置センサ611、615、619から受信した信号に応じて、有向運動感覚効果またはターゲット運動感覚効果を、アナログまたはデジタルスティック610、ボタン614およびトリガ618にそれぞれ直接提供するようにターゲットアクチュエータ612、616、620に命令する。このようなターゲット運動感覚効果は、コントローラ本体全体に沿って一般的アクチュエータ622、624により生み出される一般的ハプティック効果またはランブルハプティック効果とは識別もしくは区別可能である。集合的ハプティック効果により、複数のモダリティを同時に駆使することで(例えば映像、音声、および触覚)、ユーザがゲームへのより高い没入感を得られる。
図7Aおよび7Bは、本発明の実施形態の用途に適したコントローラ700の異なる図である。図7Aおよび図7Bに示すように、コントローラ700は、ハウジング702、アナログまたはデジタルジョイスティック710、ボタン(単数または複数)714、トリガ718、ならびにランブルアクチュエータ722および724等、様々なコンポーネントを含みうる。
ハウジング702は、ユーザがコントローラ700を握り易いように成形される。コントローラ700はコントローラの実施形態の例であり、本発明の実施形態を他のコントローラの形状に容易に適用できる。
図8は、本発明の実施形態の用途に適したコントローラにおいて引き起こされるフィードバック信号の例である。図8に示すように、高周波数ハプティック効果(例えば最大押引効果によって生成される機関銃効果)に応答して、ハプティック出力によって2Vのフィードバック信号810が生み出されうる。高周波数効果が例として使用されるが、本発明の実施形態は様々なハプティック効果および応用例(例えばレースゲーム、スポーツゲームなど)に適用されうる。
したがって、本発明の様々な実施形態を実装することによって、意図しないフィードバック信号の効果が低減されうる。加えて、ユーザ入力信号がより正確に実行されうる。これらの改良は、ユーザ入力信号を分離することによって達成される。例えば、ハプティック出力デバイスに関連するユーザ入力エレメントから生じる信号は、ユーザ入力信号に加えてフィードバック信号を含みうる。二つの信号の間の干渉を回避するために、受信された信号が、ユーザ入力信号を含む第一成分とハプティックフィードバック信号を含む第二成分とに分けられる。ユーザ入力信号を有する第一成分はホストデバイスによって実行されうる一方で、第二成分は破棄または他の方法で無視されうる。
高周波数効果が例として使用されるが、本発明の実施形態は様々なハプティック効果および応用例に適用されうる。例えば、実施形態は、運転の難易度を増減するためにハプティック出力デバイスに加えられる抵抗を変化させることによって、カーレースゲームに容易に適用されうる。別の例では、実施形態は、ハプティック出力デバイスに加えられる抵抗を変化させて、武器を発砲し易くまたは発砲しにくくすることで戦闘ゲームに容易に適用されうる。
当業者には当然のことながら、上述の本発明は、異なる順序のステップを用いて、および/または、開示された構成とは異なる構成の要素を用いて実施されてもよい。したがって、これらの好ましい実施形態に基づいて本発明を記載しているが、当業者には当然のことながら、本発明の趣旨および範囲を逸脱しない、ある修正、変更、および代替的構成が明らかであろう。したがって、本発明の境界および範囲を決定するためには、添付の特許請求の範囲を参照しなければならない。