以下に、本願の開示する歩行状態推定方法、歩行状態推定プログラムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例にかかる移動体端末10を説明する図である。移動体端末10は、スマートフォン等の情報処理装置である。この移動体端末10は、3軸加速度センサを搭載し、計測した時系列の3軸加速度データ(以下、3軸加速度時系列データ)を用いて、ユーザの歩行状態を推定する。
歩行状態は、歩行者の歩行の状態であり、歩行周期と歩行の種類とを含む。移動体端末10は、歩行状態を推定することで、歩数および歩容を推定することができる。歩行状態についての詳細は、後述する。図1に示すように、移動体端末10は、複数の歩行条件における3軸加速度データから、各歩行条件における歩行状態を表す「歩行状態表現係数」を学習する。そして、移動体端末10は、学習済みの歩行状態表現係数を用いて、歩行状態を推定する対象の歩行者の歩行状態を推定する。以下、移動体端末10が歩行状態表現係数を学習するフェーズを、学習フェーズ、対象の歩行者の歩行状態を推定するフェーズを推定フェーズとする。
学習フェーズと推定フェーズの概要を説明する。図2は、本実施例にかかる全体構成を説明する図である。図2に示すように、学習フェーズでは、移動体端末10は複数の歩行条件で計測した3軸加速度時系列データから、各歩行条件における歩行状態を表す歩行状態表現係数を学習する。例えば、n種類の歩行条件1〜n(nは1以上の自然数)ごとに、複数の3軸加速度時系列データからなるデータセットを入力し、歩行条件1〜nに紐付く歩行状態を表す歩行状態表現係数Cq,q´を学習する。図2における“Condition1〜i,n”は、歩行条件1〜nに紐付く歩行状態の例示である(iは1以上n以下の自然数)。
また、図2に示すように、推定フェーズでは、移動体端末10は歩行者の3軸加速度時系列データと学習済みの歩行状態表現係数とから歩行状態ごとの複数の重心加速度を算出する。また、推定フェーズにおいて、移動体端末10は歩行者の3軸加速度時系列データから、歩行状態表現係数Cq,q´を使用せずに上下、前後または左右方向の身体重心加速度を算出する。そして、歩行状態ごとの複数の重心加速度のうち、歩行状態表現係数Cq,q´を使用せずに算出した身体重心加速度と、時系列の波形が最も近いものを選択する。移動体端末10は、選択された身体重心加速度の算出に使用された歩行状態表現係数Cq,q´に対応する歩行状態を、歩行者の歩行状態として推定する。
次に、移動体端末10のハードウェア構成について説明する。図3は、本実施例にかかる移動体端末10のハードウェア構成例を示す図である。図3に示すように、移動体端末10は、無線部1、3軸加速度センサ2、記憶装置3、プロセッサ4を有する。なお、ここで図示したハードウェアは一例であり、例えばGPS(Global Positioning System)受信器や表示装置等の他のハードウェアを有していてもよい。
無線部1は、アンテナ1aを介して、他の端末とデータの送受信を実行する。3軸加速度センサ2は、移動体端末10の加速度を測定してプロセッサ4に出力するセンサであり、xyz軸の3方向の加速度を測定する3軸の加速度センサである。記憶装置3は、プログラムやデータを記憶する記憶装置であり、例えばメモリやハードディスク等である。記憶装置3は、本実施形態における記憶部の一例である。
プロセッサ4は、CPU(Central Processing Unit)等であり、後述する各種処理の内容が規定されるプログラムを記憶装置3から読み出して実行し、歩行状態推定に関する各種処理、すなわち歩行状態推定プログラムを実行する。
図4は、本実施例にかかる移動体端末10の機能構成を示す機能ブロック図である。例えば、移動体端末10は、歩行状態推定プログラムを実行することで、図4に示す各処理部として機能する。図4に示すように、移動体端末10は、入力部11、抽出部12、学習部13、第1の算出部14、第2の算出部15、推定部16、記憶部20を有する。
入力部11は、3軸加速度センサ2が計測した時系列の加速度データ、すなわち3軸加速度時系列データを入力する。例えば、入力部11は、学習フェーズや推定フェーズにおいて入力した3軸加速度時系列データを抽出部12、第1の算出部14、第2の算出部15に送出する。また、入力部11は、歩行者の靴底に設置された圧電センサ(不図示)から、歩行者が1歩を踏み出したタイミングを示す信号を取得する構成を採用しても良い。当該構成を採用する場合、入力部11は、取得した信号を3軸加速度時系列データと共に抽出部12に送出する。
学習部13は、学習フェーズにおいて、歩行状態ごとの複数の3軸加速度時系列データから、歩行状態表現係数を学習する。より詳細には、学習部13は、入力部11が入力した3軸加速度時系列データのうち、一定の歩行周期で歩行している区間から歩行状態表現係数を学習する。一定の歩行周期で歩行している区間は、抽出部12が抽出する。抽出処理の詳細については後述する。また、学習部13が学習用に利用する3軸加速度時系列データは、後述の推定フェーズにおける歩行状態の推定対象となる歩行者のデータに限らず、多数の歩行者から測定しても良い。
図5は、本実施例にかかる身体重心加速度の重力方向成分の波形の一例を示す図である。図5に示すように、一般に歩行者の重心は腰付近にあり、歩行運動によって、身体重心加速度は重力方向、前後方向、左右方向の加速度が周期的に変化する。また、重力加速度と、身体重心加速度の波形の内積をとることにより、身体重心加速度の重力方向成分を算出することができる。図5に示すように、歩行者が歩行すると、歩行者の重心の移動により、身体重心加速度の重力方向成分の時系列のデータは周期性のある波形となる。身体重心加速度の重力方向成分の算出の詳細については後述する。また、図5では、3軸加速度時系列データのうち重力方向成分の波形を例として示しているが、歩行者の前後や左右方向の加速度の時系列データも、周期性のある波形となる。
3軸加速度時系列データの波形は、歩行者の歩行周期と歩行の種類によってそれぞれ異なる。本実施例における歩行の種類とは、歩行者が歩行する際の動作の分類である。図6は、本実施例にかかる歩行の種類の例を示す図である。図6に示すように、歩行の種類には、例えば、平坦な場所を歩行する「平地歩行」、上り階段を歩行する「階段上り」がある。歩行者が移動体端末10を携帯して平地歩行や階段上りを行うと、3軸加速度センサ2はそれぞれの3軸加速度時系列データを測定する。図6に示すように、歩行の種類によって3軸加速度時系列データの波形は異なる。
また、図7は本実施例にかかる歩行周期の例を示す図である。図7に示すように、歩行の種類が同じ「平地歩行」であっても、歩行周期が1.7Hzの場合と2.0Hzの場合とでは移動体端末10の3軸加速度センサ2が計測する3軸加速度時系列データの波形は異なる。本実施例では、学習部13は、歩行の種類と歩行周期とを組み合わせた歩行条件ごとの3軸加速度時系列データから、各歩行条件に対応する歩行状態を表す歩行状態表現係数を学習する。また、歩行条件は、さらに、歩行者が移動体端末10がどのように携帯しているか、例えば腰に装着しているか、ポケットに入れているか等を分類する構成を採用しても良い。
例えば、学習部13が、歩行の種類が平地歩行、歩行周期が1.7Hzの3軸加速度時系列データから学習をする場合を例として、学習フェーズの詳細を説明する。図8は、本実施例にかかる歩行周期1.7Hzで平地歩行をした場合の三軸加速度時系列データを示す図である。図8に示すデータは移動平均等を適用する前の状態であるので、以下「元データ」という。
学習部13は、図8に示す3軸加速度時系列データのX、Y、Z軸加速度をそれぞれ離散フーリエ変換(Discrete Fourier Transform、DFT)し、DFT係数X
q、Y
q、およびZ
qを算出する。DFT係数X
q、Y
q、およびZ
qは、下記の式(1−1)〜(1−4)によって求めることができる。
式(1−1)〜(1−4)において、tは時間である。x(t)は、x軸の加速度の時系列データを示す関数である。y(t)は、y軸の加速度の時系列データを示す関数である。z(t)は、z軸の加速度の時系列データを示す関数である。nは3軸加速度時系列データのサンプル数(計測数)を示す1以上の自然数である。また、q=−n,・・・,nとする。λは、式(1−4)で示される。
また、図8に示したように、3軸加速度センサ2が計測した3軸加速度時系列データの波形は、通常、ノイズ等によって不規則な要素を含む。そこで、ローパスフィルタ(Low-pass Filter)とバントパスフィルタ(Band-Pass Filter)とを使用して、ノイズを除去するとともに、歩行者の身体重心加速度の重力方向(上下方向、鉛直方向)成分、左右成分、前後方向成分(歩行進行成分)を抽出する。
図9は、本実施例にかかるフィルタの適用によって算出された重力加速度を示す図である。図9では学習部13が、移動平均フィルタを適用することでローパスフィルタと同様の結果を得ているが、ローパスフィルタを適用しても良い。学習部13が移動平均フィルタを適用する場合、移動平均を算出する対象のサンプル数(波形の長さ)nが増加するに従って、3軸加速度センサ2のノイズの影響は小さくなる。また、学習部13が移動平均を算出するサンプル数nをさらに増加させると、歩行運動による加速度の周期的な波形の変化が消え、3軸加速度時系列データのDC成分に相当する重力加速度成分の値を推定することができる。図9に示す例では、学習部13は、移動平均を算出するサンプル数nを“13”にすることで、重力加速度成分の時系列データを推定する。この重力加速度成分の推定値は、3軸加速度センサ2の向きに依存した値となる。
また、図10は、本実施例にかかるフィルタの適用によって算出された身体重心加速度を示す図である。学習部13は、3軸加速度センサ2が計測した3軸加速度時系列データから、そのDC成分に相当する重力加速度を減算し、さらにその移動平均を算出することによって歩行運動の身体重心加速度を推定することができる。図10に示す波形のデータは、学習部13が、図8に示した3軸加速度時系列データからサンプル数nを“6”として移動平均を算出した波形に対して、さらにサンプル数nを“4”として移動平均を算出することでノイズを除去した波形である。このように学習部13が移動平均を算出することにより、図10の3軸加速度時系列データは、図8の3軸加速度時系列データに対してバンドパスフィルタでフィルタリングした状態となる。
学習部13は、図10に示す身体重心加速度の3軸方向成分を表す時系列データと、図9に示した重力加速度との内積を算出することによって、歩行加速の重力方向成分を表す時系列データを算出する。図11は、本実施例にかかる身体重心加速度の重力方向成分を表す時系列データを示す図である。図11の系列1の波形は図9と図10に示したデータから算出された、歩行における身体重心加速度の重力方向成分である。また、系列2および系列3は、系列1の波形を修正した波形である。例えば、系列2は、系列1の波形から、元データに対してサンプル数nが“14”の移動平均フィルタを適用したデータを引いたものである。系列3は、系列2のデータの絶対値を制限したデータである。図8に示すように、系列1〜3の波形はほぼ同じ波形となる。
図11に示す波形のように、歩行者が移動体端末10を携帯して歩行する場合に、3軸加速度センサ2が計測した3軸加速度時系列データから学習部13が算出した身体重心加速度の重力方向成分は、歩行と同じリズムで変化する周期波形となる。歩行者が規則的なリズムで歩行する場合、歩行運動の身体重心加速度は、重力方向、左右方向、前後方向に対し、2歩1周期で変化する。
学習部13は、図11に示す身体重心加速度の重力方向成分を表す時系列データを離散フーリエ変換し、DFT係数P
qを算出する。DFT係数P
qは、下記の式(2)によって求めることができる。
式(2)において、tは時間である。p(t)は、身体重心加速度の重力方向成分を表す時系列データを示す関数である。nは3軸加速度時系列データのサンプル数を示す1以上の自然数である。また、q=−n,・・・,nとする。λは上述の式(1−4)で示される。
学習部13は、複数の歩行条件で測定された3軸加速度時系列データから、DFT係数X
q、Y
q、Z
qおよびP
qを複数セット算出する。各歩行条件につき、それぞれ複数の3軸加速度時系列データが用意されることが望ましい。学習部13は、算出したDFT係数X
q、Y
q、Z
qおよびP
qのセットを下記の式(3)に代入して、正規方程式を解法することにより歩行状態表現係数C
q,q´を算出する。
式(3)において、tは時間である。nは3軸加速度時系列データのサンプル数を示す1以上の自然数である。また、q=−n,・・・,n、q´=−n,・・・,n、q≦q´とする。λは上述の式(1−4)で示される。
このようにして、学習部13は、各歩行条件における歩行状態を表す歩行状態表現係数Cq,q´を学習する。式(3)で示すように、歩行状態表現係数Cq,q´は、学習部13が式(3)の左辺に代入したDFT係数Xq、YqおよびZq(入力のDFT係数)を、右辺に代入したDFT係数Pq(出力のDFT係数)に変換するための係数である。言い換えれば、本実施例において、歩行状態表現係数Cq,q´は、3軸加速度時系列データを身体重心加速度の重力方向成分を表す時系列データに変換する変換行列である。これは一例であり、歩行状態表現係数は、変換係数や変換関数であっても良い。学習部13は、歩行状態表現係数Cq,q´を、歩行条件と対応付けて記憶部20に送出する。記憶部20は、複数の歩行状態表現係数Cq,q´を、歩行条件と対応付けて記憶する。
ここで、学習部13が学習に用いる3軸加速度時系列データの計測の際は、歩行者は、予め定めたある一定の歩行周期で歩行する。しかしながら、計測時間内において常に歩行者が一定の歩行周期を保って歩行できるとは限らず、歩行中に歩行周期が変動する場合がある。そこで、抽出部12は、計測された3軸加速度時系列データから、一定の歩行周期の部分区間を抽出する。
抽出部12は、3軸加速度センサ2が学習用に計測した3軸加速度時系列データと、当該3軸加速度時系列データの計測時に歩行者が1歩を踏み込んだタイミングから歩行周期を推定する。例えば、上述の入力部11が、歩行者の靴底の圧電センサ(不図示)から信号を入力することで、歩行者が1歩を踏み込んだタイミングを取得する構成を採用しても良い。または、図11で説明した身体重心加速度の重力方向成分を表す時系列データを、抽出部12が算出する構成を採用し、身体重心加速度の重力方向成分の値から歩行者が1歩を踏み込んだタイミングを取得する構成を採用しても良い。
図12は、本実施例にかかる学習データの一例を示す図である。図12の1列目の値は、3軸加速度センサ2が計測した3軸加速度データの時系列の番号である。本実施例では、3軸加速度センサ2は40ms間隔で3軸加速度を計測する。図12の2列目から4列目の値は、3軸加速度の各軸の時系列データである。5列目の値は、図11に示した、身体重心加速度の重力方向成分を表す時系列データである。6列目の値は、歩数がカウントアップされるタイミングを示す。6列目の値は、例えば、歩数がカウントアップされる時に“1”、それ以外の時には“0”となる。歩行者が足を踏み込み、身体を押し上げる時に身体重心加速度の重力方向成分は極大値をとる。このため、図12に示す例では、5列目の身体重心加速度の重力方向成分の値が極大値をとる時点を、歩数カウントアップのタイミングとした。
抽出部12が、「歩行の種類が平地歩行、かつ、歩行周期が2.0Hz」と、「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件の3軸加速度データをそれぞれ抽出する場合を例として、具体的に説明する。
1歩2.0Hzの歩行周期で歩行者が2歩歩くのに要する時間は1000.0ms(1000/2.0×2歩=1000.0ms)となる。ここで、抽出部12は、歩行者の歩行周期長を2n+1(nは1以上の自然数)として、奇数のサンプル数ごとに所要時間を算出する。例えば、図12のように、3軸加速度センサ2が40ms間隔で3軸加速度データを計測する場合、計測されたデータのサンプル数が“25”となる時間が1000.0msとなる。抽出部12は、歩数カウントアップの値が示す2歩分の時間が、25個分のサンプル数と一致する区間を、「歩行の種類が平地歩行、かつ、歩行周期が2.0Hz」の歩行条件を満たす3軸加速度データとして抽出する。
また、1歩1.7Hzの歩行周期で歩行者が2歩歩くのに要する時間は約1176.5ms(1000/1.7×2歩≒1176.5ms)となる。3軸加速度センサ2が40ms間隔で3軸加速度データを計測する場合、計測されたデータのサンプル数“27”ごとの時間が1080ms、サンプル数が“29”ごとの時間が1160ms、サンプル数“31”ごとの時間が1240msとなる。すなわち、サンプル数が“29”の場合の時間が最も1176.5msと近似する。そこで、抽出部12は、歩数カウントアップの値が示す2歩分の時間が29個分のサンプル数と一致する区間を「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件を満たす3軸加速度データとして抽出する。
図13は、本実施例にかかる2歩1周期がサンプル数“29”となる学習データの例を示す図である。図13に示すように、データ番号1533〜1561の区間では、歩数カウントアップが“1”となる最新の時点から2歩分遡った時点と、サンプル数が“29”となる時点が一致する。この場合、抽出部12は、データ番号1533〜1561の区間を、「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件を満たす3軸加速度データとして抽出する。
上述の説明では、歩行周期の長さを奇数(2n+1)のサンプル数として対象のデータの区間を算出したが、これに限らない。例えば、抽出部12が歩行周期の長さを偶数(2n)のサンプル数として同様の演算をする構成を採用することも可能である。当該構成を採用した場合、奇数のサンプル数だけでなく、偶数のサンプル数も選択可能とすることにより、1サンプル単位で最適な歩行周期の長さを推定することができる。
ここで、計測した3軸加速度データの量によっては、2歩1周期の長さが25または29サンプル数分の歩行時間と一致する区間のみを学習用のデータとして抽出すると、データ数が不足する場合がある。このような場合は、抽出対象のサンプル数の範囲を広げることで、データ数を確保しても良い。例えば、「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件の3軸加速度データを抽出する場合に、2歩1周期に相当するサンプル数が“29”となる区間だけでなく、“28”または“30”となる区間を抽出しても良い。
例えば、図14は、本実施例にかかる2歩1周期がサンプル数“28”となる学習データの例を示す図である。図14に示すように、最新の歩数カウントアップが“1”となる最新の時点から29サンプル数分遡ったデータ番号“1532”の時点では、歩数カウントアップのタイミングと一致しない。しかし、サンプル数が“28”となるデータ番号“1533”の時点は、最新のカウントアップから2歩分遡った歩数カウントアップのタイミングと一致する。この場合、抽出部12は、データ番号1534〜1561の区間を、「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件を満たす3軸加速度データとして抽出する。
また、図15は、本実施例にかかる2歩1周期がサンプル数“30”となる学習データの例を示す図である。図15に示すデータの例では、サンプル数が“30”となるデータ番号“1531”の時点が、最新のカウントアップから2歩分遡った歩数カウントアップのタイミングと一致する。この場合、抽出部12は、データ番号1532〜1561の区間を、「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件を満たす3軸加速度データとして抽出する。
抽出部12は、抽出した3軸加速度データを、歩行条件と対応付けて学習部13に送出する。
次に、推定フェーズにおける各機能部の機能について説明する。第1の算出部14は、入力部11から取得した歩行者の3軸加速度時系列データと、記憶部20に予め記憶された歩行状態ごとの歩行状態表現係数Cq,q´から、歩行状態ごとに重心加速度を算出する。
具体的には、第1の算出部14は、歩行者の2歩分と仮定した3軸加速度時系列データと歩行状態表現係数Cq,q´から、歩行運動の身体重心加速度の重力方向成分の時系列データを算出する。2歩分の時系列データを算出するのは、歩行者の身体加速度が2歩1周期で変化するためである。歩行者の最新の2歩分のデータの抽出の一例として、予め設定された歩行者の2歩分に相当する時系列データの計測サンプル数の上限と下限の範囲に含まれるサンプル数ごとに、身体重心加速度の重力方向成分を表す時系列データを算出する。
例えば、歩行者が2歩歩くのに要する時間が840ms〜1640msである場合、3軸加速度センサ2が40msごとに計測をすると、2歩分に相当するサンプル数の下限は“21”、上限は“41”となる。サンプル数が“21”の場合は、1番目から21番目のサンプルまでが2歩分のデータとなる。また、サンプル数が“41”の場合は、1番目から41番目のサンプルまでが2歩分のデータとなる。第1の算出部14は、サンプル数2n+1ごとに演算をする場合、サンプル数が“21,23,・・・,39,41”のそれぞれの範囲で身体重心加速度の重力方向成分を表す時系列データを算出する。
身体重心加速度の重力方向成分を表す時系列データを算出するために、第1の算出部14は、下記の式(4)によって、歩行状態ごとのDFT係数P
qをそれぞれ求める。
式(4)において、nは1以上の自然数であり、サンプル数を表す。また、q=−n,・・・,n、q´=−n,・・・,n、q≦q´とする。また、式(4)において、Cq,q´は歩行状態表現係数、Xq、Xq´、Yq、Yq´、Zq、Zq´、はDFT係数である。
第1の算出部14は、式(4)で求めたDFT係数Pqを、上述の式(4)に代入して逆離散フーリエ変換(Inverse Discrete Fourier Transform,IDEFT)することにより、身体重心加速度の重力方向成分を表す時系列データを算出する。第1の算出部14が算出する身体重心加速度の重力方向成分を表す時系列データを、第1の重心加速度の一例とする。第1の算出部14は、仮定した2歩1周期で算出した身体重心加速度の重力方向成分を表す時系列データを、歩行状態表現係数Cq,q´と対応付けて推定部16に送出する。
第2の算出部15は、第1の算出部14と同様に、入力部11から取得した3軸加速度時系列データから歩行者の2歩分と仮定した区間を抽出する。第2の算出部15は、3軸加速度時系列データの歩行者の2歩分と仮定した区間に対して、ローパスフィルタまたは移動平均フィルタを適用して、重力加速度を算出する。また、第2の算出部15は、3軸加速度時系列データの歩行者の2歩分と仮定した区間に対して、バンドパスフィルタまたは移動平均フィルタを適用して、身体重心加速度の3軸方向成分を表す時系列データを算出する。フィルタの適用による重力加速度および身体重心加速度の3軸方向成分を表す時系列データの算出は、図9、図10で説明した学習部13と同様である。
そして、第2の算出部15は、図11で説明した学習部13と同様に、算出した身体重心加速度の3軸方向成分を表す時系列データと、重力方向成分との内積をとることによって、歩行加速の重力方向成分を表す時系列データを算出する。第2の算出部15は、算出した身体重心加速度の重力方向成分を表す時系列データを、推定部16に送出する。第2の算出部15が算出する身体重心加速度の重力方向成分を表す時系列データを、第2の重心加速度の一例とする。2歩分と仮定した各サンプル数に対応する第1の重心加速度は歩行状態表現係数Cq,q´ごとに複数算出されるのに対して、第2の重心加速度は入力部11から取得したデータのみから算出されるため、1種類となる。
推定部16は、第1の算出部14が算出した歩行状態ごとの第1の重心加速度のうち、第2の算出部15が算出した第2の重心加速度との値の差が最も小さくなるものを特定する。推定部16は、特定した身体重心加速度の重力方向成分を表す時系列データと対応づけられた歩行状態表現係数Cq,q´を、推定対象の歩行者の歩行状態として推定する。例えば、歩行状態表現係数Cq,q´が「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行条件における歩行者の歩行状態を示すものであれば、推定部16は、歩行者は「歩行の種類が平地歩行、かつ、歩行周期が1.7Hz」の歩行をしたと推定する。
第1の重心加速度と第2の重心加速度の近さの判定には、推定部16は、例えば、波形の近さの評価値を用いる。具体的には、推定部16は、第1の重心加速度と第2の重心加速度の波形の評価値rを、下記の式(5)を用いて算出する。
式(5)における“y[t+k]”は第2の算出部15が算出した身体重心加速度の重力方向成分を表す時系列データの波形、“〜y[t+k]”は、第1の算出部14が算出した歩行状態ごとの身体重心加速度の重力方向成分を表す時系列データの波形を示す。nはサンプル数を示す1以上の自然数である。2n+1は2歩1周期に相当するサンプル数を示す。2n+1の値は、奇数の数列“2n+1=・・・,25,27,29,・・・”となる。
推定部16は、評価値rを最小化する第1の重心加速度を特定する。例えば、2歩1周期のサンプル数(2n+1)の範囲が「21≦2n+1≦41」である場合、推定部16は“2n+1=21”から“2n+1=41”までのrの値を算出する。推定部16は、各歩行状態ごとにrの値が最小となる2n+1の値を求め、2歩分の歩行周期に該当する区間と、当該区間における歩行者の歩行状態とを推定する。推定部16は、推定対象の歩行者の3軸加速度時系列データに対して、2歩1周期の単位で、上述の歩行状態の推定処理を繰り返す。また、推定部16は、歩行周期を特定することで、計測時間内の歩行者の歩数を計数することができる。推定部16は、特定した歩行状態と歩数とを不図示の表示装置等に表示させて歩行者に通知する構成を採用しても良い。
次に、以上のように構成された本実施例の処理の流れについて説明する。図16は、本実施例にかかる学習フェーズの処理の流れを示すフローチャートである。まず、入力部11は、歩行状態ごとの複数セットの3軸加速度時系列データを3軸加速度センサ2から入力する(S1)。また、入力部11は、圧電センサ(不図示)から、歩行状態ごとの3軸加速度時系列データと同時に計測した歩数カウントアップデータを入力する構成を採用しても良い。入力部11は、入力した歩行状態ごとの3軸加速度時系列データおよび歩数カウントアップデータを、抽出部12に送出する。
抽出部12は、入力部11から取得した3軸加速度時系列データおよび歩数カウントアップデータから、歩行者が一定の歩行周期で歩行している複数の部分区間を抽出する(S2)。抽出部12は、圧電センサ(不図示)から入力した信号の代わりに、図11で説明した身体重心加速度の重力方向成分を表す時系列データを求め、身体重心加速度の重力方向成分の値が極大値をとる時点を、歩数カウントアップのタイミングとしても良い。抽出部12は、抽出した3軸加速度データを、歩行条件と対応付けて学習部13に送出する。
学習部13は、抽出部12が抽出した3軸加速度時系列データの部分区間ごとのX、Y、Z軸加速度を式(1−1)〜(1−4)によってそれぞれ離散フーリエ変換し、DFT係数Xq、Yq、およびZqを算出する(S3)。
また、学習部13は、抽出部12が抽出した3軸加速度時系列データの部分区間ごとに、ローパスフィルタまたは移動平均フィルタによって重力加速度を算出する。また、学習部13は、抽出部12が抽出した3軸加速度時系列データの部分区間ごとに、バンドパスフィルタまたは移動平均フィルタによって身体重心加速度を算出する。学習部13は、算出した重力加速度と身体重心加速度の内積をとり、身体重心加速度の重力方向成分の時系列データを算出する(S4)。
学習部13は、S4で算出した身体重心加速度の重力方向成分の時系列データを式(2)によって離散フーリエ変換し、DFT係数Pqを算出する(S5)。
学習部13は、歩行状態ごとに複数のデータセットから算出したDFT係数Xq、Yq、ZqおよびPqを式(3)に代入して、正規方程式を解法することにより歩行状態表現係数Cq,q´を算出する。学習部13は、算出した歩行状態表現係数Cq,q´を、歩行条件と対応付けて記憶部20に保存する(S6)。
次に、本実施例における推定フェーズの処理の流れを説明する。図17は、本実施例にかかる推定フェーズの処理の流れを示すフローチャートである。入力部11は、3軸加速度センサ2が計測した歩行状態推定対象の歩行者の3軸加速度時系列データを入力する(S11)。入力部11は、3軸加速度時系列データを第1の算出部14および第2の算出部15に送出する。
第1の算出部14は、入力部11から取得した歩行者の3軸加速度時系列データと、学習済みの歩行状態ごとの歩行状態表現係数Cq,q´から、歩行状態ごとに重心加速度を算出する(S12)。具体的には、第1の算出部14は、入力部11から取得した歩行者の3軸加速度時系列データから2歩1周期分と仮定したサンプル数ごとに、式(4)を用いて歩行状態表現係数Cq,q´ごとのDFT係数Pqを算出する。そして、第1の算出部14は、式(4)で求めたDFT係数Pqを、上述の式(2)に代入して逆離散フーリエ変換することにより、身体重心加速度の重力方向成分を表す時系列データ(p(t))を算出する。第1の算出部14は、算出した複数の身体重心加速度の重力方向成分を表す時系列データ、すなわち第1の加速度を、それぞれ歩行状態表現係数Cq,q´と対応付けて推定部16に送信する。
第2の算出部15は、入力部11から取得した3軸加速度時系列データからローパスフィルタとバンドパスフィルタによって、歩行者の身体重心加速度を算出する(S13)。具体的には、第2の算出部15は、入力部11から取得した歩行者の3軸加速度時系列データの2歩分と仮定した区間に対して、ローパスフィルタまたは移動平均フィルタを適用して、重力加速度を算出する。また、第2の算出部15は、3軸加速度時系列データの2歩分と仮定した区間に対して、バンドパスフィルタまたは移動平均フィルタを適用して、身体重心加速度の3軸方向成分を表す時系列データを算出する。第2の算出部15は、算出した身体重心加速度の3軸方向成分を表す時系列データと、重力方向成分との内積をとることによって、歩行加速の重力方向成分を表す時系列データを算出する。第2の算出部15は、算出した身体重心加速度の重力方向成分を表す時系列データ、すなわち第2の加速度を、推定部16に送出する。
推定部16は、第1の加速度のうち、第2の加速度と時系列の波形が最も一致するものを選択する(S14)。具体的には、推定部16は、2歩1周期のサンプル数2n+1の値ごとに、第1の重心加速度と第2の重心加速度の波形の評価値rを、上述の式(5)を用いて算出する。推定部16は、第1の加速度のうち、第2の加速度の波形の差異の評価値rの値が最小となる2n+1の値を求め、2歩分の歩行周期に該当する区間を特定する。また、推定部16は、評価値rの値が最小となった第1の加速度を選択する。
推定部16は、選択した第1の加速度に対応付けられた歩行状態表現係数Cq,q´が表す歩行状態を、当該2歩分の区間における歩行者の歩行状態として推定する(S15)。
推定部16は、推定対象の歩行者の3軸加速度時系列データが終了するまで、2歩1周期の単位で、上述の歩行状態の推定処理を繰り返す(S16“No”)。推定部16は、入力部11が入力した全ての3軸加速度時系列データに対して歩行状態の推定を行った場合、歩行状態の推定処理を終了する(S16“Yes”)。
このように、本実施例における移動体端末10は、第1の算出部14が歩行状態表現係数Cq,q´を用いて歩行状態ごとに算出した第1の重心加速度のうち、第2の算出部15が算出した第2の重心加速度に対応するものを特定することにより歩行状態を推定する。このため、本実施例における移動体端末10によれば、歩行状態ごとの歩行状態表現係数Cq,q´を用いて、歩行者の歩行状態を高精度に推定することができる。また、本実施例における移動体端末10によれば、歩行周期を特定することで3軸加速度時系列データの計測時間内の歩行者の歩数を高精度に計数することができる。
従来、波形の振幅や周期に複数の閾値を設定することにより、歩行者の歩数や歩容を推定する技術においては、加速度センサ等のデバイスや歩行時の加速度等の波形の性質に対する多くのノウハウに依存している。これに対して、本実施例における移動体端末10は、学習済みの歩行状態表現係数Cq,q´を用いることにより、ノウハウに寄らずに高精度に歩行状態を推定することができる。また、従来技術では、多数の3軸加速度時系列データを収集しても歩行状態の推定の精度を効率良く高めることは困難であるが、本実施例の移動体端末10によれば、収集したデータを利用して学習することにより推定の精度を効率よく高めることができる。
また、従来は、加速度センサの揺れや、ノイズ等によって歩行状態を高精度に検出することが困難な場合があった。例えば、加速度センサを歩行者の身体のどの位置に設置するかによって、3軸加速度時系列データの波形が異なり、歩数や歩容を高精度に推定することが困難な場合があった。本実施例における移動体端末10によれば、歩行者がどのように移動体端末10を携帯する場合であっても、高精度に歩行状態を推定することができる。
図18は、移動体端末10の携帯について説明する図である。本実施例では移動体端末10をスマートフォンとした例を説明したが、移動体端末10を歩数計や腕時計等のウェアラブルな装置とする構成を採用しても良い。図18に示すように、歩行者は、移動体端末10を腰に固定したり、リストに装着したりすることにより、携帯する。
また、歩行者は、移動体端末10をズボンのポケットに入れて携帯しても良い。図5に示したように、歩行者の重心は腰付近にあるため、移動体端末10を腰に固定した場合は、3軸加速度時系列データの波形は歩行運動と一致する。このような3軸加速度時系列データから算出された歩行加速度の重力方向成分を表す時系列データは、図11のように明確な周期性をもつ。一方、歩行者が移動体端末10をズボンのポケットに入れて携帯した場合は、3軸加速度時系列データの波形は、歩行運動による加速度の他に、ポケットの揺れの影響を受ける。図19は、身体重心加速度の重力方向成分を表す時系列データの他の一例を示す図である。図19に示す身体重心加速度の重力方向成分を表す時系列データは、移動体端末10が歩行者のズボンのポケットの中にある場合に計測した3軸加速度時系列データから、学習部13が算出したものである。図19に示すように、身体重心加速度の重力方向成分を表す時系列データの波形がいびつな山形となっている。従来技術においては、このようないびつな波形から歩数を高精度に推定することが困難であった。
しかしながら、図19に示す波形も、2歩1周期で周期的に変化している。本実施例の移動体端末10では、加速度の値が閾値を超えたか否かではなく、3軸加速度時系列データの波形の周期によって歩行状態を推定するため、波形の形状がいびつであっても、高精度に歩行状態を推定することができる。
また、本実施例における移動体端末10は、歩行者の3軸加速度時系列データから、身体重心加速度の重力方向成分、左右成分、または前後成分を算出する歩行状態表現係数Cq,q´を算出する。歩行状態表現係数Cq,q´の一例は変換行列である。このため、移動体端末10は、1の3軸加速度時系列データから、学習済みの歩行状態表現係数Cq,q´(変換行列)ごとの複数の第1の加速度を算出することができ、高精度に歩行状態を推定することができる。
また、本実施例における移動体端末10の学習部13は、3軸加速度時系列データを離散フーリエ変換して得られるDFT係数Xq、YqおよびZqを、身体重心加速度の重力方向成分のDFT係数Pqへと変換する歩行状態表現係数Cq,q´(変換行列)を算出する。このため、推定フェーズにおいて、歩行状態表現係数Cq,q´(変換行列)から求めたDFT係数Pqを逆離散フーリエ変換することにより、身体重心加速度の重力方向成分を表す時系列データを算出することができる。また、データ間の周期が一致すると波形が一致するという離散フーリエ変換の特性を利用することにより、学習に用いた3軸加速度時系列データと、歩行状態を推定する対象の歩行者の3軸加速度時系列データの周期性を高精度に比較することができる。
また、本実施例における移動体端末10によれば、歩行状態ごとの複数の3軸加速度時系列データを収集する際に歩数を計数(カウントアップ)することにより、抽出部12が一定の歩行周期で歩行している区間を抽出する。このため、学習部13が、歩行状態ごと歩行状態表現係数Cq,q´算出するにあたり、所定の歩行条件に一致した学習データを使用することにより、学習の精度を高めることができる。
また、本実施例における移動体端末10は、予め設定された2歩1周期に相当する時間長の上限および下限の範囲内で、第1の重心加速度の波形と、第2の重心加速度の波形とが最も近似する区間を、歩行者の2歩1周期の時間長と推定する。また、推定部16が当該推定の処理を繰り返すことにより、歩行者の歩行状態を2歩1周期ごとに推定する。このように歩行者の歩行周期を仮定して、第1の重心加速度の波形と、第2の重心加速度の波形とを比較することにより、効率的に歩行状態を推定することができる。
本実施例では、身体重心加速度の重力方向成分の時系列データを用いて歩行周期の推定を行ったが、これに限らない。歩行者が規則的なリズムで歩行している場合、歩行運動の加速度は、重力方向だけでなく、左右方向、前後方向にも周期的に変化する。このため、身体重心加速度の左右方向成分、または前後方向成分の時系列データを用いて歩行周期の推定を行う構成を採用しても良い。
また、本実施例ではローパスフィルタとバンドパスフィルタの両方を適用して身体重心加速度の重力方向成分を表す時系列データを算出しているが、いずれか一方のフィルタによって算出する構成を採用しても良い。
また、本実施例では第1の算出部14および第2の算出部15は、奇数のサンプル数2n+1ごとに歩数の演算をするとして説明したが、これは一例であり、2n等の偶数のサンプル数を演算対象としても良い。また、本実施例では第1の算出部14および第2の算出部15が、歩行者の3軸加速度時系列データから、2歩分に相当する区間を仮定する構成を採用したが、推定部16が2歩分に相当する区間を仮定する構成を採用しても良い。
また、本実施例では歩行者が2歩歩くのに要する時間は840ms〜1640msとして2歩1周期に相当するサンプル数の範囲を設定したが、これに限らない。例えば、歩行者が2歩歩くのに要する時間は700ms〜1400msとしても良い。
また、本実施例では、第1の算出部14および第2の算出部15は、2歩1周期分と仮定したサンプル数ごとに第1の加速度および第2の加速度を算出して推定部16に送出しているが、これに限らない。例えば、第1の算出部14および第2の算出部15は2歩1周期ごとに区切らずに、入力部11から取得した全サンプルを対象として第1の加速度および第2の加速度を算出して推定部16に送出する構成を採用しても良い。当該構成を採用する場合、推定部16は取得した第1の加速度および第2の加速度を2歩1周期分または6歩1周期分と仮定したサンプル数ごとに区切って評価値rを算出することで、上述した歩行状態の推定を行う構成を採用しても良い。
また、本実施例では、推定部16は、計測時刻の早いデータから時系列に歩行状態を推定するように説明したが、これに限らない。例えば、3軸加速度センサ2が計測した3軸加速度時系列データを記憶部20が記憶し、計測終了後に最新の2歩分から推定部16が歩行状態を推定する構成を採用しても良い。当該構成を採用する場合、第1の算出部14および第2の算出部15は最新の計測データから、計測時刻がより過去のデータへ遡って、2歩1周期分ずつの第1の加速度および第2の加速度を算出する構成を採用しても良い。
(変形例1)
上述の実施例では、推定フェーズにおいて、2歩1周期ごとに第1の加速度と第2の加速度とを比較することにより歩行周期を2歩1周期ずつ順に確定したが、これに限らない。本変形例では、歩行周期の確定を先送りすることにより、より高精度に歩行周期を推定する。
図20は、本変形例にかかる連続する歩行周期の長さの推定を説明する図である。図20のt1、t2、t3は、それぞれ2歩1周期の歩行周期の長さを示す。また、t1、t2、t3にかかる歩行周期は連続するものとする。言い換えれば、t1、t2、t3は、歩行者が連続する6歩(2歩1周期×3セット)を歩く際に要する時間の長さである。また、系列1〜8は、歩行周期の組み合わせのパターンを示す。図20において、nはサンプル数を表す1以上の自然数である。2n+1は、2歩1周期に相当するサンプル数を示す。
第1の算出部14および第2の算出部15は、6歩3周期分と仮定したサンプル数の3軸加速度データから、歩行周期の組み合わせのパターンごとの第1の加速度を第2の加速度とを算出する。例えば、図20の系列1は、6歩3周期中の最初の2歩1周期に相当する時間長t1と、2番目の2歩1周期に相当する時間長t2と、3番目の2歩1周期に相当する時間長t3に含まれるサンプル数がそれぞれ“25”である組み合わせである。これに対して系列2は、t1とt2に含まれるサンプル数はそれぞれ“25”であるが、t3に含まれるサンプル数は“29”である組み合わせである。言い換えれば、系列1では歩行者はt1〜t3の間、2.0Hzの歩行周期で歩行しているのに対し、系列2では歩行者はt3から歩行周期を1.7Hzに変化させている。
第1の算出部14は、2歩1周期3セット分の組み合わせのパターンごとの第1の加速度を、歩行状態表現係数Cq,q´とそれぞれ対応付けて推定部16に送出する。また、第2の算出部15は、2歩1周期3セット分の組み合わせのパターンごとの第2の加速度を、推定部16に送出する。
図20では、2歩1周期に相当するサンプル数2n+1が“25”または“29”のいずれかである場合を例として系列1〜8の8つの組み合わせパターンを示したが、これに限らない。例えば、歩行者が2歩歩くのに要する時間が840ms〜1640msである場合、3軸加速度センサ2が40msごとに計測をすると、2歩分に相当するサンプル数の下限は“21”、上限は“41”となる。この場合、2歩1周期に相当するサンプル数2n+1は“21,23,・・・,39,41”となる。この場合、サンプル数の種類は11種類となるので、2歩1周期3セット分の組み合わせは165パターンとなる。
推定部16は、上述の式(5)を用いて、2歩1周期3セット(6歩)分の第1の加速度と第2の加速度の時系列の波形の差を算出し、その差が最小となる組み合わせパターンを選択する。推定部16は、選択した組み合わせパターンのt1のサンプル数を、当該6歩中の最初の2歩1周期の周期長として推定する。例えば、系列2の組み合わせにおいて、第1の加速度と第2の加速度の時系列の波形の差が最小となる場合、推定部16は、最初の2歩1周期の周期長を1000.0ms(40ms×25サンプル数)と推定する。また、推定部16は、選択した第1の加速度に対応付けられた歩行状態表現係数Cq,q´を、最初の2歩1周期の歩行状態として推定する。
t1のサンプル数が確定すると、第1の算出部14および第2の算出部15は、t1の次のサンプルデータから、2歩1周期3セット分の組み合わせのパターンごとの第1の加速度および第2の加速度を算出する。例えば、推定部16がt1に相当するサンプル数2n+1が“25”と推定し、データ範囲がサンプルの1番目から25番目(1≦n≦25)であるとする。この場合、第1の算出部14および第2の算出部15は、26番目のサンプルデータから開始する6歩3周期を対象として、第1の加速度および第2の加速度を算出する。第1の算出部14および第2の算出部15は、26番目以降のサンプルデータから算出した、2歩1周期3セット分の組み合わせのパターンごとの第1の加速度および第2の加速度を、推定部16に送出する。
推定部16は、上述のように、第1の加速度と第2の加速度の時系列の波形の差が最小となる組み合わせパターンを選択することによって、取得した2歩1周期3セット分の第1の加速度および第2の加速度のうち、最初の2歩1周期の周期長を推定する。第1の算出部14、第2の算出部15および推定部16は、入力部11が入力する3軸加速度データが終了するまで、上述の処理を繰り返して、歩行者の歩行状態を推定する。
本変形例の推定部16は2歩1周期3セット分の組み合わせのパターンごとの第1の加速度および第2の加速度を比較した結果から、最初の2歩1周期の歩行周期長を推定する。言い換えれば、本変形例の推定部16は、第1の算出部14および第2の算出部15が3セット分の第1の加速度および第2の加速度を算出するまで歩行周期の確定を先送りする。
このように、本変形例における移動体端末10によれば、連続する複数周期の歩行周期長の組み合わせを考慮して歩行周期を推定するため、より高精度に歩行周期を推定することができる。
なお、本変形例では推定部16は2歩1周期3セット(6歩3周期)ごとに第1の加速度と第2の加速度とを比較するとしたが、6歩3周期に限らず、複数周期分であれば良い。
(変形例2)
上述の実施例では、歩行状態の推定を、歩行者が携帯する移動体端末10が行う構成を採用したが、これに限らない。例えば、移動体端末10の3軸加速度センサ2が計測した3軸加速度時系列データを、サーバ等の外部の情報処理装置が受信して歩行者の歩行状態を推定する構成を採用しても良い。
図21は、本変形例にかかる歩行状態推定システム200の全体構成を示す図である。図21に示すように、本変形例にかかる歩行状態推定システム200は、移動体端末10とサーバ100からなる。移動体端末10のハードウェア構成は、図3で説明した実施例と同様である。サーバ100は、CPU、メモリ、ハードウェア等の一般的なハードウェア構成を備える情報処理装置である。サーバ100は、ネットワークNを介して移動体端末10と相互に接続する。ネットワークNは、有線や無線を問わず、例えば、インターネットなどのWAN(Wide Area Network)である。図21では1台のサーバ100に対して1台の移動体端末10が接続する例を示すが、1台のサーバ100に対して複数の移動体端末10が接続する構成を採用しても良い。
サーバ100は、図4で説明した実施例の移動体端末10の各機能部(入力部11、抽出部12、学習部13、第1の算出部14、第2の算出部15、推定部16、記憶部20)を備える。サーバ100の入力部11は、移動体端末10の3軸加速度センサ2が計測した歩行者の3軸加速度時系列データを、ネットワークNを介して受信する。サーバ100の各機能部(入力部11、抽出部12、学習部13、第1の算出部14、第2の算出部15、推定部16、記憶部20)は図16のフローチャートで説明した学習フェーズの処理および図17のフローチャートで説明した推定フェーズの処理を行い、歩行者の歩行状態を推定する。
当該構成を採用した場合、歩行者の歩行状態の推定結果をサーバ100で集中管理することができる。サーバ100が歩行者の歩行状態の推定結果を集中管理することで、例えば、移動体端末10を携帯した作業者の歩行状態をサーバ100で監視して、作業者の体調等の管理をすることができる。
あるいは、学習フェーズと推定フェーズとをそれぞれ異なる装置で行う構成を採用しても良い。例えば、サーバ100は、図16のフローチャートで説明した学習フェーズの処理を行う。そして、サーバ100は、算出した学習結果である、歩行状態表現係数Cq,q´を、歩行条件と対応付けて、ネットワークNを介して移動体端末10に送信する。移動体端末10は、図17のフローチャートで説明した推定フェーズの処理を行い、歩行者の歩行状態を推定する。当該構成を採用する場合、例えばサーバ100は入力部11、抽出部12および学習部13を備える構成を採用しても良い。また、移動体端末10は、入力部11、第1の算出部14、第2の算出部15、推定部16、記憶部20を備える構成を採用しても良い。
当該構成を採用する場合、学習用の多数の3軸加速度時系列データから歩行状態表現係数Cq,q´を算出する学習フェーズの処理をサーバ100等の計算資源の豊富なコンピュータで実行することにより、より多くのデータを用いて学習することができる。このため、当該構成の歩行状態推定システム200によれば、より高精度に歩行者の歩行状態を推定することができる。また、当該構成を採用する場合、サーバ100が算出した歩行状態表現係数Cq,q´を複数の移動体端末10に送信して推定処理に用いることができるため、より効率的に学習結果を活用することができる。
また、サーバ100の学習結果を移動体端末10に入力した後は、サーバ100と移動体端末10とはネットワークNによる接続を解消する構成を採用しても良い。また、装置同士がネットワークNで接続するのではなく、サーバ100が算出した学習結果を移動体端末10の生産前に記憶装置3に予め保存する構成を採用しても良い。
また、図3に示した各装置の各構成は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、任意の単位で分散または統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、実施例および変形例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。