サッカーゲーム!! ディフェンス(空缶)をどける→テニスボールをゴールにシュートする。 ちなみにうちの班はロボットは一体だけ。
Ku☆ra 様&keisuke&イーノック&mika
お名前:ハウルのブロウクンハウス(Ks)
このロボットの課題達成方法はまずボールを3つ一度に取り入れて それを持っていき円内から発射するというものである。確実に3つ入れるのと 少々賭けでも3つ投げた方が良いのではということでこの手法にした。 実際に3つはできなかったが。
設計上同時にボールを3つ保持しなくてはならず、ゆえにそのスペースが必要である。 ということでその内部に収納。これはそのボールが外に 飛び出さないようにするための壁である
ここが壁にぶつかることでボールが木の板はさまれた部分に ボールの取り入れ口が来る。少々もろいのが難点。パーツが足りなかった。 無駄なパーツが多かったのかもと思う。
長いアームを本体に装着している。少々大きすぎたために本体が 多少傾いてしまった。
アームそのものにもモーターを装着している。このアームそのものを伸ばして そこで先の部分を回転することで三つ目のボールを回収するようになっている
予定ではボールを3つ一気に回収して本体内部に収納する。多少本体が 傾いているために発射口に勝手に転がっていく。
本体の傾きによりボールは勝手にここに流れ込んでくる。
このように台そのものを上げることで発射する。押し出したりするタイプでは なく、レールの上を転がすタイプになっており正面に正確に発射できる。
#define THRESHOLD 40 #define RUN_TIME 10 #define BALL_CATCH 1 #define END_CATCH 2 #define Turn_R(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); #define Turn_L(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); #define GO_ST(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //定義付け
task main() { SetSensor(SENSOR_3, SENSOR_TOUCH); SetSensor(SENSOR_2, SENSOR_LIGHT); SetSensor(SENSOR_1, SENSOR_LIGHT); //センサーセット SetPower(OUT_C,7);SetPower(OUT_A,7);
OnFwd(OUT_A+OUT_C);Wait(110);Off(OUT_A+OUT_C); Turn_R(60); //円から出る
while(SENSOR_3 == 0) //壁に当たるまでライントレース { if (SENSOR_1 > THRESHOLD && SENSOR_2 > THRESHOLD) {OnFwd(OUT_A+OUT_C);Wait(20);Float(OUT_A+OUT_C);} else if(SENSOR_1 < THRESHOLD && SENSOR_2 > THRESHOLD) {OnFwd(OUT_C);Off(OUT_A);} else if(SENSOR_1 > THRESHOLD && SENSOR_2 < THRESHOLD) {OnFwd(OUT_A);Off(OUT_C);} else if (SENSOR_1 < THRESHOLD && SENSOR_2 < THRESHOLD) {OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);} } Off(OUT_A+OUT_C);
OnFwd(OUT_C+OUT_A);Wait(40);Float(OUT_A+OUT_C); //微調整 SendMessage(BALL_CATCH); //アームにメッセージを ClearMessage();
until (Message() == END_CATCH); //メッセージをもらったら OnRev(OUT_A+OUT_C);Wait(200); Off(OUT_A+OUT_C); Turn_L(60); Wait(50); OnRev(OUT_A+OUT_C);Wait(180); Off(OUT_A+OUT_C); Wait(50); Turn_R(90); Wait(50); GO_ST(290); Wait(50); Turn_R(50); GO_ST(50); Turn_L(50); //無理やり缶をどかして円の中へ
repeat(3){ OnFwd(OUT_B);Wait(20); Off(OUT_B); OnRev(OUT_B);Wait(20); Off(OUT_B); Turn_R(30); Turn_L(30); GO_ST(30); OnFwd(OUT_A+OUT_C);Wait(30); Off(OUT_C+OUT_A); Wait(100); } //シュート及びゆさぶり(ボールが詰まらないように) }
#define RUN_TIME 40 #define BALL_CATCH 1 #define END_CATCH 2 #define Turn_R(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); #define Turn_L(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); #define GO_ST(t) OnRev(OUT_A+OUT_C);
task main () { ClearMessage(); until (Message() == BALL_CATCH); //メッセージを受け取ったら
PlaySound(SOUND_UP); //サウンドアップ!! OnFwd(OUT_C); Wait(100); Off(OUT_C);//台座を下ろす SetPower(OUT_B,7); OnFwd(OUT_B); Wait(300); Off(OUT_B);//アームを出す SetPower(OUT_A,7); OnFwd(OUT_A); Wait(400); Off(OUT_A); //ハンド下ろす OnRev(OUT_B); Wait(300); Off(OUT_B+OUT_A); OnRev(OUT_C); Wait(120); Off(OUT_C);//台座を上げる SendMessage(END_CATCH); }
一体にしたこと。光センサーでライントレースした後、一体の中で通信している。一気に3個ボールを取ることをあきらめて2個とることにした。ボールをロボット本体に取り込むとき、方向転回しないで、横から取り込むようにしたこと。取り込んだボールが落ちないようにいろいろストッパーをつけてる。ボールを一個だけ発射するために2個目のボールはとまるようになっている。ただ2個目のボールをちゃんと発射位置に持っていくのがむずかしかった。1個目は割と簡単に横から取り込んだ後、ちゃんと方向転換して発射位置にいくんやけど、2個目を取り込むとき、アームが無理しすぎて本体がよくバキバキしてしまった。微調整の結果いろいろな機能をつけれたけど、その分ぼろぼろパーツがよく取れて、もろくなってしまった。あと、アームのモーターが重くて、だんだんかたむいてくるのが嫌やった。本体がめっちゃ大きいから、ちょっとでもズレたら何かに当たって崩れてしまうんがめっちゃ難点。
とりあえず本体の設計はかなり苦労した。コースの構造を何度も見て考えたが ライントレースをするにしてもちょっと長さとかが足りないのではと思い一個一個 運ぶのではなく3つ一気にした。ボールを一度に3つというのが無理な 発想だったのかもしれないと思ってる。ゴール探しに関してもランプ二つというのが 自分には使い方がわからなかった。二つだから誤認しないのかなどと考え続けて 結局はゴリ押しという結果で美しくなかった。
以上プログラミングに関しても苦労したが最終課題は難しく今までの課題の中で 一番苦労したものの一番楽しめた。
今回の課題ではロボットの作製に関してほとんど手伝えなかったのでチームに迷惑をかけてしまいました。
プログラムに関しては少し助力できました。
大変だったのはボールと取り込むプログラムで時間調節が大変でした。
今回の課題はとても大変なものでたが、最後の終わった時の達成感はとても良かったです。
最終課題。さてまずはじめに…
今回の課題について僕はほとんど関与できてません。当然ながら、半戦力外通告です。
構想を考えるだけはしましたが、アームを横につける点、試作段階では円外にありえないぐらいはみ出して今の段階に至ります。アームに半数以上のモーターを利用した、サリー級の贅沢設計になっています。
贅沢をしたい性格なので、半ハッピーですね。
最終課題。難しかった。班の方々のアイディアに感動!!っっっ 一体だけのロボットはロボコン参加ロボの中で珍しいほうやったからちょっと心配やったけど、独創てきやなぁとおもった。過去の先輩の課題にくらべたら、一見簡単そうに見える課題やのに、めっちゃ難しかった。私は農学部なので、これから先プログラミングとかする機会はあんましないから、いい経験やったなぁって思う。