(57)【要約】  第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得する取得部と、前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、情報処理装置が提供される。
2020110659.tif 000002
【特許請求の範囲】
【請求項１】
第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得する取得部と、
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、
情報処理装置。
【請求項２】
前記第１のセンサ情報を用いて算出される位置情報は、前記第２のセンサ情報を用いて算出される位置情報の座標系によって規定される、
請求項１に記載の情報処理装置。
【請求項３】
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、前記設定範囲に含まれる場合、
前記算出部は、前記第１のセンサ情報および前記第２のセンサ情報を用いて前記操作子の位置情報を算出する、
請求項１に記載の情報処理装置。
【請求項４】
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第２のセンサ情報の取得が開始され、
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第２のセンサ情報の取得が停止される、
請求項３に記載の情報処理装置。
【請求項５】
前記第１のセンサ情報を用いる前記位置情報の算出処理にて前記第１のセンサ情報が取得される期間よりも、前記第２のセンサ情報を用いる前記位置情報の算出処理にて前記第２のセンサ情報が取得される期間の方が短い、
請求項３に記載の情報処理装置。
【請求項６】
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第２のセンサ情報の取得頻度が増やされ、
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第２のセンサ情報の取得頻度が減らされる、
請求項５に記載の情報処理装置。
【請求項７】
前記第２のセンサ情報を用いて前記操作子の位置情報を算出する処理は、前記第１のセンサ情報を用いて前記操作子の位置情報を算出する処理に比べて、より大きな電力を消費する、
請求項１に記載の情報処理装置。
【請求項８】
前記第１のセンサおよび前記第２のセンサのうちの少なくとも前記第１のセンサは、前記第２のセンサと共に一の装置に備えられる所定の機器の対として用いられる、
請求項１に記載の情報処理装置。
【請求項９】
前記第１のセンサがＩＭＵであり前記第２のセンサがイメージセンサであるか、前記第１のセンサがＩＭＵであり前記第２のセンサが磁気センサであるか、前記第１のセンサが磁気センサであり前記第２のセンサがイメージセンサである、
請求項７に記載の情報処理装置。
【請求項１０】
前記第１のセンサおよび前記第２のセンサは、ユーザの体の一部、または前記一部に接触する物体に装着される、
請求項９に記載の情報処理装置。
【請求項１１】
前記操作子は、前記ユーザの体または前記物体における、前記第１のセンサもしくは前記第２のセンサの装着部分、または前記装着部分以外の部分である、
請求項１０に記載の情報処理装置。
【請求項１２】
前記設定範囲は、前記ユーザの視界に対応する、
請求項１０に記載の情報処理装置。
【請求項１３】
表示部は、前記ユーザの視界に仮想オブジェクトを表示し、
前記操作子の位置情報に基づいて前記表示部による前記仮想オブジェクトの表示を制御する表示制御部を更に備える、
請求項１２に記載の情報処理装置。
【請求項１４】
前記表示制御部は、前記操作子の位置情報に基づいて前記表示部を制御することで、前記仮想オブジェクトを前記操作子に重畳して表示させる、
請求項１３に記載の情報処理装置。
【請求項１５】
第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得することと、
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出することと、を有する、
コンピュータにより実行される情報処理方法。
【請求項１６】
第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得することと、
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出することと、
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、様々なセンサを用いて操作子の位置情報を算出する技術が盛んに開発されている。例えば、以下の特許文献１には、ユーザの頭部に装着されたカメラによって出力された撮像画像を解析することで操作子（ユーザの手など）の位置情報を算出し、算出した位置情報に基づいて操作子に対して仮想オブジェクトを重畳して表示する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１７５４３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に記載の技術などによっては、操作子の位置情報の算出を適切に実現することができない場合があった。例えば、特許文献１に記載の技術においては、画像処理装置が、ユーザの頭部に装着されたカメラによって出力された撮像画像を解析することで、撮像画像に映る操作子（ユーザの手など）の位置情報を算出している。しかし、カメラによる撮像処理や、画像処理装置による画像認識処理の消費電力は比較的大きい傾向にあるため、これらの処理が常時実行されることでシステム全体の消費電力が大きくなってしまう。【０００５】
そこで、本開示は、上記事情に鑑みてなされたものであり、操作子の位置情報の算出をより適切に実現することが可能な、新規かつ改良された情報処理装置、情報処理方法、およびプログラムを提供する。
【課題を解決するための手段】
【０００６】
本開示によれば、第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得する取得部と、前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、情報処理装置が提供される。【０００７】
また、本開示によれば、第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得することと、前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出することと、を有する、コンピュータにより実行される情報処理方法が提供される。【０００８】
また、本開示によれば、第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得することと、前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出することと、をコンピュータに実現させるためのプログラムが提供される。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る情報処理システムの構成例を示す図である。
【図２】第１の実施形態に係るイメージセンサを用いた間欠動作を説明するための図である。
【図３】第１の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。
【図４】第１の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。
【図５】第１の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。
【図６】第１の実施形態に係るイメージセンサを用いた間欠動作の具体例を説明するための図である。
【図７】第１の実施形態に係る各装置の構成例を示すブロック図である。
【図８】第１の実施形態に係る算出部による制御を説明するための図である。
【図９】第１の実施形態に係るＨＭＤおよびコントローラによるユーザへのコンテンツの提供処理の一例を示すフローチャートである。
【図１０】第１の実施形態に係る変形例を説明するための図である。
【図１１】第１の実施形態に係る変形例を説明するための図である。
【図１２】第１の実施形態に係る変形例を説明するための図である。
【図１３】第１の実施形態に係る変形例を説明するための図である。
【図１４】第２の実施形態に係る設定範囲の具体例を説明するための図である。
【図１５】第２の実施形態に係る各装置の構成例を示すブロック図である。
【図１６】第２の実施形態に係るＨＭＤおよびコントローラによるユーザへのコンテンツの提供処理の一例を示すフローチャートである。
【図１７】第３の実施形態に係る各装置の構成例を示すブロック図である。
【図１８】第３の実施形態に係るＨＭＤおよびコントローラによるユーザへのコンテンツの提供処理の一例を示すフローチャートである。
【図１９】慣性航法に基づく位置推定処理の概略を示す模式図である。
【図２０】慣性航法に基づく位置推定処理において発生し得る位置誤差の時間変化イメージを示す模式図である。
【図２１】運動モデルに基づく位置推定処理の概略を示す模式図である。
【図２２】運動モデルに基づく位置推定処理において発生し得る位置誤差の時間変化イメージを示す模式図である。
【図２３】同実施形態にかかる位置推定処理の概略を示す模式図である。
【図２４】同実施形態にかかる位置推定処理において発生し得る位置誤差の時間変化イメージを示す模式図である。
【図２５】各実施形態に係るＨＭＤまたはコントローラを具現する情報処理装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１１】
なお、説明は以下の順序で行うものとする。
１．第１の実施形態
２．第２の実施形態
３．第３の実施形態
４．位置情報の算出方法の具体例
５．ハードウェア構成例
６．まとめ
【００１２】
＜１．第１の実施形態＞
（１．１．概要）
まず、本開示に係る第１の実施形態について説明する。
【００１３】
図１は、第１の実施形態に係る情報処理システムの構成例を示す図である。図１に示すように、第１の実施形態に係る情報処理システムは、ヘッドマウントディスプレイ１００（以降、「ＨＭＤ１００」と呼称する）と、複数のコントローラ２００（図１の例では、コントローラ２００ａ〜コントローラ２００ｅ）と、を備える。なお、以下の説明において、コントローラ２００ａ〜コントローラ２００ｅを特に区別する必要がない場合には、単にコントローラ２００と呼称する場合がある。
【００１４】
（１．１．１．コントローラ２００の概要）
コントローラ２００は、ユーザの体の一部に装着される情報処理装置である。そして、コントローラ２００は、操作子の位置情報の算出に用いられる第１のセンサ情報を出力する第１のセンサを備えている（換言すると、第１のセンサはユーザの体の一部に装着される）。ここで「操作子」とは、ユーザの体におけるコントローラ２００の装着部分（例えば、コントローラ２００が装着された手首部分など。以降、単に「装着部分」とも呼称する）、または装着部分以外の部分（例えば、コントローラ２００が装着されていない肘部分など。以降、単に「非装着部分」とも呼称する）である。以降では、一例として、操作子がユーザの体におけるコントローラ２００の装着部分（以降、単に「コントローラ２００」とも呼称する）である場合について説明する。
【００１５】
そして、「第１のセンサ」は、加速度センサやジャイロセンサ（角速度センサ）などを含む慣性センサ（以降、「ＩＭＵ：Ｉｎｅｒｔｉａｌ  Ｍｅａｓｕｒｅｍｅｎｔ  Ｕｎｉｔ」と呼称する）などであり、「第１のセンサ情報」は、加速度（Ａｃｃｅｌｅｒａｔｉｏｎ）や角速度（Ａｎｇｕｌａｒ  ｖｅｌｏｃｉｔｙ）などである。コントローラ２００は、ＩＭＵによって出力された第１のセンサ情報をＨＭＤ１００へ提供する。
【００１６】
コントローラ２００は、体の基準となる関節部位（例えば、腰や頭部など）、あるいは体の末端近傍（例えば、手首、足首、または頭部など）に装着されることが望ましい。図１に示す例では、ユーザの腰にコントローラ２００ａが、手首にコントローラ２００ｂおよびコントローラ２００ｅが、足首にコントローラ２００ｃおよびコントローラ２００ｄが装着されている。なお、コントローラ２００の数や装着部分の位置は図１に示す例に限定されない。
【００１７】
（１．１．２．ＨＭＤ１００の概要）
ＨＭＤ１００は、ユーザの頭部に装着されることで、ユーザに対して各種コンテンツを提供する情報処理装置である。例えば、ＨＭＤ１００は、ユーザが外の様子を直接見ることができる光学透過型（光学シースルー型）の装置であり得る。この場合、ＨＭＤ１００は、ユーザが直接見ている実物体に仮想オブジェクトを重畳して表示することでユーザに対して各種コンテンツを提供することができる。
【００１８】
なお、本実施形態では、一例としてＨＭＤ１００が光学透過型の装置である場合について説明するところ、ＨＭＤ１００の種類は特に限定されない。例えば、ＨＭＤ１００は、非透過型の装置であってもよいし、ビデオ透過型（ビデオシースルー型）の装置であってもよい。また、ＨＭＤ１００は、実物体に仮想オブジェクトを重畳して表示する、いわゆるＡＲ（Augmented  Reality）表示を行うだけでなく、仮想オブジェクトを表示することによってユーザに仮想世界を見せる、いわゆるＶＲ（Virtual  Reality）表示を行ってもよい（なお、ＡＲ表示およびＶＲ表示に限定されない）。また、本開示はＨＭＤ１００として具現されなくてもよい。例えば、本開示は、スマートフォン、タブレット型ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、携帯型ゲーム機、またはデジタルカメラなどの各種装置として具現されてもよい。また、「仮想オブジェクト」とは、静止画像や動画像など、視覚に訴える何らかの画像を含む概念である。
【００１９】
そして、ＨＭＤ１００は、コントローラ２００のＩＭＵ（第１のセンサ）によって出力された第１のセンサ情報に基づいてコントローラ２００（操作子）の位置情報および姿勢情報を算出する。より具体的に説明すると、ＨＭＤ１００は、コントローラ２００と同様にＩＭＵを備えており、ＩＭＵによって出力されたセンサ情報を取得する。そして、ＨＭＤ１００は、コントローラ２００のＩＭＵ（第１のセンサ）によって出力された第１のセンサ情報、および自装置のＩＭＵによって出力されたセンサ情報に基づいて、ＨＭＤ１００およびコントローラ２００の各装着部分の位置情報および姿勢情報を算出する。例えば、ＨＭＤ１００は、慣性航法によって位置情報および姿勢情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、ＨＭＤ１００およびコントローラ２００の各装着部分の高精度な位置情報および姿勢情報を算出する。当該方法については後段にて詳述する。
【００２０】
さらに、ＨＭＤ１００は、各装着部分の位置情報および姿勢情報に基づいて、スケルトン構造における各部分の位置情報および姿勢情報を含むスケルトン情報を算出する。スケルトン構造とは、体の部位の情報と、部位間を結ぶ線分であるボーンを含む。なお、スケルトン構造における部位は、例えば体の末端部位や関節部位などに対応する。また、スケルトン構造におけるボーンは例えば人間の骨に相当し得るが、ボーンの位置や数は必ずしも実際の人間の骨格と整合していなくてもよい。ＨＭＤ１００は、スケルトン情報を算出することで、コントローラ２００の装着部分だけでなく非装着部分の位置情報および姿勢情報も算出することができる。そのため上記のとおり、ユーザの体におけるコントローラ２００の装着部分だけでなく、非装着部分も操作子になり得る。なお、ＨＭＤ１００による装着部分および非装着部分の位置情報および姿勢情報の算出方法は、上記方法（慣性航法および回帰モデルを用いる方法）に限定されない。
【００２１】
ＨＭＤ１００は、コントローラ２００（操作子）の位置情報および姿勢情報に基づいて仮想オブジェクトを現実世界に重畳させるように表示するところ、ＩＭＵによって出力されたセンサ情報に基づく処理だけでは、その精度が十分ではないため仮想オブジェクトを正確に重畳させることが難しい。そこで、ＨＭＤ１００は、ＩＭＵの他にコントローラ２００（操作子）の位置情報の算出に用いられる第２のセンサ情報を出力する第２のセンサを備えている。ここで、第１の実施形態に係る「第２のセンサ」は、イメージセンサであり（換言すると、ＨＭＤ１００は、イメージセンサを用いるカメラを備えている）、「第２のセンサ情報」は、イメージセンサによって出力された撮像画像である。なお、第２のセンサ情報は、視覚化された撮像画像に限定されず、光電変換によって出力された電気信号などであってもよい。ここで、当該カメラは、その画角がユーザの視界に対応するようにＨＭＤ１００に備えられていることを想定している（換言すると、当該カメラは、ユーザの視線方向と略同一の方向に向けられている。なお、必ずしもこれに限定されない）。
【００２２】
そして、ＨＭＤ１００は、イメージセンサによって出力された撮像画像（第２のセンサ情報）に基づいてコントローラ２００（操作子）の位置情報および姿勢情報を算出することができる。例えば、ＨＭＤ１００は、撮像画像（第２のセンサ情報）を解析することで当該撮像画像の被写体の特徴量を抽出し、事前に取得されたコントローラ２００（操作子）の特徴量と比較して互いの類似度を算出することで、撮像画像に映るコントローラ２００（操作子）を検出する。そして、ＨＭＤ１００は、撮像画像に映るコントローラ２００（操作子）の大きさや形態（形状や模様などを含む）に基づいて、その位置情報および姿勢情報を算出する。
【００２３】
このように、ＨＭＤ１００は、ＩＭＵ（第１のセンサ）によって出力された第１のセンサ情報や、イメージセンサ（第２のセンサ）によって出力された撮像画像（第２のセンサ情報）を用いて、コントローラ２００（操作子）の位置情報および姿勢情報を算出することができる。ここで、撮像画像（第２のセンサ情報）を用いて操作子の位置情報および姿勢情報を算出する処理は、第１のセンサ情報を用いて操作子の位置情報および姿勢情報を算出する処理に比べて、より高い精度を実現することができる反面、より大きな電力を消費してしまう。
【００２４】
そこで、ＨＭＤ１００は、コントローラ２００（操作子）の位置情報および姿勢情報を算出する際にイメージセンサ（第２のセンサ）を間欠的に用いる。図２を参照してより具体的に説明すると、ＨＭＤ１００は、ユーザにコンテンツを提供している間は常時（なお、必ずしも常時に限定されない）、ＩＭＵ（第１のセンサ）によって出力された第１のセンサ情報に基づいてコントローラ２００（操作子）の位置情報および姿勢情報を算出し続ける（図２では、位置情報および姿勢情報を算出することを「ＯＮ」と表記している）。そして、ＩＭＵ（第１のセンサ）によって出力された第１のセンサ情報を用いて算出されるコントローラ２００（操作子）の位置情報が予め設定された設定範囲に含まれる場合、ＨＭＤ１００は、イメージセンサ（第２のセンサ）によって出力された第２のセンサ情報を用いてコントローラ２００（操作子）の位置情報および姿勢情報を算出する。ここで、図２は、ＩＭＵ（第１のセンサ）によって出力された第１のセンサ情報を用いる位置情報の算出処理にて第１のセンサ情報が取得される期間よりも、イメージセンサ（第２のセンサ）によって出力された第２のセンサ情報を用いる位置情報の算出処理にて第２のセンサ情報が取得される期間の方が短いことを示している。なお、「第１のセンサ情報が取得される期間（第２のセンサ情報が取得される期間）」とは、ある時点から他の時点まで（例えば、位置情報の算出処理の開始時点から終了時点まで）に第１のセンサ情報（第２のセンサ情報）が取得される期間の合計値を含む点に留意されたい。このように、ＨＭＤ１００は、イメージセンサ（第２のセンサ）を間欠的に用いることで消費電力を低減させることができる。
【００２５】
ここで「設定範囲」とは、例えば、イメージセンサ（第２のセンサ）を用いるカメラの画角内の範囲などであり得る。すなわち、第１のセンサ情報を用いて算出されるコントローラ２００（操作子）の位置情報がカメラの画角内の範囲（設定範囲）に含まれる場合、ＨＭＤ１００は、カメラによって出力された撮像画像（第２のセンサ情報）を解析することで、撮像画像に映るコントローラ２００（操作子）の位置情報および姿勢情報をより高精度に算出する。上記のとおり、カメラは、その画角がユーザの視界に対応するようにＨＭＤ１００に備えられている（換言すると、設定範囲はユーザの視界に対応している）ため、ＨＭＤ１００は、コントローラ２００（操作子）がユーザの視界に進入した場合に、コントローラ２００（操作子）の位置情報および姿勢情報をより高精度に算出することができる。したがって、ＨＭＤ１００は、算出した位置情報および姿勢情報に基づいて仮想オブジェクトをより正確に現実世界に重畳して表示することができる。
【００２６】
ここで、ＨＭＤ１００がテニスゲームのコンテンツを提供する場合を一例として説明する。当該コンテンツにおいては、ＨＭＤ１００が、ユーザの腕の振りに合わせてテニスラケットの仮想オブジェクトをユーザの手に握られているように表示し、当該テニスラケットに打たれるようにテニスボールの仮想オブジェクトを表示する。
【００２７】
図３は、ＨＭＤ１００を用いてテニスゲームを行うユーザを上方向から見たときの図である。図３には、ユーザがテニスボールをテニスラケットで打つ前の状態が示されている。操作子であるコントローラ２００（図３の例では、コントローラ２００ｂおよびコントローラ２００ｅ）は、カメラの画角θｔｈ内の範囲に含まれておらず、テニスラケットの仮想オブジェクト（以降、「テニスラケット１０ａ」と呼称する）、およびテニスボールの仮想オブジェクト（以降、「テニスボール１０ｂ」と呼称する）は表示されていない。
【００２８】
図４は、ユーザがテニスボール１０ｂをテニスラケット１０ａで打つ前の状態（図３の状態）におけるユーザの視界を示す図である。図４に示すように、ユーザには、コントローラ２００（操作子）、テニスラケット１０ａ、およびテニスボール１０ｂのいずれもが見えていない状態である。
【００２９】
図５には、ユーザがテニスボール１０ｂをテニスラケット１０ａで打った後の状態が示されている。コントローラ２００ｂ（操作子）は、カメラの画角θｔｈ内の範囲に含まれており、テニスラケット１０ａおよびテニスボール１０ｂは現実世界に重畳して表示されている。
【００３０】
図６は、ユーザがテニスボール１０ｂをテニスラケット１０ａで打った後の状態（図５の状態）におけるユーザの視界を示す図である。図６に示すように、ユーザには、手首に装着されたコントローラ２００ｂ（操作子）が見えており、さらに、現実世界に重畳して表示されたテニスラケット１０ａおよびテニスボール１０ｂが見えている状態である。
【００３１】
以上、ＨＭＤ１００は、設定範囲以外においてはＩＭＵ（第１のセンサ）を用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲（設定範囲）においてはイメージセンサ（第２のセンサ）を用いてより高精度に位置情報および姿勢情報を算出することができる。また、ＨＭＤ１００は、このようにイメージセンサ（第２のセンサ）を間欠的に用いることで消費電力を低減させることができる。
【００３２】
なお、処理で用いられた設定範囲は、必ずしもカメラの画角θｔｈ内の範囲でなくてもよい。例えば、設定範囲は、ユーザに提供されるコンテンツにおいてより重要な空間に対応する範囲であり得る。
【００３３】
（１．２．構成例）
上記では、本開示に係る第１の実施形態の概要について説明した。続いて、図７を参照して、第１の実施形態に係る各装置の構成例について説明する。図７は、第１の実施形態に係る各装置の構成例を示すブロック図である。
【００３４】
（１．２．１．コントローラ２００の構成例）
まず、コントローラ２００の構成例について説明する。図７に示すように、コントローラ２００は、ＩＭＵ２１０と、制御部２２０と、通信部２３０と、を備える。
【００３５】
ＩＭＵ２１０は、第１のセンサとして機能する構成である。より具体的には、ＩＭＵ２１０は、加速度センサやジャイロセンサ（角速度センサ）などを備える。そして、ＩＭＵ２１０に備えられる加速度センサは、第１のセンサ情報として加速度を出力し、加速度センサにより出力される加速度は、コントローラ２００ごとに設定されたローカル座標系におけるコントローラ２００の加速度であり得る。また、ＩＭＵ２１０に備えられるジャイロセンサは、第１のセンサ情報として角速度を出力し、ジャイロセンサにより出力される角速度は、ローカル座標系におけるコントローラ２００の角速度であり得る。ＩＭＵ２１０による第１のセンサ情報の出力の周波数は、例えば約８００［Ｈｚ］であり得る（もちろん、これに限定されない）。
【００３６】
ここで、本開示に係る第１のセンサおよび第２のセンサのうちの少なくとも第１のセンサは、第２のセンサと共に一の装置に備えられる所定の機器の対として用いられる。より具体的に説明すると、ＩＭＵ２１０（第１のセンサ）は、イメージセンサ１２０（第２のセンサ）と共にＨＭＤ１００（一の装置）に備えられるＩＭＵ１１０（所定の機器）の対として用いられる。すなわち、ＨＭＤ１００は、コントローラ２００のＩＭＵ２１０（第１のセンサ）と自装置のＩＭＵ１１０（所定の機器）とを対として用いて、これらのセンサ情報を解析することでコントローラ２００（操作子）の位置情報および姿勢情報を算出することができる。なお、「対として用いる」とは、「１台または２台以上のコントローラ２００のＩＭＵ２１０（第１のセンサ）と、ＩＭＵ１１０（所定の機器）とを共に用いる」ことを含む点に留意されたい（すなわち、処理に用いられるコントローラ２００の台数は特に限定されない）。
【００３７】
制御部２２０は、コントローラ２００が行う処理全般を統括的に制御する構成である。例えば、制御部２２０は、各構成の起動や停止を制御することができる。また、制御部２２０は、通信部２３０による通信を制御し、ＩＭＵ２１０により取得された第１のセンサ情報（角速度および加速度）をＨＭＤ１００へ送信させる。あるいは、制御部２２０は、ＩＭＵ２１０により取得された第１のセンサ情報に対して、ＨＭＤ１００によって行われる処理の一部を行ってもよく、当該処理により得られた処理結果をＨＭＤ１００へ送信させてもよい。なお、制御部２２０の制御内容はこれらに限定されない。例えば、制御部２２０は、各種サーバ、汎用コンピュータ、ＰＣ、またはタブレットＰＣなどにおいて一般的に行われる処理（例えばＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に関する処理など）を制御してもよい。
【００３８】
通信部２３０は、有線または無線により外部装置（特にＨＭＤ１００）との間でデータの送受信を行う構成である。通信部２３０は、例えば有線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ、Ｗｉ−Ｆｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ、登録商標）、赤外線通信、Ｂｌｕｅｔｏｏｔｈ（登録商標）、近距離／非接触通信などの方式で、外部装置と直接またはネットワークアクセスポイントを介して無線通信する。
【００３９】
以上、コントローラ２００の構成例について説明した。なお、図７を用いて説明した上記の構成はあくまで一例であり、コントローラ２００の構成は係る例に限定されない。例えば、コントローラ２００は、図７に示していない構成を備えていてもよい。また、図７に示す構成が外部装置（図示なし）に設けられ、コントローラ２００は当該外部装置と通信連携することによって上記で説明した各機能を実現してもよい。また、複数のコントローラ２００が用いられる場合、各コントローラ２００は、互いに異なる構成を備えていてもよい（本実施形態では、各コントローラ２００が同一の構成を備えている場合を一例として記載する）。
【００４０】
（１．２．２．ＨＭＤ１００の構成例）
続いて、ＨＭＤ１００の構成例について説明する。図７に示すように、ＨＭＤ１００は、ＩＭＵ１１０と、イメージセンサ１２０と、通信部１３０と、制御部１４０と、表示部１５０と、入力部１６０と、記憶部１７０と、を備える。また、制御部１４０は、取得部１４１と、算出部１４２と、表示制御部１４３と、を備える。
【００４１】
ＩＭＵ１１０は、上記で説明したコントローラ２００のＩＭＵ２１０と同様に、加速度センサやジャイロセンサ（角速度センサ）などを備える構成である。ＩＭＵ１１０に備えられる加速度センサは加速度を出力し、加速度センサにより出力される加速度は、ＨＭＤ１００に設定されたローカル座標系におけるＨＭＤ１００の加速度であり得る。また、ＩＭＵ１１０に備えられるジャイロセンサは角速度を出力し、ジャイロセンサにより出力される角速度は、ローカル座標系におけるＨＭＤ１００の角速度であり得る。
【００４２】
イメージセンサ１２０は、第２のセンサとして機能する構成である。より具体的には、イメージセンサ１２０は、カメラ（図示なし）に備えられるセンサであり、結像面に複数の画素を備え、各々の画素は撮像レンズ（図示なし）により結像された被写体像を電気信号に変換することで撮像画像（第２のセンサ情報）を出力する。イメージセンサ１２０は、例えばＣＣＤセンサアレイや、ＣＭＯＳセンサアレイなどであり、必ずしもこれらに限定されない。また、イメージセンサ１２０によるフレームレートは、例えば約６０［ｆｐｓ］であり得る（もちろん、これに限定されない）。
【００４３】
ここで、図２を用いて説明したように、角速度等（第１のセンサ情報）を用いて算出される位置情報が設定範囲内に入ったことに応じて撮像画像（第２のセンサ情報）の取得が開始され、角速度等（第１のセンサ情報）を用いて算出される位置情報が設定範囲外に出たことに応じて撮像画像（第２のセンサ情報）の取得が停止される。換言すると、コントローラ２００（操作子）の位置情報の算出処理において、ＩＭＵによる角速度等（第１のセンサ情報）が取得される期間よりも撮像画像（第２のセンサ情報）が取得される期間の方が短い。
【００４４】
また、角速度等（第１のセンサ情報）を用いて算出される位置情報が設定範囲内に入ったことに応じて撮像画像（第２のセンサ情報）の取得頻度が増やされ、角速度等（第１のセンサ情報）を用いて算出される位置情報が設定範囲外に出たことに応じて撮像画像（第２のセンサ情報）の取得頻度が減らされてもよい。例えば、最初に高レートの角速度等（第１のセンサ情報）を用いたコントローラ２００（操作子）の位置情報の算出と、低フレームレートの撮像画像（第２のセンサ情報）を用いたコントローラ２００（操作子）の検出（コントローラ２００が設定範囲内に存在するか否かを判定するために行われる検出であり、コントローラ２００の位置情報の算出ではない点に留意されたい）と、が行われる。そして、角速度等（第１のセンサ情報）を用いて算出される位置情報が設定範囲内に入った場合、撮像画像（第２のセンサ情報）のフレームレートが上げられ、高フレームレートの撮像画像（第２のセンサ情報）を用いた位置情報の算出が行われてもよい。
【００４５】
なお、上記で説明した（第１のセンサ情報および第２のセンサ情報の）「取得」や「取得頻度」とは、各種センサ（ＩＭＵ２１０やイメージセンサ１２０）による各種情報（第１のセンサ情報や第２のセンサ情報）の取得や取得頻度を指してもよいし、ＨＭＤ１００の取得部１４１による各種センサからの各種情報（第１のセンサ情報や第２のセンサ情報）の取得や取得頻度を指してもよい点に留意されたい。
【００４６】
通信部１３０は、有線または無線により外部装置（特にコントローラ２００）との間でデータの送受信を行う構成である。通信部１３０は、例えば有線ＬＡＮ、無線ＬＡＮ、Ｗｉ−Ｆｉ、赤外線通信、Ｂｌｕｅｔｏｏｔｈ（登録商標）、近距離／非接触通信などの方式で、外部装置と直接またはネットワークアクセスポイントを介して無線通信する。
【００４７】
制御部１４０は、ＨＭＤ１００が行う処理全般を統括的に制御する構成である。例えば、制御部１４０は、各構成の起動や停止を制御することができる。なお、制御部１４０の制御内容は特に限定されない。例えば、制御部１４０は、各種サーバ、汎用コンピュータ、ＰＣ、またはタブレットＰＣなどにおいて一般的に行われる処理（例えばＯＳに関する処理など）を制御してもよい。
【００４８】
取得部１４１は、各種情報を取得する構成である。より具体的には、取得部１４１は、コントローラ２００のＩＭＵ２１０（第１のセンサ）によって出力される第１のセンサ情報、およびイメージセンサ１２０（第２のセンサ）によって出力される第２のセンサ情報を取得する。さらに、取得部１４１は、自装置に備えられるＩＭＵ１１０によって出力されるセンサ情報も取得する。取得部１４１は、取得したこれらの情報を算出部１４２に提供する。
【００４９】
算出部１４２は、ＨＭＤ１００およびコントローラ２００（操作子）の位置情報および姿勢情報を算出する構成である。より具体的には、算出部１４２は、コントローラ２００のＩＭＵ２１０（第１のセンサ）によって出力された第１のセンサ情報、およびＩＭＵ１１０によって出力されたセンサ情報に基づいて、ＨＭＤ１００およびコントローラ２００の各装着部分の位置情報および姿勢情報を算出する。例えば、ＨＭＤ１００は、慣性航法によって位置情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、ＨＭＤ１００およびコントローラ２００（操作子）の各装着部分の高精度な位置情報および姿勢情報を算出する（当該方法については後段にて詳述する）。
【００５０】
また、算出部１４２は、ＨＭＤ１００およびコントローラ２００（操作子）の位置情報および姿勢情報に基づいてスケルトン構造における各部位の位置情報および姿勢情報を含むスケルトン情報を算出する。より具体的には、算出部１４２は、逆運動学（ＩＫ：Inverse  Kinematics）計算を用いてスケルトン情報を算出する。逆運動学計算とは、末端部位の位置情報および姿勢情報から各関節部位の変位を算出する技術である。逆運動学計算においては、体の各部位を、長さが既知である所定数のボーンからなる単純なリンク機構とみなし（例えば、腕を、長さが既知である２本のボーンからなるリンク機構とみなし）、当該リンク機構の自由度を設定し各ボーンのなす角度を計算することによってスケルトン情報を算出する。
【００５１】
そして、算出部１４２は、スケルトン情報に含まれるコントローラ２００（操作子）の位置情報に基づいてイメージセンサ１２０（第２のセンサ）を間欠的に用いる。より具体的に説明すると、スケルトン情報に含まれるコントローラ２００（操作子）の位置情報（第１のセンサ情報を用いて算出される位置情報）は、イメージセンサ１２０によって取得される撮像画像（第２のセンサ情報）を用いて算出される位置情報の座標系によって規定されている（以降、第２のセンサ情報を用いて算出される位置情報の座標系を「グローバル座標系」と呼称する場合がある。換言すると、第１のセンサ情報を用いて算出される位置情報、および第２のセンサ情報を用いて算出される位置情報は、グローバル座標系によって規定される）。これによって、算出部１４２は、スケルトン情報に含まれるコントローラ２００（操作子）の位置情報が予め設定された設定範囲に含まれるか否かを判定することができる。そして、スケルトン情報に含まれるコントローラ２００（操作子）の位置情報が設定範囲に含まれる場合、算出部１４２は、イメージセンサ１２０によって出力された第２のセンサ情報を用いてコントローラ２００（操作子）の位置情報を算出する。
【００５２】
例えば、図３〜図６を参照して説明した例のように、コントローラ２００（操作子）がカメラの画角内の範囲（設定範囲）に含まれる場合に、算出部１４２は、カメラの撮像画像（第２のセンサ情報）を用いてコントローラ２００（操作子）の位置情報を算出する。図８を参照してより具体的に説明すると、カメラの画角の基点Ｏを始点としたときのコントローラ２００（図８の例では、右手首に装着されたコントローラ２００ｂ）の位置ベクトルＡとカメラの方向ベクトルＨとのなす角をθとする。ここでカメラの画角（水平画角）をθｔｈとしたときにおいて、θ≦θｔｈ／２の関係が成立する場合、算出部１４２は、コントローラ２００ｂ（操作子）がカメラの画角内の範囲に含まれると判定し、カメラの撮像画像（第２のセンサ情報）を用いた位置情報の算出処理を行う。一方、θ＞θｔｈ／２の関係が成立する場合、算出部１４２は、コントローラ２００ｂ（操作子）がカメラの画角内の範囲に含まれないと判定し、ＩＭＵ２１０から取得された第１のセンサ情報を用いた位置情報の算出処理を継続する。なお、図８ではカメラの水平画角θｔｈに基づく判定処理について説明したところ、カメラの垂直画角についても同様の判定処理が行われ得る。
【００５３】
カメラの撮像画像（第２のセンサ情報）を用いた位置情報および姿勢情報の算出処理についてより具体的に説明すると、算出部１４２は、カメラの撮像画像（第２のセンサ情報）を解析することで当該撮像画像の被写体の特徴量を抽出し、事前に取得されたコントローラ２００（操作子）の特徴量と比較して互いの類似度を算出することで、撮像画像に映るコントローラ２００（操作子）を検出する。そして、算出部１４２は、撮像画像に映るコントローラ２００（操作子）の大きさや形態（形状や模様などを含む）に基づいて、その位置情報および姿勢情報を算出する。
【００５４】
その後、算出部１４２は、撮像画像を用いて算出したコントローラ２００（操作子）の位置情報および姿勢情報を用いて、ＩＭＵ（ＩＭＵ１１０およびＩＭＵ２１０）から取得されたセンサ情報を用いて算出された位置情報および姿勢情報を補正する（この補正処理は、第１のセンサ情報および第２のセンサ情報を用いて操作子の位置情報を算出することと等価である）。なお、算出部１４２は、当該補正を行うことなく、撮像画像を用いて算出したコントローラ２００（操作子）の位置情報および姿勢情報を、コントローラ２００（操作子）の位置情報および姿勢情報として用いてもよい。
【００５５】
ここで、撮像画像を用いてコントローラ２００（操作子）の位置情報および姿勢情報を算出する際の画像処理を簡略化するために様々な工夫が施されてもよい。例えば、赤外光を強く反射する性質を有する、いわゆる再帰性反射材を塗布したマーカ（以降、「反射マーカ」と呼称する）がコントローラ２００の表面上に備えられてもよい。これによって、外部（例えば、ＨＭＤ１００）から反射マーカに対して赤外光を照射し、その反射光が映る撮像画像を解析することによって、算出部１４２は、撮像画像におけるコントローラ２００の位置情報および姿勢情報を算出し易くなる。なお、再帰性反射部材の種類は特に限定されるものではないが、好適には、可視光領域において透明性を有する材料を採用することができる。可視領域において透明または半透明な再帰性反射部材を採用することにより、コントローラ２００の位置情報および姿勢情報を算出し易くしつつも、反射光が目障りとならずに済む。
【００５６】
また、自発光する光源（例えば、ＬＥＤなど）がコントローラ２００の表面上に備えられてもよい。これによって、光源から出射された光が映る撮像画像を解析することによって、算出部１４２は、撮像画像におけるコントローラ２００の位置情報および姿勢情報を算出し易くなる。なお、光源の種類は特に限定されない。
【００５７】
また、ＨＭＤ１００（具体的には記憶部１７０）は、コントローラ２００の大きさや形状に関する情報を予め記憶していてもよい。これによって、算出部１４２は、この予め記憶されている大きさや形状に関する情報と、撮像画像に映るコントローラ２００の大きさや形状とを比較することによって、撮像画像におけるコントローラ２００の位置情報および姿勢情報を算出し易くなる。
【００５８】
さらに、算出部１４２は、Ｖｉｓｕａｌ  ＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  ｌｏｃａｌｉｚａｔｉｏｎ  ａｎｄ  ｍａｐｐｉｎｇ）を用いてＨＭＤ１００の位置情報および姿勢情報を算出する。Ｖｉｓｕａｌ  ＳＬＡＭは、未知環境下においてカメラの撮像画像を解析することで自己位置・姿勢算出と地図作成を同時に行なうことができる技術である。なお、Ｖｉｓｕａｌ  ＳＬＡＭの実現手法は特に限定されず、算出部１４２は、公知のＶｉｓｕａｌ  ＳＬＡＭの実現手法を用いてＨＭＤ１００の位置情報および姿勢情報を算出することができる。また、ＨＭＤ１００の位置情報および姿勢情報の算出にＶｉｓｕａｌ  ＳＬＡＭが用いられるのはあくまで一例であり、ＨＭＤ１００の位置情報および姿勢情報の算出方法はこれに限定されない。
【００５９】
表示制御部１４３は、算出部１４２によって算出されたコントローラ２００（操作子）の位置情報および姿勢情報に基づいて表示部１５０による仮想オブジェクトの表示を制御する構成である。例えば、表示制御部１４３は、コントローラ２００（操作子）の位置情報および姿勢情報に基づいて前記表示部を制御することで、仮想オブジェクトをコントローラ２００（操作子）に重畳して表示させる。
【００６０】
表示部１５０は、ユーザの視界に仮想オブジェクトを表示する構成である。より具体的には、表示部１５０は、表示制御部１４３による制御に基づいて仮想オブジェクトを現実世界に重畳させるように表示する。なお、表示部１５０による表示方式は特に限定されず、ＨＭＤ１００の種類などに応じて柔軟に変更され得る。
【００６１】
入力部１６０は、ユーザによる入力を受ける構成である。例えば、入力部１６０は、タッチパネル、ボタン、スイッチ、マイクロフォン、マウス、またはキーボードなどの入力装置を備えており、ユーザがこれらの入力装置を用いることによって、所望の情報を入力することができる。なお、入力部１６０が備える入力装置は特に限定されない。
【００６２】
記憶部１７０は、各種情報を記憶する構成である。例えば、記憶部１７０は、ＨＭＤ１００の各構成によって使用されるプログラムやパラメータなどを記憶する。また、記憶部１７０は、各センサによって取得されたセンサ情報を記憶してもよい。なお、記憶部１７０が記憶する情報の内容はこれらに限定されない。
【００６３】
以上、ＨＭＤ１００の構成例について説明した。なお、図７を用いて説明した上記の構成はあくまで一例であり、ＨＭＤ１００の構成は係る例に限定されない。例えば、ＨＭＤ１００は、図７に示す構成の一部を備えていなくてもよいし、図７に示していない構成を備えていてもよい。また、図７に示す構成が外部装置（図示なし）に設けられ、ＨＭＤ１００は当該外部装置と通信連携することによって上記で説明した各機能を実現してもよい。例えば、１または２以上のコントローラ２００と通信可能なハブ装置が別途設けられ、当該ハブ装置がコントローラ２００から各種情報（例えば、第１のセンサ情報など）を集約する場合、ＨＭＤ１００は、各コントローラ２００ではなくハブ装置と通信することで各種情報を受信してもよい。また、外部サーバが別途設けられる場合、ＨＭＤ１００および外部サーバは分散処理により上記の各種処理を実現してもよい。
【００６４】
（１．３．処理フロー例）
上記では、第１の実施形態に係る各装置の構成例について説明した。続いて、図９を参照して、第１の実施形態に係る各装置の処理フロー例について説明する。図９は、ＨＭＤ１００およびコントローラ２００によるユーザへのコンテンツの提供処理の一例を示すフローチャートである。なお、当該フローチャートにおいては、コントローラ２００（操作子）の位置情報および姿勢情報を算出する際の画像処理を簡略化するために、反射マーカがコントローラ２００の表面上に備えられているとする。
【００６５】
ステップＳ１０００では、ＨＭＤ１００の取得部１４１がコントローラ２００（操作子）のＩＭＵ２１０によって取得された第１のセンサ情報と、ＩＭＵ１１０によって取得されたセンサ情報を取得する。ステップＳ１００４では、算出部１４２が、ＩＭＵ２１０からの第１のセンサ情報およびＩＭＵ１１０からのセンサ情報に基づいてコントローラ２００（操作子）の位置情報および姿勢情報を算出する。
【００６６】
ステップＳ１００８では、算出部１４２は、コントローラ２００（操作子）がカメラの画角内の範囲（設定範囲）に進入したか否かを判定する。コントローラ２００（操作子）がカメラの画角内の範囲（設定範囲）に進入したと判定された場合（ステップＳ１００８／Ｙｅｓ）、ステップＳ１０１２にて、取得部１４１は、イメージセンサ１２０によって取得された撮像画像（第２のセンサ情報）を取得する。
【００６７】
ステップＳ１０１６にて、算出部１４２は、撮像画像（第２のセンサ情報）を解析することで、コントローラ２００に備えられた反射マーカの検出を試みる。コントローラ２００に備えられた反射マーカが検出された場合（ステップＳ１０１６／Ｙｅｓ）、ステップＳ１０２０にて、算出部１４２は、第１のセンサ情報を用いて算出されたコントローラ２００の位置情報および姿勢情報を、検出された反射マーカ（換言すると、反射マーカが備えられたコントローラ２００）に基づいて補正する。
【００６８】
コントローラ２００がカメラの画角内の範囲（設定範囲）に進入したと判定されたにも関わらず、コントローラ２００に備えられた反射マーカが検出されなかった場合（ステップＳ１０１６／Ｎｏ）、ステップＳ１０２４にて、撮像条件や認識性能に反射マーカ検出失敗の原因があると判断し、算出部１４２は、画像認識の内部処理を切り替えることで反射マーカの検出を試みる。例えば、撮像環境が明るすぎる場合（例えば、照度が高すぎる場合）、算出部１４２は、反射マーカに照射される赤外光の強度を上げることでより反射マーカを検出し易くしてもよい。また、コントローラ２００の移動速度が速すぎる場合、算出部１４２は、カメラのフレームレートを上げてもよい。さらに、撮像画像の解析に用いられるアルゴリズムが複数存在する場合、算出部１４２は、より高精度のアルゴリズムに切り替えてもよい。なお、これらはあくまで一例であり、算出部１４２が反射マーカを検出し易くするために行う処理の内容は特に限定されない。算出部１４２は、画像認識の内部処理を切り替えることにより反射マーカを検出できた場合には、ステップＳ１０２０にて反射マーカに基づいてコントローラ２００の位置情報および姿勢情報を補正する。
【００６９】
ステップＳ１０２８では、表示制御部１４３がコントローラ２００の位置情報および姿勢情報に基づいて表示部１５０を制御することにより、仮想オブジェクトを現実世界に重畳して表示させる。ステップＳ１０３２では、制御部２２０が、コンテンツが終了したか否かを判定する。コンテンツが終了したと判定された場合（ステップＳ１０３２／Ｙｅｓ）、一連の処理が終了し、コンテンツが終了していないと判定された場合（ステップＳ１０３２／Ｎｏ）、ステップＳ１０００〜ステップＳ１０２８の処理が継続される。
【００７０】
（１．４．変形例）
以上では、第１の実施形態に係る各装置の処理フロー例について説明した。続いて、第１の実施形態に係る変形例について説明する。
【００７１】
（１．４．１．設定範囲の変形例）
上記では、設定範囲がカメラの画角内の範囲である場合を一例として説明した。ここで、設定範囲はカメラの画角外の範囲を含んでもよい。例えば、カメラの画角をθｔｈとし、画角θｔｈにバッファを加算して得られる角度をθｔｈ´としたとき、設定範囲は、当該角度θｔｈ´内の範囲であってもよい。より具体的には、図１０に示すように、θ≦θｔｈ´／２の関係が成立する場合（θは、コントローラ２００の位置ベクトルＡとカメラの方向ベクトルＨとのなす角）、算出部１４２は、コントローラ２００ｂ（操作子）が設定範囲に含まれると判定し、カメラの撮像画像（第２のセンサ情報）を用いた位置情報および姿勢情報の算出処理を開始する。このように、バッファが設けられ、画角θｔｈよりも広い角度θｔｈ´内の範囲が設定範囲とされることで、算出部１４２は、コントローラ２００が画角θｔｈ内の範囲に進入する前に画像処理を開始できるため、撮像画像に映るコントローラ２００の位置情報および姿勢情報をより早期に算出することができる。これは、特にカメラの画角θｔｈがＨＭＤ１００のディスプレイ画角よりも狭い場合に有用である。なお、図１０ではカメラの水平方向の角度θｔｈ´に基づく判定処理について説明したところ、カメラの垂直方向の角度についても同様の判定処理が行われ得る。
【００７２】
また、カメラの画角θｔｈよりも狭い角度をθｔｈ´´としたとき、設定範囲は、当該角度θｔｈ´´内の範囲であってもよい。より具体的には、図１１に示すように、θ≦θｔｈ´´／２の関係が成立する場合、算出部１４２は、コントローラ２００ｂ（操作子）が設定範囲に含まれると判定し、カメラの撮像画像（第２のセンサ情報）を用いた位置情報および姿勢情報の算出処理を開始する。なお、この場合もカメラの垂直方向の角度について同様の判定処理が行われ得る。
【００７３】
また、設定範囲は、撮像画像における所定形状の領域であってもよい。例えば図１２に示すように、設定範囲は、撮像画像の右下部分に位置する所定形状の領域２０であってもよい。図１２は、テニスゲームのコンテンツが提供される場合を一例として示しているところ、当該コンテンツにおいて撮像画像の右下部分は右手首に装着されたコントローラ２００ｂが映り易い領域である。このように、コントローラ２００が映り易い領域が設定範囲とされることによって、ＨＭＤ１００は、コントローラ２００の位置情報および姿勢情報を算出し易くなる。また、このように設定範囲を限定することでＨＭＤ１００の消費電力が低減される。なお、撮像画像における設定範囲の形状は特に限定されない。
【００７４】
（１．４．２．その他の変形例）
上記では、算出部１４２が、慣性航法によって位置情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、ＨＭＤ１００およびコントローラ２００の各装着部分の位置情報を算出する旨を説明したが、ＩＭＵ（ＩＭＵ１１０およびＩＭＵ２１０）の精度が向上した場合、慣性航法による位置算出の際に発生するドリフト誤差が小さくなるため、算出部１４２は回帰モデルを用いて補正を行わなくてもよい。この場合、ＩＭＵ２１０を備えたコントローラ２００がユーザの体の一部だけでなく、ユーザの体の一部に接触する物体に装着されても、算出部１４２は、ＩＭＵ２１０によって取得された第１のセンサ情報を解析することで当該物体の位置情報および姿勢情報を高精度に算出することができる。例えば、図１３に示すように、ＩＭＵ２１０を備えたコントローラ２００ｆがユーザに把持されたテニスラケット（実物体）に装着されることで、算出部１４２は、当該テニスラケットの位置情報および姿勢情報を高精度に算出することができる。
【００７５】
＜２．第２の実施形態＞
（２．１．概要）
上記では、本開示に係る第１の実施形態について説明した。続いて、本開示に係る第２の実施形態について説明する。
【００７６】
第１の実施形態では、第１のセンサとしてＩＭＵ２１０が用いられ、第２のセンサとしてイメージセンサ１２０が用いられた。一方、第２の実施形態では、第１のセンサとしてＩＭＵ２１０が用いられ、第２のセンサとしては磁気センサが用いられる。ここで、磁気センサ（第２のセンサ）を用いて操作子の位置情報および姿勢情報を算出する処理は、ＩＭＵ２１０（第１のセンサ）を用いて操作子の位置情報および姿勢情報を算出する処理に比べて、より高い精度を実現することができるが、より大きな電力を消費してしまう。
【００７７】
そこで、ＨＭＤ１００は、操作子の位置情報および姿勢情報を算出する際に磁気センサ（第２のセンサ）を間欠的に用いる。これによって、ＨＭＤ１００は、設定範囲以外においてはＩＭＵ２１０（第１のセンサ）などを用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲（設定範囲）においては磁気センサ（第２のセンサ）を用いて高精度の位置情報および姿勢情報を算出することができる。
【００７８】
ここで、磁気センサを用いる磁気式トラッキング技術によっては、イメージセンサ１２０を用いるカメラと異なり、全周囲において位置情報および姿勢情報の算出が可能となるため、ＨＭＤ１００を装着したユーザの全周囲における所定領域が設定範囲となり得る。例えば、図１４に示すように、ユーザの前頭面より前方側の領域２１や前頭面より後方側の領域２２が設定範囲とされ得る。
【００７９】
（２．２．構成例）
続いて、図１５を参照して、第２の実施形態に係る各装置の構成例について説明する。図１５は、第２の実施形態に係る各装置の構成例を示すブロック図である。なお、以降では、第１の実施形態に係る各構成と同様の内容については説明を省略し、異なる内容について重点的に説明する。
【００８０】
（２．２．１．コントローラ２００の構成例）
まず、第２の実施形態に係るコントローラ２００の構成例について説明する。図１５に示すように、第２の実施形態に係るコントローラ２００は、ＩＭＵ２１０と、制御部２２０と、通信部２３０と、磁気センサ２４０と、を備える。
【００８１】
磁気センサ２４０は、第２のセンサとして機能し、ＨＭＤ１００に備えられる磁気発生部１８０から発せられた磁気を検出することで、第２のセンサ情報として磁気検出情報を出力する構成である。磁気センサ２４０は、例えばホール素子などによって構成され得るところ、必ずしもこれに限定されない。
【００８２】
制御部２２０は、通信部２３０による通信を制御し、磁気センサ２４０により取得された磁気検出情報（第２のセンサ情報）をＨＭＤ１００へ送信させる。なお、図１５に示した構成はあくまで一例であり、第２の実施形態に係るコントローラ２００の構成は係る例に限定されない。
【００８３】
（２．２．２．ＨＭＤ１００の構成例）
続いて、第２の実施形態に係るＨＭＤ１００の構成例について説明する。図１５に示すように、第２の実施形態に係るＨＭＤ１００は、ＩＭＵ１１０と、イメージセンサ１２０と、通信部１３０と、制御部１４０と、表示部１５０と、入力部１６０と、記憶部１７０と、磁気発生部１８０と、を備える。また、制御部１４０は、取得部１４１と、算出部１４２と、表示制御部１４３と、を備える。
【００８４】
磁気発生部１８０は、磁気センサ２４０によって検出されるための磁気（磁界）を発生させる構成である。磁気発生部１８０は、例えば磁気発生コイルなどによって構成され得るところ、必ずしもこれに限定されない。
【００８５】
算出部１４２は、第１の実施形態と同様に、コントローラ２００のＩＭＵ２１０（第１のセンサ）によって出力された第１のセンサ情報、および自装置のＩＭＵ１１０によって出力されたセンサ情報に基づいてスケルトン情報を算出した後に、スケルトン情報に含まれる操作子の位置情報に基づいて磁気発生部１８０および磁気センサ２４０（第２のセンサ）を間欠的に用いる。より具体的には、算出部１４２は、スケルトン情報に含まれる操作子の位置情報が予め設定された設定範囲に含まれる場合、磁気センサ２４０によって出力された磁気検出情報（第２のセンサ情報）を用いて公知の磁気式トラッキング処理を行い、操作子の位置情報および姿勢情報を算出する。
【００８６】
また、第２の実施形態においても、算出部１４２は、イメージセンサ１２０によって出力された撮像画像を用いてＶｉｓｕａｌ  ＳＬＡＭに関する処理を行うことにより、ＨＭＤ１００の位置情報および姿勢情報を算出するものとする。
【００８７】
なお、図１５に示した構成はあくまで一例であり、第２の実施形態に係るＨＭＤ１００の構成は係る例に限定されない。例えば、磁気発生部１８０がコントローラ２００に備えられ、磁気センサ２４０がＨＭＤ１００に備えられてもよい。
【００８８】
（２．３．処理フロー例）
上記では、第２の実施形態に係る各装置の構成例について説明した。続いて、図１６を参照して、第２の実施形態に係る各装置の処理フロー例について説明する。図１６は、ＨＭＤ１００およびコントローラ２００によるユーザへのコンテンツの提供処理の一例を示すフローチャートである。
【００８９】
ステップＳ１１００では、ＨＭＤ１００の取得部１４１がコントローラ２００（操作子）のＩＭＵ２１０によって取得された第１のセンサ情報と、ＩＭＵ１１０によって取得されたセンサ情報を取得する。ステップＳ１１０４では、算出部１４２が、ＩＭＵ２１０からの第１のセンサ情報およびＩＭＵ１１０からのセンサ情報に基づいてコントローラ２００（操作子）の位置情報および姿勢情報を算出する。
【００９０】
ステップＳ１１０８では、算出部１４２は、コントローラ２００（操作子）が設定範囲に進入したか否かを判定する。コントローラ２００（操作子）が設定範囲に進入したと判定された場合（ステップＳ１１０８／Ｙｅｓ）、ステップＳ１１１２にて、取得部１４１は、磁気センサ２４０によって取得された磁気検出情報（第２のセンサ情報）を取得する。
【００９１】
ステップＳ１１１６にて、算出部１４２は、磁気検出情報（第２のセンサ情報）を解析することで、コントローラ２００の位置情報および姿勢情報を算出する。ステップＳ１１２０では、算出部１４２は、第１のセンサ情報を用いて算出されたコントローラ２００の位置情報および姿勢情報を、算出結果に基づいて補正する。
【００９２】
ステップＳ１１２４では、表示制御部１４３がコントローラ２００の位置情報および姿勢情報に基づいて表示部１５０を制御することにより、仮想オブジェクトを現実世界に重畳して表示させる。ステップＳ１１２８では、制御部２２０は、コンテンツが終了したか否かを判定する。コンテンツが終了したと判定された場合（ステップＳ１１２８／Ｙｅｓ）、一連の処理が終了し、コンテンツが終了していないと判定された場合（ステップＳ１１２８／Ｎｏ）、ステップＳ１１００〜ステップＳ１１２４の処理が継続される。
【００９３】
以上、本開示に係る第２の実施形態について説明した。なお、第２の実施形態には、第１の実施形態にて説明した技術的事項が適宜適用され得る点に留意されたい。
【００９４】
＜３．第３の実施形態＞
（３．１．概要）
上記では、本開示に係る第２の実施形態について説明した。続いて、本開示に係る第３の実施形態について説明する。
【００９５】
第１の実施形態では、第１のセンサとしてＩＭＵ２１０が用いられ、第２のセンサとしてイメージセンサ１２０が用いられ、第２の実施形態では、第１のセンサとしてＩＭＵ２１０が用いられ、第２のセンサとして磁気センサ２４０が用いられた。一方、第３の実施形態では、第１のセンサとして磁気センサ２４０が用いられ、第２のセンサとしてイメージセンサ１２０が用いられる。ここで、上述のとおり、本開示に係る第１のセンサおよび第２のセンサのうちの少なくとも第１のセンサは、第２のセンサと共に一の装置に備えられる所定の機器の対として用いられる。第３の実施形態においては、磁気センサ２４０（第１のセンサ）は、イメージセンサ１２０（第２のセンサ）と共にＨＭＤ１００（一の装置）に備えられる磁気発生部１８０（所定の機器）の対として用いられる。
【００９６】
イメージセンサ１２０（第２のセンサ）を用いて操作子の位置情報および姿勢情報を算出する処理は、磁気センサ２４０（第１のセンサ）を用いて操作子の位置情報および姿勢情報を算出する処理に比べて、より高い精度を実現することができるが、より大きな電力を消費してしまう。そこで、ＨＭＤ１００が、操作子の位置情報および姿勢情報を算出する際にイメージセンサ１２０（第２のセンサ）を間欠的に用いる。これによって、ＨＭＤ１００は、設定範囲以外においては磁気センサ２４０（第１のセンサ）を用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲（設定範囲）においてはイメージセンサ１２０（第２のセンサ）を用いて高精度の位置情報および姿勢情報を算出することができる。
【００９７】
（３．２．構成例）
続いて、図１７を参照して、第３の実施形態に係る各装置の構成例について説明する。図１７は、第３の実施形態に係る各装置の構成例を示すブロック図である。
【００９８】
図１７に示すように、第３の実施形態に係るコントローラ２００は、制御部２２０と、通信部２３０と、磁気センサ２４０と、を備える。なお、これらの構成は、図１５を参照して説明した第２の実施形態に係る構成と同様の機能を有するため説明を省略する。
【００９９】
また、図１７に示すように、第３の実施形態に係るＨＭＤ１００は、イメージセンサ１２０と、通信部１３０と、制御部１４０と、表示部１５０と、入力部１６０と、記憶部１７０と、磁気発生部１８０と、を備える。また、制御部１４０は、取得部１４１と、算出部１４２と、表示制御部１４３と、を備える。なお、これらの構成は、図１５を参照して説明した第２の実施形態に係る構成と同様の機能を有するため説明を省略する。
【０１００】
（３．３．処理フロー例）
続いて、図１８を参照して、第３の実施形態に係る各装置の処理フロー例について説明する。図１８は、ＨＭＤ１００およびコントローラ２００によるユーザへのコンテンツの提供処理の一例を示すフローチャートである。なお、当該フローチャートにおいては、第１の実施形態と同様に、カメラの画角内の範囲が設定範囲とされている。
【０１０１】
ステップＳ１２００では、ＨＭＤ１００の取得部１４１がコントローラ２００（操作子）の磁気センサ２４０によって取得された磁気検出情報（第１のセンサ情報）を取得する。ステップＳ１２０４では、算出部１４２が、磁気検出情報（第１のセンサ情報）に基づいてコントローラ２００（操作子）の位置情報および姿勢情報を算出する。
【０１０２】
ステップＳ１２０８では、算出部１４２は、コントローラ２００（操作子）がカメラの画角内の範囲（設定範囲）に進入したか否かを判定する。コントローラ２００（操作子）がカメラの画角内の範囲（設定範囲）に進入したと判定された場合（ステップＳ１２０８／Ｙｅｓ）、ステップＳ１２１２にて、取得部１４１は、イメージセンサ１２０によって取得された撮像画像（第２のセンサ情報）を取得する。
【０１０３】
ステップＳ１２１６にて、算出部１４２は、撮像画像（第２のセンサ情報）を解析することで、コントローラ２００に備えられた反射マーカの検出を試みる。コントローラ２００に備えられた反射マーカが検出された場合（ステップＳ１２１６／Ｙｅｓ）、ステップＳ１２２０にて、算出部１４２は、磁気検出情報（第１のセンサ情報）を用いて算出されたコントローラ２００の位置情報および姿勢情報を、検出された反射マーカ（換言すると、反射マーカが備えられたコントローラ２００）に基づいて補正する。
【０１０４】
コントローラ２００がカメラの画角内の範囲（設定範囲）に進入したと判定されたにも関わらず、コントローラ２００に備えられた反射マーカが検出されなかった場合（ステップＳ１２１６／Ｎｏ）、ステップＳ１２２４にて、撮像条件や認識性能に反射マーカ検出失敗の原因があると判断し、算出部１４２は、画像認識の内部処理を切り替えることで反射マーカの検出を試みる。内部処理の切り替えの具体例については図９にて説明したものと同様であり得るため説明を省略する。算出部１４２は、画像認識の内部処理を切り替えることにより反射マーカを検出できた場合には、ステップＳ１２２０にて反射マーカに基づいてコントローラ２００の位置情報および姿勢情報を補正する。
【０１０５】
ステップＳ１２２８では、表示制御部１４３がコントローラ２００の位置情報および姿勢情報に基づいて表示部１５０を制御することにより、仮想オブジェクトを現実世界に重畳して表示させる。ステップＳ１２３２では、制御部２２０が、コンテンツが終了したか否かを判定する。コンテンツが終了したと判定された場合（ステップＳ１２３２／Ｙｅｓ）、一連の処理が終了し、コンテンツが終了していないと判定された場合（ステップＳ１２３２／Ｎｏ）、ステップＳ１２００〜ステップＳ１２２８の処理が継続される。
【０１０６】
以上、本開示に係る第３の実施形態について説明した。なお、第３の実施形態には、第１の実施形態および第２の実施形態にて説明した技術的事項が適宜適用され得る点に留意されたい。
【０１０７】
＜４．位置情報の算出方法の具体例＞
上記では、本開示に係る第３の実施形態について説明した。続いて、コントローラ２００のＩＭＵ２１０によって出力された第１のセンサ情報や、ＨＭＤ１００のＩＭＵ１１０によって出力されたセンサ情報に基づく、ＨＭＤ１００およびコントローラ２００の各装着部分の位置情報の算出方法の具体例について説明する。
【０１０８】
上記のとおり、ＨＭＤ１００は、例えば、慣性航法によって位置情報を算出し、その際発生するドリフト誤差を回帰モデルによって補正することで、ＨＭＤ１００およびコントローラ２００の各装着部分のより正確な位置情報を算出することができる。
【０１０９】
まず前提として、慣性航法に基づく位置算出処理について説明する。慣性航法は、角速度および加速度を複数回積分（Integration）することでセンサ位置情報を算出する技術であり、例えば船舶または航空機などに採用されている。図１９は、慣性航法に基づく位置算出処理の概略を示す模式図である。
【０１１０】
慣性航法では、まずジャイロセンサにより取得されたローカル座標系（センサ装置毎に設定された座標系）における角速度を積分する（Ｓ１１１）ことで、グローバル座標系におけるコントローラ２００およびＨＭＤ１００の姿勢が計算される。次いで、グローバル座標系における各装置の姿勢に基づいて、各装置に備えられる加速度センサにより取得されたローカル座標系におけるセンサ装置の加速度をグローバル座標系における各装置の加速度へ座標系変換する（Ｓ１１２）。そして、座標系変換されたグローバル座標系における加速度を積分する（Ｓ１１３）ことで、グローバル座標系における各装置の速度が計算される。次に、グローバル座標系における各装置の速度を積分する（Ｓ１１４）ことで、各装置の移動距離が計算される。ここで、グローバル座標系における移動距離を細分点ごとに合成していくことにより、初期位置を起点とした相対的な位置情報が得られる。初期位置が既知であれば、上記の情報により各装置の絶対的な位置情報（即ち、グローバル座標系における三次元座標）を計算することができる。上記のようにして、慣性航法に基づく位置算出処理により、各装置の姿勢情報と位置情報が出力される。
【０１１１】
図１９に示した慣性航法に基づく位置算出処理は、比較的処理負荷が小さく高速に実行され得る。
【０１１２】
ここで、慣性航法では、姿勢情報を得るために角速度に対して施される積分はステップＳ１１１の１回のみであり、また、ＡＨＲＳなどの周知技術を組み合わせることで、姿勢情報を高精度に取得することが可能であった。一方、位置情報を得るためにはステップＳ１１３とステップＳ１１４の２回の積分が加速度に対して施されるため、加速度センサにより取得される加速度に誤差が含まれる場合には、出力される位置情報に誤差が蓄積され得る。
【０１１３】
図２０は、慣性航法に基づく位置算出処理において発生し得る位置誤差の時間変化イメージを示す模式図である。図２０に示すように、慣性航法により位置情報を算出し始めてから短い時間の間であれば、位置誤差は小さく、位置情報を高精度に算出可能である。しかし、慣性航法により算出される位置情報に含まれる誤差は図２０に示すように時間に応じて大きくなり得るため、長時間継続して実行された場合に、非常に大きな誤差が位置情報に含まれてしまう恐れがある。
【０１１４】
そこで、本実施形態では、運動モデル（Dynamics  Model）に基づいて、回帰による装着部位の位置算出を行う。図２１は、運動モデルに基づく位置算出処理の概略を示す模式図である。
【０１１５】
図２１に示すステップＳ１２１〜Ｓ１２２の処理は、図１９を参照して説明したステップＳ１１１〜Ｓ１１２の処理と同様であるためここでの説明は省略する。図２１に示すように運動モデルに基づく位置算出処理では、加速度の積分を行うことなく、各装置の位置情報を回帰により推定する（Ｓ１２３）。ステップＳ１２３の回帰推定処理では、グローバル座標系における各装置の姿勢と加速度を、事前に用意された運動モデルに当てはめる回帰により、位置情報が推定される。ここで、運動モデルは、例えば事前に運動制約情報（例えば過去に取得されたポーズや一連の動きにおける各部位の位置と姿勢のサンプルを複数含む情報）を学習することで生成することが可能である。なお、ステップＳ１２３の回帰推定処理には、多様な回帰分析手法を用いることが可能であり、例えばＤＮＮ（deep  neural  network）やRandom  Forest等の手法が単独で、あるいは組み合わせて用いられてもよい。
【０１１６】
ここで、図２１に示される処理では、加速度が積分されないため、図１９、図２０を参照して説明した慣性航法の場合のように位置誤差が時間に応じて大きくなり難い。図２２は、運動モデルに基づく位置算出処理において発生し得る位置誤差の時間変化イメージを示す模式図である。図２２に示すように、運動モデルに基づく位置算出処理においても位置誤差は発生しているが、時間に応じて大きくならないため、長時間継続して実行された場合であっても、大きな誤差が発生し難い。
【０１１７】
したがって、図２１に示した運動モデルに基づく位置算出処理により、より高精度に位置情報を算出可能であると考えられる。ただし、運動モデルに基づく位置算出処理では、回帰による統計的な算出が行われるため、入力の変化が連続的な場合であっても出力（算出結果）の変化が非連続的になりやすい。その結果、例えば最終的に得られるスケルトン情報を可視化した際に違和感を与えやすくなる恐れがある。また、図２１に示した運動モデルに基づく位置算出処理は、図１９に示した慣性航法に基づく位置算出処理と比較すると処理負荷が大きく、慣性航法に基づく位置算出処理よりも高速な実行は困難である。
【０１１８】
上述したように、慣性航法に基づく位置算出処理と運動モデルに基づく位置算出処理には、各々の特長がある。そこで、本実施形態では、慣性航法に基づく位置算出処理と運動モデルに基づく位置算出処理の両方を組み合わせて、算出される位置情報を補正することで、より高精度に位置情報を算出する。なお、以下では、慣性航法に基づく位置算出処理を第１の処理、運動モデルに基づく位置算出処理を第２の処理と称する場合がある。
【０１１９】
図２３は、本開示に係るＨＭＤ１００の算出部１４２による位置算出処理の概略を示す模式図である。なお、図２３に示したのは概略であり、算出部１４２による位置算出処理は図２３に示されていない処理も含んでもよい。
【０１２０】
図２３に示すように、算出部１４２による位置算出処理は、慣性航法に基づく第１の処理（Ｓ１１１〜Ｓ１１４）と運動モデルに基づく第２の処理（Ｓ１２１〜Ｓ１２３）に加え、補正処理（Ｓ１３０）をも含む。ステップＳ１３０の補正処理では、第１の処理の出力（以下、第１の出力とも称する）、及び第２の処理の出力（以下、第２の出力とも称する）を参照して、補正が行われる。なお、第１の出力は装着部分の姿勢情報と位置情報を含み、第２の出力は位置情報を含む。そして、ステップＳ１３０では、第１の出力に含まれる位置情報を第１の出力に含まれる姿勢情報と第２の出力に含まれる位置情報に基づいて補正する。なお、ステップＳ１３０において、第１の出力に含まれる姿勢情報については位置情報の補正に用いられると共に、そのまま出力されてもよい。また、ステップＳ１３０の補正処理は、例えばカルマンフィルタにより実現され得る。
【０１２１】
また、上述したように、第１の処理は、第２の処理よりも高速に実行され得る。したがって、補正処理（Ｓ１３０）は、第２の出力が得られたタイミングで実行され、第２の出力が得られず第１の出力のみが得られた場合には、第１の出力が本実施形態にかかる位置算出処理の出力としてそのまま出力されてもよい。
【０１２２】
図２４は、本実施形態にかかる位置算出処理において発生し得る位置誤差の時間変化イメージを示す模式図である。図２４に示す例では、時刻ｔ１１において第２の出力が得られ、第２の出力に基づく補正が行われるものとする。図２４に示すように、本実施形態にかかる位置算出処理では、処理の開始から、時刻ｔ１１までの間は時間に応じて位置誤差が大きくなるが、時刻ｔ１１において第２の出力に基づく補正が行われた結果、位置誤差が抑制される。
【０１２３】
このように、算出部１４２による位置算出処理によれば、補正が行われる度に位置誤差が抑制されるため、誤差が時間に応じて大きくなりにくく、長時間継続して実行された場合であっても、大きな誤差が発生し難い。また、算出部１４２による位置算出処理では、第２の出力が得られない場合には第１の出力がそのまま出力されるため、運動モデルに基づく第２の処理のみにより位置算出を行う場合と比べて、高頻度に位置情報を算出することが可能となる。
【０１２４】
このように、ＨＭＤ１００は、慣性航法による位置算出の際に発生するドリフト誤差を回帰モデルにより補正することによって、より少ないコントローラ２００によって高精度の位置情報および姿勢情報の算出を実現することができる。なお、算出部１４２による位置算出処理は、上記で説明した方法（慣性航法および回帰モデルを用いる方法）に限定されない。また、ＩＭＵ（ＩＭＵ１１０およびＩＭＵ２１０）の精度が向上した場合、慣性航法による位置算出の際に発生するドリフト誤差が小さくなるため回帰モデルを用いて補正を行う必要がなくなる場合がある。
【０１２５】
＜５．ハードウェア構成例＞
上記では、ＨＭＤ１００およびコントローラ２００の各装着部分の位置情報の算出方法の具体例について説明した。最後に、図２５を参照して、上記で説明してきた各実施形態に係るＨＭＤ１００またはコントローラ２００のハードウェア構成例について説明する。図２５は、各実施形態に係るＨＭＤ１００またはコントローラ２００を具現する情報処理装置のハードウェア構成例を示すブロック図である。各実施形態に係るＨＭＤ１００またはコントローラ２００による情報処理は、ソフトウェアと、以下に説明するハードウェアとの協働により実現される。
【０１２６】
図２５に示すように、情報処理装置９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３及びホストバス９０４ａを備える。また、情報処理装置９００は、ブリッジ９０４、外部バス９０４ｂ、インタフェース９０５、入力装置９０６、出力装置９０７、ストレージ装置９０８、ドライブ９０９、接続ポート９１１、通信装置９１３、及びセンサ９１５を備える。情報処理装置９００は、ＣＰＵ９０１に代えて、又はこれとともに、ＤＳＰ若しくはＡＳＩＣなどの処理回路を有してもよい。
【０１２７】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置９００内の動作全般を制御する。また、ＣＰＵ９０１は、マイクロプロセッサであってもよい。ＲＯＭ９０２は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０３は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。ＣＰＵ９０１は、例えば、制御部１４０または制御部２２０を具現し得る。
【０１２８】
ＣＰＵ９０１、ＲＯＭ９０２及びＲＡＭ９０３は、ＣＰＵバスなどを含むホストバス９０４ａにより相互に接続されている。ホストバス９０４ａは、ブリッジ９０４を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９０４ｂに接続されている。なお、必ずしもホストバス９０４ａ、ブリッジ９０４および外部バス９０４ｂを分離構成する必要はなく、１つのバスにこれらの機能を実装してもよい。
【０１２９】
入力装置９０６は、例えば、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチ及びレバー等、ユーザによって情報が入力される装置によって実現される。また、入力装置９０６は、例えば、赤外線やその他の電波を利用したリモートコントロール装置であってもよいし、情報処理装置９００の操作に対応した携帯電話やＰＤＡ等の外部接続機器であってもよい。さらに、入力装置９０６は、例えば、上記の入力手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路などを含んでいてもよい。情報処理装置９００のユーザは、この入力装置９０６を操作することにより、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりすることができる。入力装置９０６は、例えば、入力部１６０を具現し得る。
【０１３０】
出力装置９０７は、取得した情報をユーザに対して視覚的又は聴覚的に通知することが可能な装置で形成される。このような装置として、ＣＲＴディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ＥＬディスプレイ装置及びランプ等の表示装置や、スピーカ及びヘッドホン等の音声出力装置や、プリンタ装置等がある。出力装置９０７は、例えば、情報処理装置９００が行った各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理装置９００が行った各種処理により得られた結果を、テキスト、イメージ、表、グラフ等、様々な形式で視覚的に表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して聴覚的に出力する。出力装置９０７は、例えば、表示部１５０を具現し得る。
【０１３１】
ストレージ装置９０８は、情報処理装置９００の記憶部の一例として形成されたデータ格納用の装置である。ストレージ装置９０８は、例えば、ＨＤＤ等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス又は光磁気記憶デバイス等により実現される。ストレージ装置９０８は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置などを含んでもよい。このストレージ装置９０８は、ＣＰＵ９０１が実行するプログラムや各種データ及び外部から取得した各種のデータ等を格納する。ストレージ装置９０８は、例えば、記憶部１７０を具現し得る。
【０１３２】
ドライブ９０９は、記憶媒体用リーダライタであり、情報処理装置９００に内蔵、あるいは外付けされる。ドライブ９０９は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記憶媒体に記録されている情報を読み出して、ＲＡＭ９０３に出力する。また、ドライブ９０９は、リムーバブル記憶媒体に情報を書き込むこともできる。
【０１３３】
接続ポート９１１は、外部機器と接続されるインタフェースであって、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などによりデータ伝送可能な外部機器との接続口である。
【０１３４】
通信装置９１３は、例えば、ネットワーク９２０に接続するための通信デバイス等で形成された通信インタフェースである。通信装置９１３は、例えば、有線若しくは無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード等である。また、通信装置９１３は、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ又は各種通信用のモデム等であってもよい。この通信装置９１３は、例えば、インターネットや他の通信機器との間で、例えばＴＣＰ／ＩＰ等の所定のプロトコルに則して信号等を送受信することができる。通信装置９１３は、例えば、通信部１３０または通信部２３０を具現し得る。
【０１３５】
センサ９１５は、例えば、加速度センサ、ジャイロセンサ、地磁気センサ、光センサ、音センサ、測距センサ、力センサ等の各種のセンサである。センサ９１５は、情報処理装置９００の姿勢、移動速度等、情報処理装置９００自身の状態に関する情報や、情報処理装置９００の周辺の明るさや騒音等、情報処理装置９００の周辺環境に関する情報を取得する。また、センサ９１５は、ＧＰＳ信号を受信して装置の緯度、経度及び高度を測定するＧＰＳセンサを含んでもよい。センサ９１５は、例えば、ＩＭＵ１１０、ＩＭＵ２１０、イメージセンサ１２０、磁気発生部１８０、または磁気センサ２４０を具現し得る。
【０１３６】
なお、ネットワーク９２０は、ネットワーク９２０に接続されている装置から送信される情報の有線、または無線の伝送路である。例えば、ネットワーク９２０は、インターネット、電話回線網、衛星通信網などの公衆回線網や、Ｅｔｈｅｒｎｅｔ（登録商標）を含む各種のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを含んでもよい。また、ネットワーク９２０は、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの専用回線網を含んでもよい。
【０１３７】
以上、本開示の各実施形態に係る情報処理装置９００の機能を実現可能なハードウェア構成例を示した。上記の各構成要素は、汎用的な部材を用いて実現されていてもよいし、各構成要素の機能に特化したハードウェアにより実現されていてもよい。従って、本開示の実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
【０１３８】
なお、上記のような本開示の各実施形態に係る情報処理装置９００の各機能を実現するためのコンピュータプログラムを作製し、ＰＣ等に実装することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ等である。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信されてもよい。
【０１３９】
＜６．まとめ＞
以上で説明してきたように、本開示に係る情報処理システムは、操作子の位置情報の算出に用いられる第１のセンサ情報を出力する第１のセンサと、第１のセンサ情報よりも高精度な位置情報の算出が可能である一方で、その算出に大きな電力を要する第２の位置情報を出力する第２のセンサと、を備える。そして、本開示に係るＨＭＤ１００は、第１のセンサ情報を用いて算出される操作子の位置情報が予め設定された設定範囲に含まれる場合、第２のセンサ情報を用いて操作子の位置情報を算出する。これによって、ＨＭＤ１００は、設定範囲以外においては第１のセンサを用いて位置情報および姿勢情報を算出しつつ、コンテンツにおいて重要な範囲（設定範囲）においては第２のセンサを用いてより高精度に位置情報および姿勢情報を算出することができる。また、ＨＭＤ１００は、このように第２のセンサを間欠的に用いることで消費電力を低減させることができる。
【０１４０】
本開示に係る第１の実施形態では、第１のセンサとしてＩＭＵ２１０が用いられ、第２のセンサとしてイメージセンサ１２０が用いられ、第２の実施形態では、第１のセンサとしてＩＭＵ２１０が用いられ、第２のセンサとして磁気センサ２４０が用いられ、第３の実施形態では、第１のセンサとして磁気センサ２４０が用いられ、第２のセンサとしてイメージセンサ１２０が用いられる場合について説明してきた。しかし、第１のセンサおよび第２のセンサとして用いられるセンサの種類や組合せはこれらに限定されない点に留意されたい。
【０１４１】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１４２】
例えば、上記で説明した各フローチャートにおける各ステップは、必ずしも記載された順序に沿って時系列に処理される必要はない。すなわち、フローチャートにおける各ステップは、記載された順序と異なる順序で処理されても、並列的に処理されてもよい。
【０１４３】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１４４】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得する取得部と、
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出する算出部と、を備える、
情報処理装置。
（２）
前記第１のセンサ情報を用いて算出される位置情報は、前記第２のセンサ情報を用いて算出される位置情報の座標系によって規定される、
前記（１）に記載の情報処理装置。
（３）
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、前記設定範囲に含まれる場合、
前記算出部は、前記第１のセンサ情報および前記第２のセンサ情報を用いて前記操作子の位置情報を算出する、
前記（１）または（２）に記載の情報処理装置。
（４）
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第２のセンサ情報の取得が開始され、
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第２のセンサ情報の取得が停止される、
前記（３）に記載の情報処理装置。
（５）
前記第１のセンサ情報を用いる前記位置情報の算出処理にて前記第１のセンサ情報が取得される期間よりも、前記第２のセンサ情報を用いる前記位置情報の算出処理にて前記第２のセンサ情報が取得される期間の方が短い、
前記（３）に記載の情報処理装置。
（６）
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲内に入ったことに応じて、前記第２のセンサ情報の取得頻度が増やされ、
前記第１のセンサ情報を用いて算出される前記位置情報が前記設定範囲外に出たことに応じて、前記第２のセンサ情報の取得頻度が減らされる、
前記（５）に記載の情報処理装置。
（７）
前記第２のセンサ情報を用いて前記操作子の位置情報を算出する処理は、前記第１のセンサ情報を用いて前記操作子の位置情報を算出する処理に比べて、より大きな電力を消費する、
前記（１）から（６）のいずれか１項に記載の情報処理装置。
（８）
前記第１のセンサおよび前記第２のセンサのうちの少なくとも前記第１のセンサは、前記第２のセンサと共に一の装置に備えられる所定の機器の対として用いられる、
前記（１）から（７）のいずれか１項に記載の情報処理装置。
（９）
前記第１のセンサがＩＭＵであり前記第２のセンサがイメージセンサであるか、前記第１のセンサがＩＭＵであり前記第２のセンサが磁気センサであるか、前記第１のセンサが磁気センサであり前記第２のセンサがイメージセンサである、
前記（７）または（８）に記載の情報処理装置。
（１０）
前記第１のセンサおよび前記第２のセンサは、ユーザの体の一部、または前記一部に接触する物体に装着される、
前記（９）に記載の情報処理装置。
（１１）
前記操作子は、前記ユーザの体または前記物体における、前記第１のセンサもしくは前記第２のセンサの装着部分、または前記装着部分以外の部分である、
前記（１０）に記載の情報処理装置。
（１２）
前記設定範囲は、前記ユーザの視界に対応する、
前記（１０）または（１１）に記載の情報処理装置。
（１３）
表示部は、前記ユーザの視界に仮想オブジェクトを表示し、
前記操作子の位置情報に基づいて前記表示部による前記仮想オブジェクトの表示を制御する表示制御部を更に備える、
前記（１２）に記載の情報処理装置。
（１４）
前記表示制御部は、前記操作子の位置情報に基づいて前記表示部を制御することで、前記仮想オブジェクトを前記操作子に重畳して表示させる、
前記（１３）に記載の情報処理装置。
（１５）
第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得することと、
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出することと、を有する、
コンピュータにより実行される情報処理方法。
（１６）
第１のセンサによって出力され、操作子の位置情報の算出に用いられる第１のセンサ情報、および第２のセンサによって出力され、前記操作子の位置情報の算出に用いられる第２のセンサ情報を取得することと、
前記第１のセンサ情報を用いて算出される前記操作子の位置情報が、予め設定された設定範囲に含まれる場合、前記第２のセンサ情報を用いて前記操作子の位置情報を算出することと、
をコンピュータに実現させるためのプログラム。
【符号の説明】
【０１４５】
１００    ＨＭＤ
１１０    ＩＭＵ
１２０    イメージセンサ
１３０    通信部
１４０    制御部
１４１    取得部
１４２    算出部
１４３    表示制御部
１５０    表示部
１６０    入力部
１７０    記憶部
１８０    磁気発生部
２００    コントローラ
２１０    ＩＭＵ
２２０    制御部
２３０    通信部
２４０    磁気センサ
【図１】
2020110659.tif 000003
【図２】
2020110659.tif 000004
【図３】
2020110659.tif 000005
【図４】
2020110659.tif 000006
【図５】
2020110659.tif 000007
【図６】
2020110659.tif 000008
【図７】
2020110659.tif 000009
【図８】
2020110659.tif 000010
【図９】
2020110659.tif 000011
【図１０】
2020110659.tif 000012
【図１１】
2020110659.tif 000013
【図１２】
2020110659.tif 000014
【図１３】
2020110659.tif 000015
【図１４】
2020110659.tif 000016
【図１５】
2020110659.tif 000017
【図１６】
2020110659.tif 000018
【図１７】
2020110659.tif 000019
【図１８】
2020110659.tif 000020
【図１９】
2020110659.tif 000021
【図２０】
2020110659.tif 000022
【図２１】
2020110659.tif 000023
【図２２】
2020110659.tif 000024
【図２３】
2020110659.tif 000025
【図２４】
2020110659.tif 000026
【図２５】
2020110659.tif 000027
【国際調査報告】
2020110659.tif 000028
2020110659.tif 000029
2020110659.tif 000030