[[2008a/A10]] *目次 [#e2dbed58] #contents *ロボコン [#n54e8583] **課題:ボール運搬ロボット † [#h7a08910] テニスボールを所定の位置に運ぶ **フィールドの説明 [#j4cd31cc] #ref(2008a/A10/ロボコン右/a.png,100%,コース) ・フィールドは約160cm×110cm ・1000mlの紙パックは約7.1cm×7.1cm×19.6cm ・ゴールの紙パックには約6cm四方の穴が2箇所開けられている ・ゴールの穴以外の部分は黒で覆われている ・フィールドの長辺の中央部におかれたゴールの紙パックの穴は上を向いている ・フィールドの短辺の中央部におかれたゴールの紙パックの穴は横を向いている ・外側の楕円の長径は128cm、短径は96cm ・内側の8の字の曲線部の曲率半径は24cmで、交差部は直交している ・黒い線の太さは約25mm **ルール † [#b16aa79b] 基本ルール ・ボールを 塔から それぞれ向きの違う棒に挟まれた状態から 運びだし、4箇所あるゴールの箱に入れる。 ・競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。 ・4隅のコーナー(半径30cmの1/4円)のいずれかからスタートする。 ・スタート時のロボットは2個を越えないこと (スタート後はいくつに分裂してもかまわない)。 ・開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。 ・競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 ・途中でうまく動かなくなった場合、1回限り再スタートすることができる。 **基本得点の計算方法 [#zfed7cac] 半分以上箱に入ったボールだけを得点の対象とする。 横から入れるゴールについてはボール1個2点、上から入れるゴールについては1個4点で計算する。ただし同じ箱に3個のボールを入れた場合には、その箱に限り点数を倍にする。 **技術点の計算方法 [#l9d95399] 以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチーム(9チーム+TAor教員)が20点満点で採点し、その平均点を求める。 得点の目安: ・ボールを取り出す動作 (3点) ・ボールを運ぶ動作 (3点) ・ボールを紙パックに押し込む動作 (3点) ・2台以上のロボット、あるいは単体のロボットの場合は2台のRCXの連携の良さ(3点) ・自立型のロボットとしての形や動作の美しさ、斬新さ(3点) ・その他 (5点) *マシンの紹介 [#mcfad3f7] **親機の役割 [#q73e8f67] ボールの確保・ボール運び・ボール収納 **子機の役割 [#k617b3ff] ボール押し出し・踊る・進路確保 *プログラム [#z0acb461] **親機のプログラム [#l1eabfad] #define turn_time1 68 #define turn_time2 136 #define go_straight(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); #define turn1(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define turn2(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define ball OnRev(OUT_B);Wait(80);Off(OUT_B); #define back(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); task main() { SetPower(OUT_A+OUT_C,7); go_straight(95); Wait(50); turn1(turn_time1); go_straight(50); Wait(300); ball; back(5); Wait(100); turn2(turn_time1); go_straight(95); turn2(turn_time1); go_straight(50); Wait(50); SetPower(OUT_B,7); OnRev(OUT_B); Wait(120); Off(OUT_B); Wait(5); OnRev(OUT_B); Wait(10); go_straight(20); Wait(60); Off(OUT_B); Wait(100); turn2(turn_time1); go_straight(95); turn2(turn_time1); go_straight(50); Wait(200); ball; back(5); Wait(100); turn2(turn_time1); go_straight(100); turn2(turn_time1); go_straight(50); Wait(50); SetPower(OUT_B,7); OnRev(OUT_B); Wait(120); Off(OUT_B); Wait(5); OnRev(OUT_B); Wait(10); go_straight(20); Wait(60); Off(OUT_B); Wait(100); turn2(turn_time1); go_straight(100); turn2(turn_time1); go_straight(50); Wait(200); ball; back(5); Wait(100); turn2(turn_time1); go_straight(100); turn1(turn_time1); go_straight(350); Wait(50); SetPower(OUT_B,7); OnRev(OUT_B); Wait(120); Off(OUT_B); Wait(5); OnRev(OUT_B); Wait(10); go_straight(20); Wait(60); Off(OUT_B); Wait(100); turn2(turn_time2); go_straight(350); turn2(turn_time1); go_straight(100); turn2(turn_time1); Wait(200); ball; back(5); Wait(100); turn2(turn_time1); go_straight(100); turn1(turn_time1); go_straight(350); Wait(50); SetPower(OUT_B,7); OnRev(OUT_B); Wait(120); Off(OUT_B); Wait(5); OnRev(OUT_B); Wait(10); go_straight(20); Wait(60); Off(OUT_B); Wait(100); turn2(turn_time2); go_straight(350); turn2(turn_time1); go_straight(100); turn2(turn_time1); } **子機のプログラム [#pec6011c] task main() { SetPower(OUT_A+OUT_C,4); OnFwd(OUT_A+OUT_C); Wait(120); Off(OUT_A+OUT_C); Wait(150); OnRev(OUT_C);OnFwd(OUT_A); Wait(43); Off(OUT_A+OUT_C); Wait(100); SetPower(OUT_A,5); OnFwd(OUT_A+OUT_C); Wait(60); Off(OUT_A+OUT_C); Wait(300); OnRev(OUT_A+OUT_C); Wait(20); Off(OUT_A+OUT_C); Wait(20); OnFwd(OUT_A+OUT_C); Wait(40); Off(OUT_A+OUT_C); Wait(20); OnRev(OUT_A+OUT_C); Wait(13); Off(OUT_A+OUT_C); Wait(20); OnFwd(OUT_A+OUT_C); Wait(40); Off(OUT_A+OUT_C); Wait(3000); OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); Wait(3000); OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); Wait(3000); OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); Wait(3000); OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); } *コード説明 [#jee9fc6a] OnRev(OUT_A)+OnFwd(OUT_C) zennsin hidari migi turn1 migi_turn turn2 hidari_turn *苦労・工夫したところ [#k382d5ea] *今後の課題・反省 [#b8fe3d93] *感想 [#lb167809] *この作品に関してのコメント [#n5e57c8c]