次のコースをトレースし、シュートまで決める。
B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ、そのピンポン玉をC地点においたゴールへシュートする ◦Bスタート → R直進 → P右折 → Q直進 → (ピンポン玉をキャッチ) → Q直進 → R右折 → P直進 → S右折 → Cへシュート
今回の課題に挑む機体。もろい部分はあるが、しっかり点検してから走らせれば問題なし。
機体 車体はできるだけ小さく作った。小回りが利くようにするためだ。三輪のうち1つはキャスターにしてある。摩擦の少ないパーツを引きずるよりもバックがスムーズになった。
黄色い部品で挟みむ。光センサーもアーム部分につけた。モーターもつけたため、重く、しっかり取り付けないと走行中にとれてしまうのが欠点。
#define go_go OnFwd(OUT_AC); //前に進む #define turn_right OnFwd(OUT_C);Off(OUT_A); //右に曲がる #define turn_left OnFwd(OUT_A);Off(OUT_C); //左に曲がる #define kyu_turn_r OnFwd(OUT_C);OnRev(OUT_A); //右旋回 #define kyu_turn_l OnFwd(OUT_A);OnRev(OUT_C); //左旋回 #define right_cross turn_right;Wait(110);//交差点右折 #define straight_cross kyu_turn_r;Wait(10);go_go;Wait(30); //交差点直進 #define BLACK_a 44 //これらは色を判断するために使う光センサーの値 #define BLACK_b 48 #define WHITE_a 52 #define WHITE_b 58 #define MOVE_TIME 18 #define ball_get go_go;Wait(20);Off(OUT_AC);OnFwd(OUT_B);Wait(20);Off(OUT_B); //ボールをとる #define shoot OnRev(OUT_AC); Wait(110);Off(OUT_AC);kyu_turn_l;Wait(80);Off(OUT_AC);Wait(40);kyu_turn_r;Wait(30);OnRev(OUT_B);Wait(20);Off(OUT_ABC); //ボールをゴールへ入れる 回りながら投げる動きに挑戦した。
ライントレースするサブルーチン 黒い線の左側をトレースする 光センサーの値によって5段階の動きをプログラミングした。光センサーの値が低い順に、左旋回、左へ曲がる、直進、右へ曲がる、右旋回と動く。つまり、真黒なところ、真っ白なところでは旋回し、ほとんど黒、ほとんど白いところは曲がる。ちょうど間のところでは直進する。 このようにして黒と白のを行ったり来たりしながら前に進む。黒い線上で旋回する際にかかる時間がMOVE_TIMEより長くなると交差点と認識して止まることになっている。
sub line_trace() { ClearTimer(0); SetSensor(SENSOR_2,SENSOR_LIGHT); while(FastTimer(0)<=MOVE_TIME){ if(SENSOR_2<BLACK_a){ kyu_turn_l; } else if(SENSOR_2<BLACK_b){ turn_left; ClearTimer(0); } else if(SENSOR_2<WHITE_a){ go_go; ClearTimer(0); } else if(SENSOR_2<WHITE_b){ turn_right; ClearTimer(0); } else { kyu_turn_r; ClearTimer(0); } } Off(OUT_AC); Wait(100); }
ミッションを遂行するプログラム 交差点を判断した後、コース通り進むように右折や直進を行う。
task main() { line_trace(); right_cross; line_trace(); straight_cross; ball_get; line_trace(); straight_cross; line_trace(); right_cross; line_trace(); straight_cross; line_trace(); right_cross; line_trace(); shoot; }
折り目に引っかかってしまうので、コースの紙は折りたたまない方がよかった。他の人の紙を借りてプログラムを修正していったので光センサーの値が自分たちの紙と異なっていて、自分たちの紙ではうまくライントレースできなかった。人の紙ではシュートまでうまくできていたので悔しかった。もっとちゃんと考えればよかったと反省している。機体はアーム・光センサーの部分が重くて取れやすかった。モーターを車体上につけるような設計のほうが良かったかもしれない。