[[2012a/MemberOnly/進行状況A]] #contents *課題2 ライントレースをするロボット [#jcd8ae35] **ロボット本体 [#o3420e6e] ライントレースが主な内容なので、特に工夫されている所はありません。 ~あえていうなら、ライントレースをなるべく正確に行うために、車軸近くにセンサーを取り付けました。 ~あと、ロボットは左右対称になっています。 &ref(robo1.JPG); &ref(robo2.JPG); **コース [#j7704333] コースは、比較的シンプルな造りになっています。 -ヘアピンカーブ 1 -十字路 2 -直角カーブ 1 &ref(course.JPG); ロボットは左回りにライントレースをするようになっています。 **ライントレース方法 [#pa3204de] &ref(figure1.jpg); &ref(figure2.jpg); **脱出方法 [#a3807291] &ref(figure3.jpg); **プログラム [#z8e67d41] #define THRESHOLD 48 task main() { long fTime=0,time=0; bool escape=false; SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensorLight(IN_1);//光センサーを設定 fTime = CurrentTick(); //時間取得 while(true) { time = CurrentTick() - fTime; if(time >= 65000) //timeが65秒を超えたとき { if(SENSOR_1 >= THRESHOLD) //白 { while(SENSOR_1 >= THRESHOLD) //黒い線を見つけるまで、繰り返し { OnFwd(OUT_C,50); Off(OUT_A); } } while(SENSOR_1 < THRESHOLD) //黒い線の外側に移動 { OnFwd(OUT_AC,70); Off(OUT_AC); } escape = true; } if(escape == false) //脱出しない場合 { if(SENSOR_1 < THRESHOLD) //黒 { OnFwd(OUT_A,45); Off(OUT_C); } else if(SENSOR_1 >= THRESHOLD) //白 { OnFwd(OUT_C,45); Off(OUT_A); } } else if(escape == true) //脱出の時 { if(SENSOR_1 < THRESHOLD) //黒 { OnFwd(OUT_C,45); Off(OUT_A); } else if(SENSOR_1 >= THRESHOLD) //白 { OnFwd(OUT_A,45); Off(OUT_C); } } } Off(OUT_AC); } **感想 [#ec925aa0] ライントレースは簡単だと思っていたが、難しく、大変だった。 ~脱出方法を考えるのが意外と難しかった。 ~時間によって脱出する方法は、失敗する時もあったので、もっとよい脱出方法を考えられればよかった。 ~もっと早く、正確にトレースできるようにしたいと思った。