- 追加された行はこの色です。
- 削除された行はこの色です。
[[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]