[[2009a]] *課題2 ライントレースロボットを作る [#qcba8fc1] A11L ダークホース #contents **ロボット [#h779cce3] ***車体 [#p2c45fc8] 車輪は基本的に最初二作ったものに改良を加えたもの。~ 最初に作ったロボットはなかなか小回りが利くため今回の課題にはもってこいだった。~ またセンサーを組み込みやすかったため比較的はやくロボットを完成させられた。~ #ref(./車体.jpg,130%,車体) ***タッチセンサー [#ibfeb330] シングルバンパーを作成し、その先にアームを取り付けることにした。~ アームによって牛乳パックをキャッチし、運ぶことにしたがしかし、運ぼうと思っても牛乳パックが出てしまうことに気がつき改良を加えた。G型にすることにより、左旋回では出ないようになった、なので右旋回はできない。~ 結果、いい感じに牛乳パックをキャッチできるようになった。~ #ref(./アーム.jpg,130%,アーム) ***光センサー [#s27b9c2c] 最初はかなり悩んだが、先端につけると重心が前になってしまうためタッチセンサーアームより後ろにつけることにした。~ センサー間を狭くすることによって、正確なライントレースが可能になった。~ #ref(./光センサー-1.jpg,130%,光センサー) #ref(./20090612174757.jpg,130%,光センサー2) #ref(./20090612174810.jpg,130%,光センサー3) ***完成 [#x5e75ece] 完成したがカブトムシになった。~ なかなかの出来ではないだろうか。~ #ref(./20090612174743.jpg,130%,光センサー3) **コース [#td8c7c25] コース1~ 交差点:3~ 紙の端や交差点が狭い。 **プロブラム [#ka9d6769] ***1:紙パックをキャッチした後、旋回し元の場所に戻し、また旋回してライントレースに戻る。 [#s1680104] #define T 40 //闘値を40に設定 #define Run_time 1500 //Run_timeを150秒に設定 #define a OUT_A //OUT_Aをaと定義 #define c OUT_C //OUT_Cをcと定義 #define go_s(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //直進 #define go_b(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //後退 #define t_l(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C); //左旋回 #define t_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //右旋回 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサーを1にセットする。 SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチセンサーを2にセットする。 SetSensor(SENSOR_3,SENSOR_LIGHT); //光センサーを3にセットする。 ClearTimer(0); while(Timer(0) <= Run_time){ //150秒たったら止まるループ if(SENSOR_1>T){ //光センサが2個とも白紙上にあるとき、直進 if(SENSOR_3>T){ OnFwd(a+c); } else{ if(SENSOR_1>T){ //左だけ白紙上にあるとき、右にターン OnFwd(a); Off(c); } } } else{ if(SENSOR_3>T){ //右だけ白紙上にあるとき、左にターン OnFwd(c); Off(a); } else{ //両方線上にあるとき 1.0秒止まりし、1.0秒前進する。 Off(a+c); Wait(100); OnFwd(a+c); Wait(100); } } if(SENSOR_2 == 1); //タッチセンサーのが押されるか判断 go_s(50); //押されたら、0,5秒進み t_l(90); //左に180度旋回 go_b(50); //0,5下がり、牛乳パックをおく t_l(90); //左に180度旋回 } *感想 [#m9e9b613] 今回の課題は例年に比べ難しかったと思う。 高校のころにマイコンカーをやっていてライントレースはやっていたが、まったく違う内容だった。 **コメント [#w23da78b] #comment