(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0032】
以下、本発明の好適な実施の形態について、添付の図面を参照しつつ、詳細に説明する。ただし、以下の説明において特に断らない限り、方向や向きに関する記述は、当該説明の便宜上、図面に対応するものであり、例えば実施品、製品または権利範囲等を限定するものではない。
【0033】
<1. 第1の実施の形態>
図1は、第1の実施の形態における携帯端末装置1を示す図である。携帯端末装置1は、操作部12および表示部13を備えており、ユーザによって携帯される装置として構成されている。
【0034】
以下の説明において、歩行者であるユーザの歩行動作は、当該ユーザが歩いているのか、走っているのかを区別しないものとする。また、歩行動作における「1歩」とは、人が片足を上げ始めてから、その足を前に出し、その足が地面に着き、次の足を上げ始めるまでの動作とする。また、「1複歩」とは、左右1歩ずつの動作を含む動作とする。さらに、「1複歩時間」とは、1複歩にかかる時間とする。
【0035】
操作部12は、携帯端末装置1に対してユーザが指示を与えるために操作されるハードウェアである。操作部12としては、例えば、各種ボタン類やキー、回転セレクタ、タッチパネルなどが該当する。
【0036】
表示部13は、ユーザに対して各種情報を表示することにより、情報を提供する機能を有するハードウェアである。表示部13としては、例えば、ランプやLED、液晶パネル、液晶ディスプレイ、有機ELディスプレイなどが該当する。
【0037】
図2は、第1の実施の形態における携帯端末装置1のブロック図である。携帯端末装置1は、CPU10、記憶装置11、ジャイロセンサ14、加速度センサ15およびカメラ16を備えている。
【0038】
CPU10は、記憶装置11に格納されているプログラム110を読み取りつつ実行し、各種データの演算や制御信号の生成等を行う。これにより、CPU10は、携帯端末装置1が備える各構成を制御するとともに、各種データを演算し作成する機能を有している。すなわち、携帯端末装置1は、一般的なコンピュータとして構成されている。
【0039】
記憶装置11は、携帯端末装置1において各種データを記憶する機能を提供する。言い換えれば、記憶装置11が携帯端末装置1において電子的に固定された情報を保存する。特に、本実施の形態における記憶装置11は、プログラム110を記憶するために使用される。
【0040】
記憶装置11としては、CPU10の一時的なワーキングエリアとして使用されるRAMやバッファ、読み取り専用のROM、不揮発性のメモリ(例えばNANDメモリなど)、比較的大容量のデータを記憶するハードディスク、専用の読み取り装置に装着された可搬性の記憶媒体(PCカード、SDカード、USBメモリなど)等が該当する。
図2においては、あたかも記憶装置11が1つの構造物であるかのように図示している。しかし、通常、記憶装置11は、上記例示した各種装置(あるいは媒体)のうち、必要に応じて採用される複数種類の装置から構成されるものである。すなわち、本実施の形態において、記憶装置11は、データを記憶する機能を有する装置群の総称である。
【0041】
また、現実のCPU10は高速にアクセス可能なRAMを内部に備えた電子回路である。しかし、このようなCPU10が備える記憶装置も、説明の都合上、記憶装置11に含めて説明する。すなわち、本実施の形態においては、一時的にCPU10自体が記憶するデータも、記憶装置11が記憶するとして説明する。
【0042】
ジャイロセンサ14は、携帯端末装置1の移動における角速度を測定して角速度情報140(
図3参照)を取得する。以下の説明では、ジャイロセンサ14が角速度情報140を取得する周期(サンプリング周期)を、「Ts」と称する。
【0043】
加速度センサ15は、携帯端末装置1の移動における加速度を測定して加速度情報150(
図3参照)を取得する。
【0044】
詳細は図示しないが、カメラ16は、レンズやミラーなどの光学素子と、CCDなどの光電変換素子とを備えており、一般的なデジタルカメラとして構成されている。カメラ16は、少なくとも携帯端末装置1が移動している期間における周囲の被写体を撮像して画像情報160(
図3参照)を取得する。
【0045】
カメラ16は、CPU10からの制御信号に応じて、所定の撮像タイミングで撮像するように構成されている。第1の実施の形態におけるカメラ16は、撮像周期「Tc」で撮像を行い、新たな画像情報160を取得するものとする。
【0046】
図3は、第1の実施の形態における携帯端末装置1が備える機能ブロックをデータの流れとともに示す図である。図に示す歩行周期演算部100、ベクトル演算部101、相関判定部102、直進歩行判定部103および補正部104は、CPU10がプログラム110に従って動作することにより実現される機能ブロックである。
【0047】
歩行周期演算部100は、角速度情報140および加速度情報150を参照して、ユーザ(歩行者)の歩行動作における歩行周期を決定する。歩行周期演算部100は、決定した歩行周期をベクトル演算部101および補正部104に伝達する。また、詳細は後述するが、歩行周期演算部100は、ユーザの進行方向を相関判定部102に伝達する機能も有している。
【0048】
ベクトル演算部101は、画像情報160に基づいて、画像情報160における被写体の動きベクトルを算出し、動きベクトル情報111を作成する機能を有している。ベクトル演算部101が動きベクトルを演算する間隔を、以下、演算間隔「Tv」と称する。動きベクトルは、演算間隔をおいて撮像された2枚の静止画像(画像情報160)を比較して演算される。したがって、演算間隔は、撮像間隔の整数倍となり、Tv=n×Tc(nは自然数。)である。
【0049】
なお、ここにいう「画像情報160における被写体の動きベクトル」とは、厳密に言えば、ユーザの動作に従って携帯端末装置1が動くことによって生じる見かけ上の被写体の動きによる動きベクトルと、被写体自体の動きによって生じる動きベクトルとの合成である。しかし、以下の説明では、被写体は静止しているものとして扱い、被写体自体の動きによって生じる動きベクトルは無視するものとする。また、本実施の形態におけるベクトル演算部101は、歩行周期演算部100から伝達された歩行周期を、動きベクトル情報111に含めるものとする。
【0050】
相関判定部102は、ジャイロセンサ14により取得された角速度情報140と、加速度センサ15により取得された加速度情報150とに応じて、ユーザの歩行動作による進行方向とカメラ16の撮像方向との相対関係を判定する。ただし、詳細は後述するが、本実施の形態における相関判定部102は、角速度情報140と加速度情報150とに基づいて歩行周期演算部100が歩行周期を演算する過程において求まる進行方向を利用する。
【0051】
相関判定部102による判定結果は、相関判定情報112として記憶される。
【0052】
直進歩行判定部103は、ベクトル演算部101により算出された動きベクトル情報111と相関判定部102により判定された相関関係(相関判定情報112)とに応じて、ユーザが歩行動作における直進状態か否かを判定する。
【0053】
補正部104は、直進歩行判定部103によりユーザが歩行状態における直進状態であると判定されたことに応じて、ジャイロセンサ14のバイアス値(bv)を補正する機能を有している。また、すでに取得されている角速度情報140を過去に遡って補正する機能も有している。
【0054】
以上が、第1の実施の形態における携帯端末装置1の構成および機能の説明である。次に、携帯端末装置1において、ジャイロセンサ14による測定値である角速度情報140を補正する補正方法について説明する。
【0055】
図4は、第1の実施の形態におけるジャイロセンサ14に対する補正処理を示す流れ図である。
【0056】
なお、携帯端末装置1では、
図4に示す処理と並行して、あるいは、一部の処理を共有して、他の処理が行われていてもよい。他の処理とは、例えば、ユーザの位置を特定する測位処理や測位処理の結果を用いた行き先案内処理、経路記録処理などである。
【0057】
また、
図4に示す処理が開始されるまでに、携帯端末装置1では、所定の初期設定が実行されているものとする。初期設定には、ジャイロセンサ14および加速度センサ15による測定タイミングを計測するための測定タイマにTsをセットして起動する処理と、カメラ16による撮像タイミングを計測するための撮像タイマにTcをセットして起動する処理とが含まれるが、演算タイマは起動されない。動きベクトルを演算する処理は、少なくとも1枚の画像情報160が取得され、後述する代表サブブロックが決定されてからでなければ実行できないからである。
【0058】
また、初期設定には、ジャイロセンサ14のバイアス値(bv)の初期値を設定する処理と、携帯端末装置1の姿勢(処理開始時の姿勢)を決定する処理とが含まれる。携帯端末装置1の初期姿勢を決定する手法としては、ユーザが携帯端末装置1の操作部12を操作して姿勢を入力する方法や、図示しない磁気センサの出力により姿勢を決定する方法などが想定される。
【0059】
初期設定が終了すると、携帯端末装置1は、測定タイマと、撮像タイマと、演算タイマとを監視する状態となる(ステップS1,S5,S11)。この状態を、以下の説明では、「監視状態」と称する。ただし、監視状態において、携帯端末装置1は、ステップS1,S5,S11以外の他の処理を実行していてもよい。
【0060】
監視状態において、測定タイマが0となり、測定タイミングが到来すると、CPU10は、ステップS1においてYesと判定し、測定タイマをTsにリセットしつつ(ステップS2)、ジャイロセンサ14および加速度センサ15の値をそれぞれ読み出す。これによって、携帯端末装置1の動きに関する角速度および加速度の測定が実行される(ステップS3)。
【0061】
なお、ステップS3において読み出されるジャイロセンサ14の値は、未だバイアス値bvの補正(後述)がされていなければ、バイアス値bvの初期値に基づいて取得される。一方で、バイアス値bvの補正がされた後は、補正後のバイアス値bvの値により補正された値として取得される。
【0062】
次に、CPU10は、読み出したジャイロセンサ14の値および加速度センサ15の値とに基づいて、角速度情報140および加速度情報150を作成し、記憶装置11に記録する(ステップS4)。なお、本実施の形態では、角速度情報140および加速度情報150は、過去の記録に上書きされるのではなく、履歴として取得順に記録されていくものとする。
【0063】
このように、携帯端末装置1は、測定タイマの値が0となるごとに、ステップS1においてYesと判定し、ステップS2ないしS4の処理を実行する。したがって、携帯端末装置1では、測定周期Tsごとに角速度および加速度が測定される。なお、ステップS4を実行すると、携帯端末装置1は、再度、監視状態に戻る。
【0064】
監視状態において、撮像タイマが0となり、撮像タイミングが到来すると、CPU10は、ステップS5においてYesと判定し、撮像タイマをTcにリセットしつつ(ステップS6)、周囲の被写体を撮像するようにカメラ16を制御する。これにより、カメラ16が撮像を行い(ステップS7)、画像情報160が作成され、記憶装置11に記録される。なお、ステップS7の処理においては、画像情報160の削除または上書きはされないものとする。すなわち、画像情報160は撮像順に記録されていくものとする。
【0065】
撮像が実行され、新たな画像情報160が記録されると、CPU10は、演算タイミングを計測するための演算タイマが起動されているか否かを判定する(ステップS8)。演算タイマが起動されていない場合は、CPU10は演算タイマにTvをセットして起動し(ステップS9)、代表サブブロック決定処理を実行する(ステップS10)。一方、すでに演算タイマが起動されている場合は、ステップS9,S10をスキップして、監視状態に戻る。
【0066】
図5および
図6は、第1の実施の形態における代表サブブロック決定処理を示す流れ図である。
【0067】
代表サブブロック決定処理が開始されると、まず、ベクトル演算部101は、最新の画像情報160を取得して、複数のブロックに分割する(ステップS21)。
【0068】
図7は、ベクトル演算部101による画像情報160の分割の様子を示す図である。
図7では、両側に商品陳列用の棚が配置された通路をユーザが進んでいるときに撮像される周囲の被写体(画像情報160)を例に示している。
【0069】
ステップS21において、ベクトル演算部101は、画像情報160をそれぞれが第1のサイズとなる複数のブロックに分割する。各ブロックは、画像情報160の部分画像に相当する。
図7に示す例では、画像情報160は、ブロック161,162,163,164の4つのブロックに分割されている。
【0070】
次に、ベクトル演算部101は、ブロックカウンタiの値を「1」にリセットする(ステップS22)。ブロックカウンタiとは、処理中のブロックを識別するためのカウンタである。
図7に示すように、本実施の形態におけるベクトル演算部101は、画像情報160を4つのブロックに分割するので、ブロックカウンタiの値は、「1」ないし「4」の整数である。
【0071】
次に、ベクトル演算部101は、ブロックカウンタiに示されるi番目のブロックを、さらにサブブロックに分割する(ステップS23)。
【0072】
図8は、
図7に示すブロック161をベクトル演算部101が分割する様子を示す図である。なお、
図8では、
図7に示すブロック161を拡大して図示している。
【0073】
ステップS23において、ベクトル演算部101は、i番目のブロックを第1のサイズよりも小さい第2のサイズとなる複数のサブブロックに分割する。各サブブロックは、画像情報160の部分画像に相当する。
図8に示す例では、ブロック161は54個のサブブロックに分割されている。
【0074】
ステップS23を実行すると、ベクトル演算部101は、最大エッジ量の値を「0」にリセットするとともに、サブブロックカウンタjの値を「1」にリセットする(ステップS24)。最大エッジ量とは、処理中のブロックに含まれるサブブロックの最大エッジ量を一時的に格納しておく変数である。また、サブブロックカウンタjとは、処理中のサブブロックを識別するためのカウンタである。
図8に示すように、ベクトル演算部101は、1個のブロックを54個のサブブロックに分割するので、サブブロックカウンタjの値は、「1」ないし「54」の整数である。
【0075】
次に、ベクトル演算部101は、ステップS23において分割した複数のサブブロックのうち、サブブロックカウンタjに示されるj番目のサブブロックのエッジ量を演算し(ステップS31)、求めたj番目のサブブロックのエッジ量が最大エッジ量より大きいか否かを判定する(ステップS32)。
【0076】
ステップS32においてYesの場合、ベクトル演算部101は、j番目のエッジ量の値を新たに最大エッジ量とし(ステップS33)、i番目のブロックにおける代表サブブロックを識別するための識別子SBiに、「j」をセットする(ステップS34)。すなわち、1番目からj−1番目までのサブブロックのエッジ量よりも、j番目のサブブロックのエッジ量の方が大きい場合には、j番目のサブブロックのエッジ量が最大エッジ量として格納され、識別子SBiに「j」が格納される。
【0077】
一方、ステップS32においてNoの場合、ベクトル演算部101は、j番目のサブブロックを代表サブブロックに決定することはないので、ステップS33,S34の処理をスキップする。
【0078】
次に、ベクトル演算部101は、i番目のブロックについて全てのサブブロックに関するエッジ量の演算と評価が終了したか否かを判定する(ステップS35)。本実施の形態において、i番目のブロックにおけるサブブロックの数は54個であるから、例えば、ステップS35においてj≧54か否かを判定すればよい。
【0079】
ステップS35においてNoの場合(未だ全てのサブブロックについて終了していない場合)、ベクトル演算部101は、jの値をインクリメントし(ステップS36)、ステップS31からの処理を繰り返す。すなわち、i番目のブロックの次のサブブロックについての処理を継続する。
【0080】
一方、ステップS35においてYesの場合(全てのサブブロックについて終了している場合)、ベクトル演算部101は、最大エッジ量の値を「0」にリセットし(ステップS37)、i番目のブロックについての処理を終了する。すなわち、i番目のブロックの代表サブブロックを識別子SBiによって示されるサブブロックに決定する。
【0081】
次に、ベクトル演算部101は、全てのブロックについて代表サブブロックの決定が終了したか否かを判定する(ステップS38)。本実施の形態において、ブロックの数は4個であるから、例えば、ステップS38においてi≧4か否かを判定すればよい。
【0082】
ステップS38においてNoの場合(未だ全てのブロックについて終了していない場合)、ベクトル演算部101は、iの値をインクリメントし(ステップS39)、ステップS23からの処理を繰り返す。すなわち、次のブロックについての処理を継続する。
【0083】
ステップS38においてYesの場合(全てのブロックについて終了している場合)、ベクトル演算部101は、代表サブブロック決定処理を終了し、
図4の処理に戻る。
【0084】
このようにして、ベクトル演算部101は、複数のサブブロックごとにエッジ量を検出して、複数のブロックのそれぞれにおいてエッジ量が最大となるサブブロックを各ブロックの代表サブブロックとして決定する。
図8に示す例では、陳列棚の角部が含まれるサブブロック161aがブロック161の中の代表サブブロックとして決定されている。なお、
図8には図示していないが、ブロック162,163,164の中からも、エッジ量が最大のサブブロックが、それぞれ代表サブブロックとして決定される。
【0085】
携帯端末装置1は、代表サブブロックの動きベクトルに基づいて、携帯端末装置1の動きを検出しようとするものである。そして、動きベクトルを算出するには、画像におけるエッジ量が多い部分(サブブロック)を抽出して算出することが好ましい。
【0086】
第1の実施の形態におけるベクトル演算部101は、先述のように、各ブロックにおける代表サブブロックを、当該ブロック内においてエッジ量が最大となるサブブロックに決定する。したがって、動きベクトルを精度よく算出することができる。
【0087】
一方で、算出された動きベクトルによって携帯端末装置1の動き(ユーザの動き)を推定するためには、算出される動きベクトルの画像情報160における位置が分散している方が好ましい。すなわち、代表サブブロックが画像情報160内の様々な位置から選択されていることが好ましい。
【0088】
第1の実施の形態におけるベクトル演算部101は、先述のように、画像情報160における1枚の静止画像を、一旦、4つのブロックに分割し、各ブロックの中からそれぞれ代表サブブロックを決定することにより、動きベクトルの算出対象となるサブブロックが、画像情報160内において局在することを抑制することができる。したがって、後述する処理において、ユーザの進行方向が直進状態か否かを正確に判定することができる。
【0089】
図4に戻って、監視状態において、演算タイマが0となり、演算タイミングが到来すると、CPU10は、ステップS11においてYesと判定し、演算タイマをTvにリセットしつつ(ステップS12)、直進歩行検出処理を実行する(ステップS13)。
【0090】
図9は、第1の実施の形態における直進歩行検出処理を示す流れ図である。
【0091】
直進歩行検出処理が開始されると、直進歩行判定部103は、ユーザの歩行動作が直進歩行か否かを示す直進フラグをOFFにリセットする(ステップS41)。
【0092】
次に、ベクトル演算部101が、最新の画像情報160における各代表サブブロックの位置を特定して、代表サブブロックを決定してから(代表サブブロックを決定した画像情報160が撮像されてから)当該最新の画像情報160が撮像されるまでの期間のそれぞれの代表サブブロックの動きベクトルを求める(ステップS42)。
【0093】
なお、代表サブブロックを決定してから最新の画像情報160が撮像されるまでの期間は、演算タイマで管理されており、演算周期Tvである。すなわち、ステップS42では、Tvの間の動きベクトルが算出される。ただし、演算周期Tvに対して、撮像周期Tcが離散的であると見なせる場合、当該期間は、n×Tc(ただしn×Tc≦Tv<(n+1)×Tc)である。
【0094】
次に、歩行周期演算部100が、ユーザの歩行動作における歩行周期を求める。
【0095】
図10は、ジャイロセンサ14、加速度センサ15およびカメラ16の座標系を示す図である。携帯端末装置1において、ジャイロセンサ14、加速度センサ15およびカメラ16はいずれも固定されている。したがって、携帯端末装置1の姿勢が変化したとしても、ジャイロセンサ14、加速度センサ15およびカメラ16の相対的な位置関係は変化しない。
【0096】
図10に示すように、第1の実施の形態における携帯端末装置1において、カメラ16の撮像方向をX軸とする。3軸の加速度センサ15の軸のうちの1つをX軸に一致させるように加速度センサ15を配置するとともに、他の2軸をそれぞれY軸とZ軸とする。これにより、加速度センサ15の出力は、X軸方向の加速度αxと、Y軸方向の加速度αyと、Z軸方向の加速度αzとなる。
【0097】
次に、3軸回りの角速度を測定するジャイロセンサ14の3軸をそれぞれ、X軸、Y軸、Z軸に一致させるようにジャイロセンサ14を配置する。これにより、ジャイロセンサ14の出力は、X軸回りの角速度ωxと、Y軸回りの角速度ωyと、Z軸回りの角速度ωzとなる。
【0098】
なお、このように配置することができなくても、ジャイロセンサ14、加速度センサ15およびカメラ16の相対的な位置関係(既知)は変化しないので、ジャイロセンサ14および加速度センサ15の出力値を既知の位置関係に基づいてX軸、Y軸およびZ軸のそれぞれに対応した値に変換することができる。
【0099】
図11は、ユーザの歩行動作における座標系を示す図である。
図11に示すように、重力と逆向き方向をV軸、ユーザの進行方向をW軸とする。ここで、ユーザの進行方向は水平面内に定義し、V軸とW軸とは互いに垂直であるものとする。さらに、W軸およびV軸と垂直となる軸をS軸とする。
【0100】
まず、歩行周期演算部100は、従来のカルマンフィルタを用いて加速度情報150に基づいて重力方向ベクトルを推定する。このようにして推定された重力方向ベクトルの逆向き方向として、V軸が決定される。
【0101】
V軸が決まると、歩行周期演算部100は、V軸にZ軸を合わせるように回転させ、このときの回転角θ1を取得する。次に、V軸にZ軸を合わせた状態(Z軸をθ1だけ回転させた状態)で、当該Z軸回りに360°回転させつつ、αyおよびαzを演算する。一般に、人の歩行動作においては、W軸方向(進行方向)の加速度が大きく、S軸方向(進行方向に対する左右方向)の加速度が小さいという特性がある。したがって、当該Z軸を360°回転させた中で、αzが最大でαyが最小となる回転角θ2を決定し、このときのX軸およびY軸をそれぞれW軸およびS軸と決定する。
【0102】
このようにして求めた回転角θ1,θ2を用いることにより、歩行周期演算部100は、XYZ座標系の出力値を、WSV座標系に変換することができる。すなわち、加速度αx,αy,αzから、W軸方向の加速度αw、S軸方向の加速度αsおよびV軸方向の加速度αvを求めることができる。同様に、角速度ωx,ωy,ωzから、W軸回りの角速度ωw、S軸回りの角速度ωsおよびV軸回りの角速度ωvを求めることができる。
【0103】
図12は、人の歩行動作における加速度αv,αwおよび角速度ωvとを例示する図である。
【0104】
図12から明らかなように、加速度αv,αwは1歩周期であるが、角速度ωvは1複歩周期である。したがって、歩行動作の周期としては、1複歩周期を採用することが適切といえる。
【0105】
また、角速度ωvは比較的複雑に変化するため、歩行周期を決定するためには、加速度αvまたは加速度αwを用いた方がよいこともわかる。例えば、加速度αwが極小値をとってから、さらに極小値を2回とるまでの期間が1複歩時間であり、歩行周期である。
【0106】
このように、ステップS43において、歩行周期演算部100は、角速度情報140および加速度情報150に基づいて、歩行周期を決定する。なお、極小値の検出は、例えば、ゼロ交差法を採用することができる。
【0107】
歩行周期が求まると、歩行周期演算部100は、求めた歩行周期をベクトル演算部101に伝達する。そして、ベクトル演算部101が、ステップS42で求めた動きベクトルを、歩行周期単位に平均をとり(ステップS44)、被写体の動きベクトルとする。このようにして、ベクトル演算部101が、被写体の動きベクトルを求めることにより、進行方向への動き以外の動きによる影響を抑制することができる。
【0108】
次に、相関判定部102がユーザの進行方向を求める(ステップS45)。本実施の形態において、進行方向は、ステップS43が実行された時点で、歩行周期演算部100によりW軸方向として決定されている。したがって、本実施の形態における相関判定部102は、ステップS45において、改めて角速度情報140および加速度情報150から進行方向を求めることはせず、歩行周期演算部100から伝達されたW軸方向を用いる。
【0109】
ステップS45が実行されると、相関判定部102は、X軸(カメラ16の向き)とW軸(進行方向)との関係から、カメラ16が進行方向に対して正対しているか否かを判定し(ステップS46)、判定結果を相関判定情報112として記憶装置11に格納する。相関判定情報112は、直進歩行判定部103によって参照される。
【0110】
ステップS46においてYesと判定された場合、直進歩行判定部103は、ステップS44においてベクトル演算部101によって求められた被写体の動きベクトルが、画像情報160の中央付近から放射状になっているか否かを判定する(ステップS47)。そして、放射状になっている場合(ステップS47においてYes。)、ユーザの歩行動作が直進状態であると判定し、直進フラグをONにセット(ステップS49)してから直進歩行検出処理を終了する。放射状になっていない場合(ステップS47においてNo。)、ユーザの歩行動作は直進状態でないと判定し、直進フラグをOFFのまま維持して直進歩行検出処理を終了する。
【0111】
一方、ステップS46においてNoと判定された場合、直進歩行判定部103は、ステップS44においてベクトル演算部101によって求められた被写体の動きベクトルが、進行方向と逆向きになっており、かつ、歩行動作に変化がない期間において大きさがほぼ一定であるか否かを判定する(ステップS48)。そして、ステップS48においてYesの場合、ユーザの歩行動作が直進状態であると判定し、直進フラグをONにセット(ステップS49)してから直進歩行検出処理を終了する。ステップS48においてNoの場合、ユーザの歩行動作は直進状態でないと判定し、直進フラグをOFFのまま維持して直進歩行検出処理を終了する。
【0112】
これにより、直進歩行検出処理が終了するときには、ユーザの歩行動作が直進状態であるか否かが検出されて、直進フラグの状態として格納される。
【0113】
図4に戻って、直進歩行検出処理が終了すると、直進歩行判定部103は、直進フラグの状態を補正部104に伝達する。そして、これにより補正部104が、ユーザの歩行状態が直進状態か否かを判定する(ステップS14)。
【0114】
直進状態の場合(ステップS14においてYes。)、補正部104は、ジャイロセンサ14のバイアス値を補正する(ステップS15)。
【0115】
ステップS15において、補正部104がジャイロセンサ14のバイアス値を補正する原理を説明する。なお、歩行者であるユーザを測位する場合において、ユーザのW軸回りおよびS軸回りの角速度ωw,ωsを考慮する必要性は乏しい。したがって、ここでは、V軸回りの角速度ωv(進行方向に影響する。)を補正する例について説明する。
【0116】
図12に示したように、進行方向を決定する基となる角速度ωvは、1複歩周期である。したがって、補正部104は、まず、1複歩あたりの進行方向の変化量(ΔW)を求める。ΔWは、1複歩時間(すなわち歩行周期)のωvの積分値として、ΔW=Σ(ωv−bv)で求めることができる。
【0117】
次に、補正部104は、測定周期Tsあたりのωvの平均値ωv(ave)を、ωv(ave)=ΔW/(歩行周期/Ts)により求める。そして、さらに、bv+ωv(ave)を新たなバイアス値bvとしてバイアス値bvを更新し補正する。
【0118】
このようにして、ユーザの歩行動作が直進状態であった場合には(ステップS14においてYes。)、ステップS15が実行されて、ジャイロセンサ14のバイアス値bvが補正部104により補正される。したがって、以後、ジャイロセンサ14から出力される角速度情報140が補正される。
【0119】
なお、測位処理や経路記録処理を実行するために進行方向を記録している場合には、直進歩行判定部103によってユーザの歩行動作が直進状態であると判定されている間は、角速度情報140や加速度情報150を参照せずに、進行方向の変化量を「0」として記録することが好ましい。
【0120】
一方、ステップS14においてNoの場合(ユーザの歩行動作が直進状態でない場合)、補正部104は、ステップS15をスキップし、ジャイロセンサ14のバイアス値bvの補正は行わない。したがって、測位処理や経路記録処理を実行するために進行方向を記録している場合には、角速度情報140や加速度情報150に基づいて進行方向を記録することになる。ただし、ステップS15と同様の演算により、ΔWを求め、これを加算することにより進行方向を演算してもよい。
【0121】
ステップS14においてNoと判定されるか、あるいは、ステップS15が実行されると、ベクトル演算部101は、新たな代表サブブロックを決定するために、代表サブブロック決定処理を実行する(ステップS16)。なお、ステップS16における代表サブブロック決定処理は、ステップS10と同様に実行可能であるため、説明は省略する。
【0122】
ステップS16を実行すると、携帯端末装置1は、再び、監視状態に戻る。
【0123】
以上のように、第1の実施の形態における携帯端末装置1は、携帯端末装置1の移動における角速度を測定して角速度情報140を取得するジャイロセンサ14と、携帯端末装置1の移動における加速度を測定して加速度情報150を取得する加速度センサ15と、携帯端末装置1が移動している期間における周囲の被写体を撮像して画像情報160を取得するカメラ16と、画像情報160に基づいて被写体の動きベクトル情報111を算出するベクトル演算部101と、ジャイロセンサ14により取得された角速度情報140と加速度センサ15により取得された加速度情報150とに応じて、ユーザの歩行動作による進行方向とカメラの撮像方向との相対関係を判定する相関判定部102と、ベクトル演算部101により算出された被写体の動きベクトル情報111と相関判定部102により判定された相関関係とに応じて、ユーザが歩行動作における直進状態か否かを判定する直進歩行判定部103と、直進歩行判定部103によりユーザが歩行状態における直進状態であると判定されたことに応じて、ジャイロセンサ14により取得される角速度情報140を補正する補正部104とを備える。これにより、ユーザが歩行動作における直進状態であるか否かを精度よく判定することができる。したがって、ジャイロセンサ14の補正を精度よく実現することができる。
【0124】
また、ベクトル演算部101は、画像情報160をそれぞれが第1のサイズとなる複数のブロックに分割し、複数のブロックのそれぞれを第1のサイズよりも小さい第2のサイズとなる複数のサブブロックに分割し、複数のサブブロックごとにエッジ量を検出して、複数のブロックのそれぞれにおいてエッジ量が最大となるサブブロックを各ブロックの代表サブブロックとして決定し、決定した代表サブブロックの動きベクトルを算出することにより、被写体の動きベクトル情報111を算出する。これにより、動きベクトル情報111の算出対象となるサブブロックが、画像情報内において局在することを抑制することができる。したがって、歩行者の進行方向が直進状態か否かを正確に判定できる。
【0125】
また、ベクトル演算部101は、代表サブブロックの動きベクトルを、ユーザの歩行周期単位に平均することによって被写体の動きベクトル情報111を求める。したがって、進行方向への動き以外の動きによる影響を抑制できる。
【0126】
また、ユーザの歩行動作において、当該ユーザが左右の足をそれぞれ1歩ずつ進める時間(1複歩時間)に応じて歩行周期が決定されていることにより、V軸回りの角速度ωvの周期単位で処理することができ、精度が向上する。
【0127】
相関判定部102によって判定する相関関係には、ユーザの歩行動作による進行方向に対してカメラ16の撮像方向が正対する関係が含まれることにより、直進状態を容易に判定できる。
【0128】
ユーザの歩行動作による進行方向に対してカメラ16の撮像方向が正対している場合において、直進歩行判定部103は、ベクトル演算部101により求められた被写体の動きベクトルが、画像情報160において放射状となっている場合に、当該ユーザの歩行動作が直進状態であると判定する。これにより、効率よく、直進状態を判定することができる。
【0129】
なお、各ブロックについて代表サブブロックを決定したときに、画像情報160の部分画像である各代表サブブロックのみを記録し、当該画像情報160を削除するか、あるいは、新たな画像情報160が取得されたときに上書きしてもよい。これにより、記憶しておくべき情報の容量を抑制することができる。
【0130】
また、画像情報160において周辺部に位置するサブブロックが代表サブブロックに決定されると、当該代表サブブロックに相当する被写体がユーザの動きによって撮像範囲から外れてしまうことも考えられる。その場合は、動きベクトルを求めることができなくなるおそれがある。したがって、代表サブブロックを決定する場合には、画像情報160における周辺部に位置するサブブロックを候補から除外してもよい。あるいは、さらに、予測されるユーザの動き(方向や速度)に応じてどの位置のサブブロックを候補から除外するかを決定してもよい。
【0131】
<2. 第2の実施の形態>
第1の実施の形態における携帯端末装置1では、代表サブブロックの動きベクトルを、歩行周期で平均することにより、進行方向の動き以外の動きによる影響を抑制すると説明した。しかし、進行方向の動き以外の動きによる影響を抑制する手法はこれに限定されるものではない。
【0132】
図13は、第2の実施の形態における携帯端末装置1aが備える機能ブロックをデータの流れとともに示す図である。なお、第2の実施の形態における携帯端末装置1aにおいて、第1の実施の形態における携帯端末装置1と同様の構成については同符号を付し、適宜説明を省略する。
【0133】
図13に示すように、携帯端末装置1aは、歩行周期演算部100の代わりに歩行周期演算部100aを備えている点と、ベクトル演算部101の代わりにベクトル演算部101aを備えている点とが、携帯端末装置1と異なっている。
【0134】
歩行周期演算部100aは、歩行周期の代わりに、演算タイミングを演算してベクトル演算部101aに伝達する。
【0135】
ベクトル演算部101aは、代表サブブロックの動きベクトルを、歩行周期に平均するのではなく、そのまま被写体の動きベクトルとして動きベクトル情報111を作成する。また、ベクトル演算部101aによる演算タイミングは、演算タイマによって決定されるのではなく、歩行周期演算部
100aから通知される。
【0136】
図14は、第2の実施の形態における携帯端末装置1aにより実行される補正処理を示す流れ図である。
【0137】
第2の実施の形態における携帯端末装置1aは、第1の実施の形態における携帯端末装置1と同様の初期設定が実行された後、監視状態となる。また、監視状態において、携帯端末装置1aは、測定タイミングの到来と、撮像タイミングの到来と、演算タイミングの到来とを監視している(ステップS51,S55,S60)。
【0138】
監視状態において、初期設定において起動された測定タイマTsが0となると、携帯端末装置1aは、ステップS51においてYesと判定し、ステップS52ないしS54の処理を実行する。なお、ステップS52ないしS54の処理は、第1の実施の形態におけるステップS2ないしS4の処理と同様であるため、説明は省略する。
【0139】
監視状態において、初期状態において起動された撮像タイマTcが0となると、携帯端末装置1aは、ステップS55においてYesと判定し、ステップS56,S57の処理を実行する。なお、ステップS56,S57の処理は、第1の実施の形態におけるステップS6,S7の処理と同様であるため、説明は省略する。
【0140】
ステップS57が実行されると、ベクトル演算部101aは、すでに代表サブブロックが決定されているか否かを判定する(ステップS58)。そして、未だ代表サブブロックが決定されていない場合には、代表サブブロック決定処理(ステップS59)を実行してから監視状態に戻る。一方、すでに代表サブブロックが決定されている場合には、ステップS59をスキップして、監視状態に戻る。なお、ステップS59における代表サブブロック決定処理は、第1の実施の形態におけるステップS10の処理と同様であるため、説明は省略する。
【0141】
なお、携帯端末装置1aでは、演算タイマTvに相当する構成は設けられておらず、演算タイマTvを起動させる処理(ステップS9に相当する処理)が実行されることはない。
【0142】
監視状態において、演算タイミングが到来すると、CPU10は、ステップS60においてYesと判定する。第1の実施の形態では、演算タイミングが到来したか否かは、演算タイマの値を参照して判定されていた。しかし、第2の実施の形態では、演算タイマは設けられていないので、演算タイマの値によってステップS60の判定を実行することはできない。
【0143】
これまでに説明したように、歩行動作においては、歩行周期ごとに同じ歩行状態が繰り返される。したがって、同じ状態のときに撮像された画像情報160を比較すれば、進行方向の動き以外の動きを効率的にキャンセルすることができる。すなわち、歩行周期ごとに演算タイミングが到来するように、演算タイミングを歩行周期に同期させれば、進行方向の動き以外の動きによる影響を抑制することができる。
【0144】
また、画像情報160にエッジ量検出処理を行って動きベクトルを演算する場合には、当該画像情報160における手ブレが少ない方が好ましい。手ブレは、主にカメラ16が動くことによって生じ、カメラ16の動く速度が速いほど手ブレが大きくなる。したがって、携帯端末装置1aは、カメラ16の速度が最小のときに演算タイミングが到来したと判定するように構成する。これにより、カメラ16によって撮像される画像情報160において、最も手ブレが少ない状態の画像情報160によって動きベクトルを演算することができ、精度が向上する。なお、カメラ16の速度が最小となるタイミングは、加速度αw,αs,αvに基づいて、決定することができる。
【0145】
以上のことから、ベクトル演算部101aは、歩行周期ごとに到来する、カメラ16の速度が最小となるタイミングで演算タイミングが到来したと判定し、ステップS60においてYesと判定する。このようなタイミングは、歩行周期演算部100aによって検出されベクトル演算部101aに伝達される。
【0146】
第2の実施の形態における歩行周期演算部100aは、ステップS60において、第1の実施の形態におけるステップS43(
図9)と同様にして、歩行周期を求めることができる。また、ステップS60において歩行周期を求める過程で、加速度αw,αs,αvが求まるので、これに基づいてカメラ16の速度が最小となるタイミングも決定することができ、これをベクトル演算部101aに伝達する。このようにして、第2の実施の形態における携帯端末装置1aでは、演算タイミングの到来が検出される。
【0147】
ステップS60においてYesと判定すると、携帯端末装置1aは、直進歩行検出処理を実行する(ステップS61)。
【0148】
図15は、第2の実施の形態における直進歩行検出処理を示す流れ図である。
【0149】
直進歩行検出処理が開始されると、直進歩行判定部103は、直進フラグをOFFとする(ステップS71)。次に、ベクトル演算部101aが、代表サブブロックの動きベクトルを求め、動きベクトル情報111を作成し、記憶装置11に格納する(ステップS72)。
【0150】
すなわち、第2の実施の形態では、すでにステップS60の段階で歩行周期を求める処理が実行されているので、第1の実施の形態におけるステップS43に相当する処理は、第2の実施の形態では実行されない。
【0151】
また、歩行周期に同期して代表サブブロックの動きベクトルが演算されているため、進行方向の動き以外の動きによる影響はすでにキャンセルされている。したがって、代表サブブロックの動きベクトルを歩行周期で平均する必要はなく、第1の実施の形態
におけるステップS44に相当する処理は、第2の実施の形態では実行されず、ステップS72において求められた代表サブブロックの動きベクトルがそのまま被写体の動きベクトルとして動きベクトル情報111に格納される。
【0152】
ステップS72が実行されると、携帯端末装置1aは、ステップS73を実行する。なお、ステップS73ないしS77の処理は、第1の実施の形態におけるステップS45ないしS49の処理と同様のため、説明は省略する。
【0153】
ステップS61の直進歩行検出処理を終了すると、携帯端末装置1aは、ステップS62を実行する。なお、ステップS62が実行されてからの処理は、第1の実施の形態におけるステップS14が実行されてからの処理と同様であるため、説明は省略する。
【0154】
以上のように、第2の実施の形態における携帯端末装置1aでは、ベクトル演算部101aが、ユーザの歩行周期に同期した演算タイミングで、代表サブブロックの動きベクトルを算出する。したがって、歩行周期単位に平均しなくても、進行方向への動き以外の動きによる影響を除去できる。
【0155】
また、演算タイミングが、カメラ16の速度が最小のときとなるように決定される。したがって、進行方向への動き以外の動きによる影響を抑制することができるとともに、画像情報
160のブレも抑制することができる。
【0156】
なお、演算タイミングは、ユーザの両足が着地しているときとなるように決定されてもよい。この場合は、ユーザの体が最も安定している瞬間の動きベクトルを求めることができるため、やはり進行方向への動き以外の動きによる影響を抑制することができる。ユーザの両足が着地しているタイミングは、角速度ωw,ωs,ωv、および、加速度αw,αs,αvに基づいて歩行周期演算部100aにより検出することができる。
【0157】
また、演算タイミングを歩行周期に同期させる手法としては、歩行周期演算部100aによって演算された歩行周期を、第1の実施の形態における演算タイマと同様の構成にセットし、当該演算タイマが0となるタイミングの到来をステップS60において監視することでも実現することができる。
【0158】
また、第2の実施の形態では、歩行周期に同期してベクトル演算が実行されるため、ベクトル演算の演算周期が比較的長くなる。これにより、代表サブブロックに含まれる被写体の画像内における移動量が大きくなり、代表サブブロックの探索エリアが広がる懸念がある。しかしながら、携帯端末装置
1aでは、角速度ωw,ωs,ωv、および、加速度αw,αs,αvに基づいて代表サブブロックの画像内における移動量を推定することができるため、このような問題を抑制することができる。これは以下に説明する第3の実施の形態においても同様である。
【0159】
<3. 第3の実施の形態>
進行方向の動き以外の動きによる影響を抑制する手法は、第1の実施の形態および第2の実施の形態に示される手法に限定されるものではない。
【0160】
図16は、第3の実施の形態における携帯端末装置1bが備える機能ブロックをデータの流れとともに示す図である。なお、第3の実施の形態における携帯端末装置1bにおいて、第1の実施の形態における携帯端末装置1と同様の構成については同符号を付し、適宜説明を省略する。
【0161】
図16に示すように、携帯端末装置1bは、カメラ16の代わりにカメラ16bを備えている点と、歩行周期演算部100の代わりに歩行周期演算部100bを備えている点と、ベクトル演算部101の代わりにベクトル演算部101bを備えている点とが、携帯端末装置1と異なっている。
【0162】
カメラ16bは、歩行周期演算部100bから通知される撮像タイミングに従って撮像を行い、画像情報160を取得する。
【0163】
歩行周期演算部100bは、角速度情報140および加速度情報150に基づいて歩行周期を演算するとともに、歩行周期に同期したタイミングで撮像タイミングを決定し、カメラ16bに伝達する。その一方で、歩行周期演算部100bは、ベクトル演算部101bに対しては、歩行周期を伝達することはない。
【0164】
ベクトル演算部101bは、演算タイマにより演算タイミングを決定するのではなく、新たな画像情報160が取得されたタイミングを演算タイミングとして、動きベクトルの演算を実行する。
【0165】
図17は、第3の実施の形態における携帯端末装置1bによって実行される補正処理を示す流れ図である。
【0166】
第3の実施の形態における携帯端末装置1bにおいても、第1の実施の形態における携帯端末装置1と同様の初期設定が実行された後に監視状態となる。しかし、携帯端末装置1bにおいては、撮像タイマは設けられていないため、当該初期設定には撮像タイマを起動する処理は含まれない。また、監視状態において、携帯端末装置1bは、測定タイミングの到来と、撮像タイミングの到来とを監視している(ステップS81,S85)。
【0167】
監視状態において、初期設定において起動された測定タイマTsが0となると、携帯端末装置1bは、ステップS81においてYesと判定し、ステップS82ないしS84の処理を実行する。なお、ステップS82ないしS84の処理は、第1の実施の形態におけるステップS2ないしS4の処理と同様であるため、説明は省略する。
【0168】
監視状態において、撮像タイミングになると、携帯端末装置1bは、ステップS85においてYesと判定する。第1の実施の形態では、撮像タイミングが到来したか否かは、撮像タイマの値を参照して判定されていた。しかし、第3の実施の形態では、撮像タイマは設けられていないので、撮像タイマの値によってステップS85の判定を実行することはできない。
【0169】
第2の実施の形態においても説明したように、歩行動作においては、歩行周期ごとに同じ歩行状態が繰り返される。したがって、同じ状態のときに撮像された画像情報160を比較すれば、進行方向の動き以外の動きを効率的にキャンセルすることができる。すなわち、歩行周期ごとに撮像タイミングが到来するように、撮像タイミングを歩行周期に同期させれば、同じ状態のときに撮像された画像情報160のみを得ることができ、進行方向の動き以外の動きによる影響を抑制することができる。
【0170】
また、画像情報160にエッジ量検出処理を行って動きベクトルを演算する場合には、当該画像情報160における手ブレが少ない方が好ましいことも第2の実施の形態で説明したとおりである。したがって、携帯端末装置1bは、カメラ
16bの速度が最小のときに撮像タイミングが到来したと判定するように構成する。これにより、第2の実施の形態と同様に、カメラ
16bによって撮像される画像情報160において、最も手ブレが少ない状態の画像情報160によって動きベクトルを演算することができ、精度が向上する。
【0171】
すなわち、携帯端末装置1aは、演算タイミングを調整することによって、最適なタイミングの画像情報160を用いて動きベクトルを演算するように構成されていたが、携帯端末装置1bは、最適なタイミングの画像情報160のみを撮像するように構成されている。これによって、カメラ
16bによる撮像回数を大幅に減らすことが可能となり、処理負荷が軽減されるとともに、消費電力も抑制される。
【0172】
以上のことから、携帯端末装置1bは、歩行周期ごとに到来する、カメラ
16bの速度が最小となるタイミングで撮像タイミングが到来したと判定し、ステップS85においてYesと判定する。このようなタイミングは、歩行周期演算部100bによって第2の実施の形態における歩行周期演算部100aと同様の手法により検出され、カメラ16bに伝達される。
【0173】
ステップS85においてYesと判定されると、カメラ16bは撮像を行い、新たな画像情報160が記憶装置11に格納される(ステップS86)。
【0174】
新たな画像情報160が格納されると、ベクトル演算部101bは、代表サブブロックがすでに決定済みか否かを判定し(ステップS87)、未だ代表サブブロックが決定されていない場合(ステップS87においてNo。)、代表サブブロック決定処理(ステップS91)を実行して監視状態に戻る。なお、ステップS91における代表サブブロック決定処理は、第1の実施の形態におけるステップS10の処理と同様であるため、説明は省略する。
【0175】
一方、すでに代表サブブロックが決定されている場合(ステップS87においてYes。)、CPU10は、直進歩行検出処理を実行する(ステップS88)。なお、ステップS88における直進歩行検出処理は、第2の実施の形態における直進歩行検出処理(
図15)と同様であるため、説明は省略する。
【0176】
ステップS88の直進歩行検出処理を終了すると、携帯端末装置1bは、ステップS89を実行する。なお、ステップS89が実行されてからの処理は、第1の実施の形態におけるステップS14が実行されてからの処理と同様であるため、説明は省略する。
【0177】
以上のように、第3の実施の形態における携帯端末装置1bは、カメラ16bが、ユーザの歩行周期に同期した撮像タイミングで、携帯端末装置1bが移動している期間における周囲の被写体を撮像する。これにより、歩行動作における一定の姿勢のときに撮像されることになる(撮像時の姿勢のバラツキを抑制できる)ため、進行方向への動き以外の動きベクトルの影響を除去することができる。また、間欠的に撮像することにより、カメラ16bによる消費電力を抑制することができる。
【0178】
また、撮像タイミングが、カメラ16bの速度が最小のときとなるように決定される。したがって、進行方向への動き以外の動きによる影響を抑制することができるとともに、画像情報
160のブレも抑制することができる。
【0179】
なお、撮像タイミングは、ユーザの両足が着地しているときとなるように決定されてもよい。この場合は、ユーザの体が最も安定している瞬間の動きベクトルを求めることができるため、やはり進行方向への動き以外の動きによる影響を抑制することができる。ユーザの両足が着地しているタイミングは、角速度ωw,ωs,ωv、および、加速度αw,αs,αvに基づいて歩行周期演算部100bにより検出することができる。
【0180】
また、撮像タイミングを歩行周期に同期させる手法としては、歩行周期演算部100bによって演算された歩行周期を、第1の実施の形態における撮像タイマと同様の構成にセットし、当該撮像タイマが0となるタイミングの到来をステップS85において監視することでも実現することができる。
【0181】
なお、カメラ16bは歩行周期に同期したタイミングが到来する前後一定時間の間において撮像を行い、その間に取得された画像情報160のうち、実際に、カメラ16bの速度が最小のときに撮像された画像情報160を用いて動きベクトルを演算するように構成してもよい。人の歩行動作は一定の歩行周期となるわけではなく、多少のバラツキが生じる。したがって、予測した歩行周期において、実際には、同じ状態になっていない場合があり、予測した歩行周期によって撮像した画像情報160だけでは、状態がずれている場合がある。しかし、上記のように構成することにより、実際に、同じ状態になっていたか否かを判定しつつ、同じ状態になっていたときの画像情報160を用いて動きベクトルを演算できるので、精度が向上する。
【0182】
<4. 第4の実施の形態>
上記第1ないし第3の実施の形態では、カメラ16,16bによって撮像される画像情報160を解析することにより、ユーザの歩行状態における直進状態を判定する例について説明した。しかし、ユーザの歩行状態における直進状態を判定する手法は、これに限定されるものではない。
【0183】
図18は、第4の実施の形態における携帯端末装置1cのブロック図である。なお、第4の実施の形態における携帯端末装置1cにおいて、第1の実施の形態における携帯端末装置1と同様の構成については同符号を付し、適宜説明を省略する。
図3と
図18とを比較すれば明らかなように、携帯端末装置1cは、カメラ16を備えていない点が携帯端末装置1と異なっている。
【0184】
図19は、第4の実施の形態における携帯端末装置1cが備える機能ブロックをデータの流れとともに示す図である。
【0185】
携帯端末装置1cは、直進歩行判定部103cおよび補正部104とを備えている。直進歩行判定部103cおよび補正部104は、CPU10がプログラム110に従って動作することにより実現される機能ブロックである。
【0186】
直進歩行判定部103cは、ジャイロセンサ14により取得された角速度情報140および加速度センサ15により取得された加速度情報150を、予め与えられる歩行動作におけるパターンと比較することにより、ユーザが歩行動作における直進状態か否かを判定する。
【0187】
直進歩行判定部103cは、第1の実施の形態における歩行周期演算部100と同様に、角速度情報140および加速度情報150を、ユーザの歩行動作を示す座標系(W軸、S軸およびV軸)に変換して、角速度ωw,ωs,ωv、および、加速度αw,αs,αvを求める機能を有している。また、これらの値に応じて、歩行周期を演算する機能も有している。
【0188】
ここで、加速度αw,αv、および、角速度ωsは、歩行運動における前進動作が反映される。また、角速度ωw,ωv、および、加速度αsは、歩行運動における旋回動作が反映される。また、すでに
図12に示したように、加速度αw,αvは1歩単位の周期をもつものの、角速度ωvは1複歩単位の周期をもっている。
【0189】
したがって、予め歩行状態が既知の、歩行動作におけるパターンについて1複歩単位で特徴点を抽出し、機械学習器(例えば、サポートベクターマシンやニューラルネット)に入力して学習させることによって、直進歩行判定部103cの機能を実現することができる。すなわち、第4の実施の形態においても、歩行周期は1複歩周期となる。
【0190】
なお、学習させる歩行状態のパターンは、直進、右旋回、左旋回などが想定される。また、学習させる歩行状態のパターンには、保持状態の違いによるパターンも想定される。例えば、携帯端末装置1cを、手に持っている状態(手振り状態)、表示部13を閲覧している状態、ポケット等に入れている状態、通話している状態などが想定される。
【0191】
図20は、第4の実施の形態における携帯端末装置1cによって実行される補正処理を示す流れ図である。
【0192】
なお、
図20に示す処理が開始されるまでに、携帯端末装置1cでは、携帯端末装置1cを所持したユーザの既知の歩行動作におけるパターンの特徴点を学習させる工程と、所定の初期設定とがすでに実行されているものとする。初期設定には、ジャイロセンサ14および加速度センサ15による測定タイミングを計測するための測定タイマにTsをセットして起動する処理と、ジャイロセンサ14のバイアス値(bv)の初期値を設定する処理と、携帯端末装置
1cの姿勢(処理開始時の姿勢)を決定する処理とが含まれる。携帯端末装置
1cの初期姿勢を決定する手法としては、ユーザが携帯端末装置1cの操作部12を操作して姿勢を入力する方法や、図示しない磁気センサの出力により姿勢を決定する方法などが想定される。
【0193】
初期設定が終了すると、携帯端末装置1cは、測定タイマと、1複歩時間が経過したか否かとを監視する状態となる(ステップS101,S105)。この状態を、以下の説明では、「監視状態」と称する。ただし、監視状態において、携帯端末装置
1cは、ステップS101,S105以外の他の処理を実行していてもよい。
【0194】
監視状態において、測定タイマが0となり、測定タイミングが到来すると、CPU10は、ステップS101においてYesと判定し、測定タイマをTsにリセットしつつ(ステップS102)、ジャイロセンサ14および加速度センサ15の値をそれぞれ読み出す。これによって、携帯端末装置1cの動きに関する角速度および加速度の測定が実行される(ステップS103)。
【0195】
なお、ステップS103において読み出されるジャイロセンサ14の値は、未だバイアス値bvの補正(後述)がされていなければ、バイアス値bvの初期値に基づいて取得される。一方で、バイアス値bvの補正がされた後は、補正後のバイアス値bvの値により補正された値として取得される。すなわち、補正部104は、ジャイロセンサ14のバイアス値bvを補正することにより、角速度情報140を補正する。
【0196】
次に、CPU10は、読み出したジャイロセンサ14の値および加速度センサ15の値とに基づいて、角速度情報140および加速度情報150を作成し、記憶装置11に記録する(ステップS104)。なお、本実施の形態では、角速度情報140および加速度情報150は、過去の記録に上書きされるのではなく、履歴として取得順に記録されていくものとする。
【0197】
このように、携帯端末装置1cは、測定タイマの値が0となるごとに、ステップS101においてYesと判定し、ステップS102ないしS104の処理を実行する。したがって、携帯端末装置1cでは、測定周期Tsごとに角速度および加速度が測定される。なお、ステップS104を実行すると、携帯端末装置1cは、再度、監視状態に戻る。
【0198】
監視状態において、1複歩時間が経過している場合(ステップS105においてYes。)、直進歩行判定部103cは、ユーザの歩行状態が直進状態か否かを判定する(ステップS106)。第4の実施の形態において、ステップS105における判定は、1複歩時間が経過するたびにYesとなる。したがって、携帯端末装置1c(直進歩行判定部103c)は、歩行周期ごとに、その間に測定された角速度情報140および加速度情報150に基づいてパターン認識処理を行い、その間のユーザの歩行状態が直進状態であったか否かを判定する。
【0199】
ユーザの歩行状態が直進状態の場合(ステップS106においてYes。)、補正部104は、ジャイロセンサ14のバイアス値を補正する(ステップS107)。ステップS107において、補正部104がジャイロセンサ14のバイアス値を補正する原理は、第1の実施の形態におけるステップS15と同様であるため、説明を省略する。
【0200】
なお、携帯端末装置1cにおいても、測位処理や経路記録処理を実行するために進行方向を記録している場合には、直進歩行判定部103cによってユーザの歩行動作が直進状態であると判定されている間は、角速度情報140や加速度情報150を参照せずに、進行方向の変化量を「0」として記録することが好ましい。
【0201】
一方、ステップS106においてNoの場合(ユーザの歩行動作が直進状態でない場合)、補正部104は、ステップS107をスキップし、監視状態に戻る。したがって、この場合、補正部104は、ジャイロセンサ14のバイアス値bvの補正は行わない。したがって、測位処理や経路記録処理を実行するために進行方向を記録している場合には、角速度情報140や加速度情報150に基づいて進行方向を記録することになる。ただし、ステップS15と同様の演算により、ΔWを求め、これを加算することにより進行方向を演算してもよい。
【0202】
以上のように、第4の実施の形態における携帯端末装置1cは、携帯端末装置1cの移動における角速度を測定して角速度情報140を取得するジャイロセンサ14と、携帯端末装置1cの移動における加速度を測定して加速度情報150を取得する加速度センサ15と、ジャイロセンサ14により取得された角速度情報140および加速度センサ15により取得された加速度情報150を、予め与えられる歩行動作におけるパターンと比較することにより、ユーザが歩行動作における直進状態か否かを判定する直進歩行判定部103cと、直進歩行判定部103cによりユーザが歩行状態における直進状態であると判定されたことに応じて、ジャイロセンサ14により取得される角速度情報140を補正する補正部104とを備える。これにより、ユーザが歩行動作における直進状態であるか否かを精度よく判定することができる。
【0203】
また、直進歩行判定部103cは、ユーザの歩行動作における歩行周期に応じて、パターンとの比較を行う。すなわち、連続的な動作として構成されている歩行動作を、歩行周期に区切って注目することによって効率的に特徴点を抽出することができるとともに、比較的短時間の動作によってパターン認識を実現することができる。したがって、比較的長い時間の連続した動作である歩行動作に対して、パターン認識を導入することが可能であるとともに、直進状態を検出する精度が向上する。また、第1ないし第3の実施の形態のように、カメラ16,16bを設ける必要がない。
【0204】
また、歩行周期は、ユーザの歩行動作において、ユーザが左右の足をそれぞれ1歩ずつ進める時間(1複歩時間)に応じて決定されている。これにより、角速度ωvの周期と一致させることができるので、1歩時間周期を歩行周期とする場合に比べて精度が向上する。
【0205】
<5. 変形例>
以上、本発明の実施の形態について説明してきたが、本発明は上記実施の形態に限定されるものではなく様々な変形が可能である。
【0206】
例えば、上記実施の形態に示した各工程は、あくまでも例示であって、上記に示した順序や内容に限定されるものではない。すなわち、同様の効果が得られるならば、適宜、順序や内容が変更されてもよい。
【0207】
また、上記実施の形態に示した機能ブロック(例えば、歩行周期演算部100やベクトル演算部101など)は、CPU10がプログラム110に従って動作することにより、ソフトウェア的に実現されると説明した。しかし、これらの機能ブロックの一部または全部を専用の論理回路で構成し、ハードウェア的に実現してもよい。
【0208】
また、上記実施の形態では、磁気センサを用いていなかったが、相対的な測位を実現するための自蔵センサとして、磁気センサを設けてもよい。