memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

メモ:バットスイングを検知するコントローラ

はじめに

学生プロジェクトの1つのチームがバットのスイングを検知して遊ぶリズムゲームを作ろうとしています。こんなイメージだったと思います(下手すぎる。。。)

コントローラ担当がバットを早く振ると検知できないと言っていました。計算したのと聞くと、していないと。。。

うちは情報学科であって情報工学科ではないので物理を学びません(ちょっと言い訳ですね💦)。それでも、何かをセンシングするとなるとある程度の見積もりは必要なのですが。

最初から個別に授業して教えてもいいのですが、それでは失敗しない(うまくいかなかった経験ができない)ので、基本的に相談されたときと必要なときだけサポートするようにしています。

以下、電車に乗りながら見積もりしてみました。あとで必要があれば伝えるときに楽かなと思ったので。

計算メモ

まず、バットの太さです。おもちゃのバットを使うはずですが、とりあえず調べるとミズノのページに最も太い部分で6.6cm以下とありました。

次は、バットのスイング速度。測ってみればいいでしょうけど面倒なのでググると高校生で120km/hとありました。一般人は100km/hくらいでしょうか。

つまり、6.6cmの距離を100km/hで移動するのに要する時間を求めればいいということかと思います。点でセンシングできた場合の話ですが。その時間がサンプリング間隔の最大値になるはずですね。あくまで理論値です。

6.6cm / 100km/h = 0.002376 s

つまり、2.4msとなりました。   1点では検知できない場合があるでしょうから、サンプリング時間を1/2にして2点サンプリングを目指すとサンプリング間隔は1.2msになります。

さて、購入済みのセンサーは以下になります。これも学生さんが選びました。

光電スイッチ E18-D80NK 【製品仕様】 入力電圧:5VDC 負荷電流:100mA 感知距離:3〜80 cm 直径:18mm センサの長さ:45mm リード長:45cm 作業環境温度:-25℃〜+ 55℃ 応答時間<2ms 電流DC<25mAの消費

応答時間は2ms以下ということのようです。キツイですね。。。以下ということはそれ未満でも応答してくれる可能性はある(条件によるんでしょうね)と考えますと。やってみないとわからないというところですね。

じゃ、arduinoは?調べるのが面倒なのでこれもググってみるました。

www.saino.me

その方の調べでは、2μS(500kHz)らしいです。もちろん、loop内の処理内容にもよるでしょうけど。。。とりあえずaruduinoの処理が律速することはないように思います。やはりネックはセンサーですね。

とりあえずの結論

1〜2msのdelayでloopを回し処理して、実際にスイングしてどうか確認するという感じでしょうか。もし検知抜けするのであれば、スイング速度をめいいっぱいあげなくするコンテンツ設計にするか。。。ですかね。

ちなみに、バックスイングのときにスイングとして検知しないように2つセンサーをつけることになっています。さて、どうなりますやら。。。制作時間はあと2週間(2コマ)です。