先日、Yが参加したレスキュー講座のなかで、不思議なことがありました。
そのときには、ロボットに1個の光センサーを付けて、ライントレースをする課題でした。
(1)光センサーが黒を検知するまで右カーブで進む
(2)光センサーが黒になったら今度は白を検知するまで、左カーブで進む
(3)この2つをループで繰り返す
というようなプログラムでした。(右カーブと左カーブを入れ替えると、黒線の逆側をたどる)
これで、みんな黒線をライントレースさせていました。
今度は、黒線上に銀のテープを貼って、銀の被災者の発見をすることになりました。
ですので、上記のプログラムの最後に、光センサーが閾値より大きな値になったらループを抜ける、というプログラムを作っていました。
確かに、これだと、白を検知した直後に銀色を検知すればループを終了するのですが・・・(1)で黒を検知するまえに銀テープがあると、見逃してしまいます。
ただ、この「銀の発見」ができるチームと、全然発見できないチームに二分されてしまいました。
単に、2分の1の確率で発見できる場合と、出来ない場合に分かれるように思うのですが・・・。
どうもそうならないで、銀のテープで止まるチームと全く止まらないチームと分かれてしまいました。 ??? (幸いなことに、Yは発見できたチームです。)
結局、講座の中では上記のプログラムをやめて、こんなプログラムに変更していました。
これなら、きちんとライントレースして、銀のテープで止まっていました。
私も、家にかえって、Yと実験してみました。
上のプログラムでライントレースはできるのですが、やっぱり銀のテープで止まりません。
(下のプログラムでは、バッチリ止まります。)
何で止まらないの?
結局分かりません。 NXTの謎です。
最後に言うセリフ 「やっぱ、バグ?」