#contents

*課題2・黒い線に沿って動くロボット [#ge99588a]
  2つの光センサーが白を感知して進みます。それによって、ロボット本体を黒の線上を進むようにしました。 
   
**【メンバー】 [#t1e2029d]
 ・宮原
 ・大益

**【ロボット紹介】 [#j76913f3]

**【プログラム】 [#q7a68997]
 #define MOTOR OUT_A+OUT_C         
 #define THRESHOLD  40                      // 闘値を設定
 #define RUN_TIME  150                 
 #define MOTOR OUT_A+OUT_C  
 #define THRESHOLD  40            
 #define TIME  0

 task main ()
 {
        SetSensor(SENSOR_1,SENSOR_LIGHT);               // センサ1が光センサであることを定義
        SetSensor(SENSOR_3,SENSOR_LIGHT);               // センサ3が光センサであることを定義
        SetSensor(SENSOR_2,SENSOR_TOUCH);               // センサ2がタッチセンサであることを定義
  {
        SetSensor(SENSOR_1,SENSOR_LIGHT);               
        SetSensor(SENSOR_3,SENSOR_LIGHT);             
        SetSensor(SENSOR_2,SENSOR_TOUCH);             
      
        while(true){
                if(SENSOR_1 > THRESHOLD){
                    if(SENSOR_3 > THRESHOLD){
                        OnFwd(MOTOR);
                    } else {
              if(SENSOR_2 == 1){
                          OnRev(MOTOR);
                          Wait(60);
                          Off(MOTOR);
                          Wait(300);    
                     } else {
                   if(SENSOR_1 > THRESHOLD){
                      if(SENSOR_3 > THRESHOLD){
                         OnFwd(MOTOR);     
                      } else {
                         OnFwd(OUT_A);
                         Off(OUT_C);           // センサ1が反応(黒線から外れた)したとき、Aを進めCを止める
                        }
                  } else {
                         Off(OUT_C);
                         Wait(TIME);
                         }
                     } else {
                         if(SENSOR_3 > THRESHOLD){                      
                         Off(OUT_A); 
                         OnFwd(OUT_C);       // センサ3が反応(黒線から外れた)したとき、Aを止めCを進める
                         }else{
                           OnFwd(MOTOR);
                           Wait(20);
                           Off(MOTOR);          //  2つの光センサが黒線上にあるとき2秒前進する
                           }
                    }
               OnFwd(MOTOR);                              
               until(SENSOR_2 == 1);                     //  タッチセンサーが反応したら
            }
                         OnFwd(OUT_C);      
                         Wait(TIME);
                      } else {
                          OnFwd(MOTOR);
                          Wait(30);
                          Off(MOTOR);
                              }
                                    
                       }
                  }   
   
       }       
 }

***衝突時の対応 [#vd4c4ef4]
 いくつかのロボットをコース上で動かすために、交差点などで衝突した場合の対応を組み込みました。
 if(SENSOR_2 == 1){
                         OnRev(MOTOR);
                         Wait(30);
                         Off(MOTOR);
                         Wait(100);

  衝突直後3秒間後退します、その後10秒間停止して、再び前進し始めます。最初はテーブルバンパーを元に、タッチセンサを本体に付けようと考えていましたが、衝突した時の反応時間が遅くなってしまうこと、それにより衝突した相手のロボットの進路を妨げないために、下の写真のようにしました。拡散

**工夫した点・努力した点 [#ld375496]
 前回の書道ロボットに比べ、軽量で小回りを利かせる事を念頭に考えて作りました。


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