佐藤さとる

佐藤さとる

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

2023年04月18日

センシングはじめました

出席率

スケジュール

短期的な予定

長期的な予定

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

Androidアプリ開発 お試し

参考サイト

リポジトリ

AndroidSensor

変更点

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

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

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

環境

Pythonでグラフ化する

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

※間違い

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

速度, 距離グラフ の形がおかしい

→ 微分 と 積分 を逆に認識していた

(気付くのに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歩ののちに立ち止まる時の足を揃える動作も含まれてしまった

データを取り直す

進路関係

なし