前回(その2 http://shoun-hs.seesaa.net/article/421535357.html)は新型ホワイトラインセンサー導入の報告をしましたが、「アウト・オブ・バウンズ対策」としては、まだまだということになりました。
そこで今回は、「白線をセンサーは感知しているのに、なぜストップできないのか?」ということに着目してみました。
仮説

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

上図のようなテストプログラムを作り、Wait時間を変化させてどこまでなら反応できるのかという実験を行いました。
内容)フィールドの短辺側を使い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)試行錯誤は続きます。