(57)【特許請求の範囲】
【請求項１】
進行方向推定システムであって、
プロセッサと、記憶装置とを含み、
前記記憶装置は、
測定時刻と関連付けられた移動端末の３軸における角速度の値を含む、角速度データと、
測定時刻と関連付けられた前記移動端末の前記３軸における加速度の値を含む、加速度データと、を格納し、
前記プロセッサは、
前記角速度データに基づき、前記移動端末の所持者の向き変更速度の絶対値を推定し、
前記３軸における加速度それぞれの統計値に基づき、前記３軸から候補軸を選択し、
前記候補軸の前記統計値と閾値との比較結果に基づき、前記候補軸を選択軸として選択するか否か判定し、
前記候補軸を前記選択軸として選択しない場合、予め定められた軸を前記選択軸として選択し、
前記選択軸における加速度の統計値に基づき、前記選択軸の向きを推定し、
前記選択軸の向き及び前記角速度データにおける前記選択軸での角速度の符号に基づき、前記所持者の進行方向変化の方向を推定し、
前記所持者の現在進行方向を、前回推定した進行方向、前記向き変更速度の絶対値、及び前記進行方向変化の方向に基づき推定する、進行方向推定システム。
【請求項２】
請求項１に記載の進行方向推定システムであって、
前記プロセッサは、
前記角速度データに対して、遮断周波数より大きい信号を遮るローパスフィルタ処理を実行する、進行方向推定システム。
【請求項３】
請求項１に記載の進行方向推定システムであって、
前記プロセッサは、
前記加速度データに基づき、前記移動端末の所持角度の変化を推定し、
前記所持角度の変化に基づき、前記所持者の進行方向の変化の有無を判定する、進行方向推定システム。
【請求項４】
請求項３に記載の進行方向推定システムであって、
前記記憶装置は、所持角度変化特定情報をさらに含み、
前記所持角度変化特定情報は、特徴量と、前記移動端末の所持角度及び前記所持者の進行方向変化の態様を示すラベルと、を対応付け、
前記プロセッサは、
前記角速度データ及び前記加速度データから特徴量を計算し、
前記所持角度変化特定情報と前記計算された特徴量とを比較し、前記計算された特長量に対するラベルを選択し、
前記選択したラベルに応じて、前記所持者の進行方向の変化の有無を判定する、進行方向推定システム。
【請求項５】
屋内測位システムであって、
プロセッサと、記憶装置とを含み、
前記記憶装置は、
地図データと、
測定時刻と関連付けられた移動端末の３軸における角速度の値を含む、角速度データと、
測定時刻と関連付けられた前記移動端末の前記３軸における加速度の値を含む、加速度データと、を格納し、
前記プロセッサは、
前記加速度データに基づき、前記移動端末の所持者の移動スピードを推定し、
前記角速度データに基づき、前記所持者の向き変更速度の絶対値を推定し、
前記３軸における加速度それぞれの統計値に基づき、前記３軸から候補軸を選択し、
前記候補軸の前記統計値と閾値との比較結果に基づき、前記候補軸を選択軸として選択するか否か判定し、
前記候補軸を前記選択軸として選択しない場合、予め定められた軸を前記選択軸として選択し、
前記選択軸における加速度の統計値に基づき、前記選択軸の向きを推定し、
前記選択軸の向き及び前記角速度データにおける前記選択軸での角速度の符号に基づき、前記所持者の進行方向変化の方向を推定し、
前記所持者の現在進行方向を、前回推定した進行方向、前記向き変更速度の絶対値、及び前記進行方向変化の方向に基づき推定し、
前記所持者の現在位置を、前記地図データ、前記移動スピード及び前記現在進行方向に基づき推定する、屋内測位システム。
【請求項６】
移動端末の所持者の進行方向の推定方法であって、
測定時刻と関連付けられた前記移動端末の３軸における角速度の値を含む、角速度データを取得し、
測定時刻と関連付けられた前記移動端末の前記３軸における加速度の値を含む、加速度データを取得し、
前記角速度データに基づき、前記所持者の向き変更速度の絶対値を推定し、
前記３軸における加速度それぞれの統計値に基づき、前記３軸から候補軸を選択し、
前記候補軸の前記統計値と閾値との比較結果に基づき、前記候補軸を選択軸として選択するか否か判定し、
前記選択軸における加速度の統計値に基づき、前記選択軸の向きを推定し、
前記選択軸の向き及び前記角速度データにおける前記選択軸での角速度の符号に基づき、前記所持者の進行方向変化の方向を推定し、
前記所持者の現在進行方向を、前回決定した進行方向、前記向き変更速度の絶対値、及び前記進行方向変化の方向に基づき推定する、推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動端末所持者の進行方向を推定する進行方向推定システムに関する。
【背景技術】
【０００２】
測位技術は、ナビゲーション、フィットネストラッキング、監視システム等、多くの用途において広く使用されている。一般に、屋外環境における位置情報は、移動端末により受信されたグローバルポジショニングシステム（ＧＰＳ）信号によって計算される。屋内環境において、ＧＰＳ信号が届かないため、様々な測位方法が確立されている。その測位方法には、環境測位方法や歩行者デッドレコニング（ＰＤＲ）方法などが含まれる。環境測位方法は、ＷｉＦｉアクセスポイントのようなインフラを必要とするが、ＰＤＲはそのようなインフラを必要としない。環境測位方法で必要とされるインフラが整備されていないエリアが存在する。したがって、ＰＤＲはコストと利用可能範囲の点においてより効果的である。
【０００３】
ＰＤＲは、移動端末に実装されているセンサのデータに基づいて、移動端末所持者の速さと進行方向を推定する。速さは、移動端末によって記録される加速度データに基づいて、一定期間における歩数と歩幅を推定することで、計算される。一方、移動端末所持者の進行方向は、磁気センサ又はジャイロセンサによって推定される。磁気センサは、屋内において電磁干渉の影響を受けるため、信頼性が低い。ジャイロセンサは、環境条件に影響されないため、信頼性が高い。
【０００４】
特開２０１４−１９６９４１号公報（特許文献１）は、ＰＤＲの一例を開示する。特許文献１は、「ユーザによって携帯される携帯端末装置１に、角速度を測定して角速度情報１４０を取得するジャイロセンサ１４と、加速度を測定して加速度情報１５０を取得する加速度センサ１５と、周囲の被写体を撮像して画像情報１６０を取得するカメラ１６と、当該画像情報１６０に基づいて被写体の動きベクトルを算出するベクトル演算部１０１と、角速度情報１４０と加速度情報１５０とに応じて、ユーザの歩行動作による進行方向とカメラ１６の撮像方向との相対関係を判定する相関判定部１０２と、算出された被写体の動きベクトルと相関判定情報１１２とに応じて、ユーザが直進状態か否かを判定する直進歩行判定部１０３と、ユーザが直進状態であると判定されたことに応じて、ジャイロセンサ１４により取得される角速度情報１４０を補正する補正部１０４とを設ける」ことを開示している（要約）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１９６９４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の技術は、移動端末所持者の進行方向を推定するために、システムにおいて予め決められた向きに移動端末が固定されていることを必要とはしない。しかし、特許文献１の技術において、移動端末所持者が周囲を撮像できるようにカメラを保持していない場合、例えば、所持者のポケット若しくはバッグに収容されている、又は、所持者の手若しくはアクセサリによってカメラが遮られている場合、正確に進行方向を推定することはできない。
【０００７】
したがって、移動端末の所持態様の制限を小さくしつつ、移動端末による測定データを使用して移動端末所持者の進行方向をより正確に推定することができる技術が望まれる。
【課題を解決するための手段】
【０００８】
本発明の代表的な一例は、進行方向推定システムであって、プロセッサと、記憶装置とを含み、前記記憶装置は、測定時刻と関連付けられた移動端末の３軸における角速度の値を含む、角速度データと、測定時刻と関連付けられた前記移動端末の前記３軸における加速度の値を含む、加速度データと、を格納し、前記プロセッサは、前記角速度データに基づき、前記移動端末の所持者の向き変更速度の絶対値を推定し、前記加速度データに基づき、前記３軸から一つの軸を選択し前記一つの軸の向きを推定し、前記一つの軸の向き及び前記角速度データにおける前記一つの軸での角速度の符号に基づき、前記所持者の進行方向変化の方向を推定し、前記所持者の現在進行方向を、前回推定した進行方向、前記向き変更速度の絶対値、及び前記進行方向変化の方向に基づき推定する。
【発明の効果】
【０００９】
本発明の一態様によれば、移動端末の所持態様の制限を小さくしつつ、移動端末による測定データを使用して移動端末所持者の進行方向をより正確に推定することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例１に係る、移動端末所持者の進行方向を推定する進行方向推定システムの構成の説明図である。
【図２】実施例１に係る進行方向推定システムの機能ブロック図である。
【図３】実施例１に係る、進行方向推定プログラムの処理フローチャートである。
【図４】実施例１における、移動端末所持者の進行方向の概略説明図である。
【図５】実施例１に係る、角速度データの説明図である。
【図６】実施例１に係る、加速度データの説明図である。
【図７】実施例１に係る、向き変更速度（角速度）の絶対値推定部の処理フローチャートである。
【図８】実施例１に係る、進行方向変化の方向推定部の処理フローチャートである。
【図９】実施例１に係る、現在進行方向計算部の処理フローチャートである。
【図１０】実施例２に係る、移動端末所持者の進行方向を推定する進行方向推定システムの、機能ブロックである。
【図１１】実施例２に係る、進行方向推定プログラムの処理フローチャートである。
【図１２】実施例３に係る、移動端末所持者の進行方向を推定する進行方向推定システムの説明図である。
【図１３】実施例３に係る、移動端末所持者の進行方向を推定する進行方向推定システムの機能ブロック図である。
【図１４】実施例３に係る、所持角度変化検出処理の処理フローチャートである。
【図１５】実施例４に係る、移動端末所持者の進行方向を推定する進行方向推定システムの説明図である。
【図１６】実施例４に係る、移動端末所持者の進行方向を推定する進行方向推定システムの機能ブロック図である。
【図１７】実施例４に係る、所持角度変化特定テーブルの説明図である。
【図１８】実施例４に係る、所持角度変化検出プログラムの処理フローチャートである。
【図１９】実施例５に係る、移動端末所持者の進行方向を推定する進行方向推定システムを含む、屋内測位システムの説明図である。
【図２０】実施例５に係る、移動端末所持者の進行方向を推定する進行方向推定システムを含む、屋内測位システムの機能ブロック図である。
【図２１】実施例５に係る、地図データの説明図である。
【図２２】例えば、サーバの入出力装置に表示される画像例である。
【図２３】実施例６に係る屋内測位システムのアプリケーションの他の例を示す。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【００１２】
以下において、システムにおいて予め定義された所持角度において移動端末を固定することが不要な、移動端末所持者の進行方向を推定する進行方向推定システムを開示する。特に、移動端末内の加速度センサ及びジャイロセンサによって測定された加速度データ及び角速度データに基づいて、進行方向を推定するシステムを開示する。
【００１３】
以下に開示する進行方向推定システムは、加速度データと角速度データを使用して、正確な進行方向の推定を可能とする。当該進行方向推定システムによる進行方向推定方法は、三つのステップを含む。第１ステップは、移動端末所持者が向きを変えている（進行方向を変えている）ときに、ジャイロセンサにより測定された３軸における角速度データを使用して、向き変更速度の絶対値を計算する。
【００１４】
第２ステップは、角速度データ及び加速度データに基づき、向き変更速度が正であるか（所持者が右又は時計回りに向きを変えることに対応）、向き変更速度が負であるか（所持者が左又は反時計回りに向きを変えることに対応）、を判定する。第３ステップは、進行方向の変化と、前回の第３ステップで推定された進行方向とから、現在の進行方向を推定する。これにより、任意の角度において所持されている移動端末の移動端末所持者（移動端末）の進行方向を推定することができる。
【００１５】
例えば、進行方向推定システムは、３軸の加速度センサとジャイロセンサによって測定された、測定時刻を含む加速度データと角速度データとを格納する記憶領域を含む。進行方向推定システムは、任意の角度で所持されている移動端末による加速度データと角速度データを使用して、進行方向を推定する。
【実施例１】
【００１６】
以下において、実施例１を図１〜図９を参照して説明する。移動端末２００の所持者の進行方向を推定する場合、実施例１の進行方向推定システムは、向き変化速度の絶対値を角速度データ１３１に基づいて推定する。角速度データ１３１は、移動端末２００に含まれるジャイロセンサ２３０によって測定される。進行方向推定システムは、角速度データ１３１及び加速度データ１３２の組み合わせに基づいて、向き変更速度が正であるか（所持者の右回りに対応）又は負であるか（所持者の左回りに対応）、判定する。
【００１７】
角速度データ１３１及び加速度データ１３２は、それぞれ、移動端末２００に含まれるジャイロセンサ２３０及び加速度センサ２４０によって測定される。進行方向推定システムは、前回推定された進行方向と、今回推定された進行方向における変化とに基づいて、現在の進行方向を計算する。
【００１８】
このように、移動端末２００の所持者の進行方向を、移動端末の所持角度に拠らず、推定することができる。その結果、移動端末所持者は、進行方向推定システムの動作開始時に、任意の所持角度を選択することができる。なお、実施例１においては、より正確な進行方向推定のため、移動端末の所持角度は略一定に維持されていることが想定される。
【００１９】
図１は、実施例１に係る、予め定義された方法で移動端末の向きを固定することを必要としない、移動端末所持者の進行方向を推定する進行方向推定システムの、構成の説明図である。
【００２０】
進行方向推定システムは、サーバ１００及び移動端末２００を含む。移動端末２００は、ジャイロセンサ２３０及び加速度センサ２４０を含む。ジャイロセンサ２３０は、移動端末２００の所持者の回転の動き（向きの変更）によって生成される角速度を測定する。加速度センサ２４０は、移動端末２００において生成された加速度を測定する。
【００２１】
移動端末２００は、ジャイロセンサ２３０及び加速度センサ２４０それぞれによって測定された、角速度データ２５１及び加速度データ２５２を格納する。サーバ１００は、移動端末２００に格納されている角速度データ２５１及び加速度データ２５２を収集し、移動端末所持者の進行方向を推定する。
【００２２】
まず、移動端末２００を説明する。移動端末２００は、プロセッサ２１０、メモリ２２０、ジャイロセンサ２３０、加速度センサ２４０、補助記憶２５０及び通信インタフェース２６０を含む。これら構成要素は、互いにバスで接続されている。メモリ２２０及び補助記憶２５０は記憶装置である。スマートフォンは、移動端末２００の一例である。移動端末２００は、ジャイロセンサ２３０及び加速度センサ２４０によって、所持者の動きのジャイロセンサデータ及び加速度データを測定することができれば、スマートフォンに限定されない。
【００２３】
移動端末２００のプロセッサ２１０は、メモリ２２０に格納されているプログラムに従って動作することで、様々な機能部として動作する。メモリ２２０は、測定データ取得プログラム２２１を格納する。測定データ取得プログラム２２１は、ジャイロセンサ２３０及び加速度センサ２４０によって測定された角速度データ及び加速度データを、測定時刻と関連づけて格納する。その結果、角速度データ及び加速度データは、角速度データ２５１及び加速度データ２５２として、補助記憶２５０に格納される。
【００２４】
ジャイロセンサ２３０は、３軸において角速度を測定することができるセンサであり、具体的には、ロール軸（Ｘ軸）、ピッチ軸（Ｙ軸）及びヨー軸（Ｚ軸）における角速度を測定することができる。
【００２５】
加速度センサ２４０は、３軸において加速度を測定することができるセンサであり、具体的には、前後軸（Ｘ軸）、左右軸（Ｙ軸）及び上下軸（Ｚ軸）における加速度を測定することができる。
【００２６】
補助記憶２５０は、角速度データ２５１及び加速度データ２５２を格納する。補助記憶２５０は、非一時的な記憶媒体を含み、例えば、可搬記憶媒体を含む。角速度データ２５１及び加速度データ２５２は、図５及び図６を参照して、それぞれ詳細に後述する。
【００２７】
移動端末２００の通信インタフェース２６０は、移動端末２００をネットワーク１５０に接続するためのインタフェースである。
【００２８】
次に、サーバ１００を説明する。サーバ１００は、プロセッサ１１０、メモリ１２０、補助記憶１３０及び通信インタフェース１４０を含む。これら構成要素は、バスで互いに接続されている。メモリ１２０及び補助記憶１３０は記憶装置である。
【００２９】
サーバ１００のプロセッサ１１０は、メモリ２２０に格納されているプログラムに従って動作することで、様々な機能部として動作する。メモリ１２０は、進行方向推定プログラム１２１を格納する。
【００３０】
進行方向推定プログラム１２１は、移動端末所持者の向き変更速度（角速度）の絶対値を推定し、さらに、向き変更速度が正であるか（所持者の右回転に対応）又は負であるか（所持者の左回転に対応）を角速度データ１３１及び加速度データ１３２に基づいて判定することによって、進行方向変化の方向を推定する。進行方向推定プログラム１２１は、図２、３、７〜９を参照して、詳細に後述する。
【００３１】
サーバ１００の補助記憶１３０は、移動端末２００から収集された角速度データ１３１及び加速度データ１３２を格納する。具体的には、サーバ１００は、定期的に（例えば３秒毎に）データ取得要求を移動端末２００にネットワーク１５０を介して送信する。移動端末２００は、所定のサンプリング間隔で角速度と加速度を測定する。１回で収集されるタイムスロットの測定データは、複数サンプリング値、つまり、複数測定時刻の角速度値及び加速度値を含む。
【００３２】
サーバ１００からデータ取得要求を受信すると、移動端末２００は、移動端末２００の補助記憶２５０に格納されている、未送信の角速度データ２５１及び加速度データ２５２を、サーバ１００にネットワーク１５０を介して送信する。移動端末２００から角速度データ２５１及び加速度データ２５２を受信すると、サーバ１００は、受信したデータを、補助記憶１３０に、角速度データ１３１及び加速度データ１３２として格納する。
【００３３】
サーバ１００が移動端末２００の角速度データ２５１及び加速度データ２５２を収集する方法は、上記方法に限定されない。サーバ１００は、直接に、角速度データ２５１及び加速度データ２５２を格納する可搬記憶媒体から角速度データ２５１及び加速度データ２５２を読み出してもよい。
【００３４】
サーバ１００の通信インタフェース１４０は、サーバ１００をネットワーク１５０に接続するためのインタフェースである。
【００３５】
進行方向推定システムは、進行方向推定プログラム１２１を実行する計算機で構成することができ、サーバ１００に限定されない。例えば、移動端末２００が進行方向推定プログラム１２１を実行する場合、移動端末２００はサーバ１００と同様の機能を有し、進行方向推定システムとして動作する。
【００３６】
図２は、実施例１に係る進行方向推定システムの、機能ブロック図である。進行方向推定プログラム１２１は、向き変更速度の絶対値推定部１２１１、進行方向変化の方向推定部１２１２、及び現在進行方向計算部１２１３を含む。
【００３７】
向き変更速度の絶対値推定部１２１１は、移動端末２００の所持者の向き変更速度（角速度）の絶対値を、下記式に従って計算する。
【００３８】
【数１】
0006653151.tif 000002
【００３９】
ｔは、ジャイロセンサ２３０が測定する角速度の測定時刻である。
Ｇｓは、時刻ｔにおける、移動端末２００の所持者の回転速度の絶対値である。
Ｇｘは、時刻ｔにおける、角速度データ１３１に格納されているロール軸における角速度である。
Ｇｙは、時刻ｔにおける、角速度データ１３１に格納されているピッチ軸における角速度である。
Ｇｚは、時刻ｔにおける、角速度データ１３１に格納されているヨー軸における角速度である。
【００４０】
プロセッサ１１０は、向き変更速度の絶対値推定部１２１１を実行することで、向き変更速度の絶対値推定部として動作する。向き変更速度の絶対値推定部１２１１の処理フローは、図７を参照して詳細に後述される。
【００４１】
進行方向変化の方向推定部１２１２は、上述のように、向き変更速度（角速度）が正であるか（所持者の右回転に対応）又は負であるか（所持者の左回転に対応）を角速度データ１３１及び加速度データ１３２に基づいて判定する。プロセッサ１１０は、進行方向変化の方向推定部１２１２を実行することで、進行方向変化の方向推定部として動作する。進行方向変化の方向推定部１２１２の処理フローは、図８を参照して詳細に後述される。
【００４２】
現在進行方向計算部１２１３は、上記２つの処理部１２１１、１２１２から出力された進行方向変化の情報と、前回推定された進行方向と、に基づいて、移動端末２００の所持者の現在の進行方向を計算する。プロセッサ１１０は、現在進行方向計算部１２１３を実行することで、現在進行方向計算部として動作する。現在進行方向計算部１２１３の処理フローは、図９を参照して詳細に後述される。 
【００４３】
図３は、実施例１に係る、進行方向推定プログラム１２１の処理フローチャートである。進行方向推定プログラム１２１は、サーバ１００のプロセッサ１１０によって実行される。
【００４４】
まず、プロセッサ１１０は、新たな角速度データ１３１と加速度データ１３２とを、補助記憶１３０から読み出す（ステップ３０１）。新たな角速度データ１３１及び加速度データ１３２データは、例えば、移動端末２００から収集した直前のタイムスロットの測定データである。読み出した角速度データ１３１と加速度データ１３２は、それぞれ、複数の測定時刻における角速度の値及び加速度の値を含む。
【００４５】
ステップ３０２において、プロセッサ１１０は、数式（１）に従って、各測定時刻における移動端末２００の所持者の向き変更速度の絶対値を推定する。ステップ３０２の処理フローは、図７を参照して詳細に後述する。
【００４６】
ステップ３０３において、プロセッサ１１０は、上述のように、各測定時刻それぞれにおける向き変更速度が正であるか（所持者の右回転に対応）又は負であるか（所持者の左回転に対応）を角速度データ１３１及び加速度データ１３２に基づいて判定することによって、各測定時刻における進行方向変化の方向を推定する。ステップ３０３の処理フローは、図８を参照して詳細に後述する。
【００４７】
ステップ３０４において、プロセッサ１１０は、ステップ３０３及びステップ３０２の結果に基づいて、移動端末２００の所持者の現在の進行方向を計算する。ステップ３０４の処理フローは、図９を参照して詳細に後述する。以上により処理が終了する。
【００４８】
上述の方法により、サーバ１００が新しい角速度データ１３１及び加速度データ1３２を取得した後、移動端末２００の所持者の現在の進行方向を更新することができる。更新された角速度データ１３１及び加速度データ１３２を頻繁に取得することで、進行方向推定システムは、リアルタイムで、移動端末２００の所持者の現在の進行方向を推定できる。
【００４９】
図４は、実施例１における、移動端末所持者の進行方向の概略説明図である。図４は、角度単位における、移動端末所持者の進行方向、及び、進行方向変化における移動端末所持者の向きの変化の例を示す。
【００５０】
フィールドマップ４００は、移動端末所持者４０１が存在する二次元環境を示す。移動端末所持者４０１（移動端末）の進行方向は、現在進行方向と予め定義されたベクトル４２０との間の角度で定義される。進行方向の単位は、例えば、度である。
【００５１】
移動端末所持者４０１の現在進行方向４０２は、０°である。現在進行方向４０２と予め定義されたベクトル４２０との間の角度は０°であるからである。移動端末所持者４０１が現在進行方向４０２から右に曲がると、一例において、移動端末所持者４０１の進行方向は、３０°になる。これは、進行方向変化（向きの変化）が正の値を有することを意味する。一方、移動端末所持者４０１が、現在進行方向４０２から左に曲がると、一例において、移動端末所持者４０１の進行方向は、−３０°になる。これは、進行方向変化（向きの変化）が負の値を有することを意味する。
【００５２】
１８０°よりも大きい進行方向は、３６０°を減算することによって負の値と見なされる。たとえば、現在進行方向が１７０°であり、移動端末所持者４０１が現在進行方向から右に曲がり、新しい進行方向が１７０°＋３０°＝２００°であり、１８０°より大きいとする。この場合、２００°−３６０°＝−１６０°という負の値が新たに割り当てられる。
【００５３】
計算方法の規則として、移動端末２００が現在進行方向から右に曲がる場合、進行方向変化の値は、正の値である。移動端末２００が現在進行方向から左に曲がる場合、進行方向変化の値は、負の値である。進行方向４０２から進行方向４０５までの右側の進行方向の値は、〔０°、１８０°〕の範囲である。進行方向４０２から進行方向４０５までの左側の進行方向の値は、〔０°、−１８０°〕の範囲である。なお、この規則は、進行方向の計算方法の一例に過ぎない。
【００５４】
図５は、実施例１に係る、角速度データ１３１と角速度データ２５１（以下において角速度データと総称する）の説明図である。角速度データが測定される時刻は、時刻カラム５０１に登録される。ロール軸（Ｘ軸）における角速度は、ＧＹＲＯ＿Ｘカラム５０２に登録される。ピッチ軸（Ｙ軸）における角速度は、ＧＹＲＯ＿Ｙカラム５０３に登録される。ヨー軸（Ｚ軸）における角速度は、ＧＹＲＯ＿Ｚカラム５０４に登録される。
【００５５】
図６は、実施例１に係る、加速度データ１３２と加速度データ２５２（以下において加速度データと総称する）の説明図である。加速度データは、時刻カラム６０１、加速度Ｘカラム６０２、加速度Ｙカラム６０３、及び加速度Ｚカラム６０４を有する。
【００５６】
加速度データが測定された時刻は、時刻カラム６０１に格納される。左右軸（Ｘ軸）における加速度は、加速度Ｘカラム６０２に登録される。前後軸（Ｙ軸）における加速度は、加速度Ｙカラム６０３に登録される。上下軸（Ｚ軸）における加速度は、加速度Ｚカラム６０４に登録される。
【００５７】
図７は、実施例１に係る、向き変更速度（角速度）の絶対値推定部１２１１の処理フローチャートである。向き変更速度の絶対値推処理は、サーバ１００のプロセッサ１１０により実行される。
【００５８】
ステップ７０１において、プロセッサ１１０は、複数の測定時刻における移動端末２００の３軸での角速度データを、角速度データ１３１から読み出す。各軸における角速度データは、アレイリストにより表わされる。各アレイリストは、データを測定時刻の順序で格納する。ＧＹＲＯ＿Ｘ、ＧＹＲＯ＿Ｙ及びＧＹＲＯ＿Ｚは、ロー軸、ピッチ軸及びヨー軸における角速度の値のアレイリストを示し、それぞれ各軸における複数測定時刻の測定値を保持する。
【００５９】
ステップ７０２において、プロセッサ１１０は、測定時刻それぞれにおける、向き変更速度の絶対値を計算し、アレイリストＧＹＲＯ＿Ｓに格納する。ＧＹＲＯ＿Ｓ［］は、変数であり、各測定時刻における向き変更速度の絶対値を示す。ｌｅｎｇｔｈ（ＧＹＲＯ＿Ｘ）は、アレイリストＧＹＲＯ＿Ｘの長さ、つまり、要素数を示す。
【００６０】
ＧＹＲＯ＿Ｘ［］、ＧＹＲＯ＿Ｙ［］及びＧＹＲＯ＿Ｚ［］は、変数であり、ロー軸、ピッチ軸及びヨー軸における、各測定時刻の角速度の測定値を示す。インデックスは、測定順序を示す。同一インデックスの値は、同一時刻において測定された角速度である。
【００６１】
ＧＹＲＯ＿Ｓの各要素は、同一インデックスのＧＹＲＯ＿Ｘ、ＧＹＲＯ＿Ｙから、数式１に従って計算される。つまり、ある測定時刻における向き変更速度の絶対値ＧＹＲＯ＿Ｓ［ｉ］は、同測定時刻におけるＧＹＲＯ＿Ｘ［ｉ］、ＧＹＲＯ＿Ｙ［ｉ］及びＧＹＲＯ＿Ｚ［ｉ］から、数式１に従って計算される。したがって、ＧＹＲＯ＿Ｓは、ＧＹＲＯ＿Ｘ、ＧＹＲＯ＿Ｙ及びＧＹＲＯ＿Ｚと同数の要素を有する。以上で、向き変更速度の絶対値推定の処理は終了する。
【００６２】
図８は、実施例１に係る、進行方向変化の方向推定部１２１２の処理フローチャートである。進行方向変化の方向推定処理は、サーバ１００のプロセッサ１１０によって実行される。ステップ８０１において、プロセッサ１１０は、複数の測定時刻における移動端末２００の３軸での加速度データを、加速度データ１３２から読み出す。加速度データのタイムスロットは、図７のフローチャートで使用された角速度データのタイムスロットと同一である。
【００６３】
各軸における加速度データは、アレイリストにより表わされる。各アレイリストは、データを測定時刻の順序で格納する。ＡＣＣ＿Ｘ、ＡＣＣ＿Ｙ及びＡＣＣ＿Ｚは、前後軸、左右軸及び上下軸における加速度の値のアレイリストを示し、それぞれ各軸における複数測定時刻の測定値を保持する。
【００６４】
ステップ８０２において、プロセッサ１１０は、アレイリストＡＣＣ＿Ｘ、ＡＣＣ＿Ｙ及びＡＣＣ＿Ｚそれぞれにおける、中央値ＭＥＤＩＡＮ＿Ｘ、ＭＥＤＩＡＮ＿Ｙ及びＭＥＤＩＡＮ＿Ｚを計算する。
【００６５】
ＡＣＣ＿Ｘ［］、ＡＣＣ＿Ｙ［］及びＡＣＣ＿Ｚ［］は、変数であり、前後軸、左右軸及び上下軸における、各測定時刻の加速度の測定値を示す。インデックスは、測定順序を示す。同一インデックスの値は、同一時刻において測定された加速度である。
【００６６】
ステップ８０３において、プロセッサ１１０は、ステップ８０２で計算された三つの中央値ＭＥＤＩＡＮ＿Ｘ、ＭＥＤＩＡＮ＿Ｙ及びＭＥＤＩＡＮ＿Ｚの絶対値を比較し、最も高い絶対値を、変数ＭＡＸ＿ＭＥＤに代入する。
【００６７】
ステップ８０４において、プロセッサ１１０は、変数ＭＡＸ＿ＭＥＤに代入されている値が、予め定義された閾値よりも大きいか判定する。閾値は、通常、実定数であり、例えば、５．６６である。
【００６８】
プロセッサ１１０が、変数ＭＡＸ＿ＭＥＤに代入されている値が閾値以下であると判定すると（ステップ８０４：ＮＯ）、ステップ８０５に進み、重力軸としてデフォルト軸が選択される。デフォルト軸は、例えば、ＡＣＣ＿Ｘ、ＡＣＣ＿Ｙ及びＡＣＣ＿Ｚの軸のいずれかである。重力軸は、重力方向に最も近いと推定される軸である。ＧＲＡＶＩＴＹ＿ＡＸＩＳ［］は変数であり、重力軸における各測定時刻の加速度の測定値を示す。ＤＥＦＡＵＬＴ＿ＡＸＩＳ［］は変数であり、デフォルト軸における各測定時刻の加速度の測定値を示す。
【００６９】
いずれの軸が重力方向に最も近いかは、移動端末２００の所持角度に依存する。変数ＭＡＸ＿ＭＥＤが閾値よりも小さい場合、その軸が重力方向に最も近い可能性が高くはなく、移動端末２００の一般的な所持態様から予め決められている軸が重力方向に最も近い可能性が高い。したがって、本実施例は、変数ＭＡＸ＿ＭＥＤに代入されている値が閾値以下である場合に、重力軸としてデフォルト軸を選択する。
【００７０】
プロセッサ１１０が、ＭＡＸ＿ＭＥＤ変数に代入されている値が閾値より大きいと判定すると（ステップ８０４：ＹＥＳ）、ステップ８０６に進み、重力軸として、ステップ８０３で計算された最も高い中央値の絶対値を有する軸が選択される。例えば、ＡＣＣ＿Ｘが−４．５の中央値を有し、ＡＣＣ＿Ｙが４．０の中央値を有し、ＡＣＣ＿Ｚが−７．２の中央値を有する場合、ＡＣＣ＿Ｚの軸が、重力軸として選択される。これにより、より正確に重力方向に最も近い軸を選択できる。なお、中央値に代えて他の統計値を使用してもよい。
【００７１】
さらに、変数ＧＲＡＶＩＴＹ＿ＡＸＩＳ［］には、重力軸として選択された軸における角速度の値（ＧＹＲＯ＿ＭＡＸ＿ＭＥＤ＿ＡＸＩＳ［］）がそれぞれ代入される。例えば、ＡＣＣ＿Ｚの軸が重力軸として選択される場合、変数ＧＲＡＶＩＴＹ＿ＡＸＩＳ［］には、ＧＹＲＯ＿Ｚ［］の値がそれぞれ代入される。
【００７２】
ステップ８０７において、プロセッサ１１０は、選択された重力軸の中央値が正の値であるか負の値であるか判定する。上記例のように、重力軸の中央値（ＡＣＣ＿Ｚと同じ値）は、−７．２の値であるとする。したがって、負の値である。
【００７３】
プロセッサ１１０が、選択された重力軸の中央値が負の値である判定する場合（ステップ８０７：ＹＥＳ）、ステップ８０８において、変数ＳＩＧＮに＋１が割り当てられる。プロセッサ１１０が、選択された重力軸の中央値が負ではないと判定する場合（ステップ８０７：ＮＯ）、ステップ８０９において、変数ＳＩＧＮに−１が割り当てられる。変数ＳＩＧＮは、移動端末２００が重力軸に沿っていずれの方向を向いているかを示す。例えば、移動端末の画面が上又は下のいずれを向いているかを示す。
【００７４】
最後のステップ８１０は、ステップ７０２で計算されたＧＹＲＯ＿Ｓに対して、変数ＳＩＧＮ及び選択された重力軸での角速度の値（符号）に依存する、正又は負の値を割り当てる。プロセッサ１１０は、アレイリストＧＹＲＯ＿Ｓの各要素ＧＹＲＯ＿Ｓ［］に付与する符号（正又は負）を決定する。この符号は、移動体端末所持者が曲がる方向を示す。
【００７５】
具体的には、ＧＹＲＯ＿Ｓの新しいｉ番目の要素ＧＹＲＯ＿Ｓ［ｉ］は、ステップ７０２で計算したＧＹＲＯ＿Ｓ［ｉ］と、ＧＲＡＶＩＴＹ＿ＡＸＩＳのｉ番目の要素ＧＲＡＶＩＴＹ＿ＡＸＩＳ［ｉ］をその絶対値で割った値と、の積を計算し、さらに、その値とＳＩＧＮ変数の値（１又は−１）との積を計算する、ことによって得られる値に等しい。
【００７６】
ＧＲＡＶＩＴＹ＿ＡＸＩＳのｉ番目の要素ＧＲＡＶＩＴＹ＿ＡＸＩＳ［ｉ］をその絶対値で割る部分は、１又は−１となる。この値は、ＧＲＡＶＩＴＹ＿ＡＸＩＳ［ｉ］が、正であるか負であるかを示し、重力軸についての角速度の向きを示す。また、変数ＳＩＧＮは、重力軸が、重力に対していずれの方向を向いているかを示す。
【００７７】
したがって、このステップの後、移動端末２００の角速度の絶対値を格納していたＧＹＲＯ＿Ｓは、角速度の方向に応じた正又は負の値を格納する。その結果、この値は、図４において説明したように、移動端末所持者が曲がる速さに加え、移動端末所持者が曲がる方向を示す。図４の例において、移動端末が現在進行方向から右に曲がる場合、向き変更速度は正である。移動端末が現在進行方向から左に曲がる場合、向き変更速度は負である。以上で、進行方向変化の方向推定処理が終了する。
【００７８】
図９は、実施例１に係る、現在進行方向計算部１２１３の処理フローチャートである。現在進行方向計算処理は、サーバ１００のプロセッサ１１０により実行される。ステップ９０１において、プロセッサ１１０は、ジャイロセンサの測定のサンプリング間隔を計算する。プロセッサ１１０は、角速度データ１３１の時刻カラム５０１の値から、各サンプリング間隔を計算できる。
【００７９】
ステップ９０２において、プロセッサ１１０は、変数ＮＥＷ＿ＨＥＡＤＩＮＧに、初期値を代入する。初期値は、前回タイムスロットで計算された現在進行方向の値である。図４を参照して説明したように、移動端末所持者の進行方向は、基準ベクトル４２０に対する角度で表わされる。
【００８０】
ステップ９０３において、変数ＮＥＷ＿ＨＥＡＤＩＮＧは、向き変更速度及びジャイロセンサの測定のサンプリング間隔に基づき、順次更新される。具体的には、プロセッサ１１０は、ステップ８１０で計算したＧＹＲＯ＿Ｓ［］とサンプリング間隔との積によって、進行方向の変化の角度をそれぞれ計算する。角度は、向きの変化の方向に依存して正又は負の符号を有する。プロセッサ１１０は、変数ＮＥＷ＿ＨＥＡＤＩＮＧに計算した角度を順次加えることで、変数ＮＥＷ＿ＨＥＡＤＩＮＧを順次更新する。
【００８１】
ステップ９０４において、プロセッサ１１０は、最終的なＮＥＷ＿ＨＥＡＤＩＮＧの値が１８０°より大きいかチェックする。ＮＥＷ＿ＨＥＡＤＩＮＧの値が１８０°より大きい場合、図４で説明したように、プロセッサ１１０は、ＮＥＷ＿ＨＥＡＤＩＮＧに負の値を再度割り当てる。この値が、現在の現在の進行方向を示す。以上で、現在進行方向計算処理が終了する。
【００８２】
以上のように、本実施例によれば、システムにおいて予め定義された所持角度において移動端末が固定されていなくても、移動端末所持者の進行方向を推定することができる。
【実施例２】
【００８３】
図１０〜１２を参照して実施例２を説明する。
【００８４】
実施例１の進行方向推定システムにおいて、移動端末所持者の動きに起因するノイズによるエラーが発生する可能性がある。例えば、移動端末所持者が移動端末をズボンのポケットに入れる場合、ジャイロセンサの測定データ（ジャイロセンサデータ）は、移動端末所持者の足の動きによるノイズを含む。
【００８５】
その結果、進行方向推定システムにおいて、移動端末所持者の現在進行方向の推定の正確性が低下する。したがって、実施例２は、移動端末所持者の動きによるノイズをフィルタリングするため、進行方向推定プログラム内にローパスフィルタを含める。
【００８６】
図１０は、実施例２に係る、移動端末所持者の進行方向を推定する進行方向推定システムの、機能ブロック図である。ローパスフィルタ１２１４が、進行方向推定プログラム１２１に含まれる。プロセッサ１１０は、進行方向推定プログラム１２１を実行することによってローパスフィルタとして機能する。ローパスフィルタ１２１４の処理フローは、図１１を参照して詳細に後述される。
【００８７】
ローパスフィルタ１２１４は、各軸において、カットオフ周波数以下の周波数においてジャイロセンサの測定データの信号を通過させ、カットオフ周波数より高い周波数においてジャイロセンサの測定データの信号を除去する。カットオフ周波数は、例えば、０．５Ｈｚに設定される。これは、通常の人の歩行周波数である。歩行周波数は、単位時間内の歩数を示す。
【００８８】
図１１は、実施例２に係る、進行方向推定プログラム１２１の処理フローチャートである。ローパスフィルタ処理は、サーバ１００のプロセッサ１１０により実行される。プロセッサ１１０は、角速度データ１３１及び加速度データ１３２を読み出す（ステップ１１０１）。
【００８９】
ステップ１１０２において、プロセッサ１１０は、ローパスフィルタを３軸のジャイロセンサデータに対して適用する。ローパスフィルタにより処理されたジャイロセンサデータは、その後のステップで使用される。プロセッサ１１０は、数式（１）に従って、各測定時刻における移動端末２００の所持者の向き変更速度の絶対値を推定する。
【００９０】
ステップ１１０４において、プロセッサ１１０は、上述のように、各測定時刻それぞれにおける向き変更速度が正であるか（所持者の右回転に対応）又は負であるか（所持者の左回転に対応）を角速度データ１３１及び加速度データ１３２に基づいて判定することによって、各測定時刻における進行方向変化の方向を推定する。ステップ１１０５において、プロセッサ１１０は、ステップ１１０３及びステップ１１０４の結果に基づいて、移動端末２００の所持者の現在の進行方向を計算する。以上により処理が終了する。
【００９１】
上述の方法において、ジャイロセンサデータにおける動きノイズが除去される。これは、動きノイズは、通常、０．５Ｈｚより大きい周波数を有するからである。なお、カットオフ周波数は、動的に調整されてもよい。これにより、ローパスフィルタは異なる状況に対して効果的に作用できる。
【実施例３】
【００９２】
図１２〜１４を参照して、実施例３を説明する。実施例１に係る進行方向推定システムは、ジャイロセンサが、移動端末所持者の進行方向における変化を測定しているのか、移動端末の所持角度の変化を測定しているのか、区別しない。そのため、実施例１において、進行方向推定システムは、進行方向推定システムが動作している間に移動端末所持者が移動端末の所持角度を変化させない場合に、より正確に進行方向を推定することができる。
【００９３】
実施例３は、移動端末の所持角度の変化を検出するプログラムを実装し、進行方向推定システムが動作している間での、移動端末の向き変化によるエラーを低減する。図１２は、実施例３に係る、移動端末所持者の進行方向を推定する進行方向推定システムの説明図である。
【００９４】
所持角度変化検出プログラム以外の構成は、実施例１の進行方向推定システムの構成と同様である。所持角度変化検出プログラムは、進行方向推定システムが動作している間、移動端末の所持角度、つまり、所持者を基準とした移動端末の向きが変化しているか否か検出する。
【００９５】
所持角度変化検出プログラム１２２は、メモリ１２０に格納されている。所持角度変化検出プログラム１２２は、角速度データ１３１及び加速度データ１３２を分析し、移動端末２００の所持角度が変化したか、又は移動端末所持者が進行方向を変えたか、判定する。所持角度変化検出プログラム１２２は、移動端末の所持角度が変化したことを検出すると、進行方向変化が０であると設定する。その結果、進行方向推定システムは、移動端末の所持角度変化によるエラーを防ぐことができる。
【００９６】
図１３は、実施例３に係る、移動端末所持者の進行方向を推定する進行方向推定システムの機能ブロック図である。所持角度変化検出プログラム１２２以外の構成は、実施例１の進行方向推定システムの構成と同様である。
【００９７】
所持角度変化検出プログラム１２２は、加速度データ１３２を読み出し、加速度データ１３２を分析して、移動端末２００の所持角度が変化したが否か判定する。移動端末２００の所持角度が変化したか否かを判定する多くの方法が存在する。一例は、移動端末２００の３軸における加速度の変化を計算する。所持角度変化検出プログラム１２２の処理フローは、図１４を参照して詳細に後述する。所持角度変化検出プログラム１２２が、移動端末２００の所持角度が変化したことを検出すると、移動端末所持者の進行方向変化は０に設定される。
【００９８】
図１４は、実施例３に係る、所持角度変化検出処理の処理フローチャートである。所持角度変化検出処理は、サーバ１００のプロセッサ１１０により実行される。
【００９９】
ステップ１４０１において、プロセッサ１１０は、３軸における加速度変化を計算する。移動端末２００の所持角度が変化する場合、３軸の間の加速度分布において変化が発生する。
【０１００】
ステップ１４０２において、プロセッサ１１０は、３軸における加速度の変化と閾値とを比較することで、３軸における加速度の変化が大きいか否か判定する。たとえば、プロセッサ１１０は、３軸における加速度の変化量において最も大きい値を選択し、その変化量と閾値とを比較する、又は、３軸における加速度の変化量の総和を計算し、その値と閾値とを比較してもよい。
【０１０１】
プロセッサ１１０が、３軸における加速度の変化が十分に大きくない（変化が閾値より小さい）と判定した場合（ステップ１４０２：ＹＥＳ）、その変化は移動端末所持者の動きによるものであるかもしれないので、ステップ１４０３において、プロセッサ１１０は、進行方向推定プログラム１２１を実行する。
【０１０２】
プロセッサ１１０が、３軸における加速度の変化が大きい（変化が閾値以上である）と判定した場合（ステップ１４０２：ＮＯ）、ステップ１４０４において、進行方向変化が０と等しいと設定する。以上により、移動端末の向き変化による進行方向推定システムのエラーを低減できる。以上により、処理が終了する。
【実施例４】
【０１０３】
図１５〜１８を参照して、実施例４を説明する。実施例３において、進行方向推定システムは、所持角度変化検出プログラム１２２によって、システム動作中での移動端末の所持角度変化によるエラーを低減できる。しかし、移動端末所持者が進行方向及び又は移動端末の所持角度を変える、複数の場合が存在する。したがって、分類が適切なアプローチであり、移動端末と移動端末所持者の複雑な動きによる進行方向推定システムでのエラーを、より効果的に低減できる。
【０１０４】
図１５は、実施例４に係る、移動端末所持者の進行方向を推定する進行方向推定システムの説明図である。所持角度変化特定テーブル１３３以外の構成は、実施例３の進行方向推定システムの構成と同様である。
【０１０５】
所持角度変化特定テーブル１３３は、サーバ１００の補助記憶１３０に格納されている。所持角度変化特定テーブル１３３は、グラウンドトゥルースラベルと共に移動端末の角速度データ及び加速度データを収集し、学習アルゴリズムが学習して特定テーブルを生成することによって、生成される。
【０１０６】
グラウンドトゥルースラベルは、「所持角度の変化」、つまり、移動端末の所持角度のみが変化する場合、「進行方向の変化」つまり、移動端末所持者が移動端末の所持角度を維持しながら進行方向のみを変化させる場合、そして「進行方向及び所持角度の変化」、つまり、移動端末所持者が進行方向と移動端末の所持角度を同時に変化させる場合、を含む。その後、所持角度変化特定テーブル１３３は補助記憶に格納され、移動端末のみがその向きを変化させているか否か判定される。
【０１０７】
図１６は、実施例４に係る、移動端末所持者の進行方向を推定する進行方向推定システムの機能ブロック図である。機能ブロック図が示す構成は、所持角度変化特定テーブル１３３以外、実施例３の進行方向推定システムの機能ブロック図と同様である。
【０１０８】
所持角度変化検出プログラム１２２は、加速度データ１３２及び角速度データ１３１を読み出し、加速度データ１３２及び角速度データ１３１の特徴量と所持角度変化特定テーブル１３３の特徴量とを比較する。
【０１０９】
図１７は、実施例４に係る、所持角度変化特定テーブル１３３の説明図である。加速度データと角速度データの特徴量がカラムに登録されている。本図において、２種類の特徴量が加速度データと角速度データの特徴量の例として示されている。さらに、現在位置に関する特徴量の例が示されている。
【０１１０】
特徴量の一つである、３軸の加速度データの標準偏差の和が、加速度の標準偏差の和カラム１５０１に登録されている。特徴量の一つである、３軸の角速度データの標準偏差の和が、角速度の標準偏差の和カラム１５０２に登録されている。さらに、移動端末所持者の現在位置が曲がり角に近い場合、現在位置が曲がり角に近いか否かカラム１５０３には、「１」が登録される。そうでない場合、現在位置が曲がり角に近いか否かカラム１５０３には、「０」が登録される。
【０１１１】
加速度データ及び角速度データの標準偏差は、特徴量の一例であって、これに代えて又は加えて他の統計値が登録されてもよい。現在位置が曲がり角に近いか否かカラム１５０３は省略されてもよい。
【０１１２】
最後のカラム１５０４は、特徴のラベルのためのカラムである。三つのラベル、「所持角度の変化」、つまり、移動端末のみがその向きを変える場合、「進行方向の変化」つまり、移動端末所持者が移動端末の所持角度を維持しながら進行方向のみを変化させる場合、そして「進行方向及び所持角度の変化」、つまり、移動端末所持者が進行方向及び移動端末の所持角度を変化させる場合が、ＬＡＢＥＬカラム１５０４に登録されている。
【０１１３】
図１８は、実施例４に係る、所持角度変化検出プログラム１２２の処理フローチャートである。所持角度変化検出処理は、サーバ１００のプロセッサ１１０によって実行される。ステップ１８０１において、プロセッサ１１０は、加速度データ１３２と角速度データ１３１を読み出す。
【０１１４】
ステップ１８０２において、プロセッサ１１０は、所持角度変化特定テーブル１３３に従って、加速度データ１３２と角速度データ１３１の特徴量を計算する。例えば、所持角度変化特定テーブル１３３が加速度の標準偏差の和の特徴を有している場合、プロセッサは、３軸における加速度それぞれの標準偏差を計算し、それら三つの値の和を算出する。さらに、プロセッサ１１０は、現在位置が曲がり角に近いか否か判定する。プロセッサ１１０は、例えば実施例５において説明するように、地図データを使用した現在位置特定機能により、現在位置を特定する。
【０１１５】
所持角度変化特定テーブル１３３における全ての特徴の特徴量を計算した後、プロセッサ１１０は、ステップ１８０３において、計算された特徴量と所持角度変化特定テーブル１３３における値の範囲とを比較する。プロセッサ１１０は、ステップ１８０４において特徴量の正しいラベルを特定する。
【０１１６】
ステップ１８０４において、プロセッサ１１０がラベルは「所持角度の変化」ではないと判定すると（ステップ１８０４：ＮＯ）、プロセッサ１１０は、ステップ１８０５において、進行方向推定プログラム１２１を実行する。ステップ１８０４において、プロセッサ１１０がラベルは「所持角度の変化」であると判定すると（ステップ１８０４：ＹＥＳ）、プロセッサ１１０は、ステップ１８０６において、進行方向変化を０に等しいと設定する。判定結果が「進行方向及び所持角度の変化」である場合、プロセッサ１１０は、予め定められた方法により進行方向の変化量を補正してもよい。以上により、処理が終了する。
【実施例５】
【０１１７】
実施例５を図１９〜２１を参照して説明する。実施例１において、進行方向推定システムは、スタンドアロンシステムである。実施例５において、進行方向推定システムの拡張システムとして、屋内測位システムが説明される。進行方向推定システムによって、屋内測位システムはユーザにとってのフレキシビリティを改善し、同時に、システムの有用性を高めることができる。
【０１１８】
図１９は、実施例５に係る、移動端末所持者の進行方向を推定する進行方向推定システムを含む、屋内測位システムの説明図である。移動端末２００の構成は、実施例１と同様である。
【０１１９】
サーバ１００は、図１に示す実施例１の構成に加え、以下の構成を含む。メモリ１２０は、実施例１の構成に加え、スピード推定プログラム１２３、初期状態推定プログラム１２４、及び位置判定プログラム１２５を含む。
【０１２０】
スピード推定プログラム１２３は、移動端末所持者の移動スピードを推定する。初期状態推定プログラム１２４は、屋内測位システムの動作開始時における移動端末所持者の初期位置と初期進行方向を判定する。位置判定プログラム１２５は、進行方向推定プログラム１２１、スピード推定プログラム１２３及び初期状態推定プログラム１２４から出力に基づき、移動端末所持者の現在位置を推定する。
【０１２１】
補助記憶１３０は、実施例１の構成に加え、地図データ１３４を格納する。地図データ１３４は、対象が存在する環境における位置を示すための環境の地図を格納する。補助記憶１３０は、角速度データ及び加速度データ以外のデータを格納してもよい。
【０１２２】
図２０は、実施例５に係る、移動端末所持者の進行方向を推定する進行方向推定システムを含む、屋内測位システムの機能ブロック図である。進行方向推定プログラム１２１は、向き変更速度の絶対値推定部１２１１、進行方向変化の方向推定部１２１２、及び現在進行方向計算部１２１３を含む。これらは、実施例１の構成と同様である。
【０１２３】
スピード推定プログラム１２３は、移動端末２００の加速度データ１３２を解析することによって移動端末所持者の歩数をカウントし、さらに各歩幅を推定する。スピード推定プログラム１２３は、それらの値に基づいて移動端末所持者のスピードを推定する。
【０１２４】
初期状態推定プログラム１２４は、移動端末所持者の初期位置と、移動端末所持者（移動端末２００）の初期進行方向を判定する。例えば、二つの方法で判定することができる。一つの方法において、移動端末所持者が、自身の初期位置と初期進行方向を入力する。他の方法において、環境内への入口により推定される。
【０１２５】
第１の方法において、移動端末所持者は、例えば、屋内測位システムに、その初期位置と初期進行方向をグラフィカルユーザインタフェースから入力する。その情報は、初期状態推定プログラム１２４に保持される。第２の方法において、屋内測位システムは、移動端末の初期位置及び初期進行方向を、環境内への入口に基づいて判定できる。たとえば、屋外環境におけるＧＰＳ信号を利用して、どの入口から移動端末所持者が屋内環境に入ったかを判定することができる。
【０１２６】
位置判定プログラム１２５は、移動端末所持者の現在位置を、進行方向推定プログラム１２１、スピード推定プログラム１２３、及び初期状態推定プログラム１２４からの出力に基づいて、計算する。位置判定プログラム１２５は、推定した現在位置を地図データ１３４と比較し、現在位置を地図上で視覚化することによって、エラーを修正することができる。地図データ１３４については、図２１を参照して詳細に後述する。
【０１２７】
図２１は、実施例５に係る、地図データ１３４の説明図である。環境のレイアウトを地図データ１３４に格納する多くの方法が存在する。本図において、ポリゴンオブジェクトを地図データ１３４において格納する例が示されている。
【０１２８】
地図データ１３４は、オブジェクトＩＤカラム２１０１、ポイントＩＤカラム２１０２、座標Ｘカラム２１０３、座標Ｙカラム２１０４を有する。オブジェクトの識別子が、オブジェクトＩＤカラム２１０１に格納される。オブジェクトの角の識別子がポイントＩＤカラム２１０２に格納される。角の二次元の座標が、座標Ｘカラム２１０３、座標Ｙカラム２１０４に格納される。
【実施例６】
【０１２９】
図２２及び２３を参照して実施例６を説明する。図２２は、実施例６に係る屋内測位システムのアプリケーション例を示す。当該アプリケーションの目的は、ＧＰＳ信号が届かないフィールドにおいて、労働者を監視することである。例えば、ビル内、トンネル内、又は地階において利用できる。本実施例により、ＧＰＳ信号が届かないフィールドにおいて、移動端末２００の所持者の位置をユーザに提示することができる。
【０１３０】
図２２は、例えば、サーバ１００の入出力装置に表示される画像例２２００である。画像２２００は、監視している各階の情報を示す。図２２の例において、１階２２０１の情報と２階２２０２の情報が提示されている。各階において、地図と労働者２２０３の位置とが表示される。画像は、壁や他の障害物２２０４を矩形で示している。
【０１３１】
地図情報は、地図データ１３４に含まれる。サーバ１００は、画像２２００において、労働者の最近の経路をプロットしている。労働者２２０３の位置、動作及び経路は、上記実施例で説明したように推定される。
【０１３２】
図２３は、実施例６に係る屋内測位システムのアプリケーションの他の例を示す。当該アプリケーションの目的は、移動端末（スマートフォン）ユーザのナビゲーションである。移動端末２００は、地図情報及びユーザの位置の情報に基づいて、ユーザを所望の目的地に誘導する。
【０１３３】
移動端末２００の補助記憶２５０は、インストールされたナビゲーションプログラムを格納している。プロセッサ２１０は、当該プログラムに従って動作することで、ユーザにナビゲーションサービスを提供する。サーバ１００は、上記実施形態において説明したように、ユーザの現在位置を推定し、その推定結果を地図情報と共に、移動端末２００に送信する。移動端末２００は、地図情報と共に、ユーザ位置を入出力装置内の表示装置において表示する。
【０１３４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１３５】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【０１３６】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１３７】
１００  サーバ、１１０  プロセッサ、１２０  メモリ、１３０  補助記憶、１３１  角速度データ、１３２  加速度データ、１３３  所持角度変化特定テーブル、１４０  通信インタフェース、２００  移動端末、２１０  プロセッサ、２２０  メモリ、２３０  ジャイロセンサ、２４０  加速度センサ、２５０  補助記憶、２６０  通信インタフェース
【図１】
0006653151.tif 000003
【図２】
0006653151.tif 000004
【図３】
0006653151.tif 000005
【図４】
0006653151.tif 000006
【図５】
0006653151.tif 000007
【図６】
0006653151.tif 000008
【図７】
0006653151.tif 000009
【図８】
0006653151.tif 000010
【図９】
0006653151.tif 000011
【図１０】
0006653151.tif 000012
【図１１】
0006653151.tif 000013
【図１２】
0006653151.tif 000014
【図１３】
0006653151.tif 000015
【図１４】
0006653151.tif 000016
【図１５】
0006653151.tif 000017
【図１６】
0006653151.tif 000018
【図１７】
0006653151.tif 000019
【図１８】
0006653151.tif 000020
【図１９】
0006653151.tif 000021
【図２０】
0006653151.tif 000022
【図２１】
0006653151.tif 000023
【図２２】
0006653151.tif 000024
【図２３】
0006653151.tif 000025