(57)【要約】【課題】移動体に搭乗する利用者に提供されているバーチャル空間で衝突イベントが発生した場合に、弾性体との衝突感覚を利用者に提示することができる衝突感覚提示システム及びプログラムを提供する。【解決手段】移動体のサスペンションを振動させることにより、移動体に搭乗する利用者に衝突感覚を提示する衝突感覚提示装置と、バーチャル空間における物体同士の衝突の発生が予測される場合に、衝突の発生に合わせて、バーチャル空間における衝突による物体の変位量、又は物体同士の弾性の差分に応じた振幅でサスペンションを振動させるように、移動体の各部を駆動制御する駆動制御装置と、を備えた衝突感覚提示システムとする。【選択図】図２
2018202018.tif 000002
【特許請求の範囲】
【請求項１】
移動体のサスペンションを振動させることにより、前記移動体に搭乗する利用者に衝突感覚を提示する衝突感覚提示装置と、
バーチャル空間における物体同士の衝突の発生が予測される場合に、前記衝突の発生に合わせて、バーチャル空間における前記衝突による前記物体の変位量、または物体同士の弾性の差分に応じた振幅で前記サスペンションを振動させるように、前記移動体の各部を駆動制御する駆動制御装置と、
を備えた衝突感覚提示システム。
【請求項２】
前記駆動制御装置は、
前記移動体を一方向に移動させた後に逆方向に移動させることで、前記移動体に衝撃を与えて前記サスペンションを振動させる、
請求項１に記載の衝突感覚提示システム。
【請求項３】
前記駆動制御装置は、
前記物体の変位量、または物体同士の弾性の差分が大きいほど、前記移動体に大きな衝撃を与えて前記振幅を大きくする、
請求項２に記載の衝突感覚提示システム。
【請求項４】
前記駆動制御装置は、
前記衝突する物体の一方が弾性体である場合に、前記弾性体との衝突による他方の物体の変位量に応じた振幅で前記サスペンションを振動させる、
請求項１に記載の衝突感覚提示システム。
【請求項５】
前記駆動制御装置は、
前記物体同士の衝突に関する物理量を用いて、前記移動体を一方向に移動させた後に逆方向に移動させる駆動手順を取得し、
前記駆動手順に従って前記移動体の各部を駆動制御する、
請求項２に記載の衝突感覚提示システム。
【請求項６】
前記駆動制御装置は、
前記物体同士の衝突に関する物理量から前記物体の変位量を求め、
前記物体の変位量に応じた衝撃を前記移動体に与えるように、前記移動体を一方向に移動させた後に逆方向に移動させる駆動手順を取得する、
請求項５に記載の衝突感覚提示システム。
【請求項７】
前記移動体を一方向に移動させた後に逆方向に移動させる駆動手順が、衝突の種類に応じて予め定められており、
前記駆動制御装置は、
予測される衝突の種類に応じて予め定められた駆動手順を取得し、
前記駆動手順に従って前記移動体の各部を駆動制御する、
請求項２に記載の衝突感覚提示システム。
【請求項８】
前記駆動制御装置は、
前記衝突を予測してから前記物体同士が衝突するまでの時間を、前記移動体を一方向に移動させる第１の時間とし、前記物体同士が衝突してから最大変位するまでの時間を、前記移動体を逆方向に移動させる第２の時間とし、
前記物体の最大変位量、前記第１の時間、及び前記第２の時間に応じて、前記移動体を一方向に移動させる駆動手順に用いる第１の駆動制御値と、前記移動体を逆方向に移動させる駆動手順に用いる第２の駆動制御値とを取得する、
請求項５に記載の衝突感覚提示システム。
【請求項９】
前記駆動制御装置は、前記移動体のシフト及びアクセルを駆動制御する、
請求項１から請求項８までのいずれか１項に記載の衝突感覚提示システム。
【請求項１０】
前記駆動制御装置は、さらにブレーキを駆動制御する、
請求項９に記載の衝突感覚提示システム。
【請求項１１】
前記サスペンションが、固さの調整が可能なエアサスペンションであり、
前記駆動制御装置は、エアサスペンションを駆動制御する、
請求項１から請求項１０までのいずれか１項に記載の衝突感覚提示システム。
【請求項１２】
コンピュータを、
請求項１から請求項１１までのいずれか１項に記載された衝突感覚提示システムの駆動制御装置として機能させるためのプログラム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、衝突感覚提示システム及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、仮想空間画像に応じて、ユーザの指に与える力覚を発生する力覚発生手段と、前記指に装着され、前記力覚発生手段によって発生された力覚を前記指に提示する力覚提示手段と、前記力覚発生手段によって発生された力覚によって前記指を押しかえして前記指を所定の位置に保持することにより、前記指から前記力覚提示手段に加えられた作用力を所定の時期に計測する計測手段と、前記計測手段によって計測された作用力が第１の閾値以上であるか否かを判定する判定手段と、前記判定手段によって前記作用力が第１の閾値以上であると判定された場合には、前記力覚発生手段によって発生された力覚の大きさを該第１の閾値よりも小さい第２の閾値に変更する力覚変更手段と、を備えることを特徴とする力覚提示装置が開示されている。
【０００３】
特許文献２には、仮想空間画像を生成する画像生成手段と、前記画像生成手段によって生成された仮想空間画像を表示する表示手段と、前記仮想空間画像に応じて、ユーザの指に与える力覚を発生する力覚発生手段と、前記指に装着され、前記力覚発生手段によって発生された力覚を前記指に提示する力覚提示手段と、前記力覚提示手段が装着された指先を対象物に接触させた際、前記表示手段によって表示される仮想空間画像において前記力覚提示手段の厚みを取り除くように、前記画像生成手段によって生成された前記仮想空間画像を補正する画像補正手段と、を備えることを特徴とする力覚提示装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２１３３５１号公報
【特許文献２】特開２００４−２１３３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＶＲコンテンツを提供するバーチャルリアリティシステムに車両が利用される形態は、パッシブ型、アクティブ型、バーチャル・ドライブ型の３種類に分類される。パッシブ型は、車両が加速すれば提示されるコンテンツ内部でも加速するというように、車両の運転に合わせたコンテンツを提示する形態である。アクティブ型は、提示するコンテンツに合わせて車両を自動運転により駆動することで移動感覚等を提示し、コンテンツの臨場感を向上させる形態である。バーチャル・ドライブ型は、運転手がＨＭＤを装着し、バーチャル空間の映像を提示された状態で、実空間にて実際に車両の走行を行う形態である。
【０００６】
バーチャルリアリティシステムにおいては、映像提示に合わせて感覚を提示するアクティブ型の形態で、車両等の移動体がモーション・プラットホーム（ＭＰ）として利用される技術は実用例がない。また、特許文献１、２に記載された「感覚を提示する技術」についても、ユーザの指に力覚を提示するものであり、衝突による衝撃など利用者が全身で感じ取ることができる感覚を提示するものではなかった。
【０００７】
本発明の目的は、移動体に搭乗する利用者に提供されているバーチャル空間で衝突イベントが発生した場合に、弾性体との衝突感覚を利用者に提示することができる衝突感覚提示システム及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１に記載の発明は、移動体のサスペンションを振動させることにより、前記移動体に搭乗する利用者に衝突感覚を提示する衝突感覚提示装置と、バーチャル空間における物体同士の衝突の発生が予測される場合に、前記衝突の発生に合わせて、バーチャル空間における前記衝突による前記物体の変位量、または物体同士の弾性の差分に応じた振幅で前記サスペンションを振動させるように、前記移動体の各部を駆動制御する駆動制御装置と、を備えた衝突感覚提示システムである。
【発明の効果】
【０００９】
本発明によれば、移動体に搭乗する利用者に提供されているバーチャル空間で衝突イベントが発生した場合に、弾性体との衝突感覚を利用者に提示することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施の形態に係る衝突感覚提示システムの概略を示す概略図である。
【図２】本発明の第１の実施の形態に係る衝突感覚提示システムの構成の一例を示すブロック図である。
【図３】ＶＲコンテンツ再生装置の電気的構成の一例を示すブロック図である。
【図４】移動体の駆動制御系の一例を示すブロック図である。
【図５】（Ａ）及び（Ｂ）は物体同士の衝突の一例を説明する図である。
【図６】（Ａ）は弾性を表す模式図である。（Ｂ）は弾性体との衝突の一例を表す模式図である。（Ｃ）は移動体の構造の一例を表す模式図である。
【図７】（Ａ）及び（Ｂ）は、バーチャル空間で衝突に関与する物体の変位の時間変化の一例を表すグラフである。
【図８】（Ａ）及び（Ｂ）は、サスペンションが振動する様子を示す模式図である。
【図９】（Ａ）から（Ｄ）は、サスペンションを振動させるための移動体の駆動手順の一例を説明する模式図である。
【図１０】本発明の第１の実施の形態に係る「衝突イベント検出処理」の流れの一例を示すフローチャートである。
【図１１】「衝突イベント検出処理」の流れの他の一例を示すフローチャートである。
【図１２】ＶＲコンテンツのシナリオの一例を示すタイムチャートである。
【図１３】「衝撃生成処理」の流れの一例を示すフローチャートである。
【図１４】本発明の第１の実施の形態に係る「駆動パターン取得処理」の流れの一例を示すフローチャートである。
【図１５】（Ａ）及び（Ｂ）は揺動パターンと駆動パターンの相関関係を示す模式図である。
【図１６】本発明の第２の実施の形態に係る「駆動パターン取得処理」の流れの一例を示すフローチャートである。
【図１７】衝突の種類に応じて揺動パターンと駆動パターンとを予め関連付けるテーブルの一例を示す図表である。
【図１８】本発明の第３の実施の形態に係る「駆動パターン取得処理」の流れの一例を示すフローチャートである。
【図１９】衝突の種類、揺動パターン、及び駆動パターンが予め登録されたシナリオの一例を示す図表である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。
【００１２】
＜第１の実施の形態＞
（衝突感覚提示システム）
まず、衝突感覚提示システムの概略を簡単に説明する。
図１は本発明の第１の実施の形態に係る衝突感覚提示システムの概略を示す概略図である。図１に示すように、本実施の形態に係る衝突感覚提示システムでは、サスペンションを備えた移動体４４をモーション・プラットホーム（ＭＰ）として利用して、ユーザ１２にバーチャル空間で発生するイベントを体験させるバーチャル・リアリティ・コンテンツ（ＶＲコンテンツ）を提供する。サスペンションを備えた移動体４４としては、車両、電動車椅子等が挙げられる。
【００１３】
ユーザ１２は、ヘッド・マウント・ディスプレイ（ＨＭＤ）５０を装着して移動体４４に搭乗している。ＨＭＤ５０は、バーチャル空間の映像や音声をユーザ１２に提示する。移動体４４は、衝突、移動、傾斜、温度変化等、バーチャル空間で発生するイベントに応じて駆動される。これにより、移動体４４に搭乗しているユーザ１２に、イベントに応じた感覚が提示される。人間は複数の感覚を統合することで、身の周りで起きる現象を認識している。このため、映像（視覚）と他の感覚とが同時に提示されることで、ユーザ１２がバーチャル空間の情報は事実だと錯覚し、ＶＲコンテンツの臨場感が高まるのである。
【００１４】
本実施の形態では、移動体４４をＭＰとして利用して、衝突イベントに応じた衝突感覚を提示する場合について説明する。本実施の形態に係る衝突感覚提示システムは、バーチャル空間において物体同士の衝突イベントが発生する場合に、移動体４４を駆動して衝突イベントに応じた衝突感覚をユーザ１２に提示すると共に、ＨＭＤ５０を介して衝突イベントを反映させた映像や音声をユーザ１２に提示する。
【００１５】
次に、衝突感覚提示システムの構成について説明する。
図２は本発明の第１の実施の形態に係る衝突感覚提示システムの構成の一例を示すブロック図である。図２に示すように、衝突感覚提示システムは、ＶＲコンテンツ再生装置１０と、感覚提示装置群４０とを備えている。
【００１６】
ＶＲコンテンツ再生装置１０は、ＶＲコンテンツ記憶部１１、衝突解析部１４、及び情報更新部１６を備えている。衝突解析部１４は、衝突イベント検出部１８と衝撃生成部２０とを備えている。感覚提示装置群４０には、移動体４４、映像表示装置４６、及び音声出力装置４８が含まれている。なお、後述する通り、本実施の形態では、ＨＭＤ５０が、映像表示装置４６と音声出力装置４８とを備えている。
【００１７】
ＶＲコンテンツ記憶部１１には、ＶＲコンテンツが記憶されている。衝突解析部１４は、ＶＲコンテンツ記憶部１１から次に再生するＶＲ映像情報を読み出す。衝突イベント検出部１８は、ＶＲ映像情報から衝突イベントを検出する。衝突イベントが検出された場合、衝撃生成部２０は、衝突イベント検出部１８から衝突情報を取得し、取得された衝突情報から衝突イベントに応じた駆動情報を生成する。ここで「駆動情報」とは、駆動対象を駆動制御する駆動制御値の経時変化を表す「駆動パターン」である。駆動パターンは、アクセル電圧の波形パターン等、駆動対象毎に求められる。
【００１８】
情報更新部１６は、駆動情報に基づいて所定時間毎に（例えば、０．０１秒毎に）駆動制御値を取得して、取得した駆動制御値を「制御情報」として移動体４４に出力する。駆動制御値（制御情報）は、所定時間毎に更新される。移動体４４は、得られた「制御情報」に基づいて駆動制御される。移動体４４が駆動されて、衝突イベントに応じた衝突感覚がユーザ１２に提示される。
【００１９】
衝撃生成部２０は、衝突イベントに応じた駆動情報を生成すると共に、衝突イベントを反映させた映像情報及び音声情報も生成する。映像情報及び音声情報は、制御情報を出力するタイミングで、ＨＭＤ５０（映像表示装置４６と音声出力装置４８）に出力される。これにより、映像及び音声が、移動体４４の動きと同期して切り替わる。ＨＭＤ５０を介して衝突イベントを反映させた映像や音声がユーザ１２に提示される。
【００２０】
ここで、ＶＲコンテンツ再生装置１０の電気的構成について説明する。
図３はＶＲコンテンツ再生装置の電気的構成の一例を示すブロック図である。
ＶＲコンテンツ再生装置１０は、コンピュータとして構成されている。即ち、ＶＲコンテンツ再生装置１０は、ＣＰＵ１０Ａ、ＲＯＭ１０Ｂ、ＲＡＭ１０Ｃ、不揮発性のメモリ１０Ｄ、及び入出力部（Ｉ／Ｏ）１０Ｅを備えている。これら各部は、バス１０Ｆを介して互いに接続されている。ＣＰＵ１０Ａは、ＲＯＭ１０Ｂに記憶されたプログラム等を読み出し、ＲＡＭ１０Ｃをワークエリアとして使用してプログラムを実行する。
【００２１】
Ｉ／Ｏ１０Ｅには、外部装置と通信を行う通信部２１、ユーザからの操作を受け付ける操作部２３、ユーザに情報を表示する表示部２５、及び情報を記憶する記憶部２７が接続されている。また、ＶＲコンテンツ再生装置１０のＩ／Ｏ１０Ｅには、移動体４４及びＨＭＤ５０が接続されている。通信部２１、操作部２３、表示部２５、記憶部２７、移動体４４、及びＨＭＤ５０の各々は、ＶＲコンテンツ再生装置１０により制御されており、ＶＲコンテンツ再生装置１０との間で情報をやり取りする。
【００２２】
なお、ＨＭＤ５０は、映像表示装置４６と音声出力装置４８の他に、ユーザ１２の頭部の動きを検出する頭動作検出装置４９を備えている。頭動作検出装置４９は、３軸又は６軸の加速度センサなどで構成されている。また、移動体４４及びＨＭＤ５０の各々が、コンピュータを内蔵する通信可能な電子機器である場合は、通信部２１を介して、移動体４４及びＨＭＤ５０の各々と情報をやり取りしてもよい。
【００２３】
また、移動体４４をＭＰとして使用する場合の、移動体４４の駆動制御系について説明する。図４は移動体４４の駆動制御系の一例を示すブロック図である。ここでは、移動体４４が「車両」である場合について説明する。図４に示すように、移動体４４は、操作部２６、車速計２８等の計測部、駆動部３０、駆動対象３２、及びタイヤ４２を備えている。
【００２４】
操作部２６としては、ペダル２６Ａ、２６Ｄ、レバー２６Ｂ、ハンドル２６Ｃ、リモコン２６Ｅが例示されている。駆動部３０としては、Ｄ/Ａコンバータ３０Ａ、インターフェイス（Ｉ/Ｏ）３０Ｂ、３０Ｅ、モータ３０Ｃ、３０Ｄが例示されている。駆動対象３２としては、アクセル３２Ａ、シフト（シフトレバー）３２Ｂ、ステアリング３２Ｃ、ブレーキ３２Ｄ、エアサスペンション３２Ｅが例示されている。
【００２５】
移動体４４がＶＲコンテンツ再生装置１０に接続されている場合には、実線で図示するように、ＶＲコンテンツ再生装置１０は、操作部２６の操作を模擬して駆動パターンを生成し、駆動パターンに基づいて移動体４４を駆動制御するための制御情報を生成する。そして、ＶＲコンテンツ再生装置１０は、得られた制御情報を、移動体４４に出力する。移動体４４では、入力された制御情報に応じて、駆動部３０を介して駆動対象３２が駆動制御される。即ち、移動体４４はＭＰとして利用される。
【００２６】
例えば、ユーザ１２に衝突による衝撃を体感させたい場合には、「シフトをＤに切り替えて、アクセルをオンにした後に、アクセルをオフにする」など、操作部２６の操作を模擬して駆動パターンを生成し、生成された駆動パターンに応じてシフトやアクセルを駆動制御する制御情報を移動体４４に出力する。なお、駆動パターンは、予め用意しておいてもよいし、動的に生成してもよい。ここで、動的とは、シナリオに沿って進まない、インタラクティブなＶＲコンテンツに応じてという意味である。
【００２７】
図４では移動体４４の一部として「エアサスペンション３２Ｅ」を例示するが、サスペンション自体を駆動する（振動させる）ことはできない。エアサスペンションは、コイルバネを空気バネに置き換えたもので、サスペンションの固さ（バネの強さ）を調整することができる。移動体４４は通常のサスペンションを備えていてもよいが、エアサスペンションを備える場合には、後述する弾性体との衝突感覚の表現が多様化する。
【００２８】
また、移動体４４が暴走しないように安全装置を設けることが好ましい。例えば、ＶＲコンテンツ再生装置１０が故障した場合には、移動体４４とＶＲコンテンツ再生装置１０との接続を遮断するようにしてもよい。
【００２９】
なお、移動体４４は通常の移動体（例えば、車両）として利用される場合は、移動体４４が移動体制御用コンピュータ（図示せず）と接続される。この場合には、点線で図示するように、操作部２６をインターフェイスとして駆動対象３２を駆動制御する。例えば、ブレーキペダルを踏めばブレーキが作動するというように、操作部２６を操作することにより制御情報が生成される。移動体制御用コンピュータは、生成された制御情報に応じて駆動対象３２を駆動制御する。駆動対象３２は、駆動部３０を介して駆動制御される。
【００３０】
（弾性体との衝突の模擬）
次に、弾性体との衝突について説明する。
図５（Ａ）及び（Ｂ）は物体同士の衝突の一例を説明する図である。物体Ａが物体Ｂに衝突する場合について考える。物体Ａ及び物体Ｂは、バーチャル空間に存在する物体である。物体Ａは、移動体４４または移動体４４に搭乗しているユーザ１２のアバターを表す物体である。以下では、「ユーザ１２を表す物体Ａ」と称する場合がある。物体Ａは、弾性が低い（固い）物体である。ここで「弾性」とは、外力によって変形した物体が、その外力が除かれたときに元の形に戻ろうとする性質である。また、「弾性体」は、弾性を備えた物体である。
【００３１】
図５（Ａ）に示す例では、物体Ｂは弾性の高い（柔らかい）物体である。物体Ｂの弾性が高い場合は、物体Ａが物体Ｂにぶつかると、物体Ａが物体Ｂに少しめり込んだ後、物体Ｂにより反対方向にボヨンと押し返される。即ち、バーチャル空間において物体Ｂは弾性が高い弾性体と設定されている。
【００３２】
一方、図５（Ｂ）に示す例では、物体Ｂは弾性の低い（固い）壁である。物体Ｂの弾性が低い場合は、物体Ａが物体Ｂにぶつかると、ガンと即座に押し止められる。即ち、バーチャル空間において物体Ｂは弾性が低い非弾性体と設定されている。なお、物体Ａの弾性が、物体Ｂの弾性に比べて低い場合は、物体Ａが振動する。
【００３３】
本実施の形態では、バーチャル空間での衝突イベントに応じて衝突感覚を提示する際に、衝突に関与する物体の弾性を模擬するように、移動体４４のサスペンションを振動させる。サスペンションの振動により、移動体４４及びユーザ１２が揺動されて、弾性体との衝突感覚がユーザ１２に提示される。
【００３４】
次に、サスペンションを振動（伸縮）させる理由について説明する。
図６（Ａ）は弾性を表す模式図である。図６（Ａ）に示すように、「弾性」または「弾性体」は、並列に接続されたバネＢとダンパＤとで表現される。図６（Ｂ）は弾性体との衝突の一例を表す模式図である。図６（Ｂ）に示すように、物体Ａが、弾性体である物体Ｂに衝突する際の、物体Ａ及び物体Ｂ各々のバーチャル空間での変位量は計算で求められる。ここでは、ユーザ１２を表す物体Ａの変位を表す。
【００３５】
図６（Ｃ）は移動体の構造の一例を表す模式図である。図６（Ｃ）に示すように、移動体４４に搭載されるサスペンション６０、６２は、バネとダンパで構成される弾性体である。したがって、バーチャル空間で衝突に関与する物体の弾性を模擬するように、サスペンション６０、６２を振動させると、移動体４４に搭乗しているユーザ１２が、バーチャル空間の物体と同様に揺動されて、弾性体との衝突感覚をユーザに提示することができる。
【００３６】
サスペンションは駆動対象ではなく、サスペンションを振動させる等の駆動制御を行うことはできない。しかしながら、例えば、前側サスペンション６０は、移動体４４を前進させた直後に後進させるなど、移動体４４を駆動して荷重移動させることで振動させることができる。サスペンションにかかる荷重の大小によって、サスペンションの振動の振幅と周波数が変化する。なお、移動体４４の駆動方法については後述する。
【００３７】
次に、弾性を模擬する手法について説明する。
図７（Ａ）及び図７（Ｂ）は、バーチャル空間で衝突に関与する物体の衝突時の変位の時間変化の一例を表すグラフである。以下、物体の変位の時間変化（揺動）を「揺動パターン」という。図７（Ａ）及び図７（Ｂ）は、物体Ａが物体Ｂに衝突する際の、ユーザ１２を表す物体Ａの変位の時間変化を表す。
【００３８】
物体Ａが非弾性体であり、物体Ｂが弾性体である（柔らかい）場合は、図７（Ａ）に示すように、衝突時の物体Ａの変位は大きく、時間をかけてゆっくりと変化する。これに対し、物体Ａは非弾性体であり、物体Ｂも非弾性体である（固い）場合は、図７（Ｂ）に示すように、衝突時の物体Ａの変位は小さく、短時間で変化する。
【００３９】
図８（Ａ）及び図８（Ｂ）は、サスペンションが振動する様子を示す模式図である。サスペンションの振動の振幅が大きいほど、復元に時間がかかり、サスペンションの振動の振幅が小さいほど、素早く復元する。サスペンションの振幅が大きい場合には、図８（Ａ）に示すように、移動体４４は、上下方向に大きく揺動され、時間をかけてゆっくりと揺動される。ここで、サスペンションの振動の「振幅」とは、いわゆる「サスペンションの沈み込み量」であり、移動体４４への衝撃を吸収してサスペンションのバネが縮んだときの「伸縮量」に相当する。
【００４０】
一方、サスペンションの振動の振幅が小さい場合には、図８（Ｂ）に示すように、移動体４４は、上下方向に小さく揺動され、短時間で揺動が収まる。なお、図８（Ａ）及び図８（Ｂ）は、移動体４４が上下方向に動くことを模式的に表すものであり、前輪タイヤが上下方向に動くものではない。
【００４１】
したがって、物体Ａが非弾性体であり、物体Ｂが弾性体である（柔らかい）場合は、図７（Ａ）に示すように衝突時の物体Ａの変位が大きくなるので、サスペンションの振動の振幅を大きくして、図８（Ａ）に示すように、移動体４４をゆっくりと大きく揺動する。また、物体Ａが非弾性体であり、物体Ｂも非弾性体である（固い）場合は、図７（Ｂ）に示すように衝突時の物体Ａの変位は小さいので、サスペンションの振動の振幅を小さくして、図８（Ｂ）に示すように、移動体４４を短時間で小さく揺動する。
【００４２】
この通り、物体Ａが非弾性体であり、物体Ｂが弾性体の場合はサスペンションの振動の振幅を大きく、物体Ａが非弾性体であり、物体Ｂも非弾性体の場合にはサスペンションの振動の振幅を小さくする等、バーチャル空間で衝突に関与する物体の「弾性」に応じてサスペンションの振動の振幅を変えることで、衝突に関与する物体の弾性が模擬されて、移動体４４に搭乗しているユーザに弾性体との衝突感覚が提示される。
【００４３】
（移動体の駆動手順）
次に、移動体の駆動手順について説明する。
サスペンションは、移動体４４を駆動することで振動させることができる。例えば、走行中にブレーキをかけると荷重が前方に寄り、移動体４４が停止すると、荷重が後方に寄る。本実施の形態では、この荷重移動によりサスペンションを振動させる。
【００４４】
図９（Ａ）から図９（Ｄ）は、サスペンションを振動させるための移動体の駆動手順の一例を説明する模式図である。最初は、図９（Ａ）に示すように、移動体４４は停止している。次に、図９（Ｂ）に示すように、シフトチェンジ後のアクセルオンにより、停止している移動体４４をＦ１の力で駆動する。移動体４４は加速度ａ１で一方向に移動する。例えば、シフトをドライブ（Ｄ）に切り替え、アクセル電圧を正の方向に増加させて、移動体４４を前方に移動させる（前進）。
【００４５】
次に、図９（Ｃ）に示すように、シフトチェンジ後のアクセルオン、ブレーキなどにより、移動体４４にＦ１とは逆方向の力Ｆ２をかける。移動体４４は加速度ａ２で逆方向に移動する。例えば、シフトをリバース（Ｒ）に切り替え、アクセル電圧を負の方向に増加させて、移動体４４を後方に移動させる（後進）。
【００４６】
また、逆方向の力Ｆ２が掛かると、上記の荷重移動により、移動体４４の前側サスペンション６０のバネが縮む。サスペンションの伸縮量、即ち、サスペンションの振動の振幅は、力Ｆ１と力Ｆ２の大きさと、各力を掛ける時間とにより調整される。最後は、図９（Ｄ）に示すように、バネの復元力により、前側サスペンション６０が伸びる。なお、ダンパは、サスペンションの振動の減衰を遅らせる役割を担う。
【００４７】
なお、上記の駆動手順は一例であり、例えば、エアサスペンションで移動体の高さを変える、路面に設置された凸部または凹部を通過するように駆動する等、他の駆動手順によっても荷重移動によりサスペンションを振動させることができる。
【００４８】
（衝突イベント検出処理）
次に、「衝突イベント検出処理」について説明する。
図１０は本発明の第１の実施の形態に係る「衝突イベント検出処理」の流れの一例を示すフローチャートである。「衝突イベント検出処理」は、図２の衝突イベント検出部１８の動作を表す。「衝突イベント検出処理」のプログラムは、ＲＯＭ１０Ｂから読み出され、ＣＰＵ１０Ａにより実行される。「衝突イベント検出処理」のプログラムの実行は、ＶＲコンテンツの再生開始と共に開始される。  
【００４９】
まず、ステップ１００で、次に再生する映像情報を先に取得する（先取り）。映像情報は、予め定めた時間分ずつ取得される（例えば、図１２のサンプル期間Δｔ）。次に、ステップ１０２で、当たり判定処理を実行する。当たり判定処理は、注目する物体から所定距離内の監視範囲内に他の物体が存在する場合に「衝突あり」と判定し、監視範囲内に他の物体が存在しない場合に「衝突なし」と判定する処理である。次に、ステップ１０４で、判定結果に基づいて衝突があるか否かを判断する。衝突ありの場合は、ステップ１０６に進み、ステップ１０６で衝突イベントを発行する。衝突なしの場合は、ステップ１０６を飛ばしてステップ１０８に進む。
【００５０】
次に、ステップ１０８で、移動体４４による感覚提示を、ＨＭＤ５０による感覚提示と同期して行えるか否かを判断する。移動体４４の駆動に時間がかかるので、バーチャル空間での「衝突」を先取りできないと、移動体４４による感覚提示を同期して行えない。例えば、バーチャル空間で衝突に関与する物体の速度が、所定速度より速い場合は、現在の監視範囲では当たり判定処理で「衝突」を先取りできないので、感覚提示を同期して行えないと判断する。同期して行えない場合は、ステップ１１０に進み、ステップ１１０で当たり判定の「範囲」を調整する。同期して行える場合は、ステップ１１０を飛ばしてステップ１１２に進む。
【００５１】
次に、ステップ１１２で、所定時間が経過したか否かを判断する。所定時間が経過した場合は、ステップ１１４に進む。所定時間が経過していない場合は、ステップ１１２の判断を繰り返し行う。次に、ステップ１１４で、次の映像情報があるか否か判断する。次の映像情報が無い場合は、ルーチンを終了する。次の映像情報がある場合は、ステップ１００に戻る。
【００５２】
なお、ＶＲコンテンツがシナリオに沿って進む場合は、シナリオから衝突イベントを検出してもよい。図１１は「衝突イベント検出処理」の流れの他の一例を示すフローチャートである。図１２はＶＲコンテンツのシナリオの一例を示すタイムチャートである。
【００５３】
まず、図１１のステップ２００で、次に再生する映像のシナリオ情報を取得する。シナリオ情報は、予め定めた時間分ずつ取得される。次に、ステップ２０２で、シナリオ判定処理を実行する。シナリオ判定処理は、シナリオから衝突イベントを検出する処理である。図１２に示すように、シナリオには、衝突の種類が発生時間に応じて予め登録されている。図１２には、衝突の種類として「衝突Ａ」、「衝突Ｂ」、「衝突Ｃ」が例示されている。図示した例では、サンプル期間Δｔ分のシナリオ情報が取得されている。したがって、サンプル期間Δｔ内にある「衝突Ｂ」に対応する衝突イベントと、「衝突Ｃ」に対応する衝突イベントとが検出される。
【００５４】
次に、ステップ２０４で、衝突があるか否かを判断する。衝突ありの場合は、ステップ２０６に進み、ステップ２０６で衝突イベントを発行する。検出された「衝突Ｂ」と「衝突Ｃ」とについて、衝突イベントが発行される。衝突なしの場合は、ステップ２０６を飛ばしてステップ２０８に進む。
【００５５】
次に、ステップ２０８で、所定時間が経過したか否かを判断する。所定時間が経過した場合は、ステップ２１０に進む。所定時間が経過していない場合は、ステップ２０８の判断を繰り返し行う。次に、ステップ２１０で、次のシナリオ情報があるか否か判断する。次のシナリオ情報が無い場合は、ルーチンを終了する。次のシナリオ情報がある場合は、ステップ２００に戻る。
【００５６】
（衝撃生成処理/駆動パターン生成処理）
次に、「衝撃生成処理」について説明する。
図１３は「衝撃生成処理」の流れの一例を示すフローチャートである。「衝撃生成処理」は、図２の衝撃生成部２０の動作を表す。「衝撃生成処理」のプログラムは、ＲＯＭ１０Ｂから読み出され、ＣＰＵ１０Ａにより実行される。「衝撃生成処理」のプログラムの実行は、ＶＲコンテンツの再生開始と共に開始される。  
【００５７】
まず、ステップ３００で、衝突イベントの発行を検知したか否かを判断する。検知した場合は、ステップ３０２に進み、ステップ３０２で衝突情報を取得する。検知していない場合は、ステップ３００の判断を繰り返し行う。
【００５８】
次に、ステップ３０４で、移動体４４を駆動する駆動パターンを取得する「駆動パターンの取得処理」を実行する。続けて、ステップ３０６で、衝突が反映された映像情報及び音声情報を生成する。なお、映像情報及び音声情報の生成は、「駆動パターンの取得処理」と並列に行ってもよい。次に、ステップ３０８で、更新時間が到来したか否かを判定する。更新時間が到来した場合は、ステップ３１０に進む。更新時間が到来していない場合は、ステップ３０８の判断を繰り返し行う。
【００５９】
次に、ステップ３１０で、更新時間に応じた制御情報を移動体４４に出力する。また、更新時間に応じた映像情報及び音声情報をＨＭＤ５０に出力する。制御情報と映像情報及び音声情報とは、同期して出力される。これにより、制御情報と、映像情報及び音声情報とが同時に更新される。例えば、映像や音声は０．０１秒毎等の短時間で切り替わり、映像や音声の切り替えに同期して制御情報が更新される。次に、ステップ３１２で、駆動パターンによる駆動制御が終了したか否かを判断する。終了した場合は、ルーチンを終了する。終了していない場合は、ステップ３００に戻る。
【００６０】
なお、「駆動パターン」とは、駆動対象を駆動制御する駆動制御値の予め定めた期間に亘る経時変化を表すパターンである。駆動パターンは、駆動対象毎に求められる。例えば、シフトとアクセルとを駆動対象とする場合は、シフトを駆動する駆動制御値の波形パターンと、アクセルを駆動する駆動制御値の波形パターンとが取得される。また、「制御情報」とは、駆動パターンにより与えられる更新時間に応じた駆動制御値のことである。予め定めた期間分の制御情報が出力されると、駆動パターンによる駆動制御が終了する。
【００６１】
ここで「駆動パターン取得処理」について説明する。
図１４は本発明の第１の実施の形態に係る「駆動パターン取得処理」の流れの一例を示すフローチャートである。第１の実施の形態では、衝突情報は、バーチャル空間での衝突に関与する物体の物理量である。これらは、衝突に関与する物体の「弾性」を表現するのにも使用される。具体的には、物理量として、物体の重さ、物体の固さ、物体の速度等を求める。
【００６２】
先ず、ステップ４００で、衝突に関与する物体の物理量を取得する。次に、ステップ４０２で、取得された物理量を用いて、ユーザ１２を表す物体Ａの、バーチャル空間での衝突時の変位の時間変化（揺動パターン）を動的に計算する。ここで、動的とは、シナリオに沿って進まない、インタラクティブなＶＲコンテンツに応じてという意味である。次に、ステップ４０４で、揺動パターンから移動体４４のサスペンションを振動させる駆動パターンを取得して、ルーチンを終了する。
【００６３】
次に、揺動パターンと駆動パターンの相関関係について説明する。
図１５（Ａ）及び（Ｂ）は揺動パターンと駆動パターンの相関関係を示す模式図である。図１５（Ａ）に示すパターンの前提となる衝突状況は、図５（Ａ）に示すように、ユーザ１２を表す物体Ａ（非弾性体）が、物体Ｂ（弾性体）に衝突する場合である。揺動パターンは、図７（Ａ）に示す例と同じである。図１５（Ｂ）に示すパターンの前提となる衝突状況は、図５（Ｂ）に示すように、ユーザ１２を表す物体Ａ（非弾性体）が、物体Ｂ（非弾性体）に衝突する場合である。揺動パターンは、図７（Ｂ）に示す例と同じである。
【００６４】
また、図９（Ａ）から図９（Ｄ）に示す駆動手順で移動体４４を駆動する。図１５（Ａ）及び（Ｂ）に示す「駆動パターン」は、アクセル電圧の波形パターンで表されている。アクセル電圧は、アクセルの駆動制御値であり、いわゆる、アクセル踏み量と称される値である。波形パターンに従って、アクセル電圧を経時変化させる。なお、シフトの駆動制御値の波形パターンについては、図示を省略する。
【００６５】
まず、シフトをドライブ（Ｄ）に切り替え、アクセル電圧を正の方向にＶ１まで増加させ、時間ｔ１の間はアクセル電圧をＶ１に保持する。移動体４４は加速されて、前方に移動する（前進）。次に、シフトをリバース（Ｒ）に切り替え、アクセル電圧を負の方向にＶ２まで増加させ、時間ｔ２の間はアクセル電圧をＶ２に保持する。移動体４４は逆方向に加速されて、後方に移動する（後進）。時間ｔ２の経過後、アクセル電圧をゼロにすると、移動体４４が減速して停止する。
【００６６】
揺動パターンと駆動パターンの相関関係の傾向を簡単に説明する。
揺動パターンでの変位が大きい場合には、アクセル電圧Ｖ１、アクセル電圧Ｖ２の値は大きくなる。また、時間ｔ１、時間ｔ２も長くなる。また、アクセル電圧Ｖ１と時間ｔ１とで決まる領域Ａの面積（Ｖ１ｔ１）と、アクセル電圧Ｖ２と時間ｔ２とで決まる領域Ｂの面積（Ｖ２ｔ２）との差が小さくなる。一方、揺動パターンで変位が小さい場合には、アクセル電圧Ｖ１、アクセル電圧Ｖ２の値は小さくなる。また、時間ｔ１、時間ｔ２は短くなる。また、領域Ａの面積（Ｖ１ｔ１）と領域Ｂの面積（Ｖ２ｔ２）との差が大きくなる。
【００６７】
図９（Ａ）から図９（Ｄ）を参照して説明した通り、移動体４４には、Ｆ１の力がかけられた後、Ｆ１とは逆方向の力Ｆ２がかけられる。サスペンションの振動の振幅は、力Ｆ１と力Ｆ２の大きさと、各力をかける時間とにより調整される。サスペンションの振動の振幅を大きくするには、大きな衝撃を与えて移動体４４を大きく揺動させるように力Ｆ１と力Ｆ２とをかける。領域Ａの面積（Ｖ１ｔ１）は、力Ｆ１の大きさと力Ｆ１をかける時間とを表す。領域Ｂの面積（Ｖ２ｔ２）は、力Ｆ２の大きさと力Ｆ２をかける時間とを表す。移動体４４を大きく揺動させるには、領域Ａの面積（Ｖ１ｔ１）を大きくすると共に、領域Ａの面積（Ｖ１ｔ１）と釣り合うように、領域Ｂの面積（Ｖ２ｔ２）を大きくする。
【００６８】
揺動パターンは、バーチャル空間で物体Ｂに衝突する物体Ａの変位Ｄの時間変化を表す。図１５（Ａ）及び（Ｂ）に示す揺動パターンは、変位を開始する時点、即ち、衝突する時点を、時間＝０として表示する。衝突イベントが検知されてから衝突までの時間をＴ０とする。バーチャル空間における衝突による物体Ａの変位Ｄの最大値をＤpeakとする。衝突してから物体Ａの変位Ｄが最大になるまでの時間をＴ１とする。なお、物体Ａの変位Ｄが最大になる点は、変位Ｄの時間変化を表す曲線の第１の変極点とする。変極点とは、ｄＤ/ｄｔ＝０となる点である。
【００６９】
次に、揺動パターンからアクセル電圧の波形パターンを取得する計算方法の一例について説明する。図１５（Ａ）及び（Ｂ）に示す例では、アクセル電圧の波形パターンは、アクセル電圧Ｖ１、アクセル電圧Ｖ２、時間ｔ１、時間ｔ２の各値で決まる。本実施の形態では、時間ｔ１は、衝突イベントが検知されてから衝突までの時間Ｔ０と等しいと定義する。また、時間ｔ２は、衝突してから物体Ａの変位Ｄが最大になるまでの時間Ｔ１衝突までの時間Ｔ０と等しいと定義する。したがって、アクセル電圧Ｖ１及びアクセル電圧Ｖ２の各値を揺動パターンから計算で求める。
【００７０】
ここで、固さ調整ゲインＳというパラメータを設定する。固さ調整ゲインＳは、下記式（１）で表されるパラメータである。固さ調整ゲインＳは、衝突する物体同士の弾性の差分が大きいほど大きい値になる。固さ調整ゲインＳは、０≦Ｓ≦１の範囲の数値であり、衝突する物体同士の弾性の差分が大きいほど「１」に近づく。
【００７１】
【数１】
2018202018.tif 000003
【００７２】
上記式（１）において、「Ｄmax」は、予め定められたサスペンションの最大変位（即ち、振幅の上限値）を表す。また、「Ｇ」は、予め定められたサスペンションの調整ゲインを表す。サスペンションの調整ゲインＧは、０≦Ｇ≦１の範囲の数値である。バーチャル空間に存在する物体同士の弾性の差分が最も大きい物体同士の衝突時に、（Ｇ×Ｄpeak）＝Ｄmaxという条件を満たすように設定する。
【００７３】
アクセル電圧Ｖ１は、下記式（２）を用いて、サスペンションの調整ゲインＧ、揺動パターンにおける物体Ａの変位Ｄの最大値Ｄpeak、時間ｔ１（＝衝突までの時間Ｔ０）から求められる。
【００７４】
【数２】
2018202018.tif 000004
【００７５】
また、領域Ｂの面積（Ｖ２ｔ２）は、下記式（３）で表されるように、固さ調整ゲインＳを用いると、領域Ａの面積（Ｖ１ｔ１）のＳ分の１になる。固さ調整ゲインＳ＝１のとき、領域Ａの面積（Ｖ１ｔ１）と領域Ｂの面積（Ｖ２ｔ２）とが等しくなる。
【００７６】
【数３】
2018202018.tif 000005
【００７７】
上記式（３）を変形すると、アクセル電圧Ｖ２は、下記式（４）で表される。なお、固さ調整ゲインＳ＝０のときは、衝突による物体Ａの変位Ｄの最大値Ｄpeak＝０であり、アクセル電圧Ｖ２＝０でよい。
【００７８】
【数４】
2018202018.tif 000006
【００７９】
上記の計算方法は一例である。揺動パターンに応じて上記の揺動パターンと駆動パターンの相関関係の傾向を再現できれば、他の計算方法でアクセル電圧の波形パターンを取得してもよい。また、揺動パターンを求めることなく、物体の重さ、物体の固さ、物体の速度等の衝突情報から、直接、アクセル電圧の波形パターンを取得してもよい。
【００８０】
＜第２の実施の形態＞
第２の実施の形態は、衝突情報と「駆動パターン取得処理」以外は、第１の実施の形態と同様であるため説明を省略する。第２の実施の形態では、衝突情報は、衝突する物体の物体名と相対速度である。
【００８１】
図１６は本発明の第２の実施の形態に係る「駆動パターン取得処理」の流れの一例を示すフローチャートである。図１７は衝突の種類に応じて揺動パターンと駆動パターンとを予め関連付けるテーブルの一例を示す図表である。
【００８２】
第２の実施の形態に係る「駆動パターン取得処理」では、図１６に示すように、まず、ステップ４００で、衝突する物体の物体名と相対速度とを取得する。次に、ステップ４０２で、衝突する物体の物体名と相対速度とに対応する「衝突の種類」を特定する。
【００８３】
バーチャル空間に存在する物体は、物体Ａ、物体Ｂというように、予め登録されている。そこで、「衝突の種類」を、衝突する２つの物体の物体名と、２つの物体の衝突時の相対速度とに応じて予めテーブル等で記憶しておいて、テーブル等に基づいて、衝突する物体の物体名と相対速度とから「衝突の種類」を特定する。なお、「衝突の種類」は、衝突する物体同士の弾性の差分と相対速度とに基づいて決定される。
【００８４】
例えば、非弾性体である物体Ａと弾性体である物体Ｂとが相対速度Ｘで衝突した場合は「衝突Ａ（変位は大きい）」、非弾性体である物体Ａと弾性体である物体Ｂとが相対速度Ｙ（＜Ｘ）で衝突した場合は「衝突Ｂ（変位は中くらい）」、非弾性体である物体Ａと弾性体である物体Ｂとが相対速度Ｚ（＜Ｙ）で衝突した場合は「衝突Ｃ（変位は小さい）」と特定する。また、非弾性体である物体Ａと非弾性体である物体Ｂとが衝突した場合には、相対速度にかかわらず「衝突Ｃ（変位は小さい）」と特定する。
【００８５】
次に、ステップ４０４で、特定された「衝突の種類」に応じた「駆動パターン」を取得する。図１７に示すテーブルでは、衝突の種類は、衝突Ａ、衝突Ｂ、衝突Ｃと複数種類がある。衝突Ａ、衝突Ｂ、及び衝突Ｃの各々には、「揺動パターン」と「駆動パターン」とが関連付けられている。したがって、衝突Ａならこの駆動パターンというように、ライブラリ方式で「衝突の種類」に応じた「駆動パターン」が取得される。なお、「揺動パターン」を利用しない場合は、図１７に示すテーブルにおいて「揺動パターン」を省略してもよい。
【００８６】
＜第３の実施の形態＞
第３の実施の形態は、ＶＲコンテンツがシナリオに沿って進む場合である。「衝突の種類」、「揺動パターン」及び「駆動パターン」がシナリオに含まれている。第３の実施の形態は、衝突情報と「駆動パターン取得処理」以外は、第１の実施の形態と同様であるため説明を省略する。第３の実施の形態では、衝突情報は、シナリオから特定される衝突の種類である。
【００８７】
図１８は本発明の第３の実施の形態に係る「駆動パターン取得処理」の流れの一例を示すフローチャートである。図１９は衝突の種類、揺動パターン、及び駆動パターンが予め登録されたシナリオの一例を示す図表である。
【００８８】
本実施の形態では、図１９に示すように、衝突の種類、揺動パターン、及び駆動パターンの各々が、ＶＲコンテンツのシナリオに予め登録されている。したがって、第３の実施の形態に係る「駆動パターン取得処理」では、図１８に示すように、ステップ５００で、シナリオから特定された「衝突の種類」に対応する「駆動パターン」をシナリオから取得して、ルーチンを終了する。
【００８９】
＜変形例＞
なお、上記実施の形態で説明した衝突感覚提示システム及びプログラムの構成は一例であり、本発明の主旨を逸脱しない範囲内においてその構成を変更してもよいことは言うまでもない
【００９０】
上記の実施の形態では、駆動パターンとしてアクセル電圧の波形パターンを求めたが、駆動パターンは、駆動対象を駆動制御する駆動制御値の予め定めた期間に亘る経時変化を表すパターンであり、アクセル電圧の波形パターンには限定されない。駆動パターンは、駆動対象毎に求められる。駆動対象が複数ある場合は、駆動情報は複数の駆動パターンの組合せとなる。
【００９１】
複数の駆動制御値の波形パターンを含んでいてもよい。例えば、アクセル電圧の波形パターンとブレーキの駆動制御値（いわゆる、ブレーキ踏み量）の波形パターンとを組み合わせてもよい。また、エアサスペンション駆動制御値の波形パターンを、他の駆動制御値の波形パターンに組み合わせてもよい。
【符号の説明】
【００９２】
１０   コンテンツ再生装置
１１   コンテンツ記憶部
１２   ユーザ
１４   衝突解析部
１６   情報更新部
１８   衝突イベント検出部
２０   衝撃生成部
２１   通信部
２３   操作部
２５   表示部
２６   操作部
２７   記憶部
２８   車速計
３０   駆動部
３２   駆動対象
３２Ａ アクセル
３２Ｂ シフト
３２Ｃ ステアリング
３２Ｄ ブレーキ
３２Ｅ エアサスペンション
４０   感覚提示装置群
４２   タイヤ
４４   移動体
４６   映像表示装置
４８   音声出力装置
６０、６２    サスペンション
Ｂ     バネ
Ｄ     ダンパ
【図１】
2018202018.tif 000007
【図２】
2018202018.tif 000008
【図３】
2018202018.tif 000009
【図４】
2018202018.tif 000010
【図５】
2018202018.tif 000011
【図６】
2018202018.tif 000012
【図７】
2018202018.tif 000013
【図８】
2018202018.tif 000014
【図９】
2018202018.tif 000015
【図１０】
2018202018.tif 000016
【図１１】
2018202018.tif 000017
【図１２】
2018202018.tif 000018
【図１３】
2018202018.tif 000019
【図１４】
2018202018.tif 000020
【図１５】
2018202018.tif 000021
【図１６】
2018202018.tif 000022
【図１７】
2018202018.tif 000023
【図１８】
2018202018.tif 000024
【図１９】
2018202018.tif 000025