ここでいう腕回し運動というのは、かつて流行ったビリーズブートキャンプなどで見られた、腕を伸ばした状態で小さく円を描く運動のことである。動きが小さい割には負荷がかかるので、手軽な運動として取り入れやすい。
今回はこの腕回し運動をデバイスで検出し、Webアプリからフィードバックを与えることで、楽しく運動が続けられるようにしようと考えた。
ジェスチャセンサのAPDS-9960を組み込んだデバイスを試作し、実際に腕回し運動を検出してフィードバックを与えるところまで実現することができた。
システム構成
検出デバイスは、APDS-9960とESP32を使用して試作した。検出したデータをBLEでPCに送信している。
PC上ではWebアプリでデータを受信し、検出処理を実行した結果を表示させたり、画像や効果音によるフィードバックを生成している。
運動の検出方法について
APDS-9960では、センサ上の上下左右4か所について、物体が近接しているかどうかを数値で出力することができる。これらのデータの大小関係や変化を見ることで、近接した物体がどの方向に動いているかなどを判定することができる。
図はデータシートより引用したものである。今回は4つのうち上下の2つから得られるデータのみを使用して、縦方向に動く物体を検出するようにしている。手がこの向きでセンサ上部を通過するように、腕回し運動をする手の下にデバイスを置いて使用する。
アプリの動作について
今回は、近接データをそのままWebアプリに送信し、アプリ上で動きの判定処理をする形とした。
デバイス上を手が通過すると、その方向(センサに対して上向きか下向きか)を判定してカウントする。それによりスプライトの回転を加速させるようにしている。素早く通過を繰り返すことで、回転数が高くなり、より高い効果音が鳴るようになっている。
テスト結果
当初は動きが速くなったときにとりこぼしが発生していたが、アルゴリズムの見直しなどにより、最終的にほとんどとりこぼしなく検出できるようになった。
センサ上部を適切な高さで手が通過しないと、検出ができないためとりこぼしが発生する。これについては、運動が適切にできているかという判定の意味を持つと考えている。