梶研 [エレベーターと歩きの判別]
2023年05月23日
エレベーターと歩きの判別
出席率
- 3年セミナー:??%
スケジュール
短期的な予定
- [x] 速度を変えてUnityでアニメーション
- [x] データをとる
- [x] アニメーションをつける
- [x] エレベーターと歩きを判別する
- [x] データをとる
- [x] グラフ化
- [x] フーリエ変換
- [ ] 判別する
長期的な予定
- 6月17日 技育キャンプハッカソン
進捗報告
速度を変えてアニメーション
前回
<iframe width="560" height="315" src="https://www.youtube.com/embed/TBRMeLTtI4c" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
(実際の4倍速になっている)
速度差を再現したけど分からづらかった
データをとる
場所
1号館 5階-7階
取り方
- 腰にポーチをつける
- Pixel5 (Android)
- Pyphox
- 気圧センサー
- 加速度センサー
- 角速度センサー
5-6階: 歩く(1段ずつ)
6-7階: 走る(2段ずつ)
速度差をつけた動作のアニメーション
<iframe width="560" height="315" src="https://www.youtube.com/embed/F5FjcU7aoEg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
速度に応じて歩幅も変わっている
=> 加速度を元に歩幅を計算する
二乗平均誤差(RMSE)を出す で使用した式
step = 0.1 * norm - 0.5
加速度を元に歩幅を変えたアニメーション
<iframe width="560" height="315" src="https://www.youtube.com/embed/Y3X-Se6wf5Q" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
いい感じ
進行方向を計算から求める
進行方向の求め方
UnityEngine.Vector3 current = positions[currentIndex]; // 現在の座標
UnityEngine.Vector3 next = positions[currentIndex + 1]; // 次の座標
UnityEngine.Vector3 vector = next - current;
// 進行方向
float angleY = MathF.Atan2(vector.x, vector.z) * 180 / Mathf.PI; 進行方向を表示したアニメーション
<iframe width="560" height="315" src="https://www.youtube.com/embed/0tppOrTNaBs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
(移動ツールの矢印を表示している)
いずれ オブジェクト自体を変形させて進行方向をわかりやすくしたい
エレベーターと歩きを判別する
データをとる
場所
1号館 5階-7階
取り方
- 腰にポーチをつける
- Pixel5 (Android)
- Pyphox
- 気圧センサー
- (加速度センサー)
- (角速度センサー)
気圧センサーの値
移動平均フィルターをかけたもの
前後40サンプル(0.1s)で移動平均フィルターをかけた
エレベーターと徒歩の差 を出す方法
フーリエ変換する
フーリエ変換とは
異なる波数の波がどれくらい含んでいるかがわかる
=> 徒歩の場合は歩きの振動の周波数が現れる?
フーリエ変換したグラフ
0Hz で盛り上がっているが他はほぼ 0
原因
- フーリエ変換のやり方の問題
- => 間違ってはなさそう
- データの問題
- => 別のデータで試してみる
さまざまな音をフーリエ変換したグラフ
(ハッカソンに向けて)
=> プログラムは合ってた
0Hz が大きすぎて相対的に小さくなっている?
拡大したグラフ
範囲: 0 ~ 800000 => 0 ~ 10
平滑化したもの
(気圧グラフを平滑化 -> フーリエ変換 -> 拡大)
前後40サンプル(0.1s)で移動平均フィルターをかけた
特徴的だが、データが1つずつでは確定できない
=> より多くのデータで比較する
余談
プロフィールサイト作り直した
<iframe width="100%" height="500px" src="https://satooru.me"></iframe>
Hugoのテンプレートを作った
ハッカソン
テーマ
紙でスライドを操作したい
内容
紙を破る音、くしゃくしゃにする音などでプレゼンのスライドを操作したい
使用技術
- Tauri
- Rust / JavaScript
- React.js
- JavaScript
- HTML / CSS
破っているかの判別
周波数から紙かどうか取れないか
=> (僕らには) 厳しい
モデルの作成は Teachable Machine を使う
<video controls width="480" alt="画面収録 2023-05-23 8.18.19.mov (2.3 MB)" src="https://esa-storage-tokyo.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/13979/2023/05/23/148142/8692f7fe-bf07-4a87-abb6-770aa881d9f2.mov"></video>
紙を破くと 1.00 に近づく