[[2014b/MemberOnly/進行状況]]
*課題 [#mff4bbfd]
#ref(./robotics-mission1-7.jpg,100%)
*ロボット本体 [#q78dcdc0]
写真を撮ってないため、載せられる画像はない。ロボットはライントレース機能だけあれば十分なので、基本となる走るロボットに光センサーをとりつけたものである。
*プログラム [#k2ef213d]
次のように定義する
 #define THRESHOLD 51
 #define SPEED_H 33
 #define SPEED_L 22 
 #define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
 #define go_forward OnRL(SPEED_H, SPEED_H);
 #define turn_left1 onRL(SPEED_L, -SPEED_L); // 左旋回
 #define turn_left0 onRL(SPEED_L, 0); // 左折
 #define turn_right0 onRL(0, SPEED_L); // 右折
 #define turn_right1 OnRL(-SPEED_L, SPEED_L); // 右旋回
 #define STEP 1 // 1回の判断で動作させる時間
 #define nMAX 300 // 通常のカーブとして許容できる繰り返しの最大値 
 #define short_break Off(OUT_BC); Wait(1000); // 小休止
 #define CROSS_TIME 200 // 交差点通過にかかる時間
 #define cross_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break;
 
プログラムの書き出し。初期値や条件文。ライントレース時のプログラムと交差点を認識した際のプログラムを繰り返し行う。
 task main()
 {
 SetSensorLight(S3);
 int nOnline=0; // 続けて黒になった回数 (カウンタ)
 int nCross=1;  //交差点の番号
 while (true) {
 /* 黒を続けてnMAX回繰り返さない間、通常のライントレースをする */


ライントレース時のプログラム

 while (nOnline < nMAX) {
 if (SENSOR_3 < THRESHOLD-15) {turn_left1;nOnline++; // カウンタを増やす }
 else {
 if (SENSOR_3 < THRESHOLD-7) { turn_left0;}
 else if (SENSOR_3 < THRESHOLD+7) {go_forward;}
 else if (SENSOR_3 < THRESHOLD+15) {turn_right0; } 
 else {turn_right1;}
 nOnline=0; // カウンタをリセット}
 Wait(STEP);
      }

(nOnline < nMAX)がでない場合、すなわち交差点を認識した場合には、以下のようになる。一回目の交差点を左折するとき
 if (nCross==1){short_break;turn_right1; Wait(nMAX*STEP);turn_left1;nOnline=0;nOnline++;}
2回目の交差点を右折するとき
 if (nCross==2){short_break;turn_right1; Wait(nMAX*STEP);turn_right1;nOnline=0;nOnline++;}
3回目の交差点を左折するとき
 if (nCross==3){short_break;turn_right1; Wait(nMAX*STEP);turn_left1;nOnline=0;nOnline++;}
4回目の交差点を直進するとき
 if (nCross==4){short_break;turn_right1; Wait(nMAX*STEP);cross_line;nOnline=0;nOnline++;}
5回目の交差点を直進するとき
 if (nCross==5){short_break;turn_right1; Wait(nMAX*STEP);cross_line;nOnline=0;nOnline++;}  }}
*反省と感想 [#c0e2145d]
テストなどもありなかなか進まず授業期間中での試走はうまくいかなかった。今回載せたプログラムは、ロボットが無い中で作ったものなのでどんな結果が得られるかは分からない。ただ、授業期間中には分からなかったことが、こうして何もない中で考えたことにより少しだけ理解できるようになったことはとてもよかった。
テストなどもありなかなか進まず授業期間中での試走はうまくいかなかった。それは、ロボットが交差点において思いがけない動きをしたり、プログラムの文法を間違えたりして制作時間がなくなってしまったからだ。
今回載せたプログラムは、ロボットが無い中で作ったものなのでどんな結果が得られるかは分からない。ただ、授業期間中には分からなかったことが、こうして何もない中で考えたことにより少しだけ理解できるようになったことはとてもよかった。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS