2010a

目次

課題2:黒い線に沿って動くロボット

各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)

1. 空き缶をコース上に戻して再びコースに戻って進む

2. 空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む

ただし、

•速さと正確さを追求すること

•コースを1周したら自動的に止まること

•交差点では一時停止すること

メンバー

スズキ
Ta2(写真配置の都合上、ウインドウを横に広げて見ていただきたい)

ロボットについて

本体

MS_type1_全体.JPG
MS_type2_全体.JPG
←「type1」
空き缶を運ぶためにアームが前にあります。

「type2」→
空き缶を避けて進むため、
邪魔なアームは後ろに。


MS_本体.JPG
タッチセンサー、光センサー、アームを外すとこんなにシンプルに…
まぁ、ほとんど最初のものと同じですが…

各種パーツ

MS_タッチセンサー.JPG
MS_光センサー.JPG
←タッチセンサーの接触部分?の脆さが難点…
本体を下から見ただけだったり…→


MS_タッチセンサーのみ.JPG
MS_光センサーおよびアーム(type2).JPG
←分解するとこんな感じ
タッチセンサの部分です。
こちらも分解されている図→
光センサとアームは一体化?しています。
アームはtype2のもの。

工夫した点

苦労した点

コースについて

SH3E0008.jpg

simple is the best!
ただ、他の形が思いつかなかっただけですが…
しかし思っていた以上にカーブは急になっていて、ちょっと光センサの取り付け位置を変える必要がありました。

問題点

プログラム

スズキのプログラム

空き缶を次の交差点まで運ぶプログラム

#define THRESHOLD 40	// 閾値
#define turn_time 170	// 180°回転する時間
#define go_time 90	//交差点から出る時間
#define away_time 90	//缶から遠ざかる時間
#define play_time 6000	//ロボットの動く時間
int n=0;		//n=1:空き缶持っている
task main(){

	SetSensor(SENSOR_1, SENSOR_LIGHT);
	SetSensor(SENSOR_2, SENSOR_TOUCH);
	SetSensor(SENSOR_3, SENSOR_LIGHT);
	ClearTimer(0);
				//空き缶を次の交差点まで運ぶプログラム
   while(FastTimer(0)<play_time){
		start follow_line;				//ライントレースの開始
             until(SENSOR_1<THRESHOLD&&SENSOR_3<THRESHOLD);	//交差点まで(センサー1と3が黒になる場合まで)
		stop follow_line;				//ライントレースの終了
		Off(OUT_A+OUT_C);				//2秒間停止
		Wait(200);
		OnFwd(OUT_A+OUT_C);				//交差点から出る
		Wait(go_time);
		if(n==1){					//もし空き缶を持っている なら
			OnFwd(OUT_A);OnRev(OUT_C);		//空き缶を交差点に戻す
			Wait(turn_time);
			OnRev(OUT_A+OUT_C);			//後ろに下がって空き缶に当たらないようにする
			Wait(away_time);
			OnFwd(OUT_A);OnRev(OUT_C);		//進行方向へ回転
			Wait(turn_time);
			OnRev(OUT_A+OUT_C);			//ライン上に戻る
			Wait(away_time);
			Off(OUT_A+OUT_C);
			n=0;					//作業が完了したためn=0にする
			
		}
   }
  
}

				//ライントレースのプログラム
task follow_line(){       
while (true){
          if(SENSOR_1>THRESHOLD&&SENSOR_3<THRESHOLD){		//センサー1が白、センサー3が黒の時
              OnFwd(OUT_A);OnRev(OUT_C);			//右に回転し軌道を修正
          }else if(SENSOR_1<THRESHOLD&&SENSOR_3>THRESHOLD){	//センサー3が白、センサー1が黒の時
              OnFwd(OUT_C);OnRev(OUT_A);			//左に回転し軌道を修正
          }else{						//両方白または、両方黒の時 
              OnFwd(OUT_A+OUT_C);				//前進する
	       }
	   if(SENSOR_2==1){ 	  	 		        //空き缶に当たったら 							    
n=1;								//nを1にする		
	  }
     }
}

工夫した点

今後改善すべき点

Ta2のプログラム

空き缶を避けて進むプログラム

#define light 40		//閾値
#define time 50		//待ち時間
#define RUN_TIME 8700	//走る時間

task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);
	SetSensor(SENSOR_2,SENSOR_TOUCH);
	SetSensor(SENSOR_3,SENSOR_LIGHT);
	
	ClearTimer(0);
	
	while(Timer(0) <= RUN_TIME)
	{
 	
	start follow_line;

	if(SENSOR_2>1)			//タッチセンサーが反応
		{
		
		stop follow_line;	//ライントレースのタスクを一旦停止

		OnRev(OUT_A+OUT_C); 
		Wait(time);			
	
		OnFwd(OUT_A);
		OnRev(OUT_C);
		Wait(100);
		Off(OUT_A+OUT_C);
	
		OnFwd(OUT_A+OUT_C);
		Wait(130);
	
		OnFwd(OUT_C); OnRev(OUT_A);
		Wait(100);
		Off(OUT_A+OUT_C);
	
		OnFwd(OUT_A+OUT_C);
		Wait(280);	
	
		OnFwd(OUT_C); OnRev(OUT_A);
		Wait(100);
		Off(OUT_A+OUT_C);	
		OnFwd(OUT_A+OUT_C);
		Wait(100);
		}				//缶を避けてラインに戻る。
	}
}





task follow_line()				//ライントレースのプログラム
{

while(true){

	if(SENSOR_1>light){
		if(SENSOR_3>light){ 	
			OnFwd(OUT_A+OUT_C);	
			}
		else{  				
			OnFwd(OUT_A);
			OnRev(OUT_C);
			}
		}

	else{
		if(SENSOR_3>light){
			OnRev (OUT_A);
			OnFwd(OUT_C);		
			}

		else{
			Off(OUT_A+OUT_C);	
			Wait(20);		
			OnFwd(OUT_A+OUT_C);	
			Wait(20);					
			}
		}
	}
}

工夫した点

缶を避けるためのタスクと、ライントレースのタスクを分けて作成した。

今後改善すべき点

elseの使い方を間違っていたかもしれない。
音を鳴らしてみたい。
もっとシンプルに。

反省・感想

elseに嫌われた…。また、空き缶が軽すぎてタッチセンサーが反応しなくて困った。by Ta2

プログラムを考えるのが大変だった。タッチセンサーが反応しなかったためロボットを改造するのに苦労した。byスズキ

コメント

コメントをどうぞ



添付ファイル: fileMS_本体.JPG 332件 [詳細] fileMS_光センサーおよびアーム(type2).JPG 426件 [詳細] fileMS_タッチセンサーのみ.JPG 375件 [詳細] fileMS_光センサー.JPG 331件 [詳細] fileMS_タッチセンサー.JPG 352件 [詳細] fileMS_type2_全体.JPG 345件 [詳細] fileMS_type1_全体.JPG 326件 [詳細] fileSH3E0008.jpg 352件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-29 (日) 13:09:17