2010b

2010b

ライントレース6⌒□⌒)////★☆フゥ〜[2010/a4/右]

メンバー紹介

  • こっちの松本クン  チャ〜
  • フジゃる丸優    ィイ〜

コース紹介

力をめちゃ入れた点

DSCN0450.JPG

  • 授業時間を丸々費やして考えた力作。
  • もう一ついいコース案があったのだけれど、泣く泣くこちらのコースにした。(ボツになったコースに興味がある方は、担当者:Y.Fまで。)
  • コース全体の形、バランス、美しさは僕ら二人(こう&ゆう)の関係の象徴…。
  • コンパクトに収めるために、なんと交差点をコース全体の中に入れちゃうという画期的な発想。

僕らのこだわり

  • 他の班は交差点の数や曲がり角のノルマを達成するためだけの形のコースに対し、僕らのコースには、コース製作者である僕らの汗が入っている。僕らの愛がこもった道。
  • 命名【Love Load】  どうぞごらんあれ・・・。

マシーン作成過程において苦労した点

  • 最終的なマシーンにたどり着くまでに完成したマシーンを3、4回全部バラして、納得のいくまで作り直した。その努力を惜しまなかった。
    NEC_0031_2.jpg
  • 徹底的に小型化、軽量化を追求。使うパーツもかなり少なく抑えられるよう頑張った。

マシーン紹介  

NEC_0029_2.jpg
  • 後輪の装着法に悩んだ末、思い切って後輪を取り外して、一本の支柱でマシーン自体をうまく支えた。摩擦もほぼ気にならない。
    NEC_0028_2.jpg
  • 走行速度には自信がある。うん。 

プログラ-ム

こっちの松本クンのプログラム(近道を通るプログラム)

int search_time; //12    //search_timeという変数を利用(0.12秒)


task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);      //センサー1を光センサーと宣言(閾値41)
	SetSensor(SENSOR_3,SENSOR_LIGHT);       //センサー3を光センサーと宣言(閾値45)
	SetSensor(SENSOR_2,SENSOR_ROTATION);     //センサー2を回転センサーと宣言
 	ClearTimer(0);                               //タイマー(0)をクリア

	while((Timer(0)<=78)||((Timer(0)>=80)&&(Timer(0)<=160)))     //時間を指定してこの中で動作させる。
	{
  		ClearSensor(SENSOR_2);           //センサー2をクリア
		if(SENSOR_3 < 45)                           //センサー3が黒線を感知した時で…↓
		{
			if((abs(SENSOR_2) <= 34)||((abs(SENSOR_2)>=248)&&(abs(SENSOR_2)<=253)))    //なおかつ、近道の近辺だったら…↓
			{
				OnFwd(OUT_C);       //右に旋回
				OnRev(OUT_A);
				Wait(64);
			}
			if(((abs(SENSOR_2) >= 46)&&(abs(SENSOR_2) <= 52))||((abs(SENSOR_2) >=278) &&(abs(SENSOR_2) <= 283)))     //あるいは、近道の終わりの方だったら…↓
			{
				OnFwd(OUT_C);          //右に旋回
				OnRev(OUT_A);
				Wait(70);
			}
		}
		if(SENSOR_1 < 41)           //センサーが黒線上にある場合…↓
		{
			OnFwd(OUT_A+OUT_C);           //前進
		}

		if(SENSOR_1 > 41)           //センサーが黒線から外れた場合…↓
			{
				OnFwd(OUT_A+OUT_C);    //0.2秒だけ前進(点線の判定)  
				Wait(20);
				if(SENSOR_1 > 41)     //それでも黒線上に乗らなかったら…↓
				{
					OnRev(OUT_A+OUT_C);    //元の位置まで戻る。
					Wait(20);
					while(SENSOR_1 > 41)    //センサー1が黒線外にある場合は以下を繰り返す。
					{
						search_time=12;     //サーチする時間に0.12秒を代入
						if(((abs(SENSOR_2) > 105)&&(abs(SENSOR_2) < 216))||((abs(SENSOR_2) > 325)&&(abs(SENSOR_2) < 464)))      //まず左からサーチする場合(absとは絶対値の意味)
						{
							OnFwd(OUT_A);     //左に0.12秒だけ旋回
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1 > 41)     //更にそれでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_C);    //右にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒右に旋回してサーチ)
								OnRev(OUT_A);
								Wait(search_time*=2);
							}
							search_time*=2;      //サーチする時間を更に2倍する(調べる範囲を広げる。)
						}
						else               //まず右からサーチする場合
						{
							OnFwd(OUT_C);      //まず右に0.12秒旋回してサーチ
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1 > 41)      //それでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_A);     //左にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒左に旋回してサーチ)
								OnRev(OUT_C);
								Wait(search_time*=2);
							}
							search_time*=2;      //サーチする時間を2倍にする(調べる範囲を広げる。)
						}
					}
				}
			}
	}
}
   

