[[2008b]] *課題 ライントレースロボットの作成 [#g6b30392] **内容 [#x94a5a38] チームで作成したコースに沿って動くロボットを作成 **注意点 [#m7891c87] - 速さと正確さを追求すること - 交差点で優先側を走っていない場合には、一時停止すること - 前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと - コースを2周したら自動的に止まること *目次 [#g3a535b4] #contents *コース [#r9174158] コースは変則的にカーブを織り交ぜ、交差点が4つあるコースを作った。 写真 *ロボット製作 [#o6767f3d] **ベース製作 [#cc4a812c] 今回のベースはドライブベースをもとに製作した。 製作当初からコースに大きなカーブが多くタイヤの摩擦が大きいことが考えられたので、 四輪ではなく三輪で制作することに決定した。 **センサー取り付け [#kf25bd5e] 光センサーは二つ取り付けた。 その光センサーの前方にタッチセンサーを取り付けた。 **キャスター [#ye3cc248] キャスターは十分に動くスペースを確保し、車体が傾かないように高さを調節した。 *プログラム [#kc01ac0c] #define THRESHOLD 40 #define RUN_TIME 5 int move_count; task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_2, SENSOR_TOUCH); SetSensor(SENSOR_3, SENSOR_LIGHT); move_count = 0; while(move_count <= 8){ if(SENSOR_2==0) { if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) { OnFwd(OUT_A+OUT_C); } if(SENSOR_3 < THRESHOLD) {ClearTimer(0); while(FastTimer(0) <= RUN_TIME) { (SENSOR_3 < THRESHOLD); Off(OUT_C); OnFwd(OUT_A);} OnRev(OUT_C);OnFwd(OUT_A);} if (SENSOR_1 < THRESHOLD) {ClearTimer(1); while(FastTimer(1) <= RUN_TIME) { (SENSOR_1 < THRESHOLD); Off(OUT_A); OnFwd(OUT_C);} OnRev(OUT_A);OnFwd(OUT_C);} if((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) { Off(OUT_A+OUT_C);Wait(200); OnFwd(OUT_A+OUT_C);Wait(70);(move_count); move_count = move_count +1; }} if(SENSOR_2==1){ OnRev(OUT_A+OUT_C);Wait(100); Off(OUT_A+OUT_C);Wait(100); OnFwd(OUT_A+OUT_C);Wait(100); } }Off(OUT_A+OUT_C);}