以下、図面に基づいて本発明の各実施例を説明する。
本発明の各実施例による移動端末は、端末内の各種センサによって設定ルートを歩行するユーザの動きを検知し、検知したセンサ情報を用いて推定された現在位置と基準地点との間の推定距離を算出すると共に、設定ルート上で移動端末の正確な現在位置が検知されると、検知された正確な現在位置(アンカーポイント)と基準地点との間の地図上の実距離を算出し、推定距離と実距離との誤差に基づき歩幅を補正する。
まず、図1を参照して、本発明の一実施例による移動端末の構成を説明する。
本実施例による移動端末は、典型的には、携帯電話端末やスマートフォンなどの携帯情報端末であり、端末内に搭載されたアプリケーションを利用して、又はネットワーク(図示しない)を介し通信可能な外部の装置からの情報を利用して移動端末の位置を取得可能な携帯情報端末である。移動端末は、典型的には、補助記憶装置、メモリ装置、CPU、通信装置、表示装置、入力装置、測定装置などの各種ハードウェアリソースの1以上から構成される。補助記憶装置は、ハードディスクやフラッシュメモリなどから構成され、後述される各種処理を実現するプログラムやデータを格納する。メモリ装置は、RAM(Random Access Memory)などから構成され、プログラムの起動指示があった場合に、補助記憶装置からプログラムを読み出して格納する。CPUは、情報を処理するプロセッサとして機能し、メモリ装置に格納されたプログラムに従って後述される各種機能を実現する。通信装置は、ネットワークを介しサーバなどの他の装置と有線及び/又は無線接続するための各種通信回路から構成される。本実施例による通信装置はさらに、GPS(Global Positioning System)機能を実現するための受信回路を有する。さらに、通信装置は、WLAN測位、RFIDなどを利用した各種測位技術を実現するための各種通信回路を有する。これらの測位技術を用いて、通信装置は、WLANのアクセスポイントやIDタグなどの外部の通信装置と通信することによって、移動端末の正確な現在位置を取得することができる。表示装置は、ディスプレイなどから構成され、ネットワークを介し受信したコンテンツやプログラムによるGUI(Graphical User Interface)等を表示する。入力装置は、典型的には、操作ボタン、キーボード、マウス等で構成され、移動端末のユーザが様々な操作命令を入力するのに用いられる。測定装置は、自律航法機能を実現するための移動端末の動きを測定するための加速度センサ、地磁気センサ、ジャイロセンサなどの各種センサから構成される。なお、本発明による移動端末は、上述したハードウェア構成に限定されるものでなく、後述する各種機能を実現可能な回路等の他の何れか適切なハードウェア構成を有してもよい。
図1は、本発明の一実施例による移動端末の一例となる機能構成を示す。図1において、移動端末100は、ユーザインタフェース部120と、地図アプリケーション部140と、自律航法測定部160と、自律航法演算部180とを有する。
ユーザインタフェース部120は、入力装置を介しユーザが出発地と目的地を入力すると、入力された出発地と目的地とに関する位置情報を地図アプリケーション部140に提供する。典型的には、出発地は現在位置であり、GPS機能を用いて取得した移動端末100の現在位置に関する位置情報が地図アプリケーション部140に提供されてもよい。また、目的地は、ユーザにより入力された目的地の住所などであってもよいし、あるいは地図アプリケーション部140により表示された地図情報上の指定された地点、他のアプリケーションを介し指定された建物、施設、店舗などであってもよく、これら指定された位置から導出された位置情報が地図アプリケーション部140に提供されてもよい。
地図アプリケーション部140は、ユーザインタフェース部120から出発地と目的地とに関する位置情報を受信すると、指定された出発地から目的地までのルートを設定する。本実施例では、移動端末100が何れかの手段を用いて自らの現在位置(緯度及び経度など)を正確に検知可能であると仮定する。例えば、地図アプリケーション部140によるマップマッチングなどにより移動端末100の正確な現在位置を検知可能であってもよい。また、設定されたルート上にはWLANのアクセスポイントやRFIDなどの移動端末100が正確な現在位置を検知することを可能にする各種通信装置が設けられ、これら通信装置の設置地点から一定範囲にあるとき、移動端末100は、当該通信装置との通信を介して自らの正確な現在位置を取得可能であってもよい。地図アプリケーション部140は、この取得した正確な現在位置をアンカーポイントとして用いて、前回のアンカーポイント、すなわち、前回検知された移動端末100の正確な現在位置と今回取得した移動端末100の正確な現在位置との間の地図上の距離を決定する。
図1に示されるように、地図アプリケーション部140は、地図表示部142と実距離算出部144とを有する。
地図表示部142は、ユーザインタフェース部120から提供された出発地と目的地との位置情報に基づき、出発地から目的地までのルートを設定し、設定したルートを実距離算出部144に提供する。このルートの設定は、地図アプリケーション部140に格納されている地図情報を参照して、何れか適当なナビゲーションアルゴリズムを利用して出発地から目的地までのルートを決定することにより行われてもよい。典型的には、出発地から目的地までの最短ルートが選択されるが、これに限定されるものでなく、何れか適当な方法によりルートを設定するようにしてもよい。出発地から目的地までのルートが設定されると、地図表示部142は、設定されたルートをユーザに表示するための表示用地図データを生成する。
実距離算出部144は、何れかの手段によって移動端末100が設定ルート上の正確な現在位置(アンカーポイント)を取得すると、地図アプリケーション部140に格納されている地図情報を参照して、今回取得したアンカーポイントと前回取得したアンカーポイントとの間の地図上の距離を算出する。この地図上の距離とは、今回取得したアンカーポイントと前回取得したアンカーポイントとの間のルートの長さであり、必ずしも2つのアンカーポイントの間の直線距離とは限らない。算出された地図上の距離は、ユーザの正確な歩行距離に相当する。
本実施例では、地図アプリケーション部140は移動端末100内に設けられたが、本発明はこれに限定されるものでない。他の実施例では、地図アプリケーション部140は、移動端末100が通信可能な外部のサーバに設けられてもよい。すなわち、ユーザインタフェース部120がユーザから入力された出発地と目的地とに関する位置情報をサーバに送信すると、サーバは上述した処理を実行して実距離を算出し、算出した実距離と取得したアンカーポイントの緯度及び経度などの位置情報とを移動端末100に返すようにしてもよい。
自律航法測定部160は、移動端末100の動きに関する各種データを測定し、測定したデータをセンサ情報として自律航法演算部180に提供する。図1に示されるように、自律航法測定部160は、歩数測定部162と、進行方向測定部164とを有する。
歩数測定部162は、移動端末100を携帯するユーザの歩行をモニタし、ユーザが歩いた歩数を測定する。歩数測定部162は、典型的には、加速度センサにより実現可能であるが、これに限定されることなく他の何れか適切なユーザの歩数又は歩行距離を測定可能な装置により実現されてもよい。
進行方向測定部164は、移動端末100を携帯するユーザの歩行をモニタし、ユーザが歩く進行方向を検知する。進行方向測定部164は、典型的には、地磁気センサやジャイロセンサにより実現可能であるが、これに限定されることなく他の何れか適切なユーザの進行方向を測定可能な装置により実現されてもよい。
このようにして、自律航法測定部160は、歩数測定部162により測定されたユーザの歩数と進行方向測定部164により測定されたユーザの進行方向とをセンサ情報として自律航法演算部180に提供する。このセンサ情報は、自律航法演算部180などからの要求に応答して、ユーザが歩行を開始することに応答して、又は定期的など何れか適切なタイミングで自律航法演算部180に提供されるようにしてもよい。
自律航法演算部180は、自律航法測定部160により測定された移動端末100のユーザの歩数及び進行方向などのセンサ情報を取得し、このセンサ情報から推定された基準地点からの移動量に基づき移動端末100の現在位置を推定する。この基準地点は、前回の位置補正により設定された地点であり、移動端末100が前回取得したアンカーポイントに対応する。他方、移動端末100が設定ルート上の正確な現在位置を取得すると、自律航法演算部180は、取得した正確な現在位置を用いて推定された現在位置を補正すると共に、地図アプリケーション部140から受信した実距離と推定された移動量とを比較して、この誤差に基づき歩幅を補正する。
図1に示されるように、自律航法演算部180は、位置算出部182と、現在位置補正部184と、歩幅推定部186とを有する。
位置算出部182は、自律航法測定部160から提供されたセンサ情報に基づき自律航法中の移動端末100の移動量を算出し、現在の基準地点(初期的には基準地点として設定されたルートの出発点の緯度及び経度)にこの算出した移動量を加えることによって現在位置を決定し、決定した現在位置の緯度及び経度などの位置情報を地図アプリケーション部140に提供する。具体的には、位置算出部182は、センサ情報における測定されたユーザの歩数と進行方向とに基づき、測定された歩数に現在設定されているユーザの歩幅を掛け合わせることによって歩行距離を導出し、導出した歩行距離と測定された進行方向とに基づき基準地点からの移動量を算出する。
位置算出部182は、初期的には入力されたユーザの身長から1mを差し引いた値を歩幅として設定するが、移動端末100が設定ルート上で正確な現在位置を取得する毎に歩幅推定部188によって補正された歩幅に再設定する。以降、位置算出部182は、補正されたユーザの歩数から推定される歩行距離と進行方向の推移とに基づき、移動端末100の正確な現在位置を新たな基準地点として用いて、この基準地点からの移動距離及び移動方向を求める。
現在位置補正部184は、移動端末100が設定ルート上で移動端末100の正確な現在位置を取得すると、この取得した位置情報によって位置算出部182により推定されている移動端末100の現在位置を補正する。
歩幅推定部186は、地図アプリケーション部140から実距離を受信すると、位置算出部182により推定された基準地点から現在位置までの移動端末100の推定距離を取得する。この位置算出部182により算出された推定距離は、上述したように、自律航法測定部160により測定された歩数及び進行方向と、位置算出部182に現在設定されているユーザの歩幅とに基づくものであり、一般に地図情報から導出されるアンカーポイント間の実距離とは誤差がある。歩幅推定部186は、取得した実距離と推定距離との誤差に応じて、位置算出部182に設定されるユーザの歩幅を更新する。歩幅推定部186による歩幅補正のより具体的な動作例は、図3を参照して以降において詳述される。
次に、図2を参照して、本発明の一実施例による移動端末の一例となる動作を説明する。図2は、本発明の一実施例による移動端末における一例となる自律航法処理を示すフローチャートである。
図2に示されるように、ステップS201において、ユーザが移動端末100の入力装置などを介しユーザインタフェース部120に目的地を設定する。上述したように、ユーザは、目的地の住所などを入力することによって目的地を設定してもよい。また、ユーザは、地図アプリケーション部140により移動端末100の表示装置上に表示された地図情報上の地点を指定することによって目的地を設定してもよい。また、ユーザは、他のアプリケーションを介し表示された建物、施設、店舗などを指定することによって目的地を設定してもよい。
ステップS203において、ユーザが移動端末100の入力装置などを介しユーザインタフェース部120に出発地を設定する。典型的には、出発地は、デフォルトとして現在位置に設定される。他方、ユーザが現在位置以外の出発地を移動端末100の入力装置などを介し設定することも可能である。例えば、ユーザは、出発地の住所などを入力することによって出発地を設定してもよい。また、ユーザは、地図アプリケーション部140により移動端末100の表示装置上に表示された地図情報上の地点を指定することによって出発地を設定してもよい。また、ユーザは、他のアプリケーションを介し表示された建物、施設、店舗などを指定することによって出発地を設定してもよい。このようにして出発地と目的地とが設定されると、地図アプリケーション部140は、何れか適切なナビゲーション方法を利用して、設定された出発地と目的地とに対して地図情報を参照してルートを決定する。
ステップS205において、自律航法演算部180は、自律航法測定部160により測定されたセンサ情報を取得する。
ステップS207において、自律航法演算部180は、取得したセンサ情報に基づき移動端末100の現在位置を算出する。この現在位置の算出は、上述したように、自律航法測定部160により測定された歩数及び進行方向と、現在設定されているユーザの歩幅とに基づく推定位置であり、一般に実際の位置とは誤差があると考えられる。
ステップS209において、移動端末100が設定ルート上で移動端末100の正確な現在位置を取得すると、自律航法演算部180は、取得した移動端末100の正確な現在位置(アンカーポイント)と、センサ情報に基づき推定された移動端末100の現在位置とを比較し、アンカーポイントによる位置補正が必要であるか判断する。アンカーポイントによる位置補正が必要である場合(S209:Y)、推定された移動端末100の現在位置をアンカーポイントによって補正し、以降のセンサ情報に基づく現在位置の推定において補正後の現在位置を新たな基準地点として使用する。その後、当該フローはステップS211に移行し、歩幅補正を実行する。他方、アンカーポイントによる位置補正が必要でない場合(S209:N)、自律航法演算部180は位置補正せず、当該フローはステップS213に移行する。
ステップS211において、自律航法演算部180は、地図アプリケーション部140により算出された今回取得したアンカーポイントと前回のアンカーポイントとの間の実距離と、センサ情報に基づき推定された前回のアンカーポイントからの移動端末100の推定距離とに基づき、現在設定されているユーザの歩幅を補正する。ステップS211の具体的な処理は、図3を参照して以降において詳述される。
ステップS213において、自律航法演算部180は、補正後の移動端末100の現在位置に基づき、ユーザが目的地に到達したか判定する。ユーザが目的地に到達したと判断した場合(S213:Y)、当該自律航法処理は終了する。他方、ユーザがまだ目的地に到達していない場合(S213:N)、当該フローはステップS205に戻り、自律航法処理を継続する。
次に、図3を参照して、本発明の一実施例によるステップS211における歩幅補正処理をより詳細に説明する。図3は、本発明の一実施例による歩幅補正処理を示すフローチャートである。
図3に示されるように、ステップS301において、地図アプリケーション部140は、前回のアンカーポイント(N−1)と今回のアンカーポイント(N)との間の地図上の実距離Aを算出する。上述したように、算出された実距離Aは、地図アプリケーション部140の地図上の設定ルートにおけるこれら2つのアンカーポイントの間の距離に対応する。
ステップS303において、歩幅推定部186は、位置算出部182によってセンサ情報により推定された前回のアンカーポイント(N−1)からの移動距離Bを算出する。上述したように、移動距離Bは、自律航法測定部160により測定された歩数及び進行方向と、位置算出部182に現在設定されているユーザの歩幅とに基づき導出された推定距離であり、一般には実距離Aからの誤差を含むと考えられる。なお、この歩幅は、初期的にはユーザの身長から1mを差し引いた値に設定されてもよい。
ステップS305において、歩幅推定部186は、実距離Aを推定距離Bで除することによって、歩幅係数(N)を算出する。なお、この変数Nは、アンカーポイントを受信した回数を示すカウンタである。
ステップS307において、歩幅推定部186は、歩幅係数(1)から歩幅係数(N)までの平均値を算出し、この平均値を歩幅係数(Ave)として設定する。
ステップS309において、歩幅推定部186は、前回設定された歩幅(N−1)に新たに設定された歩幅係数(Ave)を乗じ、その積を歩幅(N)として設定することによって、歩幅を補正する。
歩幅の補正後、当該フローはステップS311に移行してカウンタNをインクリメントし、ステップS313において当該歩幅補正処理を終了する。
上述したように、本実施例では、推定された歩幅の誤差のトレンドを考慮して、歩幅係数(1)から歩幅係数(N)までの平均値に基づき歩幅(N)を補正した。しかしながら、本発明はこれに限定されるものでなく、他の何れか適当な方法により歩幅の誤差を補正してもよい。他の実施例では、今回導出された誤差である歩幅係数(N)を前回の歩幅(N−1)に乗じることにより歩幅を補正してもよい。あるいは、他の実施例では、過去の所定の回数の誤差の平均値、すなわち、移動平均値に基づき歩幅(N)を補正してもよい。また、他の実施例では、標準偏差などの平均値以外の他の統計量を用いて歩幅(N)を補正してもよい。
また、本実施例では、実距離Aを推定距離Bで除することによって導出された歩幅係数により実距離Aと推定距離Bとの誤差を表した。しかしながら、本発明はこれに限定されるものでなく、実距離Aと推定距離Bとの誤差を表す他の何れか適切な係数を適用してもよい。例えば、実距離Aと推定距離Bとの差分を求め、この差分を実距離Aで除することによって、歩幅係数(N)を算出してもよい。
次に、本発明の他の実施例による移動端末の歩幅補正処理を説明する。上述した実施例では、設定されたルートへのマップマッチングによって移動端末の正確な測位が可能であること、又は設定されたルート上にWLANのアクセスポイントやIDタグなどの通信装置が設置され、これらの通信装置との通信を介し移動端末の正確な測位が可能であることを仮定した。本実施例では、移動端末がこのような手段によって正確な現在位置を取得できない場合に好適である。
本実施例による移動端末は、端末内の各種センサによって設定ルートを歩行するユーザの動きを検知し、検知したセンサ情報を用いて推定された現在位置と基準地点との間の推定距離を算出すると共に、設定ルート上でユーザが方位変更すると想定される方位変更地点、すなわち、曲がる場所又は曲がり角(アンカーポイント)に移動端末が到達したと推定すると、当該アンカーポイントと基準地点(前回のアンカーポイント)との間の地図上の実距離を算出し、推定距離と実距離との誤差に基づき歩幅を再設定する。なお、図1〜3に関して上述した実施例では、設定ルート上で取得した移動端末の正確な現在位置をアンカーポイントと定義したが、本実施例のアンカーポイントは、設定されたルート上でユーザが方位変更すると想定される方位変更地点、すなわち、曲がる場所又は曲がり角をアンカーポイントとして定義する。
図4を参照して、本発明の他の実施例による移動端末の一例となる機能構成を示す。図4において、移動端末200は、ユーザインタフェース部220と、地図アプリケーション部240と、自律航法測定部260と、自律航法演算部280とを有する。
ユーザインタフェース部220は、入力装置を介しユーザが出発地と目的地を入力すると、入力された出発地と目的地とに関する位置情報を地図アプリケーション部240に提供する。典型的には、出発地は現在位置であり、GPS機能を用いて取得した移動端末200の現在位置に関する位置情報が地図アプリケーション部240に提供されてもよい。また、目的地は、ユーザにより入力された目的地の住所などであってもよいし、あるいは地図アプリケーション部240により表示された地図情報上の指定された地点、他のアプリケーションを介し指定された建物、施設、店舗などであってもよく、これら指定された位置から導出された位置情報が地図アプリケーション部240に提供されてもよい。
地図アプリケーション部240は、ユーザインタフェース部220から出発地と目的地とに関する位置情報を受信すると、指定された出発地から目的地までのルートを設定すると共に、設定したルート上の曲がり角をアンカーポイントとして抽出及び管理する。
図4に示されるように、地図アプリケーション部240は、地図表示部242とアンカーポイント管理部244とを有する。
地図表示部242は、ユーザインタフェース部220から提供された出発地と目的地との位置情報に基づき、出発地から目的地までのルートを設定し、設定したルートをアンカーポイント管理部244に提供する。このルートの設定は、地図アプリケーション部240に格納されている地図情報を参照して、何れか適当なナビゲーションアルゴリズムを利用して出発地から目的地までのルートを決定することにより行われてもよい。典型的には、出発地から目的地までの最短ルートが選択されるが、これに限定されるものでなく、何れか適当な方法によりルートを設定するようにしてもよい。出発地から目的地までのルートが設定されると、地図表示部242は、設定されたルートをユーザに表示するための表示用地図データを生成する。なお、出発地から目的地まで複数のルートの候補が存在する場合、これら複数のルートの1つを表示用のルートとして設定して当該ルートに関する表示用地図データを生成し、他のルートについては、表示用地図データは生成しないが候補ルートとしてアンカーポイント管理部244に提供するようにしてもよい。このようにして、ユーザが設定されたルート以外のルートを実際に歩行した場合にも、候補ルートのアンカーポイントによってフレキシブルな位置補正をすることが可能になる。
アンカーポイント管理部244は、地図表示部242から設定されたルートを受信すると、地図アプリケーション部240に格納されている地図情報を参照して、当該ルート上でユーザが方位変更すると想定される曲がり角を抽出し、アンカーポイントとして設定する。具体的には、アンカーポイント管理部244は、地図情報における設定されたルート上で所定の角度(例えば、90度など)以上の方位変更を伴う地点を抽出し、抽出した地点をアンカーポイントとして設定する。その後、アンカーポイント管理部244は、抽出した地点に対応する緯度及び経度などの位置情報を当該アンカーポイントに関連付けて管理する。アンカーポイントによる移動端末200の位置補正は、移動端末200が進行方向を変更した際に、この変更地点の近傍のアンカーポイントに移動端末200の位置を補正することにより実行される。このため、アンカーポイント管理部244は、各アンカーポイントについて、当該位置の近傍領域としてアンカーエリアを設定する。アンカーポイント管理部244は、設定したアンカーポイントとアンカーエリアとをアンカー情報として自律航法演算部280に提供する。なお、アンカーポイント管理部244が、設定されたルートと共に1以上の候補ルートも併せて受信した場合、これら候補ルートのアンカー情報も同様に生成し、自律航法演算部280に提供してもよい。アンカーポイント管理部244によるアンカーポイント設定処理のより具体的な動作例は、図6を参照して以降において詳述される。
本実施例では、地図アプリケーション部240は移動端末200内に設けられたが、本発明はこれに限定されるものでない。他の実施例では、地図アプリケーション部240は、移動端末200が通信可能な外部のサーバに設けられてもよい。すなわち、ユーザインタフェース部220がユーザから入力された出発地と目的地とに関する位置情報をサーバに送信すると、サーバは上述した処理を実行してアンカーポイント及びアンカーエリアを決定し、これらをアンカー情報として移動端末200に返すようにしてもよい。
自律航法測定部260は、移動端末200の動きに関する各種データを測定し、測定したデータをセンサ情報として自律航法演算部280に提供する。図4に示されるように、自律航法測定部260は、歩数測定部262と、進行方向測定部264とを有する。
歩数測定部262は、移動端末200を携帯するユーザの歩行をモニタし、ユーザが歩いた歩数を測定する。歩数測定部262は、典型的には、加速度センサにより実現可能であるが、これに限定されることなく他の何れか適切なユーザの歩数又は歩行距離を測定可能な装置により実現されてもよい。
進行方向測定部264は、移動端末200を携帯するユーザの歩行をモニタし、ユーザが歩く進行方向を検知する。進行方向測定部264は、典型的には、地磁気センサやジャイロセンサにより実現可能であるが、これに限定されることなく他の何れか適切なユーザの進行方向を測定可能な装置により実現されてもよい。
このようにして、自律航法測定部260は、歩数測定部262により測定されたユーザの歩数と進行方向測定部264により測定されたユーザの進行方向とをセンサ情報として自律航法演算部280に提供する。このセンサ情報は、自律航法演算部280などからの要求に応答して、ユーザが歩行を開始することに応答して、又は定期的など何れか適切なタイミングで自律航法演算部280に提供されるようにしてもよい。
自律航法演算部280は、自律航法測定部260により測定された移動端末200のユーザの歩数及び進行方向などのセンサ情報を取得し、このセンサ情報から推定された基準地点からの移動量に基づき移動端末200の現在位置を推定する。この基準地点は、前回の位置補正により設定された地点であり、移動端末200が前回取得したアンカーポイントに対応する。他方、ユーザが設定ルート上のアンカーポイントの近傍で回転動作したことを検知すると、自律航法演算部280は、アンカーポイント管理部244から取得した当該アンカーポイントの位置情報によって、センサ情報に基づき推定された現在位置を補正すると共に、前回のアンカーポイントと今回のアンカーポイントの間の地図上の実距離と、センサ情報から推定された前回のアンカーポイントからの移動量とを比較して、この誤差に基づき歩幅を補正する。
図4に示されるように、自律航法演算部280は、位置算出部282と、アンカー記憶部284と、回転検出部286と、現在位置補正部288と、歩幅推定部290とを有する。
位置算出部282は、自律航法測定部260から提供されたセンサ情報に基づき自律航法中の移動端末200の移動量を算出し、現在設定されている基準地点にこの算出した移動量を加えることによって現在位置を決定し、決定した現在位置の緯度及び経度などの位置情報を地図アプリケーション部240に提供する。具体的には、位置算出部282は、センサ情報における測定されたユーザの歩数と進行方向とに基づき、測定された歩数に設定されているユーザの歩幅(初期的には、入力されたユーザの身長から1mを差し引いた値)を掛け合わせることによって歩行距離を導出し、導出した歩行距離と測定された進行方向とに基づき基準地点からの移動量を算出する。位置算出部282は、初期的にはこの基準地点として設定されたルートの出発点の緯度及び経度を設定し、ユーザの歩数から推定される歩行距離と進行方向の推移とに基づき基準地点からの移動距離及び移動方向を求める。以降、現在位置補正部288により移動端末200の現在位置が補正される毎に補正後の位置を新たな基準地点として再設定し、また歩幅推定部290により設定された補正後の歩幅に基づき再設定した基準地点からの移動量を算出する。
アンカー記憶部284は、地図アプリケーション部240から提供されたアンカー情報を格納する。具体的には、アンカー記憶部284は、提供されたアンカー情報からアンカーポイントとアンカーエリアとを保持し、移動端末200の他の構成要素からの要求に応じてアンカーポイントとアンカーエリアとを提供する。
回転検出部286は、進行方向測定部264により測定された進行方向の変化に基づき移動端末200のユーザが回転動作をしたか検出し、ユーザの回転動作が検出されると、現在位置補正部288に当該回転動作の検出を通知すると共に、設定ルート上の曲がり角などの方位変更地点に相当とすると推定される回転地点Rの位置情報を現在位置補正部288に提供する。
通常の回転動作では、ユーザが曲がり角を曲がる際、ユーザは一瞬で進行方向を変えるというよりかは、例えば、曲がり角の周囲を弧を描くように進行するなど、回転動作の開始時点から終了時点までの一定の期間に連続的に進行方向を変えるよう歩行することが一般的であると考えられる。従って、このような通常想定されるユーザの回転動作に鑑み、回転検出部286は、回転動作の開始を検知すると、この開始時点から終了時点までの進行方向の変化を連続的に検知し、位置算出部282から取得した回転動作の開始時点から完了時点までの何れか適切な時点、典型的には、開始時点から完了時点までの中間時点(回転中間点)の位置を回転地点Rとして推定する。回転検出部286による回転検出のより具体的な動作例は、図7を参照して以降において詳述される。
現在位置補正部288は、回転検出部286からユーザの回転動作の検出と回転地点Rの位置情報とを受信すると、アンカー記憶部284に格納されているアンカーポイントから回転地点Rに対応するアンカーポイントを決定し、当該アンカーポイントの位置情報によって回転地点Rの位置を更新し、さらに更新した回転地点Rの位置に対応して移動端末200の現在位置を更新する。
具体的には、現在位置補正部288は、回転地点Rとアンカー記憶部284に格納されているすべてのアンカーポイントとの間の距離を算出し、算出した距離が最小となるアンカーポイントを選択し、当該アンカーポイントに係るアンカーエリア内に回転地点Rがあるか判断する。回転地点Rがアンカーエリア内にある場合、現在位置補正部288は、ユーザが当該アンカーポイントに対応する曲がり角を曲がったと判断し、アンカー記憶部284に格納されている選択されたアンカーポイントの緯度及び経度によって回転地点Rの位置情報を更新する。さらに、現在位置補正部288は、更新後の回転地点Rの緯度及び経度と更新前の回転地点Rの緯度及び経度の差分を利用して、位置算出部282により算出された現在位置の緯度及び経度を更新する。これにより、位置算出部282により算出された現在位置の位置情報の誤差を補正することが可能となる。現在位置補正部288による位置補正のより具体的な動作例は、図8を参照して以降において詳述される。さらに、現在位置補正部288は、補正後の移動端末200の現在位置を歩幅推定部290に通知する。
歩幅推定部290は、現在位置補正部288から移動端末200の補正後の現在位置、すなわち、今回のアンカーポイントを受信すると、受信した今回のアンカーポイントと前回のアンカーポイントとの間の実距離を算出する。また、歩幅推定部290は、位置算出部282がセンサ情報に基づき推定した前回のアンカーポイントからの推定距離を取得する。この位置算出部282により算出された推定距離は、上述したように、自律航法測定部260により測定された歩数及び進行方向と、位置算出部282に現在設定されているユーザの歩幅とに基づくものであり、一般に地図情報から導出されるアンカーポイント間の実距離とは誤差がある。歩幅推定部290は、算出した実距離と推定距離との誤差に応じて、位置算出部282に設定されるユーザの歩幅を更新する。歩幅推定部290による歩幅補正のより具体的な動作例は、図9を参照して以降において詳述される。
なお、上記実施例では、現在位置補正部288は、回転地点Rとアンカー記憶部284に格納されているすべてのアンカーポイントとの間の距離を算出するよう構成されたが、回転地点Rとアンカー記憶部284に格納されているアンカーポイントの一部との間の距離のみ算出するよう構成されてもよい。アンカーポイントの一部としては、直前に通過したアンカーポイントに隣接する1以上のアンカーポイントであってもよい。ユーザが設定されたルートに沿って歩行する確率が高い場合には、出発地から目的地までのアンカーポイントを順序通りに通過する可能性が高いため、ユーザがルート上の次のアンカーポイントに到達したか判断すれば十分であり、これにより計算量を低減することが可能となる。他方、ユーザにより入力された出発地から目的地までに複数のルートが存在する場合などユーザが必ずしも設定されたルートに沿って歩行する確率が高くない場合には、上記実施例のように回転地点Rとアンカー記憶部284に格納されている設定されたルートと候補ルートのすべてのアンカーポイントとの間の距離を算出することが、適切な位置補正を行うのに効果的である。
次に、図5を参照して、本発明の一実施例による移動端末の一例となる動作を説明する。図5は、本発明の一実施例による移動端末における一例となる自律航法処理を示すフローチャートである。
図5に示されるように、ステップS501において、ユーザが移動端末200の入力装置などを介しユーザインタフェース部220に目的地を設定する。上述したように、ユーザは、目的地の住所などを入力することによって目的地を設定してもよい。また、ユーザは、地図アプリケーション部240により移動端末200の表示装置上に表示された地図情報上の地点を指定することによって目的地を設定してもよい。また、ユーザは、他のアプリケーションを介し表示された建物、施設、店舗などを指定することによって目的地を設定してもよい。
ステップS503において、ユーザが移動端末200の入力装置などを介しユーザインタフェース部220に出発地を設定する。典型的には、出発地は、デフォルトとして現在位置に設定される。他方、ユーザが現在位置以外の出発地を移動端末200の入力装置などを介し設定することも可能である。例えば、ユーザは、出発地の住所などを入力することによって出発地を設定してもよい。また、ユーザは、地図アプリケーション部240により移動端末200の表示装置上に表示された地図情報上の地点を指定することによって出発地を設定してもよい。また、ユーザは、他のアプリケーションを介し表示された建物、施設、店舗などを指定することによって出発地を設定してもよい。
ステップS505において、地図アプリケーション部240は、設定された出発地と目的地とに対して地図情報を参照してルートを決定する。地図アプリケーション部240はさらに、地図情報を参照して決定したルート上の曲がり角をアンカーポイントして設定する。このアンカーポイントの設定については、以降に詳述する。
ステップS507において、自律航法演算部280は、自律航法測定部260により測定されたセンサ情報を取得する。
ステップS509において、自律航法演算部280は、取得したセンサ情報に基づき移動端末200の現在位置を算出する。
ステップS511において、自律航法演算部280は、ユーザが回転動作をしたか判定する。この回転動作の検出については、以降に詳述する。ユーザが回転動作をしたと判断した場合(S511:Y)、自律航法演算部280は回転地点を決定し、当該フローはステップS513に移行する。他方、ユーザの回転動作を検出しない場合(S511:N)、自律航法演算部280はアンカー位置補正をせず、当該フローはステップS517に移行する。
ステップS513において、自律航法演算部280は、決定した回転地点に対応するアンカーポイントを選択し、選択したアンカーポイントの位置情報により回転地点及び移動端末200の現在位置を補正する。
ステップS515において、自律航法演算部280は、補正後の移動端末200の現在位置と前回のアンカーポイントとの間の実距離と、センサ情報に基づき推定された前回のアンカーポイントからの移動端末200の推定距離とに基づき、現在設定されているユーザの歩幅を補正する。ステップS515の具体的な処理は、図9を参照して以降において詳述される。
ステップS517において、自律航法演算部280は、補正後の移動端末200の現在位置に基づき、ユーザが目的地に到達したか判定する。ユーザが目的地に到達したと判断した場合(S517:Y)、当該自律航法処理は終了する。他方、ユーザがまだ目的地に到達していない場合(S517:N)、当該フローはステップS507に戻り、自律航法処理を継続する。
次に、図6を参照して、本発明の一実施例によるステップS506の地図アプリケーション部240におけるアンカーポイント設定処理をより詳細に説明する。図6は、本発明の一実施例によるアンカーポイント設定処理を示すフローチャートである。
図6に示されるように、ステップS601において、地図表示部242は、ユーザにより設定された出発地と目的地とに対して、地図情報を参照して出発地から目的地までのルートのうち最短ルートなどの何れか適当なルートを設定ルートとして決定し、アンカーポイント管理部244に提供する。アンカーポイント管理部244は、地図情報を参照して、設定ルート上の曲がり角をアンカーポイントとして抽出する。
ステップS603において、アンカーポイント管理部244は、設定ルート上に曲がり角に相当するアンカーポイントが存在するか判定する。設定ルート上にアンカーポイントが検出されない場合(S603:N)、当該フローはステップS615に移行し、当該アンカーポイント設定処理を終了する。この場合、移動端末200は、アンカー位置補正を利用することなく自律航法処理を実行する。他方、設定ルート上に1以上のアンカーポイントが検出された場合(S603:Y)、当該フローはステップS605に移行する。
ステップS605において、アンカーポイント管理部244は、出発地をアンカー(0)に設定し、設定ルート上の出発地から目的地への進行方向の順序で検出された1以上のアンカーポイントをアンカー(1)、アンカー(2)、・・・として整列する。
ステップS607において、アンカーポイント管理部244は、整列された各アンカーについて、隣接するアンカー(N−1)とアンカー(N)間の距離D(N)を算出する。初期的には、アンカーポイント管理部244は、地図情報を参照してアンカー(0)と次のアンカー(1)との間の距離D(1)を算出する。
ステップS609において、アンカーポイント管理部244は、アンカー(N)のアンカーエリアを設定する。アンカー(N)のアンカーエリアは、ステップS607で算出された距離D(N)のx%(0<x<100)を半径とする円の内部として設定される。このxは、ルート上のすべてのアンカーポイントに対して同一の値に設定されてもよいし、あるいは、各アンカーポイントについて異なる値に設定されてもよい。なお、xの値は隣接するアンカーエリアが重複しないよう設定されることが好ましい。これは、重複したアンカーエリアで回転動作が検出された場合、誤ったアンカー位置補正が行われる可能性があるためである。
ステップS611において、アンカーポイント管理部244は、設定ルート上のすべてのアンカーポイントに対してアンカーエリアが設定されたか判断する。具体的には、アンカーポイント管理部244は、整列されたアンカーポイントにおいて現在のアンカー(N)の次にアンカー(N+1)があるか判定する。次のアンカー(N+1)がある場合(S611:N)、当該フローはステップS613に移行し、ステップS613においてアンカー(N)のカウンタNを1だけインクリメントする。他方、次のアンカー(N+1)が存在しない場合(S611:Y)、当該フローはステップS615に移行し、当該アンカーポイント設定処理を終了し、ステップS507に移行する。
上述したように、本実施例では、アンカーポイントのアンカーエリアは、当該アンカーポイントとその直前のアンカーポイントとの間の距離に基づき設定された。しかしながら、本発明はこれに限定されるものでなく、他の何れか適当な方法によりアンカーエリアを設定してもよい。他の実施例では、アンカーポイントのアンカーエリアは、当該アンカーポイントとその直後のアンカーポイントとの間の距離に基づき設定されてもよい。また、アンカーポイントのアンカーエリアは、当該アンカーポイントを中心とした所定の半径の範囲内のエリアとして設定されてもよい。
次に、図7を参照して、本発明の一実施例によるステップS511の回転検出部286における回転検知処理をより詳細に説明する。本実施例では、上述したように、ユーザが曲がり角を曲がる際、ユーザは一瞬で進行方向を変えるというよりかは、例えば、曲がり角の周囲を弧を描くように進行するなど、回転動作の開始時点から終了時点までの一定の期間に連続的に進行方向を変えるよう歩行するというユーザの通常の回転動作を想定したものである。この場合、回転動作中の何れの回転地点をアンカー位置補正に使用するか考慮する必要があるが、本実施例では、回転動作の開始時点から完了時点までの中間時点の回転地点(回転中間点)をアンカー位置補正のための回転地点Rとして使用する。
図7は、本発明の一実施例による回転検知処理を示すフローチャートである。図7に示されるように、ステップS701において、回転検出部286は、現在の移動端末200について自律航法測定部286からセンサ情報を取得する。
ステップS703において、回転検出部286は、取得したセンサ情報から現在の移動端末200の進行方向(N)を抽出し、抽出した進行方向(N)と前回取得した進行方向(N−1)との方位差分(N)を算出する。初期的には、時間フラグNは0に設定される。
ステップS705において、回転検出部286は、算出した方位差分(N)に基づきユーザがほぼ真っ直ぐに歩行しているか判断する。すなわち、回転検出部286は、算出した方位差分(N)が所定の方位変化量y度以下であるか判定する。この方位変化量yの値は、ユーザがほぼ真っ直ぐに歩行していると判断できるような小さな値に設定される。
方位差分(N)がy度以下である場合、回転検出部286は、ユーザがほぼ真っ直ぐに歩行している、すなわち、回転動作が開始されていない又は回転動作が終了したと判断する。他方、方位差分(N)がy度以下でない場合、回転検出部286は、ユーザが回転動作を開始した又は継続していると判断する。
方位差分(N)がy度より大きい場合(S705:N)、当該フローはステップS709に移行し、回転検出部286は、時間フラグNを1だけインクリメントする。ここで、時間パラメータは、数ミリ秒〜数秒など何れか適当な時間単位に基づき設定される。時間フラグNをインクリメントした後、回転検出部286は、ステップS701に戻って次の時点N+1におけるセンサ情報を取得し、ユーザがほぼ真っ直ぐに歩行するまで、すなわち、ユーザの回転動作が終了するまで時間フラグNをインクリメントし続ける。
他方、方位差分(N)がy度以下である場合(S705:Y)、当該フローはステップS707に移行し、回転検出部286は、初期時点0から現在時点Nまで方位差分(0)から方位差分(N)までの和を算出する。なお、N=0の場合には方位差分の和は0に設定される。
ステップS711において、回転検出部286は、算出した方位差分の和が所定の方位変化量z度以上であるか判定する。この方位変化量zの値は、ユーザが回転動作したと判断できるような大きさの値に設定される。このzの値は、一定の値に設定されてもよいし、あるいは可変的に設定されてもよい。例えば、アンカー記憶部284が各アンカーポイントの曲がりの角度、すなわち、当該アンカーポイントにおいて方位変更するのに必要とされる方位変更角度を保持している場合、回転検出部286は、アンカー記憶部284にアクセスして設定されたルート上の次のアンカーポイントの方位変更角度を取得し、この方位変更角度に応じてzの値を設定するようにしてもよい。これにより、アンカーポイントの特性に応じてzの値が設定可能となり、より精度の高い回転検出が可能となる。
方位差分の和がz度未満である場合(S711:N)、回転検出部286は、ユーザは回転動作していないと判断し、ステップS713において、時間フラグNを0にリセットし、当該フローはステップS701に戻る。なお、方位差分の和がz度未満であるケースは、典型的には、回転動作を検出したが(S705:N)、方位差分の和が小さく回転不足であったケースと、回転動作を検出せず(S705:Y)、結果として方位差分の和が小さいケース(実際には、回転動作が検出されない場合、時間フラグは0のままであるため、方位差分(0)=0となる)とが考えられる。
他方、方位差分の和がz度以上である場合、回転検出部286は、ユーザが回転動作したと判断し、ステップS715において、回転動作の開始時点0から終了時点Nまでの中間時点(N/2)の地点を回転地点Rとして設定し、ステップS513のアンカー位置補正処理に移行する。
上述したように、本実施例では、回転動作の開始時点と終了時点との中間時点の位置を回転地点Rとして設定した。しかしながら、本発明はこれに限定されるものでなく、他の何れか適当な位置を回転地点Rとして設定してもよい。他の実施例では、回転動作の開始地点と終了地点との中間地点が、回転地点Rとして設定されてもよい。この場合、回転動作の開始及び終了を検知し、対応する開始地点と終了地点さえ取得してその中点を算出すればよいため、より簡単な処理により回転地点Rを設定することが可能となるであろう。さらなる他の実施例では、回転動作の開始時点から終了時点までに算出された各方位差分のうち最大値となる方位差分に対応する時点の位置を回転地点Rとして設定してもよい。これは、曲がり角に対応する地点で最も進行方向が変化すると考えられるためである。
次に、図8を参照して、本発明の一実施例によるステップS513の現在位置補正部288におけるアンカー位置補正処理をより詳細に説明する。図8は、本発明の一実施例によるアンカー位置補正処理を示すフローチャートである。本実施例では、検出された回転地点Rに対応するアンカーポイントが決定され、自律航法機能により移動端末200が認識している回転地点Rの位置情報が、地図アプリケーション部240が有する当該アンカーポイントの位置情報によって補正される。
図8に示されるように、ステップS801において、現在位置補正部288は、回転検出部286により検出された回転地点Rとアンカー記憶部284に格納されているすべてのアンカーポイントとの間の距離を測定する。
ステップS803において、現在位置補正部288は、測定した回転地点Rとアンカーポイントとの間の各距離のうち最小距離となるアンカーポイント(min)を決定し、回転地点Rが決定したアンカーポイント(min)のアンカーエリア内にあるか判定する。回転地点Rがアンカーポイント(min)のアンカーエリア内にない場合(S803:N)、現在位置補正部288は、ユーザはアンカーポイントにおいて回転動作していないと判断し、当該フローはステップS809に移行して、当該アンカー位置補正処理を終了する。
他方、回転地点Rがアンカーポイント(min)のアンカーエリア内にある場合(S803:Y)、ステップS805において、現在位置補正部288は、ユーザが当該アンカーポイントにおいて回転動作したと判断し、アンカー位置補正を実行する。すなわち、現在位置補正部288は、回転地点Rの緯度及び経度などの位置情報を、地図アプリケーション部240の地図情報を介し取得した当該アンカーポイントの緯度及び経度などの位置情報に更新する。
ステップS807において、現在位置補正部288は、この回転地点Rに対して更新された更新量を移動端末200の現在位置に反映させることによって、移動端末200の現在位置を補正する。現在位置の補正が完了すると、当該フローはステップS809に移行し、当該アンカー位置補正処理を終了する。
上述したように、本実施例では、アンカー記憶部284に格納されているすべてのアンカーポイントについて回転地点Rとの距離が算出されたが、本発明は、これに限定されるものでなく、回転地点Rに対応するアンカーポイントを決定するための他の何れか適切な方法が適用されてもよい。他の実施例では、回転地点Rとアンカー記憶部284に格納されているアンカーポイントの一部との間の距離のみ算出するよう構成されてもよい。アンカーポイントの一部としては、直前に通過したアンカーポイントに隣接する1以上のアンカーポイントであってもよい。ユーザが設定されたルートに沿って歩行する確率が高い場合には、出発地から目的地までのアンカーポイントを順序通りに通過する可能性が高いため、ユーザがルート上の次のアンカーポイントに到達したか判断すれば十分であり、これにより計算量を低減することが可能となる。
次に、図9を参照して、本発明の一実施例によるステップS515における歩幅補正処理をより詳細に説明する。図9は、本発明の一実施例による歩幅補正処理を示すフローチャートである。
図9に示されるように、ステップS901において、歩幅推定部290は、前回のアンカーポイント(N−1)と今回のアンカーポイント(N)との間の地図上の実距離Aを算出する。上述したように、算出された実距離Aは、地図アプリケーション部240の地図上の設定ルートにおけるこれら2つのアンカーポイントの間の距離に対応する。
ステップS903において、歩幅推定部290は、位置算出部282によってセンサ情報により推定された前回のアンカーポイント(N−1)からの移動距離Bを算出する。上述したように、移動距離Bは、自律航法測定部260により測定された歩数及び進行方向と、位置算出部282に現在設定されているユーザの歩幅とに基づき導出された推定距離であり、一般には実距離Aからの誤差を含むと考えられる。なお、この歩幅は、初期的にはユーザの身長から1mを差し引いた値に設定されてもよい。
ステップS905において、歩幅推定部290は、、実距離Aを推定距離Bで除することによって、歩幅係数(N)を算出する。なお、この変数Nは、アンカーポイントを受信した回数を示すカウンタである。
ステップS907において、歩幅推定部290は、歩幅係数(1)から歩幅係数(N)までの平均値を算出し、この平均値を歩幅係数(Ave)として設定する。
ステップS909において、歩幅推定部290は、前回設定された歩幅(N−1)に新たに設定された歩幅係数(Ave)を乗じ、その積を歩幅(N)として設定することによって、歩幅を補正する。
歩幅の補正後、当該フローはステップS911に移行してカウンタNをインクリメントし、ステップS913において当該歩幅補正処理を終了する。
上述したように、本実施例では、推定された歩幅の誤差のトレンドを考慮して、歩幅係数(1)から歩幅係数(N)までの平均値に基づき歩幅(N)を補正した。しかしながら、本発明はこれに限定されるものでなく、他の何れか適当な方法により歩幅の誤差を補正してもよい。他の実施例では、今回導出された誤差である歩幅係数(N)を前回の歩幅(N−1)に乗じることにより歩幅を補正してもよい。あるいは、他の実施例では、過去の所定の回数の誤差の平均値、すなわち、移動平均値に基づき歩幅(N)を補正してもよい。また、他の実施例では、標準偏差などの平均値以外の他の統計量を用いて歩幅(N)を補正してもよい。
また、本実施例では、実距離Aを推定距離Bで除することによって導出された歩幅係数により実距離Aと推定距離Bとの誤差を表した。しかしながら、本発明はこれに限定されるものでなく、実距離Aと推定距離Bとの誤差を表す他の何れか適切な係数を適用してもよい。例えば、実距離Aと推定距離Bとの差分を求め、この差分を実距離Aで除することによって、歩幅係数(N)を算出してもよい。
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。