目次 [#l572f633]

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

各チームで作成したコースを3周するロボットを製作せよ。交差点のうちの一つには500mlの空の紙パックをおき、次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する)

  1. 紙パックを迂回する、あるいは紙パックをもとの位置に戻したのちコースに戻って進む (交差点を通過後、紙パックが元の位置にあればよい)
  2. 紙パックを次の交差点まで運んで行き、その交差点に紙パックを残してさらに黒い線に沿って進む

コースの紹介

コース2.jpg

Simple is best!ということでコースはなるべく簡単にしました。

完成したロボット

今回は各プログラムにつきパーツをかえてロボットをつくりました。

ノーマル

ノーマル.jpg

恵のロボット

恵のロボット1.jpg

牛乳パックはこのようにモーターBを使ってロボットの腕で抱きつく(?)みたいにつかみます。

恵のロボット2.jpg

堀内のロボット

堀内のロボット.jpg

ロボット作成において工夫した点

ロボットの本体は、小回りが利くようになるべく小さく、かつ頑丈に創りました。

バンパーは、テコの原理を用いて、なるべく低くしました。 by堀内(課題2の1)

牛乳パックが軽すぎて、タッチセンサーの制度を決めるのが難しかったのですが、そこはあえて牛乳パックには反応しないようにタッチセンサーを鈍くして、他のロボットとぶつかったときだけ反応するようにしました。 by恵(課題2の2)

プログラムの説明

恵のプログラム

#define GO OnFwd(OUT_A+OUT_C);			//前に進む
#define LEFT OnRev(OUT_A); OnFwd(OUT_C);		//左に曲がる
#define RIGHT OnRev(OUT_C); OnFwd(OUT_A);		//右に曲がる
#define RUN_TIME 8000			         	    //走る時間

task main ()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);
        SetSensor(SENSOR_2,SENSOR_TOUCH);
	SetSensor(SENSOR_1,SENSOR_LIGHT);		  //センサーの設定

	ClearTimer(0);					  //タイマーの時間をクリアする

	int BORDER;
	BORDER = 0;					  //交差点の名前と、番号の設定

while (FastTimer(0)<=RUN_TIME)			  //80秒になるまで
{
	if (SENSOR2=1)					  //センサー2(タッチセンサー)が反応すれば
	{
		Off(OUT_A+OUT_C); 
		Wait(500);				  //まず止まって5秒待つ
}
if (BORDER==1||BORDER==5||BORDER==9)	   //1,5,9番目の交差点を通ると
{
	OnFwd(OUT_B);	
	Wait(80);
	Off(OUT_B);				  //モーターBを使い牛乳パックをつかむ
}
if (BORDER==2||BORDER==6||BORDER==10)    //2,6,10番目の交差点を通ると
{
	GO;
	Wait(100);				  //若干前へ進み
	LEFT;
	Wait(130);				  //180度回り
	OnRev(OUT_B); 
	Wait(80);  				  //モーターBで掴んでいた牛乳パックを離す
	RIGHT;
	Wait(130);				  //また180度回りまた黒い線を追う
}
	if ( SENSOR_1 > 40 && SENSOR_3 > 40 )		//センサー1とセンサー3が両方白なら
	{
		GO					//前へ進む
	}
	if ( SENSOR_1 < 40 && SENSOR_3 > 40 )		//センサー1が黒、センサー3が白なら
	{
	LEFT					//左に曲がる
	}
	if ( SENSOR_1 > 40 && SENSOR_3 < 40 )		//センサー1が白、センサー3が黒なら
	{
		RIGHT					//右に曲がる
	}
	if ( SENSOR_1 < 40 && SENSOR_3 < 40 )		//センサー1とセンサー3が両方黒なら
	{
		BORDER==BORDER+1;			//BORDERに1を足して
		GO					//前へ進む
	}
}
Off(OUT_A+OUT_B+OUT_C);				  //全てのモーターを止めて終了
}

堀内のプログラム

#define  turn_left OnFwd(OUT_C);OnRev(OUT_A);Wait(90);Off(OUT_A+OUT_C);  //左に回る
#define  turn_right OnFwd(OUT_A);OnRev(OUT_C);Wait(70);Off(OUT_A+OUT_C); //右に回る 

task main ()
{
   
   SetSensor ( SENSOR_1, SENSOR_LIGHT );
   SetSensor ( SENSOR_2, SENSOR_TOUCH );
   SetSensor ( SENSOR_3, SENSOR_LIGHT );
    int flag=0;   
   
   while(flag<12){   //交差点を12回通過する
                  
         
           if (( SENSOR_1 > 40) && (SENSOR_3 > 40 ))
               {
                   OnFwd(OUT_A+OUT_C);    
               }        //センサー1とセンサー3が白のとき直進する    
           if(( SENSOR_1 < 40) && (SENSOR_3 > 40 ))
               {    
                   OnRev(OUT_A);
                   OnFwd(OUT_C);        
               }    //センサー1が黒でセンサー3が白のとき左に回る
            if(( SENSOR_1 > 40) && (SENSOR_3 < 40 ))
               {
                   OnRev(OUT_C);
                   OnFwd(OUT_A);
               }    //センサー1が白でセンサー3が黒のとき右に回る
            if(( SENSOR_1 < 40) && (SENSOR_3 < 40 ))
               {
                   OnFwd(OUT_A+OUT_C);
                   flag++;
               }    //両方のセンサーが黒のときflagに1をたして直進する
             if (SENSOR_2==1)  //タッチセンサーに触れた場合
                                  {
                                         
                 OnRev(OUT_A+OUT_C);Wait(80);Off(OUT_A+OUT_C);   //後ろに下がる
                 turn_right;   
               OnFwd(OUT_A+OUT_C);Wait(120);Off(OUT_A+OUT_C);   //前に進む
                 turn_left;
               OnFwd(OUT_A+OUT_C);Wait(120);Off(OUT_A+OUT_C);   //前に進む                     
                                           
                                  }         
   
   }
   Off(OUT_A+OUT_C);         //終了
   }
     
    
    

感想、反省点

んー、なんか、ロボットの制作するのが意外と時間を食ったし、プログラムも若干、苦労しました;; でも自分的には、けっこうできた方だと思います。by恵

プログラムが自分にとってはとても難しかったです。 by堀内

コメントお願いします



添付ファイル: fileコース2.jpg 429件 [詳細] file恵のロボット2.jpg 379件 [詳細] file恵のロボット1.jpg 434件 [詳細] fileコース.jpg 249件 [詳細] file堀内のロボット.jpg 461件 [詳細] fileノーマル.jpg 416件 [詳細] file恵のロボット.jpg 203件 [詳細] file光センサー.jpg 220件 [詳細] fileタッチセンサー.jpg 213件 [詳細] file足.jpg 210件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-26 (日) 18:35:00