[[2007a/A9/ロボコン]]
#contents
*ライントレースについて [#w8265ecb]
方法としては、以下の通りである。&br;

**方法(それぞれ書いて利点欠点などを書く・・・っと。 [#c520ef10]
**方法 [#c520ef10]
A,2つのセンサーでトレース(黒、黒)&br;
B,2つのセンサーでトレース(白、白)&br;
C,1つのセンサーでトレース(黒)&br;

-''以上から考えた結果、 のセンサー配置およびトレースを選びました。''
-''1つでトレース、一つで箱感知、一つで交差点を認識させることにしました。''

**参考までに。それぞれのプログラム(動作保障はいたしませんが。) [#x5923bcf]
-''Bのプログラム''&br;
[[課題2のページ>2007a/A9/課題2左]]をご覧下さい。

-''Cのプログラム''&br;
#ref(ライントレース.JPG)&br;
 #define MOTOR OUT_A+OUT_C
 #define THRESHOLD 40 //閾値
 int search_dir;

 sub turn_left(){ OnRev(OUT_A);OnFwd(OUT_C); }
 sub turn_right(){ OnFwd(OUT_A);OnRev(OUT_C); } 

 task main() 
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_LIGHT);OnFwd(MOTOR); //最初の動きとして直進させる。
 while(true){
  if(SENSOR_1<THRESHOLD)           //線を見失ったら
  {
   if(search_dir==0){               //前回の捜索方向が0(左から捜索していた)
     turn_right(); Wait(5);     //右側から捜索開始
      if(SENSOR_1<THRESHOLD){        //線をみつけたのなら直進
          OnFwd(MOTOR);  
          search_dir=1;       //右から捜索していたことを記憶
      }else{                         //見付からないのなら反対側を探す
          turn_left(); Wait(10);
           if(SENSOR_1<THRESHOLD){    //見付けたのなら直進
             OnFwd(MOTOR);
             search_dir=0;      //左側の捜索で線を見つけたことを記憶
           }else{                     //どちらも見付からないのなら1秒前進
             OnFwd(MOTOR);Wait(100);
             search_dir=0;      //線を見失ったことになるので、とりあえず前進させる。
           }
      }
    }
    if(search_dir==1){         //上と同様。
      turn_left(); Wait(5);
        if(SENSOR_1<THRESHOLD){
           OnFwd(MOTOR);
           search_dir=0;
        }else{
           turn_right(); Wait(10);
            if(SENSOR_1<THRESHOLD){
              OnFwd(MOTOR);
              search_dir=1;
            }else{
              OnFwd(MOTOR); Wait(100);
              search_dir=0;
            }
        }
     }
   }
  }
  Off(OUT_A+OUT_C);
 }

**コメントをどうぞ。 [#td6ee9cd]
#comment


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