-----
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/ロボコン/l.jpg);   &ref(2007b/A5/ロボコン/n.jpg); &ref(2007b/A5/ロボコン/m.jpg);
~
~&ref(2007b/A5/ロボコン/i.jpg);     &ref(2007b/A5/ロボコン/j.jpg); 
~障害壁の幅は10センチである。この幅を通り抜けられるように写真のようにモータの位置をずらし、極限まで車体の幅を狭めた。また初号機にはタッチセンサが搭載されていたが、障害壁を通り抜けられるようにしたためにタッチセンサをつけるスペースがなくなってしまい、時間でアームが作動する形になった。ボールをゴールに置く機構は初号機とほぼ同じ。初号機はアームでローラーを押し出していた。今回はボールをしゃくり上げてボールを押し出す形にした。しゃくり上げる際のアームのパワープログラムは以下の通りである。
 task main(){
 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_B,3);       //枠に向かってボールを飛ばす
  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); 

~最初の写真を見てもらいたい。1のギヤがある。ギヤが矢印の方向に回転することが写真からわかるだろう。そして下につながるアームが締まり、ボールをつかむ。
次の写真で2のギヤがボールをつかむことで回転しなくなる。そうすると2のギヤが1のギヤが止まることによって逆回転をしだし、ボールを持っているアームが持ち上がっていくのである。そして最後の写真のより、マシンはボールをつかんだ後、一回転しBの位置でボールを受け渡す。そしてもう一台のマシンは受け渡されたボールをAのように運ぶのである。

~ &ref(2007b/A5/ロボコン/roo2.PNG);&ref(2007b/A5/ロボコン/p.jpg); 
***工夫 [#qbad6fef]

今回はロボット1つにつきモーターを3つ使うことにしたのだが当初、正確なライントレースを行うため移動にモーターを2つ使う事にした。そのためボールを持ち上げ運ぶという動作をモーター1つでやらなくてはならなくなった。そこで先生に以前見せていただいた缶を持ち上げるロボットを参考にこの機構を作りました。しかしこのアーム自身の重さにボールの重さが加わるとギアが耐えられなくなるためにギア比の調整が必要になり1番小さいギアと1番大きいギアを組み合わせた。
***苦労 [#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]
~&ref(2007b/A5/ロボコン/h.jpg); 
 #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]
最初の本番ではボールを入れた班は僕らの班だけだったので1位だった。ボールを一個入れるまでの秒数は25秒。次のリターンマッチで逆転されて1点差で2位となってしまった。しかし本番で2台のロボットがコンビネーションを発揮し、三角枠に入れたことに満足している。ボールを枠にいれる秒数の時間の調整には苦労した。モーターのパワーを1あげたり、動作時間を0.01秒ずらしてみたり、様々なパターンを試した。コンマ何秒の調整をしている時が一番楽しかったかもしれない。  林
最初の本番ではボールを入れた班は僕らの班だけだったので1位だった。ボールを一個入れるまでの秒数は25秒。次のリターンマッチで逆転されて1点差で2位となってしまった。しかし本番で2台のロボットがコンビネーションを発揮し、三角枠に入れたことに満足している。ボールを枠にいれる秒数の時間の調整には苦労した。モーターのパワーを1あげたり、動作時間を0.01秒ずらしてみたり、様々なパターンを試した。コンマ何秒の調整をしている時が一番楽しかったかもしれない。  りんた

最初は全くイメージがわかず「このレゴだけでできんのか?」と思っていたが、なんとかなるものなんだなあ、としみじみ思う。
機体製作の段階で板垣がものすごく頑張って作ってくれなかったら……
ボールシュートのやり方も林が考えてくれなかったら……
きっとできてなかったと思う。
二人に感謝なのですよ!みぃー

ただ、時間が無くてボール一個を入れられるようにするだけしかできなかった。もっと早く準備していれば全部できたかもしれないと思うと少し心残りではある。そして私はこう言いたいのでしょう。

何事も計画的にね!   伏儀

今回は機体作りに本当に苦労した…。どうやってボールを認識させるのか、つかんだ後どうするのか、また強度的にどう強化するのがいいのかなどほぼ1からの作成だった。またボールを受け取る側のロボットもぎりぎりになってほとんどまるまるの変更をたのまれ大変だった。しかしプログラミングの協力もありとりあえず1個を完全に運ぶ事ができるようになったのは嬉しいし誇りでもある。

ただやはり2個3個と取れるようなロボットにしたかった。   ガキ

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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS