(57)【要約】【課題】情報処理装置の周囲の磁場が不安定である環境下の場合においても、当該情報処理装置の姿勢を適正に推測することが可能な仕組みを提供する。【解決手段】ジャイロセンサー１５１のセンサーデータを用いて情報処理装置１００の姿勢を計算する第１の姿勢計算部２２１と、地磁気センサー１５２のセンサーデータを用いて情報処理装置１００の姿勢を計算する第２の姿勢計算部２２２と、第１の姿勢計算部２２１により得られた第１の計算結果と第２の姿勢計算部２２２により得られた第２の計算結果との比較の結果に応じて、情報処理装置１００の周囲の磁場が変化したか否かを検知する磁場変化検知部２３０と、磁場変化検知部２３０において磁場が変化したことを検知した場合、第１の計算結果と第２の計算結果とを用いて情報処理装置１００の姿勢を推測する姿勢推測部２４０を備える。【選択図】図２
2018044924.tif 000002
【特許請求の範囲】
【請求項１】
情報の処理を行う情報処理装置であって、
ジャイロセンサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第１の姿勢計算手段と、
地磁気センサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第２の姿勢計算手段と、
前記第１の姿勢計算手段により得られた前記姿勢の第１の計算結果と前記第２の姿勢計算手段により得られた前記姿勢の第２の計算結果との比較の結果に応じて、前記情報処理装置の周囲の磁場が変化したか否かを検知する検知手段と、
前記検知手段において前記磁場が変化したことを検知した場合、前記第１の計算結果と前記第２の計算結果とを用いて前記情報処理装置の姿勢を推測する推測手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記検知手段は、前記第１の計算結果と前記第２の計算結果との差が所定値より大きい場合に、前記磁場が変化したことを検知することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記推測手段は、前記地磁気センサーを用いたオンラインキャリブレーションの誤差区間である第１の誤差区間と、前記ジャイロセンサーの誤差区間である第２の誤差区間とを求め、前記第１の計算結果および前記第２の計算結果と前記第１の誤差区間および前記第２の誤差区間とを用いて、前記情報処理装置の姿勢を推測することを特徴する請求項１または２に記載の情報処理装置。
【請求項４】
前記推測手段は、前記地磁気センサーのセンサーデータにおける分布、形状および楕円球の類似度によって、前記第１の誤差区間を求めることを特徴する請求項３に記載の情報処理装置。
【請求項５】
前記検知手段において前記磁場が変化しないことを検知した場合、前記ジャイロセンサーの誤差を計算する誤差計算手段と、
前記検知手段において前記磁場が変化したことを検知した場合、前記誤差計算手段により得られた誤差および前記第１の計算結果に基づいて、前記推測手段により得られた前記情報処理装置の姿勢の推測結果を補正する補正手段と
を更に有することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
情報の処理を行う情報処理装置の駆動方法であって、
ジャイロセンサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第１の姿勢計算ステップと、
地磁気センサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第２の姿勢計算ステップと、
前記第１の姿勢計算ステップにより得られた前記姿勢の第１の計算結果と前記第２の姿勢計算ステップにより得られた前記姿勢の第２の計算結果との比較の結果に応じて、前記情報処理装置の周囲の磁場が変化したか否かを検知する検知ステップと、
前記検知ステップにおいて前記磁場が変化したことを検知した場合、前記第１の計算結果と前記第２の計算結果とを用いて前記情報処理装置の姿勢を推測する推測ステップと
を有することを特徴とする情報処理装置の駆動方法。
【請求項７】
情報の処理を行う情報処理装置の駆動方法をコンピュータに実行させるためのプログラムであって、
ジャイロセンサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第１の姿勢計算ステップと、
地磁気センサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第２の姿勢計算ステップと、
前記第１の姿勢計算ステップにより得られた前記姿勢の第１の計算結果と前記第２の姿勢計算ステップにより得られた前記姿勢の第２の計算結果との比較の結果に応じて、前記情報処理装置の周囲の磁場が変化したか否かを検知する検知ステップと、
前記検知ステップにおいて前記磁場が変化したことを検知した場合、前記第１の計算結果と前記第２の計算結果とを用いて前記情報処理装置の姿勢を推測する推測ステップと
をコンピュータに実行させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の処理を行う情報処理装置の姿勢を推測する技術に関するものである。
【背景技術】
【０００２】
近年、各種のセンサーを用いて情報処理装置の姿勢を推測する技術の研究がなされている。例えば、特許文献１には、地磁気センサーや、ジャイロセンサー、加速度センサーを用いて情報処理装置の姿勢を決定する技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９１４６２８５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、情報処理装置の周囲の磁場が不安定である環境下の場合、当該情報処理装置の姿勢を適正に推測することが困難であるという問題があった。
【０００５】
本発明は、このような問題点に鑑みてなされたものであり、情報処理装置の周囲の磁場が不安定である環境下の場合においても、当該情報処理装置の姿勢を適正に推測することが可能な仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、情報の処理を行う情報処理装置であって、ジャイロセンサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第１の姿勢計算手段と、地磁気センサーのセンサーデータを用いて前記情報処理装置の姿勢を計算する第２の姿勢計算手段と、前記第１の姿勢計算手段により得られた前記姿勢の第１の計算結果と前記第２の姿勢計算手段により得られた前記姿勢の第２の計算結果との比較の結果に応じて、前記情報処理装置の周囲の磁場が変化したか否かを検知する検知手段と、前記検知手段において前記磁場が変化したことを検知した場合、前記第１の計算結果と前記第２の計算結果とを用いて前記情報処理装置の姿勢を推測する推測手段とを有する。
また、本発明は、上述した情報処理装置の駆動方法、当該駆動方法をコンピュータに実行させるためのプログラム、及び、当該プログラムを記憶したコンピュータ読み取り可能な記憶媒体を含む。
【発明の効果】
【０００７】
本発明によれば、情報処理装置の周囲の磁場が不安定である環境下の場合においても、当該情報処理装置の姿勢を適正に推測することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。
【図２】本発明の第１の実施形態に係る情報処理装置の機能構成の一例を示す図である。
【図３】本発明の第１の実施形態に係る情報処理装置の駆動方法における処理手順の一例を示すフローチャートである。
【図４】図３のステップＳ３０２における磁場変化検知処理の詳細な処理手順の一例を示すフローチャートである。
【図５】図４に示す磁場変化検知処理の処理イメージの一例を示す図である。
【図６】図３のステップＳ３０５における姿勢推測処理の詳細な処理手順の一例を示すフローチャートである。
【図７】本発明の第１の実施形態に係る情報処理装置の処理によって得られる効果を説明するための図である。
【図８】本発明の第２の実施形態に係る情報処理装置の駆動方法における処理手順の一例を示すフローチャートである。
【図９】図８のステップＳ８０１における誤差率計算処理の詳細な処理手順の一例を示すフローチャートである。
【図１０】図８のステップＳ８０３における姿勢補正処理の詳細な処理手順の一例を示すフローチャートである。
【図１１】図８のステップＳ８０１における誤差率計算処理を説明するための図である。
【発明を実施するための形態】
【０００９】
以下に、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。
【００１０】
（第１の実施形態）
まず、本発明の第１の実施形態について説明する。
【００１１】
図１は、本発明の第１の実施形態に係る情報処理装置１００のハードウェア構成の一例を示す図である。この情報処理装置１００は、各種の情報を処理する装置である。
【００１２】
情報処理装置１００は、図１に示すように、ＣＰＵ１１０、ＲＡＭ１２０、ＲＯＭ１３０、入力デバイス１４０、センサーデバイス１５０、出力デバイス１６０、ドライバ１７０、及び、システムバス１８０の各ハードウェア構成を有して構成されている。
【００１３】
ＣＰＵ１１０は、情報処理装置１００の動作を統括的に制御するとともに、各種の処理を行う。
【００１４】
ＲＡＭ１２０は、ＲＯＭ１３０やＣＰＵ１１０から供給されるプログラムやデータ等を一時記憶する。
【００１５】
ＲＯＭ１３０は、変更を必要としないプログラムや各種のデータ等を格納している。なお、本実施形態においては、ＣＰＵ１１０が本実施形態に係る処理を実行するためのプログラムは、このＲＯＭ１３０に記憶されているものとする。
【００１６】
入力デバイス（Ｉｎｐｕｔ  ｄｅｖｉｃｅ）１４０は、例えば、ユーザーにより入力された入力情報や、通信回線を介して外部装置から入力された入力情報を、ＣＰＵ１１０に入力する。
【００１７】
センサーデバイス１５０は、情報処理装置１００の姿勢を計測するための各種のセンサーを具備して構成されている。具体的に、本実施形態においては、センサーデバイス１５０は、図１に示すように、ジャイロセンサー１５１、地磁気センサー１５２、及び、加速度センサー１５３を具備して構成されている。
【００１８】
出力デバイス（Ｏｕｔｐｕｔ  ｄｅｖｉｃｅ）１６０は、ＣＰＵ１１０の処理等によって得られた各種のデータや各種の情報を出力する。例えば、この出力デバイス１６０としては、表示デバイスを適用することができる。
【００１９】
システムバス（Ｓｙｓｔｅｍ  Ｂｕｓ）１８０は、ＣＰＵ１１０、ＲＡＭ１２０、ＲＯＭ１３０、入力デバイス１４０、センサーデバイス１５０、出力デバイス１６０及びドライバ１７０を相互に通信可能に接続する。
【００２０】
図２は、本発明の第１の実施形態に係る情報処理装置１００の機能構成の一例を示す図である。ここで、図２には、図１に示すセンサーデバイス１５０も破線で図示している。
【００２１】
情報処理装置１００は、図２に示すように、センサーデータ取得部２１０、姿勢計算部２２０、磁場変化検知部２３０、姿勢推測部２４０、センサー誤差計算部２５０、及び、姿勢補正部２６０の各機能構成を有して構成されている。
【００２２】
センサーデータ取得部２１０は、センサーデバイス１５０からセンサーデータを取得する処理を行う。具体的に、センサーデータ取得部２１０は、ジャイロセンサー１５１のセンサーデータ、地磁気センサー１５２のセンサーデータ、及び、加速度センサー１５３のセンサーデータを取得する。
【００２３】
姿勢計算部２２０は、センサーデータ取得部２１０で取得されたセンサーデータを用いて情報処理装置１００の姿勢を計算する処理を行う。本実施形態においては、姿勢計算部２２０は、ジャイロセンサー１５１のセンサーデータを用いて情報処理装置１００の姿勢を計算する第１の姿勢計算部２２１と、地磁気センサー１５２のセンサーデータを用いて情報処理装置１００の姿勢を計算する第２の姿勢計算部２２２を含み構成されている。
【００２４】
磁場変化検知部２３０は、情報処理装置１００の周囲の磁場が不安定である環境下か否かを判定すべく、情報処理装置１００の周囲の磁場が変化したか否かを検知する処理を行う。本実施形態においては、磁場変化検知部２３０は、第１の姿勢計算部２２１により得られた情報処理装置１００の姿勢の計算結果（第１の計算結果）と第２の姿勢計算部２２２により得られた情報処理装置１００の姿勢の計算結果（第２の計算結果）との比較の結果に応じて、情報処理装置１００の周囲の磁場が変化したか否かを検知する。
【００２５】
姿勢推測部２４０は、磁場変化検知部２３０において磁場が変化したことを検知した場合、姿勢計算部２２０の計算結果に基づいて、情報処理装置１００の姿勢を推測する処理を行う。本実施形態においては、姿勢推測部２４０は、磁場変化検知部２３０において磁場が変化したことを検知した場合、第１の姿勢計算部２２１により得られた第１の計算結果と第２の姿勢計算部２２２により得られた第２の計算結果とを用いて、情報処理装置１００の姿勢を推測する。以下、必要に応じて、この姿勢推測部２４０により推測された情報処理装置１００の姿勢を「デバイスの姿勢」と称することがあるものとする。
【００２６】
センサー誤差計算部２５０は、磁場変化検知部２３０において磁場が変化しないことを検知した場合、センサーデータ取得部２１０で取得したセンサーデータの誤差を計算する。
【００２７】
姿勢補正部２６０は、磁場変化検知部２３０において磁場が変化したことを検知した場合、センサー誤差計算部２５０により得られた誤差に基づいて、姿勢推測部２４０により得られた情報処理装置１００の姿勢（デバイスの姿勢）の推測結果を補正する処理を行う。
【００２８】
ここで、図１に示す情報処理装置１００のハードウェア構成と、図２に示す情報処理装置１００の機能構成との対応関係の一例について、以下に説明する。
例えば、図１に示すＣＰＵ１１０及びＲＯＭ１３０に記憶されているプログラムから、図２に示す各機能構成部２１０〜２６０が構成される。この際、図１に示すＣＰＵ１１０は、例えば、ＲＯＭ１３０に記憶されているプログラムをＲＡＭ１２０に展開して実行することによって、図２に示す各機能構成部２１０〜２６０の機能を実現することができる。また、例えば、図１において、ＣＰＵ１１０を用いたソフトウェア処理の少なくとも一部の処理を代替するハードウェア構成とする場合には、図２に示す各機能構成部の処理に対応させた演算部や回路を構成することができる。
【００２９】
図３は、本発明の第１の実施形態に係る情報処理装置１００の駆動方法における処理手順の一例を示すフローチャートである。本実施形態では、情報処理装置１００が起動されたのに応じて図３のフローチャートの処理が開始され、以降、電源を切る行為が行われるまで周期的に繰り返される。本実施形態では、周期（フレームレート）は、固定されているとする。ただし、情報処理装置１００のバッテリー残量や負荷状況に応じて変動的であってもよい。
【００３０】
まず、ステップＳ３０１において、センサーデータ取得部２１０は、センサーデバイス１５０からセンサーデータを取得する処理を行う。ここでは、センサーデータ取得部２１０は、ジャイロセンサー１５１のセンサーデータ、地磁気センサー１５２のセンサーデータ、及び、加速度センサー１５３のセンサーデータを取得する。
【００３１】
続いて、ステップＳ３０２において、磁場変化検知部２３０は、ステップＳ３０１で取得されたセンサーデータに基づいて、情報処理装置１００の周囲の磁場が変化したか否かを検知する処理を行う。
【００３２】
続いて、ステップＳ３０３において、磁場変化検知部２３０は、ステップＳ３０２の検知処理の結果、情報処理装置１００の周囲の磁場が変化したことを検知したか否かを判断する。
【００３３】
ステップＳ３０３の判断の結果、情報処理装置１００の周囲の磁場が変化しないことを検知した場合には（Ｓ３０３／Ｎｏ）、ステップＳ３０４に進む。
ステップＳ３０４に進むと、姿勢計算部２２０は、ステップＳ３０１で取得されたセンサーデータ（ジャイロセンサー１５１、地磁気センサー１５２及び加速度センサー１５３の各センサーデータ、或いは、磁場が変化しない環境下であるため地磁気センサー１５２のセンサーデータ）を用いて、情報処理装置１００の姿勢を計算する処理を行う。その後、ステップＳ３０１の処理に戻る。
【００３４】
一方、ステップＳ３０３の判断の結果、情報処理装置１００の周囲の磁場が変化したことを検知した場合には（Ｓ３０３／Ｙｅｓ）、ステップＳ３０５に進む。
ステップＳ３０５に進むと、姿勢推測部２４０は、ステップＳ３０１で取得されたセンサーデータに基づいて、情報処理装置１００の姿勢（デバイスの姿勢）を推測する処理を行う。
【００３５】
続いて、ステップＳ３０６において、例えば姿勢推測部２４０は、ステップＳ３０５の処理に基づくオンラインキャリブレーションが終了したか否かを判断する。ここで、オンラインキャリブレーションとは、情報処理装置１００が動きながら、必要な地磁気センサー１５２のセンサーデータ（磁場データ）を収集してから行うキャリブレーションのことである。このオンラインキャリブレーションは、情報処理装置１００の周囲の磁場が不安定である磁場変化（磁場環境変化）の時に行われるものである。
【００３６】
ステップＳ３０６の判断の結果、オンラインキャリブレーションが終了していない場合には（Ｓ３０６／Ｎｏ）、ステップＳ３０１に戻り、次のセンサーデータを取得して、その後の処理を行う。一方、ステップＳ３０６の判断の結果、オンラインキャリブレーションが終了した場合には（Ｓ３０６／Ｙｅｓ）、ステップＳ３０４に戻り、情報処理装置１００の姿勢を計算して、その後、ステップＳ３０１に戻る。
【００３７】
図４は、図３のステップＳ３０２における磁場変化検知処理の詳細な処理手順の一例を示すフローチャートである。
【００３８】
まず、ステップＳ４０１において、例えば姿勢計算部２２０は、図３のステップＳ３０１においてセンサーデータ取得部２１０が取得したセンサーデータを、センサーデータ取得部２１０から取得する。具体的に、ここでは、ジャイロセンサー１５１のセンサーデータと地磁気センサー１５２のセンサーデータを取得するものとする。
【００３９】
続いて、ステップＳ４０２において、例えば磁場変化検知部２３０（或いは姿勢計算部２２０）は、例えば入力デバイス１４０から事前に入力されている等により設定されている、磁場変化検知用の比較区間の長さを取得する。ここで、比較区間の長さとは、例えば４フレームとか、１００ｍｓ等で指定できるものである。ここでは、例えば、比較区間の長さとして、４つのセンサーフレームの時間の長さを取得する。また、以降の処理において、磁場変化があるか否かの判定方法としては、短い比較区間においてジャイロセンサー１５１のセンサーデータに基づく姿勢計算結果と地磁気センサー１５２のセンサーデータに基づく姿勢計算結果とを比較することでなされる。
【００４０】
続いて、ステップＳ４０３において、磁場変化検知部２３０は、第１の姿勢計算部２２１に対して、ステップＳ４０１で取得したジャイロセンサー１５１のセンサーデータを用いた情報処理装置１００の姿勢を計算させる。ここでは、例えば、ジャイロセンサー１５１のセンサーデータを用いて、比較区間の水平角度Ｄ１の計算結果が得られたものとする。
【００４１】
また、ステップＳ４０４において、磁場変化検知部２３０は、第２の姿勢計算部２２２に対して、ステップＳ４０１で取得した地磁気センサー１５２のセンサーデータを用いた情報処理装置１００の姿勢を計算させる。ここでは、例えば、地磁気センサー１５２のセンサーデータを用いて、比較区間の水平角度Ｄ２の計算結果が得られたものとする。
【００４２】
続いて、ステップＳ４０５において、磁場変化検知部２３０は、ステップＳ４０３で得られた情報処理装置１００の姿勢の計算結果（第１の計算結果）とステップＳ４０４で得られた情報処理装置１００の姿勢の計算結果（第２の計算結果）との差を計算する。ここでは、上述した２つの水平角度の差である｜Ｄ１−Ｄ２｜の計算結果が得られたものとする。
【００４３】
続いて、ステップＳ４０６において、磁場変化検知部２３０は、ステップＳ４０５で得られた差が所定値より大きいか否かを判断する。ここでは、例えば、所定値として、水平角度Ｄ１の最大誤差と水平角度Ｄ２の最大誤差の加算値Ｄ３を用いる。ここで、例えば、Ｄ３の値は、ジャイロセンサー１５１と地磁気センサー１５２のノイズ値に基づいて計算することができる。この際、ジャイロセンサー１５１と地磁気センサー１５２のノイズ値は、予めＲＯＭ１３０等に保持させておいてもよいし、また、ユーザーが測定して入力デバイス１４０から入力するようにしてもよい。
【００４４】
ステップＳ４０６の判断の結果、ステップＳ４０５で得られた差が所定値より大きくない場合には（Ｓ４０６／Ｎｏ）、ステップＳ４０７に進む。
ステップＳ４０７に進むと、磁場変化検知部２３０は、情報処理装置１００の周囲の磁場が変化なしと判定し、当該磁場が変化しないことを検知する。具体的に、ステップＳ４０７は、｜Ｄ１−Ｄ２｜≦Ｄ３の場合になされる処理であり、上述した水平角度Ｄ１と水平角度Ｄ２とが実質的に同じであると判定するものである。そして、ステップＳ４０７の処理が終了すると、図４のフローチャートの処理が終了する。
【００４５】
一方、ステップＳ４０６の判断の結果、ステップＳ４０５で得られた差が所定値より大きい場合には（Ｓ４０６／Ｙｅｓ）、ステップＳ４０８に進む。
ステップＳ４０８に進むと、磁場変化検知部２３０は、情報処理装置１００の周囲の磁場が変化ありと判定し、当該磁場が変化したことを検知する。具体的に、ステップＳ４０８は、｜Ｄ１−Ｄ２｜＞Ｄ３の場合になされる処理であり、上述した水平角度Ｄ１と水平角度Ｄ２とが実質的に違うと判定するものである。そして、ステップＳ４０８の処理が終了すると、図４のフローチャートの処理が終了する。
【００４６】
図５は、図４に示す磁場変化検知処理の処理イメージの一例を示す図である。
図５において、角度変更方向５０５は、情報処理装置１００の角度の変更方向を示している。また、基準位置５０１は、情報処理装置１００の基準位置（変化開始の基準とする時点の位置姿勢）を示している。
【００４７】
指標５０２は、基準位置５０１からジャイロセンサー１５１のセンサーデータに基づいて計算された、比較区間のジャイロセンサー１５１の姿勢計算結果（例えば、上述した水平角度Ｄ１）を示している。指標５０３は、基準位置５０１から地磁気センサー１５２のセンサーデータ（磁場データ）に基づいて計算された、比較区間の地磁気センサー１５２の姿勢計算結果（例えば、上述した水平角度Ｄ２）を示している。指標５０４は、指標５０２に示すジャイロセンサー１５１の姿勢計算結果（例えば、上述した水平角度Ｄ１）と指標５０３に示す地磁気センサー１５２の姿勢計算結果（例えば、上述した水平角度Ｄ２）との差（例えば、上述した｜Ｄ１−Ｄ２｜）を示している。
【００４８】
なお、比較区間が短くてジャイロセンサー１５１の誤差は少ないが、センサー自体はノイズがあるので、水平角度Ｄ１の最大誤差と水平角度Ｄ２の最大誤差の加算値Ｄ３は、ジャイロセンサー１５１と地磁気センサー１５２のノイズ値に基づいて計算する。
【００４９】
情報処理装置の周囲の磁場が変化したことを検知すると、一般的な既存技術では、ジャイロセンサー１５１だけを使い、上述したオンラインキャリブレーション（情報処理装置が動きながら、必要な地磁気センサー１５２のセンサーデータ（磁場データ）を収集してから行うキャリブレーション）が始まる。この際、情報処理装置が様々な姿勢になったときのセンサーデータが必要になる。しかしながら、十分なセンサーデータを収集するように情報処理装置を動かすことはユーザーにとって難しく、また、手間もかかる。そのため、十分なセンサーデータを収集することに時間がかかり、結果として、オンラインキャリブレーションに多大な時間かかる可能性がある。オンラインキャリブレーション期間で、ジャイロセンサー１５１の誤差が貯まって大きくなる。
【００５０】
また、他の一般的な既存技術では、磁場の変化があるとき、もう１回手動的にキャリブレーションを行う。このもう１回のキャリブレーションは、手間がかかり、使用状況によってはすぐにキャリブレーションを行うことが困難な場合がある。このような場合、オンラインキャリブレーションの期間で、どのように高い計算精度を確保するのかが課題である。この際、オンラインキャリブレーションの処理中にどのように誤差を低減するかについて、以下の方法がある。
具体的には、情報処理装置の周囲の磁場が変化したことを検知してから、全部のキャリブレーションデータを収集しなくても、収集したデータに基づいて、ある程度のキャリブレーションの処理を行って、その時点のキャリブレーションの誤差区間を計算する。そして、ユーザーがジャイロセンサー１５１を動かしながら、当時点の誤差区間を計算する。そして、その時点のキャリブレーションの誤差区間とその時点のジャイロセンサー１５１の誤差区間に基づいて、情報処理装置の姿勢を計算する対応である。
【００５１】
図６は、図３のステップＳ３０５における姿勢推測処理の詳細な処理手順の一例を示すフローチャートである。
【００５２】
まず、ステップＳ６０１において、姿勢推測部２４０は、図３のステップＳ３０２における情報処理装置１００の周囲の磁場変化（磁場環境変化）の検知結果に基づいて、当該磁場変化（磁場環境変化）が安定になるか否かを判断する。
【００５３】
ステップＳ６０１の判断の結果、磁場変化（磁場環境変化）が安定にならない場合には（Ｓ６０１／Ｎｏ）、ステップＳ６０２に進む。
ステップＳ６０２に進むと、例えば姿勢推測部２４０は、上述したオンラインキャリブレーションを開始する処理を行う。
【００５４】
続いて、ステップＳ６０３において、姿勢推測部２４０は、第１の姿勢計算部２２１に対して、ジャイロセンサー１５１のセンサーデータを用いた情報処理装置１００の姿勢を計算させる。そして、ステップＳ６０３の処理が終了すると、図６のフローチャートの処理が終了する。
【００５５】
一方、ステップＳ６０１の判断の結果、磁場変化（磁場環境変化）が安定になる場合には（Ｓ６０１／Ｙｅｓ）、ステップＳ６０４に進む。
ステップＳ６０４に進むと、姿勢推測部２４０は、オンラインキャリブレーションの処理中であるか否かを判断する。この判断の結果、オンラインキャリブレーションの処理中でない場合（Ｓ６０４／Ｎｏ）、即ちオンラインキャリブレーションが終了した場合には、情報処理装置１００の姿勢を正しく計算できるため、図６のフローチャートの処理を終了する。
【００５６】
また、ステップＳ６０４の判断の結果、オンラインキャリブレーションの処理中である場合には（Ｓ６０４／Ｙｅｓ）、ステップＳ６０５に進む。
ステップＳ６０５に進むと、姿勢推測部２４０は、第２の姿勢計算部２２２に対して、オンラインキャリブレーションの結果に基づき、地磁気センサー１５２のセンサーデータを用いた情報処理装置１００の姿勢を計算させる。ここでは、例えば、情報処理装置１００の姿勢として、情報処理装置１００の角度Ｄ２の計算結果が得られたものとする。
【００５７】
続いて、ステップＳ６０６において、姿勢推測部２４０は、オンラインキャリブレーションの結果に基づき、ステップＳ６０５における計算結果の誤差区間（第１の誤差区間）を計算により求める。例えば、姿勢推測部２４０は、本ステップのオンラインキャリブレーションの誤差区間の計算では、収集した地磁気センサー１５２のセンサーデータ（磁場データ）における分布、形状および楕円球の類似度によって、当該誤差区間を計算する。
【００５８】
続いて、ステップＳ６０７において、姿勢推測部２４０は、ジャイロセンサー１５１のセンサーデータに基づいて、ジャイロセンサー１５１の誤差区間（第２の誤差区間）を計算により求める。例えば、ここでの計算では、まず、ジャイロセンサー１５１の誤差比率を事前に分っているＰとする。そして、姿勢推測部２４０は、ジャイロセンサー１５１のセンサーデータに基づきジャイロセンサー１５１の回る角度Ｄ４を取得する。そして、この場合、姿勢推測部２４０は、例えば、ジャイロセンサー１５１の誤差区間［０，Ａ］の計算結果として、Ａ＝Ｄ４＊Ｐを得る。
【００５９】
続いて、ステップＳ６０８において、姿勢推測部２４０は、第１の姿勢計算部２２１に対して、ジャイロセンサー１５１のセンサーデータを用いた情報処理装置１００の姿勢を計算させる。ここでは、例えば、情報処理装置１００の姿勢として、情報処理装置１００の角度Ｄ１の計算結果が得られたものとする。
【００６０】
続いて、ステップＳ６０９において、姿勢推測部２４０は、Ｓ６０８及び６０５の姿勢に係る計算結果と、Ｓ６０６及びＳ６０７の誤差区間に係る計算結果とを用いて、情報処理装置１００の姿勢を推測する処理を行う。具体的に、姿勢推測部２４０は、地磁気センサー１５２に係る誤差区間（第１の誤差区間）及びジャイロセンサー１５１に係る誤差区間（第２の誤差区間）と地磁気センサー１５２の角度及びジャイロセンサー１５１の角度を重み付き平均で角度を計算することにより、情報処理装置１００の姿勢を推測する。
【００６１】
このステップＳ６０９における具体的な計算例について説明する。
例えば、ステップＳ６０６で得られた、当時点のオンラインキャリブレーションの誤差区間が［０，Ｂ］であるものとする。この場合、ジャイロセンサー１５１は誤差が貯まり、ステップＳ６０７において、当時点のジャイロセンサー１５１の誤差区間［０，Ａ］も計算できる。２つの誤差区間の結果が得られると、ステップＳ６０８のジャイロセンサー１５１の姿勢計算結果（情報処理装置１００の角度Ｄ１）とステップＳ６０５の地磁気センサー１５２の姿勢計算結果（情報処理装置１００の角度Ｄ２）を重み付きして、以下の式により、情報処理装置１００の姿勢Ｄ５を推測する。
Ｄ５＝（Ｂ＊Ｄ１＋Ａ＊Ｄ２）／（Ａ＋Ｂ）
【００６２】
そして、ステップＳ６０９の処理が終了すると、図６のフローチャートの処理が終了する。
【００６３】
なお、ステップＳ６０７におけるジャイロセンサーの誤差区間は、予め算出しておき、内部メモリ等に予め保持しておいてもよい。また、予め保持していない場合には、後述の第２の実施形態における姿勢補正部２６０により、計算することもできる。
【００６４】
図７は、本発明の第１の実施形態に係る情報処理装置１００の処理によって得られる効果を説明するための図である。この図７において、横軸は時間ｔを示し、縦軸は情報処理装置１００の姿勢計算における精度ａを示している。また、指標７０１は、本発明の第１の実施形態に係る情報処理装置１００の処理結果を示し、指標７０２は、比較対象としての既存技術の処理結果を示している。
【００６５】
図７において、磁場変化開始７０３のときには、オンラインキャリブレーションを開始し、姿勢計算はジャイロセンサー１５１のセンサーデータだけを用いて行う。
【００６６】
図７において、磁場変化開始７０３してからオンラインキャリブレーション終了７０４となるまでの間の、オンラインキャリブレーションが終了してない期間では、ずっとジャイロセンサー１５１のセンサーデータを使って姿勢計算をするので、ジャイロセンサー１５１の誤差は時間経過とともに貯まることから、既存技術の処理結果の場合、図７の指標７０２の点線で示すように精度ａが低くなる。なお、オンラインキャリブレーション終了７０４となると、すぐ地磁気センサー１５２のセンサーデータを使って姿勢計算ができるので、再び高い精度で姿勢計算を行うことが可能になる。
【００６７】
この指標７０２で示す既存技術の処理結果の問題は、オンラインキャリブレーションの処理中で姿勢計算の精度ａが落ち、オンラインキャリブレーション終了７０４となったときに急な姿勢変化（角度変化）が発生することである。
【００６８】
これに対して、本発明の第１の実施形態に係る情報処理装置１００では、オンラインキャリブレーションの処理中に、ジャイロセンサー１５１を用いた姿勢計算結果と地磁気センサー１５２を用いた姿勢計算結果とを用いて情報処理装置１００の姿勢を推測するようにしたので、図７の指標７０１に示すように、オンラインキャリブレーションの処理中でも姿勢計算における精度ａを最大的に確保することができ、また、オンラインキャリブレーション終了７０４となったときも円滑に姿勢計算結果が出力できる。
即ち、第１の実施形態に係る情報処理装置１００によれば、当該情報処理装置の周囲の磁場が不安定である環境下の場合においても、当該情報処理装置の姿勢を適正に推測することができる。
【００６９】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【００７０】
第２の実施形態に係る情報処理装置のハードウェア構成は、図１に示す第１の実施形態に係る情報処理装置１００のハードウェア構成と同様である。また、第２の実施形態に係る情報処理装置の機能構成は、図２に示す第１の実施形態に係る情報処理装置１００の機能構成と同様である。
【００７１】
磁場変化検知部２３０において磁場が変化したことを検知した場合、オンラインキャリブレーションの状態で、情報処理装置１００の姿勢に係る水平角度の絶対値は取れないので、水平角度は補正することができない。この場合、加速度センサー１５３のセンサーデータを使って静止の時の重力方向を検知することにより、情報処理装置１００の姿勢に係るＰｉｔｃｈとＲｏｌｌは補正することができるが、水平角度Ｙａｗは補正することができない。そこで、本実施形態においては、ジャイロセンサー１５１の誤差を用いてＹａｗを補正する。
【００７２】
なお、図３のステップＳ３０６の判断は、オンラインキャリブレーションが終了したか否かであるが、磁場が不安定である環境下で、ジャイロセンサー１５１の誤差は次第に貯まる。そして、この場合、オンラインキャリブレーションが終了しないときは、磁場も正しく利用できない状態であるため、Ｙａｗの誤差は補正できない。
【００７３】
図８は、本発明の第２の実施形態に係る情報処理装置１００の駆動方法における処理手順の一例を示すフローチャートである。この図８において、図３に示す処理ステップと同様の処理ステップについては同じステップ番号を付している。
【００７４】
図８では、まず、図３のステップＳ３０１と同様に、センサーデータ取得部２１０は、センサーデバイス１５０からセンサーデータを取得する処理を行う。ここでは、センサーデータ取得部２１０は、ジャイロセンサー１５１のセンサーデータ、地磁気センサー１５２のセンサーデータ、及び、加速度センサー１５３のセンサーデータを取得する。
【００７５】
続いて、図８では、図３のステップＳ３０２と同様に、磁場変化検知部２３０は、ステップＳ３０１で取得されたセンサーデータに基づいて、情報処理装置１００の周囲の磁場が変化したか否かを検知する処理を行う。
【００７６】
続いて、図８では、図３のステップＳ３０３と同様に、磁場変化検知部２３０は、ステップＳ３０２の検知処理の結果、情報処理装置１００の周囲の磁場が変化したことを検知したか否かを判断する。
【００７７】
この図８のステップＳ３０３の判断の結果、情報処理装置１００の周囲の磁場が変化しないことを検知した場合には（Ｓ３０３／Ｎｏ）、図８のステップＳ３０４に進む。
図８ステップＳ３０４に進むと、図３のステップＳ３０４と同様に、姿勢計算部２２０は、ステップＳ３０１で取得されたセンサーデータ（ジャイロセンサー１５１、地磁気センサー１５２及び加速度センサー１５３の各センサーデータ、或いは、磁場が変化しない環境下であるため地磁気センサー１５２のセンサーデータ）を用いて、情報処理装置１００の姿勢を計算する処理を行う。
【００７８】
続いて、ステップＳ８０１において、センサー誤差計算部２５０は、磁場変化検知部２３０において情報処理装置１００の周囲の磁場が変化しないことが検出されると、ジャイロセンサー１５１の誤差（ここでは、誤差率）を計算して内部メモリ等に保持する。ここでの具体的な計算方法としては、ジャイロセンサー１５１のセンサーデータに基づく情報処理装置１００の姿勢の計算結果と、図８のステップＳ３０４による情報処理装置１００の姿勢の計算結果とを比較して、ジャイロセンサー１５１の誤差率を計算する。例えば、ジャイロセンサー１５１を用いた姿勢（角度）の計算結果がＪ１＝１０１．１°であり、図８のステップＳ３０４による姿勢（角度）の計算結果がＪ２＝１００°である場合には、誤差率Ｊ３＝（Ｊ１−Ｊ２）／Ｊ２＝１．１％となる。
【００７９】
ステップＳ８０１の処理が終了すると、その後、図８のステップＳ３０１の処理に戻る。
【００８０】
一方、図８のステップＳ３０３の判断の結果、情報処理装置１００の周囲の磁場が変化したことを検知した場合には（Ｓ３０３／Ｙｅｓ）、図８のステップＳ３０５に進む。
図８のステップＳ３０５に進むと、図３のステップＳ３０５と同様に、姿勢推測部２４０は、ステップＳ３０１で取得されたセンサーデータに基づいて、情報処理装置１００の姿勢（デバイスの姿勢）を推測する処理を行う。
【００８１】
続いて、ステップＳ８０２において、例えば姿勢補正部２６０は、図８のステップＳ３０５において推測された情報処理装置１００の姿勢の推測結果に対して補正ができるか否かを判断する。ここで、本ステップの判断基準としては、例えば、図３のステップＳ３０６のようにオンラインキャリブレーションが終了したか否かを１つ判断基準とすることができる。さらに、本ステップの他の判断基準としては、例えば、情報処理装置１００が静止の状態か否かを判断基準とすることができる。この場合、例えば、加速度センサー１５３とジャイロセンサー１５１の状態により、情報処理装置１００が静止の状態か否かを判断することができる。この情報処理装置１００が静止の状態のときは、Ｐｉｔｃｈ及びＲｏｌｌだけではなく、Ｙａｗも補正することができる。
【００８２】
ステップＳ８０２の判断の結果、図８のステップＳ３０５において推測された情報処理装置１００の姿勢の推測結果に対して補正ができない場合には（Ｓ８０２／Ｎｏ）、図８のステップＳ３０１の処理に戻る。
【００８３】
一方、ステップＳ８０２の判断の結果、図８のステップＳ３０５において推測された情報処理装置１００の姿勢の推測結果に対して補正ができる場合には（Ｓ８０２／Ｙｅｓ）、ステップＳ８０３に進む。
ステップＳ８０３に進むと、姿勢補正部２６０は、ステップＳ８０１で得られたジャイロセンサー１５１の誤差（ここでは、誤差率）等に基づいて、図８のステップＳ３０５において推測された情報処理装置１００の姿勢の推測結果を補正する。その後、図８のステップＳ３０１の処理に戻る。
【００８４】
図９は、図８のステップＳ８０１における誤差率計算処理の詳細な処理手順の一例を示すフローチャートである。
【００８５】
まず、ステップＳ９０１において、センサー誤差計算部２５０は、例えば、第１の姿勢計算部２２１に対して、ジャイロセンサー１５１のセンサーデータを用いた情報処理装置１００の姿勢を計算させる。ここでは、例えば、情報処理装置１００の姿勢として、Ｐｉｔｃｈ，Ｒｏｌｌ，Ｙａｗの角度Ａの計算結果が得られたものとする。
【００８６】
続いて、ステップＳ９０２において、センサー誤差計算部２５０は、姿勢計算部２２０から、図８のステップＳ３０４による情報処理装置１００の姿勢の計算結果を取得する。ここでは、例えば、情報処理装置１００の姿勢として、Ｐｉｔｃｈ，Ｒｏｌｌ，Ｙａｗの角度Ｂの計算結果が得られたものとする。
【００８７】
続いて、ステップＳ９０３において、センサー誤差計算部２５０は、ステップＳ９０１で得られた計算結果とステップＳ９０２で得られた計算結果とに基づいて、ジャイロセンサー１５１の誤差を計算する。ここでは、例えば、ジャイロセンサー１５１の誤差Ｄとして、Ｄ＝Ａ−Ｂを計算する。
【００８８】
続いて、ステップＳ９０４において、センサー誤差計算部２５０は、ジャイロセンサー１５１のセンサーデータに基づいて、Ｐｉｔｃｈ，Ｒｏｌｌ，Ｙａｗの変化した角度Ｅを計算する。
【００８９】
続いて、ステップＳ９０５において、センサー誤差計算部２５０は、ステップＳ９０３で得られたジャイロセンサー１５１の誤差と、ステップＳ９０４で得られた変化した角度とに基づいて、ジャイロセンサー１５１の誤差率を計算して内部メモリ等に保持する。ここでは、例えば、ジャイロセンサー１５１の誤差率Ｒとして、Ｒ＝Ｄ／Ｅを計算する。このステップＳ９０５の処理が終了すると、図９のフローチャートの処理が終了する。
【００９０】
図１０は、図８のステップＳ８０３における姿勢補正処理の詳細な処理手順の一例を示すフローチャートである。
【００９１】
まず、ステップＳ１００１において、姿勢補正部２６０は、加速度センサー１５３のセンサーデータを用いた重力検知に基づいて、図８のステップＳ３０５において推測された情報処理装置１００の姿勢に係るＰｉｔｃｈとＲｏｌｌを補正する。
【００９２】
続いて、ステップＳ１００２において、姿勢補正部２６０は、図８のステップＳ８０１で得られたジャイロセンサー１５１の誤差率を読み込む処理を行う。
【００９３】
続いて、ステップＳ１００３において、姿勢補正部２６０は、ジャイロセンサー１５１のセンサーデータに基づいてＹａｗの角度を計算する。
【００９４】
続いて、ステップＳ１００４において、姿勢補正部２６０は、ステップＳ１００２で読み込んだジャイロセンサー１５１の誤差率とステップＳ１００３で算出したＹａｗの角度に基づいて、図８のステップＳ３０５において推測された情報処理装置１００の姿勢に係るＹａｗを補正する。そして、このステップＳ１００４の処理が終了すると、図１０のフローチャートの処理が終了する。
【００９５】
なお、Ｙａｗの計算において、ジャイロセンサー１５１の誤差は、各軸の誤差率も固定である。この際、どのようにして、Ｐｉｔｃｈ，Ｒｏｌｌ，Ｙａｗの誤差率関係を取得するかについては、事前に算出して内部メモリ等に保持しておいてもよいし、図８の処理（例えばＳ８０１）から誤差率を取得してもいい。
【００９６】
この際、計算結果としては、例えば、Ｐｉｔｃｈの誤差率は１．１％、Ｒｏｌｌの誤差率は１．２％、Ｙａｗの誤差率は１．３％、磁場変化の開始から静止までジャイロセンサー１５１の各軸の変更角度を取得し、ＰｉｔｃｈとＲｏｌｌの誤差率が正しいか否かを検証する。検証結果として、ＰｉｔｃｈとＲｏｌｌの誤差率が正しい場合には、Ｙａｗも補正する。例えば、Ｙａｗ変更角度がＡの場合、補正した結果としては、１０１．３％＊Ａとなる。検証結果として、ＰｉｔｃｈとＲｏｌｌの誤差率が正しくない場合には、補正しない。
【００９７】
図１１は、図８のステップＳ８０１における誤差率計算処理を説明するための図である。図１１において、角度変更方向１１０１は、情報処理装置１００の角度の変更方向を示している。また、基準位置１１０２は、情報処理装置１００の基準位置を示している。
【００９８】
指標１１０４は、基準位置１１０２からジャイロセンサー１５１のセンサーデータに基づいて計算された、特定区間（例えば、１００フレームとか、６０秒の長さなどである）のジャイロセンサー１５１の姿勢計算結果Ｄ６である。この指標１１０４における姿勢計算結果Ｄ６は、長い区間で、ジャイロセンサー１５１の誤差が溜まるので、誤差があるものである。
【００９９】
指標１１０３は、基準位置１１０２から地磁気センサー１５２のセンサーデータ（磁場データ）に基づいて計算された、特定区間（例えば、１００フレームとか、６０秒の長さなどである）の地磁気センサー１５２の姿勢計算結果Ｄ７である。この指標１１０３における姿勢計算結果Ｄ７は、地磁気センサー１５２のセンサーデータ（磁場データ）が信用できるので、正しい姿勢計算結果として使うことができる。
【０１００】
指標１１０５は、指標１１０４における姿勢計算結果Ｄ６と指標１１０３における姿勢計算結果Ｄ７との差｜Ｄ６−Ｄ７｜である。そして、この場合、ジャイロセンサー１５１の誤差率の計算式は、｜Ｄ６−Ｄ７｜／Ｄ６である。
【０１０１】
第１の実施形態に係る情報処理装置１００によれば、当該情報処理装置の周囲の磁場が不安定である環境下の場合においても、当該情報処理装置の姿勢をより適正に算出することができる。
【０１０２】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
このプログラム及び当該プログラムを記憶したコンピュータ読み取り可能な記憶媒体は、本発明に含まれる。
【０１０３】
なお、上述した本発明の実施形態は、いずれも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、または、その主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１０４】
１００：情報処理装置、１５０：センサーデバイス、１５１：ジャイロセンサー、１５２：地磁気センサー、１５３：加速度センサー、２１０：センサーデータ取得部、２２０：姿勢計算部、２２１：第１の姿勢計算部、２２２：第２の姿勢計算部、２３０：磁場変化検知部、２４０：姿勢推測部、２５０：センサー誤差計算部、２６０：姿勢補正部
【図１】
2018044924.tif 000003
【図２】
2018044924.tif 000004
【図３】
2018044924.tif 000005
【図４】
2018044924.tif 000006
【図５】
2018044924.tif 000007
【図６】
2018044924.tif 000008
【図７】
2018044924.tif 000009
【図８】
2018044924.tif 000010
【図９】
2018044924.tif 000011
【図１０】
2018044924.tif 000012
【図１１】
2018044924.tif 000013