先日、子供ととあるイベントに行ったときに、全身を使った動きでPC上のゲームをプレイする、という展示があった。ゲーム自体はとても簡単なもので、すぐに飽きるような感じだったのに、子供たちは夢中で何度もプレイしていた。
全身を使うのはやはり面白いのかと、入力手段として俄然興味がわいてきた。そこで、体の大きな動きを検出するデバイスを試作してみたくなった。
検出手段について
その展示で使われていた検出手段は、おそらく深度センサであろうと思う。深度センサはかなり手軽に使えるようになったし、面白そうではあるのだが、もっと手軽に作ってみたい。
大きい動きを手軽に検出できそうなセンサとしては、赤外線を使った距離センサがある。これは以前、少し試してみたこともある。
今回は、秋月電子で購入できる測距モジュール「GP2Y0A21YK」を使い、デバイスを試作することとした。検出する対象は、わかりやすいところで「反復横跳び」の動きということで考えてみた。
テストシステムの構成
システム全体の構成は、最近よく使っているものがベースである。センサの出力データをBLEでPCに送り、Javascriptを使ったブラウザアプリで処理する。
BLEの通信部分についても、PC上のアプリについても、ソフトが簡単に組みやすく、素早く評価することができる。
GP2Y0A21YKの周辺回路
GP2Y0A21YKは、赤外線LEDとPSDを使って、対象物との距離を検出するセンサである。LEDの点灯に比較的大きな電流を消費するので、電源には少し注意が必要となっている。
当初、電源ノイズを気にして電源にCRのLPFを入れていた。すると、対象物がないときに中途半端な距離の出力値が出力される、という現象が生じた。
これはLEDの点灯時に、LPFの抵抗で電圧降下が大きくなってしまい、検出にずれが生じたことが原因と思われる。図はセンサの電源波形であるが、約1kHzの周期で大きな電圧降下が発生している。これがLEDの点灯のタイミングだと思われる。
結局、センサの近くにコンデンサだけを入れる回路にして、おかしな出力がなくなることが確認できた。
足の接近検出結果
実際に反復横跳びを想定した足の動きを検出してみた。出力波形は、出力値の時間変化を示したものである。高いレベルになるほど近くに対象物があることを示している。
検出方向として、二つの方向を試した。一つめは、センサの前に足が横から入ってくることを検出するもの。この検出の場合、センサは写真のように縦向きに置いた方が良い。
近くに何もない状態から急に近い位置に入ってくるので、変化が大きく検出しやすいかと考えたが、ちょっと出力値が乱れやすいようである。
二つめは、センサの前に足が接近してくることを検出するもの。足がセンサから少し離れた位置にある状態から開始するので、既に一定の出力値となっている状態からの変化を検出することになる。
こちらは変化量が小さくなって検出が難しいかと考えていたが、出力値を見てみると変化がとてもわかりやすく、安定しているようだった。
二つめの場合に、足の位置と出力値の関係を簡単に調べてみたところ、50mmくらいの精度は十分に期待できそうであった。
以上の結果から、今回試作したデバイスで反復横跳びの検出ができそうである。次は実際に出力値を処理して、反復横跳びの検出、測定をしてみたい。