僕たちは次の流れに沿って作業を始めました。
(1)ロボットの基礎となる土台作り
(2)線に沿って走らせるための光センサー作り
(3)他のロボとぶつかってもコースを外れないためのタッチセンサー作り
最初に悩んだのは光センサーをどこにつけるか。
本体の近くにつけるより前のほうが少しの方向転換で曲がれそうだったので、それを意識しながら作ったのがこちら
タッチセンサーは前方の障害物に反応しなければならないので光センサーの前につけられるように出来るだけ前の方になるような形にしました。
ところが•••
四輪のため曲がる時の摩擦が強くぎこちなくなってしまい小回りが出来なかったので残念ながらロボの形を変えることに。
スムーズに曲がるためには摩擦が少ないロボにしなければならないので土台である四輪を抵抗の少ない三輪に変更。
そして完成したロボの全体像がこちら
三輪にしたのでコーナもスムーズに曲がれるようになり無駄な動きが少なくなった。
#define cc 41 #define runtime 1000 int count_stop; task main () {count_stop=0; SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); until(SENSOR_2==1); OnFwd(OUT_A+OUT_C); until(SENSOR_2==0); OnFwd(OUT_A+OUT_C); ClearTimer(0); #define cc 41 //cc(Color Change)を定義 int count_stop; //count_stopを変数に指定 task main () { count_stop=0; SetSensor(SENSOR_1, SENSOR_LIGHT); //センサ−1を光センサーに SetSensor(SENSOR_3, SENSOR_LIGHT); //センサ−3を光センサーに SetSensor(SENSOR_2, SENSOR_TOUCH); //センサ−2をタッチセンサーに指定 until(SENSOR_2==1); //Runを押しても動かず、 OnFwd(OUT_A+OUT_C); //タッチセンサーを押すと until(SENSOR_2==0); //動きだすような OnFwd(OUT_A+OUT_C); //プログラム while (count_stop<=4) while (count_stop<=4) //count_stopが4以下のとき繰り返す { if(SENSOR_2==0){ if (SENSOR_1>cc) { if (SENSOR_3>cc){ OnFwd(OUT_A+OUT_C); } else { OnFwd(OUT_A);Off(OUT_C); if(SENSOR_2==0){ //センサ−2が触れてないとき if (SENSOR_1>cc) //センサ−1が線上にあるとき { if (SENSOR_3>cc){ //センサ−3が線上にあるとき OnFwd(OUT_A+OUT_C); //直進 } else { OnFwd(OUT_A);Off(OUT_C); //センサ−3が線上にないとき右に曲がる } } } else { else { if (SENSOR_3>cc){ OnFwd(OUT_C);Off(OUT_A); } else { Off(OUT_A+OUT_C); Wait(150); OnFwd(OUT_A+OUT_C);Wait(115);OnFwd(OUT_A);Off(OUT_C);Wait(11); count_stop++; } } } else { OnRev(OUT_A+OUT_C);Wait(50); Off(OUT_A+OUT_C);Wait(150); } }Off(OUT_A+OUT_C); }Off(OUT_A+OUT_C); }
何かコメントがありましたらお願いします。
かくべきことはかけています。特に、ロボットの説明は良いです。
後は、プログラムやライントレースの原理を図や写真を用いて説明するともっと良くなると思います。 FI