以下に添付図面を参照して、本開示技術かかる移動方向算出装置および移動方向算出プログラムの好適な実施の形態を詳細に説明する。本実施の形態では、歩行者の前後、左右、上下の各方向の加速度を検出する加速度センサの検出値を利用する。そして、歩行者が歩行中か否か、歩行中であれば、前後左右のいずれの方向に移動しているかを算出することができる。さらに、加速度センサの検出値を利用して歩行者の移動形態も特定するため、歩行者の移動状況を高精度に特定することができる。
(移動方向算出処理の実施例)
図1は、本実施の形態にかかる移動方向算出処理の一実施例を示す説明図である。図1のように、本実施の形態では、歩行者100に移動方向算出装置110を装着させる。移動方向算出装置110は、歩行者100の前後方向となる第一の方向(X軸)と、左右方向となる第二の方向(Y軸)と、上下方向となる第三の方向(Z軸)との3軸方向の加速度を検出する加速度センサ120を有する。
なお、加速度センサ110を歩行者100に装着する際には、第一の方向の加速度を検出するセンサが歩行者100の正面方向となり、第二の方向の加速度を検出するセンサが歩行者100の前後方向に対して垂直に交わる方向となり、第三の方向の加速度を検出するセンサが歩行者100の垂直方向となるように留意する。
また、移動方向算出処理を実現するための機能部として、取得部111と、算出部112と、判断部113と、判別部114と、移動距離算出部115と、出力部116とを有する。なお、以下の説明では、便宜上、加速度センサ120によって検出された上述の第一の方向をX軸方向、第二の方向をY軸方向、第三の方向をZ軸方向として説明する。
取得部111は、上述したような3軸方向の加速度を検出する加速度センサ120から検出値を取得する機能を有する。なお、図1では、加速度センサ120は移動方向算出装置110内部に搭載された構成であるが、既存の加速度センサを利用する場合などは、加速度センサ120と移動方向算出装置110とが独立して提供されることもある。加速度センサ120と移動方向算出装置110とが独立した場合、取得部111は、独立した加速度センサ120と有線無線を問わず接続されており、検出値を取得する機能を有している。
算出部112は、取得部111によって取得された3軸方向の加速度を用いて、各方向どうしの加速度の相関性を表すクロススペクトルを算出する機能を有する。具体的には、算出部112では、Z軸方向の加速度とX軸方向の加速度との相関性を表すXZクロススペクトルと、Z軸方向の加速度とY軸方向の加速度との相関性を表すYZクロススペクトルとをそれぞれ算出する。
XZクロススペクトルは、歩行者100の前後移動と上下移動とが連動しているかを表し、連動性が高ければXZクロススペクトルの値も大きくなる。同様に、YZクロススペクトルは、歩行者100の左右移動と上下移動とが連動しているかを表す。本実施の形態では、これらクロススペクトルの値を利用して歩行者100がどのような歩行をしているかを判別する。
判断部113は、取得部111によって取得されたZ軸方向の加速度の波形の振幅に応じて任意の周期ごとに歩行者100が歩行中か否かを判断する機能を有する。任意の周期とは、移動方向算出装置110によって移動方向算出処理をおこなう時間間隔である。判断部113では、期間間隔の単位ごとに取得部111によって検出値を取得して歩行中か否かの判断をおこなう。また、以下に説明する判別処理や移動距離算出処理も任意の周期を基準に実行される。なお、以下では、任意の周期を単位周期として説明する。
そこで、単位周期としては、少なくとも歩行者100が一歩以上歩行する際の動作によって生じる加速度を検出できるように、時間間隔を設定することが望ましい。したがって、通常は、一般的に人間が一歩歩行する際に要する時間間隔を単位周期に設定する。その後、歩行者100の歩行の癖に応じて時間間隔を変更してもよい。
つぎに、判断部113による歩行中か否かの判断処理について詳しく説明する。判断部113では、人間が二足歩行をする際に、体が上下方向に揺れるという特徴を利用して歩行中か否かを判断する。判断部113では、具体的には、Z軸方向の加速度の連続値によって表された波形の振幅が上限(正負それぞれの上限値)より大きければ歩行者100は歩行中(走行も含む)と判断する。一方、判断部113では、波形の振幅が下限に満たない場合には歩行者100は停止中であると判断する。
なお、判断部113は、上述した単位周期ごとに歩行中か否かを判断するような構成であってもよい。上述のような場合、単位周期において、歩行者100が、歩行中と判断された時間の割合(動作状態率)を求めてもよい。したがって、歩行中か否かの判断結果も、単位周期ごとに出力される。
また、判断部113は、上述したようなZ軸方向の加速度の波形を利用した判断処理の他に、算出部112によって算出されたXZクロススペクトルとYZクロススペクトルとを利用して、歩行者100が歩行中か否かを判断することもできる。クロススペクトルを利用する場合、判断部113は、上述の単位周期の間に算出部112によって算出されたXZクロススペクトルの最大値もしくはYZクロススペクトルの最大値がしきい値に以上か否かに応じて、歩行中か否かの判断をおこなう。
すなわち、判断部113は、XZとYZのいずれかのクロススペクトルがしきい値以上であれば、歩行者100は歩行中であると判断し、しきい値に満たなければ、停止中であると判断する。なお、歩行中か否かの判断基準となるしきい値は、過去の検出結果から歩行状態に算出されるクロススペクトルの値に応じて設定する。設定の際には、あらかじめ歩行者100の歩行時の検出値によって算出されたクロススペクトルの値からしきい値を利用すれば、より、誤検出のない高精度な判断処理が可能となる。
以上説明したように、判断部113では、2種類の判断基準によって歩行者100が歩行中か否かを判断することができる。本実施の形態の場合、判断部113は、2種類の判断基準のうち、いずれか一方のみを利用して歩行中か否かを判断してもよい。また、2種類の判断基準を利用する場合、双方とも歩行中と判断された場合にのみ、最終的に、歩行者100が歩行中であると判断する処理が好ましい。2重の判断基準を設けることによって、判断部113では、歩行者100が停止中に発生する体の揺れを歩行中のサインとして誤検出するような事態を防ぐことができる。
判別部114は、算出部112によって算出されたクロススペクトルの値を利用して歩行者100の移動に関する判別処理をおこなう機能を有する。歩行者100の移動に関する情報とは、具体的には、移動方向(前後左右)と移動形態(歩行、走行、忍足)である。したがって、判別部114によって、移動方向を判別する場合と、移動形態を判別する場合のそれぞれの処理について、順を追って説明する。なお、いずれの判別処理も、判断部113により歩行者100が移動中であると判断された場合にのみ処理が開始される。すなわち、歩行状態を判別処理開始のトリガとすることによって、停止中に判別部114による判別処理を停止させることができる。
まず、判別部114による歩行者100の移動方向の判別について説明する。判別部114は、算出部112によって算出されたXZクロススペクトルとYZクロススペクトルについて、それぞれ単位周期における最大値を比較する。そして、判別部114は、比較結果を参照し、XZクロススペクトルが大きければ前後移動、YZクロススペクトルが大きければ左右移動と判別する。
判別部114は、上述の処理によって前後移動か左右移動かが判別されると、さらに、前後のいずれ、もしくは、左右のいずれに移動しているかを判別する処理に移行する。判別部114は、歩行者100が前後方向に移動していると判別した場合、さらに、XZクロススペクトルの最大値の実部と虚部とから算出される位相差が所定の範囲に収まるか否かに応じて、前方向と後方向のいずれに移動しているかを判別する。
同様に、判別部114は、歩行者100が左右方向に移動していると判別した場合、さらに、YZクロススペクトルの最大値の実部と虚部とから算出される位相差が所定の範囲に収まるか否かを判断する。判断結果に応じて判別部114は、歩行者100が右方向と左方向とのいずれに移動しているかを判別する。なお、位相差の範囲は、過去の検出結果から適宜設定すればよい。
XZクロススペクトルの最大値の実部と虚部との位相差の値は、前方向に移動している場合と後方向に移動している場合とでは、明確に区別された値が算出される。たとえば、前方向の移動中には位相差が−90度〜90度の間となり、後方向の移動中には位相差が90度〜−90度の間になるといった特徴が発生する。位相差の分布の特徴はYZクロススペクトルにおける左右の移動に関しても発生する。したがって、判別部114には、歩行者100の各方向への移動に応じて発生する位相差の範囲が設定されている。
つぎに、判別部114による移動形態の判別について説明する。判別部114は、上述した移動方向の判別結果と、対応するクロススペクトルの最大値とに基づいて、歩行者100が歩行か走行か忍足かのいずれの形態であるかを判別する。具体的には、まず、判別部114によって、判別された歩行者100の移動方向を参照する。そして、歩行者100が前後方向に移動していると判別されている場合、判別部114は、同一の単位周期におけるXZクロススペクトルの最大値と、当該最大値の実部と虚部とから算出される位相差の値を特定する。
同様に、歩行者100が左右方向に移動していると判別された場合、判別部114は、同一の単位周期におけるYZクロススペクトルの最大値と、当該最大値の実部と虚部とから算出される位相差の値とを特定する。判別部114には、あらかじめ、XZクロススペクトル(もしくはYZクロススペクトル)の最大値と、最大値の実部と虚部とから算出される位相差の値とに応じた移動形態の場合分け情報が用意されている。したがって、判別部114は、特定された値によって場合分けをおこない、歩行者100の移動形態を判別する。
移動距離算出部115は、判別部114による判別結果を利用して歩行者100の移動距離を算出する機能を有する。具体的には、判別部114によって判別された移動方向と、移動形態とに基づいて、あらかじめ用意した移動距離を求める近似式を選択する。移動距離算出部115では、選択された近似式を利用して、単位周期ごとに歩行者100の移動距離を算出することができる。なお、近似式に単位周期内の歩行時間の割合(後述する動作状態率k)をかけることによって、停止中の時間が移動距離の算出に含まれないように設定することができる。
出力部116は、移動方向算出装置110による移動方向算出処理によって特定された情報を出力する機能を有する。具体的には、判別部114による判別結果や、移動距離算出部115による算出結果が出力される。なお、出力部116による情報の出力先は任意に設定することができる。たとえば、移動方向算出装置110自体に表示部を取り付けて歩行者100に出力情報を表示してもよいし、通信I/F(インターフェース)を介して他の装置に送信して他者に出力情報を表示してもよい。
以上説明したように、本実施の形態にかかる移動方向算出処理では、加速度センサ120によって検出された歩行者100の前後左右上下の加速度の値を利用して、歩行者100の動作を詳細に特定することができる。特に、歩行者100の上下方向の加速度(Z軸方向の加速度)を利用して、歩行者100が歩行中か停止中かの判断をおこなうため、歩行時間を詳細に特定できる。すなわち、歩行者100が、どの方向へどのような移動形態でどれだけの時間歩行したかを特定できるため、誤差の少ない高精度な移動距離を算出することができる。
また、本実施の形態の判断部113では、歩行者100の上下方向の加速度の波形や、上下方向の移動と前後方向への移動(もしくは左右方向への移動)との相関性の大きさに応じて歩行中か否かを判断している。これらの値は、加速度センサ120によって検出された値の大小にかかわらず出力される。したがって、従来の課題であった、歩行者100自身の動作が微少な歩行であっても、正確に歩行中か否かの判断を下すことができる。
また、本実施の形態の判別部114では、判断部113による歩行中との判断結果が判別処理のトリガとなるため、停止中であるにもかかわらず算出部112によって算出されたクロススペクトルを利用して判別結果(誤った判別結果)を出力してしまうような事態を防ぐことができる。また、判別部114は、算出部112によって、算出されたクロススペクトル(XZクロススペクトル、YZクロススペクトル)から求められる情報のみを用いて、歩行者100の移動方向と移動形態をそれぞれ判別することができる。なお、本実施の形態にて述べる移動方向とは、前進、後進、左右移動といった歩行者100の体の向きに対して移動する方向を表す。
また、本実施の形態の移動距離算出部115では、判別部114による歩行者100の移動方向と移動形態との判別結果ごとに、判断部113による歩行判断によって求められた歩行時間分移動した場合の移動距離が算出される。したがって、移動方向や移動形態が変わった場合には、あらたな判別結果に応じた移動距離が算出される。したがって、従来技術のように小さな誤検出の累積によって移動距離の算出結果が大きくずれてしまうような事態を防ぎ、高精度に移動距離を算出することができる。
以下に、上述したような本実施の形態にかかる移動方向算出処理を実現するための具体的な構成例や処理手順について順番に説明する。
(移動方向算出装置のハードウェア構成)
図2は、移動方向算出装置のハードウェア構成を示すブロック図である。図1に表したように、移動方向算出装置110は、歩行者100が携帯可能な小型装置である。また、移動方向算出装置110は、たとえば、PDA(Personal Digital Assistant)やPC(Personal Computer)などの既存の端末に以下に説明するハードウェア構成を追加したものでもよいし、専用の筐体からなる装置であってもよい。
移動方向算出装置110の内部は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、HDD(Hard Disk Drive)204と、HD(Hard Disk)205と、メモリドライブ206と、リムーバブルメモリ207と、ディスプレイ208と、入力I/F(Interface)209と、各種センサ210と、ネットワークI/F(Interface)211と、を備えている。また、各構成部はバス220によってそれぞれ接続されている。
ここで、CPU201は、移動方向算出装置110の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。HDD204は、CPU201の制御にしたがってHD205に対するデータのリード/ライトを制御する。HD205は、HDD204の制御で書き込まれたデータを記憶する。
メモリドライブ206は、CPU201の制御にしたがってリムーバブルメモリ207に対するデータのリード/ライトを制御する。リムーバブルメモリ207は、メモリドライブ206の制御で書き込まれたデータを記憶したり、リムーバブルメモリ207に記憶されたデータをCPU201の制御に応じてメモリドライブ206に読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
入力I/F209は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、入力I/F209の構成例としては、たとえば、タッチパネル式の入力パッドやテンキーや、マウス、トラックボールやジョイスティックなどのポインティングデバイスなどが挙げられる。
各種センサ210は、移動方向を算出するための情報を測定するための異なる機能を持った複数種類のセンサから構成されている。具体的には、図1に示したような3軸方向の加速度を検出する加速度センサ120と、磁気センサと、ジャイロセンサとが搭載されている。加速度センサ120は、図1によって説明したように歩行者100の歩行間隔や、移動方向を特定するために利用され、その他の磁気センサおよびジャイロセンサは、歩行者100の移動する方位を特定するために利用される。したがって、移動方向算出装置110に要求される仕様に応じて磁気センサとジャイロセンサとのいずれかの一方のみを搭載してもよい。
なお、磁気センサは、エレベータの昇降や自動車の通過などに伴う磁気変動の影響を受けて誤検出を起こすことがある(高精度の磁気センサであるほど影響が大きい)。したがって、上述のような影響を受けやすい環境下での使用が想定される移動方向算出装置100の場合は、磁気センサとジャイロセンサとの双方を搭載し、磁気センサの検出誤差をジャイロセンサの検出値によって補正するような設定が望ましい。
ネットワークI/F211は、有線無線を問わずに通信回路212を通じてインターネットなどのネットワーク230に接続する。さらに、ネットワークI/F211は、接続したネットワーク230を介して移動方向算出装置110を他の装置(外部装置)に接続することができる。したがって、ネットワークI/F211は、ネットワーク230と移動方向算出装置110とのインターフェースを司り、外部装置からのデータの入出力を制御する。なお、ネットワークI/F211には、たとえば、モデムやLANアダプタなどを採用することができる。
(移動方向算出装置の機能的構成)
図3は、移動方向算出装置の機能的構成を示すブロック図である。図3のように、移動方向算出装置110は、センサ部310と、演算処理部320と、記憶部330と、表示部340と、通信部350とから構成されている。
センサ部310は、加速度センサ311(加速度センサ120の搭載例)と、磁気センサ312と、ジャイロセンサ313の3種類のセンサを備えている。センサ部310では、これら各センサから歩行者100の移動に伴う動作内容を単位周期ごとに連続して検出する。また、センサ部310は、たとえば、図2にて説明した各種センサ210によって実現される。
なお、加速度センサ311は歩行者100の移動状態、移動方位ならびに移動形態を特定するために利用され、磁気センサ312とジャイロセンサ313は、いずれも歩行者100の移動方位を特定するために利用される。したがって、磁気センサ312とジャイロセンサ313とのいずれかに大きな誤差が生じることのない利用環境であれば、加速度センサ311以外は、いずれか一方のみを搭載するような構成であってもよい。
演算処理部320は、センサ部310から取得した検出値を用いて歩行者100の移動方向を算出する機能部である。したがって、検出値を利用したクロススペクトルの算出や、算出値の比較処理などがおこなわれる。たとえば、図1にて説明した、算出部112、判断部113、判別部114、移動距離算出部115の処理は演算処理部320によっておこなわれる。なお、演算処理部320は、たとえば、図2にて説明したCPU201、ROM202およびRAM203によって実現される。
記憶部330は、CPU201の制御に応じて所定の情報を記憶する機能部である。記憶部330に記憶される情報としては、演算処理部320による処理結果(たとえば、算出されたクロススペクトル値、移動方向や移動形態の判別結果、移動距離の算出結果など)に加えて、演算処理部320による演算処理に利用される演算アルゴリズム331や、移動距離を算出する近似式に利用する移動距離係数332がある。なお、記憶部330は、たとえば、図2にて説明したHDD204、HD205、メモリドライブ206およびリムーバブルメモリ207によって実現される。
表示部340および通信部350は、演算処理部320によって算出された歩行者100の移動に関する情報の出力手段として機能する。表示部340では、液晶ディスプレイなどの表示デバイスによって歩行者100自身に移動に関する情報を報知することができる。また、通信部350は、演算処理部320によって算出された歩行者100の移動に関する情報を他の装置や特定の情報を収集するセンタに送信することができる。すなわち、通信部350を介して、他者に対して歩行者100の移動に関する情報を報知することができる。
また、通信部350は、外部から送信された情報を受信することできる。したがって、記憶部330に記憶されている演算アルゴリズム331や移動距離計数332を必要に応じて外部から取得するような設定でもよい。なお、表示部340は、たとえば、図2のディスプレイ208によって実現され、通信部350は、たとえば、図2のネットワークI/F211によって実現される。
(データ取得手順)
図4は、センサ部310からのデータ取得手順を示すフローチャートである。移動方向算出装置110によって移動方向を算出するには、センサ部310の各センサから検出されたデータを演算処理部320によって定期的に取得する必要がある。したがって、演算処理部320におけるデータ取得手順について、図4のフローチャートを用いて説明する。以下に説明する手順の処理をおこなうことにより、センサ部310は、移動方向算出装置110の電源ON/OFFに対応して自動的にデータを取得することができる。
図4のフローチャートにおいて、移動方向算出装置110は、まず、装置の電源がONになったか否かを判断する(ステップS401)。ここで、移動方向算出装置110は、電源がONになるまで待ち(ステップS401:Noのループ)、電源がONになったと判断されると(ステップS401:Yes)、センサ部310内の各センサの検出処理が開始される。
ステップS401のトリガによってセンサ部310の検出処理が開始されると、演算処理部320は、加速度センサ311から検出値を取得し(ステップS402)、磁気センサ312から検出値を取得し(ステップS403)、ジャイロセンサ313から検出値を取得する(ステップS404)。図4のフローチャートでは、ステップS402、S403、S404の各処理は直列処理として表されているが、実際には各センサからは同時に検出値が取得されるため並列して実行される。
図5は、センサ部310によって取得した検出値の蓄積例を示すデータテーブルを示す説明図である。センサ部310の各センサによって取得された検出値は、データテーブル500のように、軸方向(X軸、Y軸、Z軸)ごとにそれぞれ蓄積される。移動方向算出装置110では、ステップS402〜S404による検出値の取得、蓄積が開始されると、継続判断のために、処理開始後には電源がOFFされたか否かの判断がおこなわれる(ステップS405)。
したがって、ステップS405によって電源のOFFが検出されるまで(ステップS405:Noのループ)、ステップS402〜S404の処理を繰り返す。そして、電源のOFFが検出されると(ステップS405:Yes)、センサ部310からの検出値の取得、蓄積処理が終了する。
(移動方向算出処理手順)
図6は、移動方向算出装置110による移動方向算出処理の手順を示すフローチャートである。移動方向算出装置110では、図4のフローチャートにて説明したように、電源ONをトリガにして、自動的に各センサ(加速度センサ311、磁気センサ312、ジャイロセンサ313)による検出値が取得される。移動方向算出装置110の演算処理部320では、取得された検出値を用いて以下に説明する算出処理を実行することによって、歩行者100の歩行内容を特定することができる。
図6のフローチャートのように、移動方向算出装置110では、まず、各センサの検出値を単位周期ごとに取得、蓄積する(ステップS601)。ステップS601の処理は、図4のフローチャートにて説明したデータ取得手順に相当する。なお、単位周期とは、少なくとも一歩の歩行が含まれているような時間間隔が設定される。したがって、初期値としてはたとえば2秒を単位周期として検出値を取得、蓄積する。
ステップS601の処理によって検出値が取得、蓄積されると、つぎに、演算処理部320によって、各軸方向の加速度から周波数成分を算出する(ステップS602)。ステップS602において、周波数成分を算出するには、検出された加速度に対して、たとえば、FFT(Finite Fourier Transform)などによって変換処理を施せばよい。具体例を挙げると、下記の(1)〜(3)式のように、X,Y,Z軸方向の加速度は、フーリエ変換を施して虚数単位jを用いて表すことができる。
その後、演算処理部320は、ステップS602によって算出された周波数成分を利用して各軸どうしの相関性を表すクロススペクトルを算出する。まず、X軸方向の周波数成分とZ軸方向の周波数成分とを用いてXZクロススペクトルを算出する(ステップS603)。
具体的には、上記(1),(3)式によって求められた周波数成分を利用する場合、X軸方向の加速度とZ軸方向の加速度との相関性を表すXZクロススペクトル=SXZ(kΔf)は、下記(4)式のようになる。また、SXZ(kΔf)の複素共役関数F* X(kΔf)は、下記(5)式のようになる。したがって、XZクロススペクトルの実部SXZR(kΔf)は、下記(6)式、虚部SXZJ(kΔf)は、下記(7)式のようになる。
同様に、演算処理部320は、Y軸方向の周波数成分とZ軸方向の周波数成分とを用いてYZクロススペクトルを算出する(ステップS605)。上記(2),(3)式によって求められた周波数成分を利用する場合、Y軸方向の加速度とZ軸方向の加速度との相関性を表すYZクロススペクトル=SYZ(kΔf)は、下記(8)式のようになる。また、SYZ(kΔf)の複素共役関数F* Y(kΔf)は、下記(9)式のようになる。したがって、YZクロススペクトルの実部SYZR(kΔf)は、下記(10)式、虚部SYZJ(kΔf)は、下記(11)式のようになる。
そして、ステップS603およびS605によってクロススペクトルが算出されると、つぎに、移動方向と移動形態の判別処理に利用する情報として、各クロススペクトルの最大値における周波数、振幅を算出する。まず、XZクロススペクトルの最大値XZmaxにおける周波数、振幅を算出する(ステップS604)。最大値XZmaxとは、XZクロススペクトル=SXZ(kΔf)が最大の時の振幅AXZである。したがって、下記(12)式によって、XZクロススペクトル=SXZ(kΔf)が最大の時の振幅AXZを求めればよい。
同様に、YZクロススペクトルの最大値YZmaxにおける周波数、振幅を算出する(ステップS606)。最大値YZmaxとは、YZクロススペクトル=SYZ(kΔf)が最大の時の振幅AYZである。したがって、下記(13)式によって、YZクロススペクトル=SYZ(kΔf)が最大の時の振幅AYZを求めればよい。
ステップS603〜S606によってクロススペクトルに関する値が算出されると、つぎに、動作状態率kと移動方位の算出処理に移行する(ステップS607)。動作状態率kとは、単位周期における動作状態の割合を表す値であり、歩行者100が歩行中か否かの判断に利用される。ここで、ステップS607における動作状態率kと移動方位の算出について詳しく説明する。なお、本実施の形態にて述べる移動方位とは、北向き、東向きといった歩行者100の体が向いている絶対的な方位を表す。
図7は、動作状態率kの算出手順を示すフローチャートである。また、図8は、Z軸方向の加速度の波形を用いた動作状態率の算出例を示す説明図である。演算処理部320では、移動方向算出処理と平行して、図7および図8に示す手順によって、加速センサ311から取得されたZ軸方向の加速度の検出値を利用して、歩行者100の動作状態率kを算出する。演算処理部320では、動作状態率kを算出することによって、単位時間の間、歩行者100が歩行中(走行や忍足を含む)と判断される時間の割合を詳細に特定することができる。
図7のフローチャートのように、演算処理部320では、まず、Z軸方向の加速度を表す波形801(図8参照)の中から正負のいずれかの上限を超える値を検出する(ステップS701)。演算処理部320では、図8の波形図800に例示したように、あらかじめ設定した正負の上限(プラス/マイナス)を超える波形を歩行状態に生じる波形、正負の下限(プラス/マイナス)以内に収まる波形を停止状態に生じる波形として、それぞれの波形の割合から歩行者100の動作状態率kを算出する。
そして、ステップS701によって検出された値を検索点1に設定する(ステップS702)。さらに、検索点1以前に正負いずれかの下限に満たない値があるか否かを判断する(ステップS703)。すなわち、ステップS703では、検索点1以前の波形が歩行状態を表すのか停止状態を表すのかを判断する。
ステップS703において、検索点1以前に正負のいずれかの下限に満たない値が存在すると判断された場合(ステップS703:Yes)、検索点1以前は停止状態を表す波形であると判断する。したがって、検索点1以前の正負のいずれかの下限と交差する時刻を歩行開始点に特定する(ステップS704)。たとえば図8の波形801の場合、検索点1の以前は停止状態を表す波形であるため、t1が歩行開始点として特定される。
一方、ステップS703において、検索点1以前に正負のいずれかの下限に満たない値が存在しないと判断された場合(ステップS703:No)、検索点1以前も歩行状態を表す波形と判断される。したがって、加速度の蓄積開始時刻を歩行開始点に特定する(ステップS705)。蓄積開始時刻とは、波形図800によって表された波形の先頭(左端)部分を指す。
歩行開始点が特定されると、つぎに、蓄積終了時刻以前の波形801の中から正負のいずれかの上限を超える値を検出する(ステップS706)。蓄積終了時刻とは、波形図800によって表された波形の末尾(右端)部分を指す。すなわち、ステップS706では、蓄積終了時刻以前に、歩行状態から停止状態への切り替え(もしくは停止状態から歩行状態への切り替え)が発生しているか否かを判断する。
そして、ステップS706によって検出された値を検索点2に設定する(ステップS707)。さらに、検索点2以降に正負いずれかの下限に満たない値があるか否かを判断する(ステップS708)。すなわち、ステップS708では、検索点2以降の波形が歩行状態を表すのか停止状態を表すのかを判断する。
ステップS708において、検索点2以降に正負のいずれかの下限に満たない値が存在すると判断された場合(ステップS708:Yes)、検索点2以降は停止状態を表す波形であると判断する。したがって、検索点2以降の正負のいずれかの下限と交差する時刻を歩行終了点に特定する(ステップS709)。たとえば図8の波形801の場合、検索点2以降は停止状態を表す波形であるため、t2が歩行終了点として特定される。
一方、ステップS708において、検索点2以降に正負のいずれかの下限に満たない値が存在しないと判断された場合(ステップS708:No)、検索点2以降も歩行状態を表す波形と判断される。したがって、加速度の蓄積終了時刻を歩行終了点に特定する(ステップS710)。なお、実際には、蓄積終了時刻以降も歩行状態が継続している可能性はあるが、波形801によって表された単位周期における歩行状態はひとまず終了したものとして扱われる。
つぎに、ステップS710までの処理によって特定された歩行開始点と歩行終了点とを利用して、動作状態率を算出する(ステップS711)。まず特定された歩行開始点と歩行終了点に対応する時刻を求め、それぞれ、歩行開始時刻、歩行終了時刻とする。つぎに、歩行開始時刻と歩行終了時刻との差分を求めることによって、歩行状態として検出されたのべ時間を特定する。そして、加速度の蓄積時間(単位周期)内の、歩行状態ののべ時間の割合を動作状態率として出力する。すなわち、ステップS711の算出処理は、「動作状態率=(歩行終了時刻−歩行開始時刻)/蓄積時間」によって求められる。
さらに、演算処理部320では、ステップS711までの処理によって特定された歩行状態と停止状態との時間の割合を利用して移動方位を算出する(ステップS712)。具体的には、波形図800のように歩行状態と特定された時刻に磁気センサ312、ジャイロセンサ313によって特定された方位の平均を求め、いずれか一方の方位、もしくは両センサ出力を融合した方位を歩行者100の移動方位とする。
図6のフローチャートに戻り、つぎに、ステップS607によって算出された動作状態率kが0か否かを判断する(ステップS608)。動作状態率kが0とは、すなわち、単位周期の間、停止状態が継続していることを意味する。したがって、動作状態率kが0であると判断された場合(ステップS608:Yes)、演算処理部320は、歩行者100が停止状態という判断結果(ステップS623)と、移動距離=0という算出結果(ステップS624)とを出力して、一連の処理を終了する。
ステップS608において、動作状態率kが0以外の場合(ステップS608:No)、単位周期において、歩行状態が発生したことを意味する。したがって、つぎに、ステップS604,S606によって算出したXZクロススペクトルもしくはYZクロススペクトルの最大値XZmax,YZmaxのいずれかがしきい値以上か否かを判断する(ステップS609)。
ここで、図9は、歩行状態の検出例を示す波形図である。図9では、一例として、歩行者100が前後方向に歩行した場合に検出されたXZクロススペクトルの最大値の変化を表している。図9のように、通常、歩行者100が歩行中と停止中とでは、検出値から求められるクロススペクトルの最大値のレベルが大きく異なる。当然のことながら、左右方向に歩行している場合には、YZクロススペクトルの最大値が歩行中か否かによって、図9のような変化を示す。
したがって、演算処理部320では、あらかじめ、算出されたクロススペクトルの最大値のレベル差の境をしきい値として設定しておく。そして、歩行者100が歩行中か否かを判断する際に、クロススペクトルの最大値がしきい値以上となるか否かの判断ステップを追加する。これにより、停止中に歩行者100が体を揺らした場合に、誤って歩行状態であると検出されるような事態を排除することができる。
上述したように、XZクロススペクトルであれば前後動作と上下動作との相関性、YZクロススペクトルであれば左右動作と上下動作との相関性を表している。すなわち、実際にいずれかの方向に踏み出さなければ、しきい値以上のクロススペクトルは求まらない。
したがって、図6のステップS609では、最大値XZmax,YZmaxのいずれかがしきい値に満たない場合(ステップS609:No)、演算処理部320は、歩行者100が停止状態という判断結果(ステップS623)と、移動距離=0という算出結果(ステップS624)とを出力して、一連の移動方向算出処理を終了する。
一方、ステップS609において、最大値XZmax,YZmaxのいずれかがしきい値以上であると判断された場合には(ステップS609:Yes)、歩行者100が移動中であるとする。そして、続いて、歩行者100の歩行内容に関する判別処理に移行する。まず、歩行者100が前後方向、左右方向のいずれの方向に移動しているかを判別するため、XZmaxがYZmaxよりも大きいか否かを判断する(ステップS610)。
図10は、XZクロススペクトルとYZクロススペクトルとの最大値を用いた前後方向判別例を示す波形図である。図10では、前後方向に移動している歩行者100から求めたXZクロススペクトルとYZクロススペクトルとの最大値の変化の一例を表している。
図11は、XZクロススペクトルとYZクロススペクトルとの最大値を用いた左右方向判別例を示す波形図である。図11では、左右方向に移動している歩行者100から求めたXZクロススペクトルとYZクロススペクトルとの最大値の変化の一例を表している。
図10および図11から明らかなように、演算処理部320では、歩行者100が実際に移動している方向に関連したクロススペクトルの最大値がより大きくなる。したがって、ステップS610において、XZmaxがYZmaxよりも大きいと判断された場合(ステップS610:Yes)、歩行者100は前後方向に移動しているものとして、以降の判別処理をおこなう。
同様に、ステップS610において、XZmaxがYZmaxよりも小さいと判断された場合(ステップS610:No)、歩行者100は左右方向に移動しているものとして、以降の判別処理をおこなう。なお、XZmaxとYZmaxとが等しい場合には、搭載されている加速度センサ311の検出感度に応じて前後方向か左右方向かの判断を下すように設定しておく。
つぎに、移動形態の判別処理について説明する。ステップS610において、XZmaxがYZmaxよりも大きいと判断され(ステップS610:Yes)、歩行者100は前後方向に移動しているものとして判別処理を進めている場合、つぎに、XZmaxと、XZmaxが検出された際の周波数XZmaxfとを用いて、移動形態を判別する(ステップS611)。
図12は、移動形態の判定条件例を示すデータテーブルを示す説明図である。ステップS611では、あらかじめ移動形態の判定条件が設定されたデータテーブル1210を参照して、XZmaxと周波数XZmaxfとの値に応じて歩行者100の移動形態を判別し、判別結果を出力する。
図6のフローチャートに戻り、演算処理部320では、さらに、詳細な移動方向を判別するため、XZmaxの時の実部と虚部との位相差XZphaを算出する(ステップS612)。位相差XZphaを算出するには、下記(14)式を用いてXZクロススペクトル=SXZ(kΔf)が最大となる時の位相差ΘXZを求めればよい。
つぎに、ステップS612の算出結果に応じて、歩行者100が前後のいずれに移動しているかを判別する。歩行者100が前後のいずれに移動しているかを判別するには、あらかじめ歩行者100が前方向に移動した場合、後方向に移動した場合にそれぞれ求めたXZmaxの時の実部と虚部との位相差XZphaを利用する。
図13は、前進時の位相差例を示す波形図であり、図14は、後進時の位相差例を示す波形図である。図13のように、歩行者100が前進時には、位相差XZphaの値は、90度〜−90度の範囲に収まる傾向にある。同様に、歩行者100が後進時には、180度〜90度もしくは、−90度から−180度の範囲に分散する傾向にある。
したがって、図6のステップS613において、演算処理部320では、図13および図14のような位相差XZphaの分布の特徴を生かし、ステップS612によって算出された位相差XZphaが90度〜−90度の範囲に収まるか否かを判断する(ステップS613)。
ステップS613によって位相差XZphaが90度〜−90度の範囲に収まると判断された場合(ステップS613:Yes)、歩行者100の移動方向の判別結果として「前進」を出力する(ステップS614)。一方、位相差XZphaが90度〜−90度の範囲に収まらないと判断された場合(ステップS613:No)、歩行者100の移動方向の判別結果として「後進」を出力する(ステップS615)。
同様に、ステップS610において、XZmaxがYZmaxよりも小さいと判断され(ステップS610:No)、歩行者100は左右方向に移動しているものとして判別処理を進めている場合、つぎに、YZmaxと、YZmaxが検出された際の周波数YZmaxfとを用いて、移動形態を判別する(ステップS616)。ステップS616でもステップS611同様に、あらかじめ移動形態の判定条件が設定されたデータテーブル1220(図12参照)を参照して、YZmaxと周波数YZmaxfとの値に応じて歩行者100の移動形態を判別し、判別結果を出力する。
その後、演算処理部320では、さらに、詳細な移動方向を判別するため、YZmaxの時の実部と虚部との位相差YZphaを算出する(ステップS617)。位相差YZphaを算出するには、下記(15)式を用いてYZクロススペクトル=SYZ(kΔf)が最大となる時の位相差ΘYZを求めればよい。
つぎに、ステップS617の算出結果に応じて、歩行者100が左右のいずれに移動しているかを判断する。歩行者100が左右のいずれに移動しているかを判別するには、あらかじめ歩行者100が右方向に移動した場合、左方向に移動した場合にそれぞれ求めたYZmaxの時の実部と虚部との位相差YZphaを利用する。
図15は、右歩行時の位相差例を示す波形図であり、図16は、左歩行時の位相差例を示す波形図である。図15のように、歩行者100が右歩行時には、位相差YZphaの値は、90度〜−90度の範囲に収まる傾向にある。同様に、歩行者100が左歩行時には、180度〜90度もしくは、−90度から−180度の範囲に分散する傾向にある。
したがって、図6のステップS618において、演算処理部320では、図15および図16のような位相差YZphaの分布の特徴と生かし、ステップS617によって算出された位相差YZphaが90度〜−90度の範囲に収まるか否かを判断する(ステップS618)。
ステップS618によって位相差YZphaが90度〜−90度の範囲に収まると判断された場合(ステップS618:Yes)、歩行者100の移動方向の判別結果として「右移動」を出力する(ステップS619)。一方、位相差YZphaが90度〜−90度の範囲に収まらないと判断された場合(ステップS618:No)、歩行者100の移動方向の判別結果として「左移動」を出力する(ステップS620)。
以上の処理によって、歩行者100の移動方向ならびに移動形態が判別されると、演算処理部320は、つぎに、移動方位の算出処理に移行する(ステップS621)。ここで述べる移動方位とは、移動した東西南北といった方位を表す。
演算処理部320では、移動方位を算出するために、ステップS607において算出した体の向きに対する移動方位と移動方向を利用する。移動方位は体の向きに対する移動方位と移動方向を加算することで算出することができる。北を0度とした角度で、北方向に前進した場合の移動方位は、0度(体の向きが北方位)+0度(前進)で0度(北方位への移動)となり、また、東方向に右移動した場合の移動方位は、90度(体の向きが東方位)+90度(右移動)で180度(南方位への移動)となる。
以上の処理によって、歩行者100の移動方位ならびに移動形態が判別されると、演算処理部320は、つぎに、移動距離の算出処理に移行する(ステップS622)。演算処理部320では、移動距離を算出するために、移動方向と移動形態ごとに用意した近似式Lを利用する。近似式はL=(クロススペクトルの最大値/動作状態率k×移動距離係数a+移動距離係数b)×動作状態率kと一般化することができる。したがって、歩行者100が前進中と判別された場合には、下記(16)式によって表される。
また、移動距離係数a,bは、あらかじめ用意された係数群から適宜選択される。移動方向算出装置110には、図3にて説明したように、記憶部330内に移動距離係数332を記憶した領域が用意されている。移動距離係数332は、演算処理部320から即座に読み出しが可能な形式な情報として記憶されている。具体的には、たとえば、下記の図17のように、データテーブルの形式で記憶されている。
図17は、移動距離係数の設定例を示すデータテーブルを示す説明図である。データテーブル1700のように設定された係数群の中から歩行者100の移動方向ならびに移動形態に応じた係数を選択して近似式Lに代入すればよい。たとえば、歩行者100が忍足で左移動している場合、近似式L=(YZmax/k×係数O+係数P)×kを利用して移動距離を算出する。
なお、データテーブル1700に例示した係数群は、あらかじめ歩行者100の移動方向と移動形態に応じて検出したクロススペクトルの最大値と歩幅の測定結果から求めることができる。
図18は、移動距離近似式の設定例を示すグラフである。図18のように、前進時の測定結果としてプロット「×」が与えられている場合、これらのプロット「×」に近似する線形を求める。そして、図18のグラフ内の線形を表す一次式の移動距離係数a,bをデータテーブル1700に設定すればよい。
以上説明したように、図6のステップS622において、演算処理部320は、単位周期ごとに最適な近似式を設定して移動距離を算出することにより、一連の移動方向算出処理を終了する。
図19は、算出結果の出力例を示すデータテーブルを示す説明図である。移動方向算出装置110は、図6のフローチャートに示した一連の処理を実行することによって各種算出結果が出力される。具体的には、データテーブル1900のように、単位周期ごとの移動方向、移動形態、移動距離(相対移動距離)および移動方位がそれぞれ対応付けられて出力される。
なお、移動方向算出装置110によって算出された各情報は、データテーブル1900の形式で表示部340に表示させることによって歩行者100自身に報知することができる。さらに、移動方向算出装置110は、データテーブル1900の各情報を、通信部350を介して、外部のセンタに送信することもできる。
図20は、センタへの情報提供例を示す説明図である。通信部350を介してデータテーブル1900の各情報を受信したセンタでは、表示部340(センタに接続されたディスプレイなど)によって歩行者100の移動内容を視覚的に分かり易いルート図2000として提供することもできる。
このように、移動方向算出装置110を歩行者100に装着させることによって、移動方向算出装置110の管理者は、逐次、歩行者100の歩行内容を特定することができるため、様々な用途に適用させることができる。たとえば、災害時や各種訓練時など特殊な空間においても、移動方向算出装置110を対象者に装着させることによって、各人の移動状況を正確に把握することができる。
また、歩行者100自身の視界が悪い場合には、センタによって作成されたルート図2000を移動方向算出装置110へ提供することによって、歩行者100自身の位置把握や、ルート確保を支援することができる。
以上説明したように、本実施の形態にかかる移動方向算出装置110(または移動方向算出装置110を実現する移動方向算出プログラム)によれば、Z軸方向の波形の振幅から歩行者100が移動中か否かを判断する。歩行者100が移動中であると判断された場合、歩行者100の前後動作と上下動作との相関性を表すXZクロススペクトルと、歩行者100の左右動作と上下動作との相関性を表すYZクロススペクトルをそれぞれ算出して、これらの算出値を比較する。そして、最も相関性が高い値に基づいて、歩行者100が前後左右のいずれの方向に移動しているかを特定することができる。したがって、移動方向算出装置110では、歩行者の動作が微少であっても、誤検出することなく正確な移動方向を算出することができる。
また、Z軸方向の加速度の波形の振幅が所定値以上となる時間と、所定値未満となる時間とを求める。そして、波形の振幅が所定値以上となる時間の割合から移動状態率kを算出する。したがって、移動方向算出装置110は、Z軸方向の波形の振幅から、単位周期において、歩行者100が移動中となる時間を詳細に把握することができる。
また、移動方向算出装置110では、XZクロススペクトルもしくはYZクロススペクトルの最大値がしきい値に満たない場合に、動作状態率kにかかわらず歩行者100が移動中ではないと判断する。したがって、移動方向算出装置110は、移動方向への移動と上下動作との連動性が高くならなければ動作状態率kの値にかかわらず、停止中と判断するため、誤検出を防ぐことができる。
また、XZクロススペクトルの最大値とXZクロススペクトルの最大値との比較結果を利用して歩行者100が前後方向に移動しているか、左右方向に移動しているかを判別する。したがって、移動方向算出装置110は、容易な比較処理のみで、歩行者100の移動方向を大別することができる。
また、クロススペクトルの最大値の比較によって歩行者100が前後方向に移動していると判別された場合、さらに、XZクロススペクトルの最大値を利用して、前後のいずれかに移動しているかを判別する、具体的には、XZクロススペクトルの最大値の実部と虚部とから算出される位相差が所定の範囲に収まるか否かに応じて、歩行者100が前方向と後方向のいずれに移動しているかを判別する。したがって、加速度センサ311からの検出値から、歩行者100の移動方向を詳細に特定することができる。
また、クロススペクトルの最大値の比較によって歩行者100が左右方向に移動していると判別された場合、さらに、YZクロススペクトルの最大値を利用して、左右のいずれかに移動しているかを判別する、具体的には、YZクロススペクトルの最大値の実部と虚部とから算出される位相差が所定の範囲に収まるか否かに応じて、歩行者100が右方向と左方向のいずれに移動しているかを判別する。したがって、移動方向算出装置110は、加速度センサ311からの検出値から、歩行者100の移動方向を詳細に特定することができる。
また、移動方向の判別結果と、クロススペクトルの最大値とを利用して、さらに、歩行者100の移動形態を判別することができる。具体的には、歩行者が前後方向に移動していると判別された場合には、XZクロススペクトルの最大値と、当該最大値の実部と虚部とから算出される位相差の値とに応じて、歩行、走行および忍足のいずれで移動したかを判別することができる。
一方、歩行者が左右方向に移動していると判別された場合には、YZクロススペクトルの最大値と、当該最大値の実部と虚部とから算出される位相差の値とに応じて、歩行、走行および忍足のいずれで移動したかを判別する。したがって、移動方向算出装置110は、センサ部310からあらたな検出値を取得することもなく、すでに算出したクロススペクトルに関する値と、移動方向の判別結果とによって、歩行者100の移動形態を特定することができる。
また、歩行者100の移動方向、移動形態から近似式を選択して、単位周期ごとの移動距離を算出する。近似式の係数は、移動方向、移動形態ごとに適した値を設定する。したがって、移動方向算出装置110は、歩行者100の移動方向や移動形態によって生じる移動距離の誤差を防ぎ、正確な移動距離を算出することができる。
また、特定された移動方向や移動形態ならびに移動距離を外部の機器へ送信することができる。したがって、移動方向算出装置110は、歩行者100の移動内容を移動方向算出装置110から離れた他者に把握させることもできる。
なお、本実施の形態で説明した移動方向算出処理は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。本移動方向算出プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本移動方向算出プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)歩行者の前後方向となる第一の方向と、左右方向となる第二の方向と、上下方向となる第三の方向との加速度を検出する加速度センサの検出値を取得する取得手段と、
前記取得手段によって取得された3方向の加速度を用いて、各方向間の加速度の相関を算出する算出手段と、
前記取得手段によって取得された前記第三の方向の加速度の波形の振幅に応じて任意の周期ごとに前記歩行者が移動中か否かを判断する判断手段と、
前記判断手段によって、前記歩行者が移動中であると判断された場合、前記算出手段によって算出された前記第一の方向と前記第三の方向との相関の前記任意の周期における最大値と、前記第二の方向と前記第三の方向との相関の前記任意の周期における最大値との比較結果に応じて、前記歩行者の移動方向を判別する移動方向判別手段と、
前記移動方向判別手段による判別結果を出力する出力手段と、
を備えることを特徴とする移動方向算出装置。
(付記2)前記判断手段は、
前記第三の方向の加速度波形の振幅の形状にかかわらず、前記算出手段によって算出された前記第一の方向と前記第三の方向との相関の最大値もしくは前記第二の方向と前記第三の方向との相関の最大値がしきい値に満たない場合に、前記歩行者が移動中ではないと判断することを特徴とする付記1に記載の移動方向算出装置。
(付記3)前記判断手段は、
前記加速度の波形の振幅が所定値以上となる時間と、前記所定値未満となる時間とを求め、前記任意の周期において、前記振幅が所定値以上となる時間の割合に応じて、前記歩行者が移動中か否かを判断する付記1または2に記載の移動方向算出装置。
(付記4)前記移動方向判別手段は、
前記任意の周期における前記第一の方向と前記第三の方向との相関の最大値と、前記第二の方向と前記第三の方向との相関の最大値を比較して、該第一の方向と該第三の方向との相関の最大値が大きかった場合には前記歩行者は前後方向に移動していると判別し、該第二の方向と該第三の方向との相関の最大値が大きかった場合には前記歩行者は左右方向に移動していると判別することを特徴とする付記1〜3のいずれか一つに記載の移動方向算出装置。
(付記5)前記移動方向判別手段は、
前記歩行者が前後方向に移動していると判別された場合、さらに、前記第一の方向と前記第三の方向との相関の最大値の実部と虚部とから算出される位相差が所定の範囲に収まるか否かに応じて、前記歩行者が前方向と後方向のいずれに移動しているかを判別することを特徴とする付記1〜4のいずれか一つに記載の移動方向算出装置。
(付記6)前記移動方向判別手段は、
前記歩行者が左右方向に移動していると判別された場合、さらに、前記第二の方向と前記第三の方向との相関の最大値の実部と虚部とから算出される位相差が所定の範囲に収まるか否かに応じて、前記歩行者が右方向と左方向とのいずれに移動しているかを判別することを特徴とする付記1〜4のいずれか一つに記載の移動方向算出装置。
(付記7)前記移動方向判別手段によって、前記歩行者が前後方向に移動していると判別された場合に、前記第一の方向と前記第三の方向との相関の最大値と、当該最大値の実部と虚部とから算出される位相差の値とに応じて、歩行、走行および忍足のいずれで移動したかを判別し、前記歩行者が左右方向に移動していると判別された場合に、前記第二の方向と前記第三の方向との相関の最大値と、当該最大値の実部と虚部とから算出される位相差の値とに応じて、歩行、走行および忍足のいずれで移動したかを判別する移動形態判別手段を備え、
前記出力手段は、前記移動形態判別手段による判別結果を出力することを特徴とする付記1〜6のいずれか一つに記載の移動方向算出装置。
(付記8)前記歩行者の移動方向ならびに移動形態ごとに移動時間に応じた移動距離を表す近似式を用意し、前記任意の周期ごとに前記移動方向判別手段と前記移動形態判別手段によって判別された移動方向ならびに移動形態に対応した近似式を選択して前記歩行者の移動距離を算出する移動距離算出手段を備え、
前記出力手段は、前記移動距離算出手段による算出結果を出力することを特徴とする付記7に記載の移動方向算出装置。
(付記9)前記歩行者が装着した磁気センサまたはジャイロセンサの検出値と前記移動方向判別手段による判別結果とを用いて前記歩行者の移動方位を算出する移動方位算出手段を備えることを特徴とする付記1〜8のいずれか一つに記載の移動方向算出装置。
(付記10)前記出力手段によって出力された情報を外部の機器へ送信する送信手段を備えることを特徴とする付記1〜9のいずれか一つに記載の移動方向算出装置。
(付記11)コンピュータを、
歩行者の前後方向となる第一の方向と、左右方向となる第二の方向と、上下方向となる第三の方向との3軸方向の加速度を検出する加速度センサの検出値を取得する取得手段、
前記取得手段によって取得された3方向の加速度を用いて、各方向間の加速度の相関を算出する算出手段、
前記取得手段によって取得された前記第三の方向の加速度の波形の振幅に応じて任意の周期ごとに前記歩行者が移動中か否かを判断する判断手段、
前記判断手段によって、前記歩行者が移動中であると判断された場合、前記算出手段によって算出された前記第一の方向と前記第三の方向との相関の前記任意の周期における最大値と、前記第二の方向と前記第三の方向との相関の前記任意の周期における最大値との比較結果に応じて、前記歩行者の移動方向を判別する移動方向判別手段、
前記移動方向判別手段による判別結果を出力する出力手段、
として機能させることを特徴とする移動方向算出プログラム。