すくすくスクワット VR(スクワットのカウント準備)
あまり真面目に考えずに、気楽に開発していきます。動けばいいのだ。
スクワットデータの記録
まずはスクワット時の VR ヘッドセットの位置を記録してみます。
いつもの手順で XR を使う設定をして、保存するプログラムを作りました。
↓作ったプログラムからの抜粋
よいです。
そして、このプログラムを実行してスクワットしました。
↓スクワット時のヘッドセットの高さ座標のグラフ
それっぽいグラフでした。よいです。
スクワットしたかの判定について
こういう周期的なデータに適した手法があるのかもしれませんが、詳しくないので簡単な仕組みにします。
屈み時の頭の位置から、立ち時の頭の位置に遷移したときに、カウントを+1する。
です。
そして、この立ってるときの頭の基準値ですが基本的には最大値を使います。ただ、単に最大値を使うとジャンプしたりしたときの値が使われてしまうので、どうにかします。
具体的には分散を計算して、その値が大きくないかでジャンプしてないか判断します。
↓普通に立った後に3回ジャンプしたときの高さ座標のグラフ
↓分散を計算するコード
↓
ジャンプしたときのデータに計算した分散を重ねて表示したグラフ
ジャンプしたときの分散が大きくなっているのがわかりますね、大変よいです。
まとめと今後の予定
ここまで実装すれば実際にスクワットをカウントする実装もできるはずなのですが、それはまた次回に実装します。とりあえず、ここまで動作して大変よいです。
次回はスクワットをカウントするあたりと、VRM モデルを動かすあたりに着手しようと思います。がんばります。