(第1の実施形態)
以下、第1の実施形態における携帯電話端末及びその制御方法について、図面を参照しながら説明する。本実施形態では、運動体である人(ユーザ)が携帯電話端末を携帯している場合を想定する。
図1に示すように、本実施形態における携帯電話端末10は、アンテナ101、RF(Radio Frequency)部102、メインマイコン103、サブマイコン104、ボタン10
5、ディスプレイ106、タッチパネル107、ROM(Read Only Memory)108、RAM(Random-Access Memory)109、加速度センサ110、角速度センサ111を備える。ただし、本実施形態に開示された技術は、携帯電話端末10に限定されず、情報処理装置一般に適用できる。
携帯電話端末10は、アンテナ101を経由して基地局等の外部の無線送受信装置(図
示せず)と無線通信を行う。RF部102は、外部の無線送受信装置との送受信において、送信時にベースバンド信号を周波数帯(RF帯)に変調し、受信時にこれらの周波数帯の信号をベースバンド信号に復調する。
メインマイコン103は、ROM108に記憶された制御プログラム108aを実行して、携帯電話端末10が有する各種機能を実現する。サブマイコン104は、加速度センサ110及び角速度センサ111のセンサ出力を演算処理し、携帯電話端末10のユーザの座標系、すなわちグローバル座標系の加速度や角速度に変換する。
ボタン105は、ユーザが携帯電話端末10の操作に使用するハードウェアキーである。ディスプレイ106は、携帯電話端末10において実行される各種処理の結果等の種々の情報を表示する。また、ディスプレイ106は、メインマイコン103やサブマイコン104により実行される種々の処理の処理結果や処理状態、コンテンツ等を表示する。タッチパネル107は、ユーザのタッチ操作等を受け付ける。タッチパネル107はディスプレイ106と重なるように配置されている。ユーザは、タッチパネル107を指等でタッチ操作等することで、ディスプレイ106に表示されたアイコン等の表示項目の選択等を行う。
ROM108は、携帯電話端末10において実行される各種プログラムを格納する。RAM109は、メインマイコン103やサブマイコン104が種々の処理を実行する際に一時的な記憶領域として使用される。すなわち、RAM109はワークエリアとして用いられ、各種プログラムや端末番号等の携帯電話端末の固有情報が格納される。また、RAM109には、ユーザが入力した設定やプログラムの情報、ディスプレイ106等を介してユーザに提供されるデータ等が格納される。
メインマイコン103は、高速演算処理を実行することができるが、消費電力が大きい。したがって、常時動作状態に保つことは好ましくないため、メインマイコン103の動作時間には一定の制限が課せられ、一時的に休止状態に移行される。ところで、ユーザの動作状態を判定する場合、ユーザの動作データを常時取得し、取得した動作データに基づいて動作状態を判定する。
そこで、本実施形態では、サブマイコン104は、少なくともユーザの動作が発生している間は動作状態に保たれ、加速度センサ110や角速度センサ111のセンサ出力を受け取り、センサ出力を演算処理してグローバル座標系の加速度データを生成する。サブマイコン104は、四則演算等の単純な演算処理やROM108やRAM109等のメモリへのアクセス処理等の処理負荷が低い処理を実行する。
したがって、メインマイコン103は、必要な場合に動作状態にされ、サブマイコン104が常時もしくは長時間にわたりユーザの動作状態の判定結果に基づいて、ユーザにわかりやすい値に変換したり統計情報を作成したりして、生成した情報をディスプレイ106に表示する。なお、生成した情報は、アンテナ101を介して外部に送信してもよい。
本実施形態では、携帯電話端末10のROM108に記憶されているアプリケーション等が、CPU103によって実行される。このようなアプリケーション等の実行により、図2に示すように、携帯電話端末10は、内積値算出部201、外積算出部202、絶対値算出部203、動作状態特定部204として機能する。ただし、内積値算出部201、外積算出部202、絶対値算出部203、動作状態特定部204のいずれか1つ以上が、ハードウェア回路であってもよい。
次に、本実施形態において、携帯電話端末10のサブマイコン104において実行され
る、ユーザが行った所定の動作を判定する構成、アルゴリズム及び処理について説明する。
図3A及び図3Bは、携帯電話端末を携帯するユーザの姿勢が不明な場合に、加速度センサのセンサ出力から、ユーザの座標系における上下方向(鉛直方向)の加速度情報を取り出す方法の一例を示す図である。ここでは、ユーザが歩行中である場合を想定している。図3Aに示すように、互いに直交するX軸、Y軸、Z軸が携帯電話端末のローカル座標系を構成する。図3Aにおいて、加速度センサのセンサ出力AはA=(x,y,z)Tで
与えられる。なお、Tは転置行列を意味する。そして、図3Aに示すように、加速度センサのセンサ出力Aは、ユーザの歩行に伴う振動Sと重力加速度Gの合成と考えることができる。
ここで、人間の歩行について概説する。図4A及び図4Bは、人間の歩行における体幹と両足の動きを模式的に表す図である。図4Aは、人間の歩行を真上(鉛直上方)から見た図であり、図4Bは、人間の歩行を真横(水平方向)から見た図である。体幹20は、人間の股関節から頭部までの部分に対応し、脚20L、20Rはそれぞれ左脚と右脚に対応する。図4A及び図4Bに示すように、人間は、歩行中、左右の脚20L、20Rが交互に地面に着き、体幹20は上下、左右、前後の各方向にそれぞれ揺れる。また、図4A及び図4Bに示すように、体幹20の上下動の周期は、左右の脚20L、20Rの一方が地面から離れて再び着き、さらに他方が地面から離れて再び着くまでの期間と一致する。一方、体幹20の左右の揺れについては、左脚20Lが地面に着いている間は人間の左方向に揺れ、右脚20Rが地面に着いている間は人間の右方向に揺れる。したがって、人間の歩行時における体幹20の左右の揺れの周期は、上下動の周期の2倍の周期、すなわち1/2の周波数である。
また、人間は、歩行中、左脚20Lまたは右脚20Rを地面に着地させる瞬間が最も下方向の加速度が大きくなる。そして、左脚20Lまたは右脚20Rの着地後、体幹20を上昇させる時に上方向の加速度が発生し、体幹20が到達する最上点で当該上方向の加速度が最小になり、以後は代わりに下方向の加速度が発生する。また、左右方向の加速度については、左脚20Lを着地させると左方向の加速度が発生し、右脚20Rを着地させると右方向の加速度が発生する。
図3A及び図3Bに戻ると、図4A及び図4Bを用いて説明したように、ユーザの歩行に伴う振動Sは、所定の周期の繰り返し運動であるといえる。したがって、加速度センサのセンサ出力Aを、適切なカットオフ周波数のローパスフィルタ(LPF)やハイパスフィルタ(HPF)に通すと、センサ出力Aを振動成分ベクトルSと重力加速度ベクトルGとに分離することができる。歩行に伴う上下方向の加速度は、振動成分ベクトルSにおける重力加速度ベクトルGと平行なベクトルVで表せる。ベクトルVの大きさをvとし、振動成分ベクトルSと重力加速度ベクトルGのなす角をθとすると、vは以下の式で与えられる。
v = |S| cosθ ・・・(1)
ここで振動成分ベクトルSと重力加速度ベクトルGの内積について考える。内積は、ベクトルのx、y、z成分同士を乗算した後に、乗算した各成分の和を求めることで得られる。なお、振動成分ベクトルSと重力加速度ベクトルGの内積は、定義より以下の式で与えられる。
S ・ G = |S| |G| cosθ ・・・(2)
式(2)を式(1)に当てはめると、以下の式(3)が得られる。
v = S ・ G / |G| ・・・(3)
ここで重力加速度ベクトルGの大きさ|G|は、地球上ではほぼ一定である。すなわち、加速度センサのセンサ出力Aに対して、LPFとHPFを通し、各フィルタの出力の内積を取ることでユーザの歩行運動に伴う上方向の加速度に比例した数値と下方向の加速度に比例した数値とを得ることができる。なお、上記では、ユーザが歩行中であることを想定して説明した。しかし、ユーザが歩行以外の動作を行う場合も、上記のアルゴリズムを踏まえて、加速度センサのセンサ出力Aに対して、LPFとHPFを通すことで、振動成分ベクトルと重力加速度ベクトルがそれぞれ得られる。
次に、図5A及び図5Bは、携帯電話端末を携帯するユーザの姿勢が不明な場合に、加速度センサのセンサ出力から、ユーザの座標系における水平方向(左右方向)の加速度情報を取り出す方法の一例を示す図である。ここでも、ユーザが歩行中である場合を想定している。また、加速度センサのセンサ出力Aが、ユーザの歩行に伴う振動成分ベクトルSと重力加速度ベクトルGの合成と考えることは、図3A及び図3Bと同じである。ここで振動成分ベクトルSが、重力加速度ベクトルGに平行なベクトルVと、ベクトルVに直交するベクトルHとの和であると考えると、ベクトルHはユーザの歩行に伴う振動成分ベクトルSの水平方向の成分と考えることができる。
ここで、ベクトルHの大きさ|H|を得ることを目的として、振動成分ベクトルSと重力加速度ベクトルGとの外積を考える。内積と同様、外積も四則演算によって得られるため、サブマイコン104のようにメインマイコン103に比べて処理性能の低いマイコンでも計算することができる。図5Bに示すように、振動成分ベクトルSと重力加速度ベクトルGの外積は定義より、ベクトルS及びGと直交する方向で、ベクトルS及びGによって形成される平行四辺形の面積Zと等しい大きさのベクトルである。すなわち、振動成分ベクトルSと重力加速度ベクトルGの外積は、以下の式(4)で与えられる。
Z = |S × G| ・・・(4)
図5Bに示すように、平行四辺形の面積Zは、|G|×|H|とも記述できる。これを式(4)に当てはめると、以下の式(5)が得られる。
|H| = Z / |G| = |S × G| / |G| ・・・(5)
上記の通り、|G|が地球上ではほぼ一定である。したがって、加速度センサのセンサ出力Aに対して、LPFとHPFを通すことで得られる振動成分ベクトルと重力加速度ベクトルとの外積を取って絶対値を求めれば、歩行に伴う振動の水平成分の大きさに比例した数値を得ることができる。
次に、図6Aは、携帯電話端末を携帯するユーザの姿勢が不明な場合に、加速度センサのセンサ出力から、ユーザの座標系における上下、左右、前後の各方向の加速度情報を取り出す方法の一例を示す図である。ここでも、ユーザが歩行中である場合を想定している。この方法では、図5A及び5Bに示す方法により、振動成分ベクトルSが上下方向及び水平方向に分離されているとする。なお、本方法では、ユーザの歩行が定常状態(等速度運動)に入ると、ユーザの体幹の前後方向の加速度はほとんど発生しないことを利用している。ユーザの体幹の前後方向に加速度が発生しないと考えた場合、図5A及び図5Bにおいて得られる水平方向の加速度|H|は左右方向の加速度の大きさを示している。
さらに、図6Bに示すように、ユーザの体幹のいわゆる矢状面、冠状面、横断面を考えた場合、振動成分ベクトルSは、ユーザの体幹の冠状面に存在する。したがって、振動成分ベクトルSと重力加速度ベクトルGとの外積Fは、ユーザの体幹の前方向(正面側)もしくは後ろ方向(背面側)を向く。外積Fの前後方向は、振動成分ベクトルSの左右方向の向きに依存する。ここで、ユーザの体幹の前方向を向くベクトルKが既知であると仮定
すると、ベクトルFとKとの内積が正である場合、ベクトルFは前方向を向くことがわかる。また、ベクトルFとKとの内積が負である場合、ベクトルFは後ろ方向を向くことがわかる。なお、ベクトルFが前方向を向く場合は、振動成分ベクトルSは、ユーザの体幹の右方向(右手側)を向く。また、ベクトルFが後ろ方向を向く場合は、振動成分ベクトルSは、ユーザの体幹の左方向(左手側)を向く。
さらに、以下の式(6)により、ユーザの体幹の左右方向の加速度について、右方向と左方向とを区別することが可能となる。
h = sign(F・K) |H| ・・・(6)
ここで、「sign(F・K)」は、ベクトルFとベクトルKとの内積の正負を示す。したがって、式(6)により|H|に内積の符号を付加することで、ベクトルHがユーザの体幹の右方向の加速度ベクトルであるか左方向の加速度ベクトルであるかがわかる。
次に、図7は、携帯電話端末を携帯するユーザの姿勢が不明な場合に、加速度センサのセンサ出力から、ユーザのグローバル座標系における上下、左右、前後の各方向の加速度情報を具体的な値と共に取り出す方法の一例を示す図である。ここでも、ユーザが歩行中である場合を想定している。図6A及び図6Bに示す例では、定常状態においては前後方向の加速度は発生しないと想定した。しかし、図7に示す例では、高分解能の加速度センサを用いることで、前後方向の加速度における微細な変動も検出することができる。
ここで、図4A及び図4Bに示すように、前後方向の変動は上下方向の変動と同期している。そして、下方向に加速するときは前方向に、上方向に加速するときは後ろ方向に加速している(下前と上後ろと考えてもよい)。さらに、左右方向の変動の周期は上下方向及び前後方向の変動周期の2倍である。そこで、この特性を利用し、図7に示す例では、バンドパスフィルタを用いて加速度センサのセンサ出力を、前後方向の加速度と上下方向の加速度が主となるベクトルS1と左右方向の加速度に若干の前後方向の加速度が含まれ
るベクトルS2に分離する。さらに、適当な外積演算により前後方向の加速度と左右方向
の加速度を、いずれも正負が不明である状態で抽出する。前後方向の加速度と左右方向の加速度の正負は、抽出した前後方向の加速度ベクトルと左右方向の加速度ベクトルについて、上下方向の加速度ベクトルとの位相差を用いることで決定することができる。
上記の加速度センサのセンサ出力を利用する方法は、携帯電話端末を携帯するユーザの姿勢が不明な状態で、加速度センサから得られる加速度情報をグローバル座標系における各軸方向の加速度情報に分離する。ところで、センサによって得られる動作情報としては、加速度の他に角速度がある。角速度情報は、角速度センサ(ジャイロ)を用いることで取得できる。しかし、角速度センサのセンサ出力から得られる角速度情報も、上記の加速度情報と同様に、センサ出力そのものからはグローバル座標系におけるどの軸周りの値であるかは不明である。そこで、角速度センサのセンサ出力をユーザのいわゆるピッチ軸、ロール軸、ヨー軸の各軸周りの角速度に変換する。なお、一般に、端末内において加速度センサの検出軸と角速度センサの検出軸は一致するように取り付けられているため、本実施形態でも各検出軸は一致していると想定する。仮に各検出軸が一致していない場合は、あらかじめ適当な校正手段によって2つの検出軸のずれを計測し、計測したずれに応じた座標変換行列をいずれかのセンサの出力値に施せば、各検出軸が一致しているものとして各センサ出力を扱うことができる。
携帯電話端末内の角速度センサのセンサ座標系Σ1について、互いに直交するXYZの3軸を設定し、センサ座標系Σ1におけるX軸、Y軸、Z軸の各軸方向の角速度センサのセンサ出力値をそれぞれxr、yr、zrとする。また、携帯電話端末を携帯するユーザの座標系、いわゆるグローバル座標系Σ2について、互いに直交するピッチ軸、ロール軸、ヨー軸の3軸を設定し、グローバル座標系Σ2におけるピッチ軸ロールY軸、ヨー軸の
各軸方向の角速度センサのセンサ出力値をそれぞれp、r、yとする。
そして、角速度センサのセンサ出力の値SL(=(xr、yr、zr)T)を、ユーザ
のピッチ軸、ロール軸、ヨー軸周りの角速度SG(=(p、r、y)T)に変換すること
は、センサ座標系Σ1からグローバル座標系Σ2への座標変換を行うことと等価である。ここで、SLからSGへの変換は、座標系Σ1及びΣ2の座標変換行列Rを用いてY=RXを演算すればよい。ここでRは3×3行列で、以下の行列で表される。
座標変換行列Rの各要素a00〜a22は、上記2座標系の各軸についての相対角度を適当な三角関数を用いた演算を通して得ることができる。なお、この演算は周知のものであるため、ここでは詳細な説明は省略する。ただし、上述の通り、三角関数等の演算をサブマイコンで行うことは望ましくない。そこで、センサ座標系Σ1から見たΣ2のXYZ各軸の向きをそれぞれ単位ベクトルex、ey、ezで表したとする。するとベクトルex、ey、ezの各要素は、座標変換行列Rの各要素を用いてex=(a00、a01、a02
)T、ey=(a10、a11、a12)T、ez=(a20、a21、a22)Tと表現す
ることができる。すなわち、ベクトルex、ey、ezが分かりさえすれば、角速度センサ
のセンサ出力の値から、グローバル座標系におけるピッチ軸、ロール軸、ヨー軸の各角速度に変換することができる。
図8に、本実施形態における携帯電話端末10のサブマイコン104が有する回路の一部を示す。図9Aに示すように、加速度センサ110のセンサ出力Aは、LPF104cとHPF104dに入力される。上述の通り、LPF104cからは重力加速度ベクトルGが出力され、HPF104dからは振動成分ベクトルSが出力される。
また、図8に示すように、サブマイコン104は、外積演算処理部104e、乗算処理部104f、LPF104g、符号判定部104h、内積演算処理部104iを有する。外積演算処理部104eは、LPF104cから出力されるベクトルGとHPF104dから出力されるベクトルSの外積を求める。乗算処理部104fは、外積S×Gに+1又は−1の係数を乗算する。また、LPF104gは、乗算処理部104fの出力の平均値を求める。外積S×Gは、前後方向のベクトルであるから、乗算処理部104fで係数+1又は−1を乗算すると、前後方向のうちの1方向のベクトルを求めることができる。したがって、LPF104gからは、前後方向のうちの1方向のベクトルが出力される。そして、内積演算処理部104iが、その前後方向のうちの1方向のベクトルと外積演算処理部104eから出力される外積S×Gとの内積を求める。
内積演算処理部104iにおいて、内積の符号は、外積S×Gが前方向(すなわち、振動成分ベクトルSが右方向)であれば+1となり、外積S×Gが後ろ方向(すなわち、振動成分ベクトルSが左方向)であれば−1となる。よって、この符号を符号判定部104hで検出し、+1又は−1を乗算処理部104fに送ることで、LPF104gからは前方向を示すベクトルHが得られる。なお、ここでは便宜上、ベクトルHは「前」方向を示すベクトルであるとしているが、乗算処理部104f、LPF104g、符号判定部10
4h、内積演算処理部104iのループにおける初期値の設定次第では、ここで説明した「前」方向は「後ろ」方向を示す可能性もある。以下の説明では、LPF104gから出力されるベクトルHの方向は、グローバル座標系Σ2のロール軸(Y軸)における前方向であるとする。
ところで、LPF104cから出力されるベクトルGの方向は、グローバル座標系Σ2のヨー軸(Z軸)方向に等しい。内積演算処理部104jは、LPF104cから出力されるベクトルGと角速度センサ111のセンサ出力の値Xとの内積を演算する。当該内積は以下の式(7)で与えられる。
G・X = |G|ez・X = g y ・・・(7)
ここでgは重力加速度の大きさであり、地上ではほぼ一定値である。そのため、内積演算処理部104jの出力値は、ヨー軸周りの回転の角速度を定数倍したものと等しい。したがって、内積演算処理部104jにおける式(7)により、ヨー軸周りの角速度が算出される。
次に、前方向ベクトルHはセンサ座標系から見た前方向の単位ベクトルeyと適当な実
数k1を用いて式(8)のように表せる。
H = k1 ey ・・・(8)
|H|は、ベクトルSの方向や大きさに依存するためk1は一定値ではない。しかしLP
F104gの時定数を十分大きくすることで、LPF104gから出力されるベクトルHの大きさは、平均化されて所定の短時間において一定値になるとみなせる。このベクトルHと角速度センサ111のセンサ出力の値Xの内積を計算すると、以下の式(9)が得られる。本実施形態では、内積演算処理部104mが式(9)の演算を行う。
H・X = k1 ey・X= k1 r ・・・(9)
すなわち、短時間的には、式(9)により得られる内積値は、グローバル座標系Σ2におけるロール軸周りの角速度の大きさに比例すると考えられる。ただし、k1がほぼ一定値
であるとみなすことはできても、実際の角速度の大きさは不明である。そこで、本実施形態では、ロール軸周りの角速度の正負を角速度に関連した値として利用して、ユーザの動作を判定する。詳細については後述する。
さらに、前方向ベクトルHと重力加速度ベクトルGとの外積Kを考えると、外積Kは、グローバ座標系における右方向もしくは左方向を示すベクトルである。本実施形態では、外積演算処理部104kにより外積Kが算出される。なお、そこで、外積Kと角速度センサ111のセンサ出力の値Xとの内積を取ると、以下の式(10)が得られる。本実施形態では、内積演算処理部104lが式(10)の演算を行う。
K・X = k2 ex・X = k2 p ・・・(10)
したがって、式(10)により得られる内積値は、グローバル座標系Σ2におけるピッチ軸周りの角速度に関連した値を取り出すことができる。
次に、本実施形態において、サブマイコン104において算出された、ヨー軸周りの角速度、ロール軸周りの角速度に関連した情報、ピッチ軸周りの角速度に関連した情報を用いて、携帯電話端末10を携帯するユーザの種々の動作を判定する処理例について説明する。
図9Aは、図8に示す回路により得られたヨー軸周りの角速度ωyを用いて、屋内ナビゲーションを行う例においてサブマイコン104で実行される処理のフローチャートを示す。なお、以下の説明ではステップをSと略記する。屋内ナビゲーションで重要なことは、図9Bに示すように、適当な基点を取り、基点を原点Oとして設定したXY座標におけるユーザUの相対位置(x,y)を知ることである。ユーザUの位置が分かれば、屋内の
どこにいるかがわかり、適切なナビゲーションサービスを提供することができる。図9Aに示すフローチャートのS101〜S109の処理は、適当なサンプリングタイム(ΔT)毎に繰り返し呼ばれるループである。なお、当該サンプリングタイムは、ユーザの歩行周期に対して短いサイクルで1ループが完了するように適宜設定される。
S101では、サブマイコン104は、ユーザのヨー軸周りの各速度ωyを取得する。次いで処理はS102に進む。S102では、サブマイコン104は、周知の手段により、ユーザUが前を向いている方向を特定できたかどうかを確認する。これは例えば、屋内の特定の扉からユーザUが入退室したことやユーザUが廊下を歩いていることをRFID等の外部装置を用いて検知し、検知結果と地図情報とをマッチング処理等することによって、ユーザUが現在どの方向を向いているか、すなわち図9Bに示す現在の方位θを推定できる。推定に成功した場合(S102:Y)、サブマイコン104は、推定方位を現在の方位θとみなす(S103)。推定に失敗した場合(S102:N)、サブマイコン104は、現在の方位θに対し、上記のサンプリング期間ΔT内における角速度の積分値を加算する(S104)。S103、S104の処理が終了すると、処理はS105に進められる。
S105では、サブマイコン104がユーザUの現在の歩数を算出する。S105の処理では、携帯電話端末10が外部装置である歩数計の計算結果を取得して、サブマイコン104がその計算結果を利用する。次いで、処理はS106に進められる。S106では、S102と同様、周知の手段により、ユーザUの現在位置を推定できたかどうかを確認する。ユーザの現在位置の推定に成功した場合(S106:Y)、処理はS107に進められて推定位置を現在位置とみなす。ユーザの現在位置の推定に失敗した場合(S106:N)、処理はS108に進められ、サブマイコン104は、S105において計算結果を取得した歩数計の歩数がカウントアップされたか否かを判定する。サブマイコン104は、歩数計がカウントアップされたと判定した場合(S108:Y)、ユーザUの1歩にかかる移動距離Lを基に、現在位置(x、y)を更新する(S109)。ここで、移動距離Lは、ユーザUの身長等を基に算出してもよいし、S107の処理における推定位置と現在位置との差分を用いて適宜推定してもよい。したがってS104やS109の処理により、ユーザの方位推定(S102)や位置推定(S106)が成功しない場合でも、ユーザのヨー軸周りの角速度を用いて、これらの方位や位置を推定することができる。
次に、図10に、ユーザが台車を押しているか現在歩行中であるか歩行していないかをそれぞれ判定するフローチャートを示す。一般に、人間が台車やベビーカー等の運搬車を押しているときは、両手を運搬車に固定して移動するため、通常の歩行に比べて当該人間のヨー軸周りの回転、すなわち角速度が小さくなる傾向がある。そこで、図10に示す処理により、ユーザが台車を押しているか現在歩行中であるか歩行していないかを判定する。
S201では、サブマイコン104は、ユーザのヨー軸周りの各速度ωyを取得する。次いで処理はS202に進められる。S202において、サブマイコン104は、加速度センサ110等を用いてユーザが現在歩行中であるか否かを判定する。この判定処理は、外部の歩数計等の計算結果を用いることで得られ、周知の処理であるため詳細な説明は省略する。サブマイコン104は、ユーザが現在歩行中でないと判定した場合(S202:N)、台車押しの確度の値cartを0にして(S210)、非歩行と判定する(S211)。
一方、サブマイコン104は、S202において歩行中であると判定した場合(S202:Y)、ヨー軸周りの角速度ωyの絶対値が所定の閾値よりも大きいか否かを判定する。角速度ωyの絶対値が所定の閾値よりも大きい場合(S203:Y)、サブマイコン1
04は、台車押しの確度をN1だけ上げる(S204)。S205、S206では、サブマイコン104は、台車押しの確度が所定の値N2より大きくならないよう制限する処理を行う。さらに、S207、S208では、サブマイコン104は、台車押しの確度が0でない値を取る場合、台車押しの確度をデクリメントする。そして、サブマイコンは、台車押しの確度が所定の閾値N3より大きいか否かを判定し(S209)、台車押しの確度がN3より大きければ(S209:Y)台車押しと判定し(S213)、台車押しの確度がN3以下であれば(S209:N)歩行中と判定する(S212)。以上の処理により、ユーザのヨー軸周りの角速度ωyに基づいて台車押しの確度の値を所定の範囲内(0〜N2)で推移させることで、ユーザが台車を押しているか現在歩行中であるか歩行していないかを判定することができる。
次に、図11Aに、ユーザの歩行状態、具体的には歩行時の体の左右のバランスを診断するフローチャートを示す。なお、本フローチャートを実行するにあたり、事前にユーザが歩行中か否かの判定がなされており、サブマイコン104は、ユーザが歩行中であると判定された場合に本フローチャートを実行する。また、本フローチャートは、所定のサンプリング間隔で繰り返し実行される。
S301では、サブマイコン104は、図8に示すようにユーザのロール軸周りの角速度ωrに関連する情報を算出する。ここで「関連する」とは、具体的には、上述の通り、角速度ωrの値は実際のロール軸周りの角速度ではなく、実際のロール軸周りの角速度を定数倍したものであるという意味である。なお、以下では、便宜上角速度ωrに関連する情報を角速度ωrとして説明する。次いで処理はS302に進められる。
S302では、サブマイコン104は、現在の角速度ωrと1サンプリング前の角速度ωr'との積が負であるか否かを判定する。なお、ωr'は後述のS310にて代入される値であるが、ωr'の初期値は適宜設定することができる。S302の処理においてωr
×ωr'が負であるということは、図11Bに示すように、ωrの時間変化を示すグラフ
がゼロクロスしている(ωrの値の符号が変化する)ことを意味する。そこで、図11Bに示すようにωrの半周期分の総和、すなわち中心からの移動量と関連する数値をsumとして、当該グラフがゼロクロスしない(S302:N)間はsumにωrを加算し続ける(S309)。
図11Bに示すように、周期によってはsumが負の値として積算される場合があるので、グラフがゼロクロスしたときに(S302:Y)、サブマイコン104は、S303でsumの値を正にした後、半周期前の総和sum'との比を取ってバランスを算出する
(S305、S306)。なお、サブマイコン104は、S304でsumとsum'の
大きさを判定し、大きい値を小さい値で除算することで、バランスは常に1より大きな値として算出される。したがって、算出された値が1に近づくほど、歩行時における体の左右のバランスがよいといえる。
本フローチャートでは、バランスを算出した後、次回バランス算出のために現在の総和sumを前総和sum'に代入し(S307)、現在の総和sumにはS301において
得られたωrを代入する(S308)。以上の処理により、ユーザのロール軸周りの角速度に関連する情報の時間変化の周期を利用することで、ユーザの歩行時の体の左右のバランスを診断することができる。なお、上記の処理例では、半周期分の総和を求めているが、総和を求める時間範囲は半周期に限らず適宜決めることができる。また、上記の処理例では、総和の比に基づいて歩行時の体の左右のバランスを算出しているが、図11Bに示すように、グラフの最大値の比(h/h')や時間の比(t/t')に基づいてバランスを算出する構成としてもよい。
次に、図12Aに、ユーザの歩行時に転倒しそうになる等の異常状態が発生したか否かを判定するフローチャートを示す。なお、本フローチャートを実行するにあたり、事前にユーザが歩行中か否かの判定がなされており、サブマイコン104は、ユーザが歩行中であると判定された場合に本フローチャートを実行する。また、本フローチャートは、所定のサンプリング間隔で繰り返し実行される。
図12Bは、携帯電話端末10のローカル座標系におけるx軸とユーザのグローバル座標系におけるピッチ軸とを合わせて、ユーザが歩行した際に転倒しそうになったときのx軸周りの角速度の時間変化を示すグラフである。図に示すように、異常状態が発生する、すなわちユーザが転倒しそうになると、それまでの歩行状態における角速度の変化に比べて角速度が特徴的な変化を示すことがわかる。そこで、サブマイコン104は、図12Aに示すフローチャートを実行することで、ユーザの歩行中に異常状態が発生したか否かを判定することができる。なお、図12Bでは、説明の便宜上、携帯電話端末10のローカル座標系におけるx軸とユーザのグローバル座標系におけるピッチ軸とを合わせているが、図8を参照しながら説明したように、これらの軸を合わせなくても本フローチャートの処理を正常に実行することができる。
S401では、サブマイコン104は、サブマイコン104は、図8に示すようにユーザのピッチ軸周りの角速度ωpに関連する情報を算出する。ここで「関連する」とは、具体的には、上述の通り、角速度ωpの値は実際のピッチ軸周りの角速度ではなく、実際のピッチ軸周りの角速度を定数倍したものであるという意味である。なお、以下では、便宜上角速度ωpに関連する情報を角速度ωpとして説明する。次いで処理はS402に進められる。
S402では、サブマイコン104は、S401で算出したωpの絶対値ωp'を取る
。次いで処理はS403に進められる。S403では、サブマイコン104は、S402で算出したωp'にローパスフィルタ(図示せず)を通した結果ψを算出する。なお、ロ
ーパスフィルタの時定数を歩行周期より十分長く設定することで、ψは当該時定数により定まる時間範囲で平均したピッチ軸周りの角速度の振幅値が得られる。次いで処理はS404に進められる。S404では、サブマイコン104は、S402で算出したωp'が
、S403で算出した平均角速度の振幅値ψをk倍(kは正の整数)した値より大きいかどうか判断する。ωp'がψのk倍より大きければ(S404:Y)、サブマイコン10
4は、異常状態が発生したと判定する(S405)。ωp'がψのk倍以下であれば(S
404:N)、サブマイコン104は本フローチャートの処理を終了する。以上の処理により、ユーザのピッチ軸周りの角速度の時間変化を追跡し、当該加速度が異常な変化を示したときを検出してユーザの歩行が異常状態にあるとみなすことができる。
次に、図13A及び図13Bに、ユーザが、例えばトランクケース等の大きな荷物を片手で持ち上げて歩いているか否かを判定するフローチャートを示す。なお、図13Aのフローチャートにおける「1」及び「2」は、それぞれ図13Bのフローチャートの「1」及び「2」と連続している。図13Cは、ユーザが荷物を運搬しているときのユーザのグローバル座標系におけるロール軸周りの角速度の時間変化を示すグラフである。図に示すように、荷物運搬時はロール軸周りの角速度のバランスが悪くなる。具体的には、半周期にかかる時間や最大振幅に現れる。図では、一方の半周期にかかる時間が他方の半周期にかかる時間より短く、その最大振幅が大きくなっており(「短く大きい」)、他方の半周期においては最大振幅が一方の半周期における最大振幅が小さくなっている(「長く小さい」)。
そこで、本フローチャートでは、ロール軸周りの角速度のバランスを評価することで、ユーザが荷物を片手で持ち上げて歩いているか否かを判定する。なお、本フローチャート
を実行するにあたり、事前にユーザが歩行中か否かの判定がなされており、サブマイコン104は、ユーザが歩行中であると判定された場合に本フローチャートを実行する。また、本フローチャートは、所定のサンプリング間隔で繰り返し実行される。
S501では、サブマイコン104は、図8に示すようにユーザのロール軸周りの角速度ωrに関連する情報を算出する。ここで「関連する」とは、具体的には、上述の通り、角速度ωrの値は実際のロール軸周りの角速度ではなく、実際のロール軸周りの角速度を定数倍したものであるという意味である。なお、以下では、便宜上角速度ωrに関連する情報を角速度ωrとして説明する。次いで処理はS502に進められる。
S502では、図11A及び図11Bに示す場合と同様、ωrの時間変化を示すグラフがゼロクロスしている(ωrの値の符号が変化する)か否かを判定する。ゼロクロスが発生していない場合(S502:N)、カウンタの値cntをインクリメントする(S503)。なお、cntの値はゼロクロスが発生したときにS513で0にされる。S503の処理の後、サブマイコン104は、S504〜S507において、現在の角速度ωrの値と本フローチャートを開始してからの角速度ωrの最大値又は最小値とを比較することで、角速度ωrの最大値と最小値を求める。S508では、サブマイコン104は、現在の角速度ωrの値を1サンプリング前の角速度ωr'の値とする。
S502において、ωrの時間変化を示すグラフがゼロクロスしている場合(S502:Y)、処理はS509に進められる。S509〜S511では、ωrの時間変化における半周期前のカウンタの値cnt'と現在のカウンタの値cntの比を周期のバランスの
値carry1として計算する。図13Bでは、カウンタの値のうち大きい値を小さい値で除算しており、carry1の値は1より大きい値となるため、carry1の値が1に近づくほどユーザの歩行において体の左右のバランスがよいことがわかる。すなわち、周期のバランスを計算することで、図13Cに示すグラフでいえば、半周期にかかる時間が長短を交互に繰り返しているか否かがわかる。
S512、S513では、半周期前のカウンタの値cnt'を現在のカウンタの値で置
き換えた後に現在のカウンタの値cntを初期値である0に戻す。次いで処理はS514に進められる。上述の通り、ωrは半周期ごとに正と負の値を交互に取る。また、S504〜S507で得られる最大値と最小値は、一方がゼロクロスが発生する直前の半周期におけるωrの振幅のピークを示し、他方が当該半周期の1つ前の半周期におけるωrの振幅のピークを示す。そこで、S514〜S516では、これらの最大値と最小値の比を振幅のバランスの値carry2として計算する。S517〜S519では、次回のcarry2の計算のために、当該半周期の1つ前の半周期におけるωrの振幅のピークを示す最大値又は最小値を特定して、その値を0にする。
上記の処理によって得られたcarry1とcarry2は、それぞれωrの時間変化のバランスを表している。そして、carry1の場合は閾値Th1、carry2の場合は閾値Th2と比較し、carry1とcarry2の一方もしくは両方が閾値より大きい値を取る場合は、バランスが悪い歩行である、すなわちユーザが荷物運搬中である(ここでの例では、荷物を片手で持ち上げて歩いている)と判定する(S520、S521)。以上の処理により、ユーザのロール軸周りの角速度の各周期の時間幅や各周期における振幅の大きさに基づいて、ユーザの歩行のバランスを評価することで荷物運搬中か否かを判定することができる。
なお、carry1とcarry2のいずれか一方を用いて荷物運搬中か否かを判定する場合は、他方に関する演算処理は行わなくてもよい。例えばS520において、carry1を評価する場合、carry2の値を得る処理(S504〜S507、S514〜
S519)は省略できる。逆に、S520においてcarry2を評価する場合は、carry1を得る処理(S503、S509〜S513)は省略できる。さらに、上記の処理例では、S520でcarry1やcarry2の値が閾値より大きいと判定したときに、S521でユーザは荷物運搬中であると判定しているが、図10のS203〜S213に示すように確度の概念を用いて荷物運搬中であるか否かを判定する構成とすることもできる。
(第2の実施形態)
次に、第2の実施形態について図面を参照しながら説明する。なお、本実施形態でも、第1の実施形態の携帯電話端末10と同様の構成を有する携帯端末10’を使用し、以下の説明では、第1の実施形態と同等の構成は同一の符号を用いて詳細な説明を省略する。第2の実施形態では、四脚動物、一例として馬の歩容を判定する。馬等の四脚動物は、移動速度によって歩容、すなわち走り方・歩き方が変わってくる。図14に、馬の代表的な歩容、(1)ウォーク(walk)、(2)トロット(trot)、(3)カンター(canter)、(4)ギャロップ(gallop)を示す。図14では、図中左側に各歩容の馬の脚の位置関係を模式的に示し、各歩容の「1」〜「8」で示す期間における各脚(右前(脚)、左前(脚)、右後(脚)、左後(脚))の接地の有無をそれぞれの模式図の右隣に示す。なお、馬の歩容としては、他にウェイブ、ペース、バウンド等も挙げられるが、図に示す4歩容ほどは一般的でないため、ここでは触れない。
ここで図14からわかるように、カンターの「7」〜「8」に示す期間、ギャロップの「4」及び「8」に示す期間は馬体が完全に宙に浮いている。また、図14では、トロットにおいて、「1」や「4」に示す期間では4脚とも接地しているように見えるが、実際のデータを詳細に確認すると、これらの期間では脚の切り替えが素早く行われており、馬体が宙に浮いている時間が存在することがわかっている。
つまり、馬体が宙に浮いているということは、馬体に取り付けられた加速度センサには無重力状態が生じているといえる。したがって、馬が移動している場合に、加速度センサが無重力状態を検知したとき、馬はトロット、カンター、ギャロップのいずれかの状態にあるとみなすことができる。そこで、本実施形態では、携帯電話端末10を馬の体に取り付け、加速度センサ110のセンサ出力を用いて、サブマイコン104が馬の歩容を判定する。
図15に、本実施形態におけるサブマイコン104の一部の構成を示す。サブマイコン104は、LPF104n、HPF104o、内積演算処理部104p、104qを有する。加速度センサ110のセンサ出力は、LPF104n、HPF104o、内積演算処理部104qにそれぞれ入力される。また、LPF104n、HPF104oの各出力は内積演算処理部104pに入力される。LPF104n、HPF104o、内積演算処理部104pによる一連の処理は、第1の実施形態と同じであるため説明を省略する。LPF104n、HPF104oからは、重力加速度成分ベクトルG’’、振動成分ベクトルS’’がそれぞれ出力される。したがって、内積演算処理部104pからは馬のグローバル座標系における上下方向の振動成分ベクトルの大きさが出力される。一方、内積演算処理部104qは、加速度センサ110のセンサ出力自体について内積演算を施す、すなわちセンサ出力の絶対値の2乗を算出する。便宜上、内積演算処理部104pから得られる出力の値をα、内積演算処理部104qから得られる出力の値をβとする。
図16A〜図16Cに、上記の処理により得られる値α、βを用いて、馬の歩容を判定するフローチャートを示す。なお、本フローチャートは、図15に示す処理により得られた値α、βを用いて所定の間隔ごとに繰り返し実行される。S601において、サブマイコン104は、内積演算処理部104pからの出力値αに基づいて歩行中か否か判定する
。当該判定処理は周知であるため説明を省略する。馬が歩行中であると判定された場合(S601:Y)、処理はS602に進められる。また、馬が歩行中でないと判定された場合(S601:N)、処理はS619に進められる。S619では、サブマイコン104は、トロットの確度n_trot、走行の確度n_run、ギャロップの確度n_gallopを0にした後、馬が歩行中でないと判定 する(S620)。ここで、走行の確度
n_runとは、後述するように、現在の馬の歩容がトロットもしくはカンターのいずれかであると判定するために用いられる値である。
S602〜S606では、サブマイコン104は、馬の歩行周期を算出する。まず、サブマイコン104は、上下方向の加速度の値αが極小値を取っているかどうかを判定する(S602)。図16Bに、S602における処理のフローチャートを示す。S701〜S703では、サブマイコン104は、上下方向の加速度の値αについて過去3つのサンプルの値を保持する。図中、3つのサンプルの値のうち、時間的に古いものから順に「left」、「mid」、「right」とする。S704では、サブマイコン104は、3つのサンプルの値のうち「mid」の値が小さいか否かを判定する。厳密には、S602では現在のαの値が極小値であるか否かではなく、1サンプル前のαの値が極小を取ったか否かを判定しているが、原理的には問題ない。なお、S701〜S704の処理でαの値が極小値を取ったか否かを判定するために、αが滑らかな時間変化を示すようS701〜S704の処理の前に適宜フィルタリングを適用してもよい。
S602において、αが極小値を取っていないと判定された場合(S602:N)、サブマイコン104は、歩行周期のカウンタcntをインクリメントする(S603)。また、αが極小値を取ったと判定された場合(S602:Y)、サブマイコン104は、処理をS604に進める。αが極小値を取ったと判定されたときの歩行周期のカウンタcntの値は、αが前回極小値を取ってから今回極小値を取るまでにS602、S603により積算された値である。したがって、cntの値が小さければ、現在の馬の歩容は歩行周期の短いトロットである可能性が高くなる。そこで、cntの値が所定の閾値よりも小さい場合(S604:Y)、トロットの確度n_trotを値N1だけ加算する(S605)。S605の処理を行った後及びcntの値が所定の閾値以上である場合(S604:N)、cntの値を初期値である0に戻す(S606)。
続いて、S607〜S610では、サブマイコン104は、内積演算処理部104から得られる出力の値βが所定の閾値より小さい場合は(S607:Y)走行の確度n_runを値N2だけ加算し(S608)、βが所定の閾値より大きい場合は(S609:Y)ギャロップの確度n_gallopを値N3だけ加算する(S610)。次いで処理はS611に進められる。
S611では、具体的には図16Cに示すように、上記の確度のいずれかをAとし、上限をNとした場合に、S801〜S804により値AがNを超えないようにする処理を行う。S801〜S804の処理により、S605、S608、S610により加算された上記の各確度の値は、S604、S607、S609の判定がNである場合に小さい値となる。すなわち、馬がトロット、カンター、ギャロップのいずれかを止めた後は、時間の経過とともに対応する確度が下がっていく。S611の処理の後、処理はS612に進められる。S612〜S618では、各確度を所定の閾値と比較し、確度が所定の閾値より大きい場合に、現在の馬の歩容がその確度に対応する歩容であると判定する。
図17に、本実施形態における歩容判定の実験結果の一例を示す。図中、400のグラフは、取得した加速度センサ110のセンサ出力の時系列情報を示す。また、401及び402のグラフは、図15に示す処理を行った後の上下振動αと絶対値の2乗βの時間変化をそれぞれ示す。
時刻405において、加速度の大きさがS607で用いられる閾値より小さくなってきている。したがって、S608の処理により走行の確度n_runが上がってきている(図中407)。ここで、403のグラフは、上下方向の振動の極小値の間隔408をプロットしたものである。時刻409以降、歩行周期が短くなってきており(410)、S604、S605の処理によりトロットの確度n_trot(411)が上がってきている。
時刻412において、走行の確度n_run及びトロットの確度r_trotがS614及びS615で用いられる閾値413を超えたことから、歩容をトロットと判定している(414:trot)。また、時刻415において歩行周期が長くなってきたため、S604におけるNの判定及びS611の処理によりトロットの確度n_trotが下がってきているが、まだ閾値413より大きいため、歩容はトロットであると判定され続けている。次いで、時刻416において、加速度の絶対値の値βが大きくなって閾値417に達するようになってきたため、S609及びS610の処理によりギャロップの確度n_gallopが上がってきている。そして、時刻418において、トロットの確度n_trotが閾値413より小さくなったため、S614及びS615の処理により歩容はカンターであると判定される(419)。さらに、時刻420において、ギャロップの確度n_gallopがS612で用いられる閾値を超えたため、歩容はギャロップであると判定される(421)。
(第3の実施形態)
次に、第3の実施形態について図面を参照しながら説明する。なお、本実施形態でも、第1の実施形態の携帯電話端末10と同様の構成を有する携帯端末10’’を使用し、以下の説明では、第1の実施形態と同等の構成は同一の符号を用いて詳細な説明を省略する。第3の実施形態では、一例として馬の手前を判定する。カンターやギャロップでは、馬の左右の脚の動きが非対称であり、前脚のうちどちらをより前に出したかによって、右手前と左手前という区分がある。一般に、馬がトラックを走る場合に、右カーブでは右手前が、左カーブでは左手前がそれぞれ有利と言われているが、人間の右利きと左利きのように、個々の馬によって得意とする手前が異なると言われている。したがって、特に競走馬の世界では歩容に加えて手前という概念も重視されている。そこで、本実施形態では、対象とする運動体(ここでは一例として馬)の現在の利き足を特定する処理を行う。
本実施形態では、図18に示すように、馬の前両脚の間の胸板に携帯端末10’’を装着する。したがって、本実施形態では、右脚が前に出るときは携帯端末10’’が図の矢印の方向に回転し、左脚が前に出るときはその逆の方向に回転する。図19A及び図19Bに、馬体の上下方向の動きと携帯端末10’’の回転の関係を示す。図19Aは、馬が右手前で移動している場合を示し、図19Bは、馬が左手前で移動している場合を示す。なお、馬は図中の「1」から「8」に順次進んでいく。また、図中、実線が右脚を示し、破線が左脚を示す。
図20に、本実施形態におけるサブマイコン104の一部の構成を示す。本実施形態において、サブマイコン104は、LPF104r、HPF104s、内積演算処理部104t、104uを有する。加速度センサ110のセンサ出力は、LPF104r、HPF104sにそれぞれ入力される。また、LPF104r、HPF104sの各出力は内積演算処理部104uに入力される。LPF104rの出力は内積演算処理部104tにも入力される。LPF104r、HPF104s、内積演算処理部104uによる一連の処理は、第1の実施形態と同じであるため説明を省略する。さらに、角速度センサ111のセンサ出力が、内積演算処理部104tに入力される。
内積演算処理部104tからは、図8を参照しながら説明したように、ここでは馬のグローバル座標系における上下方向の軸周りの角速度が出力される。LPF104r、HPF104sからは、重力加速度成分ベクトルG’’’、振動成分ベクトルS’’’がそれぞれ出力される。したがって、内積演算処理部104uからは馬のグローバル座標系における上下方向の振動成分ベクトルの大きさが出力される。便宜上、内積演算処理部104tから得られる出力の値をγ、内積演算処理部104uから得られる出力の値をδとする。
図21は、内積演算処理部104tから得られる出力の値をγ、内積演算処理部104uから得られる出力の値をδの時間変化を示すグラフである。馬の上下方向の加速度の変化と手前に応じて、上下方向の振動の変化と回転方向の角速度の変化の位相差が180°ずれている。したがって、上下方向の振動成分ベクトルの大きさδの極大極小時に上下方向の軸周りの角速度の大きさγとの積を取り、その値が正か負かを判別することで、上記のずれを検出することができる。
図22A及び図22Bに、本実施形態における、手前判定のフローチャートを示す。なお、本フローチャートは、図20に示す処理により得られた値γ、δを用いて所定の間隔ごとに繰り返し実行される。S901では、δが極値を示すか否かを判定する。具体的には、図22BのS1001〜S1005の処理によって、δが極値を示すかを判定する。S1001〜S1005の処理は、図16Bと同様であるため、ここでは説明を省略する。δが極値を示さない場合(S901:N)、サブマイコン104は、γとδの積を演算し、この積をkとして保持する(S912)。δが極値を示す場合(S901:Y)、サブマイコン104は、kの値の正負を判定する(S902)。ここで、サブマイコン104が保持するkの値は、S901〜S917の一連の処理を1サイクルとした場合に、1サイクル前の処理でサブマイコン104が算出したkの値である。これは、上述したようにS902の処理で極値を示すか否かの判定対象となるのは、実際には1サンプル前のkの値であるためである。
kが正の場合(S902:Y)、手前確度rlが左手前らしさを示しているかどうか確認する(S903)。本実施形態では、手前確度rlの値が正の場合に左手前の確度が高く、手前確度rlの値が負の場合は右手間の確度が高いとする。一例として、手前確度rlの値は、その初期値を0とし、S905〜S911の処理により変動する。S903において、手前確度rlが0以上、すなわち左手前らしいのであれば、手前確度rlに値N4を加算する(S904)。本実施形態では、S905、S906の処理により手前確度rlが値N5より大きくならないよう制限している。
一方、kが正の値で手前確度rlが負の値、すなわち右手前らしさを表している場合(S902:Y、S903:N)、手前確度rlを2分の1にする(S907)。なお、kが負の値の場合も(S902:N)、図23Aに示すように、加算と減算、手前確度rlを−N5と比較する等の違いはあるものの、S903〜S907と同様の処理をする(S907〜S911)。S906、S907、S911の処理の後、処理はS912に進められる。さらに、S912の処理の後、処理はS913に進められる。
S913〜S917では、手前確度rlを所定の閾値と比較し、手前確度rlが所定の閾値より大きければ(S913:Y)、左手前であると判定する(S917)。また、手前確度rlにマイナスを付した値−rlが所定の閾値より小さければ(S914:Y)、右手前であると判定する(S916)。さらに、S913、S914において手前確度rlの値が所定の閾値よりも大きくもなく、−rlが所定の閾値よりも小さくもなければ、手前は不確定であると判定する(S915)。
図23に、本実施形態における手前判定の実験結果を示す。701及び702のグラフは、加速度センサのセンサ出力の時間変化を示す。また、703及び704のグラフは、角速度センサのセンサ出力の時間変化を示す。さらに、705、706は、図20に示す処理によって得られた上下方向の軸周りの角速度γと上下方向の振動成分ベクトルの大きさδを示す。なお、図23に示すように、γとδの値の時間変化が705のグラフでは逆位相に、また、706のグラフでは同位相になっている。さらに、707及び708のグラフは、それぞれ手前確度rlの時間変化を示し、707のグラフでは時間経過とともに手前確度rlが小さくなり、708のグラフでは時間経過とともに手前確度rlが大きくなっている。
図23に示すように、時刻709又は710において、S913又はS914において手前確度rlが閾値711又は712を越え(S913:Y又はS914:Y)、それぞれ右手前、左手前と判定されている。そして、その後時刻713、714において、705又は706のグラフから分かるようにγとδの位相差が安定しなくなり、このため手前確度が低くなってS913〜S915の処理により手前が不確定と判定されている。
ところで、例えば、上記の第1の実施形態のサブマイコン104について、ピッチ軸周りの角速度に関連した情報とロール軸周りの角速度に関連した情報を算出する回路として、図24に示す回路を採用することもできる。図24に示すように、サブマイコン104は、LPF1004a、バンドパスフィルタ(BPF)1004b、内積演算処理部1004c、1004h、1004j、1004p、1004q、外積演算処理部1004d、1004i、乗算部1004e、1004l、1004n、1004o、符号判定部1004g、1004m、移相フィルタ1004kを有する。ここでは、図24に示す回路の主な特徴について説明する。内積演算処理部1004cからはユーザの上下方向の加速度ベクトルの大きさが出力される。また、内積演算処理部1004jからはユーザの前後方向の加速度ベクトルの大きさが出力される、内積演算処理部1004cの出力に対して移相フィルタ1004kにより所定量位相をずらし、乗算部1004lで内積演算処理部1004jの出力と乗算することで、符号判定部1004mにより、ユーザの前後方向のベクトルK及び左右方向のベクトルHの正負を決定することができる。
したがって、乗算部1004nからは左ベクトルLが、乗算部1004oからは前ベクトルFが得られる。なお、図24に示す回路の初期値次第では、乗算部1004nからは右ベクトルが、乗算部1004oからは後ろベクトルがそれぞれ得られる。さらに、これらのベクトルと角速度センサ111のセンサ出力との内積を求めることで、内積演算処理部1004p、1004qからは、回転方向が確定したピッチ軸周りの角速度に関連した情報とロール軸周りの角速度に関連した情報がそれぞれ出力される。
(第4の実施形態)
次に、第4の実施形態について説明する。牛や馬等の産業動物を飼育する上では、それらの健康管理が重要視される。特に、四脚動物の場合は、各脚の健康状態を把握することが求められる。例えば、一脚の具合が悪い場合、その動物の歩行や走行における歩調や体のバランスが悪くなり、その動物の歩行状態が跛行とみなされることがある。例えば、牛の跛行は、蹄が痛む蹄病が原因であることが多く、乳牛であれば、跛行により生乳の産出量が減少する可能性がある。また、例えば、馬の跛行は、前脚の腱が痛む屈腱炎が原因であることが多く、競走馬であれば、出走できない事態を招く可能性がある。そのため、四脚の産業動物の飼育においては、跛行から脚の異常を早期に発見し、迅速な対策を行うことが求められている。
近年の研究では、例えば馬の歩容を数値化することを狙いとして、規則性と対称性という2つの評価基準を用いることが提唱されている。例えば、馬の歩行状態がトロットであ
る場合に馬体の上下加速度を利用して規則性と対称性を判定する。トロットとは右前脚と左後脚、左前脚と右後脚が対となって歩行する状態を指す。この時の前脚についての上下加速度の変化を時系列に表すと、図25のようになる。図中、脚の動きと1つの波の周期とが連動しているため、各周期の波は、支持脚が右、左、右、左と交互に代わっていることを示している。そこで、図26に示すように、隣り合う周期間における波(1歩前と2歩前の波)の相関値を対称性、1周期離れた周期間における波(1歩前と3歩前の波)の相関値を規則性と定義する。
図26において、規則性および対称性を算出する相関演算は、波の周期が一定でないために単純に一定間隔で上下加速度をサンプリングするだけでは適切に実行できず、次のような算出方法を採用する。上下加速度のサンプリングにおいてiサンプル前の値をxiとして(iは自然数)、以下の式(11)によりA(m)を計算する。
ここでNはサンプリング数である。A(m)は、現在時間におけるサンプルとmサンプルだけ過去に遡った時間におけるサンプルとの相関値を意味する。そのため、横軸にm、縦軸にA(m)を取ったグラフを描くと、図27のように、m=0において山から始まり谷、山、谷・・・と続く形状となる。図27において、m=0の最初の山は、自サンプルとの相関である。また、図27のグラフの1つ目と2つ目の山のピークにおけるmをそれぞれs、rとすると、A(s)、A(r)は、それぞれ図26における1周期前の波との相関、2周期前の波との相関となる。ここでA(m)の値の大きさは、波の振幅によって変化するため、対称性をA(s)/A(0)、規則性をA(r)/A(0)と定義する。ここで、あるサンプルと他のサンプルとの相関値は、自サンプルとの相関における相関値より高くなることはないため、原理上これらの定義された値は1以下の値となる。
ところで、この演算方法にはいくつかの問題点がある。1つ目の問題は、計算量が多いことである。例えばN=100とすると、1回の相関演算を行うにあたりA(0)を算出する計算を100回、A(1)を算出する計算を99回・・・と、合計で5050回の計算を行う。そして、馬の歩容判定においては、一歩ごとに相関演算を繰り返すため、演算に伴う処理負荷が大きい。2つ目の問題は、波の周期に対して十分に短い間隔でサンプリングしないと、規則性および対称性の値の算出において局所的な誤差が大きくなることである。例えば、図27において、N=7であり、データ列がx1、x2・・・x7がそれぞれ1、0、−2、0、2、0、−2であるとする。このとき、A(0)は、(1+0+4+0+4+0+4)/7=13/7、すなわち約1.86である。一方、A(4)は(2+0+4)/(7−4)=6/3=2となりA(0)よりも大きな値となる。
図28はある馬の歩行データについて、N=80として1歩ごとの規則性および対称性を演算した結果を示すグラフである。1歩あたりの取得サンプル数は約20サンプルである。図28のグラフでは、点線で囲んだ領域(A)が示すように、規則性の相関値が100%を越える部分がある。また、規則性および対称性について、サンプルがグラフ全体に分散しているため、どのサンプルが正常であるかを判定するのが難しい。ところで、この問題は、サンプリング間隔を短くして、例えば1歩の間の取得サンプル数を200サンプルとし、Nの値としてより大きな値、例えば1000を設定することで改善することができる。ただし、このようにサンプリング間隔を短くしてNに大きな値を設定すると、サンプリングに使用される馬の歩行状態を検知するセンサについては、データ採取ループの処理の高速化が求められ、上記の相関演算の計算量はNの値が大きくなるにつれて増加する。例えば、N=1000とした場合は、約50万回の相関演算が実行されるものと推定さ
れる。
そこで、本実施形態では、1歩ごとの上下加速度の波形ではなく、1歩ごとの運動エネルギを比較する。例えば、現在からn歩前の運動エネルギをE(n−1)とすると、対称性を示す値は1歩前の運動エネルギ(E(0))と2歩前の運動エネルギ(E(1))の比、規則性を示す値は1歩前と3歩前(E(2))の比として求められる。ここで、各歩の運動エネルギの小さい方を分母にすることで比は1以上の値として求められる。また、運動エネルギは、速度をv、物体の質量をmとしてmv2/2で与えられる。本実施形態
においては、α歩前の速度をvαとβ歩前の速度をvβとしたときに、α歩前とβ歩前とでの運動エネルギの比E(α)/E(β)は、(mvα2/2)/(mvβ2/2)=vα2/vβ2で与えられる。
そして、運動エネルギは上下加速度のグラフと時間軸とで囲まれる領域の面積の2乗和であるから、本実施形態においては、1歩ごとの上下加速度の積分値の2乗の比を求めれば、各歩間の運動エネルギの比が求められる。なお、図29のグラフに示すように、1歩ごとの上下加速度は時間軸を中心として正および負の値を取る。したがって、1歩ごとの運動エネルギは、上向きの運動エネルギと下向きの運動エネルギの和であるから、上向きの速度および下向きの速度の2乗和を求めればよい。
ここで、歩行状態を表す運動エネルギの速度は加速度を積分することにより得られる。図30Aにおいて、領域A、Bの面積はそれぞれ速度を示す。領域Aの面積≒領域Bの面積と近似することができるので、AまたはBを2乗することで歩行における運動エネルギを表すこととしてもよい。ただし、A+Bを歩行状態における一歩における速度として用いて運動エネルギを表現する方が、AまたはBの一方を用いる場合よりも速度の値が平均化される。また、本実施形態では、馬の歩行の規則性と対称性を評価するにあたり、運動エネルギの比が閾値を超えているか否かを判定する。したがって、速度の2乗の値を求めなくとも速度自体の比を求めればよい。例えば、V1とV2がともに正あるいは負であるという前提で、V1 2/V2 2が2以上か否かを判定することは、V1/V2が2の平方根以上か否かを判定することと等価である。そこで、本実施形態では、図30Bに示すように、現在から1歩前、2歩前、3歩前の速度の2乗和をそれぞれS1、S2、S3として、対称性の値をS2/S1(S2>S1の場合)またはS1/S2(S1>S2の場合)、規則性の値をS3/S1(S3>S1の場合)またはS1/S3(S1>S3の場合)と定義する。なお、速度の2乗和であるS1、S2、S3のそれぞれは、現在から1歩前、2歩前、3歩前の運動エネルギに比例する値である。また、速度の2乗和が運動エネルギを示す値の一例に相当する。
次に、図31を参照しながら、本実施形態における、計測端末300、計測端末300と通信を行う騎手端末400、馬場装置500、馬場内端末600について説明する。計測端末300は、3軸加速度センサ301、表示装置302、通信装置303、サブマイコン304を有する。計測端末300が、計測装置の一例に相当する。
3軸加速度センサ301は、上記の実施形態でも用いられるMEMS(Micro Electro Mechanical Systems)センサである。3軸加速度センサ301は、計測端末300が装着される馬の運動に伴う3次元空間の加速度を測定し、加速度データとして出力する。3軸加速度センサ301による測定データは、インタフェイス304aを経由してCPU304bに送られる。表示装置302は、CPU304bから受け取ったデータを表示する。通信装置303は、CPU304bの処理結果として得られるデータを、例えば無線通信によって騎手端末400、馬場装置500、馬場内端末600にそれぞれ送信する。なお、通信装置303の通信方式は、使用環境に応じて有線や短距離無線等、適宜採用することができる。
サブマイコン304は一般的なサブマイコンであり、CPU304bには、不揮発性メモリであるメインメモリ304cおよび揮発性メモリであるフラッシュメモリ304dが接続されている。また、CPU304bは、インタフェイス304aを介して3軸加速度センサ301、表示装置302、通信装置303とデータの送受信を行う。CPU304bは、3軸加速度センサ301から3次元空間の加速度データを受け取り、歩数や歩容等とともに上記の規則性および対称性の値を計算する。CPU304bによる処理結果は、メインメモリ304cに保存された後、リアルタイムあるいは任意のタイミングで通信装置303を経由して外部の騎手端末400、馬場装置500、馬場内装置600等に出力される。
リアルタイムの出力としては、以下に説明するようにCPU304bによって現在の馬の歩行状態、すなわち規則性又は対称性が異常であるとみなされたときに、計測端末300から当該馬に騎乗中の騎手が携帯する騎手端末400に対して、メッセージ等を送信する場合が挙げられる。この場合、騎手端末400は当該メッセージ等を受信すると、馬の歩行に異常が発生していることを、警告装置401を通して、振動や音や光等で騎手に伝える。同様に、馬の歩行に異常が発生していることを、馬場内に設置された馬場装置500の警告灯501や馬場内端末600の表示装置601を介して、騎乗中の騎手や調教師等に知らせてもよい。
なお、リアルタイムの通知を行わない場合は、計測端末300から受信した上記のメッセージ等を記憶装置602にログとして保存し、ユーザが馬場内端末600を操作したとき等任意のタイミングで馬の歩行状態に関する情報を提供することもできる。なお、ログは馬場内端末600に限らず、計測端末300、騎手端末400、馬場装置500、馬場内端末600と接続可能な任意のサーバに格納する構成としてもよい。
本実施形態では、計測端末300のメインメモリ304cに記憶されているアプリケーション等が、CPU304bによって実行される。このようなアプリケーション等の実行により、図32に示すように、計測端末300は、歩容特定部3001、歩容判定部3002、運動エネルギ値算出部3003、運動エネルギ比算出部3004として機能する。ただし、歩容特定部3001、歩容判定部3002、運動エネルギ値算出部3003、運動エネルギ比算出部3004のいずれか1つ以上が、ハードウェア回路であってもよい。
歩容特定部3001は、3軸加速度センサ301から取得した加速度データを用いて計測端末300が装着された馬の歩容を特定する。歩容判定部3002は、歩容特定部3001により特定された歩容を用いて馬の右前脚と左後脚、左前脚と右後脚の移動がそれぞれ対になっているか否か、すなわちトロット中であるか否かを判定する。運動エネルギ値算出部3003は、3軸加速度センサ301から取得した加速度データを用いて、取得した加速度データの時間変化における連続する3つの周期について、周期ごとの速度、すなわち運動エネルギを示す値を算出する。運動エネルギ比算出部3004は、運動エネルギ値算出部3003により算出された速度を用いて、連続する3つの周期における隣り合う周期間の速度の比と1周期離れた周期間の速度の比を算出する。なお、これら周期間の速度の比が運動エネルギの比の一例に相当する。各部の処理の詳細については後述する。
次に、図33のフローチャートを参照しながら、本実施形態においてCPU304bが実行する処理について説明する。なお、以下の説明において、上下加速度a0は、前回の
上下加速度の計算処理において図33に示すフローチャートの処理を実行したときに得られた上下加速度の値を意味する。また、上下加速度aは、現在の上下加速度の計算処理において図33に示すフローチャートの処理を実行したときに得られた上下加速度の値を意味する。
S1101において、CPU304bは、3軸加速度センサ301による測定値に基づいて、計測端末300が装着されている馬の上下加速度aを計算する。次いで、処理はS1102に進められる。S1102では、CPU304bは、前回の計算により得られた上下加速度a0と今回のS1101における計算により得られる上下加速度aの積が負の
値となるか否かを判定する。S1102の処理により、前回の計算から今回の計算の間に上下加速度の値が0となったか否かがわかる。すなわち、a0とaの積が負の値を取る場
合、上下加速度が正から負あるいは負から正に変わったことを意味する。また、a0とa
の積が正の値を取る場合、上下加速度の正負は正あるいは負のままで変わらないことを意味する。S1102において、a0とaの積が負の値を取る場合は(S1102:Yes
)、処理はS1105に進められる。また、S1102において、a0とaの積が負の値
を取らない場合は(S1102:No)、処理はS1103に進められる。
S1103において、CPU304bは、上下加速度の積分値SにS1101において計算された上下加速度の値aを加算する。上記の通り、上下加速度の時間変化において、半周期が半歩に対応している。したがって、上下加速度が正から負あるいは負から正に切り替わるまでの上下加速度の累積和を求めることで、上下加速度の半周期における積分値の値が求まる。S1103の処理が完了すると、処理はS1104に進められる。
S1105において、CPU304bは、S1101で計算した上下加速度を用いて第2の実施形態と同様の処理を行うことで、計測端末300が装着されている馬の歩行判定、歩容判定、歩数計測の各処理を行う。S1105の処理が実行されることにより、当該馬が現在トロット中であるか否かもわかる。次いで処理は、S1106に進められる。
S1106において、CPU304bは、S1101で計算した上下加速度aが0より大きい値であるか否かを判定する。上下加速度aが0より小さい値である場合は(S1106:No)、処理はS1107に進められる。S1107において、CPU304bは、1歩前の速度の2乗和S1に、上下加速度の累積和Sの2乗を格納する。本実施形態において、上下加速度aが0より小さい値、すなわち負の値に切り替わったことは、馬の1歩における前半の半周期が完了したとみなすことができる。そこで、本実施形態では、S1106、S1107の処理により、馬の1歩における前半の半周期分の速度をS1として算出する。次いで処理はS1108に進められ、上下加速度の累積和Sの値として現在の上下加速度aの値が格納される。さらに処理はS1104に進められ、前回の計算により得られた上下加速度a0に、現在の上下加速度aの値が格納される。これにより、馬の
1歩における後半の半周期分の速度を計算する準備が整う。
本実施形態において、S1101〜S1104の処理は所定の時間間隔で繰り返し実行される。したがって、S1106、S1107により馬の1歩における前半の半周期分の速度が計算されてS1108、S1104の処理が完了した後、CPU304bはS1101の処理を再び実行する。そして、S1102〜S1104が繰り返し実行されることで、馬の1歩における後半の半周期における上下加速度の累積和Sが計算される。馬の歩行の1周期における後半の半周期が完了すると、S1101で計算される上下加速度aの値は負から正に切り替わる。したがって、処理は、S1102からS1105、S1106、S1109へと進められる。
S1109では、S1105における歩容判定の結果に基づいて、馬の現在の歩容がトロットであるか否かを判定する。一般に、馬の歩容において、トロット以外の歩容では、上記の対称性について非対称であることが正常の歩容であると考えられている。そこで、本実施形態においては、S1109において、馬の現在の歩容がトロットであると判定された場合に、CPU304bは、図33に示すS1111以降の処理を実行する。現在の
歩容がトロットでないと判定された場合は(S1109:No)、処理はS1110に進められる。S1110において、CPU304bは、1歩前〜3歩前の速度の2乗和S1、S2、S3の値を0にする。
現在の歩容がトロットであると判定された場合は(S1109:Yes)、処理はS1111に進められる。S1111では、1歩前の速度の2乗和S1に、上下加速度の累積和Sの2乗を加算する。上記の通りS1107において、馬の1歩における前半の半周期分の速度はS1に格納されているため、S1111において、S1に後半の半周期分の速度が加算されることで、S1は馬の1歩における1周期分の速度が格納されている。次いで処理は、S1112に進められる。
本実施形態において、馬の歩行状態の規則性と対称性は、1歩前〜3歩前の各速度の2乗和であるS1〜S3の比を用いて計算される。S2、S3の値は、S1110において0が格納されている場合があるため、S2、S3が0であると運動エネルギの比を正しく求めることができない。そこで、本実施形態では、S1112、S1113においてS2、S3が0でないことを確認した上で規則性の値と対称性の値を計算する。
S1112では、CPU304bは、現在から2歩前の速度の2乗和S2の値が0であるか否かを判定する。速度の2乗和S2の値が0でない場合は(S1112:No)、CPU304bは処理をS1114に進める。また、速度の2乗和S2の値が0である場合は(S1112:Yes)、CPU304bは処理をS1113に進める。S1114では、CPU304bは、速度の2乗和S1の値がS2の値よりも大きいか否かを判定する。速度の2乗和S1の値がS2の値よりも大きい場合は(S1114:Yes)、CPU304bは処理をS1115に進める。また、速度の2乗和S1の値がS2の値よりも大きくない場合は(S1114:No)、CPU304bは処理をS1116に進める。S1115およびS1116では、CPU304bはS1114の判定結果に従って、速度の2乗和S1、S2のうち値が大きい方を分母にしてS1とS2の比を求め、求めた比に100を乗算した値を対称性として算出する。S1115またはS1116の処理の後、CPU304bは処理をS1113に進める。
S1113では、CPU304bは、現在から3歩前の速度の2乗和S3の値が0であるか否かを判定する。速度の2乗和S3の値が0でない場合は(S1113:No)、CPU304bは処理をS1117に進める。また、速度の2乗和S3の値が0である場合は(S1113:Yes)、CPU304bは処理をS1120に進める。S1117では、CPU304bは、速度の2乗和S1の値がS3の値よりも大きいか否かを判定する。速度の2乗和S1の値がS3の値よりも大きい場合は(S1117:Yes)、CPU304bは処理をS1118に進める。また、速度の2乗和S1の値がS3の値よりも大きくない場合は(S1117:No)、CPU304bは処理をS1119に進める。S1118およびS1119では、CPU304bはS1117の判定結果に従って、速度の2乗和S1、S3のうち値が大きい方を分母にしてS1とS3の比を求め、求めた比に100を乗算した値を規則性として算出する。S1118またはS1119の処理の後、CPU304bは処理をS1120に進める。なお、S1115、S1116、S1118、S1119では、速度の2乗和の比(運動エネルギの比)に100を乗算しているが、100を乗算するのは単に整数演算しやすくするためであり100を乗算しなくてもよい。
CPU304bは、S1120において現在のS2の値をS3に格納し、次いでS1121において現在のS1の値をS2に格納する。これにより、現在から1、2歩前の速度をそれぞれ2、3歩前の速度の2乗和とし、新たにS1101〜S1111の処理によって算出される1歩前の速度の2乗和をS1として格納することができる。S1121の後
、CPU304bは処理をS1108に進める。S1108および続くS1104の処理は上記と同じであるため説明を省略する。以上、S1112〜S1119の処理は、3軸加速度センサ301のサンプリング毎に1回実行すればよく、ループ処理が存在しないため、従来の相関演算と比べて低い処理負荷で相関演算を実行することができる。
図34に、上記のフローチャートの処理を実行して得られる結果を基に、歩行が正常な馬A、Bと、本実施形態の処理によって異常とみなされる跛行ぎみの馬C、Dの4頭の歩行における規則性および対称性をプロットした図を示す。図に示すように歩行が正常な馬A、Bの場合は、規則性および対称性ともに値100の前後にプロットされることが多い。一方、跛行ぎみの馬C、Dの場合は、特に対称性が悪い領域にプロットされる傾向があることがわかる。なお、図34における馬Bの歩行データは、図28に示す規則性および対称性のグラフにも使用されている。図28のグラフと図34の馬Bのグラフと比べると、本実施形態において得られる図34のグラフの方が、対称性および規則性がともに良好とみなせる値100により近くプロットされている。したがって、本実施形態では、上記の処理により得られる馬の歩行についての規則性および対称性に基づいて、従来よりも正確に馬の歩行が正常であるか否かを判断することができるといえる。
次に、本実施形態において、図31の処理によって求められる規則性および対称性に基づいて、現在の馬の歩行状態が以上であるか否かを検出する処理について、図35を参照しながら説明する。本実施形態において、跛行であると検出した結果を警告するには、図33に示すフローチャートを実行することで求めた規則性および対称性の値に基づいて異常を検出する。CPUの処理負荷が低い方法としては、対称性および規則性の値が正常とみなされる領域の外に高い頻度で存在するかどうかを調べることが可能である。以下に、本実施形態において馬の歩行における規則性および対称性を示すスコアを算出し、スコアに基づいて馬の歩行が跛行であるか否かを判定して跛行である場合に警告を行う処理について説明する。
本実施形態では、図33に示すフローチャートを実行して規則性および対称性の値を算出した後、任意のタイミングでCPU304bが図35に示すフローチャートの処理を開始することができる。また、CPU304bは、求められる処理能力や歩行判定の精度等に基づいて決定される所定の時間間隔で、本フローチャートの処理を繰り返し実行する。本実施形態においては、規則性または対称性の値が大きくなるほど跛行であるとみなすことができる可能性が高くなる。このため、規則性および対称性の値に対して、正常の歩行であるとみなせる上限値としての閾値があらかじめ定められてメモリ304cに格納されている。
また、図35のフローチャートにおいて、歩行が跛行であるか否かを示す指標としてスコア(図中「Scr」)を用いる。本実施形態において、スコアの初期値は0とする。また、本実施形態において、以下の説明で用いるZ1、Z2、Z3の各値はあらかじめ設定されている。図36に、図35の処理が繰り返し実行された場合の各スコアをプロットしたグラフの例を示す。図36においてプロットされるスコアは、図35のフローチャートが終了するたびに得られるスコアの値である。なお、図36に示すようにZ1はスコアの上昇値であり、Z2はZ3よりも大きい閾値であり、スコアがZ3からZ2までの値を取る場合に跛行とみなされる(図中の「跛行断定中」の期間)。
S1201において、CPU304bは、算出された規則性および対称性の値が、メモリ304cから取得した上記の閾値よりともに小さいか否かを判定する。規則性および対称性の値がともに閾値より小さい場合は(S1201:Yes)、CPU304bは処理をS1202に進める。また、規則性および対称性の値がともに閾値より小さくない場合は(S1201:No)、CPU304bは処理をS1204に進める。
S1202では、CPU304bは、スコアが0より大きいか否かを判定する。スコアが0より大きい場合は(S1202:Yes)、CPU304bは処理をS1203に進める。また、スコアが0より大きくない場合は(S1202:No)、CPU304bは処理をS1207に進める。S1203において、CPU304bはスコアから1を減算する。S1203の処理の後、CPU304bは処理をS1207に進める。
S1204では、CPU304bはスコアにZ1を加算する。S1204の処理の後、CPU304bは処理をS1205に進める。S1205において、CPU304bは、スコアがZ2より大きいか否かを判定する。スコアがZ2より大きい場合は(S1205:Yes)、CPU304bは処理をS1206に進める。また、スコアがZ2より大きくない場合は(S1205:No)、CPU304bは処理をS1207に進める。S1206において、CPU304bは、スコアにZ2を格納する。S1206の処理の後、CPU304bは処理をS1207に進める。
S1207において、CPU304bは、スコアがZ3より大きいか否かを判定する。スコアがZ3より大きい場合は(S1207:Yes)、CPU304bは処理をS1208に進める。また、スコアがZ3より大きくない場合は(S1207:No)、CPU304bは本フローチャートの処理を終了する。S1208では、CPU304bは現在の馬の歩行が跛行として判定されたことを警告する処理を実行する。警告処理としては、例えばCPU304bは、インタフェイス304aを介して表示装置302に警告メッセージを送信する。また、CPU304bは、騎手端末400に対して警告装置401に警告を実行させる命令を送信したり、馬場装置500に対して警告灯501を点灯させる命令を送信したり、馬場内端末600に表示装置601に警告を表示させる命令を送信したりしてもよい。S1208の処理の後、CPU304bは本フローチャートの処理を終了する。
図36のグラフにも示すように、本実施形態では、S1205、S1206の処理が実行されることで、スコアが上昇し続けてもZ2以上に大きくならない。そして、S1202、S1203の処理が実行されて、スコアが下がって閾値Z3より小さくなった段階で跛行の警告が中止される。この際、CPU304bは、表示装置302等に対して警告を中止する指示を送信する。
なお、上記の処理では、算出された規則性および対称性の値を判定する際に設定される正常領域は、図37Aに示すように、規則性および対称性の値が所定の大きさになるまで許容される領域である。ただし、図37Bに示すように、例えば正常領域の代わりに異常領域を設定し、規則性および対称性の値が異常領域内にある場合に跛行を警告する構成とすることもできる。この場合は、上記のS1201の処理を、規則性および対称性の値がそれぞれ設定された異常領域の値の範囲内にあるか否かを判定する処理に変更する。さらに、規則性および対称性の値が当該範囲内にある場合は処理がS1204に進められ、規則性および対称性の値が当該範囲内にない場合は処理がS1202に進められるように変更する。
さらに代替の構成例として、図37Aに示すように設定された正常領域を別の範囲に移動することも可能である。この場合は、上記のS1201の処理を、規則性および対称性の値がそれぞれ設定された正常領域の値の範囲内にあるか否かを判定する処理に変更すればよい。このように構成を変更することで、各馬の歩行特性に応じて跛行の判定基準を調整することができる。
(第5の実施形態)
次に、第5の実施形態について説明する。なお、第4の実施形態と同様の構成要素については、同じ符号を付して詳細な説明は省略する。なお、本実施形態では、フラッシュメモリ304d内に、過去N歩前から現在までに算出された規則性の値と対称性の値を格納するリングバッファ(図示せず)が形成されている。競走馬、特にサラブレッドの脚はもともと奇形であるため歩行が左右非対称であるのは異常ではないという考えもある。この考えに従えば、歩行が正常な、ただし非対称な歩き方をする馬でも、上記の処理によって算出される規則性および対称性の値が正常領域内に集まるとは限らない。また、図37Bのように規則性および対称性の値が異常領域に存在するか否かで歩行判定する構成を採用しても、個々の馬の脚の奇形の状況によって算出される規則性および対称性の値が異なり、汎用的な判定基準とはならない可能性がある。
そこで本実施形態では、個々の馬に固有の規則性および対称性の傾向を把握した上で、規則性および対称性の傾向に変化が生じた場合に警告を行う。本実施形態では、歩行判定対象の馬について、過去に算出された規則性および対称性の値を用いて指標値を計算し、例えば現在から100歩前までの規則性および対称性の値の平均値と指標値とを比較する。そして、これらの値の差が閾値内に収まる場合に歩行は正常であるとみなすことができる。
図38に、本実施形態において実行されるフローチャートを示す。本フローチャートの処理は、例えば、計測端末300を判定対象の馬に装着して、計測端末300の電源をオンにしたときにCPU304bにより開始される。S1301において、CPU304bは、規則性の値の累積和Tr、対称性の値の累積和Ts、TrおよびTsへの加算回数nをそれぞれ0に設定する。さらに、CPU304bは、フラッシュメモリ304d内の上記のリングバッファのカウンタ(Index)に、まだ初期化を行っていない未初期化状態を示す値、例えば「−1」を設定する。本実施例では、未初期化状態を示す値として負の値を用いているが、未初期化状態を区別できる値であれば他の値を使用することとしてもよい。なお、S1301の処理は、CPU304bが実行する代わりに計測端末300の装着時に手動で行ってもよい。あるいは、計測端末300のバッテリ(図示せず)が、計測端末300を長期間、例えば数週間装着し続けて本実施形態の処理を実行することができるだけの容量を有する場合は、例えばCPU304bのクロック周波数を利用した内部タイマ等を用いて所定のタイミングで実行してもよい。S1301の処理の後、CPU304bは処理をS1100に進める。
S1100では、CPU304bは、図33に示すフローチャートの処理を実行して、現在の歩行の規則性および対称性の値を算出する。規則性および対称性の値が算出されると、CPU304bは処理をS1302に進める。S1302では、S1100の処理においてS1115またはS1116、S1118またはS1119、S1120、S1121により、規則性および対称性の値が算出および更新されたか否かを判定する。規則性および対称性の値が算出および更新された場合は(S1302:Yes)、CPU304bは処理をS1305に進める。また、規則性および対称性の値が算出および更新されていない場合は(S1302:No)、CPU304bは処理をS1303に進める。
S1305では、CPU304bは、Tr、TsにS1100の処理により算出された規則性の値と対称性の値をそれぞれ加算し、nの値に1を加算する。次いで、処理はS1306に進められる。S1306において、CPU304bは、フラッシュメモリ304dのリングバッファのカウンタIndexの値が負であるか否かを判定する。Indexの値が負である場合は(S1306:Yes)、CPU304bは処理をS1307に進める。また、Indexの値が負でない場合は(S1306:No)、CPU304bは処理をS1312に進める。
S1307では、S1308〜S1310のループ処理のカウンタとして使用される値iに0を格納する。次いで処理はS1308に進められる。本実施形態では、過去N個分の規則性の値と対称性の値とをそれぞれ格納できるリングバッファが設けられており、規則性の値を格納するリングバッファの配列をDr、対称性の値を格納するリングバッファの配列をDsとする。また、配列Dr、Dsの番号は0〜N−1とし、Dr[i]、Ds[i]は、それぞれ番号がiである配列に格納されているデータを意味する。S1308〜S1310のループ処理により番号0〜N−1の各配列Dr、Dsには、S1100で算出された規則性の値と対称性の値がそれぞれ格納される。S1308〜S1310のループ処理が完了すると(S1310:No)、CPU304bは処理をS1311に進める。
S1311において、CPU304bはIndexの値に0を格納し、番号0〜N−1の各配列Dr、Dsに格納されているデータの総和Sr、Ssを計算する。S1308〜S1310のループ処理により、番号0〜N−1の各配列Dr、DsにはS1100で算出された規則性の値と対称性の値が格納されるため、Sr、SsにはS1100で算出された規則性の値と対称性の値にNを乗算した値がそれぞれ格納される。これにより、移動平均を演算するIIR(Infinite Impulse Response)フィルタの初期化を行うことがで
きる。S1311の処理の後、CPU304bは処理をS1303に進める。
S1312では、CPU304bは、S1100で算出された対称性の値から番号がIndexの値である配列Dsに格納されている値を減算した値をSsに加算する。また、CPU304bは、S1100で算出された規則性の値から番号がIndexの値である配列Drに格納されている値を減算した値をSrに加算する。そして、CPU304bは、処理をS1313に進めて、番号がIndexの値である配列DsにS1100で算出された対称性の値を格納し、番号がIndexの値である配列DrにS1100で算出された規則性の値を格納する。次いで、CPU304bは、処理をS1314に進める。
S1314において、CPU304bはIndexの値に1を加算する。そして、CPU304bは、処理をS1315に進めて、Indexの値がN以上であるか否かを判定する。Indexの値がN以上である場合は(S1315:Yes)、CPU304bは処理をS1316に進める。また、Indexの値がN以上でない場合は(S1315:No)、CPU304bは処理をS1317に進める。S1316では、CPU304bはIndexの値を0に戻す。そして、CPU304bは処理をS1317に進める。S1317では、CPU304bは、TrおよびTsへの加算回数nがN以上であるか否かを判定する。nがN以上である場合は(S1317:Yes)、CPU304bは処理をS1318に進める。nがN以上でない場合は(S1317:No)、CPU304bは処理をS1303に進める。
本実施形態では、S1307〜S1311の処理により、移動平均の算出処理の初期化を行い、S1100により初回に算出された規則性および対称性の値が過去N回分の値として配列Dr、Dsに格納される。したがって、規則性の累積和Tr、対称性の累積和Tsの加算回数nがS1301において0にされてからN以上となるまで、配列Dr、Dsに格納されているデータの総和Sr、Ssは、S1100において算出される規則性および対称性の値を正しく反映していない。そこで、S1317では、nがN以上となった場合にS1318〜S1320の警告の要否の判定および警告の実行の処理が実行されるようにCPU304bの処理を制御する。
また、本実施形態では、1日ごとに計測端末300を歩行判定の対象である馬に装着および取り外しを繰り返す。したがって、例えば、計測端末300を装着した馬の1日の訓練等が終了したときに、馬から計測端末300を取り外す。馬から計測端末300が取り
外されると、図38に示すように、CPU304bは処理をS1303からS1304に進める。本実施形態では、計測端末300の装着から脱着までに算出された規則性の値と対称性の値の平均値Tr/n、Ts/nを用いて、計測端末300を装着した馬の、前日までの規則性の傾向を示す値Crと前日における対称性の傾向を示す値Csとを算出する。なお、S1303において、CPU304bがタイマ(図示せず)を用いて所定時間が経過したか否かを判定する処理を実行する構成としてもよい。この場合は、Cs、Crの値は、それぞれ前回装着時までの対称性の傾向を示す値と規則性の傾向を示す値となる。
S1304では、CPU304bは、0.9×Cr+0.1×Tr/nにより算出される値を、前日までの規則性の傾向を示す新たな値としてCrに格納する。同様に、CPU304bは、0.9×Cs+0.1×Ts/nにより算出される値を、前日までの対称性の傾向を示す新たな値としてCsに格納する。S1304の処理により、本日における規則性の値と対称性の値の平均値と、前日までの規則性および対称性の傾向を示す値を適当な重み付けで足し合わせられる。なお、S1304の計算における重み付けは適宜変更できる。また、S1304における算出方法は、いわゆる一般的な一次遅れ系のFIR(Finite Impulse Response)フィルタを用いる場合の計算である。ただし、この算出方法の
代わりに、過去数日分の移動平均を求める等、周知の方法を用いて前日までの規則性および対称性の傾向を示す値を求めることができる。
さらに、本実施形態では、S1100において算出される規則性および対称性の値について、現在から過去N回にわたる平均値Ss/N、Sr/Nを算出し、S1304において算出される前日までの規則性および対称性の傾向を示す値Cs、Crと比較する。比較方法としては、図39に示すように、規則性の値と対称性の値とをそれぞれ縦軸と横軸として、過去N回の規則性および対称性の値の平均値が示す点と、前日までの規則性および対称性の傾向を示す値が示す点との間の距離を所定の閾値と比較する。
図38のS1318では、CPU304bは、以下の式(12)を用いて過去N回の規則性および対称性の値の平均値が示す点と、前日までの規則性および対称性の傾向を示す値が示す点との間の距離の2乗である値Rを算出する。
R=(Ss/N−Cs)2+(Sr/N−Cr)2・・・(12)
当該距離は、厳密には値Rの平方根であるが、S1319において閾値と比較する点を踏まえると、平方根を取らずに計算する方がCPU304bの処理負荷を軽減することができるため、S1318ではRの値を算出する。CPU304bは、S1318の処理を終了すると、処理をS1319に進める。
S1319では、CPU304bは、S1318で算出したRを所定の閾値より大きいか否かを判定する。図39からわかるように、Rの値が大きくなるほど、現在から過去N回までの規則性および対称性が、前日までの規則性および対称性の傾向から乖離する度合いが大きくなる。S1319において、Rが所定の閾値より大きいと判定された場合は(S1319:Yes)、現在から過去N回までの規則性および対称性が異常であるとみなし、CPU304bは処理をS1320に進める。また、Rが所定の閾値より大きくないと判定された場合は(S1319:No)、現在から過去N回までの規則性および対称性は正常であるとみなし、CPU304bは処理をS1303に進める。
S1320では、CPU304bは、現在の馬の歩行が跛行であるとみなして警告を行う。なお、警告処理は第4の実施形態と同様であるため、詳細な説明は省略する。CPU304bは警告処理を行った後、処理をS1303に進める。なお、S1319において、式(12)により算出されるRを所定の閾値を用いて判定する構成の代わりに、R1=(Ss/N−Cs)2、R2=(Sr/N−Cr)2として、R1、R2をそれぞれの閾値と比較し、R1、R2がともに各閾値より大きいか否かを判定する構成を採用してもよい
。また、式(12)の各項に適当な定数を乗算することで、規則性および対称性に対して重み付けを行ってもよい。
(第6の実施形態)
次に、第6の実施形態について説明する。なお、上記の実施形態と同様の構成要素には同一の符号を付し、詳細な説明は省略する。従来、例えば競走馬を対象として、移動中の加速度を計測する場合、競走馬にGPSセンサを搭載した装置を装着し、当該装置から送信されるGPSデータに基づいて加速度を算出していた。一般に、GPSセンサは、一定間隔の時間で現在の位置情報および時刻情報を含むGPSデータを出力する。そして、一定間隔の時間でGPSデータを測定する場合、測定時の馬の状態、例えばギャロップ時における馬体の伸び縮み等が測定タイミングごとに異なる可能性がある。このため、馬の各脚の位置関係が同じ状態となるタイミングでGPSデータを測定し続けることができないため、測定タイミングごとの馬の各脚の位置関係のばらつきが、算出される加速度の増減に反映される。
GPSセンサによるGPSデータの出力間隔を短くすることで、より多くのGPSデータを収集し、所定の単位時間ごとに算出した加速度の平均を求めることで、加速度の計測精度を高める方法も考えられる。しかし、この方法は、GPSセンサの消費電力を増加させるため、上記の実施形態における計測端末等に搭載することを考えた場合に現実的とはいえない。そこで、本実施形態では、上記の実施形態で使用した計測端末にGPS装置を搭載し、GPS装置の消費電力を抑えつつ加速度を精度よく算出する方法について説明する。
図40には、本実施形態における、計測端末700、計測端末700と通信を行う騎手端末400、馬場装置500、馬場内端末600を示す。計測端末700は、3軸加速度センサ301、表示装置302、通信装置303、サブマイコン304、GPSセンサ305、タイマ306を有する。計測端末700が、計測装置の一例に相当する。サブマイコン304は、インタフェイス304a、CPU304b、メインメモリ304c、フラッシュメモリ304dを有する。GPSセンサ305は周知のものであり、計測端末700の現在位置に関する位置情報および時刻情報を、インタフェイス304aを介してCPU304bに送信する。CPU304bは、GPSセンサ305から受信した位置情報および時刻情報をフラッシュメモリ304dに記憶する。タイマ306は現在時刻を計時し、インタフェイス304aを介してCPU304bにより現在時刻に関するデータが取得される。
本実施形態では、計測端末700のメインメモリ304cに記憶されているアプリケーション等が、CPU304bによって実行される。このようなアプリケーション等の実行により、図41に示すように、計測端末700は、歩容特定部7001、歩容判定部7002、位置情報生成部7003、加速度算出部7004として機能する。ただし、歩容特定部7001、歩容判定部7002、位置情報生成部7003、加速度算出部7004のいずれか1つ以上が、ハードウェア回路であってもよい。
歩容特定部7001は、3軸加速度センサ301から取得した加速度データを用いて計測端末700が装着された馬の歩容を特定する。歩容判定部7002は、歩容特定部7001により特定された歩容を用いて馬の所定の脚、本実施形態では右前脚が着地したか否かを判定する。位置情報生成部7003は、計測端末700が装着された馬の所定の脚、本実施形態では右前脚が着地したと判定したときの馬の位置を示す位置情報を、GPSセンサ305から取得したGPSデータが示す位置情報と時間情報とを用いて生成する。加速度算出部7004は、生成した位置情報とGPSデータが示す時間情報とを用いて、計測端末700が装着された馬の所定の脚、本実施形態では右前脚が着地したと判定してか
ら再度馬の所定の脚、本実施形態では右前脚が着地したと判定するまでの馬の移動における加速度の平均値を算出する。各部の処理の詳細については後述する。
次に、図42のフローチャートを参照しながら、本実施形態における加速度を算出する処理について説明する。本フローチャートの処理は、例えば、計測端末700を計測対象の馬に装着して、計測端末700の電源をオンにしたときにCPU304bにより開始される。また、CPU304bは、本フローチャートの処理を所定の時間間隔で繰り返し実行する。
なお、S1401では、CPU304bは、3軸加速度センサ301の出力データを用いて、上記の第2の実施形態と同様の処理を行うことで、計測端末700が装着されている馬の歩行判定、歩容判定、歩数計測の各処理を行う。また、CPU304bはタイマ306から現在時刻のデータを取得する。ここで取得した現在時刻のデータが示す時間をTpとする。これにより、当該馬の各脚のうち、例えば右前脚が着地したタイミングを検出することができる。本実施形態では、計測端末700が装着されている馬の右前脚が着地したタイミングに基づいて加速度の算出を行う。なお、右前脚の代わりに他の脚が着地したタイミングに基づいても以下の加速度の算出を行うことができる。S1401の処理の後、CPU304bは処理をS1402に進める。
S1402では、CPU304bは、S1401の処理結果が馬の右前脚が着地したことを示すか否かを判定する。S1401の処理結果が馬の右前脚が着地したことを示す場合は(S1402:Yes)、CPU304bは処理をS1403に進める。また、S1401の処理結果が馬の右前脚が着地したことを示さない場合は(S1402:No)、CPU304bは本フローチャートの処理を終了する。
S1403では、CPU304bは、S1401の処理結果を算出した時間Tpの前後にGPSセンサ305から取得したGPSデータを、フラッシュメモリ304dから読み出す。本実施形態では、例えば、S1401の処理結果を算出した時間Tpの直前の時間Taに取得したGPSデータが示す緯度をXa、経度をYaとし、S1401の処理結果を算出した時間Tpの直後の時間Tbに取得したGPSデータが示す緯度をXb、経度をYbとする。これにより、計測端末700を装着した馬の右前脚が着地した時間の前後における計測端末700の位置がわかる。S1403の処理の後、CPU304bは処理をS1404に進める。
S1404では、CPU304bは、以下の式(13)を用いて、計測端末700を装着した馬の右前脚が着地した時間Tpの前後における緯度に基づいて補正した緯度Xpを算出する。
Xp=Xa+(Xb−Xa)×(Tp−Ta)/(Tb−Ta)・・・(13)
ここで、Tp−Taは、GPSデータの緯度Xaおよび経度Yaが取得されてからS1401において処理結果が算出されるまでの経過時間(例えばミリ秒単位)を示す。また、Tb−Taは、GPSデータの緯度Xaおよび経度Yaが取得されてからGPSデータの緯度Xbおよび経度Ybが取得されるまでの経過時間(例えばミリ秒単位)を示す。本実施形態では、式(13)により算出されるXpを時間Tpにおける緯度とみなす。S1404の処理の後、CPU304bは処理をS1405に進める。
S1405では、CPU304bは、以下の式(14)を用いて、計測端末700を装着した馬の右前脚が着地した時間Tpの前後における経度に基づいて補正した経度Ypを算出する。
Yp=Ya+(Yb−Ya)×(Tp−Ta)/(Tb−Ta)・・・(14)
本実施形態では、式(14)により算出されるYpを時間Tpにおける経度とみなす。S
1405の処理の後、CPU304bは処理をS1406に進める。
S1406では、CPU304bは、以下の式(15)を用いて、S1401の処理結果を算出した時間Tpにおける単位時間(例えば1秒)あたりの移動距離、すなわち速さVpを算出する。
Vp=Tu×{(Xp−Xo)2+(Yp−Yo)2}1/2/(Tp−To)・・・(15
)
ここで、Tuは、Vpを算出する際に採用する単位時間と、GPSデータの時間情報およびタイマ306の時間情報が示す単位時間との関係に基づいて決定される定数である。例えば、Vpを1秒あたりの速さとして求め、式(13)および(14)においてTa、Tb、To、Tpがミリ秒単位の時間として計算される場合は、Tu=1000である。Xo、Yoは、それぞれ前回の処理においてS1404、S1405により算出されたXp、Ypを意味する。また、Toは、前回の処理においてS1401の処理結果が算出された時間を意味する。前回および今回の処理において算出された緯度および経度(すなわちXo、Yo、Xp、Yp)とS1401にの処理結果が算出された時間(すなわちTo、Tp)は、それぞれフラッシュメモリ304dに記憶される。S1406の処理の後、CPU304bは処理をS1407に進める。
S1407では、CPU304bは、以下の式(16)を用いて、前回の処理においてS1401の処理結果が算出された時間Toから今回の処理においてS1401の処理結果が算出された時間Tpまでの経過時間における加速度Apを算出する。
Ap=(Vp−Vo)/(Tp−To)・・・(16)
なお、CPU304bは、算出した加速度Apの値をフラッシュメモリ304dに格納する。S1407の処理が終了すると、CPU304bは本フローチャートの処理を終了する。
図43A、図43Bに、上述した従来の方法により一定の時間間隔で取得したGPSデータに基づいて加速度を算出した場合の測定データと、本実施形態における上記のフローチャートの処理を実行して加速度を算出した場合の測定データをそれぞれ示す。図43Aおよび図43Bに示すグラフにおいて、横軸が時間(s)で、縦軸が加速度(m/s2)
である。なお、図43Aおよび図43Bに示すグラフにおいて、横軸の時間の長さは同じである。
図43Aに示すように、従来の計測方法では加速度のデータ自体は算出できるが、上記の通り、各算出時において馬の歩行(走行)状態、特に各脚の位置関係がばらついているため、加速度の増減傾向が把握できない。一方、本実施形態における計測方法によれば、馬の右前脚が着地したタイミングを検出して馬の歩行(走行)状態が略同じとなるときに加速度が算出され続ける。例えば、ギャロップ中に各脚が空中に浮いている場合は上下加速度が略0になり、右前脚が着地した後に馬が右前脚を踏み込む場合は上下加速度が極大値を取る。本実施形態によれば、このように馬の歩行(走行)状態が異なるときの加速度の影響を受けることなく、図43Bに示すように、加速度の増減傾向が目視でも確認できる程度まで精度よく馬の加速度を計測することができる。
なお、本実施形態において、加速度の評価目的に合わせて、S1407において算出された加速度のデータに対して適宜フィルタリングや補正を行ってもよい。また、一般に、馬が走行時に右前脚が着地するタイミングは1秒間に約2回発生する。そのため、例えばGPSセンサ305のGPSデータ取得の周期が1秒であるとすると、GPSデータ取得の1周期内に、右前脚の着地が複数回発生する。このような場合でも、本実施形態の処理により、馬の右前脚が着地する各タイミングにおける計測端末の位置を算出することができる。
以上が本実施形態に関する説明であるが、上記の情報処理装置の構成や処理は、上記の実施形態に限定されるものではなく、本発明の技術的思想と同一性を失わない範囲内において種々の変更が可能である。以下に、上記の実施形態における変形例を3例説明する。
(変形例1)
図30Aおよび図30Bにおける上記の説明では、上下加速度のグラフと時間軸とので囲まれる面積を速さとして用いた。そのため、図33に示すフローチャートにおいて、S1107とS1111とにおいて、上下加速度が正であるときと負であるときのそれぞれの場合における当該面積を算出し、それらの合計を速さとして算出した。すなわち、図44を用いて説明すると、S1111の処理が完了した時点で、S1=d1 2+d2 2、S2=d3 2+d4 2が計算されていることとなる。ここで、上記の実施形態において、3軸加速度センサの取り付け高さは一定であるため、上下方向の速度の平均値は0とみなすことができる。そして、一歩ごとに上下方向の速度の平均値を0とみなすと、d1=−d2とみなすことができる。したがって、d1とd2の平均値を以下の式(17)により定義すると、
d3とd4の平均値も同様に定義でき、S1、S2を変形して式(18)、(19)が得られる。
したがって、対称性、規則性は以下の式(20)、(21)によりそれぞれ算出することができる。
第4の実施形態でも説明したように、規則性および対称性の値を閾値と比較する上では、式(20)、(21)のように平均値の比を2乗しなくてもよい。したがって、対称性、規則性は以下の式(22)、(23)によりそれぞれ算出することができる。
式(22)、(23)を踏まえると、図33に示すフローチャートにおいて、S1107でS1=S×Sを計算する代わりにS1=−Sを計算し、さらにS1111でS1+=S×Sを計算する代わりにS1+=Sを計算する処理にそれぞれ変更することができる。
(変形例2)
次に変形例2について説明する。例えば、馬はいずれかの脚を負傷している場合、負傷した脚をかばうため、上記で説明した上下加速度の正の成分において、一歩前の上下加速度の正の成分との差が現れるとも考えられている。この考えに従うと、図45において、d1とd3との比較結果を、馬が脚を負傷しているか否かを判定する1つの基準として用いることができる。そして、上記の実施形態において、規則性および対称性の値に加えて、d1とd3との比の値が所定の範囲内にあるか否かを第3の判定基準として用いてもよい。この場合、図45に示すように、d1とd3の比の値を第3の評価軸として設定し、規則性の値と対称性の値とにより3次元の異常領域を定めることができる。
なお、d1とd3との比の値は、図33のフローチャートにおいてS1111の処理を省略し、S1112〜S1116の処理を実行することで算出することができる。したがって、まず図33のフローチャートの処理を行って規則性および対称性の値を算出し、さらに図33のフローチャートにおいてS1111、S1113〜S1120の処理を省略した処理を実行することでd1とd3の比の値を算出する。そして、図35のフローチャートを実行する際に、S1201において規則性および対称性の値に加え、d1とd3の比の値がともに小さいか否かを判定することで、算出した値が図45に示す異常領域内にあるか否かを判定し、跛行を警告することができる。
(変形例3)
次に変形例3について説明する。上記の説明では、計測端末700のGPSセンサ305は、一定の時間間隔でGPSデータを生成する。本変形例では、GPSセンサ305によるGPSデータの生成タイミングを制御できる場合に、計測端末700を装着した馬の移動における加速度を算出する際のCPU304bの処理について説明する。本変形例では、CPU304bが任意のタイミングでGPSセンサ305にGPSデータの生成を指示して生成されたGPSデータを取得することができるものとする。なお、本変形例の計測端末の構成は、計測端末700からタイマ306が削除された点を除いて第6の実施形態と同様であるため、第6の実施形態と同じ構成要素については同一の符号を用い、図示および詳細な説明は省略する。
図46のフローチャートを参照しながら、本変形例におけるCPU304bが実行する処理について説明する。S1501において、CPU304bは、3軸加速度センサの出力データを用いて、上記の第2の実施形態と同様の処理を行うことで、計測端末700が装着されている馬の歩行判定、歩容判定、歩数計測の各処理を行う。次いで処理はS1502に進められる。S1502の処理は、図42のフローチャートにおけるS1402と同じであるため説明を省略する。
S1503において、CPU304bはGPSセンサ305から現在のGPSデータを取得する。次いで処理はS1504に進められる。S1504において、CPU304bは、前回の処理においてS1503において取得したGPSデータの緯度と今回の処理においてS1503において取得したGPSデータの緯度の差分を算出する。次いで処理はS1505に進められる。S1505において、CPU304bは、前回の処理においてS1503において取得したGPSデータの経度と今回の処理においてS1503において取得したGPSデータの経度の差分を算出する。次いで処理はS1506に進められる。
S1506において、CPU304bは前回および今回の処理においてS1503において取得したGPSデータの時刻情報から、前回の処理における右前脚の着地時刻から今回の処理における右前脚の着時時刻までの経過時間を算出する。さらにCPU304bは、算出した経過時間とS1504、S1505において算出した緯度および経度の差分と
を用いて速さを算出する。次いで処理はS1507に進められる。S1507では、CPU304bはS1506において算出した経過時間とS1506において算出した速さとを用いて加速度を算出する。S1507の処理が終了すると、CPU304bは本フローチャートの処理を終了する。
本変形例では、S1501、S1502において右脚前が着地した時点におけるGPSデータが取得できる。このため、CPU304bは、図42のフローチャートに示すようにタイマ306から出力される時間情報およびGPSデータに基づく緯度および経度の補正処理や式(13)〜式(16)の計算処理は実行しない。このため、第6の実施形態に比べてCPU304bに対する処理負荷をさらに軽減しつつ、精度よく馬の加速度を算出することができる。
<コンピュータが読み取り可能な記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記情報処理装置の設定を行うための管理ツール、OSその他を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。ここで、コンピュータは、例えば、計測端末等である。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリ等のメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM等がある。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
四脚動物に取り付けられた計測装置に、
前記四脚動物に取り付けられた加速度センサから3次元空間の加速度データを取得させ、
前記取得した加速度データを用いて前記四脚動物の歩容を特定させ、
前記特定した前記四脚動物の歩容を用いて前記四脚動物の右前脚と左後脚、左前脚と右後脚の移動がそれぞれ対になっているか否かを判定させ、
前記四脚動物の右前脚と左後脚、左前脚と右後脚の移動がそれぞれ対になっていると判定した場合に、前記取得した加速度データを用いて、前記取得した加速度データの時間変化における連続する3つの周期について、周期ごとの運動エネルギを示す値を算出させ、
前記算出した運動エネルギを示す値を用いて、前記連続する3つの周期における隣り合う周期間の運動エネルギの比と1周期離れた周期間の運動エネルギの比を算出させる、
ことを特徴とする計測プログラム。
(付記2)
前記計測装置にさらに、
前記隣り合う周期間の運動エネルギの比と前記1周期離れた周期間の運動エネルギの比とが所定の閾値より小さい場合に、前記四脚動物の歩行が異常であると判定させる
ことを特徴とする付記1に記載の計測プログラム。
(付記3)
前記計測装置にさらに、
過去の前記隣り合う周期間の運動エネルギの比の累積和と前記1周期離れた周期間の運動エネルギの比の累積和を用いた指標値を算出させ
現在の前記隣り合う周期間の運動エネルギの比の累積和と前記1周期離れた周期間の運動エネルギの比の累積和が前記指標値から所定量だけ乖離している場合に、前記四脚動物の歩行が異常であると判定させる
ことを特徴とする付記1に記載の計測プログラム。
(付記4)
四脚動物に取り付けられた計測装置に、
前記四脚動物に取り付けられた加速度センサから3次元空間の加速度データを取得させ、
前記取得した加速度データを用いて前記四脚動物の歩容を特定させ、
前記特定した前記四脚動物の歩容を用いて前記四脚動物の所定の脚が着地したか否かを判定させ、
前記四脚動物の所定の脚が着地したと判定したときの前記四脚動物の位置を示す位置情報を、前記四脚動物に取り付けられたGPSセンサから取得したGPSデータが示す位置情報と時間情報とを用いて生成させ、
前記生成した位置情報と前記GPSデータが示す時間情報とを用いて、前記四脚動物の所定の脚が着地したと判定してから再度前記四脚動物の所定の脚が着地したと判定するまでの前記四脚動物の移動における加速度の平均値を算出させる
ことを特徴とする計測プログラム。
(付記5)
四脚動物に取り付けられる計測装置であって、
3次元空間の加速度データを出力する加速度センサと、
前記加速度センサから取得した前記加速度データを用いて前記四脚動物の歩容を特定する歩容特定部と、
前記特定した前記四脚動物の歩容を用いて前記四脚動物の右前脚と左後脚、左前脚と右後脚の移動がそれぞれ対になっているか否かを判定する歩容判定部と、
前記取得した加速度データを用いて、前記取得した加速度データの時間変化における連続する3つの周期について、周期ごとの運動エネルギを示す値を算出する運動エネルギ値算出部と、
前記算出した運動エネルギを示す値を用いて、前記連続する3つの周期における隣り合う周期間の運動エネルギの比と1周期離れた周期間の運動エネルギの比を算出させる運動エネルギ比算出部と、
を有することを特徴とする計測装置。
(付記6)
前記隣り合う周期間の運動エネルギの比と前記1周期離れた周期間の運動エネルギの比とが所定の閾値より小さい場合に、前記四脚動物の歩行が異常であると判定する歩行判定部を有することを特徴とする付記5に記載の計測装置。
(付記7)
過去の前記隣り合う周期間の運動エネルギの比の累積和と前記1周期離れた周期間の運動エネルギの比の累積和を用いた指標値を算出する指標値算出部と、
現在の前記隣り合う周期間の運動エネルギの比の累積和と前記1周期離れた周期間の運動エネルギの比の累積和が前記指標値から所定量だけ乖離している場合に、前記四脚動物の歩行が異常であると判定する歩行判定部と
を有することを特徴とする付記5に記載の計測装置。
(付記8)
四脚動物に取り付けられる計測装置であって、
GPSセンサと、
3次元空間の加速度データを出力する加速度センサと、
前記取得した加速度データを用いて前記四脚動物の歩容を特定する歩容特定部と、
前記特定した前記四脚動物の歩容を用いて前記四脚動物の所定の脚が着地したか否かを判定する歩容判定部と、
前記四脚動物の所定の脚が着地したと判定したときの前記四脚動物の位置を示す位置情報を、前記GPSセンサから取得したGPSデータが示す位置情報と時間情報とを用いて生成する位置情報生成部と、
前記生成した位置情報と前記GPSデータが示す時間情報とを用いて、前記四脚動物の所定の脚が着地したと判定してから再度前記四脚動物の所定の脚が着地したと判定するまでの前記四脚動物の移動における加速度の平均値を算出する加速度算出部と
を有することを特徴とする計測装置。
(付記9)
四脚動物に取り付けられた加速度センサから3次元空間の加速度データを取得し、
前記取得した加速度データを用いて前記四脚動物の歩容を特定し、
前記特定した前記四脚動物の歩容を用いて前記四脚動物の右前脚と左後脚、左前脚と右後脚の移動がそれぞれ対になっているか否かを判定し、
前記四脚動物の右前脚と左後脚、左前脚と右後脚の移動がそれぞれ対になっていると判定した場合に、前記取得した加速度データを用いて、前記取得した加速度データの時間変化における連続する3つの周期について、周期ごとの運動エネルギを示す値を算出し、
前記算出した運動エネルギを示す値を用いて、前記連続する3つの周期における隣り合う周期間の運動エネルギの比と1周期離れた周期間の運動エネルギの比を算出する
ことを特徴とする計測方法。
(付記10)
前記隣り合う周期間の運動エネルギの比と前記1周期離れた周期間の運動エネルギの比とが所定の閾値より小さい場合に、前記四脚動物の歩行が異常であると判定することを特徴とする付記9に記載の計測方法。
(付記11)
過去の前記隣り合う周期間の運動エネルギの比の累積和と前記1周期離れた周期間の運動エネルギの比の累積和を用いた指標値を算出し、
現在の前記隣り合う周期間の運動エネルギの比の累積和と前記1周期離れた周期間の運動エネルギの比の累積和が前記指標値から所定量だけ乖離している場合に、前記四脚動物の歩行が異常であると判定する
ことを特徴とする付記9に記載の計測方法。
(付記12)
四脚動物に取り付けられた加速度センサから3次元空間の加速度データを取得し、
前記取得した加速度データを用いて前記四脚動物の歩容を特定し、
前記特定した前記四脚動物の歩容を用いて前記四脚動物の所定の脚が着地したか否かを判定し、
前記四脚動物の所定の脚が着地したと判定したときの前記四脚動物の位置を示す位置情報を、前記四脚動物に取り付けられたGPSセンサから取得したGPSデータが示す位置情報と時間情報とを用いて生成し、
前記生成した位置情報と前記GPSデータが示す時間情報とを用いて、前記四脚動物の
所定の脚が着地したと判定してから再度前記四脚動物の所定の脚が着地したと判定するまでの前記四脚動物の移動における加速度の平均値を算出する
ことを特徴とする計測方法。