[[2005/A2/課題4]]
*作成中... [#b9dea41a]
NoImage
*
#ref(2005/A2/課題4左/img_0247_Large.jpg,60%)
光の追跡者
*Light pursuer [#h7c43911]
**プログラム [#q1022ba2]
 #define MEGANE 100 //ロボが一周する時間(電池残量、床の摩擦力による)
 #define LEFT_X  OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A+OUT_C);//左回転
 #define RIGHT_X OnFwd(OUT_C);OnRev(OUT_A);Wait(1);Off(OUT_A+OUT_C);//右回転
 
 task main()
 {
     SetSensor(SENSOR_2,SENSOR_LIGHT);
     int light_max = 0;
     int i = 0;
     int MAX = 0;     //ここまでは関数を決めるなどの、お約束事項//
     for(i=0; i<=75; i++){     //とりあえずセンサーを動かしながら一周//
        OnFwd(OUT_A);
        OnRev(OUT_C);
        Wait(1);
        Off(OUT_A+OUT_C);
        if(SENSOR_2>light_max){     //明るい地点を探すため//
           light_max = SENSOR_2;
 	   MAX = i;                 //その地点をMAXとして残す//
 	  }
 	}
     
     Off(OUT_A+OUT_C);     //一周したら止まってみる//
     Wait(100);
     
     repeat(MAX){     //明るい地点を向くまで回転//
        OnFwd(OUT_A);
        OnRev(OUT_C);
        Wait(1);
        Off(OUT_A+OUT_C);
        int light_max = 0;  //「見つけた明るさ」の最大値
        int i = 0;          
        
        for(i=0; i<=MEGANE; i++){
           LEFT_X;                  //まず左に一周しつつ
 	  if(SENSOR_2>light_max){  //このlight_maxを
              light_max = SENSOR_2; //見つけた中で、一番明るい
 	     }                     //明るさの値に塗り変える。
 	   }
        
        Off(OUT_A+OUT_C);           //とりあえず一周したら
        Wait(50);                   //休憩してみる(確認の目的あり)
        
        repeat(10){                     //上で見つけた明るさを元に
        for(i=0; i<=MEGANE; i++){       //右回転で探しては前進、探しては前進
           if(light_max-10>=SENSOR_2){
	      RIGHT_X;
           }
           else{
	     Off(OUT_A+OUT_C);Wait(10); //最も明るい所よりも若干、暗くても進ませます。
             OnFwd(OUT_A+OUT_C);
             Wait(30);
             Float(OUT_A+OUT_C);
	     Wait(50);
	   }
        }
     OnRev(OUT_A+OUT_C);     //明るい方を向いたら少し//
     Wait(50);               //進んで、休む//
     Off(OUT_A+OUT_C);
     }
 }
**作成者 [#f9654d49]
 キャベツ 富岡 トマト
**ロボの話 [#r09a8a67]

 今までのロボ達の「バランスの悪さ」と戦ううち、培われた技術。
 部品の組合せや特にコレといった工夫もないように見えるであろう、今回のロボ。
 ...個人的には今回のコンセプト「シンプルイズザベスト」にのっとり、
 シンプルさの中に秘められた、安定性、を見せつける。
 
 走ってるうちに壊れなければ良い
 ......と思って組み立てた時には、まさか、
 とーますに軽く分解されるとは、思いもしなかったキャベツとトマトなのでした。
 
 「光」、もとい「懐中電灯の光」を取りやすくするため光センサーを上の方に、
 取り付けた。懐中電灯を持つ人が少しでも動きやすいようにとの配慮である。 
**プログラムの話 [#xbb72a6d]

 今回も、お手本を参考にしつつ。
 自分なりの理解をしてプログラムを作成。(理解するのに時間がかかり過ぎました...)
 当初のプログラムとしては、
  1.ロボットが左回転で一周以上する、事を「100分割」
  2.分割した事で、明るい方向を(MAX)番号として記憶
  3.その番号の地点まで右回転
  4.明るい方を向いたら、少し前進
  5.3に戻って繰り返し
 という形で考えてみた。
 が、しかし、このプログラムだと
 一度ある程度進むたびに探すという動作を繰り返してしまうため改良。
 ある程度の明るさの数値を始めの回転で記憶、回転してその数値をみつけた瞬間
 その方向に突然、前進を繰り返す形のプログラムになった。
 若干、ウイリーする。
 
**感想など [#mc707c26]
 このままだと自分のやることが膨大になりそうな予感がしたので、
 今回は補助席に座ってみた。助言する機会ができ勉強になり、
 チームの技術も向上し喜ばしいことです。(富岡研究所)

 今回のプログラムの大半を担当・・・したはず、お手本を見ても簡単には
 理解できず、行き詰まっていたのは間違いない。
 そんな時にもらった助言の一つが「#defineにMEGANE」
 ...上手く動いた事は事実。(キャベツー)


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