[[2007a/MemberOnly/進行状況A]] #counter #hr CENTER:&size(25){[[ロボコン>2007a/ロボコン]]:目指せロボットコンテスト!! }; #hr //CENTER:&size(25){[[''ロボコン:'' >2007a/ロボコン]] CENTER:頑張った人たち→&color(green,){ギョーザ};、アンゼリカ、たけぽん、あつみ -目次 #contents ------- * 課題:紙パック収集・積み上げロボット [#fafb8345] 紙パックを収集して所定の位置にできるだけ高く積み上げる &ref(2007a/ロボコン/robocon-2007a-field.gif,100%,ロボコンのフィールド平面図); :フィールドの説明 | --フィールドは約160cm×110cm --運搬する500mlの紙パック(以下単に紙パックと呼ぶ)は約7cm×7cm×10.3cm --紙パックはすべての面に白あるいは緑色の画用紙がはられている --紙パックは(目的地の円周上を除く)各交差点に立てて配置されている --目的地の円を囲む正方形の4隅には緑の紙パックが配置されている --1つの格子はの境界の黒線の芯々で20cm平方の正方形である --黒い線の太さは約25mm*ルール説明 [#icd0cc3f] 詳しい説明はこちらをどうぞ→ &size(25){[[ロボコンルール>2007a/ロボコン]]:}; **基本ルール [#d8187c63] //&size(25){[[''ロボコンルール'' >2007a/ロボコン]] --所定の時間内に紙パックを所定の場所に運んで積み上げる。 --競技時間は2分30秒(仮)、あるいはリタイアするまでとする。 ただし積み上げた紙パックからロボットが離れようとしている動作中に制限時間が来てしまった時には、その作が終了するまで、とする。 2分経過した時点で10個以上入っていた場合には30秒延長する(仮)。 --どこからスタートしてもよい。 --スタート時のロボットは3個を越えないこと (スタート後はいくつに分裂してもかまわない)。 --開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。 --競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 --途中でうまく動かなくなった場合、1回限り再スタートすることができる。 --積んだ紙パックの底面は水平でなければならない触れている場合は、その紙パックおよびその紙パックに触れている紙パック、さらにその紙パックに触れている紙パック、・・・、は加算しない。 --半分以上枠はみ出した紙パックは得点に加算しない。 --枠内からはみ出した部分が半分以下の場合には、本来の点数の 1/2 とする。1点未満は切捨て。 //--すべてのチームの競技が一通り終った後、再チャレンジを認めるか(?) :基本得点の計算方法 --紙パックを一個運んで積み上げると、白パックの場合 --- 1層目で横置き:1点、1層目で縦置き:2点 --- 2層目で横置き:2点、2層目で縦置き:4点 --- 3層目で横置き:4点、3層目で縦置き:8点 --- 4層目で横置き:8点、4層目で縦置き:16点 --- ..... 以下同様 --緑パックの場合はすべて白パックの2倍 :技術点の計算方法| 以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチーム(9チーム+TAor教員)が20点満点で採点し、その平均点を求める。 :得点の目安 --紙パックを集める動作 (4点) --紙パックを積み上げる動作 (4点) --2台以上のロボット、あるいは単体のロボットの場合は2台のRCXの連携の良さ(4点) --自立型のロボットとしての形や動作の美しさ、斬新さ(4点) --その他 (4点) *このルールから高得点を狙うためには [#r4fadc37] --まず時間が少ないことが問題であり、たくさん真ん中に持ってきて、ピラミットのように積み上げるということも考えたが、それではとても時間が足りないということである。そのため高得点を狙うためには、&color(blue,){いかにたくさんパックを集める};か、&color(red,){いかにパックをたくさん積む};か、という2つの戦法に限られてくる。 --パックをたくさん集めることの長所は、簡単かつ安全で失敗することが少ないということである。短所はさほど高得点が狙えないうえにロボットの芸術性が見せつけにくいところである。 --パックをたくさん積むことの長所は、とにかく高得点が狙え、ロボットの芸術性が見られやすく、他の班からの評価も良くなりやすいことである。短所はとにかく失敗しやすく、危険で、もし失敗すると点数が0になりかねないことである。 --まとめると、&color(blue,){ローリスクローリターンの集めることを重視する};か、&color(red,){ハイリスクハイリターンの積むことを重視する};か、という2択であり、以下の説明を見てもらうとわかると思うが、うちの班ではどちらかというと集めることを重視していることがわかると思う。 *ロボット紹介 [#e1d23fcc] ***|&size(30){''メインロボット''};→牛乳パックを上げる [#g795fae0] |>|CENTER:BGCOLOR(orange):&ref(sd 024.JPG);&ref(sd 029.JPG);| **プログラム [#c154473e] #define Do 523 #define Re 587 #define Mi 659 #define Fa 698 #define Sol 784 #define Ra 440 #define Shi 494 #define DO 1047 task play_music() // doreminouta 音楽をつける { while (true) { PlayTone(Do,25); Wait(30); PlayTone(Re, 5); Wait(10); PlayTone(Mi,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Mi,10); Wait(15); PlayTone(Do,10); Wait(15); PlayTone(Mi,20); Wait(25); PlayTone(Re,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Re, 5); Wait(10); PlayTone(Fa,40); Wait(45); PlayTone(Mi,25); Wait(30); PlayTone(Fa, 5); Wait(10); PlayTone(Sol,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Sol,10); Wait(15); PlayTone(Mi,10); Wait(15); PlayTone(Sol,20); Wait(25); PlayTone(Fa,25); Wait(30); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Ra,40); Wait(45); PlayTone(Sol,25); Wait(30); PlayTone(Do, 5); Wait(10); PlayTone(Re, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra,40); Wait(45); PlayTone(Ra,25); Wait(30); PlayTone(Re, 5); Wait(10); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Shi,40); Wait(45); PlayTone(Shi,25); Wait(30); PlayTone(Mi, 5); Wait(10); PlayTone(Fa, 5); Wait(10); PlayTone(Sol, 5); Wait(10); PlayTone(Ra, 5); Wait(10); PlayTone(Shi, 5); Wait(10); PlayTone(DO,40); Wait(45); PlayTone(DO, 5); Wait(10); PlayTone(Shi, 5); Wait(10); PlayTone(Ra,10); Wait(15); PlayTone(Fa,10); Wait(15); PlayTone(Shi,10); Wait(15); PlayTone(Sol,10); Wait(15); PlayTone(DO,40); Wait(45); }} #define go OnRev(OUT_A); //前に進む #define back OnFwd(OUT_A);//後ろに下がる #define hand OnFwd(OUT_B);//アームを開く #define up OnFwd(OUT_C);//アームを持ち上げる task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); start play_music ; //音楽を始める while(true){ if(SENSOR_1<=42&&SENSOR_3<=40){ go ; } if(SENSOR_1>=42&&SENSOR_3>=40){ stop play_music; //音楽を止める Off(OUT_A); //モータを止める hand ; Wait(300); //3秒間開く up ; Wait(500); // 5秒間持ち上げる go ; Wait(50); Off(OUT_A); //前に進む OnRev(OUT_B); Wait(300); Off(OUT_B); //置く back ; Wait(300); Off(OUT_A); //後ろに下がる }}} **このロボットの特徴 [#oe6b6002] |>|CENTER:BGCOLOR(blue):&ref(sd 025.JPG);||&size(30){光センサーの位置が重要!}; &br;2つが適当な位置にあるため、例外なく物体を認識することが出来る&br;| |>|CENTER:BGCOLOR(yellow):&ref(sd 047.JPG);||&size(30){4つのギアを用いることにより、アームを上に上げることができる};| |>|CENTER:BGCOLOR(red):&ref(sd 048.JPG);||&size(30){アームの動作の中心となるギア}; &br;小さいギアと大きいギアの2種類を用いることによって、柔らかい動きを作ることができた&br;| &size(30){大変だった所}; -キット本体の黄色の部分の重さとアームとの部品との重さのバランスをとるのが難しかった。 -アームを上に上げるための機構を作るのが大変だった &br;→4つのキアを使うことによって、アームを上に上げるときの安定感をもたらした&br;&br;→アームの先にタイヤをつけることにより、摩擦力を上げて、パックがすべらないようにした。 **このロボの働き [#t888c88d] &ref(sd 033.JPG);&ref(sd 034.JPG);&ref(sd 036.JPG); -2つのパックを積み上げるときの動き --アームを開いて、前にあるパックをつかむ --アームを閉じて、あらかじめ置いてあるパックの上まで持ち上げて、のせる。 --アームを開いて、後ろに下がる。 ***&size(30){''サブロボット''};→牛乳パックを集める [#j35c4407] |>|CENTER:BGCOLOR(pink):&ref(sd 038.JPG);&ref(sd 039.JPG);| -サブロボの単純で明確な動きはパックをとにかくあつめて押す!ってことである。 --そのために、いらない部品やプログラムはすべてカット、シンプルな構造にしました。 --試合の時、あらかじめ、サブロボをパックが沢山おいてある所に置いて、スタートするのがポイント。 **プログラム [#j21446ad] #define Do 1047 //音楽スタート #define Re 1175 #define Mi 1319 #define Fa 1397 #define So 1568 #define Ra 1760 #define Shi 1976 #define Doo 2093 task play_music() { while (true) { PlayTone(Do,20); Wait(30); PlayTone(Re,20); Wait(30); PlayTone(Mi,20); Wait(30); PlayTone(Fa,20); Wait(30); PlayTone(So,20); Wait(30); PlayTone(Ra,20); Wait(30); PlayTone(Shi,20); Wait(60); PlayTone(Doo,20); Wait(120); }} void left(int t) //左に動く { OnRev(OUT_A); OnFwd(OUT_C); Wait(t); Off(OUT_A+OUT_C); } void right(int t) //右に動く { OnFwd(OUT_A); OnRev(OUT_C); Wait(t); Off(OUT_A+OUT_C); } void go(int t) //前に進む { OnFwd(OUT_A+OUT_C); Wait(t); Off(OUT_A+OUT_C); } void back(int t) //後ろに下がる { OnRev(OUT_A+OUT_C); Wait(t); Off(OUT_A+OUT_C); } task main() { start play_music ; //音楽を流す時間の設定 go(350); back(250); left(60); go(250); right(80); go(350); right(135); go(150); back(300); stop play_music; } **このロボットの働き [#baed10bd] &ref(sd 042.JPG);&ref(sd 043.JPG); *&size(30){結果発表!!!}; [#l466ecdf] -ロボコンの単純な点数では、大接戦のロボコンの中、一位がA8の54点、二位がA9で26点、そして我がA6は15点で三位でした。 *反省&感想 [#pe27c1f0] -ロボコンにあたって、1人の人(ギョーザさん)にほとんど任せてしまって申し訳なかった。 -ロボコンまでの準備時間の不足と試験後の疲れでまともに集中できなかった。 -やっている期間は、辛いこととか大変なことがたくさんあったけど終わってみると、楽しい授業でした。普段、教えてもらえないことを数多く学べたし、なにより協調性が豊かになったと思えます。これからも、今日まで学んだことを忘れずに学業に励んでいきたいと思います。 -普段教科書で勉強できない日本語をいっぱい聞く機会になり、留学生としては特別な時間だったと思います。ここで学んだ日本人との付き合いを大切にしこれからも日本での生活を楽しみたいと思います。 *先生、TAの方々のコメント [#r06f54b0] -ルールに関して1個づつ取り上げて吟味していくのでなければ、ロボコンの課題やルールについての説明は[[2007a/ロボコン]]にリンクを張れば十分でしょう。転載は必要ありません。 -- [[松本]] &new{2007-08-06 (月) 08:33:50}; #comment