フジゃる丸優のプログラム(近道を通らないプログラム)

int search_time; //12    //search_timeという変数を利用(0.12秒)

task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);      //センサー1を光センサーと宣言(閾値41)
	SetSensor(SENSOR_3,SENSOR_LIGHT);       //センサー3を光センサーと宣言(閾値45)
	SetSensor(SENSOR_2,SENSOR_ROTATION);     //センサー2を回転センサーと宣言
	ClearTimer(0);                               //タイマー(0)をクリア

  while((Timer(0)<=90)||((Timer(0)>=92)&&(Timer(0)<=172)))     //時間を指定して
	{
               ClearSensor(SENSOR_2);           //センサー2をクリア
		if(SENSOR_1 < 41)           //センサーが黒線上にある場合…↓
		{
			OnFwd(OUT_A+OUT_C);           //前進
		}

		if(SENSOR_1 > 41)           //センサーが黒線から外れた場合…↓
			{
 			OnFwd(OUT_A+OUT_C);    //0.2秒だけ前進(点線の判定)  
				Wait(20);
				if(SENSOR_1 > 41)     //それでも黒線上に乗らなかったら…↓
				{
					OnRev(OUT_A+OUT_C);    //元の位置まで戻る。
					Wait(20);
					while(SENSOR_1 > 41)    //センサー1が黒線外にある場合は以下を繰り返す。
					{
						search_time=12;     //サーチする時間に0.12秒を代入
						if(((abs(SENSOR_2) > 117)&&(abs(SENSOR_2) < 238))||((abs(SENSOR_2) > 361)&&(abs(SENSOR_2) < 489)))      //まず左からサーチする場合(absとは絶対値の意味)
						{
							OnFwd(OUT_A);     //左に0.12秒だけ旋回
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1>41)     //更にそれでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_C);    //右にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒右に旋回してサーチ)
								OnRev(OUT_A);
								Wait(search_time*=2);
							}
							search_time*=2;      //サーチする時間を更に2倍する(調べる範囲を広げる。)
						}
						 else               //まず右からサーチする場合

						{
							OnFwd(OUT_C);      //まず右に0.12秒旋回してサーチ
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1 > 41)      //それでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_A);     //左にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒左に旋回してサーチ)
                                                                OnRev(OUT_C);
								 Wait(search_time*=2);
						}
							 search_time*=2;      //サーチする時間を2倍にする(調べる範囲を広げる。)
						}
					}
				}
			}
	}
}         

感想、反省

  • 2人とも彼女いないからクリスマス前でも余裕で集まれて、マスィーンの作成に協力できた(クリスマスでイチャつくカップル反対)。
    • こっちの松本クン
      • 今回はまわりがセンサー2つでやっているのに対抗して、こっちは一つでやってみた。結果的にプログラムはほとんど同じような感じになり、センサーを2つ使ってやっているところが悩んでいた交差点判定も案外すんなりいけた。 途中プログラムのミスが分からず、先生の研究室にお邪魔したこともあったが、なかなかうまくいったと思う。
    • フジゃる丸優
      • 2人で集まって協力して楽しく作成出来た。やる時はやる、ふざけるときはふざけたりして、飽きることなく活動した。作業に関しては、コッチの松本くんにほぼ頼りきりで自分で作業できたとこは無かった。ただ部屋をかしたりするだけの無能な自分が嫌だった。それでも仲間の助け(ほぼ仲間の手柄)で完成した。最後にはいい感じにプログラミングを完成に持って行けれてよかったと思う。

コメントをどうぞ

  • まだできていないようなので、またあとで見ます -- FI? 2011-01-08 (土) 05:07:55


添付ファイル: fileDSCN0450.JPG 156件 [詳細] fileNEC_0029_2.jpg 228件 [詳細] fileNEC_0031_2.jpg 223件 [詳細] fileNEC_0028_2.jpg 232件 [詳細] fileNEC_0033.jpg 154件 [詳細] fileNEC_0032.jpg 154件 [詳細] fileNEC_0031.jpg 163件 [詳細] fileNEC_0030.jpg 160件 [詳細] fileNEC_0029.jpg 170件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-02-14 (月) 16:17:57