輸送ロボット | |
・メインの輸送ロボット ・缶をスタートからゴールまで運ぶ ・四角形のアームで缶を包み込む ・ライトセンサーを3つ持っている、これにより正確にラインをトレースできる ・この3つの光センサーの使い方に注目 |
輸送ロボット | |||
・アームとタイヤが接触することを防止するために急遽パーツを取り付けた ・ギヤ比は通常のドライブベースと同じ ・アームが缶の重さに負けないようにしっかりと装着した ・これ一台で缶を運ぶ ・ライトセンサーを3つ持っている、これにより正確にラインをトレースできる | |||
2台並んで | 裏 | 横 | 前 |
#define light 35 #define light2 38 #define straight OnRev(OUT_A + OUT_C); #define buck_turn OnFwd(OUT_A + OUT_C); #define right_turn OnRev(OUT_A);OnFwd(OUT_C); #define left_turn OnRev(OUT_C);OnFwd(OUT_A); #define right OnRev(OUT_A);Off(OUT_C); #define buck_right OnFwd(OUT_C);Off(OUT_A); #define left OnRev(OUT_C);Off(OUT_A); #define buck_left OnFwd(OUT_A);Off(OUT_C); #define off Off(OUT_A + OUT_C); #define up OnRev(OUT_B); #define down OnFwd(OUT_B); #define Stop Off(OUT_B); int count = 0; int count2 = 0; int timer = 0; int cm_per_s = 0; int metel = 0; int circuit = 0; task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while(1){ while(count < 2){ if((SENSOR_1 > light) && (SENSOR_2 > light) && (SENSOR_3 > light)){ straight; }else if((SENSOR_1 <= light) && (SENSOR_2 > light) && (SENSOR_3 > light)){ straight; }else if((SENSOR_1 <= light) && (SENSOR_2 <= light) && (SENSOR_3 > light)){ left; }else if((SENSOR_1 > light) && (SENSOR_2 <= light) && (SENSOR_3 > light)){ left_turn; }else if((SENSOR_1 <= light) && (SENSOR_2 > light) && (SENSOR_3 <= light)){ right; }else if((SENSOR_1 > light) && (SENSOR_2 > light) && (SENSOR_3 <= light)){ right_turn; }else if((SENSOR_2 <= light2) && (SENSOR_3 <= light2)){ count++; Wait(10); switch(count){ case 1: Wait(10); straight; ClearTimer(0); break; case 2: timer = FastTimer(0); cm_per_s = 25 / timer; metel = 8 / cm_per_s; circuit = (32 / cm_per_s) * 2 - 10; Wait(metel); off; Wait(20); right_turn; Wait(circuit); off; break; } } } straight; Wait((40 / cm_per_s) * 3); off; Wait(20); left_turn; Wait(circuit); off; Wait(20); buck_turn; Wait((25 / cm_per_s) * 3); off; Wait(20); down; Wait(70); Stop; Wait(20); straight; Wait((25 / cm_per_s) * 3); off; Wait(20); left_turn; Wait(circuit); off; Wait(20); straight; Wait((40 / cm_per_s) * 3); off; Wait(20); left_turn; Wait(circuit); off; Wait(20); straight; Wait((25 / cm_per_s) * 3); off; Wait(20); right; Wait(20); off; Wait(20); straight; Wait((30 / cm_per_s) * 3); off; Wait(20); right; Wait(20); off; Wait(20); straight; Wait((30 / cm_per_s) * 3); off; Wait(20); right; Wait(20); off; Wait(20); straight; Wait((25 / cm_per_s) * 3); off; Wait(20); left_turn; Wait(circuit); off; Wait(20); straight; Wait((40 / cm_per_s) * 3); off; Wait(20); right_turn; Wait((25 / cm_per_s) * 3); } }