[[2016b/Member]]
*目次 [#r714926f]
#contents
*課題 [#sec56fbe]
次のコースをトレースし、シュートまで決める。
#ref(2016b/Member/gazet/Mission2/2016b-mission2_kosu.png,10.5kb,)
B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ、そのピンポン玉をC地点においたゴールへシュートする 
  ◦Bスタート → R直進 → P右折 → Q直進 → (ピンポン玉をキャッチ) → Q直進 → R右折 → P直進 → S右折 → Cへシュート

*機体の説明 [#r602f42d]
**機体全体 [#l6cbf83b]
#ref(2016b/Member/gazet/Mission2/robothi.jpg,11.9kb,)

今回の課題に挑む機体。もろい部分はあるが、しっかり点検してから走らせれば問題なし。
**車部分 [#r9e50c11]
機体
車体はできるだけ小さく作った。小回りが利くようにするためだ。三輪のうち1つはキャスターにしてある。摩擦の少ないパーツを引きずるよりもバックがスムーズになった。
#ref(2016b/Member/gazet/Mission2/ue.jpg,7.34kb,)
#ref(2016b/Member/gazet/Mission2/ura.jpg,12.9kb,)
**アーム部分 [#if9a124f]
黄色い部品で挟みむ。光センサーもアーム部分につけた。モーターもつけたため、重く、しっかり取り付けないと走行中にとれてしまうのが欠点。
#ref(2016b/Member/gazet/Mission2/kuwagata.jpg,7.91kb,)
*プログラムの説明 [#x51f6632]
  #define go_go OnFwd(OUT_AC);               //前に進む
  #define turn_right OnFwd(OUT_C);Off(OUT_A);        //右に曲がる
  #define turn_left OnFwd(OUT_A);Off(OUT_C);        //左に曲がる
  #define kyu_turn_r OnFwd(OUT_C);OnRev(OUT_A);      //右旋回
  #define kyu_turn_l OnFwd(OUT_A);OnRev(OUT_C);      //左旋回
  #define right_cross  turn_right;Wait(110);//交差点右折
  #define straight_cross  kyu_turn_r;Wait(10);go_go;Wait(30);   //交差点直進
  #define BLACK_a 44        //これらは色を判断するために使う光センサーの値
  #define BLACK_b 48
  #define WHITE_a 52
  #define WHITE_b 58
  #define MOVE_TIME 18
  #define ball_get  go_go;Wait(20);Off(OUT_AC);OnFwd(OUT_B);Wait(20);Off(OUT_B);   //ボールをとる
  #define shoot OnRev(OUT_AC); Wait(110);Off(OUT_AC);kyu_turn_l;Wait(80);Off(OUT_AC);Wait(40);kyu_turn_r;Wait(30);OnRev(OUT_B);Wait(20);Off(OUT_ABC);    //ボールをゴールへ入れる 回りながら投げる動きに挑戦した。
ライントレースするサブルーチン
 黒い線の左側をトレースする
光センサーの値によって5段階の動きをプログラミングした。

  sub line_trace()
  {     ClearTimer(0);
        SetSensor(SENSOR_2,SENSOR_LIGHT);
        while(FastTimer(0)<=MOVE_TIME){ 
                      if(SENSOR_2<BLACK_a){
                           kyu_turn_l; 
                          }
                      else if(SENSOR_2<BLACK_b){
                        turn_left;
                        ClearTimer(0);
                         }                  
                     else if(SENSOR_2<WHITE_a){
                       go_go;
                        ClearTimer(0);
                         }
                      else if(SENSOR_2<WHITE_b){
                           turn_right;
                           ClearTimer(0);
                         }
                       else {
                         kyu_turn_r;
                         ClearTimer(0);
                         }
        }
      Off(OUT_AC);
      Wait(100);
  } 



ミッションを遂行するプログラム
 task main()
 {
      line_trace();
      right_cross;
      line_trace();
      straight_cross;
      ball_get;
      line_trace();
      straight_cross;
      line_trace();
      right_cross;
      line_trace();
      straight_cross;
      line_trace();
      right_cross;
      line_trace();
      shoot;
 }
*感想 [#q33037a9]
折り目に引っかかってしまうので、コースの紙は折りたたまない方がよかった。他の人の紙を借りてプログラムを修正していったので光センサーの値が自分たちの紙と異なっていて、自分たちの紙ではうまくライントレースできなかった。人の紙ではシュートまでうまくできていたので悔しかった。もっとちゃんと考えればよかったと反省している。機体はアーム・光センサーの部分が重くて取れやすかった。モーターを車体上につけるような設計のほうが良かったかもしれない。



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