以下、リンク情報生成装置及びリンク情報生成プログラムの一実施形態について、図1〜図32に基づいて詳細に説明する。図1には、リンク情報生成装置としてのリンク情報生成部22(図3参照)を内蔵する可搬型携帯端末100がブロック図にて示されている。この図1に示すように、可搬型携帯端末100は、端末本体10と、端末本体10に設けられた、絶対位置検出部30と、地磁気情報検出部40と、加速度情報検出部50と、制御部20と、表示画面60と、入力インタフェース62と、を備える。
絶対位置検出部30は、本実施形態では、GPS受信機であり、上空に存在する複数個のGPS衛星からの信号を受けて、絶対位置(緯度・経度で示される位置)に関する情報を得るものである。
地磁気情報検出部40は、方位センサとも呼ばれ、3軸座標系上での地磁気の検出が可能な地磁気センサ、すなわち磁気方位センサである。なお、地磁気センサに代えて、ジャイロセンサ(3軸(X,Y,Z軸)回りの角速度を検出するセンサ)を用いることとしても良い。加速度情報検出部50は、例えば、3軸方向(X軸、Y軸、Z軸方向)の加速度を検出するセンサである。
表示画面60は、制御部20の指示の下、各種情報を表示するものである。表示画面60は、例えば、可搬型携帯端末100を保持するユーザが移動したルートの情報を、表示する。入力インタフェース62は、キーボードやタッチパネルなどを含み、ユーザは、当該入力インタフェース62を介して、可搬型携帯端末100に対する処理要求コマンドを入力したり、文字等を入力したりする。
図2には、制御部20のハードウェア構成が示されている。この図2に示すように、制御部20は、CPU(Central Processing Unit)90、ROM(Read Only Memory)91、RAM(Random Access Memory)92、記憶部(ここではHDD(Hard Disk Drive)とする)93、入出力部94、及びこれら各部を接続するバス95等を備えている。制御部20では、CPU90がRAM92又はHDD93に格納されたプログラムを実行することで、図3に示す各処理部の機能を実現する。また、HDD93は、制御部20内で得られたデータなどを記憶し、図3のセンサ出力履歴格納部38の機能を実現する。入出力部94は、表示画面60や入力インタフェース62との通信を行う入出力ポートである。
図3は、図1の制御部20の機能ブロックを示す図である。この図3に示すように、制御部20は、リンク情報生成装置としてのリンク情報生成部22と、移動形状算出部24と、表示制御部25と、を有する。
リンク情報生成部22は、歩行検知部としての歩行検出部32と、判定部34と、リンク情報算出部36と、方位取得部としてのセンサ出力履歴格納部38と、を有する。歩行検出部32は、加速度情報検出部50において検出される加速度情報に基づいて、可搬型携帯端末100を保持するユーザが歩行を行っているか否かを判断し、その判断結果を、判定部34に出力する。判定部34は、ユーザが歩行している間における地磁気情報検出部40の検出結果に基づいて、ユーザが直進しているのか、あるいは、方向転換したのかなどの歩行状態を判定する。リンク情報算出部36は、判定部34による判定結果と、加速度情報検出部50の検出結果とを用いて、ユーザが直線移動した距離の情報を含むリンク情報を算出する。リンク情報算出部36は、算出したリンク情報を、移動形状算出部24に対して出力する。センサ出力履歴格納部38は、地磁気情報検出部40及び加速度情報検出部50において検出されたデータ(出力履歴)を格納する。リンク情報は、ユーザが直線移動した距離の長さをもつ線分であるリンクを1または複数含み、位置情報は持たない。
移動形状算出部24は、リンク情報算出部36にて算出されたリンク情報や絶対位置検出部30による検出結果等に基づいて、可搬型携帯端末100の移動形状を算出し、表示制御部25に対して出力する。表示制御部25は、移動形状算出部24で取得された移動形状を取得して、表示画面60上に表示する。
次に、本実施形態におけるリンク情報生成部22の処理の概要について、図4〜図9に基づいて説明する。図4(a)は、可搬型携帯端末100を保持するユーザが直線歩行しているときの、可搬型携帯端末100の方位の変化を矢印にて示す図である。ここでは、ユーザが可搬型携帯端末100を操作しながら歩行しているのではなく、ユーザは可搬型携帯端末100を腰につけたり、ポケットに入れたり、もしくは鞄に入れたりしたまま歩行した状態を例としている。この図4(a)に示すように、可搬型携帯端末100を保持するユーザが直線歩行している場合には、右足を踏み出したり、左足を踏み出したりすることで、可搬型携帯端末100の方位が変動する。図4(b)には、図4(a)のようにユーザが直進しているときに、地磁気情報検出部40にて検出される地磁気の時間変化が示されている。この図4(b)に示すように、ユーザが直進歩行すると、歩行タイミング(片足を前に出すタイミング)で、地磁気がジグザグに変化する。ただし、ここでの変化量が閾値Bを超えないように、閾値Bを設定することとする。したがって、本実施形態では、地磁気の変化量が閾値Bの範囲内である場合には、判定部34は、原則、ユーザ(可搬型携帯端末100)が直進していると判定する。
図5には、可搬型携帯端末100を保持するユーザが、進行方向を変更した場合(曲がった場合)の地磁気の変化が示されている。この図5に示すように、地磁気が変化し始めてから、時間に関する閾値A(第1の間隔)が経過するまでの間に、閾値B以上地磁気が変化した場合には、判定部34は、ユーザが方向転換をした、すなわち曲がったと判定する。
図6(a)には、ユーザが歩行している間に、地磁気情報検出部40に対して外乱を与えるような外乱要因の近傍を通過する場合の例が模式的に示されている。外乱要因には、鉄筋コンクリート造のビルや、自動車のエンジンなど、地磁気の方向を変化させる要因が含まれる。このようにユーザが外乱要因の近傍を通過すると、図6(b)に示すように、地磁気は急激に変化するが、その後、短時間で、地磁気は元の大きさ近傍まで戻る。したがって、本実施形態では、地磁気が、図5の閾値Aよりも短い閾値C(第2の間隔)の範囲内で、図6(b)のような変化をした場合には、当該波形をノイズとして扱い、判定部34は、ユーザは直進したままであると判定する。
図7(a)には、ユーザが直進している途中で、360°旋回した場合の例が示されている。このように、ユーザが直進している途中で360°旋回すると、図7(b)に示すように、地磁気は大小両方向に変化した後、ほぼ元の大きさに戻る。したがって、本実施形態では、地磁気が、図5の閾値Aよりも短い閾値D(第2の間隔)の範囲内で、図7(b)のような変化をした場合には、判定部34は、当該波形をノイズとして取り扱い、ユーザは直進したままであると判定する。
図8(a)には、ユーザが弧状に歩行した状態が模式的に示されている。この図8(a)のように、ユーザが弧状に歩行した場合、図5で説明した時間の閾値Aの範囲内では、図8(b)に示すように地磁気の変化量が閾値Bを超えないが、閾値Aの範囲を超えた後も、緩やかに変化量が大きくなっている。このような場合には、判定部34は、ユーザが弧状に移動していたと判定する。
図9(a)には、ユーザが蛇行して歩行した状態が模式的に示されている。この図9(a)のように、ユーザが蛇行して歩行した場合、図9(b)に示すように、閾値Aと同一又は閾値Aよりも長い時間(閾値E(第3の間隔))内において、変化量が閾値Bを超える回数が複数回となる。このような場合には、判定部34は、ユーザが蛇行して歩行していたと判定する。
ここで、閾値A〜Eの決定方法について説明する。なお、閾値A〜Eは、判定部34が以下の方法にて適宜決定するものとする。
まず、閾値Aの決定方法について説明する。閾値Aは、例えば、(i)人間の歩行速度に基づいて、(ii)移動形状算出部24からの性能要求に応じて、又は(iii)周辺の道路形状に応じて、決定するものとする。
具体的には、(i)の場合であれば、閾値Aは、次式(1)にて決定することができる。なお、次式(1)で用いているmax(lc)は、ユーザの位置、すなわち絶対位置検出部30から取得される位置、の周辺に存在しているカーブにおける道路距離のうちの最大値を意味する。また、vは歩行速度であり、入力インタフェース62を介してユーザから予め入力されている年齢や性別などに基づいて決定するものとする。
A=max(lc)/v …(1)
なお、カーブにおける道路距離lcは、カーブの半径を用いて算出しても良いし、統計データから導いた曲がり動作に必要な移動距離と、歩行速度に応じて変化する係数と、を積算して求めても良い。なお、上式(1)は、カーブにおける道路距離lcの最大値を含んでいることから、上記(iii)「周辺の道路形状に応じて」の概念も含んでいるといえる。
また、(ii)の場合であれば、曲がり角検出後に直進と判定するまでに必要な距離(移動形状算出部24における要求がある場合)をaとして、閾値Aを次式(2)にて決定する。
A=a/v …(2)
また、(iii)の場合であれば、閾値Aは、次式(3)にて決定する。なお、次式(3)で用いているmin(ls)は、ユーザの位置周辺にある交差点の道路直線距離の最小値を意味する。
A=min(ls)/v …(3)
次に、閾値Bの決定方法について説明する。閾値Bは、例えば、(i)ユーザが歩行している間における地磁気の変化の波形のうち、歩行タイミングと同期しているものの振幅に応じた値、又は(ii)道路形状の情報に応じた値のいずれかとする。
具体的には、(i)の場合であれば、次式(4)にて閾値Bを算出する。
ここで、FT(X,Y)は、データXをフーリエ変換して得られる周波数Y成分[μT]を意味し、mrx_all、mry_all、mrz_allは、地磁気情報検出部40の3軸(X,Y,Z軸)が過去に検出した磁束密度のデータ[μT]を意味し、fwは歩行周波数[歩数/秒]を意味するものとする。
また、(ii)の場合であれば、次式(5)にて閾値Bを算出する。
B=|Vb−R(θ)・Vb| …(5)
ここで、Vbは、地磁気ベクトル[μT]であり、Vb=(0,F・cos(I),F・sin(I))を意味する。なお、Fは全磁力[μT]であり、Iは伏角[deg]である。R(θ)は、曲がり動作に必要な回転角度θだけZ軸回りに回転するための回転行列を意味する。θは、例えば、ユーザの位置の周辺のカーブの角度θcの最小値とすることができる。また、θとしては、ユーザの周辺に図10に示すような道路がある場合において、ユーザが通るであろう最短距離が示す角度θとすることもできる。この場合、θは、次式(6)にて表すことができる。
θ=tan-1{(W1+L2)/(l1+W2)} …(6)
ただし、θ>tan-1(L2/W2)である。
次に、閾値Cの決定方法について説明する。閾値Cは、外乱要因により影響を受ける距離の統計情報、に応じて決定する。具合的には、次式(7)より閾値Cを決定する。
C=(l+α)/v …(7)
ここで、lは、外乱要因による影響を受ける基本距離[m]であり、統計的に定められている。また、αは、外乱要因の種類による増減分を意味する。αは、図11(a)のようなテーブルに基づいて決定する。具体的には、判定部34は、ユーザの位置(絶対位置検出部により検出される位置)に基づいて、ユーザが高架下に位置する可能性が高いか否か、ユーザが大きなビルの近傍や地下などの鉄筋近傍に位置する可能性が高いか否かを判断して、当該判断結果に応じたαの値を選択する。
次に、閾値Dの決定方法について説明する。閾値Dは、歩行者の一時的動作(例えば360°旋回)に必要とされる時間の統計情報に基づいて決定する。具体的には、次式(8)に基づいて閾値Dを決定する。
D=T+β …(8)
ここで、Tは、ユーザの一時的動作に要する基本時間[sec]であり、統計的に定められている。また、βは、ユーザによる可搬型携帯端末100の保持方法による増減分を意味する。βは、図11(b)のようなテーブルに基づいて決定する。具体的には、入力インタフェース62を介してユーザから入力される可搬型携帯端末100の保持方法(手持ちや腰付けなど)に基づいて、βの値を選択する。
次に、閾値Eの決定方法について説明する。閾値Eは、道路情報に基づいて決定する。具体的には、閾値Eは、次式(9)にて決定することができる。なお、min(ls)は、ユーザの位置周辺にある交差点の道路直線距離の最小値を意味する。
E=min(ls)/v …(9)
次に、本実施形態のリンク情報生成部22における処理について、図12〜図32に基づいて、詳細に説明する。
図12は、リンク情報生成部22における処理の全体的な流れを示すフローチャートである。この図12に示すように、リンク情報生成部22では、ステップS100において、歩行中データ抽出処理を行い、ステップS200において、ノイズ補正処理を行い、ステップS300において、方向転換検出処理を行い、ステップS400において、直進距離算出処理を行い、ステップS500において、リンク長L(m)を移動形状算出部24に対して出力する。以下、各ステップの処理について、詳細に説明する。
(歩行中データ抽出処理(ステップS100))
ステップS100の歩行中データ抽出処理サブルーチンでは、図13に示す処理が実行される。具体的には、図13の処理では、まず、ステップS102において、判定部34が、歩行検出部32の出力時刻t2を読み込む。ここで、出力時刻t2は、歩行を検出した時刻である。
次いで、ステップS104では、判定部34が、センサ出力履歴格納部38から地磁気情報検出部40の出力時刻t1を読み込む。ここで、出力時刻t1は、地磁気情報検出部40の出力時刻のうち、未だ読み込んでいない最も過去の時刻である。
次いで、ステップS106では、判定部34が、t1がt2以上か否か、すなわち、t1の方が現在に近いか否かを判断する。ここでの判断が否定された場合には、ステップS104に戻り、判定部34は、再度、地磁気情報検出部40の出力時刻のうち、未だ読み込んでいない最も過去の時刻を読み込む。そして、ステップS106において、判定部34は、t1がt2よりも大きいか否かを判断する。
ステップS106の判断が肯定されると、ステップS108に移行し、判定部34が、時刻t1の磁束密度(mx,my,mz)を、歩行中地磁気データMwとして保持する。次いで、ステップS110では、センサ出力履歴格納部38に記憶されている地磁気情報検出部40の出力時刻の全てを読み込んだか否かを判断する。ステップS110の判断が否定された場合には、ステップS102に戻る。その後、ステップS102〜S110の処理・判断を繰り返す。そして、ステップS110の判断が肯定された段階で、図13の全処理が終了し、図12のステップS200に移行する。なお、図13の処理が行われた結果、判定部34は、地磁気データMwとして、Mw(i)(i=0〜j)を取得し、図14のようなデータを取得したものとする。図14(a)は、歩行中におけるX軸方向に関する磁束密度mxのデータであり、図14(b)は、歩行中におけるY軸方向に関する磁束密度myのデータであり、図14(c)は、歩行中におけるZ軸方向に関する磁束密度mzのデータである。
(ノイズ補正処理(ステップS200))
次に、図12のステップS200におけるノイズ補正処理について、説明する。図15は、ステップS200のノイズ補正処理の具体的処理を示すフローチャートである。この図15に示すように、ノイズ補正処理においては、ステップS202の歩行ノイズ補正処理と、ステップS204の外乱ノイズ補正処理と、が行われる。
まず、歩行ノイズ補正処理(ステップS202)について図16のフローチャートに沿って説明する。図16のフローチャートでは、まず、ステップS210において、判定部34が、変数iを0に設定する。次いで、ステップS212では、判定部34が、地磁気データMw(i)(ここでは、Mw(0))を、判定部34が有するバッファ(bf)に格納する。次いで、ステップS214では、判定部34が、バッファに格納されたデータMwの数が2であるか否かを判断する。ここでの判断が否定された場合には、ステップS216に移行する。
ステップS216では、判定部34が、iを1インクリメント(i←i+1)する。そして、ステップS212に戻り、判定部34は、地磁気データMw(1)をバッファbfに格納した後に、再度ステップS214の判断を行う。ここでの判断が肯定されると、ステップS218に移行し、2つの地磁気データ(ここでは、Mw(0)とMw(1))の平均値を算出する。
平均値を算出した後、ステップS220に移行すると、判定部34は、iを1インクリメント(i←i+1)する。次いで、ステップS222では、判定部34が、iがjよりも大きいか否かを判断する。ここでの判断が否定された場合には、ステップS212に戻り、以降は、上記と同様の処理・判断を行う。そして、ステップS222の判断が肯定された段階で、図16の全処理を終了し、図15のステップS204に移行する。なお、ステップS202の歩行ノイズ補正処理が行われることで、図17(a)に示すように、歩行タイミングに対応してジグザグな波形を示すデータは、図17(b)に実線にて示すように、補正されることになる。
次に、外乱ノイズ補正処理(ステップS204)について、図18のフローチャートに沿って説明する。なお、本実施形態では、外乱ノイズ補正として、図6で説明した外乱要因によるノイズを補正する処理を採用した場合について説明する。
図18のフローチャートでは、まず、判定部34が、ステップS230において、変化量算出処理のサブルーチンを実行し、ステップS232において、直進/方向転換判定処理のサブルーチンを実行する。各サブルーチンでは、具体的には、以下のような処理が実行される。
(変化量算出処理(ステップS230))
ステップS230では、図19に示すように、まず、ステップS260において、判定部34が、歩行中地磁気データMwから磁束密度(mx,my,mz)を読み込む。次いで、ステップS262では、判定部34が、磁束密度(mx,my,mz)を変化量用履歴mrとして保持する。
次いで、ステップS264では、判定部34が、閾値Aを取得する。ここで、閾値Aは、前述した式(1)〜(3)のいずれかから決定される閾値である。次いで、ステップS266では、判定部34が、mrのデータ数が、閾値Aの範囲と一致するか否かを判断する。すなわち、判定部34は、閾値Aの範囲に含まれる全ての磁束密度データを取得・保持したか否かを判断する。ここでの判断が否定された場合には、判定部34は、ステップS260に戻る。一方、ステップS266の判断が肯定された場合には、ステップS268に移行する。
ステップS268では、判定部34が、変化量Δmを求める。ここで、変化量Δmは、次式(10)から求めることができる。
Δm=[{max(mx)−min(mx)}2+{max(my)−min(my)}2+{max(mz)−min(mz)}2]1/2
…(10)
次いで、ステップS270では、判定部34が、変化量Δmを変化量履歴Δmr(i)として保持する。次いで、ステップS272では、判定部34が、歩行中地磁気データMwを全て読み込んだか否かを判断し、ここでの判断が否定された場合には、ステップS260に戻る。一方、ここでの判断が肯定された場合には、図19の処理を終了して、図18のステップS232に移行する。
(直進/方向転換判定処理(ステップS232))
図18のステップS232に移行すると、判定部34は、図20のステップS280において、閾値Bを取得する。この閾値Bは、前述した式(4)又は(5)から決定される閾値である。次いで、ステップS282では、判定部34が、変数iを0に設定する。次いで、ステップS283では、判定部34が、Δmr(i)を読み出す。次いで、ステップS284では、判定部34が、閾値Bが、Δmr(i)よりも小さいか否かを判断する。ここでの判断が肯定された場合には、ステップS286に移行し、判定部34は、判定結果R(i)を、「Turn(曲がった)」とする。一方、ステップS284の判断が否定された場合には、ステップS288に移行し、判定部34は、判定結果R(i)を「Straight(直進)」とする。
その後、ステップS290に移行すると、判定部34は、iを1インクリメント(i←i+1)する。そして、ステップS292では、判定部34が、iがjよりも大きいか否かを判断する。ここでの判断が否定された場合には、ステップS283に移行し、判断が肯定された場合には、図20の全処理を終えて、図18のステップS233に移行する。
図18のステップS233では、判定部34は、iを0に設定する。次いで、ステップS234では、判定結果R(i)を取得する。次いで、ステップS235では、判定結果R(i)が、「Turn」であったか否かを判断する。ここでの判断が否定された場合には、ステップS258に移行する。ステップS258では、判定部34は、iがjと一致するか否かを判断する。ここでの判断が否定された場合には、判定部34は、ステップS259において、iを1インクリメント(i←i+1)した後、ステップS234に戻る。一方、ステップS258の判断が肯定された場合には、図18の処理を終了する。
これに対し、ステップS235の判断が肯定された場合、すなわち、R(i)がTurnであった場合には、ステップS236に移行する。ステップS236では、判定部34が、閾値Cを取得する。ここで、閾値Cは、前述した式(7)により決定される閾値である。
次いで、ステップS238では、判定部34が、Mw(i−C)から磁束密度を読み込む。ここで読み込まれる磁束密度を(mx1、my1、mz1)と定義する。次いで、ステップS240では、判定部34が、Mw(i+C)から磁束密度を読み込む。ここで読み込まれる磁束密度を(mx2、my2、mz2)とする。すなわち、ステップS238,S240では、閾値Cの時間範囲の始点より前と終点より後の磁束密度が読み込まれることになる。
次いで、ステップS242では、判定部34が、両磁束密度における変化量Δmを求める。変化量Δmは、次式(11)から求めることができる。
Δm={(mx1−mx2) 2+(my1−my2) 2+(mz1−mz2) 2}1/2 …(11)
次いで、ステップS244では、判定部34が、閾値Bを取得する。次いで、ステップS246では、判定部34が、閾値BがΔmよりも大きいか否かを判断する。ここでの判断が肯定された場合、すなわち、Δmが閾値Bを超えていなかった場合には、ステップS248に移行する。ここで、Δmが閾値Bを超えていない場合とは、図21(a)に示すように、閾値Cの始点より前(Mw(i−C))と終点より後(Mw(i+C))との段差が少ないことを意味する。このような場合には、閾値Cの範囲において生じていた波形は外乱要因によるノイズである可能性が高いと考えられる。したがって、ステップS248に移行した場合には、閾値Cの始点より前(Mw(i−C))と終点より後(Mw(i+C))との傾きaを次式(12)に基づいて算出する。
a=Mw(i+C)−Mw(i−C)/2C …(12)
そして、ステップS250において、傾きaを用いて、Mw(i−C)とMw(i+C)との間を、図21(b)に実線にて示すように、補正する。
その後、判定部34は、ステップS258に移行し、iがjであるか否かを判断する。ここでの判断が否定された場合には、ステップS259を経由して、ステップS233に戻るが、ここでの判断が肯定された場合には、図18の全処理(ステップS204)、及び図15の全処理(ステップS200)を終了して、図12のステップS300に移行する。なお、ステップS200が終了した時点では、歩行ノイズ及び外乱ノイズが補正されて、図14(a)〜図14(c)のデータから図22(a)〜図22(c)に示すようなデータが生成されることになる。図22(a)は、歩行中におけるX軸方向に関する磁束密度mxのデータ(補正後)であり、図22(b)は、歩行中におけるY軸方向に関する磁束密度myのデータ(補正後)であり、図22(c)は、歩行中におけるZ軸方向に関する磁束密度mzのデータ(補正後)である。
なお、上記においては、外乱ノイズ補正として、図6で説明した外乱要因によるノイズを補正する処理を実施した例について説明したが、これに限られるものではない。外乱ノイズ補正としては、外乱要因によるノイズ補正に代えて、又はこれとともに、図7で説明したユーザ(歩行者)の一時的動作によるノイズ補正を行うこともできる。一時的動作によるノイズ補正は、図18のフローチャートと同様の処理により、実現可能であり、この場合には、図18の閾値Cの部分を閾値Dに変更することとすれば良い。
次に、図12のステップS300(方向転換検出処理)について説明する。
(方向転換検出処理(ステップS300))
このステップS300では、図23に示すように、ステップS302において、変化量算出処理が行われ、ステップS304において、直進/方向転換判定処理が行われ、ステップS306において、弧状歩行判定処理が行われる。なお、ステップS302の変化量算出処理は、補正後の磁束密度(図22(a)〜図22(b))を用いる点が異なるものの、前述した図19の処理と同様の処理が実行される。また、ステップS304の直進/方向転換判定処理は、補正後の磁束密度(図22(a)〜図22(b))を用いる点が異なるものの、図20の処理と同様の処理が実行される。なお、ステップS302やステップS304では、地磁気の変化量のデータとして、図24のようなデータが用いられる。また、図23のステップS302及びステップS304の処理が終了した段階では、各歩行時刻における判定結果R(i)(=Turn又はStraight)が得られることになる。
ステップS304の処理が終了し、ステップS306に移行すると、図25の処理が実行される。具体的には、判定部34が、以下の処理を実行する。
まず、判定部34は、ステップS310において、iを0に設定する。次いで、ステップS312では、判定部34は、閾値Aを取得する。次いで、ステップS314では、判定部34は、サンプリング幅NsをAに設定する。
次いで、ステップS316では、判定部34が、歩行中地磁気データ(補正後)からMw(i)及びMw(i+Ns)を取得し、各データ間の変化量Δm’を次式(13)から算出する。
Δm’=Mw(i+Ns)−Mw(i) …(13)
次いで、ステップS318では、判定部34が、ステップS316で算出した変化量Δm’を履歴Δm’1として保持する。
次いで、ステップS320では、判定部34が、閾値Bを取得する。次いで、ステップS322では、判定部34が、閾値BがΔm’よりも大きいか否かを判断する。ここでの判断が肯定された場合、すなわち、Δm’が閾値Bよりも小さい場合には、ステップS324に移行し、判定部34は、Nsを倍にする(Ns←Ns+Ns)。なお、ステップS322の判断が否定された場合には、ステップS332において、iを1インクリメントした後、ステップS312に戻る。
次いで、ステップS326では、判定部34が、歩行中地磁気データから変化量Δm’を上式(13)に基づいて算出する。次いで、ステップS328では、判定部34が、変化量Δm’を履歴Δm’2として保持する。次いで、ステップS330では、判定部34が、Δm’1がΔm’2よりも小さいか否かを判断する。ここでの判断が否定された場合には、ステップS332を経て、ステップS312に戻るが、判断が肯定された場合、すなわち図8(b)に示すように、変化量が右肩上がりになっているような場合には、ステップS331に移行する。ステップS331では、閾値BがΔm’2より小さいか否かを判断する。ここでの判断が否定された場合、ステップS324に戻り、NsをNsだけ加さらに加算する。なお、ステップS331の判断が肯定された場合には、ステップS334に移行する。ステップS334では、判定部34は、R(i)からR(i+Ns)を「Etc(弧状歩行)」とする。
その後、ステップS342では、判定部34が、iをi+Nsに設定する。そして、ステップS344では、判定部34が、iがjよりも大きいか否かを判断する。ここでの判断が否定された場合には、ステップS312に戻り、肯定された場合には、図25の全処理(ステップS306)を終了するとともに、図23の全処理(ステップS300)を終了して、図12のステップS400に移行する。
(直進距離算出処理(ステップS400))
図12のステップS400(直進距離算出処理)では、図26に示すように、ステップS402において、蛇行検出処理を行うとともに、ステップS404において、直進距離算出処理を行う。以下、ステップS402,S404について具体的に説明する。
(蛇行検出処理(ステップS402))
ステップS402の蛇行検出処理では、図27に示す処理を実行する。なお、前提として、閾値Eは、歩数であるものとする。すなわち、上式(9)では、閾値Eを時間で表していたが、図27の処理ではこれを歩数に換算しているものとする。なお、歩数Eとしては、上式(9)の右辺の分子を歩幅で除した値を用いるものとする。
図27の処理では、まず、ステップS410において、判定部34が、判定結果Rの要素数hを0に設定する。次いで、ステップS411では、判定部34が、処理を始めた歩数sをhに設定する。次いで、ステップS412では、判定部34が、バッファの要素数cを0に設定する。
次いで、ステップS414では、判定部34が、判定結果R(h)がTurnであるか否かを判断する。ここでの判断が肯定された場合には、ステップS416に移行し、判定部34は、E歩中の曲がり検出時の歩数を記録するバッファbf[c]に歩数hを代入する。次いで、ステップS418では、判定部34が、cを1インクリメントする(c←c+1)。次いで、ステップS420では、hを1インクリメント(h←h+1)し、次のステップS422では、h−sが閾値Eの距離に相当する歩数であるか否かを判断する。ここでの判断が否定されれば、ステップS414に戻る。なお、ステップS414の判断が否定された場合には、ステップS416及びステップS418を経ずに、ステップS420に移行する。
なお、ステップS414からステップS422までの処理は、ステップS422の判断が肯定されるまで繰り返される。この繰り返し処理により、E歩の間に存在するTurnが、バッファbf(c)に格納される。
ステップS422の判断が肯定されて、ステップS424に移行すると、判定部34が、cが2以上であるか否かを判断する。ステップS424の判断が肯定された場合、すなわち、E歩の間に、Turnが複数存在していた場合には、ステップS426に移行して、バッファbf(c)に含まれる歩数の判定結果Rを「meander(蛇行)」とし、ステップS434に移行する。一方、ステップS424の判断が否定された場合には、ステップS426を経ずに、ステップS434に移行する。
ステップS434では、全てのR(h)の処理が終了したか否かを判断する。ここでの判断が否定された場合には、判定部34は、ステップS436において、hを1インクリメントした後、ステップS412に戻るが、肯定された場合には、図27の処理を終了する。図27の処理が終了すると、図26のステップS404に移行する。
(直進距離算出処理(ステップS404))
ステップS404の直進距離算出処理では、図3のリンク情報算出部36が、図28に示す処理を実行する。まず、図28のステップS440では、リンク情報算出部36が、リンクの変数mを0に設定するとともに、判定結果Rの変数iを0に設定する。以下、(1)R(i)がStraightの場合(2)R(i)がTurnの場合、(3)R(i)がEtcの場合、(4)R(i)がmeanderの場合、のそれぞれについて、順に説明する。
(1)R(i)がStraightの場合
この場合、ステップS442の判断(R(i)がTurnか否か)の判断が否定されるとともに、ステップS456の判断(R(i)がEtcか否か)及びステップS458の判断(R(i)がmeanderか否か)が否定される。したがって、R(i)がStraightである場合には、リンク情報算出部36は、ステップS464を実行する。
ステップS464では、リンク情報算出部36は、歩数を示す変数Sを1インクリメント(S←S+1)する。そして、ステップS450に移行し、リンク情報算出部36は、iを1インクリメント(i←i+1)する。その後は、ステップS452に移行して、iがjよりも大きいか否かを判断する。ここでの判断が否定された場合には、ステップS442に移行する。その後、R(i)がStraightである状態が続く場合には、上記処理が繰り返されるので、繰り返しの度にSが1ずつ増えるようになっている。
(2)R(i)がTurnの場合
この場合、ステップS442の判断(R(i)がTurnか否か)が肯定されるので、リンク情報算出部36は、ステップS444、S446、S448を実行する。ステップS444では、リンク情報算出部36が、リンク長L(m)にその時点の歩数Sを入力する。次いで、ステップS446では、リンク情報算出部36が、mを1インクリメント(m←m+1)し、ステップS448では、リンク情報算出部36が、歩数Sを0に戻す。次いで、ステップS450では、リンク情報算出部36が、iを1インクリメント(i←i+1)し、ステップS452では、リンク情報算出部36が、iがjよりも大きいか否かを判断する。ここでの判断が否定された場合には、ステップS442に戻る。
(3)R(i)がEtcの場合、
この場合、ステップS442の判断(R(i)がTurnか否か)が否定され、ステップS456の判断(R(i)がEtcか否か)が肯定されるので、リンク情報算出部36は、ステップS448の処理を実行する。すなわち、リンク情報算出部36は、ステップS448において、歩数Sを0に戻す。これ以降の処理は、上記(1)、(2)と同様である。
(4)R(i)がmeanderの場合
この場合、ステップS442の判断(R(i)がTurnか否か)が否定され、ステップS456の判断(R(i)がEtcか否か)が否定され、ステップS458の判断(R(i)がmeanderか否か)が肯定されるので、リンク情報算出部36は、ステップS460、S462の処理を実行する。
ステップS460では、リンク情報算出部36が、蛇行時の歩行角度θを算出する。なお、歩行角度θの算出方法については後述する。そして、ステップS462に移行すると、リンク情報算出部36は、歩数SをScosθに置き換える。その後は、ステップS450に移行し、上記(1)〜(3)と同様の処理を行う。
そして、ステップS452の判断が肯定された段階で、ステップS454に移行する。ステップS454では、リンク長L(m)にその時点の歩数Sを入力し、図28の全処理を終了する。
以上のようにして、図28の全処理が終了すると、図26の処理も終了し、図12のステップS500に移行する。
ここで、ステップS460におけるθの算出方法について、図29〜図31に基づいて、詳細に説明する。本実施形態では、θを算出する際に、道路幅Wを考慮することとしている。
図29には、θの算出方法の第1例が示されている。この図29に示す例では、角度θとしてのθnを、歩行距離lnと道路幅Wとを用いて、次式(14)より算出する。
θn=sin-1(W/ln) …(14)
図30には、θの算出方法の第2例が示されている。この図30に示す例では、角度θとしてのθnを、歩行距離lnと店Smまでの道路に沿った方向の距離lsmとを用いて次式(15)にて表されるθnのうち、ln・sinθnが、道幅W以下で、かつ、|Pn−Sm|が最小となるθnとする。
θn=cos-1(lsm/ln) …(15)
図31には、θの算出方法の第3例が示されている。この図31に示す例では、角度θとしてのθn-1を、店Smのうち最も近い地点(Ssm)までの道路方向の距離lssmと、店Smのうち最も遠い地点(Sem)までの道路方向の距離lsemとを用いて、次のように定義する。
すなわち、歩行距離ln-1を歩行している間は、蛇行していたが、lnが店の前を道路に直進していることが判別できるとき(例えば、ln-1の歩行速度がα以上である一方、lnの歩行速度がα以下であるとき)に次式(16)、(17)を満たす全てのθn-1のうち、ln-1・sinθn-1が、道幅W以下で、かつ、Pn−1Pnベクトルが、道路に対して平行であり、かつ、|Pn−1−Ssm|+|Pn−Sem|が最小となるものとする。
lssm<ln-1・cosθn-1 …(16)
lsem>ln-1・cosθn-1+ln …(17)
なお、前述した図28のステップS462では、原理的には、図32に示すように蛇行しているときの歩行距離(道路に沿った方向への移動距離L)を、lnとcosθnとを用いて、次式(18)に基づいて算出しているのと同義である。
L=l1・cosθ1+l2・cosθ2…+ln-1・cosθn-1+ln・cosθn …(18)
(リンク長L(m)を出力(ステップS500))
図12に戻り、ステップS500では、リンク情報算出部36が、ステップS400において入力されたリンク長L(m)を、移動形状算出部24に対して出力する。なお、ステップS400では、リンク長が歩数にて定義されているが、リンク情報算出部36は、リンク長を出力する時点で、歩数に歩幅を乗じた距離の情報を出力することとしても良い。
図3に戻り、移動形状算出部24では、リンク情報(直線移動距離)と、例えば、絶対位置検出部30で間欠的に検出される可搬型携帯端末100の絶対位置とを用いて、移動形状を算出する。表示制御部25は、移動形状算出部24で算出された移動形状を、例えば、地図データと組み合わせて、表示画面60上に表示するようにする。これにより、ユーザは、可搬型携帯端末100の表示画面60上で、自己が歩行した経路を確認したりすることができる。また、可搬型携帯端末100側では、歩行した経路を利用して、情報を提示するサービスをユーザに対して提供することができるようになる。
以上、詳細に説明したように、本実施形態によると、判定部34が、加速度情報検出部50により歩行が検知されている間に地磁気情報検出部40により取得される地磁気の変化量に基づいて、ユーザの歩行状態を判定し、リンク情報算出部36は、加速度情報検出部50による検出結果と、判定部34による判定結果と、に基づいて、ユーザの直進距離の情報を含むリンク情報を算出する。この場合、ユーザが歩行している間は、基本的には、歩行動作以外に地磁気を変化させる動作を行わないことから、歩行が検知されている間に取得される地磁気の変化量に基づいて、ユーザの歩行状態を判定することで、高精度にリンク情報を算出することができる。また、本実施形態では、GPSなどの絶対位置検出部30を、ユーザの歩行状態の判定に用いないこととしているので、計算量を削減することができ、ひいては消費電力を低減することができる。
また、本実施形態では、判定部34は、地磁気の変化量が、歩行により生じる地磁気の変化に基づいて定められる閾値Bよりも大きくなった場合に、ユーザが進行方向を変えたと判定するので、左右の足を前に出すことによる地磁気の変化を、進行方向の変化とは判定しないこととすることができる。これにより、判定部34は、高精度な判定を行うことが可能である。
また、本実施形態では、判定部34は、地磁気の変化量が閾値Bよりも大きい状態が、閾値Aよりも長く続いた場合に、ユーザが進行方向を変えたと判定することとしているので、外乱によるノイズや、ユーザの細かい方向転換や360°旋回動作などの影響を受けずに、ユーザが進行方向を変えたことを確実に判定することが可能となる。
また、本実施形態では、判定部34は、閾値Aを、ユーザの歩行速度、前記判定部に対する要求性能、ユーザが歩行する道路形状の少なくともいずれかを考慮して決定するので、閾値Aを適切に決定することができる。
また、本実施形態では、判定部34は、地磁気の変化量が閾値Bよりも大きい状態が、閾値CやDよりも長く続かなかった場合に、ユーザが進行方向を変えなかったと判定することとしている。したがって、この点からも、外乱によるノイズや、ユーザの細かい方向転換や360°旋回動作などの影響を受けずに、ユーザが進行方向を変えたことを確実に判定することが可能となる。
また、本実施形態では、判定部34は、閾値Eの間に、地磁気の変化量が閾値Bよりも大きくなる回数が、複数回であった場合に、ユーザが蛇行していたと判定する。これにより、リンク情報算出部36は、当該判定結果を考慮して、リンク情報を算出することができる。
また、本実施形態では、リンク情報算出部36は、加速度情報検出部50の検出結果から算出されるユーザの歩行距離に関する情報(歩行距離そのものや、歩数など)を、判定部34の判定結果に基づいて補正することとしているので、リンク情報を高精度に算出することが可能となる。
また、本実施形態では、リンク情報算出部36は、ユーザが歩行する道路の道路幅Wを考慮して、歩行距離に関する情報を補正することとしているので、道路幅Wによるユーザの歩行に対する影響を考慮した補正を行うことが可能となる。
なお、上記実施形態において判定部34により直線移動と判定されるような微小な曲がりであっても、検出できた方が好ましい場合もある。そこで、判定部34は、図12のステップS300の後に、図33に示すような処理を行うこととしても良い。
具体的には、まず、図33のステップS600において、判定部34は、磁束密度のデータ(例えば、図34(a)参照)から、直線移動中の、すなわち「Straight」と判定された磁束密度H(n)を抽出する(図34(b)参照)。次いで、ステップS602では、図34(b)に示すように、判定部34が、直進開始時をs、直進終了時をeとする。
次いで、ステップS604では、判定部34が、H(n)のH(s)との差分ΔH(n)を、次式(19)に基づいて、算出する。
ΔH(n)=H(n)−H(s) …(19)
この差分ΔH(n)が図34(c)に示されている。
次いで、ステップS606では、判定部34が、ΔH(n)の積分値I(n)を算出する。ここで、積分値I(n)は、磁束密度の差分のエネルギ値であるともいえる。なお、図34(d)には、積分値I(n)が模式的に示されている。
次いで、ステップS608では、判定部34が、I(n)が閾値T以上となったか否かを判断する。ここで、閾値Tとしては、曲がりに必要な歩数pと、曲がりと判定するための閾値qとを用いて、T=p・q/2で表される値を用いるものとする。ここでの判断が肯定された場合、ステップS610に移行し、判定部34が、閾値Tを超えたときのnの値をεとする(図35(a)参照)。なお、ステップS608の判断が否定された場合には、ステップS624に移行して、判定部34は、全ての直線移動中のH(n)が処理済みか否かを判断する。ここでの判断が否定された場合には、ステップS600に戻り、ここでの判断が肯定された場合には、図33の全処理を終了する。
一方、ステップS608の判断が肯定され、かつステップS610の処理が終了した場合、ステップS612に移行し、判定部34は、sからεまでの磁束密度データを抽出する。次いで、ステップS614では、判定部34が、磁束密度の微分値が0から0以外になるときのnをγとする(図35(b)参照)。次いで、ステップS616では、判定部34が、γ以降、磁束密度の微分値が0になるときのnをδとする(図35(c)参照)。次いで、ステップS618では、判定部34が、γにおける直進判定結果(R(n)=Straight)を曲がり動作判定(R(n)=Turn)に変更する。
次いで、ステップS620では、判定部34が、全ての直線移動中のH(n)を処理したか否かを判断する。ここでの判断が否定された場合には、ステップS622に移行して、δをsに置き換える。そして、ステップS600に戻る。一方、ステップS624の判断が、肯定された場合には、図33の全処理を終了する。
以上のような処理を行うことで、図36(b)に示すように、変化量が閾値を超える場合は勿論、図36(a)に示すように、変化量が閾値を超えないような微小な曲がりの場合でも、曲がり動作と判定することが可能となる。
なお、上記実施形態では、判定部34が、地磁気の履歴を用いて、TurnやStraightなどを判定する場合について説明したが、これに限られるものではない。例えば、判定部34は、リアルタイムに、地磁気を取得して、TurnやStraightなどを判定することとしても良い。この場合、図37に示すような処理を行うこととする。
図37には、加速度情報検出部50による検出信号(入力)と、判定部34による曲がり検出信号(地磁気の変化量が閾値Bを超えたことの検出)(入力)と、曲がり検出修正信号(曲がりではなかったと判断したことを示す信号)(入力)と、加速度情報検出部50からリンク情報算出部36への実際の出力信号と、判定部34にからリンク情報算出部36への曲がり検出の出力信号と、が示されている。この図37に示すように、通常は、地磁気の変化量が閾値Bを超えた後、その変化がノイズによるものであるか否かを判定するのに、所定時間t(例えば、10歩程度の時間)を要する。すなわち、図37の上から2段目に示すように、曲がり検出(入力)があった後、図37の下から1段目に示すように、ノイズでなく本来の曲がりであったことを出力するまでには時間tだけ要することになる。この場合、加速度情報検出部50では、図37の上から1段目に示すように、歩行信号を取得することになるが、加速度情報検出部50では、図37の下から2段目に示すように時間tの間は、歩行信号を出力せずに待ち状態とする。すなわち、加速度情報検出部50は、時間tの間は、歩行信号の出力を遅らせることとする。そして、実際に曲がり検出された後に、待ち状態の間に計数された歩数を出力するようにする。
このようにすることで、リンク情報算出部36では、ほぼリアルタイムでリンク情報を正確に算出することができるようになる。
なお、図38に示すように、曲がり検出(入力)があった後、曲がり検出修正が行われた場合(上から3段目参照)にも、加速度情報検出部50では、同様の処理を行うこととする。これにより、上記と同様、ほぼリアルタイムでリンク情報を正確に算出することができるようになる。
なお、上記実施形態では、例えば、図5〜図9において、横軸として時間をとっているが、これに限らず、横軸としては歩行距離や歩数をとっても良い。横軸として歩行距離をとる場合、例えば、式(1)、(2)、(3)、(7),(9)などのように、速度vで除して閾値(A,C,E)を算出している場合には、各式における速度vによる除算を省略して閾値(A,C,E)を算出することとしても良い。また、横軸として歩数をとる場合、例えば、式(1)、(2)、(3)、(7),(9)などにおいて速度vによる除算を省略したうえで、予め定められている歩幅により除算することで閾値(A,C,E)を算出することとしても良い。
なお、上記実施形態では、方位及び方位の変化量の検出を、地磁気情報検出部40の地磁気を用いて行うこととしたが、これに限られるものではない。例えば、地磁気情報検出部40に代えて、可搬型携帯端末100の角速度(3軸回りの角速度)を検出可能な角速度センサを設け、当該角速度センサの検出値から、方位及び方位の変化量を検出することとしても良い。
なお、本実施形態における制御部20の処理機能は、コンピュータによって実現することができる。その場合、制御部20が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。