(58)【調査した分野】(Int.Cl.,DB名)
プロセッサによって実行されたときに、前記プロセッサにアクチュエータを用いてハプティック効果を生成させる命令を有するコンピュータ可読媒体であって、前記ハプティック効果を生成することは、
前記ハプティック効果を定義するハプティック効果定義を受け付けるステップと、
アクチュエータが、前記ハプティック効果をプレイ可能かどうかを判定することを含む前記ハプティック効果定義を前処理するステップであって、前記判定することは、前記アクチュエータの立ち上り時間及び前記アクチュエータの立ち下がり時間を特徴付けることを含む、ステップと、
前記アクチュエータの状態の推定又は測定に基づいてフォース値を調整することを含む前記ハプティック効果定義を後処理するステップであって、前記調整は、前記ハプティック効果のプレイ中に生じる、ステップと、を備えるコンピュータ可読媒体。
前記アクチュエータの状態の推定は、前記アクチュエータが立ち上がり時間曲線又は立ち下がり時間曲線のどこに位置するかを推定することに基づく、請求項1に記載のコンピュータ可読媒体。
前記パラメータ化された振動定義は、持続期間、周波数又はマグニチュードの少なくとも一つを含む一又はそれ以上のパラメータを有する請求項3に記載のコンピュータ可読媒体。
前記アクチュエータの状態の推定は、前記アクチュエータが立ち上がり時間曲線又は立ち下がり時間曲線のどこに位置するかを推定することに基づく、請求項10に記載の方法。
前記アクチュエータの状態の推定は、前記アクチュエータが立ち上がり時間曲線又は立ち下がり時間曲線のどこに位置するかを推定することに基づく、請求項19に記載のシステム。
【発明を実施するための形態】
【0007】
一実施形態は、アクチュエータ特性を占有し、複数のハプティック効果のカスケーディング(cascading)を最小化するために、ハプティック効果定義を調整、前処理及び後処理するERMアクチュエータ用のシステム及び駆動回路である。前処理は、ハプティック効果のマグニチュード又は他のパラメータをスケールすることができる。後処理は、アクチュエータ特性、現在のアクチュエータの状態及び所望のマグニチュードに基づいて新たなマグニチュードを生成することができる。
【0008】
図1は、本発明の一実施形態に係るハプティカリィイネーブルドシステム(haptically−enabled system)10のブロック図である。システム10は、ハウジング15内に実装されたタッチ検知面11又は他のタイプのユーザインターフェースを含んでもよく、機械的なキー/ボタン13を含んでもよい。システム10の内部は、システム10で振動30、31を生成するハプティックフィードバックシステムである。一実施形態では、振動は、タッチ面11で生成される。各種の実施形態では、
図1に示される要素の全てが実装のために必要とされるわけではない。
【0009】
ハプティックフィードバックシステムは、プロセッサ又はコントローラ12を含む。プロセッサ12には、メモリ20及びアクチュエータ駆動回路16が接続され、アクチュエータ駆動回路16は、アクチュエータ18に接続される。アクチュエータ18は、回転質量を有するアクチュエータを含む任意のタイプのアクチュエータであってもよく、一実施形態では、偏心質量アクチュエータ(Eccentric Rotating Mass(「ERM」)actuator)である。一実施形態では、アクチュエータ18は、相対的に長い立ち上り時間及び立ち下がり時間を有する任意のタイプのアクチュエータである。プロセッサ12は、任意のタイプの汎用目的のプロセッサであってもよく、又は特定用途向け集積回路(「ASIC」)のようなハプティック効果を提供するように具体的に設計されたプロセッサであることもできる。プロセッサ12は、システム10全体を動作する同一のプロセッサであってもよく、別のプロセッサであってもよい。プロセッサ12は、どのハプティック効果がプレイされるか、及びハプティック効果がハイレベルパラメータに基づいてプレイされる順序を決定することができる。通常、特定のハプティック効果を定義するハイレベルパラメータは、マグニチュード(magnitude)、周波数及び持続期間を含む。ストリーミングモータコマンドのようなローレベルパラメータも特定のハプティック効果を決定するために用いられる。ハプティック効果は、ハプティック効果が生成されるとき又はユーザのインタラクションに基づくこれらのパラメータのバリエーションであるときに、これらのパラメータのいくつかのバリエーションを含む場合、「動的(dynamic)」とみなされてもよい。
【0010】
プロセッサ12は、アクチュエータ駆動回路16へ制御信号を出力し、アクチュエータ駆動回路16は、所望のハプティック効果を生じるために、必要な電気インパルス電流及び電圧(つまり、「モータ信号」)をアクチュエータ18に提供するために用いられる電子部品及び回路を含む。システム10は、一以上のアクチュエータ18を含んでもよく、各アクチュエータは、別の駆動回路16を含んでもよく、全てが共通のプロセッサ12と接続される。メモリデバイス20は、ランダムアクセスメモリ(RAM)又はリードオンリーメモリ(ROM)のような任意のタイプのストレージデバイス又はコンピュータ可読媒体であることができる。メモリ20は、プロセッサ12によって実行される命令を記憶する。命令のうち、メモリ20は、ハプティック効果モジュール22を含み、以下のより詳細に開示されるように、プロセッサ12によって実行されるときに、ハプティック効果を提供する一方で、カスケードを最小にするアクチュエータ18用に駆動信号を生成する。メモリ20は、プロセッサ12の内部に配置されてもよく、又は内部及び外部メモリの任意の組み合わせであってもよい。
【0011】
タッチ面11は、タッチを認識し、面上でのタッチの位置及びマグニチュードも認識してもよい。タッチに対応するデータは、プロセッサ12又はシステム10内の別のプロセッサに送信され、プロセッサ12は、タッチを読み取り、それに応じてハプティック効果信号を生成する。タッチ面11は、容量検知、抵抗検知、表面音響波検知、圧力検知、光学検知等を含む任意のセンシング技術を用いてタッチを検知してもよい。タッチ面11は、マルチタッチ接触を検知してもよく、同時に生じるマルチタッチを区別することが可能であってもよい。タッチ面11は、キー、ダイヤル等とインタラクトするためのユーザのために画像を生成及び表示するタッチスクリーンであってもよく、又は最小限の画像又は画像のないタッチパッドであってもよい。
【0012】
システム10は、携帯電話、パーソナルデジタルアシスタント(「PDA」)、スマートフォン、コンピュータタブレット、ゲーミングコンソール、ウェアラブルデバイスであってもよく、又は、一又はそれ以上のアクチュエータを含むハプティック効果システムを含む任意の他のタイプのデバイスであってもよい。システム10は、ハプティック効果を生成する一又はそれ以上のアクチュエータを含む(例えば、ブレスレット、アームバンド、グローブ、ジャケット、ベスト、眼鏡、靴、ベルト等)のウェアラブルデバイスであってもよい。ユーザインターフェースは、タッチ検知面であってもよく、又はマウス、タッチパッド、ミニジョイスティック、スクロールホイール、トラックボール、ゲームパッド又はゲームコントローラ等のような任意の他のタイプのユーザインターフェースであってもよい。一以上のアクチュエータを有する実施形態では、各アクチュエータは、デバイス上でハプティック効果の広い範囲を生成するために、異なる回転性能を有してもよい。
【0013】
上述したように、ERM又は他のタイプの低速モータのような、長い立ち上がり及び立ち下がり時間を有するアクチュエータで振動ハプティック効果をプレイするとき、典型的ないくつかの待ち時間が存在する。したがって、タッチスクリーンキーボードのバーチャルキーの連続押下への応答のような、一連の素早いハプティック効果をプレイするとき、連続的なバズ(buzz)が生成され、これは、「カスケーディング(cascading)」と呼ばれる。カスケーディングは、初めの効果をプレイした後に、後続の効果を受信したときに、モータが停止しないことにより生じる。結果的に、モータは、連続的に回転してしまい、ハプティック効果が互いに短い期間内にプレイされるとき、ユーザは、個々のハプティック効果を感じることができなくなってしまう。カスケーディングの問題の既知の解決手段は、素早い立ち上がり時間及び立ち下がり時間を有する比較的高価なERMを用いること、ブレーキング信号を含む双方向駆動信号をサポートする比較的高価な駆動回路を用いること、又はハプティック効果が速くプレイされることを防ぐ何らかの手段を含む。
【0014】
実施形態は、アクチュエータの低速な立ち上がり及び立ち下がり時間に適応し、かつカスケーディングを最小化するために、ハプティック効果信号の前処理及び後処理を含む。前処理及び後処理の前に、実施形態は、アクチュエータの立ち上がり時間及び立ち下がり時間を特徴付け、かつそれらの時間のバリエーションを占有するために、アクチュエータを「調整(tune)」する。いくつかの実施形態は、カスケーディングを最小化又は排除するために、前処理又は後処理のみを実装してもよい。他の実施形態は、カスケーディングを最小化又は排除するために、前処理及び後処理の両方を実装してもよい。
【0015】
具体的には、低速アクチュエータは、非線形立ち上がり及び立ち下がり時間を有する。このようなアクチュエータをモデル化することを可能にするために、実施形態は、停止状態から定格加速度の90%へ立ち上がるためにアクチュエータから得られる総立ち上がり時間を測定する。一実施形態におけるこの立ち上がり時間は、立ち上がり時間の10%、20%...90%で10個の区分に分割され、各ポイントでの対応する加速は、記述される。これらの9個の値+総立ち上がり時間は、チューニングパラメータに加えられる。通常、任意の数のポイント/区分を選択することができ、より多くのポイントが立ち上がり曲線に沿って取られ、より正確にモデル化できる。デバイス上の各アクチュエータは、一実施形態において99個のチューニングパラメータの各アクチュエータ独自のセットを有する。これらのパラメータを変化させることにより異なるハプティック効果をもたらす。チューニングパラメータの実施例は、(1)マグニチュードをスケーリングするためのゲイン値、(2)非線形アクチュエータから線形応答を得ることを補助する線形化値、(3)マグスウィープ(MagSweep)効果キック及びブレーキパラメータ、(4)ピリオディック(Periodic)効果パラメータ、(5)更新レート(例えば、5ms)及び(6)アクチュエータタイプ、ビルドナンバー等のような情報パラメータを含む。
【0016】
立ち上がり曲線と同様に、10個の値は、一実施形態における立ち下がり曲線のために取得されるが、任意の数の値を用いることができる。立ち下がり時間は、定格加速度から知覚可能な加速度(一実施形態では、〜0.04g)以下へ到達するために、アクチュエータに必要とされる時間であるとみなされる。ブレーキングがアクチュエータによってサポートされる場合、負のオーバードライブ電圧又はシャンティング(shunting)のような他のブレーキングメカニズムが適用される。そうない場合、電圧は印加されない。このチューニングモデルを適用することにより、実施形態は、モータがプレイ可能な効果及び所与の時間でのモータの状態の、より正確なピクチャを有する。
【0017】
図2は、本発明の一実施形態に係るカスケードを最小にする又はカスケードのないハプティック効果を生成するときのシステム10の機能のフローチャートである。一実施形態では、
図2、3及び5のフロチャートの機能は、メモリ又は他のコンピュータ可読媒体又は有形媒体に記憶されるソフトウェア(例えば、ハプティック効果モジュール22)によって実装され、プロセッサによって実行される。他の実施形態では、機能は、(例えば、特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)等)用途の使用を通じて)ハードウェアによって行われてもよく、又はハードウェア及ソフトウェアの任意の組み合わせによって行われてもよい。
【0018】
202では、ハプティック効果は、ハプティック効果の包絡線/形状を定義する、パラメータ化された振動定義の形態で受け付けられる。当該定義は、持続期間、周波数、マグニチュード(magnitude)等を含むハプティック効果を定義するパラメータを含む。一実施形態では、当該定義は、Immersion Corpの「TouchSense(登録商標)3000 Haptic Design Kit」に基づく。この実施形態では、ハプティック効果は、マグスウィープ(MagSweep)又はピリオディック(Periodic)基本効果から形成される「インパルス(impulse)」、「サステイン(sustain)」及び「フェード(fade)」の3つの基本パーツ/領域又は効果マグニチュードを含む包絡線によって形成される定義形状によって定義される。タイムライン(Timelines)及び補間(Interpolated)効果のような他の効果タイプは、基本効果を構成する。他の実施形態では、定義は、
図2の機能を通じて相対的に維持されるハプティック効果の一般的なものである。
【0019】
204では、ハプティック効果定義は、前処理される。通常、前処理は、所望のハプティック効果を決定すること及び実際の効果を決定することにより、システム10内のアクチュエータ18の特性に一致させるために、ハプティック効果を修正し、アクチュエータは、その特性に基づいてプレイされることが可能となる。「新たな」効果は、元の効果と同一又はスケールダウンバージョンのいずれかである。例えば、ハプティック効果定義が短時間に非常に強い場合、アクチュエータは、素早く回転することができない。したがって、前処理は、ハプティック効果がプレイされる前に、マグニチュードの低減のようなアクチュエータを調整するために、ハプティック効果定義を変更する。一実施形態では、前処理は、プレイされる所望の効果に基づき、かつアクチュエータ立ち上がり曲線及び/又は立ち下がり曲線に基づいて「クリッピング(clipping)」することを含む。クリッピングは、基本効果レベルで生じ、アクチュエータが、効果の持続期間の最後に所望のマグニチュードを達成できることを確実にする。したがって、同一の効果が、繰り返しプレイされる場合、効果は、互いにマージされず、カスケーディングを防ぐ。通常、前処理は、カスケーディングが低減される又は低減されないが、互いに対する効果特性をできるだけ維持するような手段で効果を変更する。マグニチュードスケーリングに加えて又は替わりの他の方法を用いることができ、効果持続期間スケーリングを含む。前処理のさらなる詳細は、以下に開示される。
【0020】
206では、前処理されたハプティック効果は、前処理信号を駆動回路へ送信することにより開始/プレイされ、これは、アクチュエータに振動ハプティック効果を生成させる。
【0021】
ハプティック効果がプレイされている間、後処理インターバルが到達したかどうかを判定する。後処理インターバルは、予め決定されており、典型的には、タイマ/クロックティック(clock tick)/サイクルごと(例えば、5msごと)に等しく、駆動回路へ送信されたフォース値(force value)を有する前に、毎回生じる。
【0022】
208でnoの場合、212では、ハプティック効果は、その持続期間が終了するまで、プレイを継続し、フローは、208へ移る。
【0023】
208でyesの場合、210では、ハプティック効果定義は、後処理される。通常、後処理は、与えられたポイント(つまり、アクチュエータの現在の状態)において、その立ち上がり又は立ち下がり曲線に位置するアクチュエータを推定又は測定し、アクチュエータ駆動回路へ送信されるフォース/電圧値は調整される。フォースの値は、特定の時間において効果定義に基づいて、どの程度速くモータがスピンされることが望まれるかを示す。後処理は、所望の効果フォースと共にアクチュエータの現在の状態を判定し、新たなフォース/マグニチュードを決定する。新たなフォースは、所望のフォースと同様であってもよく、又はアクチュエータにできるだけ早く所望のフォースを実現させるフォースであってもよい。フォース値は、Immersion Corpの「TouchSense(登録商標) 3000 Haptic Design Kit」からのカーネルのような外部エンティティから受信されることができる。後処理は、アクチュエータの現在の状態についての推定又は測定(つまり、既に回転しているものがどの程度速いか)に基づいてフォース値を調整する。後処理のさらなる詳細は、以下に開示される。
【0024】
212では、ハプティック効果は、210での後処理の後に、プレイされる。フローは、208へ移る。
【0025】
図3は、3つの効果領域が用いられる場合の本発明の一部の実施形態に係るハプティック効果定義を前処理したときのシステム10の機能のフローチャートである。通常、この実施形態については、3つの領域(つまり、インパルス、サステイン及びフェード)外で、アクチュエータが実現できる最大マグニチュード(“newMax”)は、決定される。3つの全ての領域は、その後、“newMax/oldMax”比を用いてスケールされる。したがって、効果形状は、維持される。
図4は、一実施形態に係る
図3の機能性を示す例示的な効果を示す。
【0026】
具体的には、
図3に示されるように、302では、効果は、インパルス、サステイン及びフェードの3つのマグニチュード区分/領域に分割される。インパルス及びフェード領域は、フラットでありうる、又はランプアップ又はランプダウンでありうる。サステイン領域は、一実施形態において常にフラットである。
【0027】
変数“oldMax”は、3つの区分のうち最大のマグニチュードと等しい。
図4では、元の効果のインパルス区分402は、初めの区分であり、420で終了する。次の区分は、430で終了するサステイン区分である。最後に、フェード区分は、効果を終結させる。
【0028】
304では、インパルス区分がランプダウンされ、アクチュエータの立ち上がり曲線と交わるかどうかを判定する。
図4では、インパルス区分は、ランプダウンせず、414で立ち上がり曲線406と交わる。
【0029】
304でyesの場合、306では、変数“newMax”は、インパルス交差レベルと等しく、変数“Susachieved”は、1に等しい。
図4では、インパルス交差レベルは、第1のクリッピング409である。
【0030】
304でnoの(つまり、インパルスがランプダウンされる)場合、308では、newMaxは、立ち上がり曲線のサステイン交差レベルと等しい。サステイン交差レベルが、サステインレベルよりも大きい場合、変数Susachievedは、1に等しい。310では、フェード区分がランプダウンするかどうかを判定する。310でyesの場合、312では、Susachievedが1と等しいかどうかを判定する。変数Susachieved=1の場合、フローは316へ移る。
【0031】
310又は312でnoの場合、314では、フェード区分と立ち上がり曲線との交差レベルは、決定される。立ち上がり曲線がフェード区分に交差しない場合、fadeIntersectLevelは、立ち上がり曲線がフェード持続期間において実現されうる最大に設定される。交差レベルがnewMaxよりも大きい場合、newMaxは、交差レベルに設定される。
図4では、曲線407とは交差せず、最大値は、第2のクリッピング411であり、これは、第1のクリッピング409よりも大きい。
【0032】
316では、newMax/oldMaxのスケールファクタは、決定される。元の効果は、マグニチュードレベルにスケールファクタを掛けることにより、スケールファクタに基づいてスケールされた効果にスケールされる。
図4では、スケールファクタは、0.75であり、元の効果402は、スケール効果403にスケールされる。
【0033】
上述したように、前処理は、全体効果を、アクチュエータが実現できるものにスケールする一方で、効果形状を維持する(又は元の効果を維持する)。フローは、初期のランプ、サステイン及びフェードマグニチュード外の最大マグニチュード(“oldMax”と示される)を決定する。フローは、その後、アクチュエータ立ち上がり曲線が、効果曲線と交差することに基づいて実際に実現可能な3つのマグニチュードを見つける(つまり、“ImpIntersectLevel”、“SusIntersectLevel”及び“FadeIntersectLevel”)。newMaxは、これら3つの効果マグニチュードの最大値である。最後に、newMax/oldMaxのスケールファクタを決定する。元の効果における3つの全ての効果マグニチュードは、新たなマグニチュードに達するために、このスケールファクタによって乗算される。
【0034】
他の実施形態では、クリッピング効果マグニチュードに替えて、効果持続期間は、クリップされうる。さらに、効果持続期間及びマグニチュードの両方もクリップされうる。この実施形態については、垂線は、効果から立ち上がり曲線へ引かれ、垂線と立ち上がり曲線との交点でのマグニチュード及び持続期間が用いられる。
【0035】
別の実施形態では、効果曲線下の領域は決定され、効果のプレイに用いられる。この実施形態は、非常に低速なモータについて、ユーザが、異なる効果形状間の差を知ることができないと仮定する。別の実施形態では、効果の持続期間は、決定されることができ、当該決定は、ゼロから開始する当該持続期間の後、アクチュエータが最終的にどの程度速くなるかについてなされ、効果が最大マグニチュードスクエアパルス(maximum magnitude square pulse)である場合、効果マグニチュード、インパルスレベル(impulse level)及びフェードレベル(fade level)は、その値に制限されうる。さらに、実施形態は、「タイムライン(Timeline)」ハプティック効果のための別のクリッピングプロセスを有しうる。ピリオディック(Periodic)、マグスウィープ(Magsweep)及びウェーブフォーム(Waveform)効果は、複雑な効果シーケンスを形成するためにタイムライン(Timeline)と置き換えられうる。
【0036】
図5は、本発明の一実施形態に係るハプティック効果定義を後処理するときのシステム10の機能のフローチャートである。通常、
図5の後処理機能は、タイマーティック/サイクルごとに実行され、典型的には、5msである。各時間ごとに、実施形態は、所望のフォースを決定し、アクチュエータへ送信するために、新たなフォース/電圧を算出する(つまり、モータを所望の速度で回転させるために部分的にオーバードライブ又はブレーキングする)。実施形態は、アクチュエータが立ち上がり又は立ち下がり曲線のどこにあるかに関連してどのモータが現在稼働しているかの推定を考慮することにより、どの程度速くモータが回転できるか比較されたハプティック効果に基づいてどの程度速くモータが回転すべきかを決定する。実施形態は、所望の速度にできるだけ近くモータを回転させる電圧を演算し、その後、推定された速度を更新/再演算し、これは、モータが、タイマーティックの所望の速度に到達できない場合、所望の速度と同一にはならない。
【0037】
502では、所望のフォース/出力が、推定出力と等しいかどうかを判定する。502でyesの場合、出力は、504で線形化される。出力の線形化は、通常、摩擦等のような実世界のパラメータを出力決定へ追加する。例えば、アクチュエータにおける摩擦は、15%のフォースが、ハプティック効果に基づいて1%のフォースを生成するために必要であることを意味してもよい。一部の実施形態では、テーブル又は他のマッピングは、線形化のために用いられる。
【0038】
502でnoの場合、506では、変数“Diff”は、(所望の出力)−(推定出力)として決定される。
【0039】
508では、Diffが0より大きいかどうか判定する。
【0040】
508でyesの場合、アクチュエータが1タイマーティック(timer tick)で実現されうる立ち上がり時間を決定する。一実施形態では、アクチュエータの立ち上がり時間スロープに基づくルックアップテーブルは、決定のために用いられる。ルックアップテーブルは、前処理の前に、上述したチューニング機能に基づいて生成される。ルックアップテーブルが生成されると、前処理及び後処理に用いられる。
【0041】
512では、Diffが、立ち上がりスロープよりも大きいかどうかを判定する。
【0042】
512でyesの場合、514では、Diffは、立ち上がりスロープと等しく、出力は、アクチュエータの最大出力と等しい。
【0043】
512でnoの場合、新たな出力は、2点間の線形補間を用いて決定される。線形補間に関する追加の詳細は、以下に開示される。他の実施形態では、任意のタイプの補間モデルを用いることができる。
【0044】
524では、Estimateは、Diffと等しく、New Forceは、出力と等しい。
【0045】
526では、出力は、504のように線形化される。
【0046】
508においてDiffが0を超えない場合、518では、アクチュエータが1タイマーティックで実現されうる立ち下がりスロープは、決定される。一実施形態では、アクチュエータの立ち下がり時間スロープに基づくルックアップテーブルは、決定のために用いられる。
【0047】
520では、Diffが立ち下がりスロープ未満であるかどうかを判定する。
【0048】
520でyesの場合、522では、Diffは、立ち下がりスロープと等しく、出力は、ブレーキング能力に基づき0又は負の最大パワーと等しい。フローは、その後、524へ移る。
【0049】
520でnoの場合、フローは、516へ移る。
【0050】
上述したように、後処理のために、アクチュエータの立ち上がり及び立ち下がり曲線は、調整(tuning)処理に対する変更に基づいて10個の直線区分に分割される。タイマーティック(timer tick)におけるフォース値の最大値の増加/現象は、これらの線区分のスロープに基づいて決定される。スロープは、アクチュエータが、次のタイマーティックによる所望のフォース値を取得するかどうかを判定するために用いられる。そうでない場合、キック又はブレーキパルスは、印加される。アクチュエータが、次のタイマーティックによる所望のフォースを取得することができる場合、フォースが増加/減少されるべき量は、アクチュエータが、タイマーティックの終了によって所望のフォース値にあるように、決定される。推定フォースは、
図5に示されるようにティック毎に更新される。
【0051】
一実施形態では、後処理は、パラメータ定義が以下のような擬似コードによって実装されることができる。
・ Smax − maximum ‘strength’ representation; e.g., 63
−‘Strength’ means “effect designer intent”
・ Vmax − maximum voltage representation; e.g., 127
・ Ttick − update period; e.g., 5ms
・ Vrat − rated voltage representation (<= Vmax)
・ Trise − time to go from 0 to Smax when applying Vmax
・ Tfall − time to go from Smax to 0 when applying −Vmax
【0052】
導出されたパラメータは、以下のようになる。
・ Mmax − maximum strength−versus−time slope
− When applying Vmax
− The actuator can’t accelerate any faster than this
− Mmax = Smax / Trise
− Mmax > 0
・ Mmin − minimum strength−versus−time slope
− When applying −Vmax
− The actuator can’t slow down any faster than this
− Mmin = −Smax / Tfall
− Mmin < 0
【0053】
入力は、以下のようになる。
・ Sdes − desired strength at time t + Ttick
− This is what the effect designer wants to feel
− Sdes >= 0
【0054】
状態変数は、以下のようになる。
・ Sest − estimated strength at time t
− This is what the simulation ‘thinks’ the user is feeling
− Sest >= 0
【0055】
所望のスロープは、以下のようになる。
・ Mdes − This is the slope needed to go from Sest to Sdes in Ttick
− Mdes = (Sdes−Sest)/Ttick
【0056】
取り得るスロープは、以下のようになる。
・ Clip Mdes to what the actuator can achieve
− Mout = MAX(MIN(Mdes,Mmax),Mmin)
【0057】
出力電圧は、以下のようになる。
・ If Mout = 0,
− Vout1 = Vrat * Sest / Smax
− In order to maintain Sest
・ If Mout = Mmax,
− Vout2 = Vmax
・ If Mout = Mmin,
− Vout2 = −Vmax
・ Interpolate linearly
− Vout = Vout1 + (Vout2 − Vout1) * Mout /(Mout >= 0 ? Mmax : Mmin)
【0058】
最後に、更新された状態は、以下のようになる。
・Estimate state at time t + Ttick
−Sest’ = Sest + Mout * Ttick
【0059】
開示されているように、実施形態は、ハプティック効果定義を前処理及び/又は後処理することによりハプティック効果を生成する。前処理は、所望の効果と共にアクチュエータ特性をルックアップし、実際の効果を、アクチュエータがプレイ可能かどうか判定する。前処理された効果は、元の効果と同一又はスケールダウンされたもののいずれかである。前処理は、ハプティック効果がプレイされる前に、ハプティック効果を実現可能なものに変更する。
【0060】
後処理は、新たなフォースを取り出すために、アクチュエータの現在の状態と共に、所望のフォースをルックアップする。この新たなフォースは、所望のフォースと同一であってもよく、又はアクチュエータが、できるだけ早く所望のフォースを得るフォースであってもよい。一実施形態において共に実装される、又は他の実施形態において個別に実装される(つまり、一実施形態は、前処理のみを実装し、他の実施形態は、後処理のみを実装する)前処理及び後処理の結果として、連続するキーパッドの押下のような一連の素早いハプティック効果からのカスケーディングは、最小化又は除去される。
【0061】
本明細書では、複数の実施形態を具体的に例示および/または説明している。しかし、開示されている実施形態の修正および変更も、上述の教示の対象範囲に含まれ、本発明の精神および範囲から逸脱せずに添付の請求項の範囲内に含まれるものとする。