[[2010b]]

#contents

*課題2の内容とルール [#r45faa9e]

各チームで次のようなコースを作成し、コースを2周するロボットを製作せよ。

-黒い線の幅は15〜25mmの範囲で一定にすること

-交差点が3箇所以上あること

-直角のコーナーを2箇所以上設置すること

-近道を2箇所 (直角のコーナーをショートカットしてもよい)

-スタート地点にはコースに直角に横5cmのラインを描く

ただし、

-速さと正確さを追求すること

-2周目はスタート地点の直前で自動的に止まること

-近道を選択するプログラムとそうでないプログラムを2人で分担して作成すること


*メンバー紹介 [#nfd81916]

-松澤

-水野

*ロボットの紹介 [#wc013992]

**機体の構造 [#v16d2593]

これがロボットの外見です。小回りが利くように全体的に小型化しました。

#ref(./CA3C0260.JPG,100%,ロボット)

**工夫した点 [#l8131040]

写真のように、光センサー、回転センサーを機体に装着しました。

黄色の四角で囲ったのが光センサー、赤の四角で囲ったのが回転センサーです。

#ref(./CA3C0261.JPG,100%,ロボットその2)

コースの黒線を光センサーが挟む形になります。なので、次の4つのパターンが発生します。

(左のセンサー,右のセンサー)

(白,白) まっすぐ進みます。

(白,黒) 左に寄ります。

(黒,白) 右に寄ります。

(黒,黒) 交差点の判定をします。

*コースの紹介 [#ma49512d]

赤の矢印が共通のコースです。黄色の矢印が近道のコースです。

#ref(./CA3C0264.JPG,100%,コース)

*プログラムと作成図 [#y66ecd3d]

-松澤(近道Ver)

--プログラム

-水野

--プログラム

仮のプログラムです。後々修正します。

 #define THRESHOLD 45   // 閾値
 #define RUN_TIME 200   // トレースする時間(単位 1/10 秒) 
 int i;


 task main ()
 {
     SetSensor(SENSOR_1, SENSOR_LIGHT);
     SetSensor(SENSOR_3, SENSOR_LIGHT);
     SetPower(OUT_A,2);
     SetPower(OUT_C,2);
     ClearTimer(0);
     i=0;
     while (i!=100) { 
         if(SENSOR_1>THRESHOLD) { //センサー1が白を認知
                     if(SENSOR_3>THRESHOLD) { //センサー3も白を認知
                                         OnFwd(OUT_A+OUT_C); Wait(1);
                                            }
                     else { //センサー3は黒を認知
                              if(i==10) {
                                         Off(OUT_C); OnFwd(OUT_A); Wait(90);
                                         PlaySound(SOUND_CLICK); Wait(10);
                                         i=i+1;  
                                        }
                              else {
                                         Off(OUT_C); OnFwd(OUT_A); Wait(15);
                                         PlaySound(SOUND_CLICK); Wait(10);
                                         i=i+1;
                                    }
                          }
                                           }
         else { //センサー1が黒を認知
                     if(SENSOR_3>THRESHOLD) { //センサー3は白を認知
                              if(i==14) {
                                         Off(OUT_A); OnFwd(OUT_C); Wait(90);
                                         PlaySound(SOUND_CLICK); Wait(10);
                                         i=i+1;
                                        }
                              else {
                                         Off(OUT_A); OnFwd(OUT_C); Wait(15);
                                         PlaySound(SOUND_CLICK); Wait(10);
                                         i=i+1;
                                   }
                                                      }
                      else { //センサー3も黒を認知
                                         Off(OUT_A+OUT_C); Wait(1);
                                         OnFwd(OUT_A+OUT_C); Wait(1);
                                         PlaySound(SOUND_CLICK); Wait(10);
                                         i=i+1;
                           }
               }
                                }
    while(Timer(0)<=RUN_TIME) {
            if(SENSOR_1>THRESHOLD) { //センサー1が白を認知
                        if(SENSOR_3>THRESHOLD) { //センサー3も白を認知
                                         OnRev(OUT_A+OUT_C); Wait(1);
                                               }
                        else { //センサー3は黒を認知
                                         OnRev(OUT_A); Off(OUT_C); Wait(15);
                             }
                                   }
            else { //センサー1が黒を認知
                        if(SENSOR_3>THRESHOLD) { //センサー3は白を認知
                                  OnRev(OUT_C); Off(OUT_A); Wait(15);
                                               }
                 }
                              }
                        
 }

*反省・感想 [#v4bada11]

-松澤

-水野

*コメントをお願いします [#dc304afe]

#comment

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