(57)【要約】【課題】角速度に基づいて算出される装置の姿勢の誤差を、当該装置の状況に応じてより適切に補正する。【解決手段】ＨＭＤは、姿勢算出部、姿勢補正部、画像生成部及び表示制御部を備える。姿勢算出部は、角速度センサが検出する角速度に基づいてＨＭＤの第１の姿勢を算出する。姿勢補正部は、加速度センサが検出する加速度とＨＭＤの所定時間における回転量とに基づいて、第１の姿勢を補正して、第２の姿勢を算出する。画像生成部は、第２の姿勢に応じた画像を生成する。表示制御部は、画像を表示部に表示させる。【選択図】図５
2019220059.tif 000002
【特許請求の範囲】
【請求項１】
角速度センサと加速度センサを有する表示装置のコンピュータにより実行されるプログラムであって、
前記コンピュータを、
前記角速度センサが検出する角速度に基づいて前記表示装置の第１の姿勢を算出する姿勢算出部と、
前記加速度センサが検出する加速度と前記表示装置の所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出する第１姿勢補正部と、
前記第２の姿勢に応じた画像を生成する画像生成部と、
前記画像を前記表示装置に表示させる表示制御部
として機能させるプログラム。
【請求項２】
前記第１姿勢補正部は、前記角速度センサが検出する角速度に基づいて前記回転量を算出し、前記加速度センサが検出する加速度と当該回転量とに基づいて、前記第１の姿勢を補正して、前記第２の姿勢を算出する、
請求項１に記載のプログラム。
【請求項３】
前記コンピュータを、前記角速度センサが検出する角速度に基づいて前記回転量を算出し、前記加速度センサが検出する加速度と当該回転量とに基づいて、第１の補正量を決定する補正量決定部としてさらに機能させ、
前記第１の補正量は、前記角速度センサが検出する角速度が増大するにつれて増加し、
前記第１姿勢補正部は、前記第１の補正量を用いて前記第１の姿勢を補正して、前記第２の姿勢を算出する、
請求項２に記載のプログラム。
【請求項４】
前記コンピュータを、
前記加速度センサが検出する加速度に基づいて第２の補正量を算出する補正量算出部と、
前記角速度センサが検出する角速度に基づいて前記回転量を算出し、算出した当該回転量に基づいて前記第１の補正量の上限である第３の補正量を算出する最大補正量算出部
としてさらに機能させ、
前記補正量決定部は、前記第２の補正量が前記第３の補正量以下の場合には、前記第２の補正量を前記第１の補正量として決定し、前記第２の補正量が前記第３の補正量を超える場合には、前記第３の補正量を前記第１の補正量として決定する、請求項３に記載のプログラム。
【請求項５】
前記最大補正量算出部は、前記角速度センサが検出する角速度に基づいて算出した前記回転量に所定値を加算することにより、前記第３の補正量を算出する、請求項４に記載のプログラム。
【請求項６】
前記コンピュータを、アプリケーションを実行するアプリケーション実行部としてさらに機能させ、
前記最大補正量算出部は、前記アプリケーションの種類又は実行状況に応じた係数を、前記角速度センサが検出する角速度に基づいて算出した前記回転量に乗じることにより、前記第３の補正量を算出する、
請求項４又は５に記載のプログラム。
【請求項７】
前記コンピュータを、
前記表示装置の所定時間における回転量を考慮せずに、前記加速度センサが検出する加
速度に基づいて前記第１の姿勢を補正して、第３の姿勢を算出する第２姿勢補正部と、
前記第１姿勢補正部と前記第２姿勢補正部のうち、いずれか一方を選択する選択部
としてさらに機能させ、
前記画像生成部は、前記第１姿勢補正部が選択された場合には、前記第２の姿勢に応じた画像を生成し、前記第２姿勢補正部が選択された場合には、前記第３の姿勢に応じた画像を生成する、請求項１乃至６のいずれか１項に記載のプログラム。
【請求項８】
角速度センサと加速度センサと表示部とを有する情報処理装置であって、
前記表示部は、前記情報処理装置がユーザに使用される際に、当該ユーザの眼前に位置するように支持され、
前記角速度センサが検出する角速度に基づいて前記情報処理装置の第１の姿勢を算出する姿勢算出部と、
前記加速度センサが検出する加速度と前記情報処理装置の所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出する第１姿勢補正部と、
前記第２の姿勢に応じた画像を生成する画像生成部と、
前記画像を前記表示部に表示させる表示制御部と
を有する情報処理装置。
【請求項９】
角速度センサと加速度センサと表示部とを有する情報処理システムであって、
前記角速度センサが検出する角速度に基づいて前記情報処理システムの第１の姿勢を算出する姿勢算出部と、
前記加速度センサが検出する加速度と前記情報処理システムの所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出する第１姿勢補正部と、
前記第２の姿勢に応じた画像を生成する画像生成部と、
前記画像を前記表示部に表示させる表示制御部と
を有する情報処理システム。
【請求項１０】
角速度センサと加速度センサと表示部とを有する情報処理システムにより実行される情報処理方法であって、
前記角速度センサが検出する角速度に基づいて前記情報処理システムの第１の姿勢を算出するステップと、
前記加速度センサが検出する加速度と前記情報処理システムの所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出するステップと、
前記第２の姿勢に応じた画像を生成するステップと、
前記画像を前記表示部に表示させるステップと
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示装置の姿勢を算出する技術に関する。
【背景技術】
【０００２】
従来、角速度センサと加速度センサを用いて装置の姿勢を算出する技術が知られている。例えば、特許文献１には、角速度センサが検出する角速度に基づいて装置の姿勢を算出し、加速度センサが検出する加速度に基づいて当該姿勢の誤差を補正する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−５３３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、このような事情に鑑みてなされたものであり、角速度に基づいて算出される装置の姿勢の誤差を、当該装置の状況に応じてより適切に補正することを目的とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決するため、本発明の一実施形態に係るプログラムは、角速度センサと加速度センサを有する表示装置のコンピュータにより実行されるプログラムであって、前記コンピュータを、前記角速度センサが検出する角速度に基づいて前記表示装置の第１の姿勢を算出する姿勢算出部と、前記加速度センサが検出する加速度と前記表示装置の所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出する第１姿勢補正部と、前記第２の姿勢に応じた画像を生成する画像生成部と、前記画像を前記表示装置に表示させる表示制御部として機能させる。
【０００６】
上記のプログラムにおいて、前記第１姿勢補正部は、前記角速度センサが検出する角速度に基づいて前記回転量を算出し、前記加速度センサが検出する加速度と当該回転量とに基づいて、前記第１の姿勢を補正して、前記第２の姿勢を算出するようにしてもよい。
【０００７】
上記のプログラムは、前記角速度センサが検出する角速度に基づいて前記回転量を算出し、前記加速度センサが検出する加速度と当該回転量とに基づいて、第１の補正量を決定する補正量決定部としてさらに機能させ、前記第１の補正量は、前記角速度センサが検出する角速度が増大するにつれて増加し、前記第１姿勢補正部は、前記第１の補正量を用いて前記第１の姿勢を補正して、前記第２の姿勢を算出するようにしてもよい。
【０００８】
上記のプログラムは、前記コンピュータを、前記加速度センサが検出する加速度に基づいて第２の補正量を算出する補正量算出部と、前記角速度センサが検出する角速度に基づいて前記回転量を算出し、算出した当該回転量に基づいて前記第１の補正量の上限である第３の補正量を算出する最大補正量算出部としてさらに機能させ、前記補正量決定部は、前記第２の補正量が前記第３の補正量以下の場合には、前記第２の補正量を前記第１の補正量として決定し、前記第２の補正量が前記第３の補正量を超える場合には、前記第３の補正量を前記第１の補正量として決定するようにしてもよい。
【０００９】
上記のプログラムにおいて、前記最大補正量算出部は、前記角速度センサが検出する角速度に基づいて算出した前記回転量に所定値を加算することにより、前記第３の補正量を
算出するようにしてもよい。
【００１０】
上記のプログラムは、前記コンピュータを、アプリケーションを実行するアプリケーション実行部としてさらに機能させ、前記最大補正量算出部は、前記アプリケーションの種類又は実行状況に応じた係数を、前記角速度センサが検出する角速度に基づいて算出した前記回転量に乗じることにより、前記第３の補正量を算出するようにしてもよい。
【００１１】
上記のプログラムは、前記コンピュータを、前記表示装置の所定時間における回転量を考慮せずに、前記加速度センサが検出する加速度に基づいて前記第１の姿勢を補正して、第３の姿勢を算出する第２姿勢補正部と、前記第１姿勢補正部と前記第２姿勢補正部のうち、いずれか一方を選択する選択部としてさらに機能させ、前記画像生成部は、前記第１姿勢補正部が選択された場合には、前記第２の姿勢に応じた画像を生成し、前記第２姿勢補正部が選択された場合には、前記第３の姿勢に応じた画像を生成するようにしてもよい。
【００１２】
本発明の一実施形態に係る情報処理装置は、角速度センサと加速度センサと表示部とを有する情報処理装置であって、前記表示部は、前記情報処理装置がユーザに使用される際に、当該ユーザの眼前に位置するように支持され、前記角速度センサが検出する角速度に基づいて前記情報処理装置の第１の姿勢を算出する姿勢算出部と、前記加速度センサが検出する加速度と前記情報処理装置の所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出する第１姿勢補正部と、前記第２の姿勢に応じた画像を生成する画像生成部と、前記画像を前記表示部に表示させる表示制御部とを有する。
【００１３】
本発明の一実施形態に係る情報処理システムは、角速度センサと加速度センサと表示部とを有する情報処理システムであって、前記角速度センサが検出する角速度に基づいて前記情報処理システムの第１の姿勢を算出する姿勢算出部と、前記加速度センサが検出する加速度と前記情報処理システムの所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出する第１姿勢補正部と、前記第２の姿勢に応じた画像を生成する画像生成部と、前記画像を前記表示部に表示させる表示制御部とを有する。
【００１４】
本発明の一実施形態に係る情報処理方法は、角速度センサと加速度センサと表示部とを有する情報処理システムにより実行される情報処理方法であって、前記角速度センサが検出する角速度に基づいて前記情報処理システムの第１の姿勢を算出するステップと、前記加速度センサが検出する加速度と前記情報処理システムの所定時間における回転量とに基づいて、前記第１の姿勢を補正して、第２の姿勢を算出するステップと、前記第２の姿勢に応じた画像を生成するステップと、前記画像を前記表示部に表示させるステップとを含む。
【発明の効果】
【００１５】
本発明によれば、角速度に基づいて算出される装置の姿勢の誤差を、当該装置の状況に応じてより適切に補正することができる。
【図面の簡単な説明】
【００１６】
【図１】ゲームシステム１の内部構成の一例を示す図
【図２】ＨＭＤ２の外観の一例を示す図
【図３】ゲームプレイ中にディスプレイ２０８に表示される画像の一例を示す図
【図４】仮想カメラＶＣの姿勢の制御について説明するための図
【図５】画像表示処理を実行するための機能構成の一例を示すブロック図
【図６】画像表示処理に用いられるデータの一例を示す図
【図７】画像表示処理の一例を示すフローチャート
【図８】姿勢算出処理の一例を示すフローチャート
【発明を実施するための形態】
【００１７】
１．実施形態
本発明の一実施形態に係るゲームシステム１について説明する。図１は、ゲームシステム１の内部構成の一例を示す図である。同図に示すように、ゲームシステム１は、ヘッドマウントディスプレイ（以下、「ＨＭＤ」と呼ぶ。）２と、コントローラ３を備える。
【００１８】
１−１．ＨＭＤ２の構成
図２は、ＨＭＤ２の外観の一例を示す図である。同図に示すＨＭＤ２はゴーグル型のＨＭＤであるが、ヘルメット型や眼鏡型であってもよい。
【００１９】
このＨＭＤ２は、図１に示すように、プロセッサ２０１を備える。プロセッサ２０１は、各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵのみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ機能等の複数の機能を有するＳｏＣ（System-on-a-chip）により構成されてもよい。プロセッサ２０１は、後述する内部記憶媒体や、スロット２０４に装着された外部記憶媒体に記憶されるプログラムを実行することによって、各種の情報処理を実行する。
【００２０】
また、ＨＭＤ２は、内部記憶媒体の一例として、フラッシュメモリ２０２とＤＲＡＭ２０３を備える。フラッシュメモリ２０２は、各種のデータを記憶するために用いられる不揮発性のメモリであり、ＤＲＡＭ２０３は、各種のデータを一時的に記憶するために用いられる揮発性のメモリである。
【００２１】
また、ＨＭＤ２は、スロット２０４とスロットインターフェース２０５を備える。スロット２０４は、メモリカード等の外部記憶媒体を装着可能な形状を有し、スロットインターフェース２０５は、スロット２０４に装着された外部記憶媒体に対するデータの読み書きを、プロセッサ２０１の指示に応じて行う。
【００２２】
また、ＨＭＤ２は、ネットワーク通信部２０６を備える。ネットワーク通信部２０６は、無線ＬＡＮ方式により又は赤外線通信により外部装置と無線通信を行う。
【００２３】
また、ＨＭＤ２は、コントローラ通信部２０７を備える。コントローラ通信部２０７は、Bluetooth（登録商標）等の近距離無線通信技術を用いてコントローラ３と無線通信を行う。
【００２４】
また、ＨＭＤ２は、ディスプレイ２０８を備える。ディスプレイ２０８は、液晶ディスプレイや有機ＥＬディスプレイ等の表示装置である。ディスプレイ２０８は、左目用画像と右目用画像を並べて表示することで、ユーザに３次元画像（ＶＲ画像）を視認させる。このディスプレイ２０８は、ＨＭＤ２がユーザに使用される際に、ユーザの眼前に支持される。ディスプレイ２０８は、ユーザが首を動かしても絶えずユーザの視線方向に位置するように支持される。
【００２５】
また、ＨＭＤ２は、タッチパネル２０９とタッチパネルコントローラ２１０を備える。タッチパネル２０９は、静電容量方式等のタッチパネルであり、ディスプレイ２０８上に配置される。タッチパネルコントローラ２１０は、タッチパネル２０９を制御する回路である。タッチパネルコントローラ２１０は、タッチパネル２０９から出力される信号に基づいて、タッチ入力が行われた位置を示すデータを生成して、プロセッサ２０１に出力する。
【００２６】
また、ＨＭＤ２は、コーデック回路２１１とスピーカ２１２と音声入出力端子２１３を備える。コーデック回路２１１は、スピーカ２１２と音声入出力端子２１３に対する音声データの入出力を制御する回路である。
【００２７】
また、ＨＭＤ２は、角速度センサ２１４と加速度センサ２１５を備える。角速度センサ２１４は、当該センサを基準に設定される３次元直交座標系（ローカル座標系）における３軸周りの角速度を所定の周期で検出する。検出された角速度を示すデータは、ＤＲＡＭ２０３に記憶される。ＤＲＡＭ２０３には、最新の角速度データのみが記憶される。一方、加速度センサ２１５は、当該センサを基準に設定される３次元直交座標系（ローカル座標系）における３軸方向の加速度を所定の周期で検出する。検出された加速度を示すデータは、ＤＲＡＭ２０３に記憶される。ＤＲＡＭ２０３には、最新の加速度データのみが記憶される。
【００２８】
また、ＨＭＤ２は、電力制御部２１６とバッテリ２１７と電源ボタン２１８を備える。電力制御部２１６は、プロセッサ２０１からの指令に基づいて、バッテリ２１７からＨＭＤ２の各部への電力供給を制御する。
【００２９】
１−２．コントローラ３の構成
コントローラ３は、図１に示すように、通信制御部３１を備える。通信制御部３１は、マイクロプロセッサにより構成され、ＨＭＤ２との間の無線通信を制御する。
【００３０】
また、コントローラ３は、フラッシュメモリ等のメモリ３２を備える。通信制御部３１は、メモリ３２に記憶されるファームウェアを実行することにより、各種の処理を実行する。
【００３１】
また、コントローラ３は、各種の操作ボタン３３とアナログスティック３４を備える。操作ボタン３３とアナログスティック３４は、自身に対して行われた操作に関するデータを、通信制御部３１へ出力する。通信制御部３１は、取得した操作データをＨＭＤ２へ送信する。
【００３２】
また、コントローラ３は、電力供給部３５を備える。電力供給部３５は、バッテリ及び電力制御回路を有する。
【００３３】
１−３．ゲームシステム１の動作概要
次に、ゲームシステム１の動作について説明する。
ＨＭＤ２は、ゲームプログラムを記憶する外部記憶媒体がスロット２０４に装着され、プレイヤによりゲームの開始が指示されると、当該ゲームプログラムを実行する。以下の説明では、実行されるゲームとして、プレイヤが３次元の仮想空間内で、一人称視点でキャラクタを操作するアクションゲームを想定する。ただし、アクションゲームは実行可能なゲームのあくまで一例であり、その他の種類のゲームが実行されてもよい。
【００３４】
図３は、ゲームプレイ中にディスプレイ２０８に表示される画像の一例を示す図である。同図に示すように、ゲームが開始されると３次元の仮想空間が定義され、当該仮想空間内に配置された仮想カメラに基づいて生成された画像がディスプレイ２０８に表示される。仮想カメラの撮影方向は、プレイヤが操作するキャラクタの視線方向に対応する。この仮想カメラの位置は、ユーザがコントローラ３を用いて操作可能であり、仮想カメラの姿勢は、ＨＭＤ２の姿勢に応じて変化する。
【００３５】
図４は、仮想カメラの姿勢の制御について説明するための図である。同図に示すように、仮想空間には、当該空間内の所定の位置を原点とするｘｙｚ直交座標系（空間座標系）
が設定される。この空間座標系のｚ軸は、仮想空間の鉛直方向に延びる軸であり、ｘ軸は、ｚ軸に対して垂直な軸であり、ｙ軸は、ｚ軸及びｘ軸に対して垂直な軸である。ｘｙ平面上には地面オブジェクトＬが配置され、この地面オブジェクトＬ上に仮想カメラＶＣが配置される。仮想カメラＶＣには、同図に示すように、当該カメラを原点とするｕｖｗ直交座標系（視点座標系）が設定される。この視点座標系のｕ軸は、仮想カメラＶＣの左右方向に延びる軸であり、ｖ軸は、仮想カメラＶＣの上下方向に延びる軸であり、ｗ軸は、仮想カメラＶＣの前後方向に延びる軸である。仮想カメラＶＣは、ｕ軸周り（ピッチ方向）と、ｖ軸周り（ヨー方向）と、ｗ軸周り（ロール方向）に回転可能である。以下、この仮想カメラＶＣに基づいて生成される画像を表示するための処理について説明する。
【００３６】
１−４．画像表示処理
図５は、画像表示処理を実行するための機能構成の一例を示すブロック図である。図６は、画像表示処理に用いられるデータの一例を示す図である。図５に示す姿勢算出部４１、画像生成部４２及び表示制御部４３は、プロセッサ２０１がゲームプログラムを実行することにより実現される。なお、このゲームプログラムは、インターネット等のネットワークや非一時的な記録媒体を介して頒布可能なプログラムである。
【００３７】
姿勢算出部４１は、角速度センサ２１４が検出する角速度と加速度センサ２１５が検出する加速度に基づいて、ＨＭＤ２の姿勢を算出する。具体的には、角速度センサ２１４が検出する角速度に基づいてＨＭＤ２の第１の姿勢を算出し、当該第１の姿勢を、加速度センサ２１５が検出する加速度に基づいて補正することで、ＨＭＤ２の第２の姿勢を算出する。その際、角速度から最大補正角度を算出し、当該最大補正角度を上限として上記の補正を行う。具体的な処理内容については後述する。なおここで、角速度に基づいて算出される第１の姿勢を補正する理由は、角速度に基づいて算出される姿勢には経時的に誤差が蓄積してしまうからである。この誤差を修正するために、第１の姿勢を加速度に基づいて補正する。
【００３８】
画像生成部４２は、姿勢算出部４１により算出されたＨＭＤ２の姿勢に応じた画像を生成する。ここで、ＨＭＤ２の姿勢に応じた画像とは、ＨＭＤ２と対応する姿勢にある仮想カメラが仮想空間を撮影することにより生成される画像である。
【００３９】
表示制御部４３は、画像生成部４２により生成された画像をディスプレイ２０８に表示させる。
【００４０】
次に、姿勢算出部４１により実行される処理について詳述する。
姿勢算出部４１は、図５に示すように、第１姿勢算出部４１１、重力加速度推定部４１２、補正量算出部４１３、最大補正量算出部４１４、補正量決定部４１５及び姿勢補正部４１６を備える。
【００４１】
第１姿勢算出部４１１は、角速度センサ２１４が検出する角速度に基づいて第１の姿勢を算出する。具体的には、画像表示処理の最新の処理ループで取得した角速度を積分して得た角度を、前回の処理ループで算出した第１の姿勢に加算することで、新しい第１の姿勢を算出する。ここで、最新の処理ループで取得した角速度とは、ＤＲＡＭ２０３に記憶されている角速度データ５１により表される角速度であり、前回の処理ループで算出した第１の姿勢とは、ＤＲＡＭ２０３に記憶されている第１姿勢データ５２により表される第１の姿勢である。新しい第１の姿勢を算出すると、当該第１の姿勢を表すデータで、ＤＲＡＭ２０３に記憶される第１姿勢データ５２を更新する。
【００４２】
重力加速度推定部４１２は、ＨＭＤ２にかかる重力加速度を推定する。具体的には、画像表示処理の最新の処理ループで取得したローカル座標系の加速度をグローバル座標系の
加速度に変換する。ここで、グローバル座標系とは、現実空間の所定の位置を原点とする３次元直交座標系である。そして、求めたグローバル座標系の加速度と前回の処理ループで算出した重力加速度の差分に平滑化変数を乗じて得た値を、同重力加速度に加算する。より具体的には、以下の式（１）及び（２）を使って重力加速度を算出する。
【数１】
2019220059.tif 000003
【００４３】
式（１）において、変数Ａｃｃｇｌｏｂａｌは、グローバル座標系の加速度であり、定数Ｒｇｌｏｂａｌは、ローカル座標系の加速度をグローバル座標系の加速度に変換するための回転行列であり、変数Ａｃｃは、最新の処理ループで取得したローカル座標系の加速度である。ここで、最新の処理ループで取得したローカル座標系の加速度とは、ＤＲＡＭ２０３に記憶されている加速度データ５３により表される加速度である。式（２）において、変数Ｇｔは、最新の処理ループで算出される重力加速度であり、変数Ｇｔ−１は、前回の処理ループで算出された重力加速度であり、変数αは、平滑化変数である。ここで、前回の処理ループで算出された重力加速度とは、ＤＲＡＭ２０３に記憶されている重力加速度データ５４により表される重力加速度である。重力加速度推定部４１２は、重力加速度を算出すると、当該重力加速度を表すデータで、ＤＲＡＭ２０３に記憶される重力加速度データ５４を更新する。
【００４４】
なお、上記の平滑化変数は、ＨＭＤ２の静止度に応じて変化する変数である。この平滑化変数は、加速度センサ２１５が検出する加速度の大きさを算出することで求められる。この加速度とは、ＤＲＡＭ２０３に記憶されている加速度データ５３により表される加速度である。平滑化変数の値は、加速度の大きさが重力加速度の大きさ「１（Ｇ）」に近いほど（言い換えると、ＨＭＤ２が静止状態に近いほど）大きくなる。これは、加速度の大きさが重力加速度の大きさ「１（Ｇ）」に近い方が（言い換えると、ＨＭＤ２が静止状態に近い方が）、加速度の値が、重力方向を示す値として信頼できると考えられるからである。
なお、変形例として、平滑化変数は加速度の瞬時値の大きさではなく、例えば１秒間の区間平均値の大きさを算出することで求めてもよい。また、別の変形例として、平滑化変数は加速度の値に加えて、角速度の値に基づいて算出されてもよい。その際の角速度の値とは、具体的には、角速度の大きさ、分散又は変化量である。
【００４５】
補正量算出部４１３は、重力加速度推定部４１２により推定された重力加速度に基づいて、第１姿勢算出部４１１により算出された第１の姿勢に適用される補正角度を算出する。この補正角度は、ＨＭＤ２が第１の姿勢にあるときの当該装置の下方向のベクトルのグローバル座標系における向きを、重力加速度推定部４１２により推定された重力加速度の向きに近づけるための補正角度である。この補正角度を求めるために補正量算出部４１３は、ＨＭＤ２が第２の姿勢にあるときの当該装置の下方向のベクトルのグローバル座標系における向きと、重力加速度推定部４１２により推定された重力加速度の向きの外積を取り、求めたベクトル周りに回転させる補正角度を算出する。ここで、ＨＭＤ２の第２の姿勢とは、画像表示処理の前回の処理ループにおいて姿勢補正部４１６により算出された第２の姿勢であり、ＤＲＡＭ２０３に記憶される第２姿勢データ５５により表される第２の姿勢である。補正量算出部４１３は、より具体的には、以下の式（３）、（４）及び（５）を使って補正角度を算出する。
【数２】
2019220059.tif 000004
【００４６】
式（３）において、変数Ｇｔは、最新の処理ループで算出される重力加速度であり、変数Ｚは、ＨＭＤ２が第２の姿勢にあるときの当該装置の下方向のベクトルのグローバル座標系における向きである。ここで、最新の処理ループで算出される重力加速度とは、ＤＲＡＭ２０３に記憶される重力加速度データ５４により表される重力加速度である。一方、変数Ｚは、ＤＲＡＭ２０３に記憶される第２姿勢データ５５により表されるＺ軸方向のベクトルである。式（５）において、変数θｖは、補正角度である。補正量算出部４１３は、補正角度を算出すると、補正角度を表すデータで、ＤＲＡＭ２０３に記憶される補正角度データ５６を更新し、かつ、回転ｒｏｔを表すデータで、ＤＲＡＭ２０３に記憶される回転データ５７を更新する。
【００４７】
最大補正量算出部４１４は、角速度センサ２１４が検出する角速度に基づいてＨＭＤ２の所定時間における回転量を算出し、算出した回転量に基づいて、第１姿勢算出部４１１により算出された第１の姿勢に適用される補正角度の上限値である最大補正角度を算出する。この最大補正角度は、角速度に応じて変化し、角速度が大きくなるにつれて大きくなる。これは、角速度が大きいときに（言い換えると、ＨＭＤ２が大きく動くときに）第１の姿勢を大幅に補正しても、角速度の変化に応じてディスプレイ２０８に表示される画像も大きく変化するため、ユーザが違和感を覚えることはないが、角速度が小さいときに（言い換えると、ＨＭＤ２が静止状態に近いときに）第１の姿勢を大幅に補正してしまうと、ユーザが違和感を覚えてしまうからである。特に、ＨＭＤのように、ユーザの目とディスプレイの距離が近い装置を利用する場合には、この違和感が顕著になる。最大補正量算出部４１４は、具体的には、以下の式（６）を使って補正角度を算出する。
【数３】
2019220059.tif 000005
【００４８】
式（６）において、変数θｖｍａｘは、最大補正角度であり、定数ｋ０は、最小補正値であり、定数ｋ１は、補正係数であり、変数Ωｔは、画像表示処理の最新の処理ループで取得したローカル座標系の角速度であり、変数ｄｔは、角速度検出のサンプリング周期であり、定数ｓｔｒｅｎｇｔｈｖは、補正係数である。ここで、定数ｋ０は、ＨＭＤ２が静止状態であっても蓄積してゆく第１の姿勢の誤差を補正するための最低限の補正値であり、任意に設定される。定数ｋ１及びｓｔｒｅｎｇｔｈｖは、アプリケーションの開発者により、アプリケーションの種類やアプリケーションの実行状況（例えば、実行中のゲームの場面）に応じて任意に設定される補正係数である。変数Ωｔは、具体的には、ＤＲＡＭ２０３に記憶されている角速度データ５１により表される角速度である。最大補正量算出部４１４は、最大補正角度を算出すると、最大補正角度を表すデータで、ＤＲＡＭ２０３に記憶される最大補正角度データ５８を更新する。
【００４９】
補正量決定部４１５は、補正量算出部４１３により算出された補正角度と、最大補正量算出部４１４により算出された最大補正角度を比較することで、第１姿勢算出部４１１に
より算出された第１の姿勢に適用される補正角度を決定する。具体的には、前者が後者以下の場合には、前者を補正角度として決定し、前者が後者より大きい場合には、後者を補正角度として決定する。ここで、補正量算出部４１３により算出された補正角度とは、ＤＲＡＭ２０３に記憶されている補正角度データ５６により表される補正角度であり、最大補正量算出部４１４により算出された最大補正角度とは、ＤＲＡＭ２０３に記憶されている最大補正角度データ５８により表される最大補正角度である。
【００５０】
姿勢補正部４１６は、第１姿勢算出部４１１により算出された第１の姿勢を、補正量決定部４１５により決定された補正角度に基づいて補正して、第２の姿勢を算出する。具体的には、第１姿勢算出部４１１により算出された第１の姿勢を、補正量算出部４１３により算出されたベクトル周りに、補正量決定部４１５により決定された補正角度だけ回転させることで、第２の姿勢を算出する。ここで、第１姿勢算出部４１１により算出された第１の姿勢とは、ＤＲＡＭ２０３に記憶されている第１姿勢データ５２により表される第１の姿勢であり、補正量算出部４１３により算出されたベクトルとは、ＤＲＡＭ２０３に記憶されている回転データ５７により表されるベクトルである。第２の姿勢は、例えば、ロドリゲスの回転公式を使って算出される。姿勢補正部４１６は、第２の姿勢を算出すると、当該第２の姿勢を表すデータで、ＤＲＡＭ２０３に記憶される第２姿勢データ５５を更新する。
【００５１】
次に、画像表示処理の手順について説明する。図７は、画像表示処理の一例を示すフローチャートである。同図に示す画像表示処理は、ゲームの実行中において所定の周期で繰り返し実行される。
【００５２】
この画像表示処理のステップＳ１において、姿勢算出部４１は、角速度センサ２１４が検出する角速度と加速度センサ２１５が検出する加速度に基づいて、ＨＭＤ２の姿勢を算出する。具体的には、角速度センサ２１４が検出する角速度に基づいてＨＭＤ２の第１の姿勢を算出し、当該第１の姿勢を、加速度センサ２１５が検出する加速度に基づいて補正することで、ＨＭＤ２の第２の姿勢を算出する。その際、角速度から最大補正角度を算出し、当該最大補正角度を上限として上記の補正を行う。以下、具体的な処理内容について、図８を参照して説明する。
【００５３】
図８は、姿勢算出処理の一例を示すフローチャートである。この姿勢算出処理のステップＳ１１において、第１姿勢算出部４１１は、角速度センサ２１４が検出する角速度に基づいて第１の姿勢を算出する。具体的には、ＤＲＡＭ２０３に記憶されている角速度データ５１により表される角速度を積分して得た角度を、同じくＤＲＡＭ２０３に記憶されている第１姿勢データ５２により表される第１の姿勢に加算することで、新しい第１の姿勢を算出する。新しい第１の姿勢を算出すると、当該第１の姿勢を表すデータで、ＤＲＡＭ２０３に記憶される第１姿勢データ５２を更新する。
【００５４】
次に、ステップＳ１２において、重力加速度推定部４１２は、ＨＭＤ２にかかる重力加速度を推定する。具体的には、ＤＲＡＭ２０３に記憶されている加速度データ５３により表されるローカル座標系の加速度をグローバル座標系の加速度に変換する。そして、求めたグローバル座標系の加速度と、ＤＲＡＭ２０３に記憶されている重力加速度データ５４により表される重力加速度の差分に平滑化変数を乗じて得た値を、同重力加速度に加算する。より具体的には、上記の式（１）及び（２）を使って重力加速度を算出する。重力加速度を算出すると、当該重力加速度を表すデータで、ＤＲＡＭ２０３に記憶される重力加速度データ５４を更新する。
【００５５】
次に、ステップＳ１３において、補正量算出部４１３は、ステップＳ１２で推定された重力加速度に基づいて、ステップＳ１１で算出された第１の姿勢に適用される補正角度を
算出する。具体的には、ＨＭＤ２が第２の姿勢にあるときの当該装置の下方向のベクトルのグローバル座標系における向きと、重力加速度推定部４１２により推定された重力加速度の向きの外積を取り、求めたベクトル周りに回転させる補正角度を算出する。ここで、ＨＭＤ２の第２の姿勢とは、ＤＲＡＭ２０３に記憶される第２姿勢データ５５により表される第２の姿勢である。補正量算出部４１３は、より具体的には、上記の式（３）、（４）及び（５）を使って補正角度を算出する。補正角度を算出すると、補正角度を表すデータで、ＤＲＡＭ２０３に記憶される補正角度データ５６を更新し、かつ、回転を表すデータで、ＤＲＡＭ２０３に記憶される回転データ５７を更新する。
【００５６】
次に、ステップＳ１４において、最大補正量算出部４１４は、ＤＲＡＭ２０３に記憶されている角速度データ５１により表される角速度に基づいて、ステップＳ１１で算出された第１の姿勢に適用される補正角度の上限値である最大補正角度を算出する。具体的には、上記の式（６）を使って補正角度を算出する。最大補正角度を算出すると、最大補正角度を表すデータで、ＤＲＡＭ２０３に記憶される最大補正角度データ５８を更新する。
【００５７】
次に、ステップＳ１５において、補正量決定部４１５は、ステップＳ１３で算出された補正角度と、ステップＳ１４で算出された最大補正角度を比較することで、ステップＳ１１で算出された第１の姿勢に適用される補正角度を決定する。具体的には、前者が後者以下の場合には、前者を補正角度として決定し、前者が後者より大きい場合には、後者を補正角度として決定する。
【００５８】
次に、ステップＳ１６において、姿勢補正部４１６は、ステップＳ１１で算出された第１の姿勢を、ステップＳ１５で決定された補正角度に基づいて補正して、第２の姿勢を算出する。具体的には、ステップＳ１１で算出された第１の姿勢を、ステップＳ１３で算出されたベクトル周りに、ステップＳ１５で決定された補正角度だけ回転させることで、第２の姿勢を算出する。第２の姿勢は、例えば、ロドリゲスの回転公式を使って算出される。姿勢補正部４１６は、第２の姿勢を算出すると、当該第２の姿勢を表すデータで、ＤＲＡＭ２０３に記憶される第２姿勢データ５５を更新する。
以上が、姿勢算出処理についての説明である。
【００５９】
姿勢算出処理の結果、ＨＭＤ２の姿勢が算出されると、図７に示すステップＳ２において、画像生成部４２は、算出されたＨＭＤ２の姿勢に応じた画像を生成する。ここで、ＨＭＤ２の姿勢に応じた画像とは、ＨＭＤ２と対応する姿勢にある仮想カメラに基づいて生成された画像である。
【００６０】
次に、ステップＳ３において、表示制御部４３は、ステップＳ２で生成された画像をディスプレイ２０８に表示させる。
以上が、画像表示処理についての説明である。
【００６１】
以上説明したＨＭＤ２では、角速度センサ２１４が検出する角速度に基づいてＨＭＤ２の第１の姿勢を算出し、当該第１の姿勢を、加速度センサ２１５が検出する加速度に基づいて補正する。その際、角速度から最大補正角度を算出し、当該最大補正角度を上限として当該補正を行う。この最大補正角度は、角速度が大きくなるにつれて大きくなる。したがって、第１の姿勢に適用される補正角度は、角速度が大きくなるにつれて大きくなる。角速度が小さい場合に（言い換えると、ＨＭＤ２が静止状態に近いときに）第１の姿勢を大幅に補正してしまうと、ユーザが違和感に与えてしまう。例えば、画面がカクカクしたり、ＨＭＤ２が静止状態にもかかわらず画面がロール方向に回転することで目が回ったりする可能性がある。しかし、角速度が大きい場合に（言い換えると、ＨＭＤ２が大きく動くときに）第１の姿勢を大幅に補正するようにすれば、当該補正が、ＨＭＤ２の動きに起因する画像の変化に紛れ、ユーザは違和感を覚えにくくなる。
【００６２】
２．変形例
上記の実施形態は、以下に説明するように変形してもよい。なお、以下に説明する２以上の変形例は互いに組み合わせてもよい。
【００６３】
２−１．変形例１
ＨＭＤ２は、バンド等でユーザの頭部に固定されるタイプではなく、ユーザの手によって眼前に支持されるタイプであってもよい。例えば、段ボール製の箱型の形状を有し、スマートフォンを挿入することで利用可能となるビューア（画像表示装置）であってもよい。
【００６４】
２−２．変形例２
ＨＭＤ２により実行されるＶＲアプリケーションは、ゲームに限られない。例えば、教育や医療の分野のＶＲアプリケーションが実行されてもよい。
【００６５】
２−３．変形例３
ＨＭＤ２は、角速度センサ２１４を使って当該装置の所定時間あたりの回転量を検出しているが、回転量の検出方法はこれに限られない。例えば、ＨＭＤ２に複数の赤外線ＬＥＤを備えさせ、ＨＭＤ２の周囲に赤外線センサを設置し、赤外線センサにより検出された赤外線の検出点に基づいてＨＭＤ２の回転量を検出するようにしてもよい。または、ＨＭＤ２に光学カメラを備えさせ、光学カメラにより撮影された画像に基づいてＨＭＤ２の回転量を検出するようにしてもよい。
【００６６】
２−４．変形例４
ＨＭＤ２は、最大補正角度を考慮せずに（言い換えると、角速度センサ２１４が検出する角速度を考慮せずに）、加速度センサ２１５が検出する加速度に基づいて第１の姿勢を補正する機能を備えてもよい。具体的には、第１姿勢算出部４１１により算出された第１の姿勢を、補正量算出部４１３により算出されたベクトル周りに、同算出部により算出された補正角度だけ回転させることで第１の姿勢を補正する機能（以下、「第２姿勢補正部」という。）を備えてもよい。そして、コントローラ３に対するユーザの操作に基づいて、姿勢補正部４１６と第２姿勢補正部のうちのいずれかを選択するようにしてもよい。その場合、画像生成部４２は、姿勢補正部４１６が選択された場合には、姿勢補正部４１６により算出された姿勢に応じた画像を生成し、第２姿勢補正部が選択された場合には、第２姿勢補正部により算出された姿勢に応じた画像を生成する。ユーザの操作に基づいて選択を行う代わりに、実行中のアプリケーションの種類やアプリケーションの実行状況（例えば、実行中のゲームの場面）に応じて、自動的に当該選択を行うようにしてもよい。
【００６７】
２−５．変形例５
ＨＭＤ２により実行される画像表示処理は、ネットワークを介して接続された複数の情報処理装置からなる画像処理システムにより実行されてもよい。
【００６８】
２−６．変形例６
図８に例示する姿勢算出処理は、自律駆動型ロボットの姿勢を推定する場合に適用されてもよい。
【符号の説明】
【００６９】
１…ゲームシステム、２…ＨＭＤ、３…コントローラ、３１…通信制御部、３２…メモリ、３３…操作ボタン、３４…アナログスティック、３５…電力供給部、４１…姿勢算出部、４２…画像生成部、４３…表示制御部、５１…角速度データ、５２…第１姿勢データ、５３…加速度データ、５４…重力加速度データ、５５…第２姿勢データ、５６…補正角度
データ、５７…回転データ、５８…最大補正角度データ、２０１…プロセッサ、２０２…フラッシュメモリ、２０３…ＤＲＡＭ、２０４…スロット、２０５…スロットインターフェース、２０６…ネットワーク通信部、２０７…コントローラ通信部、２０８…ディスプレイ、２０９…タッチパネル、２１０…タッチパネルコントローラ、２１１…コーデック回路、２１２…スピーカ、２１３…音声入出力端子、２１４…角速度センサ、２１５…加速度センサ、２１６…電力制御部、２１７…バッテリ、２１８…電源ボタン、４１１…第１姿勢算出部、４１２…重力加速度推定部、４１３…補正量算出部、４１４…最大補正量算出部、４１５…補正量決定部、４１６…姿勢補正部
【図１】
2019220059.tif 000006
【図２】
2019220059.tif 000007
【図３】
2019220059.tif 000008
【図４】
2019220059.tif 000009
【図５】
2019220059.tif 000010
【図６】
2019220059.tif 000011
【図７】
2019220059.tif 000012
【図８】
2019220059.tif 000013