(57)【特許請求の範囲】
【請求項１】
コンピュータが、
加速度センサ及び角速度センサを保持する移動体が所定の地点を通過する第１の時刻と、前記第１の時刻よりも後に前記地点を通過する第２の時刻とを検知し、
前記加速度センサ及び前記角速度センサの出力を用いるデッドレコニングにより前記第１の時刻で推定される位置または角度と、前記デッドレコニングにより前記第２の時刻で推定される位置または角度との差分を位置誤差または角度誤差として特定し、
前記位置誤差または前記角度誤差から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する
各処理を実行することを特徴とするキャリブレーション方法。
【請求項２】
前記地点には、識別情報を発信する発信機が設置されており、
前記検知する処理は、前記発信機から前記識別情報が受信されなくなった第１の時刻及び前記発信機から前記識別情報と同一の識別情報が再度受信される第２の時刻を検知することを特徴とする請求項１に記載のキャリブレーション方法。
【請求項３】
前記コンピュータが、
前記第１の時刻から前記第２の時刻までに前記移動体が移動する移動軌跡の特徴を表すパラメータを算出し、
前記移動軌跡の特徴を表すパラメータを用いて、前記位置誤差を残すことを許容する度合いを表す許容係数を算出する各処理をさらに実行し、
前記角速度センサの零点オフセットを算出する処理として、
前記位置誤差と、前記零点オフセット及び前記許容係数の乗算値とを含む評価関数を用いて、前記角速度センサの零点オフセットを算出する処理を実行することを特徴とする請求項２に記載のキャリブレーション方法。
【請求項４】
前記コンピュータが、
前記角速度センサの零点オフセットに基づいて前記移動体の移動軌跡を補正し、
補正後の移動体の移動軌跡上で識別情報が受信された発信機の位置を特定する各処理をさらに実行することを特徴とする請求項２または３に記載のキャリブレーション方法。
【請求項５】
前記コンピュータが、
前記角速度センサの零点オフセットに基づいて前記移動体の移動軌跡を補正し、
補正後の移動体の移動軌跡上で前記加速度センサおよび／または前記角速度センサによって検出される速度、加速度および／または角速度の時間変化が所定の特徴パターンを満たす地点の相対位置を抽出する各処理をさらに実行し、
前記角速度センサの零点オフセットを算出する処理として、
前記相対位置を用いて前記角速度センサの零点オフセットを算出する処理を実行することを特徴とする請求項１〜４のいずれか１つに記載のキャリブレーション方法。
【請求項６】
前記コンピュータが、
所定の範囲内に所在する他の移動体から該移動体の位置を受信し、
受信した他の移動体の位置を用いて、前記デッドレコニングにより推定される移動体の位置を補正する
各処理をさらに実行することを特徴とする請求項１〜５のいずれか一つに記載のキャリブレーション方法。
【請求項７】
前記コンピュータが、
前記角速度センサの零点オフセットに基づいて前記移動体の移動軌跡を補正し、
複数の移動体の移動軌跡を記憶する移動軌跡記憶部を参照して、各移動体の移動軌跡を重ね合わせることにより移動可能な経路が特定された地図を生成する各処理を実行することを特徴とする請求項１〜６のいずれか一つに記載のキャリブレーション方法。
【請求項８】
加速度センサ及び角速度センサを保持する移動体が所定の地点を通過する第１の時刻と、前記第１の時刻よりも後に前記地点を通過する第２の時刻とを検知する検知部と、
前記加速度センサ及び前記角速度センサの出力を用いるデッドレコニングにより前記第１の時刻で推定される位置または角度と、前記デッドレコニングにより前記第２の時刻で推定される位置または角度との差分を位置誤差または角度誤差として特定する特定部と、
前記位置誤差または前記角度誤差から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する算出部と
を有することを特徴とする情報処理装置。
【請求項９】
コンピュータに、
加速度センサ及び角速度センサを保持する移動体が所定の地点を通過する第１の時刻と、前記第１の時刻よりも後に前記地点を通過する第２の時刻とを検知し、
前記加速度センサ及び前記角速度センサの出力を用いるデッドレコニングにより前記第１の時刻で推定される位置または角度と、前記デッドレコニングにより前記第２の時刻で推定される位置または角度との差分を位置誤差または角度誤差として特定し、
前記位置誤差または前記角度誤差から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する
各処理を実行させることを特徴とするキャリブレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャリブレーション方法、情報処理装置及びキャリブレーションプログラムに関する。
【背景技術】
【０００２】
歩行者などの移動体の位置や姿勢を計測する技術として、移動体によって携帯されるモーションセンサから得られたセンサ値を時間積分して移動体の位置および姿勢を求めるデッドレコニングという技術が知られている。
【０００３】
かかるモーションセンサには、速度センサ、加速度センサ、角速度センサ（いわゆるジャイロ）などが用いられる。これらモーションセンサのセンサ値には、誤差が含まれる。このため、誤差を含んだセンサ値が時間積分された場合には、移動体の位置や姿勢の測位結果にも誤差が生じることになる。
【０００４】
測位誤差が生じる要因の１つとしては、ジャイロの零点オフセットが挙げられる。図２５は、ジャイロの零点オフセットを説明するための図である。図２５に示すグラフの縦軸は、Ａ／Ｄ変換後のジャイロのセンサ値を指し、また、図２５に示すグラフの横軸は、時刻ｔを指す。ここでは、一例として、８ビットの分解能を持つＡ／Ｄ変換器が「０」〜「２５５」の２５６段階に離散化し、ある温度の条件下において静止状態におけるジャイロのセンサ値が中央値「１２７」を出力するようにＡ／Ｄ変換器が設計されている場合を想定する。この場合、静止状態におけるジャイロのセンサ値、すなわちジャイロの零点のアナログ出力は、図中のグラフの縦軸における離散値「ｄ０＝１２７」及び離散値「ｄ０＋１＝１２８」の間の値を取るが、Ａ／Ｄ変換器に量子化されることによって離散値「ｄ０」に切り捨てられる。このため、Ａ／Ｄ変換器によって時刻ｋにサンプリングされたジャイロのセンサ値ωabc(k)には、ジャイロの零点のオフセットΔb(k)が含まれることになり、実際の角速度ωtrue(k)との間で誤差が生じることになる。なお、上記の「k」は、Ａ／Ｄ変換器におけるセンサ値のサンプリング時刻を指す。
【０００５】
このように、ジャイロによって計測された角速度をＡ／Ｄ変換器を用いてデジタル値に変換する場合には、静止状態におけるジャイロの出力値、すなわちジャイロの零点に量子化誤差によるオフセットΔb(k)が生じる。したがって、オフセットΔb(k)を含むジャイロの角速度を時間積分して姿勢角を求めた場合には、オフセットΔb(k)の累積値が移動体の姿勢角の誤差になる。
【０００６】
かかるジャイロの零点オフセットをキャリブレーションする技術の一例として、距離センサ、方位センサ及び位置センサを用いて搬送車等の航走体の位置を検出する位置検出装置が挙げられる。この位置検出装置では、位置センサからの位置が入力されると、その位置と位置補正演算器のシステム位置とを比較し、この比較結果を観測誤差として、カルマンフィルタを用いてジャイロドリフトを始めとする誤差を推定し補償する。
【０００７】
他の一例としては、複数の方位測定手段、速度測定手段を用いて、それぞれの測定手段の誤差を補正するナビゲーション装置が挙げられる。このナビゲーション装置では、ＧＰＳ受信機がＧＰＳ衛生との距離の変化率に応じて算出する進行方位と、ジャイロが検出する進行方位と、ジャイロの検出誤差との関係に従って、ジャイロの検出誤差をカルマンフィルタを用いて推定する。その上で、ナビゲーション装置は、先に推定した検出誤差を用いて、ジャイロが検出した進行方位を補正する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６３−３１１１１５号公報
【特許文献２】特開平０７−３０１５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記の従来技術では、以下に説明するように、ジャイロの零点オフセットを簡易にキャリブレーションできないという問題がある。
【００１０】
すなわち、上記の位置検出装置及びナビゲーション装置は、いずれも正しい位置や正しい角度を用いてジャイロの零点オフセットをキャリブレーションするものである。このため、上記の位置検出装置及びナビゲーション装置では、正しい位置や正しい角度を求める処理を実行せねばならない。それゆえ、上記の位置検出装置及びナビゲーション装置では、ジャイロの零点オフセットをキャリブレーションするのに処理が煩雑化してしまう。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、ジャイロの零点オフセットを簡易にキャリブレーションできるキャリブレーション方法、情報処理装置及びキャリブレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示するキャリブレーション方法は、コンピュータが、加速度センサ及び角速度センサを保持する移動体が第１の地点から位置または角度の誤差が特定量となる第２の地点へ移動した場合に、下記の差分を特定する処理を実行する。すなわち、前記コンピュータが、前記加速度センサ及び前記角速度センサの出力を用いたデッドレコニングにより前記第２の地点で得られる位置または角度と前記特定量との差分を特定する処理を実行する。さらに、前記コンピュータが、特定結果として得られた差分から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する処理を実行する。
【発明の効果】
【００１３】
本願の開示するキャリブレーション方法の一つの態様によれば、ジャイロの零点オフセットを簡易にキャリブレーションできるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る測位システムに含まれる各装置の構成を示す機能ブロック図である。
【図２】図２は、ループ経路の一例を示す図である。
【図３】図３は、ループ経路の一例を示す図である。
【図４】図４は、ループ経路の一例を示す図である。
【図５】図５は、デッドレコニングの推定結果の一例を示す図である。
【図６】図６は、補正前および補正後の移動軌跡を示す図である。
【図７】図７は、デッドレコニングの推定結果の一例を示す図である。
【図８】図８は、ヒューリステックの応用例を示す図である。
【図９】図９は、アンカーの設置位置の特定方法を説明するための図である。
【図１０】図１０は、アンカー記憶部の構成例を示す図である。
【図１１】図１１は、仮想アンカーの生成方法を説明するための図である。
【図１２】図１２は、仮想アンカー記憶部の構成例を示す図である。
【図１３】図１３は、実施例１に係るキャリブレーション処理の手順を示すフローチャートである。
【図１４】図１４は、零点オフセットΔｂと移動軌跡との相関関係を示す図である。
【図１５】図１５は、オーバーフィッティングの一例を示す図である。
【図１６】図１６は、実施例２に係る測位システムに含まれる各装置の構成を示す機能ブロック図である。
【図１７】図１７は、モデル経路の一例を示す図である。
【図１８】図１８は、補正結果の選択方法を説明するための図である。
【図１９】図１９は、実施例２に係る関数導出処理の手順を示すフローチャートである。
【図２０】図２０は、実施例２に係る移動軌跡補正処理の手順を示すフローチャートである。
【図２１】図２１は、補正前の移動軌跡の一例を示す図である。
【図２２】図２２は、補正後の移動軌跡の一例を示す図である。
【図２３】図２３は、補正後の移動軌跡の一例を示す図である。
【図２４】図２４は、実施例１〜実施例３に係るキャリブレーションプログラムを実行するコンピュータの一例について説明するための図である。
【図２５】図２５は、ジャイロの零点オフセットを説明するための図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するキャリブレーション方法、情報処理装置及びキャリブレーションプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１６】
［システム構成］
まず、本実施例に係る測位システムの構成について説明する。図１は、実施例１に係る測位システムに含まれる各装置の構成を示す機能ブロック図である。図１に示す測位システム１には、移動体端末１０と、アンカー２０と、サーバ装置３０とが収容される。なお、図１の例では、歩行者などの移動体によって保持される移動体端末１０に搭載されたジャイロの零点オフセットがサーバ装置３０によってキャリブレーションされる場合を想定する。
【００１７】
このうち、移動体端末１０は、歩行者などの移動体によって保持される端末装置である。かかる移動体端末１０の一態様としては、スマートフォンを始め、携帯電話機、ＰＨＳ（Personal  Handyphone  System）やＰＤＡ（Personal  Digital  Assistant）などを採用できる。なお、図１の例では、移動体端末１０を１つだけ例示したが、移動体端末１０は１つである必要はなく、開示の測位システム１には、複数の移動体端末１０を収容することができる。
【００１８】
また、移動体端末１０は、モーションセンサ１１を搭載し、モーションセンサ１１から得られたセンサ値を時間積分することにより移動体の位置および姿勢を求める自己位置推定機能、いわゆるデッドレコニングの演算機能を有する。かかるモーションセンサ１１の一態様としては、加速度センサ１１ａやジャイロ１１ｂなどを採用できる。さらに、移動体端末１０は、後述のアンカー２０との間で無線通信を行う機能を有し、アンカー２０によって発信されたアンカーの識別情報、すなわちアンカーＩＤ（identification）を受信する。
【００１９】
アンカー２０は、自装置に予め付与されたアンカーＩＤを発信する発信機である。このアンカー２０は、自装置から所定の距離以内に所在する装置が受信可能な電波、超音波や赤外線などを発信することにより、自装置のアンカーＩＤを移動体端末１０へ通知する。なお、図１の例では、アンカー２０がアンカーＩＤを発信する場合を想定するが、必ずしもＩＤを発信する必要はなく、ＩＤ以外の他の情報、例えば所定のローカル座標やグローバル座標などの位置情報を発信することもできる。
【００２０】
サーバ装置３０は、移動体端末１０に搭載されたジャイロの零点オフセットをキャリブレーションするサービスを提供するコンピュータである。このサーバ装置３０は、移動体端末１０との間で無線通信を行う機能を有し、無線ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などのネットワークを介してデータの授受を実行する。なお、ここでは、移動体端末１０及びサーバ装置３０の間で通信が無線により実行される場合を例示したが、必ずしも無線通信である必要はなく、有線通信が行われることとしてもかまわない。
【００２１】
ここで、本実施例に係るサーバ装置３０は、移動体端末１０が第１の地点から位置または角度が特定量となる第２の地点へ移動した場合に、次のような処理を実行する。すなわち、本実施例に係るサーバ装置３０は、モーションセンサ１１の出力を用いたデッドレコニングにより第２の地点で得られる位置または角度と特定量との差分を特定する。さらに、本実施例に係るサーバ装置３０は、特定結果として得られた差分から、当該移動体端末１０が静止状態である場合にジャイロ１１ｂによって出力されるセンサ値である零点オフセットを算出する。
【００２２】
このため、本実施例に係るサーバ装置３０では、キャリブレーションに必ずしも正しい位置や正しい角度を入力する必要はない。例えば、本実施例に係るサーバ装置３０では、上記の位置検出装置の場合のように、移動体の行動範囲内に設けられた位置センサに正しい位置情報を設定する必要がない。また、本実施例に係るサーバ装置３０では、上記のナビゲーション装置のように、ＧＰＳ受信機を用いて正しい位置情報を取得する必要がなく、さらに、屋外での使用に限定されない。
【００２３】
したがって、本実施例に係るサーバ装置３０によれば、ジャイロの零点オフセットを簡易にキャリブレーションすることが可能になる。さらに、本実施例に係るサーバ装置３０では、移動体端末１０が第２の地点へ移動した場合にキャリブレーションすればよく、移動体の状態量が変化する度にジャイロの零点オフセットを算出する必要がない。よって、本実施例に係るサーバ装置３０によれば、オフセットの演算回数を低減させることもできる。
【００２４】
［移動体端末１０の構成］
続いて、本実施例に係る移動体端末１０の機能的構成について説明する。図１に示すように、移動体端末１０は、モーションセンサ１１と、アンカー検知部１２と、位置推定部１３とを有する。なお、移動体端末１０は、図１に示した機能部以外にも既知の携帯端末が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどを始め、キャリアによる通信を実行する機能部やアプリケーションプログラムを実行する機能部を有するものとする。
【００２５】
モーションセンサ１１は、移動体端末１０の動きを計測するセンサである。このモーションセンサ１１は、図１に示すように、加速度センサ１１ａと、ジャイロ１１ｂとを有する。なお、図１の例では、加速度センサ１１ａ及びジャイロ１１ｂを有する場合を例示したが、必ずしも２つのセンサである必要はなく、速度センサをさらに有することとしてもよい。
【００２６】
このうち、加速度センサ１１ａは、移動体端末１０の加速度を計測するセンサである。かかる加速度センサ１１ａの一態様としては、Ｘ軸方向、Ｙ軸方向、Ｚ軸方向の加速度を計測する３軸加速度センサを採用できる。このように加速度センサ１１ａによって計測される３軸方向のセンサ値は、図示しないＡ／Ｄ変換器によってデジタル値に変換された後に後述の位置推定部１３へ出力される。なお、加速度の計測方式には、半導体式を始め、機械式や光学式などの任意の方式を採用できる。
【００２７】
ジャイロ１１ｂは、移動体端末１０の角速度を計測するセンサである。かかるジャイロ１１ｂの一態様としては、Ｘ軸周り、Ｙ軸周り、Ｚ軸周りの加速度を計測する３軸ジャイロセンサを採用できる。このようにジャイロ１１ｂによって計測される３軸周りのセンサ値は、図示しないＡ／Ｄ変換器によってデジタル値に変換された後に後述の位置推定部１３へ出力される。なお、角速度の計測方式には、振動型を始め、回転型などの任意の方式を採用できる。
【００２８】
アンカー検知部１２は、アンカー２０を検知する処理部である。一例としては、アンカー検知部１２は、アンカー２０からアンカーＩＤを受信した場合に、図示しない内部時計によって保持された時刻を参照して、アンカーＩＤにタイムスタンプを付与した上でサーバ装置３０へ通知する。
【００２９】
位置推定部１３は、モーションセンサ１１から得られたセンサ値を時間積分することにより移動体端末１０の位置および姿勢を推定する処理部である。かかる位置推定部１３による位置および姿勢の推定には、既存の慣性航法、いわゆるデッドレコニングを適用できる。一態様としては、位置推定部１３は、デッドレコニングにより推定した相対移動座標、進行方向及びモーションセンサの出力値にタイムスタンプを付与した上でサーバ装置３０へ送信する。なお、ここで言う「相対移動座標」とは、初期状態として与えられた位置からの移動量を指す。
【００３０】
なお、アンカー検知部１２及び位置推定部１３には、各種の集積回路や電子回路を採用できる。また、アンカー検知部１２及び位置推定部１３を１つの集積回路や電子回路に統合することもできる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００３１】
［サーバ装置３０の構成］
次に、本実施例に係るサーバ装置３０の機能的構成について説明する。図１に示すように、サーバ装置３０は、移動履歴記憶部３１と、差分特定部３２と、オフセット算出部３３と、補正部３４と、移動軌跡記憶部３５と、アンカー記憶部３６ａと、アンカー特定部３６とを有する。さらに、サーバ装置３０は、仮想アンカー記憶部３７ａと、仮想アンカー生成部３７と、地図生成部３８とを有する。なお、サーバ装置３０は、図１に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能部を有するものとする。
【００３２】
移動履歴記憶部３１は、移動体端末１０の移動履歴を記憶する記憶部である。一例として、移動履歴記憶部３１は、タイムスタンプ、相対移動座標、進行方向及びモーションセンサ１１の出力値などの時系列変化を移動体端末１０の移動履歴として記憶する。なお、移動履歴記憶部３１には、移動体端末１０の位置推定部１３によって送信された移動履歴が移動体端末１０別に蓄積される。
【００３３】
差分特定部３２は、移動体端末１０が第１の地点から位置または角度の誤差が特定量となる第２の地点へ移動した場合に、デッドレコニングにより第２の地点で得られる位置または角度と特定量との差分を特定する処理部である。
【００３４】
一例としては、差分特定部３２は、移動体端末１０がループ経路を移動して出発した地点に戻った場合に、デッドレコニングにより得られる出発時点からの位置の差分を特定する。
【００３５】
ここで言う「ループ経路」は、移動体端末１０が基準となるアンカー２０の設置位置を出発してから再びアンカー２０の設置位置に戻る任意の経路を指す。図２〜図４は、ループ経路の一例を示す図である。一例としては、ループ経路は、図２に示すように、アンカー２０の設置位置を始点および終点としたリング状の経路であってよい。他の一例としては、ループ経路には、図３に示すように、アンカー２０の設置位置を始点および終点とした直線の折り返し経路であってもよい。更なる一例としては、ループ経路は、図４に示すように、アンカー２０の設置位置を始点および終点とし、その過程に左、右、右、右の順に旋回を混ぜた経路であってもよい。なお、ループ経路は、図２〜図４に図示した経路に限らず、アンカー２０の設置位置を始点および終点とする経路であれば移動体が移動する環境に合った任意の経路であってよい。
【００３６】
このように、移動体端末１０を保持する移動体にアンカー２０の設置位置を始点及び終点としてループ経路を移動させるのは、移動前後で移動体の位置を同定するためである。このため、第１の地点及び第２の地点は、いずれもアンカー２０の設置位置となり、第１の地点が始点、第２の地点が終点となる。それゆえ、第１の地点から第２の地点へ移動した場合には、デッドレコニングにより第２の地点で推定されるべき位置の差分、すなわち移動量はゼロとなる。よって、デッドレコニングにより移動体がアンカー２０の設置位置を出発してから再び戻るまでに推定される位置の変化量をデッドレコニングの位置誤差と同定できる。なお、以下では、デッドレコニングにより移動体がアンカー２０の設置位置を出発してから再び戻るまでに推定される位置の差分のことを「位置誤差」と呼ぶ場合がある。
【００３７】
これを説明すると、差分特定部３２は、移動体端末１０のアンカー検知部１２からタイムスタンプ付きのアンカーＩＤを受信した場合に、次のような処理を実行する。すなわち、差分特定部３２は、前回に受信したアンカーＩＤに対応付けられたタイムスタンプと今回受信したアンカーＩＤに対応付けられたタイムスタンプとを比較して前回にアンカーＩＤを受信してから所定の期間を経過したか否かを判定する。このとき、差分特定部３２は、前回にアンカーＩＤを受信してから所定の期間を経過していた場合に、今回受信したアンカーＩＤが前回受信したアンカーＩＤと同一のアンカーＩＤであるか否かをさらに判定する。このようにして、差分特定部３２は、移動体端末１０がアンカー２０の設置位置から出発してから再び戻ってきたのか否かを判別する。そして、差分特定部３２は、移動履歴記憶部３１を参照して、前回受信したタイムスタンプに対応する相対移動座標および今回受信したタイムスタンプに対応する相対移動座標を読み出す。その上で、差分特定部３２は、各相対移動座標の差分、すなわち位置誤差を特定する。
【００３８】
他の一例として、差分特定部３２は、位置誤差を特定することなく、角度誤差を特定することもできる。すなわち、差分特定部３２は、移動体端末１０が第１の地点から所定の設置条件を満たしてアンカー２０が設置された第２の地点へ移動した場合に、デッドレコニングにより第２の地点で得られる角度と設置条件により特定される角度との差分を特定する。かかる設置条件には、アンカー２０を通過する移動体の進行方向を推定できるヒューリステックが適用される。一例としては、アンカー２０が閉状態におけるドアの面上に設置されていることが設置条件として設定される。このとき、アンカー２０が閉状態におけるドアの面上に設置されている場合には、移動体がドア面に対して垂直な方向に進むと推定できる。このように、差分特定部３２は、アンカー２０が所定の設置条件に該当する場合には、移動履歴記憶部３１を参照して、今回受信したタイムスタンプに対応する進行方向を読み出す。その上で、差分特定部３２は、今回受信したタイムスタンプに対応する進行方向とアンカー２０近傍で移動体が取ると推定される進行方向との差分を特定する。なお、以下では、デッドレコニングにより第２の地点で得られる角度と設置条件により特定される角度との差分のことを「角度誤差」と呼ぶ場合がある。
【００３９】
オフセット算出部３３は、差分特定部３２によって特定された位置誤差または角度誤差から、移動体端末１０におけるジャイロ１１ｂの零点オフセットΔｂを算出する処理部である。
【００４０】
一態様として、位置誤差からジャイロ１１ｂの零点オフセットを算出する算出式の導出例を説明する。これを説明すると、状態量ｘが下記の式（１）で表される。かかる式（１）における「ω」は角速度を指し、式（１）における「ｍ」は移動するセンサ座標系から見て北向きを表すベクトルを指す。式（１）における「ｍ」の初期値である「ｍ０」は予め付与されるものとする。また、観測誤差Δｚが下記の式（２）で表される。さらに、状態量の誤差Δｘが下記の式（３）で表される。
【００４１】
【数１】
0005838758.tif 000002
【００４２】
【数２】
0005838758.tif 000003
【００４３】
【数３】
0005838758.tif 000004
【００４４】
状態量は、カルマンフィルタを用いて下記の式（４）のように逐次更新される。かかる式（４）における「ｚｔ」は、観測量（ベクトル）を指し、式（４）の「Ｋｔ」はカルマンゲイン（行列）を指し、また、式（４）における「Ｃ」は状態空間を観測空間へ写像する行列を指す。さらに、状態方程式を下記の式（５）で表す。なお、下記の式（５）における「Δｔ」はサンプリング間隔を指す。
【００４５】
【数４】
0005838758.tif 000005
【００４６】
【数５】
0005838758.tif 000006
【００４７】
これら式（４）及び式（５）によって、状態量の累積誤差は、下記の式（６）及び式（７）で表される。このとき、初期状態としてΔｘ←０を与えると、累積誤差Δｘは、下記の式（６）及び式（７）の繰り返し演算により算出可能な行列Ａを用いて、下記の式（８）で表される。かかる式（８）の導出例としては、初期状態としてΔｘ←０を与えることにより、下記の式（６）から下記の式（９）が得られ、下記の式（７）から下記の式（１０）が得られる。ここで、下記の式（１０）で「Δｍ＝−Δｔ［ｍt=0×］Ｋ11,t=0Δｂ」となるので、行列Ａが「−Δｔ［ｍt=0×］Ｋ11,t=0」と導出される。
【００４８】
【数６】
0005838758.tif 000007
【００４９】
【数７】
0005838758.tif 000008
【００５０】
【数８】
0005838758.tif 000009
【００５１】
【数９】
0005838758.tif 000010
【００５２】
【数１０】
0005838758.tif 000011
【００５３】
ここで、基準とするアンカー２０を原点とした基準座標系から見た位置誤差をΔｐとし、さらに、基準座標系のｙ軸正方向を北向き、ｚ軸負方向を重力方向としたとき、基準座標系からセンサ座標系への変換行列は、下記の式（１１）で表される。かかる式（１１）における「ｇ」はセンサ座標系で重力方向を表すベクトルを指し、「ｍ」はセンサ座標系で北向きを表すベクトルを指し、また、「Ｐｎ」はｎを法線とする平面へ射影する行列を指す。このとき、基準座標系での位置ｐは、下記の式（１２）により求まる。かかる式（１２）における「ｖｔ」は時刻ｔにおける速度ベクトルを指し、また、「Δｔ」はサンプリング間隔を指す。なお、上記の位置ｐの初期位置は、原点であるものとする。
【００５４】
【数１１】
0005838758.tif 000012
【００５５】
【数１２】
0005838758.tif 000013
【００５６】
上記の式（１２）により、ジャイロの零点オフセットによる位置誤差Δｐは、下記の式（１３）で表される。このとき、下記の式（１４）に示す「Ｓ」を定義すると、位置誤差Δｐの算出式は、下記の式（１５）で表される。かかる式（１５）における「Δｐ」や「Ｓ」に既知の値を代入することによって、ジャイロの零点オフセットΔｂが算出できる。但し、Δｂが大きくなると線形化の近似条件が成立しなくなる。そこで、下記の式（１６）に示す「Ｅ」を最小化するΔｂを求める。かかるΔｂは、ＳＲ−Ｉｎｖｅｒｓｅを用いて下記の式（１７）のように計算できる。なお、式（１７）における「Ｓ＊」は、ＳＲ−Ｉｎｖｅｒｓｅにより下記の式（１８）のように定義される。
【００５７】
【数１３】
0005838758.tif 000014
【００５８】
【数１４】
0005838758.tif 000015
【００５９】
【数１５】
0005838758.tif 000016
【００６０】
【数１６】
0005838758.tif 000017
【００６１】
【数１７】
0005838758.tif 000018
【００６２】
【数１８】
0005838758.tif 000019
【００６３】
このように、オフセット算出部３３は、位置誤差Δｐを代入して上記の式（１５）または上記の式（１７）を解くことにより、ジャイロの零点オフセットΔｂを算出できる。このようにして算出されたジャイロの零点オフセットΔｂは、アンカーＩＤの通知元の移動体端末１０へ送信される。これによって、零点オフセットΔｂが通知された移動体端末１０では、以降のデッドレコニングの精度を向上させることができる。
【００６４】
他の一態様として、角度誤差からジャイロ１１ｂの零点オフセットを算出する算出式の導出例を説明する。上記の式（８）を導出するまでは、位置誤差Δｐの場合の導出と同様であるので、上記の式（８）以降の導出について説明する。ここで、進行方向の角度誤差Δθは、センサ座標系から見た北方向のベクトルの誤差に等しいので、Δθが小さいときは下記の式（１９）が成立する。かかる式（１９）における「Ｐｎ」はｎを法線とする平面へ射影する行列を示す。そして、下記の式（１９）は、上記の式（８）により下記の式（２０）に変形できる。さらに、‖ｖ‖２＝ｔｖｖの関係により、下記の式（２１）が成立する。かかる式（２１）を解くことにより、ジャイロの零点オフセットΔｂが算出できる。なお、下記の式（２１）における「ｔ」は転置を表す。
【００６５】
【数１９】
0005838758.tif 000020
【００６６】
【数２０】
0005838758.tif 000021
【００６７】
【数２１】
0005838758.tif 000022
【００６８】
このように、オフセット算出部３３は、角度誤差Δθを代入して上記の式（２１）を解くことにより、ジャイロの零点オフセットΔｂを算出できる。このようにして算出されたジャイロの零点オフセットΔｂは、アンカーＩＤの通知元の移動体端末１０へ送信されることになる。
【００６９】
補正部３４は、移動履歴記憶部３１に記憶された移動履歴を再計算することにより、移動体端末１０の移動軌跡を補正する処理部である。一例としては、補正部３４は、オフセット算出部３３によってジャイロ１１ｂの零点オフセットΔｂが算出された移動体端末１０に関するモーションセンサ１１の出力値の履歴を読み出す。その上で、補正部３４は、先に読み出したモーションセンサ１１の出力値の履歴の時間積分をジャイロ１１ｂの零点オフセットΔｂを用いて再計算することにより、移動体端末１０の移動軌跡を補正する。その後、補正部３４は、補正後の移動軌跡を後述の移動軌跡記憶部３５へ格納するとともに、補正後の移動軌跡を後述のアンカー特定部３６へ出力する。
【００７０】
移動軌跡記憶部３５は、補正部３４によって補正された移動体端末１０の移動軌跡、いわゆる移動体の動線を記憶する記憶部である。一例として、移動軌跡記憶部３５は、移動体端末１０の移動軌跡である相対移動座標を始め、タイムスタンプ、相対移動座標、進行方向やモーションセンサ１１の出力値などの時系列変化を移動体の動線として記憶する。なお、少なくともアンカー２０とアンカー２０が設置されたグローバル座標、すなわち緯度及び経度で表現される座標系とを対応付けておくことにより、移動体端末１０の移動軌跡を相対移動座標のログからグローバル座標のログへ変換することができる。
【００７１】
ここで、図５及び図６を用いて、デッドレコニングの位置誤差Δｐを用いてキャリブレーションする場合の具体例を説明する。図５は、デッドレコニングの推定結果の一例を示す図である。図６は、補正前および補正後の移動軌跡を示す図である。なお、図５及び図６の例では、図示のアンカー２０Ａの位置を原点とする座標系ｏ−ｘｙを基準座標系とし、デッドレコニングによって推定される移動体の位置および姿勢は、基準座標系から見た相対移動座標および進行方向として表される場合を例示する。
【００７２】
図５に示すように、移動体端末１０を保持する移動体は、アンカー２０Ａの設置位置を出発してから部屋Ｗ及びＶに面する廊下を経て階段周りを左、右、右、右の順に旋回し、再び廊下を通過してアンカー２０Ａの設置位置へ戻る移動軌跡４１を取る。この場合には、ジャイロ１１ｂの零点オフセットΔｂによる誤差を含んだ移動体の移動軌跡４２が移動体端末１０の位置推定部１３によって推定される。そして、アンカー２０ＡからアンカーＩＤを再び受信することによって移動体がアンカー２０Ａの設置位置に戻ったことが差分特定部３２によって検知される。このとき、デッドレコニングにより推定された位置、すなわち移動軌跡４２の終点と、実際の位置である基準座標系の原点との間で生じた位置誤差Δｐが差分特定部３２によって取得される。このようにして位置誤差Δｐが取得されると、上記の式（１５）または上記の式（１７）を用いて、ジャイロ１１ｂの零点オフセットΔｂがオフセット算出部３３によって算出される。かかるジャイロ１１ｂの零点オフセットΔｂが算出されると、図６に示すように、モーションセンサ１１の出力値の履歴の時間積分が補正部３４によってオフセットΔｂを用いて再計算されることにより、補正後の移動軌跡４５が算出される。このようにして実際の移動軌跡４１と比べても誤差の少ない移動軌跡４５に補正できる。
【００７３】
次に、図７を用いて、デッドレコニングの角度誤差Δθを用いてキャリブレーションする場合の具体例を説明する。図７は、デッドレコニングの推定結果の一例を示す図である。なお、図７の例では、図示のアンカー２０Ｂの位置を原点とする座標系ｏ−ｘｙを基準座標系とし、デッドレコニングによって推定される移動体の位置および姿勢は、基準座標系から見た相対移動座標および進行方向として表される場合を例示する。
【００７４】
図７に示すように、移動体端末１０を保持する移動体は、ドア面上に設けられたアンカー２０Ｂを出発してから左旋回して前進した後に折り返して再びアンカー２０Ｂに戻る移動軌跡５１を取る。この場合には、ジャイロ１１ｂの零点オフセットΔｂによる誤差を含んだ移動体の移動軌跡５２が移動体端末１０の位置推定部１３によって推定される。そして、アンカー２０ＢからアンカーＩＤを再び受信することによって移動体がアンカー２０Ｂの設置位置に戻ったことが差分特定部３２によって検知される。このとき、移動体はドア面を通過する際にドア面に対して垂直な方向５４を進むと推定できる。よって、デッドレコニングにより推定された移動体の進行方向５５とドア面に対して垂直な進行方向５４との間で生じた角度誤差Δθが差分特定部３２によって取得される。このようにして角度誤差Δθが取得されると、上記の式（２１）を用いて、ジャイロ１１ｂの零点オフセットΔｂがオフセット算出部３３によって算出される。
【００７５】
なお、ここでは、ドアに関するヒューリステックを適用する場合を例示したが、ヒューリステックの適用範囲はドアに限定されない。例えば、サーバ装置３０は、ドア以外にも階段やエスカレータへ進入する場合にも同様にヒューリステックを適用できる。図８は、ヒューリステックの応用例を示す図である。図８に示すように、階段６０とフロアの境界面にアンカー２０Ｃを設けておけば、移動体は階段へ進入する際に階段の延在方向６１と同一の方向へ進むと推定できる。よって、デッドレコニングにより推定された移動体の進行方向６２と階段の延在方向６１との間で生じた角度誤差Δθが差分特定部３２によって取得される。
【００７６】
アンカー特定部３６は、アンカー記憶部３６ａを用いて、移動軌跡記憶部３５に記憶された移動体端末１０の移動軌跡上でアンカーＩＤが受信されたアンカー２０の位置を特定する処理部である。
【００７７】
ここで、図９及び図１０を用いて、アンカーの設置位置の特定方法を説明する。図９は、アンカー２０の設置位置の特定方法を説明するための図である。図１０は、アンカー記憶部３６ａの構成例を示す図である。図９に示すように、移動体は基準とするアンカー２０Ａが設置されている位置を始点として移動を開始する。その後、アンカー特定部３６は、移動軌跡４２上の地点７１でアンカー２０Ｄを検知する。この時点では、デッドレコニングには測位誤差が含まれているので、アンカーの正確な位置は分からない。そこで、アンカー特定部３６は、図１０に示すように、アンカーの位置を基準アンカー２０Ａからのトポロジー「前進１７ｍ」でアンカー記憶部３６ａに表記する。このとき、アンカー特定部３６は、検知したアンカーＩＤ「２０Ｄ」も登録しておく。同様にして、アンカー特定部３６は、移動軌跡４２上の地点７２でアンカー２０Ｅを検知する。この場合には、アンカー特定部３６は、図１０に示すように、アンカーの位置を基準アンカー２０Ａからのトポロジー「前進１７ｍ＋左旋回＋前進８ｍ＋右旋回＋前進８ｍ」をアンカーＩＤ「２０Ｅ」とともにアンカー記憶部３６ａへ登録する。その後、アンカー特定部３６は、補正後の移動軌跡４５が算出されると、トポロジーで表現されている移動軌跡４５上の各アンカーＩＤの位置７３及び位置７４を基準座標系から見た座標値でアンカー記憶部３６ａへ登録する。
【００７８】
仮想アンカー生成部３７は、仮想アンカー記憶部３７ａを用いて、補正後の移動体の移動軌跡上でモーションセンサ１１により検出される速度、加速度及び／又は角速度の時間変化が所定の特徴パターンを満たす地点を仮想アンカーとして抽出する処理部である。
【００７９】
ここで、図１１及び図１２を用いて、仮想アンカーの生成方法を説明する。図１１は、仮想アンカーの生成方法を説明するための図である。図１２は、仮想アンカー記憶部３７ａの構成例を示す図である。なお、ここでは、一例として、速度、加速度及び／又は角速度の時間変化がコーナーを旋回する特徴パターンを満たす地点を仮想アンカーとして抽出する場合を例示する。
【００８０】
図１１に示すように、移動体は、基準となるアンカー２０Ａが設置されている位置を始点として移動を開始する。その後、仮想アンカー生成部３７は、移動体が移動軌跡４２上の地点８１付近で左旋回すると、進行方向の加速度および移動速度、角速度、姿勢の時間変化に左旋回特有の特徴パターンを検知する。例えば、移動体が歩行者の場合には、歩幅や歩行周期等にも特徴パターンが現れる。この場合には、仮想アンカー生成部３７は、図１２に示すように、特徴パターンの出現位置を実物のアンカー２０Ａからのトポロジー「前進１７ｍ＋左旋回＋前進８ｍ」で仮想アンカー記憶部３７ａへ表記する。同様にして、仮想アンカー生成部３７は、移動体が移動軌跡４２上の地点８２付近で右旋回した位置、地点８３付近で右旋回した位置、さらには、地点８４付近で右旋回した位置のトポロジーを仮想アンカー記憶部３７ａへ登録する。その後、仮想アンカー生成部３７は、補正後の移動軌跡４５が算出されると、トポロジーで表現されている移動軌跡４５上の位置８５〜８８を基準座標系から見た座標値で仮想アンカー記憶部３７ａへ登録することにより、仮想アンカーを生成する。例えば、移動体端末１０によって計測されたトポロジーが仮想アンカーのトポロジーと一致する場合には、仮想アンカーの座標を用いて、ジャイロの零点オフセットをキャリブレーションすることができる。
【００８１】
なお、ここでは、速度、加速度及び／又は角速度の時間変化がコーナーを旋回する特徴パターンを満たす地点を仮想アンカーとして抽出する場合を例示したが、仮想アンカーの抽出対象はコーナーに限定されない。例えば、仮想アンカー生成部３７は、ドアの前には一旦停止するための速度及び加速度パターンが出現し、階段の上り始めや下り始め、また、スロープに差し掛かる場所では重力方向加速度に特徴的なパターンが出現する。このような固有の特徴が現れる位置は全て仮想アンカーとして抽出できる。
【００８２】
地図生成部３８は、移動軌跡記憶部３５に記憶された各移動体の移動軌跡を重ね合わせることにより移動可能な経路が特定された地図を生成する処理部である。さらに、地図生成部３８は、アンカー記憶部３６ａに記憶された各アンカーの座標および仮想アンカー記憶部３７ａに記憶された各仮想アンカーの座標を地図上にマッピングすることもできる。
【００８３】
なお、誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７及び地図生成部３８には、各種の集積回路や電子回路を採用できる。また、画像解析部１５に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００８４】
また、移動履歴記憶部３１、移動軌跡記憶部３５、アンカー記憶部３６ａ及び仮想アンカー記憶部３７ａなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ（Video  Random  Access  Memory）、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【００８５】
［処理の流れ］
次に、本実施例に係るサーバ装置の処理の流れについて説明する。図１３は、実施例１に係るキャリブレーション処理の手順を示すフローチャートである。このキャリブレーション処理は、移動体端末１０のアンカー検知部１２からタイムスタンプ付きのアンカーＩＤを受信した場合に処理が起動する。
【００８６】
図１３に示すように、差分特定部３２は、前回受信したアンカーＩＤに付与されたタイムスタンプと今回受信したアンカーＩＤに付与されたタイムスタンプとを比較して前回にアンカーＩＤを受信してから所定の期間を経過したかを判定する（ステップＳ１０１）。なお、前回にアンカーＩＤを受信してから所定の期間を経過していない場合（ステップＳ１０１否定）には、移動体端末１０がアンカー２０の通信圏内に滞在していると推定できるので、そのまま処理を終了する。
【００８７】
このとき、差分特定部３２は、前回にアンカーＩＤを受信してから所定の期間を経過していた場合（ステップＳ１０１肯定）に、今回受信したアンカーＩＤが前回受信したアンカーＩＤと同一のアンカーＩＤであるか否かをさらに判定する（ステップＳ１０２）。なお、今回受信したアンカーＩＤが前回受信したアンカーＩＤと異なる場合（ステップＳ１０２否定）には、基準とするアンカー２０に戻ったのではなく、前回受信したアンカーＩＤのアンカー２０は通過しただけであると推定できるので、そのまま処理を終了する。
【００８８】
ここで、今回受信したアンカーＩＤが前回受信したアンカーＩＤと同一のアンカーＩＤである場合（ステップＳ１０２肯定）には、差分特定部３２は、デッドレコニングの位置誤差または角度誤差を特定する（ステップＳ１０３）。その後、オフセット算出部３３は、デッドレコニングの位置誤差または角度誤差からジャイロ１１ｂの零点オフセットを算出する（ステップＳ１０４）。そして、オフセット算出部３３は、ジャイロの零点オフセットをアンカーＩＤの通知元の移動体端末１０へ送信する（ステップＳ１０５）。
【００８９】
続いて、補正部３４は、移動履歴記憶部３１に記憶されたモーションセンサ１１の出力値の履歴の時間積分をジャイロ１１ｂの零点オフセットを用いて再計算することにより、移動体端末１０の移動軌跡を補正する（ステップＳ１０６）。
【００９０】
その後、アンカー特定部３６は、移動軌跡記憶部３５に記憶された移動体端末１０の移動軌跡上でアンカーＩＤが受信されたアンカー２０の位置を特定する（ステップＳ１０７）。そして、仮想アンカー生成部３７は、補正後の移動体の移動軌跡上でモーションセンサ１１により検出される速度、加速度及び／又は角速度の時間変化が所定の特徴パターンを満たす地点を仮想アンカーとして抽出する（ステップＳ１０８）。
【００９１】
最後に、地図生成部３８は、移動軌跡記憶部３５に記憶された各移動体の移動軌跡を重ね合わせることにより移動可能な経路が特定された地図を生成し（ステップＳ１０９）、処理を終了する。
【００９２】
［実施例１の効果］
上述してきたように、本実施例に係るサーバ装置３０は、移動体端末１０が第１の地点から位置または角度が特定量となる第２の地点へ移動した場合に、次のような処理を実行する。すなわち、本実施例に係るサーバ装置３０は、モーションセンサ１１の出力を用いたデッドレコニングにより第２の地点で得られる位置または角度と特定量との差分を特定する。さらに、本実施例に係るサーバ装置３０は、特定結果として得られた差分から、当該移動体端末１０が静止状態である場合にジャイロ１１ｂによって出力されるセンサ値である零点オフセットを算出する。
【００９３】
このため、本実施例に係るサーバ装置３０では、キャリブレーションに必ずしも正しい位置や正しい角度を入力する必要はない。例えば、本実施例に係るサーバ装置３０では、上記の位置検出装置の場合のように、移動体の行動範囲内に設けられた位置センサに正しい位置情報を設定する必要がない。また、本実施例に係るサーバ装置３０では、上記のナビゲーション装置のように、ＧＰＳ受信機を用いて正しい位置情報を取得する必要がなく、さらに、屋外での使用に限定されない。
【００９４】
したがって、本実施例に係るサーバ装置３０によれば、ジャイロの零点オフセットを簡易にキャリブレーションすることが可能になる。さらに、本実施例に係るサーバ装置３０では、移動体端末１０が第２の地点へ移動した場合にキャリブレーションすればよく、移動体の状態量が変化する度にジャイロの零点オフセットを算出する必要がない。よって、本実施例に係るサーバ装置３０によれば、オフセットの演算回数を低減させることもできる。
【００９５】
また、本実施例に係るサーバ装置３０は、アンカー２０からアンカーＩＤが受信されなくなった時点から同一のアンカーＩＤが再度受信される時点までにデッドレコニングにより第２の地点で推定された位置又は角度と特定量との差分を特定する。これによって、本実施例に係るサーバ装置３０では、移動体端末１０が第１の地点から位置または角度が特定量となる第２の地点へ移動したことをアンカー２０を用いて自動検知しつつ、ジャイロの零点オフセットをキャリブレーションできる。
【００９６】
さらに、本実施例に係るサーバ装置３０は、ジャイロ１１ｂの零点オフセットに基づいて移動体端末１０の移動軌跡を補正し、補正後の移動体の移動軌跡上でアンカーＩＤが受信されたアンカーの位置を特定する。このため、本実施例に係るサーバ装置３０では、過去に通過したアンカー２０の位置を自動検知できる。
【００９７】
また、本実施例に係るサーバ装置３０は、ジャイロ１１ｂの零点オフセットに基づいて移動体端末１０の移動軌跡を補正する。さらに、本実施例に係るサーバ装置３０は、補正後の移動体の移動軌跡上でモーションセンサ１１によって検出される速度、加速度および／または角速度の時間変化が所定の特徴パターンを満たす地点の相対位置を仮想アンカーとして抽出する。さらに、本実施例に係るサーバ装置３０は、仮想アンカーの相対位置を用いて、ジャイロ１１ｂの零点オフセットを算出する。それゆえ、本実施例に係るサーバ装置３０では、ジャイロ１１ｂの零点オフセットをキャリブレーションできる機会を増加させることができる。
【００９８】
さらに、本実施例に係るサーバ装置３０は、ジャイロ１１ｂの零点オフセットに基づいて移動体端末１０の移動軌跡を補正する。その上で、本実施例に係るサーバ装置３０は、移動軌跡記憶部３５を参照して、各移動体端末１０の移動軌跡を重ね合わせることにより移動可能な経路が特定された地図を生成する。このため、本実施例に係るサーバ装置３０では、地図を自動生成することが可能になる。
【実施例２】
【００９９】
さて、上記の実施例１では、アンカー２０を出発してから同じアンカー２０に戻るまでにデッドレコニングにより得られた位置誤差Δｐと、ジャイロ１１ｂの零点オフセットΔｂとを含む評価関数Ｅを用いて、Δｂを最適化する場合を説明した。そこで、実施例２では、位置誤差Δｐをどの程度許容するかを示す係数εを移動軌跡の特徴を表すパラメータの関数とすることで、Δｂ以外の誤差要因の大きさを見積もった上でΔｂを最適化する例について説明する。
【０１００】
これを具体的に説明すると、ジャイロ１１ｂの零点オフセットΔｂを変化させて移動軌跡を再計算する場合には、図１４に示すように、移動軌跡が変化する。図１４は、零点オフセットΔｂと移動軌跡との相関関係を示す図である。図１４の例では、Δｂの値をΔｂ１〜Δｂ５（Δｂ１＜Δｂ２＜Δｂ３＜Δｂ４＜Δｂ５）に変化させた場合における移動軌跡が図示されている。図１４の例では、Δｂが大きくなるほど初期状態の姿勢が左回りに変化し、これに伴って移動軌跡も左回りに変化することを示す。
【０１０１】
かかる「Δｂをパラメータとして移動軌跡を最適化する」問題は、Δｂの値によって図１４に示すように変化する移動軌跡の中から、実際の移動軌跡と最も合致する移動軌跡に対応するΔｂを求める問題と言える。
【０１０２】
ところが、デッドレコニングによって推定された移動軌跡を最適化する際には、実際の移動経路の情報は完全には得られない。このため、上記の実施例１では、移動軌跡の一部に関する情報を用いて評価を行う関数Ｅ０を設定していた。例えば、アンカー２０を出発した時点に推定されていた位置ｐ１とアンカー２０に戻ってきた時点に推定された位置ｐ２との差の２乗、すなわちＥ０＝‖ｐ１−ｐ２‖２（＝‖Δｐ‖２）を最小にする方法が挙げられる。なお、上記の実施例１では、上記の式（１６）の評価関数ＥにおいてＥ０を‖Δｐ−ＳΔｂ‖２とする場合を説明したが、ここでは、説明の便宜上、Ｅ０を‖ｐ１−ｐ２‖２と簡略化して以下の説明を行うこととする。
【０１０３】
一方、位置誤差Δｐが生じる要因には、ジャイロ１１ｂの零点オフセットΔｂ以外の誤差の影響も存在する。かかるΔｂ以外の誤差の一例としては、加速度センサのセンサ値を用いて推定される歩行速度の誤差、オフセットで表せない角速度の誤差や推定計算時の線形化誤差などが挙げられる。
【０１０４】
このため、ジャイロ１１ｂの零点オフセットΔｂだけをパラメータとして、移動軌跡の一部に関する評価を表す評価関数Ｅの最適化を行うとすると、オーバーフィッティングが起こる場合がある。かかるオーバーフィッティングが起こると、移動軌跡は、部分的には真の軌跡に近くなるが、全体としてはずれが大きくなってしまう場合がある。
【０１０５】
図１５は、オーバーフィッティングの一例を示す図である。図１５に示す符号２００は、実際の移動経路を指す。図１５に示す符号２０１は、デッドレコニングによって推定された移動軌跡を指す。図１５に示す符号２０２は、オーバーフィッティングによって歪んだ移動軌跡を指す。
【０１０６】
図１５に示すように、デッドレコニングによって推定された移動軌跡２０１における位置ｐ１及び位置ｐ２の位置誤差をゼロに近づけようとするあまりに、ジャイロ１１ｂの零点オフセットΔｂを過度に大きく変化させると、オーバーフィッティングが起こる。すなわち、図１５に示す移動軌跡２０２のように、位置ｐ１及び位置ｐ２の近傍では、実際の移動経路２００に近くなるが、それ以外の部分では、実際の移動経路２００と比較して大きく歪んでしまう。このように、Δｂ以外にも位置ｐ１及び位置ｐ２の位置誤差が生じる要因があるにもかかわらず、Δｂを大きく変化させた場合には、オーバーフィッティングが起こる。
【０１０７】
このことから、上記の実施例１では、Δｂをパラメータとして含む下記の式（２２）を用いて、ジャイロ１１ｂの零点オフセットΔｂを最適化することにより、Δｂを過度に大きくしてデッドレコニングにより推定された移動軌跡を歪めることにペナルティを課す。つまり、‖Δｂ‖２を大きくしてもＥ０があまり改善しない場合には、Δｂをそれ以上変化させないようにΔｂの変化に抑制を効かせることができる。下記の式（２２）を用いて最適化されたΔｂを算出することによってジャイロ１１ｂの零点オフセットΔｂ以外の誤差要因による移動軌跡のずれをある程度許容することができる。なお、下記のＥ０は、‖ｐ１−ｐ２‖２（＝‖Δｐ‖２）を指し、また、下記の「ε」は、定数係数を指す。
【０１０８】
Ｅ＝Ｅ０＋ε‖Δｂ‖２  ・・・（２２）
【０１０９】
しかしながら、上記の式（２２）を用いてΔｂの最適化を行う場合には、デッドレコニングによって推定された移動軌跡を補正する効果にばらつきが生じる。すなわち、補正を実行する移動軌跡によってジャイロ１１ｂの零点オフセットΔｂ以外の誤差要因の影響の大きさにばらつきがあるため、位置ｐ１および位置ｐ２のずれを一定の割合で許容していたのでは補正の効果にもばらつきが生じる。例えば、ジャイロ１１ｂの零点オフセットΔｂ以外の誤差要因の影響が小さい場合には、位置ｐ１および位置ｐ２のずれを許容する割合が大きすぎると補正の効果が限定的になってしまう。また、ジャイロ１１ｂの零点オフセットΔｂ以外の誤差要因の影響が大きい場合には、位置ｐ１および位置ｐ２のずれを許容する割合が小さすぎるとオーバーフィッティングが起こるおそれがある。
【０１１０】
そこで、本実施例では、位置誤差Δｐを許容する度合いを示す許容係数εを移動軌跡の特徴を表すパラメータの関数とすることで、Δｂ以外の誤差要因の大きさを見積もった上でΔｂを最適化する。
【０１１１】
［サーバ装置３００の構成］
図１６は、実施例２に係る測位システムに含まれる各装置の構成を示す機能ブロック図である。なお、本実施例では、上記の実施例１と同様の機能を発揮する機能部には同一の符号を付し、その説明を省略することとする。
【０１１２】
図１６に示すサーバ装置３００は、図１に示したサーバ装置３０に比較して、関数導出部３１０と、移動軌跡算出部３２０と、誤差許容係数算出部３３０とを有する点が異なる。さらに、図１６に示すサーバ装置３００は、図１に示したオフセット算出部３３及び補正部３４との間で一部の処理内容が異なるオフセット算出部３４０及び補正部３５０を有する点が異なる。
【０１１３】
このうち、関数導出部３１０は、許容係数εの関数を導出する処理部である。ここで、上記の許容係数εは、位置誤差Δｐを許容する度合いを示す係数を指す。かかる許容係数εの大きさによって、上記の式（２２）を用いてΔｂを最適化する場合に、Ｅ０で評価される位置ｐ１および位置ｐ２のずれを許容する度合いが決まる。つまり、許容係数εが小さいほどＥ０の最小化の割合は大きくなるので、位置ｐ１および位置ｐ２のずれを許容する度合いは小さくなる。一方、許容係数εが大きいほどＥ０の最小化の割合は小さくなるので、位置ｐ１および位置ｐ２のずれを許容する度合いは大きくなる。
【０１１４】
かかる許容係数εの関数は、移動距離ｄの２乗に比例する下記の式（２３）が用いられる。このように、許容係数εを移動距離ｄの関数とするのは、ジャイロ１１ｂの零点オフセットΔｂ以外の誤差要因の影響の大きさとデッドレコニングによって移動軌跡が推定される際の移動体による移動経路や移動方法との関係が深く、移動距離、移動時間や曲がった回数などの移動軌跡の特徴を示すパラメータと相関があるからである。なお、下記の式（２３）では、位置ｐ１および位置ｐ２のずれが移動距離ｄに比例し、かかる位置ｐ１および位置ｐ２の差を含むＥ０が２乗されていることからＥ０の項と整合を取る観点から、許容係数εを移動距離ｄの２乗に比例する関数とする。
【０１１５】
ε＝ｋ×ｄ２  ・・・（２３）
【０１１６】
一態様としては、関数導出部３１０は、移動経路の形状が既知であるモデル経路が移動された場合のデッドレコニングの推定結果を用いてｋをキャリブレーションすることによって、ｋを係数定数とした許容係数εの関数を導出する。
【０１１７】
これを説明すると、関数導出部３１０は、移動体によってモデル経路が移動された場合にデットレコニングされたモデル経路の移動軌跡を取得する。図１７は、モデル経路の一例を示す図である。図１７に示すように、関数導出部３１０は、移動体によって移動経路が既知であるモデル経路２１０が移動された場合にモーションセンサのセンサ値からデッドレコニングされたモデル経路の移動軌跡２１１を取得する。なお、ここでは、移動体端末１０からデッドレコニングの推定結果を取得する場合を想定するが、予めアップロードされたものを記憶することとしてもよい。また、ここでは、既にデッドレコニングされた推定結果を取得することとしたが、移動体端末１０からモーションセンサ１１のセンサ値を取得した上でサーバ装置３００がデットレコニングを実行することとしてもかまわない。
【０１１８】
続いて、関数導出部３１０は、デットレコニングされたモデル経路の移動軌跡の長さ、すなわちモデル経路の移動距離を算出する。例えば、関数導出部３１０は、モデル経路の始点から終点までの相対移動座標を取得する。その上で、移動軌跡算出部３２０は、各相対移動座標間の距離を累積加算することによってモデル経路の移動軌跡の長さ、すなわち移動距離ｄを算出する。なお、以下では、モデル経路の移動距離ｄのことを「ｄ０」と表記する場合がある。
【０１１９】
そして、関数導出部３１０は、上記の式（２２）における許容係数εを変化させながら上記の式（１７）を用いてジャイロ１１ｂの零点オフセットΔｂの最適化計算を実行した上でそのΔｂを用いてデッドレコニングにより得られた移動軌跡２１１を補正する。例えば、関数導出部３１０は、初期値εｓｔを用いてジャイロ１１ｂの零点オフセットΔｂｓｔの最適化計算を実行した上でそのΔｂｓｔを用いて移動軌跡２１１を補正する。その後、関数導出部３１０は、移動軌跡２１１の補正結果が得られる度に、初期値εｓｔにシフト値Δεを加算して許容係数εが上限値εｅｎｄ以上になるまで許容係数εを増加させながら、各々の許容係数εごとに移動軌跡２１１の補正結果を算出する。
【０１２０】
その後、関数導出部３１０は、各々の許容係数εごとに得られた移動軌跡２１１の補正結果のうち最もモデル経路の形状と類似する補正結果を選択する。図１８は、補正結果の選択方法を説明するための図である。図１８に示すように、各々の許容係数εごとに得られた移動軌跡２１１の補正結果の中でも、実際のモデル経路２１０との間で最も形状が類似する補正結果２１１ａが選択される。一例としては、関数導出部３１０は、各々の許容係数εごとに得られた移動軌跡２１１の補正結果と、実際のモデル経路の形状との間で画像のマッチング処理を実行した上で最も類似度が高い補正結果を選択することができる。他の一例としては、関数導出部３１０は、サーバ装置３００のユーザインターフェースやサーバ装置３００と接続されるコンソール等を介して、各々の許容係数εごとに得られた移動軌跡２１１の補正結果の中から選択を受け付けることもできる。
【０１２１】
そして、関数導出部３１０は、先に選択された移動軌跡２１１の補正に用いた許容係数ε０と、先に算出したモデル経路の移動距離ｄ０とを用いて、下記の式（２４）に示す許容係数εの関数を導出する。例えば、関数導出部３１０は、上記の式（２３）に許容係数ε０と移動距離ｄ０とを代入して「ｋ＝ε０／（ｄ０）２」に変形した上で、かかるｋを上記の式（２３）に改めて代入することによって下記の式（２４）を導出する。
【０１２２】
ε＝ε０×（ｄ／ｄ０）２  ・・・（２４）
【０１２３】
移動軌跡算出部３２０は、差分特定部３２によってアンカー２０のループ経路の移動に関する位置誤差Δｐが特定された場合に、当該ループ経路の移動軌跡の特徴を表すパラメータを算出する処理部である。一態様としては、移動軌跡算出部３２０は、ループ経路の移動が検知された移動体端末１０を対象にループ経路の始点からループ経路の終点までの相対移動座標のログを取得する。その上で、移動軌跡算出部３２０は、各相対移動座標間の距離を累積加算することによってループ経路の移動軌跡の長さ、すなわち移動距離ｄを算出する。
【０１２４】
許容係数算出部３３０は、関数導出部３１０によって導出された許容係数εの関数を用いて、評価関数Ｅに用いる許容係数εを算出する処理部である。一例としては、許容係数算出部３３０は、移動軌跡算出部３２０によって算出されたループ経路の移動距離ｄを上記の式（２４）に代入することによって許容係数εを算出する。なお、ここでは、許容係数εを移動距離ｄの関数とする場合を例示したが、移動軌跡の特徴を示すパラメータは移動距離に限定されない。すなわち、移動軌跡の特徴を示すパラメータとして、移動距離、移動時間、平均移動速度または曲がった回数のうち少なくともいずれか１つのパラメータによって定まる関数を許容係数εの関数とすることができる。
【０１２５】
オフセット算出部３４０は、許容係数算出部３３０によって算出された許容係数εを用いて、ジャイロ１１ｂの零点オフセットΔｂの最適化計算を実行する処理部である。一例としては、オフセット算出部３４０は、許容係数算出部３３０によって算出された許容係数εを上記の式（２２）に代入した評価関数Ｅを最小化するΔｂを上記の式（１７）を用いて算出する。
【０１２６】
補正部３５０は、オフセット算出部３４０によって算出されたジャイロ１１ｂの零点オフセットΔｂを用いて、移動体端末１０の移動軌跡を補正する処理部である。一例としては、補正部３５０は、オフセット算出部３４０によってジャイロ１１ｂの零点オフセットΔｂが算出された移動体端末１０に関する相対移動座標のログを読み出す。その上で、補正部３５０は、ジャイロ１１ｂの零点オフセットΔｂを用いて、先に読み出した相対移動座標を再計算することにより、移動体端末１０の移動軌跡を補正する。その後、補正部３５０は、補正後の移動軌跡を移動軌跡記憶部３５へ格納する。
【０１２７】
［処理の流れ］
続いて、本実施例に係るサーバ装置の処理の流れについて説明する。なお、ここでは、（１）関数導出処理について説明した後に（２）移動軌跡補正処理について説明することとする。
【０１２８】
（１）関数導出処理
図１９は、実施例２に係る関数導出処理の手順を示すフローチャートである。この関数導出処理は、サーバ装置３００の電源がＯＮ状態である場合に実行される処理であり、移動体端末１０からモデル経路の移動軌跡の推定結果がアップロードされた場合に起動される。
【０１２９】
図１９に示すように、モデル経路が移動された場合の移動軌跡の推定結果を取得すると（ステップＳ２０１）、サーバ装置３００は、モデル経路の移動軌跡の長さ、すなわちモデル経路の移動距離ｄ０を算出する（ステップＳ２０２）。
【０１３０】
続いて、サーバ装置３００は、許容係数εに初期値εｓｔを設定する（ステップＳ２０３）。そして、サーバ装置３００は、許容係数εを用いてジャイロ１１ｂの零点オフセットΔｂｓｔの最適化計算を実行する（ステップＳ２０４）。その上で、サーバ装置３００は、最適化計算を行ったΔｂｓｔを用いて移動軌跡２１１を補正する（ステップＳ２０５）。
【０１３１】
その後、許容係数εが上限値εｅｎｄ以上になるまで（ステップＳ２０６否定）、サーバ装置３００は、許容係数εにシフト値Δεをインクリメントし（ステップＳ２０７）、上記のステップＳ２０４及びステップＳ２０５を繰り返し実行する。
【０１３２】
そして、許容係数εが上限値εｅｎｄ以上になった場合（ステップＳ２０６肯定）に、サーバ装置３００は、各々の許容係数εごとに得られた移動軌跡２１１の補正結果のうち最もモデル経路の形状と類似する補正結果を選択する（ステップＳ２０８）。
【０１３３】
最後に、サーバ装置３００は、先に選択された移動軌跡２１１の補正に用いた許容係数ε０と、先に算出したモデル経路の移動距離ｄ０とを用いて、下記の式（２４）に示す許容係数εの関数を導出し（ステップＳ２０９）、処理を終了する。
【０１３４】
（２）移動軌跡補正処理
図２０は、実施例２に係る移動軌跡補正処理の手順を示すフローチャートである。この移動軌跡補正処理は、サーバ装置３００の電源がＯＮ状態である場合に実行される処理であり、差分特定部３２によって移動体端末１０によるループ経路の移動が検知された場合に起動される。
【０１３５】
図２０に示すように、サーバ装置３００は、移動履歴記憶部３１からループ経路の始点から終点までの相対移動座標のログを取得する（ステップＳ３０１）。ループ経路の移動軌跡の特徴を表すパラメータとしてループ経路の移動軌跡の長さ、すなわちループ経路の移動距離ｄを算出する（ステップＳ３０２）。
【０１３６】
続いて、サーバ装置３００は、上記の関数導出処理によって導出された許容係数εの関数に上記のステップＳ３０２で算出されたループ経路の移動距離ｄを代入することによって評価関数Ｅに用いる許容係数εを算出する（ステップＳ３０３）。
【０１３７】
そして、サーバ装置３００は、ステップＳ３０３で算出された許容係数εを用いて、ジャイロ１１ｂの零点オフセットΔｂの最適化計算を実行する（ステップＳ３０４）。その後、サーバ装置３００は、ステップＳ３０４で最適化計算されたジャイロ１１ｂの零点オフセットΔｂを用いて、移動体端末１０の移動軌跡を補正し（ステップＳ３０５）、処理を終了する。
【０１３８】
［実施例２の効果］
上述してきたように、本実施例に係るサーバ装置３００は、ループ経路の移動軌跡の特徴を表すパラメータを算出する。さらに、本実施例に係るサーバ装置３００は、移動軌跡の特徴を表すパラメータを用いて、位置ｐ１および位置ｐ２のずれを誤差として残すことを許容する度合いを表す許容係数εを算出する。さらに、本実施例に係るサーバ装置３００は、位置ｐ１および位置ｐ２のずれと、零点オフセットΔｂ及び許容係数εの乗算値とを含む評価関数Ｅを用いて、ジャイロ１１ｂの零点オフセットΔｂを算出する。
【０１３９】
このため、本実施例に係るサーバ装置３００では、ジャイロ１１ｂの零点オフセットΔｂ以外の誤差要因の大きさを見積もった上でΔｂを最適化できる。それゆえ、本実施例に係るサーバ装置３００では、移動体端末１０の移動軌跡を実際の移動経路に近い移動軌跡に補正することが可能になる。
【０１４０】
図２１〜図２３を用いて、移動軌跡の補正効果について説明する。図２１は、補正前の移動軌跡の一例を示す図である。図２２及び図２３は、補正後の移動軌跡の一例を示す図である。このうち、図２２の例では、上記の式（２２）の許容係数ε（＝120000）を固定としてジャイロ１１ｂの零点オフセットΔｂの最適化計算およびそのΔｂを用いた移動軌跡の補正が実行された例を示す。一方、図２３の例では、上記の式（２４）にループ経路の移動距離ｄ（＝110.8858m）を代入して算出された許容係数ε（＝573478）を用いてジャイロ１１ｂの零点オフセットΔｂの最適化計算およびそのΔｂを用いた移動軌跡の補正が実行された例を示す。なお、図２３の例では、上記の式（２４）の許容係数εの関数においてε０が「120000」であり、ｄ０が「50.7234m」である場合を想定する。
【０１４１】
図２１に示すように、補正前にデッドレコニングによって推定されていた移動軌跡２２０は、ループ経路であるはずの始点および終点が大きく乖離しており、図２２に示す実際の移動経路２３０に比べて大きく歪んでいる。一方、図２２及び図２３に示すように、固定の許容係数εを用いた場合およびループ経路の移動距離ｄから算出した許容係数εを用いた場合には、補正後の移動軌跡２４０が移動軌跡２２０に比べて実際の移動経路２３０に近づいていることがわかる。
【０１４２】
この補正後の移動軌跡２４０と実際の移動経路２３０との間で対応点の誤差、図２２に示す移動軌跡２４０の丸部分と移動経路２３０の丸部分との距離を計算したところ、各対応点の平均誤差は「１．８ｍ」であった。一方、補正後の移動軌跡２５０と実際の移動経路２３０との間で対応点の誤差、図２３に示す移動軌跡２５０の丸部分と移動経路２３０の丸部分との距離を計算したところ、各対応点の平均誤差は「１．３ｍ」であった。このことから、許容係数εを固定とする場合よりも、ループ経路の移動距離から許容係数εを動的に算出した方が実際の移動経路２３０に近いことがわかる。
【実施例３】
【０１４３】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１４４】
［サービスへの適用例１］
例えば、開示の装置は、移動軌跡記憶部３５に記憶された移動体端末１０のグローバル座標のログ、すなわち移動体端末１０の移動軌跡を用いて、マーケティングサービスを提供できる。
【０１４５】
一例としては、サーバ装置３０又は３００は、売り場、あるいは各種の展示が行われるブースなどの座標を記憶しておき、各移動体端末１０の移動軌跡から利用者間で売り場やブースを経由する順路の重複率が閾値よりも大きい経路をリストアップする。かかるリストアップを実行することによって、利用者が入口から売り場Ａ、売り場Ｃ、売り場Ｅの順に売り場を経由して出口から退場する傾向が高いなどのように傾向分析を行うことができる。この傾向分析によって、例えば、多くの利用者が通過する売り場やブースの近傍に広告等を配置したりすることができる。
【０１４６】
他の一例としては、サーバ装置３０又は３００は、集客率が閾値よりも高い売り場やブースをリストアップすることもできる。かかるリストアップを実行することによって、利用者が集まりやすい売り場やブースを集客分析することもできる。この集客分析によって、例えば、多くの利用者が集まる売り場やブースの近傍に広告等を配置したりすることができる。
【０１４７】
このように、マーケティングサービスを提供する場合には、移動体端末１０にはスマートフォンを始めとする利用者所有の端末のみならず、モーションセンサ１１を搭載したマーケティングサービス専用の端末を用いることもできる。例えば、買い物や荷物を収納するカーゴにモーションセンサ１１、アンカー検知部１２や位置推定部１３などの機能部を設けることもできる。
【０１４８】
［サービスへの適用例２］
また、開示の装置は、マーケティングサービス以外にも業務改善サービスにも適用することもできる。一例としては、サーバ装置３０又は３００は、企業の社員のデスク、喫煙所や食堂などの座標を記憶しておき、社員が所持する移動体端末１０の移動軌跡から各社員の時間帯別の所在位置や食事及び喫煙の回数などをリストアップすることができる。かかるリストアップを実行することによって、例えば、退勤指導を行ったりすることができる。他の一例としては、サーバ装置３０又は３００は、工場の社員が所持する移動体端末１０の移動軌跡から各社員の動線が重なる回数が閾値以上である場所をリストアップすることもできる。かかるリストアップを実行することによって、例えば、社員の動線が重ならないように工場内の機器を再配置したりすることができる。
【０１４９】
上記の適用例１及び適用例２に示したサービスは、ＧＰＳの精度が低下する屋内等でも好適に適用することができる。
【０１５０】
また、上記の実施例１では、アンカー２０を用いて第１の地点から第２の地点に移動したことを自動検知する場合を例示したが、移動体端末１０を携帯する利用者が第１の地点及び第２の地点への到着をサーバ装置３０へ指示入力するようにしてもよい。
【０１５１】
また、上記の実施例１では、サーバ装置３０が誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７及び地図生成部３８を有する場合を説明したが、開示のシステムはこれに限定されない。例えば、移動体端末１０が誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７及び地図生成部３８を有することとしてもよい。また、上記の実施例２では、サーバ装置３００が関数導出部３１０、移動軌跡算出部３２０、許容係数算出部３３０、オフセット算出部３４０及び補正部３５０を有する場合を説明したが、開示のシステムはこれに限定されない。例えば、移動体端末１０が関数導出部３１０、移動軌跡算出部３２０、許容係数算出部３３０、オフセット算出部３４０及び補正部３５０を有することとしてもよい。
【０１５２】
また、開示の装置では、所定の範囲内に所在する他の移動体端末１０から該移動体端末１０の位置を受信し、受信した他の移動体端末１０の位置を用いて、デッドレコニングにより推定される移動体端末１０の位置を補正することもできる。これによって、アンカー２０の位置が分かったり、仮想アンカーが環境中に設定されたりすると、移動体端末１０は位置を補正する機会を増やすことができる。このように位置が補正された移動体の位置情報を、他の移動体端末１０が活用して位置補正に利用することができる。
【０１５３】
一例としては、移動体端末１０は、他の移動体端末１０と距離が所定値以内に近づくと、互いにデッドレコニングで推定した位置を通信する。このとき、一方の移動体端末１０の位置が他方の移動体端末１０の位置より精度が良い場合には、精度の良い方、例えば前回にキャリブレーションが行われてからの移動量が少ない方の移動体端末１０をアンカーと見なし、その位置情報を利用して位置を補正する。
【０１５４】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７又は地図生成部３８をサーバ装置の外部装置としてネットワーク経由で接続するようにしてもよい。また、誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７又は地図生成部３８を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、サーバ装置の機能を実現するようにしてもよい。
【０１５５】
［キャリブレーションプログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図２４を用いて、上記の実施例と同様の機能を有するキャリブレーションプログラムを実行するコンピュータの一例について説明する。
【０１５６】
図２４は、実施例１〜実施例３に係るキャリブレーションプログラムを実行するコンピュータの一例について説明するための図である。図２４に示すように、コンピュータ１００は、操作部１１０ａと、スピーカ１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０と有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０１５７】
ＨＤＤ１７０には、上記の実施例１で示した誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７及び地図生成部３８と同様の機能を発揮するキャリブレーションプログラム１７０ａが予め記憶される。また、ＨＤＤ１７０には、関数導出部３１０、移動軌跡算出部３２０、許容係数算出部３３０、オフセット算出部３４０及び補正部３５０と同様の機能をさらに発揮するキャリブレーションプログラム１７０ａが記憶されることとしてもかまわない。このキャリブレーションプログラム１７０ａについては、図１に示した各々の誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７及び地図生成部３８の各構成要素と同様、適宜統合又は分離しても良い。また、キャリブレーションプログラム１７０ａは、図１６に示した関数導出部３１０、移動軌跡算出部３２０、許容係数算出部３３０、オフセット算出部３４０及び補正部３５０の各構成要素と同様、適宜統合又は分散しても良い。すなわち、ＨＤＤ１７０に格納される各データは、常に全てのデータがＨＤＤ１７０に格納される必要はなく、処理に必要なデータのみがＨＤＤ１７０に格納されれば良い。
【０１５８】
そして、ＣＰＵ１５０が、キャリブレーションプログラム１７０ａをＨＤＤ１７０から読み出してＲＡＭ１８０に展開する。これによって、図２４に示すように、キャリブレーションプログラム１７０ａは、キャリブレーションプロセス１８０ａとして機能する。このキャリブレーションプロセス１８０ａは、ＨＤＤ１７０から読み出した各種データを適宜ＲＡＭ１８０上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、キャリブレーションプロセス１８０ａは、図１に示した誤差特定部３２、オフセット算出部３３、補正部３４、アンカー特定部３６、仮想アンカー生成部３７及び地図生成部３８にて実行される処理、例えば図１３に示す処理を含む。また、キャリブレーションプロセス１８０ａは、図１６に示した関数導出部３１０、移動軌跡算出部３２０、許容係数算出部３３０、オフセット算出部３４０及び補正部３５０にて実行される処理、例えば図１９や図２０に示す処理を含む。なお、ＣＰＵ１５０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ１５０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【０１５９】
なお、上記のキャリブレーションプログラム１７０ａについては、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【０１６０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１６１】
（付記１）コンピュータが、
加速度センサ及び角速度センサを保持する移動体が第１の地点から位置または角度の誤差が特定量となる第２の地点へ移動した場合に、前記加速度センサ及び前記角速度センサの出力を用いたデッドレコニングにより前記第２の地点で得られる位置または角度と前記特定量との差分を特定し、
特定結果として得られた差分から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する
各処理を実行することを特徴とするキャリブレーション方法。
【０１６２】
（付記２）前記第１の地点を始点とし、前記第２の地点を終点として形成されるループ経路には、識別情報を発信する発信機が設置されており、
前記差分を特定する処理として、
前記発信機から前記識別情報が受信されなくなった時点から前記識別情報と同一の識別情報が再度受信される時点までに前記デッドレコニングにより前記第２の地点で推定された位置または角度と前記特定量との差分を特定する処理を実行することを特徴とする付記１に記載のキャリブレーション方法。
【０１６３】
（付記３）前記コンピュータが、
前記第１の地点から前記第２の地点までの移動軌跡の特徴を表すパラメータを算出し、
前記移動軌跡の特徴を表すパラメータを用いて、前記第１の地点および前記第２の地点で推定される位置の差分を誤差として残すことを許容する度合いを表す許容係数を算出する各処理をさらに実行し、
前記角速度センサの零点オフセットを算出する処理として、
前記第１の地点および前記第２の地点で推定される位置の差分と、前記零点オフセット及び前記許容係数の乗算値とを含む評価関数を用いて、前記角速度センサの零点オフセットを算出する処理を実行することを特徴とする付記２に記載のキャリブレーション方法。
【０１６４】
（付記４）前記コンピュータが、
前記角速度センサの零点オフセットに基づいて前記移動体の移動軌跡を補正し、
補正後の移動体の移動軌跡上で識別情報が受信された発信機の位置を特定する各処理をさらに実行することを特徴とする付記２または３に記載のキャリブレーション方法。
【０１６５】
（付記５）前記コンピュータが、
前記角速度センサの零点オフセットに基づいて前記移動体の移動軌跡を補正し、
補正後の移動体の移動軌跡上で前記加速度センサおよび／または前記角速度センサによって検出される速度、加速度および／または角速度の時間変化が所定の特徴パターンを満たす地点の相対位置を抽出する各処理をさらに実行し、
前記角速度センサの零点オフセットを算出する処理として、
前記相対位置を用いて前記角速度センサの零点オフセットを算出する処理を実行することを特徴とする付記１〜４のいずれか１つに記載のキャリブレーション方法。
【０１６６】
（付記６）前記コンピュータが、
所定の範囲内に所在する他の移動体から該移動体の位置を受信し、
受信した他の移動体の位置を用いて、前記デッドレコニングにより推定される移動体の位置を補正する
各処理をさらに実行することを特徴とする付記１〜５のいずれか一つに記載のキャリブレーション方法。
【０１６７】
（付記７）前記コンピュータが、
前記角速度センサの零点オフセットに基づいて前記移動体の移動軌跡を補正し、
複数の移動体の移動軌跡を記憶する移動軌跡記憶部を参照して、各移動体の移動軌跡を重ね合わせることにより移動可能な経路が特定された地図を生成する各処理を実行することを特徴とする付記１〜６のいずれか一つに記載のキャリブレーション方法。
【０１６８】
（付記８）加速度センサ及び角速度センサを保持する移動体が第１の地点から位置または角度の誤差が特定量となる第２の地点へ移動した場合に、前記加速度センサ及び前記角速度センサの出力を用いたデッドレコニングにより前記第２の地点で得られる位置または角度と前記特定量との差分を特定する特定部と、
前記特定部によって特定された差分から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する算出部と
を有することを特徴とする情報処理装置。
【０１６９】
（付記９）コンピュータに、
加速度センサ及び角速度センサを保持する移動体が第１の地点から位置または角度の誤差が特定量となる第２の地点へ移動した場合に、前記加速度センサ及び前記角速度センサの出力を用いたデッドレコニングにより前記第２の地点で得られる位置または角度と前記特定量との差分を特定し、
特定結果として得られた差分から、当該移動体が静止状態である場合に前記角速度センサによって出力されるセンサ値である零点オフセットを算出する
各処理を実行させることを特徴とするキャリブレーションプログラム。
【符号の説明】
【０１７０】
１    測位システム
１０    移動体端末
２０    アンカー
３０    サーバ装置
３１    移動履歴記憶部
３２    誤差特定部
３３    オフセット算出部
３４    補正部
３５    移動軌跡記憶部
３６    アンカー特定部
３６ａ  アンカー記憶部
３７    仮想アンカー生成部
３７ａ  仮想アンカー記憶部
３８    地図生成部
【図１】
0005838758.tif 000023
【図２】
0005838758.tif 000024
【図３】
0005838758.tif 000025
【図４】
0005838758.tif 000026
【図５】
0005838758.tif 000027
【図６】
0005838758.tif 000028
【図７】
0005838758.tif 000029
【図８】
0005838758.tif 000030
【図９】
0005838758.tif 000031
【図１０】
0005838758.tif 000032
【図１１】
0005838758.tif 000033
【図１２】
0005838758.tif 000034
【図１３】
0005838758.tif 000035
【図１４】
0005838758.tif 000036
【図１５】
0005838758.tif 000037
【図１６】
0005838758.tif 000038
【図１７】
0005838758.tif 000039
【図１８】
0005838758.tif 000040
【図１９】
0005838758.tif 000041
【図２０】
0005838758.tif 000042
【図２１】
0005838758.tif 000043
【図２２】
0005838758.tif 000044
【図２３】
0005838758.tif 000045
【図２４】
0005838758.tif 000046
【図２５】
0005838758.tif 000047