[[2009b]]写真は後日追加します。
#contents

*課題 [#h3dfeb40]
光センサーを使って、ラインをトレース!~
牛乳パックに負けず、安全確実、かつ颯爽と駆け抜けるロボットを作ろう。~

*チーム [#fe1787dc]
-チーム名 「切なさと悲しさとロボティクス」~
~
-メンバー紹介(「」内は課題にかける想い。)~
 しんご (農学部) 「穴数えるの大変。」~
 なかみう(教育学部)「シンプルがカッコワルいとは言わせない。」~
~
*ロボット [#y7af0333]
ロボットはシンプルに作った。~
この方針は最初から決定していたので、~
ロボットの大きな変更はなかった。~
ただ、パーツの不具合が多く、大変だった。~

*プログラム [#db4d08ee]  
**共通のプログラム [#j6f57639]
共通のプログラムを、なかみうが作成した。~
~
共通のプログラムは下の通り。~
~
 SetSensor(SENSOR_1, SENSOR_LIGHT);  //光センサー(左)
 
 SetSensor(SENSOR_2, SENSOR_LIGHT);  //光センサー(右)
 
 
 if((SENSOR_1 < white) && (SENSOR_2 < white))  //直進
   {OnFwd(OUT_A+OUT_C);}           
 
 if(SENSOR_1 < 0)             //コースから右にそれたときの回復   
   {OnFwd(OUT_C); Float(OUT_A);}
 
 if(SENSOR_2 < 0)             //コースから左にそれたときの回復       
   {OnFwd(OUT_A); Float(OUT_C);} 
 
 if((SENSOR_1 < 0) && (SENSOR_2 < 0))  //交差点での停止&直進
   {Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C);}

**オリジナルのプログラム [#n777f084]
共通プログラムのパーツを組み合わせ(改良して)~
オリジナルのプログラムを作った。~
以下は、それぞれのプログラムと、本人による解説。~ 
***しんごのプログラム [#f2889524]
#define mae(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); 前進させる
#define THRESHOLD 40    閾値
sub CUP()                     タッチセンサが反応したときの反応      
{OnRev(OUT_C);                 回転しパックを後ろにおき、自らは反転、レース上に戻ります
OnFwd(OUT_A);Wait(140);
OnRev(OUT_A+OUT_C);Wait(100);
OnRev(OUT_C);                 
OnFwd(OUT_A); Wait(140);
OnRev(OUT_A+OUT_C);Wait(100);}	  

task main()
{  
 #define mae(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); 前進させる
 #define THRESHOLD 40    閾値
 sub CUP()                     タッチセンサが反応したときの反応      
 {OnRev(OUT_C);                 回転しパックを後ろにおき、自らは反転、レース上 に戻ります 
 OnFwd(OUT_A);Wait(140);
 OnRev(OUT_A+OUT_C);Wait(100);
 OnRev(OUT_C);                 
 OnFwd(OUT_A); Wait(140);
 OnRev(OUT_A+OUT_C);Wait(100);}	  
 task main()
 {  
    SetSensor(SENSOR_1, SENSOR_LIGHT);       光センサ
    
    SetSensor(SENSOR_2, SENSOR_TOUCH);        タッチセンサ
    
    SetSensor(SENSOR_3, SENSOR_LIGHT);       光センサ
    while (true)
   {
      if (SENSOR_2 == 1)
      {CUP();}    
      if (SENSOR_1 < THRESHOLD)   
     {OnFwd(OUT_C);
	Off(OUT_A);
     until (SENSOR_1 > THRESHOLD) ;
    }
      if (SENSOR_3 < THRESHOLD) 
    { OnFwd(OUT_A);
      Off(OUT_C);
      until (SENSOR_3 > THRESHOLD) ;
	}
       if (SENSOR_1&& SENSOR_3 < THRESHOLD)
    {OnFwd (OUT_A+OUT_C);}
    else{OnFwd(OUT_A+OUT_C);
     }
     }
 }
 
***なかみうのプログラム [#gb976f48]
 
 #define white 40      //光センサーの値。
                       //これ以下は黒、これ以上は白。
 
 task main()
 {
    SetSensor(SENSOR_1, SENSOR_LIGHT);  //光センサー:左
    SetSensor(SENSOR_3, SENSOR_LIGHT);  //光センサー:右
    int t = 0;             //後で使う変数「 t 」
    
    
    while( t <= 15){         // t が15以内で繰り返す。  
    while( t <= 15 ){         // t が15以内で繰り返す。  
                       //この t は最後の方にあります!
        //直進
        if((SENSOR_1 > white) && (SENSOR_3 > white)){
        OnFwd(OUT_A+OUT_C);
        }
        
        //コースから右にそれた時の処置(左に行きます)
        if(SENSOR_1 < white){
           OnFwd(OUT_C);
           OnRev(OUT_A);
           Float(OUT_A+OUT_C);          //このFloatは重要。 
                                        //Offではうまくいきません
        }   
        
        //コースから左にそれた時の処置(右に行きます)
        if(SENSOR_3 < white){
           OnFwd(OUT_A);
           OnRev(OUT_C);
           Float(OUT_A+OUT_C);
        }
        
        
        //交差点の通行 
        if((SENSOR_1 < white) && (SENSOR_3 < white)){
           t = t + 1;          //きました、「 t 」!
           Off(OUT_A+OUT_C);       //この動作を15回繰り返したら、
           Wait(30);                 //プログラムは終了します
           OnFwd(OUT_A+OUT_C);
        } 
    }             
 }      
*コース [#o92cde6a]
コースはA1左グループと共同で作成した。~
衝突もあったが、なんとかまとまった。~
~
完成したコースは、こちら。~
~
~
~
*コメントのコーナー [#t9fe79fd]

#comment


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