8-15. activity_plotter

加速度データを表示するコード(plot_Acc)を発展させ、加速度波形とODBAVeDBAという2つの活動量の指標について比較します。

plot_Accでは、3軸加速度(Ax, Ay, Az)から活動量の指標としてODBA(Overall Dynamic Body Acceleration)を算出しました。ODBAは以下の式により、各軸の絶対値を合計し、重力加速度を補正しています。

ここで「Ax(t), Ay(t), Az(t)」は時点 t における前後・左右・上下方向の加速度を表し、「9.8 m/s²」は静止時の重力加速度として補正のために差し引かれる値です。

しかし、実際にこの手法で算出された結果を確認すると、動物が明らかに静止していると考えられる区間でもODBAの値が0にならず、一定の値を保っていることがわかりました。これは、静的加速度成分を適切に除去できていないためです。

より簡便かつ実用的な指標として、VeDBA(Vectorial Dynamic Body Acceleration)があります。VeDBAは三軸加速度の合成ベクトルから重力加速度を差し引いた値として定義され、次式で計算されます。

この式では、3軸方向の加速度から合成ベクトル(ユークリッド距離)を求め、そこから重力の影響(9.8 m/s²)を取り除くことで、動的加速度の大きさを近似的に得ています。ODBAが各軸の絶対値の総和であるのに対し、VeDBAは三平方の定理に基づいた合成加速度です。姿勢による重力ベクトルの変化を一括して扱えるため、静的加速度の分離処理を省略しても比較的精度の高い評価が可能です。

三軸加速度から ODBA および VeDBA を算出し、グラフとして可視化する Python コードを紹介します。このコードでは、任意の時間間隔での累積ODBA・VeDBA値を棒グラフ表示する機能を追加しています。

実行手順(Anaconda Prompt 使用):

  1. 初めて使用する場合は、以下のコマンドを実行して必要なライブラリをインストールしてください(2回目以降は不要です)。

   pip install pandas matplotlib numpy

  • 以下の2つのファイルを同一フォルダ(例:C:\BiP-Analysis)に保存します。
  • data2.csv:加速度データ︓BiP に公開されている オオミズナギドリのデータ(Katsufumi Sato, AORI, University of Tokyo)の⼀部を使⽤しています。
  • activity_plotter.py:加速度データを可視化するPythonスクリプト
  • 保存したフォルダに移動し、以下のようにスクリプトを実行します。

   python activity_plotter.py

コードを実行中、以下の情報を順に入力します。未入力の場合は()内の規定値によってグラフが表示され、同フォルダ内に”元ファイル名”_activity_plot.pngとして保存されます。

  • ファイル名(例: data2
  • 集計間隔(規定値:60秒)

ODBAとVeDBAの比較

ODBAとVeDBAの集計値を比較すると、動物が静止している区間ではVeDBAは0に近い値を示しますが、ODBAは常にある程度の値を記録しています。これは、ODBAの簡略式では静的加速度を十分に除去できていないためです。

正確なODBAを得るには、フィルター処理によって静的成分を取り除く必要があり、そのためには一定の計算コストがかかります。逆に、VeDBAのように単純な式で近似できる指標は、ロガー端末内でのリアルタイム処理にも適しており、応用性が高いと言えます。