CENTER:&size(35){ロボコン}; CENTER:〜缶を動かすロボットたち〜~ 結局今までもほとんど誰もページを作らず、仕方なく哀れな少年が作製したページ。 目次 #contents *ロボコン概要 [#p48831b4] 詳細はこちら[[2006a/ロボコン]] **基本ルール [#b1385929] -所定の時間内に缶を所定の場所に運ぶ。 -競技時間は3分とする。ただし1個缶を運ぶごとに時間を30秒延長する。(暫定) -缶を同時にいくつ運んでもよい。 -スタート時のロボットは2体2体または1体とする(スタート後はいくつに分裂してもかまわない)。 -フィールド中央の所定の場所からスタートすること(接地部分が枠内に入っていればよい)。 -開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。 -競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 -途中でうまく動かなくなった場合、1回限り再スタートすることができる。 -すべてのチームの競技が一通り終った後、再チャレンジを認めるか(?) スタート時に障害物の缶に触れていてはいけない。 *完成までの長い長い道のり [#p1337d68] **運び方について [#lc5d3760] 最初に、缶の運び方について討論した。やはり個性的なチームなのか、早速ゴールを乗り越える案が出された。~ しかしほかの案がでなかったため&size(10){(というか押し出されて)};これでいこうということになった。~ これが苦悩の始まりであった… **…どうする? [#x66d5a8c] 乗り越え案は承認されたものの、肝心の「缶の上げ方」については凍結状態であった。空の缶ならいいのだが、ロボコンのページ.を見てわかる通り、中身入りである。 そんな重いものを30センチも(ゴールの高さ)上げることができるのだろうか?最初の週はそんなこんなで終わってしまった。 **試行錯誤の嵐 [#dae5539b] どうやって缶を向こう側までもっていくか、暫しの間そこに時間をくった。エレベーターみたいに持ち上げるか?缶を押し上げてみるか?他の班はみんなプログラミングに時間を費やしているが、僕らの班はマシーンが命なので、なかなかできなかった。 終いには缶を投げることまで視野に入れて考えていた。誰もが壁を乗り越えるは考えている以上に難しいと再認識した。議論を続けていくうちに、やはりエレベーター方式が一番じゃないかという結論に達した。 **勘違い [#ec0b3e2c] 先に提案されたエレベーター方式だが、概略はこのようなものである。~ 二体のロボットによるゴール乗り越え作戦~ +受け身ロボットが最初に始動。ゴール前まで移動し、待機。 +その後運搬ロボットが始動。缶の前まで移動し、缶を本体に取り込む。 +缶をロボット頂上まで移動。缶の後ろの壁とゴールの上にレールを敷き、缶を転がす。 +受け身ロボットが缶を受け止め、ゴールイン~ といった具合である。~ しかし、ロボコン参加者ならお分かりであろうが少し勘違いをしていた。私はてっきり缶の後ろに高い壁があると思っていた。(その頃は文章だけで、実物は用意されていなかったため)~ 実物を見た時のショックは忘れられないものである。このことにより、エレベーター案は闇の中へと姿を消した。 **三人よれば文殊の知恵 [#hed0d993] エレベーター案が駄目になったので、別の案はないかと討論した。~ エレベーターが駄目ならエスカレーターだ。そんな勢いで出てきたエスカレーター案だが、一番可能性が高いのではないか?ということで承認された。 **言うのは易し、作るの難し [#t8b02fa1] エスカレーターのように缶を運ぶためには今までにない複雑でパワフルなロボットが必要になる。行く手にはパーツの数や組み立てのアイデア、それに缶の取り込み方、様々な問題が立ちふさ0がっていた。~ そんなことで、この講義内ではあまり進展は無かった。 **化け物誕生 [#ad09884e] この案も駄目なのかなと考えながら望んだ次の週の講義。開発主任が見た目にも凄いものを持ってきた。~ それがこちら↓~ ~ ~ ~ これを見たときの第一印象は「何じゃこりゃ?」といった感じでした。(写真では分かりませんが、非常に縦長です)~ 話によるとなんでもテスト勉強もせず、この棒に時間を費やしたそうな。&size(9){私はテストが気になり、それどころではありませんでした}~ とまぁ、テストを犠牲にして完成したこの棒ですが、いささか乗り越え案に希望の光を照らしてくれました。~ この棒は可動部と固定部(棒)に分かれており、固定部の溝には一本の長い軸が埋め込まれています。もちろん一本の軸なのでモーターで回転させることができます。途中途中にスクリューが入っていて、軸が回転すると可動部の接合場所にあたるギザギザのパーツを徐々に持ち上げていくという構造です。&size(9){私では到底思いつかないようなものです…} なんと、実際に中身入りの缶が上へと持ち上げれるのです。これでもうロボコンは楽勝だな な〜んて事を心の片隅で考えていた哀れな少年です。 *プログラム [#a9a34c0d] **車輪系NQC [#d710825c] int MOGU=2; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); Wait(100); OnFwd(OUT_B); ClearMessage(); until(Message()!=0); if(Message()==3) { Off(OUT_B); } while(MOGU==2||1) { ClearTimer(0); if(FastTimer(0)<300); { if(SENSOR_1&&SENSOR_3>40) { OnFwd(OUT_A+OUT_C); } } if(FastTimer(0)>300); { if(SENSOR_1&&SENSOR_3>40) { OnFwd(OUT_A+OUT_C); } if(SENSOR_1&&SENSOR_3<40) { OnRev(OUT_C);Wait(90);OnFwd(OUT_C);MOGU-1; } } } OnFwd(OUT_A+OUT_C); Wait(300); SendMessage(1); Wait(100); Off(OUT_A+OUT_C); ClearMessage(); until(Message()!=0); if(Message()==2) { OnRev(OUT_A+OUT_C); Wait(100); OnFwd(OUT_A); Wait(90); OnFwd(OUT_C); Wait(60); OnRev(OUT_A); Wait(90); OnFwd(OUT_A); Wait(100); SendMessage(1); Wait(50); Off(OUT_A+OUT_C); } } **支柱系NQC [#m401a831] int UP_TIME=0; task main() { SetSensor(SENSOR_2,SENSOR_TOUCH); until(SENSOR_2!=0); if(SENSOR_2==1) { SendMessage(3);Wait(50); } while(1) { ClearMessage(); until(Message()!=0); if(Message()==1); { ClearTimer(0); OnFwd(OUT_A+OUT_B); if(SENSOR_1==100) { FastTimer(0)=UP_TIME; Off(OUT_A); OnFwd(OUT_B);Wait(500); SendMessage(2); OnRev(OUT_A);Wait(UP_TIME); Off(OUT_A); } } } }