*目次 [#r61547b2] #contents *課題2の内容 [#v95515a7] -各チームで作成したコースを1周するロボットを製作せよ。 -交差点以外のコース上に350mlの空の空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ --1.空き缶をコース上に戻して再びコースに戻って進む --2.空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む -※ただし、 --速さと正確さを追求すること --コースを1周したら自動的に止まること --交差点では一時停止すること *メンバー紹介 [#h24ebdbc] -T.Y -ぱんだ *コース紹介 [#k101d602] #ref(2010a/A3/課題2右/IMGP0028.JPG,50%,コ−ス) よく見れば何かに見える!? *ロボット紹介 [#b662ce62] **各部位の説明 [#j1ea737f] ---- 正面 #ref(2010a/A3/課題2右/IMGP0021.JPG,50%,光センサー) 緑で囲まれた部分は光センサー。 ---- アーム #ref(2010a/A3/課題2右/IMGP0023.JPG,50%,アーム部位) オレンジの丸で囲まれた部分で缶を支える。 ---- タッチセンサー #ref(2010a/A3/課題2右/IMGP0024.JPG,50%,タッチセンサー部位) ピンクの丸で囲まれた部分はタッチセンサーに缶が当たり損ねないように補助を付けて、前方のどこに当たってもよくした。 **工夫した点 [#dfa5d585] -アームとタッチセンサーでうまく缶を固定できるようにした。 -アームの位置は高すぎず、低すぎない位置につけた。 -バックしても缶を移動できるようにアームの先に輪をつけた。 -タッチセンサーに当たり損ねるのを防ぐためにバンパーを付けて前方のどこに当たってもよくした。 -各パーツを持ち運びやすいように孤立させた。 -前輪を大きくすることで車体を安定させた。 -複雑そうに見えるが意外とシンプルにロボットを作った。 -光センサーとタイヤの位置を近くして線に沿って移動させやすくした。 **苦労した点 [#q1023dd0] -どうやって缶を移動させるか。 -アームと輪の部分をどうやって連結させるか。 -タッチセンサーにどうやって缶をうまくあてるか。 -光センサーをどこにつけるか。 -重心が前すぎないようにするためにはどうするか。 *プログラム紹介 [#m0575cc2] **T.Yのプログラム [#h9371237] #define arm_up OnFwd(OUT_C);Wait(10); #define arm_down OnRev(OUT_C);Wait(10); #define THRE 40 //閾値 #define THRE3 44 #define go OnFwd(OUT_A+OUT_B); //前進 #define back OnRev(OUT_A+OUT_B); //後退 #define right OnFwd(OUT_A);OnRev(OUT_B);Wait(100);Off(OUT_A+OUT_C); //右に向く #define lefr OnFwd(OUT_B);OnRev(OUT_A);Wait(100);Off(OUT_A+OUT_C); #define kousaten1(t) Off(OUT_A+OUT_B);Wait(300);OnFwd(OUT_B);OnRev(OUT_A);Wait(20);OnFwd(OUT_A+OUT_B);Wait(t);flag++; //交差点の対処 #define kousaten2(t) Off(OUT_A+OUT_B);Wait(300);OnFwd(OUT_A);OnRev(OUT_B);Wait(20);OnFwd(OUT_A+OUT_B);Wait(t);flag++; //交差点の対処 #define turn OnFwd(OUT_A);OnRev(OUT_B);Wait(200);Off(OUT_A+OUT_B); //180度回転 task main() { SetSensor(SENSOR_1,SENSOR_TOUCH);//1はタッチセンサ SetSensor(SENSOR_2,SENSOR_LIGHT);//2は光センサ SetSensor(SENSOR_3,SENSOR_LIGHT);//3は光センサ int flag=0; while (flag<6) { if (SENSOR_2 > THRE) {if (SENSOR_3 > THRE3){go;} //光センサ2、3が白にある時 else{OnFwd(OUT_B);OnRev(OUT_A);} //光センサ3が黒線上にある時 } else {if (SENSOR_3 > THRE3){OnFwd(OUT_A); //光センサ2が黒線上にある時 OnRev(OUT_B);} else{if(flag<1){kousaten1(30);} //最初の交差点 else {if(flag==1){kousaten2(40);} else if(flag==2){kousaten1(40);} else if(flag==3){kousaten2(30);} else if(flag==4){kousaten1(30);} else if(flag==5){kousaten2(30);} } } } Off(OUT_A+OUT_B); } ***工夫した点 [#zf3d1a2d] ***反省点 [#p3bf4229] ***感想 [#lfcc46db] **ぱんだのプログラム [#pde3a14a] ***工夫した点 [#c070d4d2] ***反省点 [#eb570f1c] ***感想 [#ge5d43c6] *全体の反省 [#f26f747f] *コメント欄 [#ja96bab1] -コメントお願いします。 #comment