2016b/Member

目次

課題

次のコースをトレースし、シュートまで決める。

10.5kb

B地点をスタートしてQ付近の3/4円周上でピンポン玉をつかみ、そのピンポン玉をC地点においたゴールへシュートする   ◦Bスタート → R直進 → P右折 → Q直進 → (ピンポン玉をキャッチ) → Q直進 → R右折 → P直進 → S右折 → Cへシュート

機体の説明

機体全体

11.9kb

今回の課題に挑む機体。もろい部分はあるが、しっかり点検してから走らせれば問題なし。

車部分

機体 車体はできるだけ小さく作った。小回りが利くようにするためだ。三輪のうち1つはキャスターにしてある。摩擦の少ないパーツを引きずるよりもバックがスムーズになった。

7.34kb
12.9kb

アーム部分

黄色い部品で挟みむ。光センサーもアーム部分につけた。モーターもつけたため、重く、しっかり取り付けないと走行中にとれてしまうのが欠点。

7.91kb

プログラムの説明

 #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段階の動きをプログラミングした。光センサーの値が低い順に、左旋回、左へ曲がる、直進、右へ曲がる、右旋回と動く。つまり、真黒なところ、真っ白なところでは旋回し、ほとんど黒、ほとんど白いところは曲がる。ちょうど間のところでは直進する。 このようにして黒と白のを行ったり来たりしながら前に進む。黒い線上で旋回する際にかかる時間がMOVE_TIMEより長くなると交差点と認識して止まることになっている。

 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;
}

感想

折り目に引っかかってしまうので、コースの紙は折りたたまない方がよかった。他の人の紙を借りてプログラムを修正していったので光センサーの値が自分たちの紙と異なっていて、自分たちの紙ではうまくライントレースできなかった。人の紙ではシュートまでうまくできていたので悔しかった。もっとちゃんと考えればよかったと反省している。機体はアーム・光センサーの部分が重くて取れやすかった。モーターを車体上につけるような設計のほうが良かったかもしれない。


添付ファイル: file2016b-mission2_kosu.png 72件 [詳細] fileue.jpg 75件 [詳細] filerobothi.jpg 120件 [詳細] filekuwagata.jpg 90件 [詳細] fileura.jpg 88件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-10 (金) 14:38:28 (924d)