[[2006b/MemberOnly/進行状況A]]
*課題 ライントレース~ [#o7c6b003]
**ロボットについて [#wd91dd0d]
光センサー:地面になるべく近い位置になるよう光センサーを装着させる。~
線を跨ぐようにセンサーの幅をあけました。両方のセンサーが線を通過しながら直進する動作と線を跨ぎながら直進する動作と2パターンありますが、自分たちは前記のほうを選びました。~
タッチセンサー:同じ班のロボ2体に対して、センサーが同じ高さにするように装着しました。これは、高さの違いによってセンサーの空振り?を防ぐための措置です。~
また、今回はダブルバンパーでしたがシングルでも良かったと思います。
***変更点 [#q82ed7c1]
今回は一度作ったロボを変更することがありませんでした。~

あいうえお

** 黒い線を跨ぎながら進むプログラム[#f3afbd2c]
 
  task main() 
  #define line 40 
 { 
   SetSensor(SENSOR_1,SENSOR_LIGHT); //sensor1を光センサーと定義
   SetSensor(SENSOR_3,SENSOR_LIGHT); //sensor3を光センサーと定義 
   SetSensor(SENSOR_2,SENSOR_TOUCH); //sensor2をタッチセンサーに定義 
 
   while(true){                     //{}内の行動をし続ける
 
   if((SENSOR_1>line)&&(SENSOR_3>line)) 
   {OnFwd(OUT_A+OUT_C);}              //もしsensor1とsensor3が白い部分に反応していたら直進する
 
   if((SENSOR_1>line)&&(SENSOR_3<line)) 
   {OnRev(OUT_C);OnFwd(OUT_A);}       //senor3が黒い線に反応したら右旋回する。
 
   if((SENSOR_1<line)&&(SENSOR_3>line))    //sensor1が黒い線に反応したら左旋回する。
   {OnRev(OUT_A);OnFwd(OUT_C);}
 
   if(SENSOR_2 == 1){         //もし、タッチセンサーに当たったら、
		OnRev(OUT_A+OUT_C);  Wait(80);   //少し戻って
		OnFwd(OUT_A); OnRev(OUT_C); Wait(150);     // 指定の時間分方向転換する。
				}
	}

***反省点 [#c909ed9e]
・ライントレースする線の太さによって、このプログラムの処理では対応できないことに気がついた。自分たちの班は線を跨いで走行するものなので、作り変えるとしたら黒い線を通りながらの動作もやってみたいと思った。~
~
・このプログラムでは、あまりにキツいカーブだと曲がりきれないことがある。光センサーを2つとも後ろにつけて走るプログラムを組もうとしたが、途中で挫折。


**接触したら避けて進むプログラム [#e373b1dd]
  task main() 
  #define line 40 
 { 
   SetSensor(SENSOR_1,SENSOR_LIGHT); //sensor1を光センサーと定義
   SetSensor(SENSOR_3,SENSOR_LIGHT); //sensor3を光センサーと定義 
   SetSensor(SENSOR_2,SENSOR_TOUCH); //sensor2をタッチセンサーに定義 
 
   while(true){                     //{}内の行動をし続ける
 
   if((SENSOR_1>line)&&(SENSOR_3>line)) 
   {OnFwd(OUT_A+OUT_C);}              //もしsensor1とsensor3が白い部分に反応していたら直進する
 
   if((SENSOR_1>line)&&(SENSOR_3<line)) 
   {OnRev(OUT_C);OnFwd(OUT_A);}       //senor3が黒い線に反応したら右旋回する。
 
   if((SENSOR_1<line)&&(SENSOR_3>line))    //sensor1が黒い線に反応したら左旋回する。
   {OnRev(OUT_A);OnFwd(OUT_C);}
   
   if(SENSOR_2 == 1){                            // もし、互いにぶつかったら
     OnRev(OUT_A+OUT_C); Wait(90);     // やや、戻って
     OnFwd(OUT_A);OnRev(OUT_C); Wait(50);
     OnFwd(OUT_A+OUT_C); Wait(45);
     OnFwd(OUT_C);OnRev(OUT_A); Wait(50);
      }
 }

***苦労した点 [#w96c4346]
課題2−1と違って、一度線から離れるため元の黒線に戻ってきてまた、ライントレースさせるのが難しい。~
2体のロボと調整させながらなのでやや苦労した。途中、お互いがぶつかってもなかなか上手くいかないことが多くあったので、プログラムを書き換える必要があると思う。~
~
・ほとんど課題2−1のプログラムと同じなので、プログラムをくむのにそれほど時間はかからなかったが、なかなか上手くいかずプログラムの微調整に時間がかかった。~
~
コメントをお願いします。
#comment


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