[[2014a/Member]] 目次 #contents *課題の説明 [#q316f020] 詳しい説明は[[2014a/Mission1]]を見てください。 *メンバー [#n5ce0733] dai mame * ロボット[#db4e1456] ** drive base [#v4772f44] &ref(2014a/Member/dai/Mission1/S__2228285.jpg,30%); &ref(2014a/Member/dai/Mission1/S__2228284.jpg,30%); 超音波センサーでボールを認識してモーターを回しボールを捕球する。 **arm [#z3d76455] &ref(2014a/Member/dai/Mission1/_S__2228287.jpg,30%); モーターを正の方向に回転させるとボールをつかみ、逆回転させることでシュートを打つ。 **light sensor [#uc7ab4ed] &ref(2014a/Member/dai/Mission1/S__2228286.jpg,30%); 光センサーと車輪をできる限り近づける工夫をした。 *プログラム [#j9f1fbc4] **定義 [#kde021a6] #define THRESHOLD 45//しきい値 #define SPEED_H 40//高速 #define SPEED_L 30//低速 #define OnRL(speedR,speedL) OnFwd(OUT_B,speedR); OnFwd(OUT_C,speedL); #define go_forward OnRL(SPEED_H,SPEED_H);//直進 #define turn_left1 OnRL(SPEED_L,-SPEED_L);//左旋回 #define turn_left0 OnRL(SPEED_L,0);//左折 #define turn_right0 OnRL(0,SPEED_L);//右折 #define turn_right1 OnRL(-SPEED_L,SPEED_L);//右旋回 #define STEP 1 //1回の判断で動作させる時間 #define nMAX 140 //通常のカーブとして許容できる繰り返しの最大値 #define short_break Off(OUT_BC); Wait(1000);//小休止 #define CROSS_TIME 250//交差点通過にかかる時間 #define cross_line OnRL(SPEED_L,SPEED_L); Wait(CROSS_TIME); short_break;//交差点通過 #define Catch Off(OUT_BC);OnFwd(OUT_A,60);Wait(500);Off(OUT_A);//ボールキャッチ #define Shot Off(OUT_BC);OnRev(OUT_A,100);Wait(500);Off(OUT_A);//シュート **ライントレース [#g70a799c] task main() { SetSensorLowspeed(S4); //超音波センサーをセット// SetSensorLight(S1); //光センサをセット// int nOnline=0 ;//続けて黒になった回数(カウンター)// long t0=CurrentTick();//現在の時刻を得る// OnFwd(OUT_BC);Wait(500) //始めに黒線まで移動// while (true) { while (nOnline < nMAX) { if (SensorUS(S4)<=8) {Catch;} //超音波センサーの8センチ以内にボールが入ると捕球// if(CurrentTick()-t0>=35000)//35秒たったことを認識// {Shot;} //シュートを打つ// if (SENSOR_1 < THRESHOLD-20}{ turn_left1; //最も暗いとき左旋回// nOnline++; //カウンターを増やす// } else if (SENSOR_1 < THRESHOLD-13) { turn_left0 ; //2番めに暗いとき左折// } else if(SENSOR_1 < THRESHOLD-3) { go_forward; //黒と白の中間で直進// } else if (SENSOR_1 < THRESHOLD+4) { turn_right0; //2番めに明るいとき右折// } else { turn_right1; //最も明るいとき右旋回// } nOnline=0; //カウンターをリセット// } Wait(STEP); } short_break; //小休止// turn_right1; Wait(nMAX*STEP); //進行方向修正// cross_line; //交差点通過// nOnline=0; //カウンターをリセット// } } *反省・感想 [#g085b8ca] ・アームはうまく作れたと思うが、プログラミングができず苦労した。 ・ライトセンサーをより車輪に近づけるよう工夫した。 ・前方が重すぎた。ロボットの組み立ては、より小さくすることが難しいと実感した。 ・電池残量が少ないと性能が落ちるので注意が必要だった。 ・細かい数値などの調節がむずかしかった。 ・成功率が低く、どうすれば確実にうまくいくか考えるべきだった。 ・交差点認識がうまくいかなかった。1つ1つの動作を部品化してどこがいけないのか把握するべきだった。