*ロボット本体の説明 [#p47131b1] 出力端子Aで左のタイヤ、Cで右のタイヤを操作する。またBでアームの操作をする。入力端子2には光センサーが取り付けてある。 **アームの説明 [#xc4e9410] アームはクワガタのような形をしていて、ボールを挟むようにした。またボールを放す時に同時に シュートもできるようにしてある。 シュートもできるようにしてある。本体の後ろ側にあるモーターが回って、それによって本体下にある棒が押し出されてアームについている歯車が回転し、アームが開閉する。 #ref(./6.jpg,50%) **タイヤの説明 [#b8ff6ae9] タイヤはROBOTICS INVENTION SYSTEM 2.0の17頁にあるものを使用した。 またタイヤとコンピュータとの間には少し空間があり、アームを動かすための装置がある。 #ref(./5.jpg,40%) #ref(./7.jpg,40%) *プログラムの説明 [#zeff2aa7] 今回図のCからAへ向かうプログラムを作成した。 #ref(./2015a-mission2.png,50%) そのプログラムは下記のとおりである。 またこのプログラムは黒線の左側をライントレースするプログラムである。 定義の説明はプログラム内に、task mainの説明はプログラムの下に示した。 #define THRESHOLD 45 #define set_power_h SetPower(OUT_AC,7); #define set_power_l SetPower(OUT_AC,3); #define go_forward OnFwd(OUT_AC); #define turn_right_w set_power_l;OnFwd(OUT_A);Off(OUT_C); //右旋回 #define turn_right_s set_power_h;OnFwd(OUT_A);OnRev(OUT_C); //右折 #define turn_left_w set_power_l;OnFwd(OUT_C);Off(OUT_A); //左旋回 #define turn_left_s set_power_h;OnFwd(OUT_C);OnRev(OUT_A); //左折 #define STEP 1 #define hasamu OnFwd(OUT_B);Wait(15);Off(OUT_B); //ボールを挟む動作 #define hanasu OnRev(OUT_B);Wait(15);Off(OUT_B); //ボールを放しシュートする動作 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); int m = 0; int n = 0; int time = 6; while (m < 5) { if (m == 1) { hasamu;m++; } else if (m == 2) { time -= 1;m++;} else { while (n < time) { //指定された回数turn_left_sしたら交差点判断。 if (SENSOR_2 < THRESHOLD-5) { turn_left_s;n++; } else { if (SENSOR_2 < THRESHOLD-2) { turn_left_w; } else if (SENSOR_2 < THRESHOLD+4) { go_forward; } else if (SENSOR_2 < THRESHOLD+6) { turn_right_w; } else { turn_right_s; } n = 0; } Wait(STEP); } Off(OUT_AC);Wait(200); turn_right_s; Wait(10); go_forward;Wait(10);//交差点判断後、方向修正して交差点を渡る。 n = 0;m ++; }} Off(OUT_AC); hanasu; } **task mainの説明 [#g3e068d4] 変数mは次に何をすればいいのかの判断に使われる。 mは交差点判断したとき、挟む動作をしたときに1ずつプラスされるようになっている。 mによって交差点Qを判断した後に挟む動作をし、その後ライントレースに戻ることができ、最後のシュートするタイミングも間違えることがなくなる。 変数nは交差点判断に使われる。交差点Qまでのカーブは急であるため、交差点と判断することがある。そのため交差点と判断するまでの時間を延ばしてある。しかしそのままだとT字路Pで交差点判断をしなくなるのでその時間を短くしてある。その時間調節は変数timeによって行われ、タイミングは変数mに依存する。 T字路Pで右折するのは、交差点判断した後ライントレースに戻った際、白なら右折し続けろ(else {turn_right_s;},34行目)という指示があるからである。 *反省 [#xe4174cb] 今回はロボット本体は簡単であったが、プログラムの調節が難しかった。このプログラムはコースページにあるものを参考に作ったがこのようなプログラムを1から作るのは非常に困難であると思うので、まだまだプログラムについて学びたいと考えた。 この課題期間に一回授業を欠席してしまったため、事前に伝えてはあったものの班員に迷惑をかけてしまった。今後は欠席しないようにしたい。