SatooRu's Profile

全ての記事梶研の進捗日常の記録制作物一覧

梶研 [センシングはじめました]

2023年4月18日

thumbnail

センシングはじめました

出席率

  • 3年セミナー:??%

スケジュール

短期的な予定

  • Androidアプリ開発 お試し
    • Android Stdio の設定
    • 加速度センサーを見るアプリをつくる
    • csv出力 & PCに移す
  • 加速度から距離を出してみる
    • 加速度センサーの値を取る(直線運動)
    • Pythonでグラフ化する
    • 加速度グラフを距離グラフ
  • 歩数推定
    • 加速度センサーの値を取る(歩行)
    • グラフ化 & フィルターをかける
    • 歩数を取得する

長期的な予定

未定 (歩行軌跡の可視化をしてみたい)

Androidアプリ開発 お試し

参考サイト

リポジトリ

AndroidSensor

変更点

  • バージョンに合わせたコードに修正
  • TextView を行ごとに分割した

加速度から距離を出してみる

加速度センサーの値を取る

スマホをx軸正の方向に30cm動かした

環境

  • 端末
    • iPhone 12
  • 使用アプリ
    • phyphox

Pythonでグラフ化する

  • バージョン
    • 3.10.10
  • 使用ライブラリ
    • pandas
    • matplotlib
    • numpy

加速度グラフを距離グラフにする

  • 加速度[m/s^2] を微分※すると 速度[m/s] になる
  • 速度[m/s] を微分※すると 距離[m] になる

※間違い

x軸の加速度, 速度,距離グラフ (誤り1)

miss.png (182.6 kB)

速度, 距離グラフ の形がおかしい
微分積分 を逆に認識していた
(気付くのに3時間掛かった...)

x軸の加速度, 速度,距離グラフ (誤り2)

miss2.png (166.4 kB)

形はそれっぽくなった
値が明らかに大きすぎる
→サンプリング周波数を考慮していなかった

面積分のイメージ

a.png (20.8 kB)

面積分は1本1本の面積を足していくもの
面積ではなく長さ(図で言う縦)を足していた
→ 全ての値に x0.01(100Hz) する

最終的なグラフ

move-60cm.png (165.6 kB)

歩数推定

加速度センサーの値を取る(歩行)

まっすぐ5歩
(スマホのz軸正が上向き、y軸正が左向きになるように腰の位置で手に持つ)

グラフ化 & フィルター

平滑化フィルター

平滑化1
walk2-avg5.png (334.9 kB)

(N0 + N-1 + N-2 + N-3 + N-4) / 5

(N0が現在の値)

サンプリング周波数100Hzなので、5つの平均ではあまり意味がない?

平滑化2
walk2-avg10.png (319.5 kB)

(N0 + N-1 + N-2 + ... + N-9) / 10

だいぶ滑らかになったが、1歩に対し頂点が複数ある

平滑化3
walk2-avg20.png (317.2 kB)

(N0 + N-1 + N-2 + ... + N-19) / 20

1歩に対し1頂点になった。
(平滑化フィルターだけでいいのだろうか)

過去との平均の為、波が大きく後ろにずれた。

より良いやり方があるらしい
歩数推定(esa)

rolling_mean = data.rolling(window=10).mean()

加速度のノルムのグラフ

smooth-x3.png (77.6 kB)

norm: そのままのデータ
自作関数: さっきまでのやり方
pandas.rolling(): 良さそうなやり方

pandas.rolling() を上手く使ったほうが良い

歩数を取得する

ピーク検出

step.png (64.9 kB)

赤丸が 6つ
→ 6歩?

正しくは5歩

原因

5歩ののちに立ち止まる時の足を揃える動作も含まれてしまった
データを取り直す

進路関係

なし