Yが、(とりあえず?)頑張っているのに感化されたのか、これまで休眠していたMのロボカップ魂(そんなのあるのか?)が、やっと目覚めたようです。 (長い眠りだったなぁ)
で、NXTで作ったプログラムを思い出しながら、修正しています。
初心に戻って、障害物回避をやってみると・・・
障害物を回避するのはOKなのですが、先の黒線を見つけたあとに、黒線に復帰ができません。
プログラムを何度見てもおかしいところは見つからないようです。 私が呼ばれて、見てみましたが・・・ついにGiveUpです。
(1)黒線を見つけたら一旦停止
(2)ちょっと前進して(黒線を越える)
(3)ロボットの回転して・・・
(4)黒線を見つけたら回転を止める
という、ごく普通のプログラムなのですが、(4)で黒線を見つけてないのに、回転が止まります。 う~ん やっぱり、NXTのバグか? (すぐに、バグにしたがるヤツ)
OnFwd(OUT_A,100); ←(3)
OnRev(OUT_C,100);
until(SENSOR_1<Lbw); ←(4)
Off(OUT_AC);
で、結局どうなったかというと・・・
OnFwd(OUT_A,50); ←(3)
OnRev(OUT_C,50);
until(SENSOR_1<Lbw); ←(4)
Off(OUT_AC);
上と何が違うか分かりますか?
そう、ロボットを回転させるモーターのパワーを弱めました。
そうしたら、ちゃんと動きました。
良く分からないのですが・・・電池が弱っていたところに、急に全開(100)でモーターを動かしたので、センサーを含む全体の電圧不足になったのではないかと想像しています。