2015年07月12日

ろぼっとサッカー部活動日誌 その3(team.祥雲)

こんにちは!「team.祥雲 理科部&自律制御ゼミ合同チーム」です。
 前回(その2 http://shoun-hs.seesaa.net/article/421535357.html)は新型ホワイトラインセンサー導入の報告をしましたが、「アウト・オブ・バウンズ対策」としては、まだまだということになりました。
 そこで今回は、「白線をセンサーは感知しているのに、なぜストップできないのか?」ということに着目してみました。

仮説ひらめき「プログラムのループが長すぎてセンサー信号を見に行く命令の時にはすでに白線を越えているのでは?」

私たちが使っているCPU用のプログラム言語「C-STYLE」では、割り込み処理等はなく命令を順番に行っているため、プログラムのループが短いものであれは常にセンサー信号を確認できるのですが、ループが長いと他の命令を行っている間に白線を越えているのではないかと考えました。

program01.jpg
上図のようなテストプログラムを作り、Wait時間を変化させてどこまでなら反応できるのかという実験を行いました。

DSC_0427.JPGDSC_0428.JPG
内容)フィールドの短辺側を使い1m走らせ白線を検知すればストップする。
条件)平均速度 161.3[cm/s](1m区間 モーター出力55%)
結果Wait時間 限界値23[ms]

実験結果の23[ms]の間にロボットがどれくらい移動するかを考えると、161.3[cm/s]×23[ms]=約3.7[cm] 確かに幅2.0[cm]の白線ではこれぐらいが限界なのかもしれませんね。
(3.7[cm]間隔で2.0[cm]の白線検知はもともと無理では? 〜これはセンサーの読取範囲が影響していると思います。)

「プログラムは短く書こう!」とはいえ、モーター制御の時間設定などは通常0.1[s]が最低限度の時間設定なので一つでも入ればそれだけでロボットは最大16[cm]進んだことになってしまします。
何か他に手はないのかな?                 
次回(その4 http://shoun-hs.seesaa.net/article/422425284.html)試行錯誤は続きます。
posted by 三田祥雲館 at 21:51 | 兵庫 ☁ | Comment(0) | スーパーサイエンスハイスクール