[[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週間前の時点で出来ていたものの、そこから全く進展させることが出来なかった。正直言って大失敗である。流石に嘘を書くわけにはいかないので、「今回の出来高としては以上の通りである」としか言えない…。

そもそもカウンターの意味や、「{」を用いた複数の条件の設定が理解できなかった。可能であればまだ改良を続けたい。

■次回への反省

授業内で課題に着手する前に一通り予習しておこうと思う。このまま行くと単位もらえない気がするぞ…。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS