2008b/MemberOnly/進行状況A

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

課題内容

各チームで作成したコースに沿って動くロボットを作成せよ。ただし、

  • 速さと正確さを追求すること
  • 交差点で優先側を走っていない場合には、一時停止すること
  • 前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
  • コースを2周したら自動的に止まること

注意:コースラインの幅は20〜25mmくらいとしてますが,あまり太くしない限り制限はしていません。.

使用するロボットやパーツ

前回のロボットを利用

  • 安定性を出すためにつけた黄色足
    005.JPG


  • 大きな2つのタイヤ
    006.JPG

今回から使用するもの

  • 光センサー
    007.JPG

明暗を感知します。 今回は白い紙に書いた黒い道を見分けるために使用します。

  • タッチセンサー
    008.JPG

黄色い部分が押されると反応します。 今回はもう一つのロボットとぶつかった時に道を譲らせるために使用します。

制作過程

光センサー

黒い道を挟む形で2つの光センサーを装着しました。

002 (2).JPG

センサーが黒色を感知すると方向転換するようにするためです。

問題発生!安定感が悪い。

011.JPG
光センサー移動

バンパーの下に光センサーを移動。

タッチセンサー

ダブルバンパー(タッチセンサーが反応する範囲を広げるためのもの。タッチセンサーを2つ使用)を装着しました。

001.JPG

問題発生!センサーポート(センサーとロボット本体のセンサー機能を接続する場所) が3つしかないのに、接続したいセンサーがタッチセンサーと光センサー合わせて4つあるため、センターポートが足りない。。。

004.JPG


「どっちも同じ働きをするんだから」と重ねてみました。

CIMG0240.JPG

結局シングルバンパー(機能はダブルバンパーと同様だが少しスリム。タッチセンサーを1つ使用。)に変更しました。

問題発生!バンパーの位置が高くて他のロボットを感知せず、止まらない!!


CIMG0250.JPG
CIMG0251.JPG

バンパーの下にこの黒いパーツをつけることにより、バンパーより下に他のロボットが当たっても感知可能に♪

問題発生!シングルバンパーに黄色い足の部品を使わざるを得なかった。。。


ということで黄色い足を改造。

009.JPG

ちょこっとスリムになりました。

完成体

CIMG0249.JPG

A1のコース

017.JPG

コースについて

独創性があってよかったです。

プログラムを担当した身から言わせてもらうと黒線が凸凹していて速さが追求しにくいかな、と。

あと、コースのカーブが急すぎたのでこれまたスピードが追求できなかったです。

黒線を横断するときコースから外れてしまう。。。

etc,etc...

プログラム

#define THRESHOLD 40

task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);           //光センサー1設定
	SetSensor(SENSOR_2,SENSOR_TOUCH);           //タッチセンサー設定
	SetSensor(SENSOR_3,SENSOR_LIGHT);           //光センサー2設定
       int x;                                      //交差した数のための変数
       x = 0;
	while(true){
	  
	  	if(SENSOR_2 == 1){                  //当たったらしばらく待て
	  		Off(OUT_A+OUT_C);
	  		Wait(150);
	  		}
		if (SENSOR_1>THRESHOLD){
			if (SENSOR_3>THRESHOLD){    //センサー1,3が黒線外
				OnFwd(OUT_A+OUT_C);
				Wait(5);
				Off(OUT_A+OUT_C);
			}						
			else{                       //センサー1が黒線上
				OnFwd(OUT_A);
				Wait(5);
				Off(OUT_A);
				OnRev(OUT_C);
				Wait(1);
				Off(OUT_C);
				}
			}
		else{
			if(SENSOR_3>THRESHOLD){     //センサー3が黒線上
				OnFwd(OUT_C);
				Wait(5);
				Off(OUT_C);
				OnRev(OUT_A);
				Wait(1);
				Off(OUT_A);
			}
			else{                       //センサー1,3両方が黒線上
				Off(OUT_A+OUT_C);
				Wait(150);     //しばらく停止
                               x = x + 1;
                               If(x == 9)break;    //黒線上を9回横断したら終了
				OnFwd(OUT_A+OUT_C);
				Wait(10);
				}
		}
	}
}

ライントレースの原理

まず光センサーを二つ使って黒線のラインを両側ではさみ、その間から出さないようにするというのがこのライントレーサーの原理です。左側が黒線に当たればそれはコースから右に外れているということになり左に微調整させます。右側のセンサーが反応しても同じで左に外れていることがわかり右に微調整させます。コースから外れたらすぐわかるようにタイヤが設置されている場所よりなるべく前の方に取り付けました。

プログラムで工夫した点

やはり課題はなるべく速く正確にということだったので速くすればコースから外れる、正確にすれば遅くなるという試行錯誤を繰り返してWaitの中の数字を決めました。

あと、急な方向転換ができるように曲がるとき反対のタイヤをバックさせるようにしました。

2周したらその場で止めるために何回黒線をまたいだかを基準にしました。

動いてる様子

CIMG0238.JPG
CIMG0239.JPG

制作者としては、よちよち歩きもままならなかった我が子が、立って歩くのを見守る思い。道から外れないように頑張って!!

コメントをどうぞ

  • ロボットの説明は良くできていると思います。後は、プログラムの工夫やラインとレースの原理を書いてみてください -- FI? {2008-12-03 (水) 10:21:44};
  • わかりました。 -- alpha? {2008-12-04 (木) 16:26:30};
  • 黒線の太さが均一でないのはめんどくさかったから? -- なかむら? {2008-12-11 (木) 12:10:26};
  • 黒線の太さについてですが、作者曰く「手書きだから」だそうです。 -- A子? 2008-12-11 (木) 16:00:20


添付ファイル: fileCIMG0251.JPG 203件 [詳細] fileCIMG0250.JPG 235件 [詳細] fileCIMG0249.JPG 241件 [詳細] fileCIMG0240.JPG 224件 [詳細] fileCIMG0239.JPG 219件 [詳細] fileCIMG0238.JPG 246件 [詳細] file001.JPG 223件 [詳細] file015~.jpg 220件 [詳細] file017.JPG 509件 [詳細] file016.JPG 122件 [詳細] file015.JPG 105件 [詳細] file014~.dib 105件 [詳細] file014.JPG 109件 [詳細] file014 (2).JPG 112件 [詳細] file013.JPG 117件 [詳細] file012.JPG 119件 [詳細] file011.JPG 221件 [詳細] file010.JPG 116件 [詳細] file009.JPG 223件 [詳細] file008.JPG 227件 [詳細] file007.JPG 236件 [詳細] file006.JPG 194件 [詳細] file005.JPG 241件 [詳細] file004.JPG 209件 [詳細] file004 (2).JPG 114件 [詳細] file003.JPG 123件 [詳細] file003 (2).JPG 110件 [詳細] file002.JPG 109件 [詳細] file002 (2).JPG 225件 [詳細] file001 (2).JPG 116件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-20 (土) 18:22:20 (3896d)