[[2005/C2/どみ]] *壁に沿って動くロボット [#z2d6ca4f] task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); //右センサ SetSensor(SENSOR_3,SENSOR_TOUCH); //左センサ while (true) { if (SENSOR_3 == 1) { if (SENSOR_1 == 1) { //壁にぶつかったとき OnRev(OUT_A+OUT_C); Wait(5); OnFwd(OUT_C); Wait(185); Off(OUT_C); OnFwd(OUT_A); Wait(100); Off(OUT_A); OnFwd(OUT_C); Wait(60); Off(OUT_C); } else { //壁に触れているとき OnFwd(OUT_A+OUT_C); } } else { //壁から離れたとき Off(OUT_C); OnFwd(OUT_A); } } } *ロボットについて [#o7d98ebd] 解説書にあったダブルバンパーの右側を延長したものを使用。壁に沿って走るときは、延長した右バンパーで壁を検知し、壁への衝突は左バンパーで検知する。延長したバンパーは、長すぎると回転時に引っかかるため、調整に苦労した。 *プログラムについて [#kaf697ca] 衝突後、机の下で90度左回転し、右→左と曲げることで壁に寄せ、次の直進にちゃんと移行できるようにした。ただ、無駄に重くなった気もする。 *コメントをお願いします [#u33a6ca4] -とりあえず動くロボットができたら、次は、もう一度個々の部品が本当に必要だったかどうか少し吟味してみましょう。そしてこれ以上パーツを減らすことができない!ということになれば、かなり洗練されたロボットになっているはずです。実はプログラムも同じですね。 -- [[松本(教員)]] &new{2005-12-09 (金) 22:54:36}; #comment