-----
CENTER:COLOR(crimson):&size(22){R    O    B    O    こ    ん};
-----

RIGHT:訪れてくれた人の数 &counter(all);

LEFT:目次
#contents
*お願い [#i8f54560]
このホームペジをより快適に見やすくするため、ご覧の際には面倒くさらずに最大画面にしてみる事をお勧めします。ではごゆっくりどうぞ…
*目的 [#saef9f7b]
今までやってきたことの集大成

*ロボコン概要 [#rde920be]
所定の位置におかれているテニスボールをゴールまで運ぶ。

詳細は下のページに書いてあります。~
[[2007b/ロボコン]]



*ボールをもらいゴールに向かうロボ 初号機 [#c365dd90]
***概要 [#bafbf5a5]
~&ref(2007b/A5/ロボコン/a.jpg);       &ref(2007b/A5/ロボコン/b.jpg);   &ref(2007b/A5/ロボコン/f.jpg); 左から写真A,B,C

~&ref(2007b/A5/ロボコン/c.jpg);    &ref(2007b/A5/ロボコン/d.jpg);     &ref(2007b/A5/ロボコン/e.jpg); 左から写真D、E、F
~このマシンの役目は受け取ったボールを三角形の枠の中に正確に入れなくてはならない。写真ABCのタッチセンサを見てもらいたい。タッチセンサと枠を接触させるのがわかる。そして写真Dにあるローラー付きアームが動きだし写真E、Fのようにボールをアームが押し出し枠の中に入れる。ボールを受け取る"かご"は写真Fでわかるだろう。このマシンはアームを動かしボールを押し出すだけなので、なるべく受けとりやすいようホースを取り付けもし乱暴にボールを渡されても確実に受け取れるようにした。


また、ラインを判定するラインセンサの設置ははさみ型を採用した。


***工夫 [#t5f71855]
ゴールにボールを入れる機構をシンプルにした。受け取る”かご”を確実に受け取れるようにし、単純なボールの入れ方にする事でプログラムを極力シンプルにできるようにした。
***苦労 [#ke17ed65]
このマシンは枠に接触した後、少し後退しボールを落とす。ベストの距離で枠内にボールを入れるプログラムの調整に少しだけ苦労した。

*ボールをもらいゴールに向かうロボ 弐号機 [#e7619b3a]
**仕様一部変更の理由 [#o4a25c15]
~&ref(2007b/A5/ロボコン/k.jpg); 
~ボールをとって渡すロボとゴールまでいくロボットのRCXの位置が正反対で通信機能が使えなくなってしまった。そこで障害壁でボールを受け渡すのをあきらめ弐号機が単独で最初のボールがある位置からゴールまでいけるようにした。2つのロボットのコンビネーションは赤外線を使わず、プログラムで秒数の調整をし解決させた。いささか確実性には欠けるが、ボクらには時間がなかった…
**弐号機概要 [#fb382321]
~&ref(2007b/A5/ロボコン/h.jpg);    &ref(2007b/A5/ロボコン/i.jpg);  &ref(2007b/A5/ロボコン/i.jpg);     &ref(2007b/A5/ロボコン/j.jpg); 
~&ref(2007b/A5/ロボコン/h.jpg);    &ref(2007b/A5/ロボコン/l.jpg);  &ref(2007b/A5/ロボコン/m.jpg); &ref(2007b/A5/ロボコン/n.jpg); 
~
~&ref(2007b/A5/ロボコン/i.jpg);     &ref(2007b/A5/ロボコン/j.jpg); 
~障害壁の幅は10センチである。この幅を通り抜けられるように写真のようにモータの位置をずらし、極限まで車体の幅を狭めた。ボールをゴールに置く機構は初号機とほぼ同じ。初号機はアームでローラーを押し出していた。今回はボールをしゃくり上げてボールを押し出す形にした。しゃくり上げる際のアームのパワープログラムは以下の通りである。
 task main(){
  SetPower(OUT_B,1);
  OnFwd(OUT_B);
  Wait(30);
  Off(OUT_B);
  }
パワーが強すぎると勢いがありすぎて枠から飛びだしってしまう。アームを動かす時間を短くしすぎてしまうと今度はボールをしゃくり上げる事ができない。この数値がベストだとい事がわかった。


*ボールを運ぶロボ [#eb0d9478]
***概要 [#b33c792d]

~&ref(2007b/A5/ロボコン/o.jpg); 
~
~
~&ref(2007b/A5/ロボコン/q1.jpg); &ref(2007b/A5/ロボコン/r11.jpg); 
~
~
~&ref(2007b/A5/ロボコン/s.jpg); &ref(2007b/A5/ロボコン/p.jpg); 
***工夫 [#qbad6fef]
***苦労 [#t5194af9]




*二台のコンビネーション [#c5f46899]
この2台のロボットは一体がボールを持ち上げ、もう一台がなんなく10センチの障害壁を通り抜けゴールまで運ぶといった形をとる。当初障害壁の狭間でボールを受け渡す形にしたが、ボールを持ち上げるロボットとゴールへ向かうロボットのRCXの赤外線の向きが逆だという事がわかり、現状では受け渡しが不可能だという事が判明した。そこで1台はボールを持ち上げて渡す動作に絞り、もう一台は単独でボールをゴールまで持っていく形にした。ボールを受け渡すやり方は、全て時間でやっている。ある意味お互いがうまく連携してコンビネーションを発揮しなくてはいけなくなった。
~                                                                &ref(2007b/A5/ロボコン/p.jpg); 

*プログラム [#cffe3087]
***ボール運ぶロボ [#j86372a9]
~&ref(2007b/A5/ロボコン/o.jpg); 
 #define lightstronge 35
 int trasetime;
 task main(){
	SetSensor(SENSOR_1,SENSOR_TOUCH);
	SetSensor(SENSOR_2,SENSOR_LIGHT);
	SetSensor(SENSOR_3,SENSOR_LIGHT);
		OnFwd(OUT_B+OUT_C);
		until(SENSOR_2<=lightstronge);
		Off(OUT_B);
		until(SENSOR_3<=lightstronge);
		OnFwd(OUT_B+OUT_C);
		Wait(34);
		Off(OUT_B+OUT_C);
		OnFwd(OUT_A);
		Wait(80);
		Off(OUT_A);
		OnRev(OUT_B+OUT_C);
		Wait(20);
		OnFwd(OUT_B);
		Wait(13);
		Off(OUT_A+OUT_B+OUT_C);
		Wait(200);
		OnFwd(OUT_A);
		Wait(80);
		OnRev(OUT_A);
		Wait(50);
		Off(OUT_A+OUT_B+OUT_C);
 }



***ゴールへ向かうロボ [#n5115790]
 #define lightstronge 40
 int trasetime;
 void linetrase(){
	SetSensor(SENSOR_3,SENSOR_TOUCH);
	SetSensor(SENSOR_2,SENSOR_LIGHT);
	SetSensor(SENSOR_1,SENSOR_LIGHT);
       ClearTimer(0);
	while(Timer(0)<=trasetime){
		while(SENSOR_2>=lightstronge&&SENSOR_1>=lightstronge){
			OnFwd(OUT_B+OUT_A);
		}
		while(SENSOR_2<=lightstronge&&SENSOR_1>=lightstronge){
			OnFwd(OUT_A);
			Off(OUT_B);
		}
		while(SENSOR_2>=lightstronge&&SENSOR_1<=lightstronge){
			OnFwd(OUT_B);
			Off(OUT_A);
		}
		if(SENSOR_2<=lightstronge&&SENSOR_1<=lightstronge){
			break;
		}
	}
 }
 task main(){
	trasetime=1000;
	SetSensor(SENSOR_3,SENSOR_TOUCH);
	SetSensor(SENSOR_2,SENSOR_LIGHT);
	SetSensor(SENSOR_1,SENSOR_LIGHT);
		Off(OUT_A+OUT_B+OUT_C);
		OnFwd(OUT_A+OUT_B);
		Wait(100);
		OnRev(OUT_A);
		Wait(44);
		OnFwd(OUT_A);
		Wait(40);
		Off(OUT_A+OUT_B+OUT_C);
		Wait(500);
		OnRev(OUT_A+OUT_B);
		Wait(40);
		OnFwd(OUT_A);
		until(SENSOR_2<=lightstronge);
		linetrase();
		trasetime=Timer(0);
		OnRev(OUT_B+OUT_A);
		Wait(55);
		OnFwd(OUT_A);
		Wait(15);
		Off(OUT_A+OUT_B);
		Wait(25);
		SetPower(OUT_C,3);
		OnFwd(OUT_C);
		Wait(30);
		Off(OUT_C);
		Wait(10);
		OnRev(OUT_C);
		Wait(20);
		Off(OUT_A+OUT_B+OUT_C);
		}



*感想 [#r8384a2e]


**よろしかったらコメントを [#pad0b317]
#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS