2019a/Member 目次
ピンポン玉または青と赤のボールを運搬して、所定の容器の中に入れる。
フィールドの説明
基本ルール
基本得点の計算方法
技術点の計算方法
容器の中のボールを入れるロボットと置いてあるボールを入れるロボットに分けて作りました.
前のアームで容器をつかめるようにした.
容器を持ち上げたとき.
容器をさらに上げてゴールへシュートした.
アームを下げて輪ゴムでボールをキャッチできるようにした,
ボールをキャッチしたとき.
アームを挙げて上の棒で押し出してシュートするようにした.
#define RUN_TIME 610 #define power(s) SetPower(OUT_B,s); #define STEP 5 #define turn OnFwd(OUT_A);OnRev(OUT_C);Wait(148);Off(OUT_AC); #define turn_left OnFwd(OUT_C);OnRev(OUT_A);Wait(120);Off(OUT_AC);
sub tores() { SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); while ( FastTimer(0) <= RUN_TIME ) { if ( 48 < SENSOR_2 ){ OnFwd(OUT_A); Off(OUT_C); //白なら右へ } else if (45 <SENSOR_2 < 49) { Off(OUT_A); OnFwd(OUT_C); //灰色なら左へ } else { OnRev(OUT_A);OnFwd(OUT_C); //黒なら左へ旋回 } } }
sub down() { OnFwd(OUT_B); power(0); Wait(50); Off(OUT_B); Wait(100); }
sub up1() { OnRev(OUT_B); power(0); Wait(30); Off(OUT_B); Wait(100); }
sub throw() { OnFwd(OUT_B); power(0); Wait(80); //アームをゆっくりさげる Off(OUT_B); OnRev(OUT_B); Wait(50); //アームを素早くあげる Off(OUT_B); }
task main() { OnFwd(OUT_AC); //地点Bまで前進 Wait(100); tores(); //BからCまでのライントレース turn; //ピンポン玉の入った容器のある方に向けて右に90度旋回 OnRev(OUT_AC); //少し後退してアームが容器に当たらないようにスペースをとる Wait(120); Off(OUT_AC); down(); //アームをおろす OnFwd(OUT_AC); //前進してアームの間に容器を挟む Wait(130); Off(OUT_AC); up1(); //容器を持ち上げる(アームをあげる) OnRev(OUT_AC); //そのまま後退して位置調整 Wait(415); turn_left; //左に90度旋回 OnRev(OUT_AC); //後退 Wait(140); Off(OUT_AC); throw(); //運んでいた容器からピンポン玉を取り出し、別容器に移す }
#define RUN_TIME 700 #define turn OnFwd(OUT_A);OnRev(OUT_C); #define turn2 OnFwd(OUT_C);OnRev(OUT_A); #define go OnFwd(OUT_AC); #define power(s) SetPower(OUT_B,s); //モータのパワーをsにする
sub down() { OnRev(OUT_B); power(2); Wait(50); Off(OUT_B); }
sub up() { OnFwd(OUT_B); power(1); Wait(50); Off(OUT_B); }
sub up2() { OnFwd(OUT_B); power(2); Wait(20); Off(OUT_B); }
task main() { go;Wait(110);Off(OUT_AC); //A地点を出発して旋回する位置まで直進 turn2;Wait(70);Off(OUT_AC); //左に90度旋回 go;Wait(210);Off(OUT_AC); //K′地点まで直進 turn;Wait(70);Off(OUT_AC); //右に90度旋回 go;Wait(30);Off(OUT_AC); //L′地点まで直進 down();Wait(30); //ピンポン玉を掴む(アームをさげる) up();Wait(30); //ピンポン玉を掴んで保持しながらアームをあげる turn2;Wait(70);Off(OUT_AC); //左に90度旋回 go;Wait(10);Off(OUT_AC); //前進して容器に近づく up2();Wait(30); //ピンポン玉を押し出して容器にピンポン玉を入れる OnRev(OUT_AC);Wait(1000);Off(OUT_AC); //後退してコースから外れる }
ロボット1のほうは電池を変えて角度が変わってできなかった. ロボット2のほうは輪ゴムのところがボールに当たったがうまく取れなかった.
このゼミでdefineやサブルーチンなどを使ってロボコンに挑戦したが思ったようにうまくいかず残念だった.今度やる機会があったらロボットとプログラムを改良してうまくいくようにしたい.