(58)【調査した分野】(Int.Cl.,DB名)
前記更新タイミング判定手段は、シッティング、ダンシング、慣性走行及び歩行を含む行動推定情報を用いて、前記パラメータを更新するタイミングを判定する、請求項1に記載の軌跡推定装置。
前記更新タイミング判定手段は、前記信頼度判定手段が前記衛星測位情報の信頼度が高いと判定したときに、前記パラメータを更新するタイミングを判定する、請求項1又は2に記載の軌跡推定装置。
前記更新タイミング判定手段は、前記信頼度判定手段が前記衛星測位情報の信頼度が低いと判定したときには前記パラメータを更新しない、請求項1又は2に記載の軌跡推定装置。
前記更新タイミング判定手段は、前記行動推定情報がシッティング又はダンシングである場合、自転車のケイデンスが安定していて、且つ経路が下り坂ではなく、且つ路面が所定の粗さ未満であるときに前記パラメータを更新する、請求項2に記載の軌跡推定装置。
【発明を実施するための形態】
【0012】
以下、本発明をウェアラブルデバイスに適用した場合の一実施形態について、図面を参照して詳細に説明する。
本実施形態においては、特にサイクリングやトレッキング、トレイルランニング等のアウトドアスポーツに特化したウェアラブルデバイスに適用した場合について説明する。
【0013】
図1は、自転車BCに乗ってサイクリングを行なうサイクリストCLが、ウェアラブルデバイス10を装着した状態を例示するものである。サイクリストCLは、ウェアラブルデバイス10を、腰部の背面側中央に位置させるべく、例えばサイクルパンツのベルト部分にウェアラブルデバイス10の本体に付属したクリップにより装着する。
【0014】
図2Aは、本発明の一態様における上記ウェアラブルデバイス10の電子回路の機能構成を示すブロック図である。同図において、このウェアラブルデバイス10は、CPU11、メインメモリ12、及びプログラムメモリ13からなるコントローラCNTを中心として動作する。
【0015】
ここでCPU11が、フラッシュメモリ等の不揮発性メモリで構成されるプログラムメモリ13に記憶されている動作プログラムや各種固定データ等を読み出し、SRAM等で構成されるメインメモリ12に展開して保持させた上で、その動作プログラムを順次実行することで、後述する動作等を統括して制御する。もちろん、CPU以外のプロセッサ、例えば、ASIC(Application Specification Integrated Circuit)、FPGA(Field Programmable Gate Array)等が用いられてもよい。
【0016】
このCPU11、メインメモリ12、及びプログラムメモリ13に対し、バスBを介して、通信インタフェイス(I/F)14、GPS受信部15、操作部16、メモリカード17、及びセンサインタフェイス(I/F)18が接続される。
【0017】
通信インタフェイス14は、アンテナ19を用いて、例えばIEEE802.11a/11b/11g/11n規格による無線LAN技術、Bluetooth(登録商標)、Bluetooth(登録商標)LE(Low Energy)による近距離無線通信技術等を用いて、外部の図示しないスマートフォンやパーソナルコンピュータ(PC)、デジタルカメラ等の機器とデータ通信を行なう回路である。
【0018】
GPS受信部15は、GPSアンテナ20を用いて、図示しない複数のGPS衛星からの到来電波を受信し、現在位置の絶対的な3次元座標位置(緯度/経度/高度)と現在時刻とを算出する。
【0019】
なお上記GPSアンテナ20及びGPS受信部15は、上記GPS以外の衛星測位システム、例えばGLONASS(GLObal NAvigation Satellite System)や我が国の地域航法衛星システムである準天頂衛星システムQZSS(Quasi−Zenith Satellite System)等にも対応して、それらの衛星からの到来電波も受信し、より高い精度で現在位置の3次元座標と現在時刻とを算出できるものでも良い。
【0020】
その場合、下記動作時の説明においてGPS測位を行なうと記述した際には、上記GPS以外の衛星測位システムによる測位動作も合わせて実行するものとする。
【0021】
操作部16は、このウェアラブルデバイス10に設けられた、電源キーや活動内容をセットするセットキー、計測のスタート/エンドを指示するキー等の操作を受付け、上記CPU11へ操作キー信号を送信する。
【0022】
メモリカード17は、カードスロットCSを介してこのウェアラブルデバイス10に着脱自在に設けられるもので、外部の機器等との無線接続ができない状態でも、このウェアラブルデバイス10で検出した各種データを記録するために装着される。
【0023】
センサインタフェイス18は、例えば加速度センサ21、ジャイロセンサ22、地磁気センサ23、気圧センサ24、温度センサ25、及び心拍センサ26を接続し、各センサの検出出力を受付けてデジタルデータ化し、上記CPU11へ送出する。
【0024】
加速度センサ21は、互いに直交する3軸に沿ったそれぞれの加速度を検出することで、このウェアラブルデバイス10を装着しているメンバーの姿勢(重力加速度方向を含む)と与えられる外力の方向とを検出する。
【0025】
ジャイロセンサ22は、互いに直交する3軸に沿ったそれぞれの角速度を検出する、振動型ジャイロスコープで構成され、このウェアラブルデバイス10の姿勢変化の度合いを検出する。振動型ジャイロスコープ以外の他の角速度センサであってもよい。
【0026】
地磁気センサ23は、互いに直交する3軸に沿ったそれぞれの磁北方向に対する地磁気強度を検出する、磁気抵抗効果素子(MRセンサ)で構成され、磁北方向を含めてこのウェアラブルデバイス10が移動している方位を検出する。
【0027】
上記加速度センサ21、ジャイロセンサ22、及び地磁気センサ23の各検出出力を組み合わせることにより、上記GPSアンテナ20、GPS受信部15による現在位置の絶対値を検出できない、屋内、トンネル内などの環境下でも、3次元空間内での自律航法(デッドレコニング(DR))に基づく、方位を考慮した行動軌跡を得ることができる。
【0028】
気圧センサ24は、気圧を検出することで、気圧状態の変化を検出すると共に、上記GPS受信部15の出力から得られる高度情報と組み合わせて、その後にGPS測位ができなくなった場合の高度の推定にも利用できる。
【0030】
心拍センサ26は、このウェアラブルデバイス10を装着するサイクリストCLが左胸部に装着した心電検出素子(不図示)からの検出信号を受けて、サイクリストCLの心拍を検出する。
【0031】
図2Bは、本発明の他の態様における上記ウェアラブルデバイス10及び外部機器30の電子回路の機能構成を示すブロック図である。同図において、ウェアラブルデバイス10は、
図2Aに示すものと同様であるため、その説明は省略する。
【0032】
外部機器30は、スマートフォン、PCなどの電子機器である。外部機器30は、CPU31、メインメモリ32、及びプログラムメモリ33からなるコントローラCNT1を中心として動作する。
【0033】
ここでCPU31が、フラッシュメモリ等の不揮発性メモリで構成されるプログラムメモリ33に記憶されている動作プログラムや各種固定データ等を読み出し、SRAM等で構成されるメインメモリ32に展開して保持させた上で、その動作プログラムを順次実行することで、後述する動作等を統括して制御する。もちろん、CPU以外のプロセッサ、例えば、ASIC(Application Specification Integrated Circuit)、FPGA(Field Programmable Gate Array)等が用いられてもよい。
【0034】
このCPU31、メインメモリ32、プログラムメモリ33、さらにディスプレイ34に対し、バスB1を介して、通信インタフェイス(I/F)35が接続される。通信インタフェイス35は、アンテナ36を用いて、上述の近距離無線通信技術等によりウェアラブルデバイス10とデータ通信を行う回路である。すなわち、ウェアラブルデバイス10の通信インタフェイス14が、アンテナ19、36を介して、外部機器30の通信インタフェイス35とデータ通信を行う。
【0035】
次に本実施形態の動作について説明する。
ここでは、ウェアラブルデバイス10を装着したサイクリストCLが、サイクリングに際して、動作モードを「サイクリング」にセットした上で計測を開始し、サイクリングを終えた時点で計測を終了し、その後に当該サイクリングの行程解析を行なう間での一連の処理について説明する。
【0036】
例えば、
図2Aに示すウェアラブルデバイス10は、計測から解析までの一連の処理を実行可能である。また、
図2Bに示すウェアラブルデバイス10は、計測から解析までの一連の処理の一部を実行し、残りの処理をスマートフォンやPC等の外部機器30が実行する。
【0037】
以下では、
図2Aに示すウェアラブルデバイス10が計測から解析までの一連の処理を実行するものとして説明する。
【0038】
図3は、CPU11が実行するメインルーチンの処理内容を示すフローチャートである。その処理当初、CPU11は操作部16のスタート/エンドキーの操作に基づいて処理を開始し、計測動作が継続中であることを確認した上で(ステップM101のYes)、センサインタフェイス18を介して加速度センサ21、ジャイロセンサ22、地磁気センサ23、気圧センサ24、温度センサ25、及び心拍センサ26の各検出データを取得する(ステップM102)。
【0039】
この各種センサによる計測動作は、予め設定された時間間隔(これを解析周期と定義する)、例えば1[秒]毎に1回の頻度で実行し、センサデータを即時メモリカード17に記録すると共に、基本的に過去5[秒]分のセンサデータに基づいて以下の動作を実行する。
【0040】
まずCPU11は、加速度センサ21、ジャイロセンサ22、及び地磁気センサ23の出力により軸補正の処理を実行する(ステップM103)。
図4は、この軸補正の処理を説明する図である。
図4(A)には、軸補正前のy軸方向及びz軸方向が示されている。すなわち、
図4(A)に示すように、ウェアラブルデバイス10を装着したサイクリストCLの腰部の傾斜角度分だけ、本来鉛直方向と平行となるべきz軸方向、及び、サイクリストCLの進行方向と平行となるべきy軸方向が傾斜している。
【0041】
そのため、加速度センサ21で得られる重力加速度の方向に基づいて、
図4(B)−1、
図4(B)−2に示すように、反重力方向をz軸の正方向、サイクリストCLの進行方向と反対の方向をy軸の正方向、サイクリストCLの進行方向と直交する左方向をx軸の正方向となるように、加速度センサ21の検出データを補正する。ここでのx軸方向及びy軸方向は、サイクリストCLが向いている方向を正面として設定した方向である。
【0042】
このように、各種センサから検出される、
図4(A)に示す各軸が、
図4(B)に示すように補正される。本実施形態では、各軸が
図4(B)に示すように定義される。
【0043】
加えて、x,y,zの各軸の正方向に対し、各角速度は、原点位置から見てその右回りが正となる角速度となるように、ジャイロセンサ22の検出データを補正する。
【0044】
上記軸補正の処理後、CPU11は各センサのデータに対し、ローパスフィルタ処理、及び外れ値除去の処理によりノイズ成分を低減する(ステップM104)。
【0045】
こうして軸補正、及びノイズ成分の低減を行なったセンサデータを用いて、CPU11は、サイクリストCLの行動とケイデンスとを推定する(ステップM105)。
【0046】
ここで行動推定とは、各種センサの検出したデータに基づいて、サイクリング時におけるサイクリストCLの一定時間継続した動作を推定することである。本実施形態では、行動推定により以下の5つの行動のいずれかに分類する。すなわち、
・シッティング:自転車BCのサドルに座ってペダルを漕いでいる状態
・ダンシング:サドルから立ってペダルを漕いでいる状態
・慣性走行:ペダルを漕がずに慣性で進んでいる状態
・歩行:自転車を降りて歩いている状態(押し歩きを含む)
・停止:上記以外の行動。主に止まっている状態を想定。
【0047】
またケイデンス推定とは、上記行動の内、シッティング、ダンシング、歩行の3つについて、単位時間(通常は1分)当たりの自転車BCのクランクペダルの回転数(シッティング、及びダンシングの場合)、または歩数(歩行の場合)を推定することである。
【0048】
図5は、上記ステップM105の行動・ケイデンス推定の詳細な処理内容を示すサブルーチンのフローチャートである。その当初にCPU11は、初期設定として、積算更新用ケイデンスの値、及び最大更新用ケイデンスの値を共に無効値に設定する(ステップS101)。
【0049】
次にCPU11は、ステップS102〜S110の行動判定1の処理を実行する。この行動判定1においては、行動が「ダンシングまたは歩行」であるか、またはそれら以外であるかを判定する。すなわち、ダンシング及び歩行においては、サイクリストCLの腰が周期的に上下に動くために、加速度センサ21のz軸方向の出力AccZの周期性が顕著に見られるものとなるので、判定に出力AccZが用いられる。
【0050】
その当初にCPU11は、詳細を後述するケイデンス推定の処理を実行して、加速度センサ21のz軸方向の出力AccZの自己相関係数を算出する(ステップS102)。
【0051】
次にCPU11は、加速度センサ21のz軸方向の出力AccZの分散が、第1の閾値Th1、例えば1.4より大きく、且つ加速度センサ21のz軸方向の出力AccZの自己相関係数が、第2の閾値Th2、例えば0.47より大きいか否かにより、路面からの振動などの小さな振幅をノイズとして除去した上で上記行動判定1を実行する(ステップS103)。
【0052】
上記ステップS103において、加速度センサ21のz軸方向の出力AccZの分散が第1の閾値Th1より大きく、且つ同出力AccZの自己相関係数が第2の閾値Th2より大きく、行動がダンシングまたは歩行であると判定した場合(ステップS103のYes)、CPU11は移動速度の情報が信頼できる否かを判断する(ステップS104)。なお、詳細は後述するが、GPS測位情報の信頼度が高い場合を移動速度の情報が信頼できる場合とする。
【0053】
ここで、移動速度の情報が安定して得られており、信頼できると判断した場合(ステップS104のYes)、次にCPU11は、その速度が第3の閾値Th3、例えば2.4[m/秒]より小さく、且つ加速度センサ21のy軸方向の出力AccYの分散が第4の閾値Th4、例えば2.0より大きいか否かにより、移動速度が一定値より小さく、且つ進行方向の加速度の分散が大きいために、歩行、特に足の着知時の衝撃(ブレーキショック)があるか否かを判断する(ステップS105)。
【0054】
ここで移動速度が第3の閾値Th3より小さく、且つ加速度センサ21のy軸方向の出力AccYの分散が第4の閾値Th4より大きいため、移動速度が一定値より小さく、進行方向の加速度の分散が大きいと判断した場合(ステップS105のYes)、CPU11はその時点での行動を歩行であるものと判定し(ステップS106)、以上で行動判定1の処理を終える。
【0055】
また上記ステップS105において、移動速度が第3の閾値Th3以上であるか、または加速度センサ21のy軸方向の出力AccYの分散が第4の閾値Th4以下であるため、移動速度が一定値以上であるか、または進行方向の加速度の分散が小さいと判断した場合(ステップS105のNo)、CPU11はその時点での行動をダンシングであるものと判定し(ステップS107)、以上で行動判定1の処理を終える。
【0056】
さらに上記ステップS104において、移動速度の情報が安定して得られておらず、信頼できないと判断した場合(ステップS104のNo)、次にCPU11は、加速度センサ21のy軸方向の出力AccYの分散が第4の閾値Th4、例えば2.0より大きいか否かの判断のみにより、進行方向の加速度の分散が大きいために、歩行の特に足の着知時の衝撃(ブレーキショック)があるか否かを判断する(ステップS108)。
【0057】
ここで加速度センサ21のy軸方向の出力AccYの分散が第4の閾値Th4より大きいため、進行方向の加速度の分散が大きいと判断した場合(ステップS108のYes)、CPU11はその時点での行動を歩行であるものと判定し(ステップS109)、以上で行動判定1の処理を終える。
【0058】
また上記ステップS108において、加速度センサ21のy軸方向の出力AccYの分散が第4の閾値Th4以下であり、進行方向の加速度の分散が小さいと判断した場合(ステップS108のNo)、CPU11はその時点での行動をダンシングであるものと判定し(ステップS110)、以上で行動判定1の処理を終える。
【0059】
そして、上記ステップS106,S107,S109,S110での行動判定の処理後、CPU11は、ダンシングまたは歩行に応じた第1のケイデンス値のセット(ケイデンスセット(1))を行なう(ステップS111)。この第1のケイデンス値のセットの詳細な処理内容は後述する。
【0060】
また上記ステップS103において、加速度センサ21のz軸方向の出力AccZの分散が第1の閾値Th1以下であるか、同出力AccZの自己相関係数が第2の閾値Th2以下であるかの少なくとも一方であり、行動がダンシングと歩行のいずれでもないと判定した場合(ステップS103のNo)、CPU11は移動速度の情報が信頼できる否かを判断する(ステップS112)。なお、詳細は後述するが、GPS測位情報の信頼度が高い場合を移動速度の情報が信頼できる場合とする。
【0061】
ここで、移動速度の情報が安定して得られており、信頼できると判断した場合(ステップS112のYes)、次にCPU11は、その速度が第5の閾値Th5、例えば0.64[m/秒]より小さいか否かにより、行動が停止であるか否かを判断する(ステップS113)。
【0062】
ここで移動速度が第5の閾値Th5より小さいと判断した場合(ステップS113のYes)、CPU11はその時点での行動を停止であるものと判定し(ステップS114)、以上で行動判定2の処理を終える。
【0063】
このように、信頼できる移動速度が一定値より小さい場合には、サイクリストCLが自転車BCを止めて体操を行なう場合などの定義不能な詳細な行動を考慮するものとして、停止中の予想できない動きをシッティングや慣性走行と誤判定してしまう可能性を極力回避するものとしている。
【0064】
また上記ステップS113において、移動速度が第5の閾値Th5以上であると判断した場合(ステップS113のNo)、CPU11はステップS115〜S119の行動判定3に移行し、慣性走行とシッティングの判定を行なう。
【0065】
この行動判定3において、CPU11は以下に示すシッティング判定を実行する(ステップS115)。
【0066】
図6は、このシッティング判定のサブルーチンの詳細な処理内容を示すフローチャートである。まずCPU11は、シッティング判定1により、シッティング時の特徴であるジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZに周期性があるか否かにより、シッティングであるかどうかを判定する(ステップS201)。
【0067】
図7は、このシッティング判定1のサブルーチンの詳細な処理内容を示すフローチャートである。ジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZを用いる理由は、個人差はあるが、サイクリストCLがペダルを漕ぐ際の腰の回転運動が、y軸方向とz軸方向の何れか、または双方に現出し易いためである。
【0068】
ジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZの周期性の検出方法について述べる。
【0069】
図8は、3人のサイクリストCL、CL−A,CL−B,CL−Cそれぞれのシッティング時のジャイロセンサ22のz軸方向の出力GyrZの変化の程度を例示するものである。このように、シッティング動作には個人毎の動きの大小の差が大きく、分散と自己相関係数の独立な閾値により周期性の有無を判断するのみでシッティング判定をするのは不十分である。
【0070】
そのため、
図9に示すように、分散と自己共分散との境界線BDによる線形分離により、周期性の有無を判断する。
【0071】
ここで自己相関係数ではなく、自己共分散を利用する理由は、自己相関係数が、自己共分散を分散で除算したものであり、分散の影響が二重になるのを防ぐためである。
【0072】
これにより、サイクリストCLの腰の動きが小さい(=分散が小さい)シッティング動作であっても、その分散に相当する自己共分散があるかどうかを判断することで、周期性を検出することができる。
【0073】
また、上記
図9のように、線形分離に加えて、ある一定以下の小さすぎる分散である場合は、シッティングではない条件も加えるものとする。
【0074】
図7の具体的な処理においては、まず、後述するケイデンス推定を実行する(ステップS211)。
【0075】
その後にCPU11は、ジャイロセンサ22のy軸方向の出力GyrYの自己相関係数が第7の閾値Th7、例えば0.51より大きく、且つ同出力GyrYの分散が第8の閾値Th8、例えば0.01より大きいか、あるいはジャイロセンサ22のz軸方向の出力GyrZの自己相関係数が上記第7の閾値Th7より大きく、且つ同出力GyrZの分散が上記第8の閾値Th8より大きいか、の少なくとも一方であるか否かを判断する(ステップS212)。
【0076】
上記ステップS212の判断では、ジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZの振幅が十分に大きく、明確に周期性があるものを抽出することで、明らかにシッティングである場合を確定することを目的とするべく、上記第7の閾値Th7、及び第8の閾値Th8は大きめに設定している。
【0077】
この条件が成立すると判断した場合には(ステップS212のYes)、CPU11は行動がシッティングであるものと判定する(ステップS213)。
【0078】
また上記ステップS212における条件が成立しないと判断した場合(ステップS212のNo)、CPU11は、ジャイロセンサ22のy軸方向の出力GyrYの自己共分散が第9の閾値Th9、例えば0.0016より小さいか、または同出力GyrYの分散が第10の閾値Th10、例えば0.0047より小さく、且つ、ジャイロセンサ22のz軸方向の出力GyrZの自己共分散が上記第9の閾値Th9より小さいか、または同出力GyrZの分散が上記第10の閾値Th10より小さいかを判断する(ステップS214)。
【0079】
上記ステップS214の判断では、ジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZの振幅が非常に小さく、明確に周期性が低いものを抽出することで、明らかにシッティングではない場合を確定する。そのため、第9の閾値Th9と第10の閾値Th10は、小さめに設定している。
【0080】
この条件が成立すると判断した場合には(ステップS214のYes)、CPU11は行動がシッティングではないものと判定する(ステップS215)。
【0081】
さらに上記ステップS214における条件が成立しないと判断した場合(ステップS214のNo)、CPU11はジャイロセンサ22のy軸方向の出力GyrYの自己共分散が、同出力GyrYの分散に上記
図9の境界線BDの傾きa1、例えば0.3113を乗算し、接点(切片)値b1、例えば0.0018を加算した値より大きいか、あるいはジャイロセンサ22のz軸方向の出力GyrZの自己共分散が、同出力GyrZの分散に上記
図9の境界線BDの傾きa1を乗算し、接点(切片)値b1を加算した値より大きいか、の少なくとも一方であるか否かを判断する(ステップS216)。
【0082】
上記の通り、シッティング動作時の漕ぎ方には個人差が大きく、分散に閾値を設けるのみで周期性の有無を評価することは難しい。例えば、動きが大きくて周期性が出ているサイクリスト(
図8(C))もいれば、動きが中程度あるいは動きが小さくても周期性が出ているサイクリスト(
図8(B)や
図8(A))もいる。このため、ステップS212あるいはステップS214のように分散に1つの閾値を設けるのみで周期性を判断することは難しい場合がある。これに対処するために、ステップS216では、相関係数と分散とを別々に評価するのではなく、2つを回帰したような形式で自己共分散と分散とを評価することにより、シッティング判定を行なう。
【0083】
上記
図9で示した境界線BDによる線形分離を行なうことで、シッティングの判定を行なっている。上記ステップS216の条件が成立すると判断した場合(ステップS216のYes)、CPU11は行動がシッティングであるものと判定する(ステップS217)。ステップS216の判断により、ステップS212、S214ではシッティングと判断されなかったような分散の低い場合であってもシッティングであると判定可能である。
【0084】
また上記ステップS216の条件が成立しないと判断した場合(ステップS216のNo)、CPU11は行動がシッティングではないものと判定する(ステップS218)。
【0085】
上記
図7のシッティング判定1の処理後、CPU11は上記
図6の処理に戻り、上記シッティング判定1で行動がシッティングであると判定したかどうかを判断する(ステップS202)。
【0086】
ここで行動がシッティングであると判定した場合(ステップS202のYes)、あらためて行動がシッティングであるものとし(ステップS203)、合わせて同判定の信頼性が高いものとして、ケイデンス判定で得られたケイデンスを最大ケイデンスの算出にも利用するものとする。
【0087】
また上記ステップS202において、行動がシッティングではないと判定したと判断した場合(ステップS202のNo)、CPU11は続いてシッティング判定2を実行する(ステップS204)。
【0088】
図10は、このシッティング判定2における詳細な処理内容を示すサブルーチンのフローチャートである。CPU11は、まず、後述するケイデンス推定を実行する(ステップS221)。
【0089】
その後にCPU11は、ジャイロセンサ22のy軸方向の出力GyrYと同z軸方向の出力GyrZ、双方の極値間補正を行なう(ステップS222)。
【0090】
図11(A)−1は、シッティング時における補正前のジャイロセンサ22のy軸方向の出力GyrYを例示するものであり、同y軸方向の出力GyrYの極値間の中間位置を0(ゼロ)に補正した結果を
図11(A)−2に示す。
図11(A)−1では、ジャイロセンサ22のy軸方向の出力GyrYにある程度の周期性が見られるが、このままで後述する判断に用いるとシッティングでないと判定される場合がある。これを回避するために、ステップS222において、ジャイロセンサ22のy軸方向の出力GyrYの極大値と極小値との中間位置の値を0(ゼロ)にもっていく処理を行なう。この
図11(A)−2は成功例であり、ジャイロセンサ22のy軸方向の出力GyrYが不規則且つ振幅の小さい場合であっても、シッティング判定のために安定化することで、判定をより正確に実行できる。
【0091】
一方、
図11(B)−1は、シッティング時における補正前のジャイロセンサ22のz軸方向の出力GyrZを例示するものであり、同z軸方向の出力GyrZの極値間の中間位置を0(ゼロ)に補正した結果を
図11(B)−2に示す。この
図11(B)−2は失敗例であり、ジャイロセンサ22のz軸方向の出力GyrZにかかるノイズを含めて周期性ありと判断してしまうことで、シッティング判定が正確に実行できない場合を例示している。
【0092】
この極値間の補正処理後、CPU11はジャイロセンサ22のy軸方向の出力GyrYの自己相関係数が第11の閾値Th11、例えば0.49より大きく、且つ同出力GyrYの分散が第12の閾値Th12、例えば0.018より大きいか、あるいはジャイロセンサ22のz軸方向の出力GyrZの自己相関係数が上記第11の閾値Th11より大きく、且つ同出力GyrZの分散が上記第12の閾値Th12より大きいか、の少なくとも一方であるか否かを判断する(ステップS223)。
【0093】
上記ステップS223の判断では、ジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZの振幅が十分に大きく、明確に周期性があるものを抽出することで、明らかにシッティングである場合を確定することを目的とするべく、上記第11の閾値Th11、及び第12の閾値Th12は大きめに設定している。
【0094】
この条件が成立すると判断した場合には(ステップS223のYes)、CPU11は行動がシッティングであるものと判定する(ステップS224)。
【0095】
また上記ステップS223における条件が成立しないと判断した場合(ステップS223のNo)、CPU11は、ジャイロセンサ22のy軸方向の出力GyrYの自己共分散が第13の閾値Th13、例えば0.00017より小さいか、または同出力GyrYの分散が第14の閾値Th14、例えば0.002より小さく、且つ、ジャイロセンサ22のz軸方向の出力GyrZの自己共分散が上記第13の閾値Th13より小さいか、または同出力GyrZの分散が上記第14の閾値Th14より小さいかを判断する(ステップS225)。
【0096】
上記ステップS225の判断では、ジャイロセンサ22のy軸方向の出力GyrY、同z軸方向の出力GyrZの振幅が非常に小さく、明確に周期性が低いものを抽出することで、明らかにシッティングではない場合を確定する。そのため、第13の閾値Th13と第14の閾値Th14は、小さめに設定している。
【0097】
この条件が成立すると判断した場合には(ステップS225のYes)、CPU11は行動がシッティングではないものと判定する(ステップS226)。
【0098】
さらに上記ステップS225における条件が成立しないと判断した場合(ステップS225のNo)、CPU11はジャイロセンサ22のy軸方向の出力GyrYの自己共分散が、同出力GyrYの分散に上記
図9の境界線BDの傾きa2、例えば0.5065を乗算し、接点(切片)値b2、例えば0.00041を加算した値より大きいか、あるいはジャイロセンサ22のz軸方向の出力GyrZの自己共分散が、同出力GyrZの分散に上記
図9の境界線BDの傾きa2を乗算し、接点(切片)値b2を加算した値より大きいか、の少なくとも一方であるか否かを判断する(ステップS227)。
【0099】
上記
図9で示した境界線BDによる線形分離を行なうことで、シッティングの判定を行なっている。上記ステップS227の条件が成立すると判断した場合(ステップS227のYes)、CPU11は行動がシッティングであるものと判定する(ステップS228)。ステップS227の判断により、ステップS223、S225ではシッティングと判断されなかったような分散の低い場合であってもシッティングと判定可能である。
【0100】
また上記ステップS227の条件が成立しないと判断した場合(ステップS227のNo)、CPU11は行動がシッティングではないものと判定する(ステップS229)。
【0101】
なお、ステップS222におけるジャイロ極値間補正はノイズを強調する処理に等しいため、ステップS201のシッティング判定1よりも前にステップS204のシッティング判定2を行なうべきではない。シッティング判定2は、シッティング判定1を行なった後に、シッティングであるがシッティング判定1ではそう判定されなかったものを拾うために行なうものである。初めからシッティング判定2を行なってしまうと、後述するように正しいケイデンスの計算もできなくなるため、CPU11はシッティング判定1を行なった後にシッティング判定2を行なう。
【0102】
上記
図10のシッティング判定2の処理後、CPU11は上記
図6の処理に戻り、上記シッティング判定2で行動がシッティングであると判定したかどうかを判断する(ステップS205)。
【0103】
ここで行動がシッティングであると判定した場合(ステップS205のYes)、あらためて行動をシッティングであると判定するが(ステップS206)、同判定の信頼性は低いものとして、ケイデンス判定で得られたケイデンスを最大ケイデンスの算出には利用しないものとする。
【0104】
また上記ステップS205において、行動がシッティングではないと判定したと判断した場合(ステップS205のNo)、CPU11は続いてシッティング判定3を実行する(ステップS207)。このシッティング判定3においては、加速度センサ21のy軸方向の出力AccYにより、シッティング判定を行なう。すなわち、シッティング判定3では、非常にゆっくり漕いでいて角速度がほとんど検出されないようなサイクリストを対象としたシッティング判定を行なう。
【0105】
図12は、このシッティング判定3における詳細な処理内容を示すサブルーチンのフローチャートである。CPU11は、まず、後述するケイデンス推定を実行する(ステップS231)。
【0106】
その後にCPU11は、加速度センサ21のy軸方向の出力AccYの自己相関係数が第15の閾値Th15、例えば0.65より大きく、且つ同出力AccYの分散が第16の閾値Th16、例えば0.071より大きいか否かを判断する(ステップS232)。
【0107】
ここで上記ステップS232の条件が成立すると判断した場合(ステップS232のYes)、CPU11は行動がシッティングであるものと判定する(ステップS233)。
【0108】
また上記ステップS232の条件が成立しないと判断した場合(ステップS232のNo)、CPU11は行動がシッティングではないものと判定する(ステップS234)。
【0109】
上記ステップS232の処理では、例えば後述するギア値が大きく、ケイデンスが低い状態でのシッティングの場合など、ジャイロセンサ22のy,z軸方向の出力GyrY,GyrZに周期性が見られない場合でも、ペダルを漕いだときの推進力が加速度センサ21のy軸方向の出力AccYで知見できるために、上記判断を行なっている。
【0110】
そのため、加速度センサ21のy軸方向の出力AccYの自己相関係数が第15の閾値Th15より大きく、且つ同出力AccYの分散が第16の閾値Th16より大きい場合に、シッティングと判定する。
【0111】
例えば、ギア値が大きくて身体の状態を使って漕いでいる場合などには、シッティング判定1やシッティング判定2ではシッティングと判定されなくても、加速度センサ21のy軸方向の出力AccYの自己相関係数と分散とからシッティング判定3でシッティングと判定可能である。
【0112】
図13は、加速度センサ21のy軸方向の出力AccYの検出波形を例示する図である。
図13(A)は、加速度センサ21のy軸方向の出力AccYから周期性を検出できた成功例を示している。
【0113】
一方で、
図13(B)は、加速度センサ21のy軸方向の出力AccYにノイズが重畳された状態で、そのノイズから周期性ありと判断した、検出の失敗例を示している。
【0114】
このため後述するケイデンスの計算においては、シッティング判定1の手法は、安定したシッティングの検出方法であるものの、シッティング判定2及びシッティング判定3の手法は、やや不安定なシッティングの検出方法であるものとして区別する。
【0115】
上記
図12のシッティング判定3の処理後、CPU11は上記
図6の処理に戻り、上記シッティング判定3で行動がシッティングであると判定したかどうかを判断する(ステップS208)。
【0116】
ここで行動がシッティングであると判定した場合(ステップS208のYes)、あらためて行動をシッティングであると判定するが(ステップS206)、同判定の信頼性は低いものとして、ケイデンス判定で得られたケイデンスを最大ケイデンスの算出には利用しないものとする。
【0117】
また上記ステップS208において、行動がシッティングではないと判定したと判断した場合(ステップS208のNo)、CPU11は行動がシッティングではないものと判定し(ステップS209)、以上で
図6のサブルーチンを終了して、
図5の処理に戻る。
【0118】
図5の上記ステップS115において、シッティング判定の処理を行なった後、CPU11はその結果から行動がシッティングであると判定したかどうかを判断する(ステップS116)。
【0119】
ここで行動がシッティングであると判定した場合(ステップS116のYes)、CPU11はあらためて行動をシッティングとする(ステップS117)。その後にCPU11は、後述するケイデンスセット(2)の処理を実行し(ステップS118)、以上で行動判定3の処理を終える。
【0120】
また上記ステップS116において、検出したデータに周期性がなく、行動がシッティングではないと判定した場合(ステップS116のNo)、CPU11は行動を慣性走行とし(ステップS119)、以上で行動判定3の処理を終える。
【0121】
また上記行動判定2のステップS112において、速度が信頼できないと判断した場合(ステップS112のNo)、CPU11はステップS120〜S126の行動判定4を実行する。この行動判定4においては、CPU11は行動が「シッティング」と「慣性走行」と「停止」とのいずれであるかの判定を行なう。上記行動判定2において、GPS受信部15からの出力から得られる移動速度の情報が信頼できないと判定されており、また、デッドレコニングにより推定される移動速度の情報も誤差等により信頼できないと考えられるため、行動判定4では停止の判定に先立ってシッティング判定を行なう。
【0122】
この行動判定4において、CPU11は、まず停止の判定に先立って、上記ステップS115と同様にシッティング判定の処理を実行する(ステップS120)。
【0123】
このシッティング判定の処理を行なった後、CPU11はその結果から行動がシッティングであると判定したかどうかを判断する(ステップS121)。
【0124】
ここで行動がシッティングであると判定した場合(ステップS121のYes)、CPU11はあらためて行動をシッティングとする(ステップS122)。その後にCPU11は、後述するケイデンスセット(2)の処理を実行し(ステップS123)、以上で行動判定4の処理を終える。
【0125】
また上記ステップS121において、行動がシッティングではないと判定した場合(ステップS121のNo)、CPU11は加速度センサ21のz軸方向の出力AccZの微分の分散が、第6の閾値Th6、例えば0.19より大きいか否かにより、路面の微振動が検出できているか否かを判断する(ステップS124)。
【0126】
ここで加速度センサ21のz軸方向の出力AccZの微分の分散が第6の閾値Th6より大きく、路面の微振動を検出できていると判断した場合(ステップS124のYes)には、行動が慣性走行であるものとして(ステップS125)、以上で行動判定4の処理を終える。
【0127】
上記の通り、行動判定2において、GPS受信部15からの出力から得られる移動速度の情報が信頼できないと判定されているため、行動判定4では移動速度の情報は使えない。それ故、ステップS113でのような速度に基づいた停止の判断はできない。そこで、ステップS124では、残る行動(慣性走行または停止)を速度に基づかずに判断するために、加速度センサ21のz軸方向の出力AccZの微分の分散、すなわち路面から受ける細かい振動の検出の有無を用いる。
【0128】
また上記ステップS124において、加速度センサ21のz軸方向の出力AccZの微分の分散が第6の閾値Th6以下であり、路面の微振動を検出できていないと判断した場合(ステップS124のNo)には、行動が停止であるものとして(ステップS126)、以上で行動判定4の処理を終える。
【0129】
次に上記
図5のステップS102、
図7のステップS211、
図10のステップS221、
図12のステップS231におけるケイデンス推定の詳細な処理内容を説明する。
ケイデンスは、上述した如く、随時変化する、サイクリストCLが自転車BCのクランクペダルを漕ぐ回転数を示す値であり、通常は直近の1分間当たりの回転数として単位[rpm]で表す。
【0130】
最大ケイデンスは、全行程中でのケイデンスの最大値であり、自転車競技能力指標の1つとして一般的に用いられている。
【0131】
積算回転数は、全行程でペダルを漕いだ総回転数であり、歩行における歩数に相当する。
【0132】
本実施形態では、行動がダンシング、シッティング、及び歩行である場合に、周期性があるものとしてケイデンスを算出する。
【0133】
一方で、行動が慣性走行、及び停止である場合には、周期性がないためにケイデンスの算出は行なわないものとする。
【0134】
図14は、各行動に共通するケイデンス推定のサブルーチンを示すフローチャートである。その当初にCPU11は、サンプルラグに初期値「0」を設定する(ステップS301)。
【0135】
次にCPU11は、上記サンプルラグの値を「+1」更新設定する(ステップS302)。CPU11は、この更新設定したサンプルラグに従って自己相関係数を算出し(ステップS303)、算出した自己相関係数をメインメモリ12内部のバッファに保存する(ステップS304)。
【0136】
次にCPU11は、それまでに「0」を下回った自己相関係数があったか否かを判断する(ステップS305)。
【0137】
ここで「0」を下回った自己相関係数があったと判断した場合(ステップS305のYes)、次にCPU11は、その値が第17の閾値Th17、例えば0.2以上の極大値であるか否かを判断する(ステップS306)。
【0138】
上記ステップS305において、「0」を下回った自己相関係数がなかったと判断した場合(ステップS305のNo)、及び上記ステップS306において、自己相関係数の値が第17の閾値Th17よりは小さいと判断した場合(ステップS306のNo)、CPU11はその自己相関係数を採用しないものとして、さらにサンプルがまだあるかどうかを判断する(ステップS307)。
【0139】
まだあると判断した場合(ステップS307のYes)、再び上記ステップS302からの処理に戻って、同様の動作を繰返す。
【0140】
こうしてサンプルラグを順次更新設定して、「0」から順に走査しながら、自己相関係数が極大となるサンプルラグをサーチする。
【0141】
上記ステップS306において、算出した自己相関係数が第17の閾値Th17以上の極大値であると判断した場合(ステップS306のYes)、CPU11はその極大のサンプルラグをセンサのサンプリング周波数(サンプルf)で除算した商を用い、定数60[秒]をさらに除算することで、ケイデンス値[rpm]を取得する(ステップS309)。
【0142】
また上記ステップS307において、サンプルがもうないと判断した場合(ステップS307のNo)、ケイデンスを算出することができなかったものとして、ケイデンス値に固定値0(ゼロ)[rpm]を設定する(ステップS308)。
【0143】
上記ステップS309または上記ステップS308によりケイデンスの値を得た後、CPU11は対象の信号が加速度センサ21のz軸方向の出力AccZであるか否かにより、行動が歩行であるかを判断する(ステップS310)。
【0144】
ここで対象の信号が加速度センサ21のz軸方向の出力AccZであり、行動が歩行であると判断した場合にのみ(ステップS310のYes)、CPU11はクランクペダルの回転数との整合により、算出したケイデンス値[rpm]を1/2に更新設定した上で(ステップS311)、以上でこのケイデンス推定の処理を終了する。
【0145】
また上記ステップS310において、対象の信号が加速度センサ21のz軸方向の出力AccZではなく、行動が歩行ではないと判断した場合(ステップS310のNo)、CPU11は上記ステップS311の処理を行なわずに、以上でこのケイデンス推定の処理を終了する。
【0146】
上記ステップS305において、サンプルラグの自己相関係数に対して第17の閾値Th17を用いた極大値の採用判定を行なっている。これは、
図15に示すように、高周波の極大値の影響を排除するためである。
【0147】
図15(A)は、対象となる入力信号の波形を例示するものである。この入力信号から自己相関係数を算出した結果を
図15(B)に示す。同図(B)中のXV部分に示すように、ノイズによる高周波の極大値が現出する場合があり、上記ステップS305ではそのような事態を不採用とするべく判定を行なっている。
【0148】
次に、各行動状態におけるケイデンスの算出方法について説明する。
積算回転数と最大ケイデンスは、利用するケイデンス値を分けるものとする。これは、積算回転数が各時刻での推定に多少の誤差があった場合でも、トータルでの最終的な積算値に大きな誤差は及ぼさない一方で、最大ケイデンスはある時刻で大きなケイデンス値を出力した場合、その後に修正できないので、安定したケイデンスを利用する必要があることに由来する。
【0149】
まず、行動が歩行とダンシングの場合のケイデンスの算出方法について説明する。
図16は、上記
図5のステップS111における第1のケイデンス値のセット(ケイデンスセット(1))のサブルーチンの詳細な処理内容を示すフローチャートである。
【0150】
CPU11は、まず加速度センサ21のz軸方向の出力AccZの周期をケイデンス値としてカウントし、積算更新用ケイデンスとする(ステップS401)。
【0151】
その後にCPU11は、ジャイロセンサ22のy軸方向の出力GyrYに基づくケイデンス値と、同z軸方向の出力GyrZに基づくケイデンス値とで、自己相関係数が大きい方のケイデンス値GyrYZを用い、上記加速度センサ21のz軸方向の出力AccZのケイデンス値との差の絶対値が、第18の閾値Th18、例えば10より小さいか否かにより、加速度センサ21のz軸方向の出力AccZのケイデンス値の信頼性があるか否かを判断する(ステップS402)。
【0152】
ここでケイデンス値GyrYZと出力AccZのケイデンス値との差の絶対値が、第18の閾値Th18より小さく、加速度センサ21のz軸方向の出力AccZのケイデンス値の信頼性があると判断した場合(ステップS402のYes)、CPU11はそのまま加速度センサ21のz軸方向の出力AccZのケイデンス値を最大更新用ケイデンスとして採用し(ステップS403)、以上でこの第1のケイデンス値のセットの処理を終了する。
【0153】
また上記ステップS402において、ケイデンス値GyrYZと出力AccZのケイデンス値との差の絶対値が、第18の閾値Th18以上であり、加速度センサ21のz軸方向の出力AccZのケイデンス値の信頼性がないと判断した場合(ステップS402のNo)、CPU11は、無効値を最大更新用ケイデンスとして採用し(ステップS404)、以上でこの第1のケイデンス値のセットの処理を終了する。
【0154】
上記ケイデンス値GyrYZと出力AccZのケイデンス値との差の絶対値を第18の閾値Th18と比較したのは、行動が歩行とダンシングの場合に現出する、ノイズによる極端に大きなケイデンスのカウント分を排除するためであり、上記2つのケイデンスの差の絶対値が閾値Th18以下であり、両者がほぼ同じケイデンス値を示している場合に、信頼性が高いと判断するものである。
【0155】
次に、行動がシッティングの場合のケイデンスの算出方法について説明する。
図17は、上記
図5のステップS118,S123における第2のケイデンス値のセット(ケイデンスセット(2))のサブルーチンの詳細な処理内容を示すフローチャートである。
【0156】
その処理当初にCPU11は、上記
図6の、シッティング判定1、シッティング判定2、及びシッティング判定3のいずれによってシッティング判定されたかを判断する(ステップS501)。
【0157】
ここでシッティング判定1であったと判断した場合、上記出力GyrY,GyrZの信頼性、安定性が高いものとして、CPU11は、ジャイロセンサ22のy軸またはz軸方向の出力GyrYZの周期をカウントしたケイデンス値をそのまま積算更新用ケイデンス値としてセットする(ステップS502)。
【0158】
加えてCPU11は、上記ケイデンス値GyrYZを最大更新用ケイデンス値としてセットし(ステップS503)、以上でこの
図17の処理を終了する。
【0159】
また上記ステップS501において、シッティング判定2であったと判断した場合、極値の修正を行なった上記出力GyrY,GyrZに鑑み、CPU11は、上記ケイデンス値GyrYZを積算更新用ケイデンス値としてセットする(ステップS504)。
【0160】
加えてCPU11は、最大更新用ケイデンス値に無効値をセットし(ステップS505)、以上でこの
図17の処理を終了する。
【0161】
これは、上記
図11(B)−1、
図11(B)−2で示したように、極値の補正でノイズを強調し、高周波を生成する危険性があることに起因している。
【0162】
また上記ステップS501において、シッティング判定3であったと判断した場合、加速度センサ21のy軸方向の出力AccYによりシッティングであると判定した場合であるため、CPU11は、上記出力AccYの周期のカウント値によるケイデンス値を積算更新用ケイデンス値としてセットする(ステップS506)。
【0163】
加えてCPU11は、最大更新用ケイデンス値に無効値をセットし(ステップS507)、以上でこの
図17の処理を終了する。
【0164】
これは、上記
図13(B)で示したように、上記出力AccYの信号がノイズを多く含み易く、高周波を生成する危険性があることに起因している。
【0165】
このように、安定した周期性の判定を先に行なう一方で、やや不安定な周期性判定を後で行なうことで、安定性の高いケイデンスとやや安定性に欠けるケイデンスとを明確に分離して処理することが可能となる。
【0166】
上記
図5において、行動判定1〜行動判定4の各処理を実行した後、CPU11はケイデンスの更新処理を実行する(ステップS127)。
【0167】
図18は、上記ケイデンスの更新処理のサブルーチンの詳細な処理内容を示すフローチャートである。
CPU11は、まずその時点の積算更新用ケイデンスの値を対象ケイデンスとして設定した状態で(ステップS601)、当該ケイデンスの安定化処理を実行する(ステップS602)。
【0168】
図19は、上記ケイデンスの安定化処理のサブルーチンの詳細な処理内容を示すフローチャートである。
CPU11は、まず対象のケイデンスをメインメモリ12内に設定したFIFO形式のバッファメモリに格納する(ステップS621)。ここでのバッファメモリの容量は、例えばケイデンス値5個分であるものとする。
【0169】
CPU11は当該バッファメモリがすべて埋まっているか否かを判断する(ステップS622)。まだ埋まっていないと判断した場合(ステップS622のNo)、CPU11は、安定化ケイデンスとしてバッファメモリに無効値を保持設定し(ステップS629)、以上でこの
図19の処理を終了する。なお、この無効値のセットに関し、バッファメモリ中に無効値が保持されている場合も、以後の処理ではその無効値をデータとしてカウントするものとする。
【0170】
また上記ステップS622において、無効値も含めてバッファメモリが埋まっていると判断した場合(ステップS622のYes)、CPU11はバッファメモリに保持されている、例えば5つのケイデンス値の内の中央値を選択して変数Medianに設定する(ステップS623)。
【0171】
次いでCPU11は、変数Medianの値との差の絶対値が第19の閾値Th19、例えば20以下である上記バッファメモリ内のケイデンス値の個数を取得して変数MedNに設定する(ステップS624)。
【0172】
CPU11は、このMedNに設定したケイデンス値の数が、第20の閾値TH20、例えば3より大きいか否かにより、バッファメモリに保持されているケイデンス値の安定度が高いか否かを判断する(ステップS625)。
【0173】
MedNに設定したケイデンス値の数が第20の閾値TH20より大きく、バッファメモリに保持されているケイデンス値の安定度が高いと判断した場合(ステップS625のYes)、CPU11は、バッファメモリの保持内容から、上記変数Medianとの差の絶対値が上記第19の閾値TH19以下であるケイデンス値の平均値を算出し、算出したケイデンス値の平均値をあらためて安定化したケイデンス値として設定する(ステップS626)。
【0174】
また上記ステップS625において、MedNに設定したケイデンス値の数が第20の閾値TH20以下であり、バッファメモリに保持されているケイデンス値の安定度があまり高くないと判断した場合(ステップS625のNo)、CPU11は、バッファメモリの保持内容から、上記変数Medianとの差の絶対値が上記第19の閾値TH19以下であるケイデンス値の中で、最後に保持されたケイデンス値を読出し、読出したケイデンス値をそのまま安定化したケイデンス値として設定する(ステップS627)。
【0175】
上記ステップS626またはS627の処理後、CPU11は対象となるケイデンス値が無効値であるか否かを判断する(ステップS628)。
【0176】
ここで対象となるケイデンス値、ここでは積算更新用ケイデンスの値が無効値であると判断した場合にのみ(ステップS628のYes)、CPU11は安定化ケイデンスの値を無効値に設定し(ステップS629)、以上でこの
図19の処理を終了すると共に、上記
図18の処理に戻る。
【0177】
また上記ステップS628において、対象となるケイデンス値、ここでは積算更新用ケイデンスの値が無効値ではないと判断した場合には、上記ステップS629の処理は行なわない。
【0178】
このように、対象となるケイデンス値が無効値である場合でも、バッファメモリ内に他に有効なケイデンス値が保持されている場合、その有効なケイデンス値が安定化したケイデンス値として設定されてしまうのを回避するべく、最後の処理で、対象となるケイデンス値が無効値である場合には安定化したケイデンス値に同様に無効値を設定するものとする。
【0179】
図18において、上記ステップS602の処理で設定した安定化ケイデンス値を積算更新用ケイデンスに設定する(ステップS603)。
【0180】
その後、CPU11は、安定化した積算更新用ケイデンス値を60で除算し解析周期を乗算したものに前回の積算回転数を加算した値を、積算回転数として設定する(ステップS604)。
【0181】
その後、積算更新用ケイデンスの値をそのまま現時点のケイデンス値として設定する(ステップS605)。
【0182】
以上で積算更新用ケイデンスに関する更新処理を終え、次に最大更新用ケイデンスの値を対象ケイデンスとして設定した状態で(ステップS606)、当該ケイデンスの安定化処理を実行する(ステップS607)。
【0183】
このケイデンスの安定化処理は、上記ステップS602で実行した、
図19の内容と同様であるため、その詳細についての説明は省略する。
【0184】
ここでは最大更新用ケイデンスを対象としていることにより、第19の閾値TH19には、例えば20、第20の閾値Th20には、例えば4を使用する。
【0185】
CPU11は、上記ステップS607の処理で設定した安定化ケイデンス値を最大更新用ケイデンスに設定する(ステップS608)。
【0186】
その後、CPU11は、直前のステップS608で設定した最大更新用ケイデンスが、それまでの最大ケイデンスより大きいか否かを判断する(ステップS609)。
【0187】
ここで、最大更新用ケイデンスが、それまでの最大ケイデンスであると判断した場合にのみ(ステップS609のYes)、CPU11は最大更新用ケイデンスの値を用いて最大ケイデンスを更新設定し(ステップS610)、以上でこの
図18の処理を終了すると共に、上記
図5の処理も終了して、上記
図3のメインルーチンに戻る。
【0188】
また上記ステップS609において、最大更新用ケイデンスが、それまでの最大ケイデンス以下であると判断した場合には(ステップS609のNo)、最大ケイデンスの更新は必要ないものとして、上記ステップS610の処理は行なわない。
【0189】
図3のメインルーチンに戻って、CPU11は次に勾配の推定を行なう(ステップM106)。ここでCPU11は、単位距離、例えば直近の過去30[m]当たりで変動した高度情報の変動量から現時点での勾配を算出し、その算出結果が正であれば登り坂、負であれば下り坂であると定義する。
【0190】
勾配を参照する際に使用する高度情報の変化量は、GPS受信部15で取得するGPS測位情報が高い信頼度を有すると判断できる場合は、GPS測位情報を用いる一方で、GPS測位情報が高い信頼度を有していないと判断した場合は、気圧センサ24の検知出力を用いる。
【0191】
上記勾配推定の処理後、CPU11はこれまでの移動の軌跡推定を行なう(ステップM107)。
【0192】
図20は、上記ステップM107の軌跡推定のサブルーチンの詳細な処理内容を示すフローチャートである。
【0193】
まずCPU11は、その時点でGPS受信部15から得られるGPS測位情報の信頼度を、「高」「中」「低」の3段階で判定する(ステップS701)。
【0194】
GPS測位情報の信頼度は、例えば測位処理の過程で取得できる、GPSの精度低下率を示すDOP(Dilution Of Precision)値により判定する。例えば、CPU11は、DOP値が比較的小さい場合にはGPS測位情報の信頼度が高いと判定し、DOP値が中程度の場合にはGPS測位情報の信頼度が中程度であると判定し、DOP値が比較的大きい場合にはGPS測位情報の信頼度が低いと判定する。
【0195】
上記ステップS701において、GPSの測位情報の信頼度が高いと判定した場合、CPU11はそのままGPSの測位情報を用いて現在位置の経度及び緯度を設定する(ステップS702)。
【0196】
さらにCPU11は、後述するデッドレコニング処理で使用する、その時点で使用している自転車BCのギア値(行動がシッティングまたはダンシングである場合)、または歩幅(行動が歩行である場合)を更新設定する(ステップS703)。このギア値/歩幅更新は、GPS測位情報の信頼度が高い場合にのみ実行される。
【0197】
ギア値は、自転車BCのクランクペダルが1回転する間に進む距離であり、サイクリストCLがギアチェンジを行なうことで随時変化する。
【0198】
歩幅は、上記ギア値と対応させるべく、歩行時に2歩当たりで進む距離であるものとし、これもサイクリストCLの疲労度合いや状況等によって随時変化する。
【0199】
図21は、このギア値/歩幅更新のサブルーチンの詳細な処理内容を示すフローチャートである。
まずCPU11は、行動推定がシッティングまたはダンシングであるか否かにより、更新する対象がギア値であるかどうかを判断する(ステップS711)。
【0200】
ここで行動推定がシッティングまたはダンシングであり、更新する対象がギア値であると判断した場合(ステップS711のYes)、CPU11は、進行方向に進んだ距離とケイデンスの比例関係を乱す要因となる複数の判定を行なうことで、ギア値の更新を行なうか否かを判断する。
【0201】
具体的には、第1点としてケイデンスが不安定であるか否かを判断する(ステップS712)。これは、ギアチェンジの途中、または直後においてクランプペダルの空漕ぎ(ペダルの回転がギアに伝わらない状態)が発生している場合を除外するためである。
【0202】
CPU11は、判断基準として、例えば前回と今回のケイデンスの差が2[rpm]以上ある場合を不安定であるものと判断して(ステップS712のYes)、ギア値の更新を行なわない。すなわち、ケイデンスが不安定であると判定された場合には、CPU11は、ギア値を更新せずに
図21の処理を終了する。一方、ケイデンスが不安定でない、すなわち安定していると判定された場合(ステップS712のNo)には、処理はステップS713に進む。
【0203】
第2点として、直前の上記ステップM106で得た勾配推定の結果から、一定角度以上の下り坂であるか否かを判断する(ステップS713)。これも、上記空漕ぎを除外する目的を含む。CPU11は、判断基準として、下り坂であり、且つ勾配が例えば−3[%]より(数値が)低い場合を判断して(ステップS713のYes)、ギア値の更新を行なわない。すなわち、下り坂であると判定された場合には、CPU11は、ギア値を更新せずに
図21の処理を終了する。一方、下り坂でないと判定された場合(ステップS713のNo)には、処理はステップS714に進む。
【0204】
第3点として、路面状況が粗いかどうかを判断する(ステップS714)。これは、直前の慣性走行時に判定した路面状況において、未舗装路などのように粗い路面となっていた場合、タイヤが浮くことによる断続的な空漕ギア、進行方向に進んだ距離として算出されない左右や上方向の細かな蛇行を除外することが目的である。そのため、判断基準として、直前の慣性走行時に路面が粗いと判断した場合(ステップS714のYes)、ギア値の更新を行なわない。すなわち、路面状況が粗いと判定された場合には、CPU11は、ギア値を更新せずに
図21の処理を終了する。路面状況判定の詳細は後述する。
【0205】
上記ステップS714において、路面が粗くなく滑らかであると判断した場合(ステップS714のNo)、上記3点の判定基準を満たしたものとして、CPU11はケイデンスと距離とから、以下の式
ギア値[m/rev]=距離[m]/(ケイデンス[rpm]/60)
によりギア値を更新する(ステップS715)。そして、CPU11は、
図21の処理を終了すると共に、上記
図20の処理も終了する。
【0206】
このように、行動推定結果がシッティングまたはダンシングである場合(ステップS711のYes)には、CPU11は、ケイデンスの安定性(ステップS712)、直前の経路の勾配(ステップS713)及び路面の粗さ(ステップS714)に関する判定に基づいて、ギア値の更新の有無を決定する。すなわち、上記3つのステップにおける判定基準に該当しなかった場合のみ、上記式に基づいてギア値が更新される。
【0207】
また上記ステップS711において、行動推定がシッティング及びダンシングのいずれでもないと判断した場合(ステップS711のNo)、次にCPU11は、行動推定が歩行であるか否かを判断する(ステップS716)。
【0208】
ここで行動推定が歩行であると判断した場合(ステップS716のYes)、CPU11は更新する対象がギア値ではなく歩幅であるものとして、ケイデンスと距離とから、以下の式
歩幅[m/2歩]=距離[m]/(ケイデンス[2歩/分]/60)
により歩幅を更新する(ステップS717)。そして、CPU11は、
図21の処理を終了すると共に、上記
図20の処理も終了する。
【0209】
上記式に関連し、動作の周期の観点から、自転車のクランクペダル1回転は歩行の2歩に相当するため、ケイデンスの単位を[rpm](revolutions per minute)から[2歩/分]に置換している。
【0210】
また上記ステップS716において、行動推定が歩行でもないと判断した場合(ステップS716のNo)、次にCPU11は、行動推定が慣性走行であるか否かを判断する(ステップS718)。
【0211】
ここで行動推定が慣性走行であると判断し場合(ステップS718のYes)、CPU11は、上述したギア値の更新判定で使用する路面状況を決めるため、加速度センサ21の出力から重力加速度成分を除去した、加速度3軸ノルムの分散により路面状況が粗いかどうかを判断する(ステップS719)。
【0212】
これは、ペダルを漕いでいない慣性走行時の加速度の情報中に、路面状況に応じた振動が現出するからである。
【0213】
図22は、滑らかに舗装された路面での慣性走行時の加速度(
図22(A))と、粗い路面での慣性走行時の加速度(
図22(B))を例示する。図示されるように、滑らかに舗装された路面を慣性走行しているときの加速度3軸ノルムの時間変動は比較的小さいが、粗い路面を慣性走行しているときの加速度3軸ノルムの時間変動は、路面から受ける振動の影響に起因して比較的大きい。どの程度の加速度ノルムの分散を粗いと判断するのかは、上述したギア値更新の精度と応答性との兼ね合い次第であるが、例えば0.7以上であれば粗いと判断するものとすれば良い。
【0214】
したがってCPU11は、粗い路面であると判断した場合(ステップS719のYes)、路面状況を示すメインメモリ12内の該当フラグレジスタに、粗いことを示すフラグを設定する(ステップS720)。そして、CPU11は、
図21の処理を終了すると共に、上記
図20の処理も終了する。
【0215】
また上記ステップS719において、粗い路面ではないと判断した場合(ステップS719のNo)、路面状況を示すメインメモリ12内の該当フラグレジスタに、滑らかであることを示すフラグを設定する(ステップS721)。そして、CPU11は、
図21の処理を終了すると共に、上記
図20の処理も終了する。
【0216】
このように、行動推定が慣性走行であると判断された場合(ステップS718のYes)には、CPU11は、ギア値及び歩幅のいずれも更新しないが、路面状況の粗さ/滑らかさを示すフラグの設定を行う。
【0217】
また上記ステップS718において、行動推定が慣性走行でもないと判断した場合(ステップS718のNo)、CPU11は、ギア値及び歩幅のいずれも更新することなく、この
図21の処理を終了すると共に、上記
図20の処理も終了する。これに該当するのは、行動推定結果が停止の場合である。
【0218】
また上記
図20のステップS701において、GPSの測位情報の信頼度が中であると判定した場合、CPU11は、まずデッドレコニング処理を実行する(ステップS704)。
【0219】
図23は、ステップS704のデッドレコニングのサブルーチンの詳細な処理内容を示すフローチャートである。
【0220】
CPU11は、まずその時点の行動推定が歩行であるか否かを判断する(ステップS731)。行動推定が歩行であると判断した場合(ステップS731のYes)、CPU11はその時点で設定されている歩幅とケイデンスとから、以下の式
速度[m/秒]=歩幅[m/2歩]×(ケイデンス[2歩/分]/60)
により歩行時の速度を算出する(ステップS732)。
【0221】
また上記ステップS731において、行動推定が歩行ではないと判断した場合(ステップS731のNo)、CPU11はその時点で設定されているギア値とケイデンスとから、以下の式
速度[m/秒]=ギア値[m/rev]×(ケイデンス[rev/分]/60)
により自転車走行時の速度を算出する(ステップS733)。なお、慣性走行の場合はケイデンスが0であるが、直前の0ではないケイデンスが維持されているものとして、上記式を用いて自転車走行時の速度算出が行われる。
【0222】
こうして、現在の速度を算出した後、CPU11は地磁気の信頼度推定の処理を実行する(ステップS734)。
【0223】
この地磁気の信頼度推定は、信頼度が高い場合に、進行方向の方位角が直接検出できるため、長時間のデッドレコニングでも、ジャイロセンサ22の出力による角速度の誤差の累積の影響を極力排除して、正しい進行方向の推定ができることに起因するものである。
【0224】
しかしながら、地磁気は外乱の影響で正しい方位を検出できない場合もある。特に自転車走行時に車道を走行する場合は、すぐ近くを磁性体である自動車が通過することにより外乱の影響を受け易く、地磁気の信頼度推定が重要となる。
【0225】
図24は、この地磁気の信頼度推定のサブルーチンの詳細な処理内容を示すフローチャートである。
【0226】
CPU11は、まず地磁気センサ23の出力により直前の検出時との相対角(1)を算出する(ステップS741)。
【0227】
次にCPU11は、ジャイロセンサ22の出力により直前の検出時との相対角(2)を算出する(ステップS742)。
【0228】
さらにCPU11は、地磁気センサ23の3軸ノルムの直前の所定時間分、例えば1分間分の平均(3)を算出する(ステップS743)。
【0229】
CPU11は、上記地磁気センサ23から得た相対角(1)とジャイロセンサ22から得た相対角(2)の平均値の絶対誤差が、第1の閾値Th1、例えば5[°]より小さく(条件式1)、且つ、地磁気センサ23の3軸ノルムから得た平均(3)に対する、地磁気センサ23の3軸ノルムの分散が、第2の閾値Th2,例えば10(地磁気の単位が[μT]である場合)より小さい(条件式2)か否かにより、地磁気の外乱が少なく信頼度が高いかどうかを判断する(ステップS744)。
【0230】
ここで、上記2条件が共に成立し、地磁気の外乱が少なく信頼度が高いと判断した場合(ステップS744のYes)、CPU11は地磁気信頼度が高いと設定し(ステップS745)、以上でこの
図24の処理を終えて、上記
図23の処理に戻る。
【0231】
また上記ステップS744において、上記2条件の少なくとも一方が成立せず、地磁気の外乱が大きく信頼度が低いと判断した場合(ステップS744のNo)、CPU11は地磁気信頼度が低いと設定し(ステップS746)、以上でこの
図24の処理を終えて、上記
図23の処理に戻る。
【0232】
図25は、地磁気に対する外乱の影響を説明する図である。
図25(A)は、外乱の影響が少ない場合を示す。この場合、
図25(A)−1に示すように、上記条件式1の角速度の相対角と地磁気の相対角とが略等しく、それらの平均絶対誤差が非常に小さな値となることがわかる。また
図25(A)−2に示すように、上記条件式2における左辺、地磁気の3軸ノルムにおける平均値からの分散も小さいことが知見できる。
【0233】
一方で、
図25(B)は、地磁気に対する外乱の影響が大きい場合を示す。この場合、
図25(B)−1に示すように、上記条件式1における角速度の相対角と地磁気の相対角との乖離が明らかに大きくなっていることがわかる。また
図25(B)−2に示すように、上記条件式2における左辺、地磁気の3軸ノルムにおける平均値からの分散は、上記
図25(A)−1の場合よりも大きくなっているものの、それほど明らかな相違とは知見できない状態となっている。
【0234】
この例のように、条件式2だけでは外乱の影響の有無が判別できないことがあり、逆に条件式1の左辺は小さいが条件式2の左辺が大きくなる場合もあり得る。そのため、2つの条件式を共に満たす場合のみを地磁気の信頼度が高いと見做すことで、より正確に地磁気の信頼度を判定できる。
【0235】
こうして地磁気に対する信頼度推定を行なった後、
図23の処理では、CPU11が地磁気の信頼度が高いと設定したかどうかを判断する(ステップS735)。
【0236】
ここで地磁気の信頼度が高いと設定したと判断した場合(ステップS735のYes)、CPU11はステップS732あるいはステップS733で算出した速度と地磁気センサ23で得られる地磁気の検出内容とから、現地点の経度と緯度とを推定する(ステップS736)。
【0237】
また上記ステップS735において、地磁気の信頼度が高くなく、低いと設定したと判断した場合(ステップS735のNo)、CPU11は、ステップS732あるいはステップS733で算出した速度と、ジャイロセンサ22から得られる水平面方向の角速度の検出内容とから、現地点の経度と緯度とを推定する(ステップS737)。すなわち、地磁気の信頼度が低い場合には、地磁気センサ23から得られる地磁気の検出内容に代えてジャイロセンサ22から角速度の検出内容に基づいて、現地点の経度と緯度とを推定する。
【0238】
こうして
図23のデッドレコニングの処理を終了した後、上記
図20に戻る。
図20において、GPSの信頼度が中程度である場合、CPU11は、GPS測位情報の信頼度に応じて適宜設定可能な変数r(0<r<1)に応じて、次式
経緯度=r×GPS+(1−r)×DR
(但し、GPS:GPS測位による経度と緯度、
DR:デッドレコニング測位による経度と緯度。)
により、GPS測位情報とデッドレコニング測位情報を組み合わせる重み付け処理を実行し(ステップS705)、以上でこの
図20の軌跡推定の処理を終了する。
【0239】
また上記ステップS701において、GPSの測位情報の信頼度が低であると判定した場合、CPU11は、デッドレコニング処理を実行する(ステップS706)。
【0240】
このデッドレコニングの処理は上記ステップS704で実行した処理と同様、上記
図23で詳細な処理内容を説明した通りである。
【0241】
デッドレコニングの処理の終了後、CPU11は、デッドレコニングで得た測位情報のみによる経度と緯度の更新処理を実行し(ステップS707)、以上でこの
図20の軌跡推定の処理を終了する。
【0242】
以上により、本実施形態では、サイクリングの軌跡を推定する軌跡推定装置が提供される。軌跡推定装置は、例えば、衛星測位情報の信頼度を判定する信頼度判定部と、衛星測位情報の信頼度に基づいて、サイクリングの軌跡を推定するためのパラメータを更新するタイミングを判定する更新タイミング判定部と、タイミングの判定結果に基づいてパラメータを更新する更新部と、パラメータを用いて自律航法により軌跡を推定する軌跡推定部と、を有する。ウェアラブルデバイス10が軌跡推定装置としての機能を備え、ウェアラブルデバイス10のCPU11が、上記信頼度判定部、更新タイミング判定部、更新部及び軌跡推定部としての機能を備える。
【0243】
本実施形態では、移動速度の算出にケイデンスとギア値(歩行時は歩幅)というパラメータを導入したことにより、ギアが変わらない限りは、ケイデンスさえ得られれば安定して速度算出が可能である。
【0244】
また、本実施形態では、サイクリングの軌跡を推定する軌跡推定装置が提供される。軌跡推定装置は、角速度と地磁気の各々から算出した値を用いて、角速度と地磁気のいずれを方向指定として選択するのかを判定する地磁気信頼度判定部と、方向指定で選択した角速度又は地磁気を用いて自律航法により軌跡を推定する軌跡推定部と、を有する。ウェアラブルデバイス10が軌跡推定装置としての機能を備え、ウェアラブルデバイス10のCPU11が、上記地磁気信頼度判定部及び軌跡推定部としての機能を備える。
【0245】
例えば、進行方向について、本来は誤差の累積しない地磁気を積極的に採用したいが、サイクリングの場合自動車に近づいたときに生じる外乱により乱れが頻繁に発生するため、地磁気の信頼度推定を行なうことにより、選択的に地磁気かジャイロを使用している。
【0246】
本実施形態によれば、GPSの観測環境が悪くても、サイクリングなどにおける移動軌跡を精度良く算出することが可能となる。
【0247】
図3のメインルーチンにおいて、ステップS107の軌跡推定の処理後、CPU11は、速度推定の処理を実行する(ステップM108)。速度に関し、GPS測位情報の信頼度が高い場合、CPU11は、GPS測位で得られるドップラーシフト値により0.1[m/秒]以下の精度で移動速度の情報を取得する。
【0248】
またGPS測位情報の信頼度が低い場合、CPU11は、上記軌跡推定により得た軌跡の距離と時間とから速度を算出する。
【0249】
その後にCPU11は、カロリー推定の処理を実行する(ステップM109)。
【0250】
本実施形態では、カロリー推定として、国立・栄養研究所が公開している「改訂版『身体活動のメッツ(METs)表』」に準拠して、ウェアラブルデバイス10で解析した情報を加味して消費カロリーを推定するものとする。METs(METabolic equivalents)は、運動強度の単位であり、安静時を1として、その何倍のエネルギーを消費するかで活動の強度を表すものである。
【0251】
図26は、カロリー推定のサブルーチンの詳細な処理内容を示すフローチャートである。CPU11は、まず行動推定がシッティングまたはダンシングであるか否かを判断する(ステップS801)。
【0252】
行動推定がシッティングまたはダンシングであると判断した場合(ステップS801のYes)、CPU11は、速度と勾配とからMETsを算出する(ステップS802)。
【0253】
図27(A)は、シッティング/ダンシングの場合のMETsを説明する図である。
図27(A)−1が速度METsを示し、
図27(A)−2が勾配METsを示す。これら、速度METsと勾配METsとを加算した和を求める。
【0254】
図27(A)−1に示すように、速度METsでは、
速度7.23[km/時]未満で、固定値1.8METs、
速度7.23[km/時]以上、速度36.76[km/時]未満で、
METs=0.47×速度[km/時]−1.63 …(1)
速度36.76[km/時]以上で、固定値15.8METs
となる。
【0255】
また
図27(A)−2に示すように、勾配METsでは、勾配0[%]以上で、
METs=0.55×勾配[%] …(2)
を速度METsと加算する。
【0256】
さらにCPU11は、行動推定がダンシングであるか否かを判断する(ステップS803)。行動推定がダンシングであると判断した場合にのみ(ステップS803のYes)、CPU11は、上記算出したMETsに固定値1.5METsを加算して更新する(ステップS804)。
【0257】
上記式(1)は、METs表から自転車の走行速度に言及している項目(コード:01018,01019,01020,01030,01040,01050)を抽出し、それぞれの中間速度でMETs値を定め(
図27(A)−1のプロット点位置を参照)、線形回帰によりモデル化した。
【0258】
速度7.23[km/時]未満については、後述する慣性走行時のMETsを1.8METsと定めたために下限値として設定した固定値である。
【0259】
また速度36.76[km/時]以上では、自転車の速度に関するMETs表の上限が15.8METsであったため、それを上回らないように上限を設定した結果である。
【0260】
さらに式(2)の勾配METsは、METs表のコード:01003とコード:01009に基づき、自転車走行時の登り坂分のMETsを5.5METsと算出し、その際の勾配を10[%]と仮定して、勾配によるMETs増加分を線形回帰によりモデル化した結果である。
【0261】
また上記ステップS804で説明したダンシング時の増加分は、METs表のコード:01066と、上記式(1)における19.3[km/時]時のMETs値を算出し、ダンシング時の増加分として算出した結果である。
【0262】
また上記ステップS801において、行動推定がシッティングまたはダンシングではないと判断した場合(ステップS801のNo)、次にCPU11は、行動推定が歩行であるか否かを判断する(ステップS805)。
行動推定が歩行であると判断した場合(ステップS805のYes)、CPU11は、速度METsと勾配METsとから、METsを算出する(ステップS806)。
【0263】
図27(B)は、歩行時のMETsを説明する図である。
図27(B)−1が速度METsを示し、
図27(B)−2が勾配METsを示す。これら、速度METsと勾配METsとを加算した和を求める。
【0264】
図27(B)−1に示すように、速度METsでは、
速度3.2[km/時]未満で、
METs=0.47×速度[km/時]+1.3 …(3)
速度3.2[km/時]以上、速度8.0[km/時]未満で、
METs=0.24×速度
2−1.5×速度+5.2 …(4)
速度8.0[km/時]以上で、固定値8.4METs
となる。
【0265】
また
図27(B)−2に示すように、勾配METsでは、勾配0[%]以上で、
METs=0.42×勾配[%] …(5)
を速度METsと加算する。
【0266】
さらにCPU11は、歩行時全般において、固定値0.8METsを加算して更新する。
【0267】
上記式(3)は、後述する停止時のMETsを1.3と定めたため、速度0[km/時]のMETsを1.3、METs表で定義されている歩行速度の下限3.2[km/時]とその時のMETs値2.8から、線形回帰によりモデル化した。
【0268】
上記式(4)は、METs表から歩行速度に言及している項目(コード:17152,17170,17190,17200,17220,17230,17231)を抽出し、(
図27(B)−1のプロット点位置を参照)、非線形回帰によりモデル化した。
【0269】
速度8.0[km/時]以上については、歩行速度として定義されている上限である8.0[km/時]で打ち切るものとし、上記式(4)によりそのときのMETsを算出した。
【0270】
また勾配METsの式(5)では、歩行時の速度と勾配についてMETs表で言及している項目(コード:17210,17211,17235)を抽出し、上記式(4)から速度分のMETsを減算して、歩行時の勾配による増加分を線形回帰によりモデル化した。
【0271】
さらに、歩行時全般において、固定値0.8METsを加算したのは、本実施形態で主に対象とする歩行が、自転車の押し歩きである可能性が高いことを踏まえて、比較的に自転車の押し歩きに近い状況とその時の速度に言及しているMETs表の項目(コード:17100)を抽出し、上記式(4)から速度分のMETsを減算し、歩行時の自転車の押し歩きによる増加分として算出したものである。
【0272】
また上記ステップS805において、行動推定が歩行でもないと判断した場合(ステップS805のNo)、次にCPU11は、行動推定が慣性走行であるか否かを判断する(ステップS807)。
行動推定が慣性走行であると判断した場合(ステップS807のYes)、CPU11は、METs値を固定値1.8とする(ステップS808)。
すなわち、慣性走行は静止状態に近いが、自転車の走行によって生じる空気抵抗や路面からの振動に対して主に上半身でバランスをとっている分、カロリー消費が発生するものと仮定して、比較的状況の似通った項目(コード:15408)をMETs表から抽出した結果が、固定値1.8METsである。
【0273】
また上記ステップS807において、行動推定が慣性走行でもないと判断した場合(ステップS807のNo)、自動的に行動推定は静止であることとなるので、CPU11は、METs値を固定値1.3とする(ステップS809)。
これは、METs表から該当する項目(コード:07021)を抽出した結果である。
【0274】
以上、行動推定が、シッティングまたはダンシングである場合、歩行である場合、慣性走行である場合、及び静止である場合についてそれぞれMETs値を算出した後、CPU11は、消費カロリーを、次式
カロリー=METs値×1.05×単位時間[秒]×体重[kg]
により算出し(ステップS810)、以上で上記
図26のカロリー推定を終了する。
【0275】
図3のメインルーチンにおいて、CPU11は次に前傾角推定の処理を実行する(ステップM110)。前傾角は、サイクリストCLが腰に装着したウェアラブルデバイス10が重力軸である鉛直方向からどれだけ進行方向に傾いているのかを表す。
【0276】
これは特に、自転車BCがロードレーサータイプである場合において、ドロップハンドルを持つ手のポジション(ドロップポジション、ブラケットポジション、アップライトポジションなど)が、自転車BCを漕いでいる区間の地形や競技状況に応じて随時変化するため、自転車での活動を表現する上で重要となる。特に、ロードバイクにおいては、上記各ポジションは、サイクリストCLが頑張って漕いでいる区間やリラックスして漕いでいる区間などを反映するため、自転車での一連の活動を把握する上で重要である。
【0277】
図28は、サイクリストCLのブラケットポジション及びドロップポジションと、サイクリストCLのウェアラブルデバイス10の取付位置の高さ(低/中/高)とに応じた、ウェアラブルデバイス10の前傾角の推定内容を例示する図である。
【0278】
CPU11は、加速度センサ21の出力から、無限インパルス応答フィルタであるカルマンフィルタ処理により、重力方向のx軸回りの角を算出することで、上記前傾角を推定する。
図28に示すように、取付位置が低いときの前傾角は、例えば、ブラケットポジションで0[°]、ドロップポジションで5[°]と推定される。また、取付位置が中程度のときの前傾角は、例えば、ブラケットポジションで15[°]、ドロップポジションで25[°]と推定される。さらに、取付位置が高いときの前傾角は、例えば、ブラケットポジションで35[°]、ドロップポジションで55[°]と推定される。
【0279】
前傾角推定を終えると、CPU11は以上で計測、推定した解析結果を取り纏めてメモリカード17に記録、保存させると共に、このウェアラブルデバイス10とペアリングしている外部機器30が設定されている場合には、通信インタフェイス14を介して上記解析結果を当該外部機器30に送信する(ステップM111)。
【0280】
CPU11は、以上で活動時に一定周期、例えば1[秒]毎に行なう一連の計測処理を終え、次の計測に備えて上記ステップM101からの処理に戻る。
【0281】
こうして上記ステップM101〜M111の処理を繰返し実行することにより、CPU11は活動中の各種センサを用いた計測動作を実行し、その解析結果を順次格納していく。
【0282】
その後、CPU11が、操作部16の計測のスタート/エンドを指示するキーの操作を受付け、上記ステップM101において、計測を継続しないと判断すると(ステップM101のNo)、次にCPU11は、それまでの活動中に蓄積したデータに対するクラスタリング処理を実行する(ステップM112)。
【0283】
クラスタリング処理は、ウェアラブルデバイス10のCPU11で実行してもよいし、ウェアラブルデバイス10から解析結果を受信した外部機器30のCPU31が実行してもよい。すなわち、クラスタリング処理を実行する活動記録データ処理装置は、ウェアラブルデバイス10であってもよいし、スマートフォンやPCなどの外部機器30であってもよい。
【0284】
クラスタリング処理では、任意の解析項目を適切に表現してユーザに提示する。速度を例にした場合、ユーザの身体能力や活動の目的によって、速度が採り得る値の平均や範囲は大きく異なるものとなる。速度をヒートマップの如く色分けして表示する場合、画一的な絶対値で色分けを行なうと、ユーザの感覚では遅速をつけたつもりでもほぼ一色で表示されてしまうなど、所望しない結果が得られることもあり得る。そこでクラスタリング処理を行なうことで、同一活動内での速度などの後述する対象項目の相対的な変化を適切に表現することが可能となる。
【0285】
クラスタリングのもう一つの目的として、項目の絶対値では判断が困難であり、あるいは意味が判読できない解析結果に、適切な意味を付与することがある。ここでは、例えば前傾角とギア値とについて説明する。
【0286】
前傾角は、
図28を参照して上述したように、サイクリストCLがウェアラブルデバイス10を装着する位置の変化、サイクリストCLのポジションの変化によって、容易に検出結果が異なることとなる。ウェアラブルデバイス10をクリップでサイクリストCLのウエアに装着する場合、その日にサイクリストCLが着用するウエアによってもウェアラブルデバイス10の装着位置は容易に変化する。そのため、ウェアラブルデバイス10で得られる前傾角の絶対値のみでは、サイクリストCLのポジションを示す前傾の度合いを判断することは難しい。そこで、前述したクラスタリング処理を実行することにより、同一活動中でのポジションを示す前傾の度合いを適切に表現することが可能となる。
【0287】
ギア値は、本実施形態ではクランクペダル1回転当たりで進む距離を示すものとする。一般的なユーザの感覚では、ギアの重さを示す指標に相当する。このギア値は、自転車BCのタイヤ径やギア比によって変化するため、絶対値だけでは判断を行なうことが難しいが、クラスタリング処理を実行することで、同一活動中でのギアの重さを適切に分類して表現することが可能となる。
【0288】
本実施形態では、クラスタリング処理の前提として、ウェアラブルデバイス10のユーザが、予め任意の解析項目をクラスタリング処理の対象として選択しているものとする。また、クラスタ数及び値の幅は不明であり、クラスタ間のサイズに大きな偏りがあるとする。
【0289】
図29は、CPU11が実行するクラスタリング処理のサブルーチンの詳細な処理内容を示すフローチャートである。CPU11は、まずクラスタリング処理を行なうべく設定されている対象項目があるか否かを判断する(ステップS901)。
【0290】
対象項目があると判断すると(ステップS901のYes)、CPU11はその活動全体での対象項目のデータをメモリカード17から読出すと共に、対応する参照テーブルをプログラムメモリ13から読出して取得する(ステップS902)。
【0291】
図30は、プログラムメモリ13に記憶される参照テーブルの内容を例示するものである。ここでは「サイクリング」と「トレッキング」の2つの活動に応じて行動分類を定義している。加えて、その活動に適した項目毎に、対象とする行動と、最小分割幅となる基本単位とを定義している。最小分割幅は、サイクリストあるいはトレッカーの身体能力や活動の目的に応じて適宜設定可能である。
【0292】
サイクリングの場合には、上記の通り、シッティング、ダンシング、慣性走行、歩行、停止の5つの行動分類がある。また、クラスタリング処理の対象として、速度、前傾角、ギア値、ケイデンス、高度、温度、勾配、横傾き角の8つの項目がある。速度、前傾角、ギア値、ケイデンス、高度、温度、勾配は、既出である。横傾き角は、鉛直方向に対するサイクリストCLの身体の傾きの角度であり、ジャイロセンサ22のz軸方向の出力GyrZから算出される(体動を除いた)角速度と速度から算出される遠心力と、重力の比から取得される値である。項目ごとに対象とする行動と最小分割幅が設定されており、例えば、項目が速度である場合の対象とする行動はシッティング、ダンシング、慣性走行であり、最小分割幅は、例えば2[km/h]である。
【0293】
ウェアラブルデバイス10は、サイクリングの他、トレッキングにおける活動記録にも用いられる。トレッキングの場合には、歩行、走行、乗り物、停止の4つの行動分類がある。すなわち、
・歩行:所定の移動速度以上の速度で進んでいる状態
・走行:歩行よりも早い所定の移動速度以上の速度で進んでいる状態
・乗り物:電車、自動車、ロープウェイ等の乗り物に乗って移動している状態
・停止:上記以外の行動。主に止まっている状態を想定。
【0294】
これら4つの行動が、一連のトレッキング活動記録に対して本実施形態から類推される行動推定処理によって行動推定結果として得られる。
【0295】
また、クラスタリング処理の対象として、速度、高度、温度、斜度の4つの項目がある。項目ごとに対象とする行動と最小分割幅が設定されており、例えば、項目が速度である場合の対象とする行動は、歩行、走行であり、最小分割幅は、例えば0.5[km/h]である。
【0296】
次にCPU11は、取得した参照テーブルとその時点の対象項目とにより、行動推定結果から該当する時刻値分のデータのみを抽出する(ステップS903)。
【0297】
例えば対象項目が前傾角である場合、取得した参照テーブルに基づけば、対象とする行動はシッティング、ダンシング、慣性走行である。すなわち、行動推定結果が歩行あるいは停止である時点での前傾角のデータは、自転車による活動の観点からは重要ではなく、ノイズ要素となるため、この抽出処理によって除外するものとする。すなわち、ノイズ除去の一種として行動推定結果が利用される。
【0298】
次にCPU11は、抽出したデータから、極端に外れた値をノイズ成分として除去する(ステップS904)。
【0299】
その後、CPU11は残ったデータに対して平均と正規分布に基づく標準偏差とを算出する(ステップS905)。算出した平均と標準偏差とにより、所定σ内を所定数で分割する(ステップS906)。
【0300】
ここで所定σは、データ分布中のどの程度の散らばりまでを着目したいかによって決定されるもので、例えば平均値から±3σの範囲を対象とする。
【0301】
また分割する所定数は、最大で何分割まで定義するか、あるいは分割幅の分解能をどの程度にするか、によって予め設定される。例えば3分割すると設定されていた場合、所定σ内を3分割し、さらに所定σを外れる、所定σ以上、所定σ以下を含んで計5分割として、最大クラスタ数が定められる。
【0302】
CPU11は、上記分割により定められた分割幅が、参照テーブルで定義される最小分割幅よりも小さいか否かを判断する(ステップS907)。
【0303】
ここで上記分割により定められた分割幅が最小分割幅よりも小さいと判断した場合にのみ(ステップS907のYes)、CPU11は定義されている最小分割幅によって再分割を行なう(ステップS908)。
【0304】
この最小分割幅による再分割は、例えば対象項目が前傾角であって同一活動中に常に同じポジションで走行していた場合、殆ど角度が変化しないため、1つのクラスタとして出力されることが望ましいと考えられるので、予め定義された最小分割幅、例えば前傾角は2[°]、により、過度に分割を行なうことを防ぐ目的で行なう処理である。
【0305】
上記ステップS907において、上記分割により定められた分割幅が最小分割幅以上であると判断した場合(ステップS907のNo)、CPU11は上記ステップS908の再分割処理を実行しない。
【0306】
最後に、CPU11は分割した領域毎にラベリングを行なう(ステップS909)。この際、目的に応じて、上記ステップS903で抽出しなかった行動推定結果の領域や、ステップS904で除去した外れ値についても、相当するラベリングを行なっても良い。これは例えば、対象項目が速度であった場合に、クラスタリングの計算からは歩行時の速度は除外したいが、最終的な分類毎の色分けには、表示上の連続性の点からも反映したい場合などが考えられる。すなわち、最終的には、クラスタリングの計算では除外した歩行時の速度も含めた同一活動中の全ての速度を連続的にラベリングすることができる。
【0307】
こうして1つの対象項目についてラベリングまでの処理を一連のクラスタリング処理として、CPU11は上記ステップS901に戻り、対象項目毎に同様の処理を実行する。
【0308】
そして、全ての対象項目について上記クラスタリング処理を実行した後、上記ステップS901において、対象項目がないと判断すると(ステップS901のNo)、以上でこの
図29によるクラスタリング処理を終了する。
【0309】
クラスタリング処理終了後、処理済みの対象項目のデータがサイクリスト等のユーザに提示される。例えば、ウェアラブルデバイス10のCPU11がクラスタリング処理を実行した場合には(
図2A参照)、バスBを介して、ウェアラブルデバイス10の不図示のディスプレイに処理済みの対象項目の色分けされたデータが表示されてもよいし、バスBから通信インタフェイス14、アンテナ19を介して外部機器のディスプレイに表示されてもよい。また、例えば、外部機器30のCPU31がクラスタリング処理を実行した場合には(
図2B参照)、バスB1を介して、外部機器30のディスプレイ34に処理済みの対象項目の色分けされたデータが表示されてよい。例えば、対象項目が速度である場合、計測・解析された一連の活動の軌跡上に色分けされた速度データが重ねて表示される。
【0310】
なお、クラスタリング処理の対象項目の行動(行動推定結果)ごとにステップS905〜S908の処理を変えることも可能である。例えば、対象項目がケイデンスである場合、
図30の参照テーブルから、クラスタリング処理の対象とする行動はシッティング、ダンシング、歩行であるが、シッティング時やダンシング時のケイデンスは歩行時のケイデンスと大きく異なりうる。そこで、各行動に対応するクラスタ数に対して異なる最小分割幅での処理を行なうことにより、より適切なクラスタリングを行なうことが可能となる。
【0311】
以上により、本実施形態では、一連の活動に対して得られたデータと、前記データと関連付けられた、前記一連の活動における行動推定情報とを取得して、行動推定情報に基づいて、前記データから対象とすべき対象行動データを抽出して、対象行動データに対してクラスタリングを行なう演算部を有する活動記録データ処理装置が提供される。ウェアラブルデバイス10のCPU11あるいは外部機器30のCPU31が活動記録データ処理装置の演算部としての機能を備える。
【0312】
本実施形態におけるクラスタリング処理では、各項目におけるクラスタ数が未知であったり、クラスタ間のサイズにも大きく差があったりする場合においても、平均・標準偏差等の基本的な手法を用いて、項目に応じた適切なクラスタリング処理を行うことが可能である。
【0313】
特に、このようなクラスタリング処理は、サイクリングやトレッキング、あるいはランニング、パドリング、サーフィンなどのアウトドアスポーツの活動記録に限らず、クラスタ数が未知であったりクラスタ間のサイズにばらつきがあったりする一連のデータの相対的な変化を適切に強調して提示したり、単なる絶対値表示ではそのものの持つ意味がわかりにくいデータをよりわかりやすく提示したりするのに有用である。
【0314】
また、本実施形態では、一連の活動記録に含まれる複数の項目(速度、前傾角、ギア値等)の各々に対して独立にクラスタリング処理を行なうことが可能である。これにより、ウェアラブルデバイス10で取得可能な種々の項目に関して、ユーザに適切な提示を与えることができる。
【0315】
図3のメインルーチンでは、クラスタリング処理に続いて、CPU11がパワー推定の処理を実行する(ステップM113)。
【0316】
図31は、パワー推定のサブルーチンの詳細な処理内容を示すフローチャートである。CPU11は、活動中の各時点のデータに関して、それぞれ以下のパワー推定を行なう。
【0317】
まずCPU11は、その時点の気圧と気温のデータ取得する(ステップS951)。
【0318】
次にCPU11は、空気密度係数を次式
空気密度係数=気圧[hPa]/(2.87×(気温[℃]+273.15))/1.293
により算出する(ステップS952)。
【0319】
さらにCPU11は、前傾角の上記ステップM112でのクラスタリング結果から、ポジション係数を取得する(ステップS953)。因みにポジション係数としては、例えば
ドロップポジション:ポジション係数=1.0
ブラケットポジション:ポジション係数=1.25
アップライトポジション:ポジション係数=1.375
ダンシング:ポジション係数=1.725
を用いる。
【0320】
上記ドロップポジション、ブラケットポジション、及びアップライトポジションについては上記クラスタリングで行動推定がシッティングである場合を3つのクラスタに分割した結果から判別する一方で、ダンシングは行動推定の結果から判別する。
【0321】
次にCPU11は、速度のデータを取得する(ステップS954)。
【0322】
CPU11は、上記取得した結果に基づいて空気抵抗を、次式
空気抵抗[kgf]=0.00007638×身長[cm]
0.725×体重[kgf]
0.425
×速度[m/秒]
2×空気密度係数×ポジション係数
により算出する(ステップS955)。
【0323】
なお、上記ウェアラブルデバイス10で取得、解析したデータに加えて、ウェアラブルデバイス10のユーザであるサイクリストCLの身長、体重、体重と上記自転車BCや図示しない荷物の総和としての重さ、などは、いずれも事前にウェアラブルデバイス10に設定済であるものとする。
【0324】
続いてCPU11は、その時点の路面係数を直前の慣性走行の区間時に得た加速度から、重力加速度成分を除去した加速度3軸ノルムの分散により算出する(ステップS956)。
【0325】
上記
図22で説明した如く、路面状態によって慣性走行時の加速度の相違が現出する。路面係数は、滑らかに舗装された路面を1.0とし、舗装されていない路面を5.0程度として、加速度3軸ノルムの値に応じてその間で変動するように正規化する。
【0326】
CPU11は、得た路面係数を用いて、転がり抵抗係数を次式
転がり抵抗係数=タイヤ係数×路面係数
により算出する(ステップS957)。
【0327】
ここでタイヤ係数は、一般的なロードレーサー用であれば、例えば0.004程度、一般的なマウンテンバイク用であれば0.008程度とするなど、使用するタイヤによって、0.003〜0.010程度の範囲内で定めるが、ここでは既知の値であるものとする。
【0328】
次にCPU11は、その時点での勾配のデータ取得する(ステップS958)。
【0329】
CPU11は、取得した勾配のデータを用いて、転がり抵抗を次式
転がり抵抗[kgf]=重さ[kgf]×cos(asin(勾配[%]×0.01))
×転がり抵抗係数
により算出する(ステップS959)。
【0330】
さらにCPU11は、登坂抵抗を次式
登坂抵抗[kgf]=重さ[kgf]×勾配[%]×0.01
により算出する(ステップS960)。
【0331】
上記算出した空気抵抗、転がり抵抗、及び登坂抵抗により、CPU11は総合的な抵抗を、次式
抵抗[kgf]=空気抵抗[kgf]+転がり抵抗[kgf]+登坂抵抗[kgf]
により算出する(ステップS961)。
【0332】
最後にCPU11は、その時点のパワーを、次式
パワー[W]=抵抗[kgf]×速度[m/秒]×9.81
により算出する(ステップS962)。
【0333】
上記一連のパワー推定の処理を、活動中に記録した各時点において繰返し実行することにより、その活動全体を通して使用したパワーの総出力値[kWh]を算出することができる。
【0334】
図3のメインルーチンにあっては、上記ステップM113のパワー推定の処理をもって一連の動作を終了する。
【0335】
なお、上記
図3のステップM112以下のクラスタリング及びパワー推定の各処理に対する動作は、ウェアラブルデバイス10の内部で実行するのではなく、ウェアラブルデバイス10からのデータを受け取って格納した外部機器30、例えばスマートフォンやパーソナルコンピュータ等で、予めインストールしていたアプリケーションプログラムに基づいて実行するものとしても良い。
【0336】
以上詳述した如く本実施形態によれば、装置の構成とその取り扱いとを簡易化しながら、サイクリング等を含む各種活動時の状況を克明に解析して記録することが可能となる。
【0337】
また上記実施形態にあっては、ウェアラブルデバイス10にGPSアンテナ20及びGPS受信部15を設けて、3次元空間内での経度/緯度/高度の絶対値を随時算出して、その信頼度に化する情報と共に活動状態の判定と解析に用いるものとしたので、測位衛星からの到来電波が利用できる環境下では、より正確且つ客観的に通過同状態を判定できる。
【0338】
さらに本実施形態にあっては、活動のジャンルとしてサイクリングをセットした場合に、サイクリストCLが身体に装着するウェアラブルデバイス10のみによって、活動状態がシッティング、ダンシング、慣性走行、歩行、及び停止のいずれかであるかを判定して、さらに細部の情報と共に記録するものとしたので、一般的なサイクルコンピュータに比して取扱いをより一層簡易化しながら、詳細な情報を記録することができる。
【0339】
特にサイクリングの活動中のダンシング(立ち漕ぎ)と自転車を降りての歩行に関しては、身体の上下動の周期性等から、より正確にそれらの状態を判定することができる。
【0340】
加えて、サイクリングの活動中のシッティング(座り漕ぎ)に関しても、ジャイロセンサの出力する角速度と、加速度センサが出力する加速度の、経時的な変化の度合いから正確に状態を判定することができる。
【0341】
さらに上記シッティングの判定に関しては、ジャイロセンサの出力する角速度と、加速度センサが出力する加速度の信頼度に応じて、複数段階に分けて判定を行ない、その判定結果に基づいて、後に実行するケイデンスの算出等への利用の可否を設定するものとしたので、より信頼性の高い判定結果として活用可能となる。
【0342】
加えて上記実施形態では、サイクリングの活動中のシッティング、ダンシング、及び歩行時においては、合わせてケイデンスの値も算出するものとしたので、サイクリング時の状態をより詳細に判定することができる。
【0343】
上記ケイデンスの算出に当たっては、加速度センサとジャイロセンサの経時的な変化から正確な値を算出することができる。
【0344】
また上記実施形態では、活動中の速度と勾配とを合わせて判定するものとしたので、各種活動時の状況をさらに詳細に解析して記録することが可能となる。
【0345】
加えて本実施形態では、活動状態の判定結果に基づく消費カロリーを推定により算出し、算出した消費カロリーの推定値を活動判定の結果と合わせて記録するようにしたので、活動行程の各時点での消費カロリー及び全行程を通じての消費カロリーを認識することができ、栄養補給のタイミング等を適切に判断することができる。
【0346】
同様に本実施形態では、活動状態の判定結果に基づく出力パワーを推定により算出し、算出した出力パワーの推定値を活動判定の結果と合わせて記録するようにしたので、活動行程の各時点での出力パワー及び全行程を通じての出力パワーを認識することができ、活動行程でのペース配分等を適切に判断することができる。
【0347】
なお上記実施形態は、サイクリングの活動時に活動状態を判定する場合について説明したが、本発明は活動内容を限定するものではなく、サイクリング以外の活動、例えばトレッキング、トレイルランニング、カヌーイング、サーフィン等のアウトドアスポーツ、アウトドアとインドアとを問わず各種の球技スポーツ等においても、センサでの検出出力に対する適正な閾値設定を行なうことで、活動状態の判定を行なうことができる。
【0348】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は適宜組み合わせて実施してもよく、その場合組み合わせた効果が得られる。更に、上記実施形態には種々の発明が含まれており、開示される複数の構成要件から選択された組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、課題が解決でき、効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0349】
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]サイクリングの軌跡を推定する軌跡推定装置であって、衛星測位情報の信頼度を判定する信頼度判定部と、前記衛星測位情報の信頼度に基づいて、サイクリングの軌跡を推定するためのパラメータを更新するタイミングを判定する更新タイミング判定部と、前記タイミングの判定結果に基づいて前記パラメータを更新する更新部と、前記パラメータを用いて自律航法により前記軌跡を推定する軌跡推定部と、を具備する軌跡推定装置。
[2]前記更新タイミング判定部は、シッティング、ダンシング、慣性走行及び歩行を含む行動推定情報を用いて、前記パラメータを更新するタイミングを判定する、[1]に記載の軌跡推定装置。
[3]前記更新タイミング判定部は、前記信頼度判定部が前記衛星測位情報の信頼度が高いと判定したときに、前記パラメータを更新するタイミングを判定する、[1]又は[2]に記載の軌跡推定装置。
[4]前記更新タイミング判定部は、前記信頼度判定部が前記衛星測位情報の信頼度が低いと判定したときには前記パラメータを更新しない、[1]又は[2]に記載の軌跡推定装置。
[5]前記更新タイミング判定部は、前記行動推定情報がシッティング又はダンシングである場合、自転車のケイデンスが安定していて、且つ経路が下り坂ではなく、且つ路面が所定の粗さ未満であるときに前記パラメータを更新する、[2]に記載の軌跡推定装置。
[6]前記パラメータは、自転車のケイデンスと進む距離との関係を示す、[5]に記載の軌跡推定装置。
[7]前記更新タイミング判定部は、前記行動推定情報が歩行であるときに前記パラメータを更新する、[2]に記載の軌跡推定装置。
[8]前記パラメータは、サイクリストの歩数と距離との関係を示す、[7]に記載の軌跡推定装置。
[9]前記更新タイミング判定部は、前記行動推定情報が慣性走行であるときには前記パラメータを更新しない、[2]に記載の軌跡推定装置。
[10]角速度と地磁気の各々から算出した算出値を用いて、角速度と地磁気のいずれを方向指定として選択するのかを判定する地磁気信頼度判定部をさらに具備し、前記信頼度が低いと判定されたとき、前記軌跡推定部は、前記方向指定で選択した角速度又は地磁気を用いて自律航法により前記軌跡を推定する、[1]乃至[9]のいずれか1に記載の軌跡推定装置。
[11]サイクリングの軌跡を推定する軌跡推定方法であって、衛星測位情報の信頼度を判定することと、前記衛星測位情報の信頼度に基づいて、サイクリングの軌跡を推定するためのパラメータを更新するタイミングを判定することと、前記タイミングの判定結果に基づいて前記パラメータを更新することと、前記パラメータを用いて自律航法により前記軌跡を推定することと、を含む軌跡推定方法。
[12]サイクリングの軌跡を推定するためのプログラムであって、衛星測位情報の信頼度を判定することと、前記衛星測位情報の信頼度に基づいて、サイクリングの軌跡を推定するためのパラメータを更新するタイミングを判定することと、前記タイミングの判定結果に基づいて前記パラメータを更新することと、前記パラメータを用いて自律航法により前記軌跡を推定することと、をコンピュータに実行させる、プログラム。
[13]サイクリングの軌跡を推定する軌跡推定装置であって、角速度と地磁気の各々から算出した算出値を用いて、角速度と地磁気のいずれを方向指定として選択するのかを判定する地磁気信頼度判定部と、前記方向指定で選択した角速度又は地磁気を用いて自律航法により前記軌跡を推定する軌跡推定部と、を具備する軌跡推定装置。
[14]前記算出値は、角速度及び地磁気からそれぞれ算出した相対角の平均絶対誤差と、地磁気3軸ノルムの過去所定時間の平均に対する分散とである、[13]に記載の軌跡推定装置。
[15]前記地磁気信頼度判定部は、前記平均絶対誤差が所定の閾値よりも小さく、且つ前記分散が所定の閾値よりも小さいとき、地磁気を方向指定として選択する、[14]に記載の軌跡推定装置。
[16]サイクリングの軌跡を推定する軌跡推定方法であって、角速度と地磁気の各々から算出した算出値を用いて、角速度と地磁気のいずれを方向指定として選択するのかを判定することと、前記方向指定で選択した角速度又は地磁気を用いて自律航法により前記軌跡を推定することと、を含む軌跡推定方法。
[17]サイクリングの軌跡を推定するためのプログラムであって、角速度と地磁気の各々から算出した算出値を用いて、角速度と地磁気のいずれを方向指定として選択するのかを判定することと、前記方向指定で選択した角速度又は地磁気を用いて自律航法により前記軌跡を推定することと、をコンピュータに実行させる、プログラム。