[[2008a/MemberOnly/進行状況A]] #contents *課題2 ライントレースロボット [#y8d066dc] 光センサーを用いて各チームで制作したコースを走らせるロボットをつくる~ 注意点。~ ●交差点をつくること。~ ●もう一台のロボットと接触したときの対処法を組み込む。~ ●3周したら停止するようにする。~ **ロボットの説明 [#zd230e55] #ref(ShowLetter.jpeg) ●普通のドライブベースを使用しました。~ #ref(20080619161847-1.jpg) ●光センサー二つとタッチセンサー一つをつけたこの写真のユニットを先端につけるだけのシンプルな構造。~ #ref(ShowLetter-1.jpeg) ●課題には全く関係ないオプションパーツ(イソギンチャクアーム)を上部に装着可能 **コース [#f1708b3c] #ref(ShowLetter-2.jpeg) コースは交差点が3つのシンプルなコース~ 3周で自動停止するために交差点を9回通過したら停止するように設定した~ **プログラムの説明 [#gc822738] #define THRESHOLD 40 //闘値を40に設定~ int stop_line;~ task main () { SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1(左)を光センサーと設定。 SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3(右)を光センサーと設定。 SetSensor(SENSOR_2,SENSOR_TOUCH);//センサー2をタッチセンサ−と設定。 stop_line = 0; while(stop_line < 10) {//黒線を9回またぐまでプログラムを実行させる つまり交差点を9回通過=三周するまで if ((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))//両方のセンサーが黒線上にないとき {OnFwd(OUT_A+OUT_C);}//ひたすら直進する if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))//センサー1(左)が黒線上に来たとき { OnFwd(OUT_C);//その場で左をむく〜 OnRev(OUT_A); } if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))//センサー3(右)が黒線上に来たとき { OnRev(OUT_C);//その場で右をむく OnFwd(OUT_A); } if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))//両方が黒線に来たとき(交差点) { Off(OUT_A+OUT_C);OnFwd(OUT_B);Wait(300);//停止してオプションパーツを動かす。 OnFwd(OUT_A+OUT_C);Off(OUT_B);Wait(150);//オプションを停止させ発信する stop_line = stop_line + 1; } if(SENSOR_2==1)//タッチセンサーが反応したとき { OnRev(OUT_A+OUT_C);Wait(60);//バックする Off(OUT_A+OUT_C);OnRev(OUT_B);Wait(500);//停止してオプションを動かす OnFwd(OUT_A+OUT_C);Off(OUT_B);Wait(60);//オプションを停止させ発信する } } Off(OUT_A+OUT_B+OUT_C);//終了 } **工夫点 [#k9f47301] コースの停止線の幅を広くしたり曲がり具合をゆるやかにしてロボットが動きやすく設計した~ 光センサーをなるべく地面に近づけるようにした~ タッチセンサーの感度が悪かったので何度も部品をかえたり設計を変えたりして感度が一番いい組み合わせを使用した~ 停止したときが寂しいので、オプションパーツの動きが派手に見えるようにした~ タイマーで自動停止を設定すると、接触したときなどのタイムロスなどで3周で止まれないため、交差点の通過回数3回×3周で自動停止するようにプログラムした~ **感想 [#q72ae85c] オプションパーツを考えるのが一番楽しかった。~ 他のひとのロボットを見てみると形が様々で人それぞれだった。こんなに奥深いものだとは思わなかった。~ 作ってる最中は大変だったけど、発表のときに成功して本当によかった。~ **コメントよろしくお願いします [#lf965199] #comment