課題2・黒い線に沿って動くロボット

【メンバー】

【ロボット紹介】

【試作機】

全体.jpg

試作機です。最初はテーブルバンパーを直接つけていました

【完成型】

テーブルバンパーを改造、今回の課題発表では、↓のを使います。

全体2.jpg

【テーブルバンパーの改造】

 最初はテーブルバンパーを本体に直接付けていましたが、衝突した時の反応時間が遅かったこと、それにより衝突した相手のロボットの進路を妨げてしまうのではないかと考え下図のように、テーブルバンパー(弐式)を作りました。タッチセンサや光センサの位置は変わっていません。

A9R001.jpg

 テーブルバンパーでは、衝突した時、また机の端から落ちそうになった時にも反応します。しかし、今回の課題では衝突時に限られていたため、逆に今回のコースをカーブする時に、前進には強い形になっているテーブルバンパーは邪魔になっているのではないかと考えました。タッチセンサが常に押されないように軽く、そして押されたらすぐに反応 するようにと弐式では考えました。

A9R004.jpg

【コース紹介】

コース1.jpg

【プログラム】

#define MOTOR OUT_A+OUT_C      //  A、Cのモーターへの同時出力を“MOTOR”と定義
#define THRESHOLD  40                   // 闘値を設定
task main ()
{
       SetSensor(SENSOR_1,SENSOR_LIGHT);               // センサ1が光センサであることを定義
       SetSensor(SENSOR_3,SENSOR_LIGHT);               // センサ3が光センサであることを定義
       SetSensor(SENSOR_2,SENSOR_TOUCH);               // センサ2がタッチセンサであることを定義
  
       while(true){
                 if(SENSOR_2 == 1){                  //  タッチセンサが反応した時(衝突時の対応です)
                          OnRev(MOTOR);
                          Wait(60);         //  0.6秒間、後退します
                          Off(MOTOR);
                          Wait(300);         //  3秒間、停止します
                          } else {          //  それ以外は・・・・・
                    if(SENSOR_1 > THRESHOLD){
                      if(SENSOR_3 > THRESHOLD){
                            OnFwd(MOTOR);     // 左右の光センサがともに白線上にある時は、前進します。
                     } else {
                        OnFwd(OUT_A);
                        Off(OUT_C);           // 右の光センサが反応(黒線に接した)したとき、Aを進めCを止める
                        until(SENSOR_3 > THRESHOLD);  // 右の光センサが黒の線から外れるまで(コースアウト防止です)
                             }
                     } else {
                        if(SENSOR_3 > THRESHOLD){                      
                        Off(OUT_A); 
                        OnFwd(OUT_C);       // 左の光センサが反応(黒線に接した)したとき、Aを止めCを進める
                        until(SENSOR_1 > THRESHOLD);  // 左の光センサが黒の線から外れるまで(コースアウト防止です)
                           }else{
                    Off(MOTOR);            
                               Wait(80);     // 交差点前で約1秒一時停止します。
                               OnFwd(MOTOR);
                               Wait(80);
                               Off(MOTOR);      //  3つの光センサが黒線上にあるとき約1秒前進する
                          }                     //    (↑は交差点を渡るためのプログラムです。)
                   }
            }
      }
}

【交差点を渡る】

交差点.jpg

優先道路を横断する際に、優先道路の色に光センサが反応し、うまく渡ることが出来ません。そこで今回は交差点を認識するための出っ張りに、2つの光センサを反応させて、数秒の間だけ光センサとタッチセンサを使えなくするようにプログラムする必要がありました。

【衝突時の対応】

いくつかのロボットをコース上で動かすために、交差点などで衝突した場合の対応が、プログラムの最初の辺に組み込んであります。

if(SENSOR_2 == 1){
                        OnRev(MOTOR);
                        Wait(30);
                        Off(MOTOR);
                        Wait(100);

  衝突直後3秒間後退します、その後10秒間停止して、再び前進し始めます。

【コースアウト防止】

 今回はコースアウト防止のため、片方の光センサが黒を感知すると、本体は黒の線から外れようと動きますが、きついカーブでは黒の線上でも外れようとする動作が長くは続きません。そこでuntilを使い、片方の光センサが黒を感知すると、光センサが黒の線上から外れるまで動作を続けるようにします。

コースアウト防止.jpg

【工夫した点・努力した点】

【問題点・反省点】

【感想など】

◯コメントをお願いします。◯



添付ファイル: file交差点.jpg 335件 [詳細] fileコース1.jpg 336件 [詳細] file交差点1.jpg 155件 [詳細] fileコースアウト防止.jpg 323件 [詳細] file全体.jpg 338件 [詳細] fileA9R004.jpg 307件 [詳細] fileA9R001.jpg 326件 [詳細] file全体2.jpg 318件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-21 (木) 13:31:29