2008a/MemberOnly/進行状況A

目次

課題

ライントレースロボット
黒い線をたどるロボットの作成

ロボットの説明

080626_1623~0001.jpg

光センサー

080626_1623~0002.jpg

タッチセンサーと光センサー はじめは光センサーが高すぎて黒いラインを認識できなかったのでブロックを何個も使い低くすることで認識するようにしました。

ロボット

上からの写真

このロボットは光センサー2つ、タッチセンサー1つを車両の前方に搭載している。
2つの光センサーでコースの黒い線を挟み光センサーが黒を認識した時に方向転換、直進等の動作を行う。
タッチセンサーは同じコースを走っているロボットにぶつかったことを認識し停止してロボットが通り過ぎるのを待つ為に付けられている。

プログラムについて

プログラム

#define  THRESHOLD  40     //
#define  RUN_TIME  1000//
task main ()
{
(SENSOR_1,SENSOR_LIGHT);//センサ端子1に接続されたセンサが光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ端子3に接続されたセンサが光センサ
SetSensor(SENSOR_2,SENSOR_TOUCH); // センサ端子2に接続されたセンサがタッチセンサ
ClearTimer(0);
while( Timer(0) <= RUN_TIME ){
if (SENSOR_2 == 1)     { //タッチセンサに触れた場合車体が止まる
    Off(OUT_A+OUT_C);
    Wait(300);
  } else { //以外のとき

    if (SENSOR_1>35){ //光センサ1が白を感知したとき
       if (SENSOR_3>35){ //光センサ3が白を感知したとき
           OnFwd(OUT_A); //前進
           OnFwd(OUT_C);
        } else { //光センサ3が黒を感知したとき
        if (SENSOR_1<35);
            OnFwd(OUT_A); //右折
            Off(OUT_C);
        }
     } else{ //光センサ1が黒を感知したとき
         if (SENSOR_3>35     ){ //光センサ3が...を感知したとき
            Off(OUT_A); //左折
            OnFwd(OUT_C);
         } else { //光センサ1、3が黒を感知したとき
         Off(OUT_A+OUT_C);//停止
         Wait(50);
         OnFwd(OUT_A+OUT_C);//直進
         Wait(120);
         Off(OUT_A+OUT_C);
              }
            }
            } 
            }     
        Off(OUT_A+OUT_C);      
      }       

コースについて 

コース

曲がりやすいようにシンプルなコースにしました。

問題点  

色の識別がうまくできず、曲がりたいところで曲がってくれなかった。 タイマーの設定と時間がうまくあわなかった。

解決策

黒色を濃くして、はじめに比べて光センサーの位置も低くした。 タイマーは何回もやり直した。

感想

黒色にそって曲がるところや、3周してから止まるところなど、難しくて結構時間がかかってしまった。 でも前回よりは、スムーズにできたと思います。

コメントをどうぞ



添付ファイル: file080626_1623~0002.jpg 212件 [詳細] file080626_1623~0001.jpg 215件 [詳細] file200806191728000.jpg 305件 [詳細] file200806121727000.jpg 341件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-08 (金) 20:56:14