[[2016a/Member]] *はじめに [#tf82f2fe] ■課題: 黒いラインをセンサーで感知し、そのライン上を進む。 ■詳細: 大きな紙に画像のようなコースを描き、その上をロボットが走行する。 モーターによりタイヤを動かすのは課題1と同様で、前面にセンサーのみを取り付けるというシンプルな作りとなっている。 一応、僕が担当になったのは『B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点』であったが、結局最後までこのレベルまで到達出来なかった。 *プログラミング [#cce7845a] ■定義 #define THRESHOLD 42 #define BLACK 25 #define GLAY_B 38 #define GLAY_W 46 #define WHITE 51 #define GO_FWD OnFwd(OUT_AB,50); #define TURN_L OnFwd(OUT_A,50);Off(OUT_B); #define TURN_R OnFwd(OUT_B,50);Off(OUT_A); #define CIRCLE_L OnFwd(OUT_A,50);OnRev(OUT_B,50) #define CIRCLE_R OnFwd(OUT_B,50);OnRev(OUT_A,50) ■ライントレース 以下後半部分はサブルーチン未挿入。今回はこのサブルーチンをどう作って組み込むのかが最後まで分からなかった。 task main() { SetSensorLight(S4); int nOnline=0; while(nOnline < 200) { // 続けて黒が200未満 if (SENSOR_4 < BLACK) { // 線上なら TURN_L; // 左へ nOnline++; // カウンタ増加 } else { // 上の条件に合わない場合 if (SENSOR_4 > WHITE) { // 線上でないなら TURN_R; // 右へ } else if (SENSOR_4 > GLAY_W) { // グレー白なら CIRCLE_R; // 右旋回 } else if (SENSOR_4 < GLAY_B) { // グレー黒なら CIRCLE_L; // 左旋回 } nOnline=0; // カウンタリセット } Wait(1); } } 上の状態では交差点に来た時点で止まってしまう…。 *結果 [#bb252c84] 上の段階には最終日の2週間前の時点で出来ていたものの、そこから全く進展させることが出来なかった。正直言って大失敗である。流石に嘘を書くわけにはいかないので、「今回の出来高としては以上の通りである」としか言えない…。 そもそもカウンターの意味や、「{」を用いた複数の条件の設定が理解できなかった。可能であればまだ改良を続けたい。 ■次回への反省 授業内で課題に着手する前に一通り予習しておこうと思う。このまま行くと単位もらえない気がするぞ…。