*&size(35){課題2 ライントレース}; [#t5e11335] #contents **目標 [#s370f461] -タッチセンサーと光センサーの機能を持ったロボを作る。 -自分たちの書いた線に沿って走らせる。 -もう一つのチームが作ったロボと一緒に走らせ2周させる。 *&size(25){ロボットの製作過程}; [#q8cb4beb] 僕たちは次の流れに沿って作業を始めました。 (1)ロボットの基礎となる土台作り~ (2)線に沿って走らせるための光センサー作り~ (3)他のロボとぶつかってもコースを外れないためのタッチセンサー作り~ **&size(25){1. 四輪ロボ}; [#n6c88ff2] ***&size(20){ロボットの基礎となる土台作り}; [#q4b11040] -はじめはどのような形がこの課題に向いているのかわからなかったので最初の形のままの四輪のロボで作り始めた。 #br #ref(./081127_1908~01.JPG,デスクトップ) ***&size(20){線に沿って走らせるための光センサー作り}; [#mc9b8507] 最初に悩んだのは光センサーをどこにつけるか。~ 本体の近くにつけるより前のほうが少しの方向転換で曲がれそうだったので、それを意識しながら作ったのがこちら~ &ref(./横、光、マーク.jpg,デスクトップ); &ref(./081201_1832~01.JPG,デスクトップ); ***&size(20){他のロボとぶつかってもコースを外れないためのタッチセンサー作り}; [#ad40a8f1] タッチセンサーは前方の障害物に反応しなければならないので光センサーの前につけられるように出来るだけ前の方になるような形にしました。 #ref(./081201_1829~01.JPG,デスクトップ) *&size(25){土台と二つのパーツをあわせ完成}; [#xcd2570a] #ref(./081201_1834~01.JPG,デスクトップ) #br ところが••• #br 四輪のため曲がる時の摩擦が強くぎこちなくなってしまい小回りが出来なかったので残念ながらロボの形を変えることに。 #br **&size(25){2. 四輪から三輪ロボへ};[#n87bef0d] #br スムーズに曲がるためには摩擦が少ないロボにしなければならないので土台である四輪を抵抗の少ない三輪に変更。 #br 三輪用のタイヤ 三輪ロボ~ &ref(./081201_1836~01.JPG,デスクトップ); &ref(./081201_1837~01.JPG,デスクトップ); *&size(25){ついに完成}; [#q8cb4beb] そして完成したロボの全体像がこちら #ref(./081201_1959~01.JPG,デスクトップ) 三輪にしたのでコーナもスムーズに曲がれるようになり無駄な動きが少なくなった。 *&size(25){あひるっぽいコース}; [#o9826548] #ref(./081201_1811~01.JPG,デスクトップ) *&size(25){プログラム}; [#b9297b3d] #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); } *&size(25){苦労した点}; [#h4de4980] -ロボを作る段階で何回も試行錯誤を繰り返して三輪の形にするまではとても大変でした。 - *&size(25){コメント}; [#sbb0d45e] 何かコメントがありましたらお願いします。 かくべきことはかけています 図や写真を使ってみた方がわかりやすいと思います。 FI かくべきことはかけています。特に、ロボットの説明は良いです。~ 後は、プログラムやライントレースの原理を図や写真を用いて説明するともっと良くなると思います。 FI