[[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つの動作を部品化してどこがいけないのか把握するべきだった。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS