[[2019a/Member]] *課題 [#z632fddf] 課題については[[2019a/Mission2]]を参照。 私はAを出発しMでシュートをする方のプログラミングを試みた。 *ロボットについて [#xe9271e7] センサーの近くにアームをつけると影になってしまい、光の当たり方でロボットの動きが大きく変わってしまうので前後に分けて付けることにした。 * [#d3cf433c] #refhttp://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&pcmd=open&file=2019a-mission2.png&refer=2019a%2FMember%2Fmistral%2FMission2 AからDまでは線の左側をトレース *プログラミング [#ze0538ab] はじめに、defineを用い、右折を定義した。 そして、黒と白の境界をトレースさせるためのプログラムをサブルーチンで定義した。 センサーが黒色を感知している長さで動きを変化させるため、fasttimerとその時間を決めるためにグローバル変数を用いた。 #define t_r OnFwd(OUT_A);OnRev(OUT_C);Wait(60);Off(OUT_AC);ClearTimer(0);//90度 右折 int s; //グローバル変数 sub follow_line_left() //線の左側のトレース { while(FastTimer(0)<s) { if(SENSOR_2>42){OnFwd(OUT_A);OnRev(OUT_C);ClearTimer(0);} else if(SENSOR_2>40){OnFwd(OUT_A);ClearTimer(0);} else if(SENSOR_2>36){OnFwd(OUT_AC);ClearTimer(0);} else if(SENSOR_2>34){OnFwd(OUT_C);ClearTimer(0);} else{OnFwd(OUT_C);OnRev(OUT_A);} } } sub follow_line_right(){ while(FastTimer(0)<s) { if(SENSOR_2>42){OnFwd(OUT_C);OnRev(OUT_A);ClearTimer(0);} else if(SENSOR_2>40){OnFwd(OUT_C);ClearTimer(0);} else if(SENSOR_2>36){OnFwd(OUT_AC);ClearTimer(0);} else if(SENSOR_2>34){OnFwd(OUT_A);ClearTimer(0);} else{OnFwd(OUT_A);OnRev(OUT_C);} } } sub cross_line(){ Off(OUT_AC);Wait(100); OnFwd(OUT_AC);Wait(20); ClearTimer(0); } A~D task main() { s=22; SetSensor(SENSOR_2,SENSOR_LIGHT); ClearTimer(0); follow_line_left(); Off(OUT_AC);Wait(100); OnFwd(OUT_A);OnRev(OUT_C);Wait(40); OnFwd(OUT_AC);Wait(20); ClearTimer(0); D~G s=24; follow_line_right(); Off(OUT_AC);Wait(50); OnFwd(OUT_AC);Wait(30); t_r follow_line_right(); Off(OUT_AC);Wait(50); OnFwd(OUT_AC);Wait(30); t_r OnRev(OUT_AC);Wait(30);Off(OUT_AC); s=20; follow_line_right(); Off(OUT_AC); Wait(100); G~K t_r s=18; follow_line_right(); cross_line(); follow_line_right(); cross_line(); follow_line_right(); Off(OUT_AC); OnFwd(OUT_A);OnRev(OUT_C);Wait(50); OnRev(OUT_AC);Wait(20); follow_line_right(); Off(OUT_AC); K~L OnFwd(OUT_A);OnRev(OUT_C);Wait(50);Off(OUT_AC); OnRev(OUT_AC);Wait(100);Off(OUT_AC); OnRev(OUT_B);Wait(10);Off(OUT_B); L~M s=23; ClearTimer(0); follow_line_right(); cross_line(); follow_line_right(); cross_line(); follow_line_left(); Off(OUT_AC); M(シューーーーーーーーーーーーーーーーーーーーーーート!!!!!!!!) OnFwd(OUT_C);OnRev(OUT_A);Wait(50); Off(OUT_AC);Wait(80); OnFwd(OUT_B);Wait(10); Off(OUT_ABC); } *問題点 [#p35fef67] -動きがガタガタし過ぎである。 *まとめと感想 [#y774b0c4]