今回の課題はライントレースと障害物の缶を避け、所定のゴールを目指す。
私たちのマシンは当初は説明書どおりに設計をしたが、色々と試行錯誤の結果次の点を改良して設計をした。
以上の点が今回のマシンの特徴である
#define BLACK1 34 //閾値の設定 #define BLACK2 40 #define WHITE1 46 #define WHITE2 49 #define HIPOWER 5 //ハイパワーでのモーターの強さ #define LOWPOWER 2 //ローパワーでのモーターの強さ #define set_power_H SetPower(OUT_AC,HIPOWER); #define set_power_L SetPower(OUT_AC,LOWPOWER); #define go_forward set_power_H; OnFwd(OUT_AC); //直進を定義 #define turn_left1 set_power_H;\ OnFwd(OUT_C); OnRev(OUT_A); //急な右折の定義 #define turn_left0 set_power_L;\ OnFwd(OUT_C); Off(OUT_A); // //ゆるやかな右折の定義 #define turn_right0 set_power_L;\ OnFwd(OUT_A); Off(OUT_C); //ゆるやかな左折の定義 #define turn_right1 set_power_H;\ OnFwd(OUT_A); OnRev(OUT_C); //急な右折の定義 #define STEP 1 //一回の判定で進む時間を定義 #define nMAX 35 //交差点判断の基準値の定義 #define short_break Off(OUT_AC); Wait(100); #define cross_line go_forward set_power_H;\ OnFwd(OUT_AC); Wait(20); short_break; //交差点時の動きの定義 #define go_forward1 OnFwd(OUT_AC); Wait(50); #define go_back OnRev(OUT_AC); Wait(50);
ここまでで定義を定めた 次にロボットに命令する
task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(1); while (FastTimer(1) <= 1000) { if (SENSOR_2 < BLACK1) { turn_left1; } else { if (SENSOR_2 < BLACK2) { turn_left0; } else if (SENSOR_2 < WHITE1) { go_forward; } else if (SENSOR_2 < WHITE2) { turn_right0; } else { turn_right1; } Wait(STEP); } } ClearTimer(0); ClearTimer(1); while (FastTimer(1) <= 4500) { //45秒間以下の行動を続ける while (FastTimer(0) < nMAX) { if (SENSOR_2 < BLACK1) { turn_left1; } else { if (SENSOR_2 < BLACK2) { turn_left0; } else if (SENSOR_2 < WHITE1) { go_forward; } else if (SENSOR_2 < WHITE2) { turn_right0; } else { turn_right1; } ClearTimer(0); } Wait(STEP); } turn_right1; Wait(nMAX*STEP); cross_line; ClearTimer(0); } ClearTimer(0); ClearTimer(1); while (true) { if (SENSOR_2 < BLACK1) { turn_left1; } else { if (SENSOR_2 < BLACK2) { turn_left0; } else if (SENSOR_2 < WHITE1) { go_forward; } else if (SENSOR_2 < WHITE2) { turn_right0; } else { turn_right1; } Wait(STEP); } } }
結果としてライントレースはうまくできたが障害物を取り除くプログラミングは時間が足りなくできなかった。ライントレースは後輪を一つにすることで小回りがきくようになり、スムーズに動くことができた。
今回は障害物を取り除くことができなかったので今後の課題では、障害物を取り除けるプログラミングを作れるようにがんばりたい。