[[2012a/MemberOnly/進行状況A]]
#contents

*課題2 ライントレースをするロボット [#jcd8ae35]

**ロボット本体 [#o3420e6e]
ライントレースが主な内容なので、特に工夫されている所はありません。
~あえていうなら、ライントレースをなるべく正確に行うために、車軸近くにセンサーを取り付けました。
~あと、ロボットは左右対称になっています。

&ref(robo1.JPG);
&ref(robo2.JPG);
**コース [#j7704333]
コースは、比較的シンプルな造りになっています。
-ヘアピンカーブ 1
-十字路 2
-直角カーブ 1

&ref(course.JPG);
ロボットは左回りにライントレースをするようになっています。

**ライントレース方法 [#pa3204de]
&ref(figure1.jpg);
&ref(figure2.jpg);

**脱出方法 [#a3807291]
&ref(figure3.jpg);

**プログラム [#z8e67d41]
 #define THRESHOLD 48

 task main()
 {
 	long fTime=0,time=0;
 	bool escape=false;
 
 	SetSensor(SENSOR_1,SENSOR_LIGHT);
 	SetSensorLight(IN_1);//光センサーを設定
 	
 	fTime = CurrentTick(); //時間取得
 		
 	while(true)
 	{
 		time = CurrentTick() - fTime;
 		
 		if(time >= 65000) //timeが65秒を超えたとき
 		{
 			if(SENSOR_1 >= THRESHOLD) //白
 			{
 				while(SENSOR_1 >= THRESHOLD) //黒い線を見つけるまで、繰り返し
 				{
 					OnFwd(OUT_C,50);
 					Off(OUT_A);
 				}
 			}
 		
 			while(SENSOR_1 < THRESHOLD) //黒い線の外側に移動
 			{
 				OnFwd(OUT_AC,70);
 				Off(OUT_AC);
 			}
 			escape = true;
 						
 		}
 		if(escape == false) //脱出しない場合
 		{
 			if(SENSOR_1 < THRESHOLD) //黒
 			{ 
 				OnFwd(OUT_A,45);
 				Off(OUT_C);
 			}
 			else if(SENSOR_1 >= THRESHOLD) //白		
 			{
 				OnFwd(OUT_C,45);
 				Off(OUT_A);
 			}
 		}
 		else if(escape == true) //脱出の時
 		{
 			if(SENSOR_1 < THRESHOLD) //黒
 			{ 
 				OnFwd(OUT_C,45);
 				Off(OUT_A);
 			}
 			else if(SENSOR_1 >= THRESHOLD) //白		
 			{
 				OnFwd(OUT_A,45);
 				Off(OUT_C);
 			}
 		}
 	}
 
 	
 	Off(OUT_AC);
 
 } 
**感想 [#ec925aa0]
ライントレースは簡単だと思っていたが、難しく、大変だった。
~脱出方法を考えるのが意外と難しかった。
~時間によって脱出する方法は、失敗する時もあったので、もっとよい脱出方法を考えられればよかった。
~もっと早く、正確にトレースできるようにしたいと思った。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS