2019a/Member 目次

 課題について

今回の課題はコースをライントレースをして、ピンポン玉を回収し出発地点に戻り、ピンポン玉をゴールに 当てることです。

r.png

 ロボットについて

全体画像

o.JPG

私たちのロボットは小回りがきくような小さなロボットを作りました。 センサーはできるだけ、ロボットの近くに置くようにしました。 そして、ピンポン玉を回収する機構は、あまりいいものを思いつかず、最終的にしっかりとつかめたらいい という発想に至りこのような、挟み込むようなものにしました。

p.JPG

また挟み込む機構を作るにあたって、歯車を使い1つのモーターで動くようにしました。

q.JPG

 プログラミングについて

私が通る道のりはAからBに向かっていく順路です。 今回も、多くのプログラミングを書くので多少は楽にするために

#define

を多く使っています。

int black_time=30;              //黒色を判別している時間の設定

black_timeは交差点に入ったときに黒の場所をどのくらい曲がっているのかを確認するためのものです。

#define gr      OnFwd(OUT_A);  Off(OUT_C);             //右折
#define s       OnFwd(OUT_A);  OnRev(OUT_C);       //直進
#define gl      OnRev(OUT_A);  OnRev(OUT_C);        //左に旋回
#define b       OnRev(OUT_A);  OnFwd(OUT_C);            //後退
#define close   OnFwd(OUT_B);  Wait(20); Off(OUT_B); Wait(100);        //アームを閉じる(ボールを掴む)
#define open    OnRev(OUT_B);  Wait(20); Off(OUT_B); Wait(100);       //アームを開く

また、サブルーチンを使っています。 このプログラムはライントレースをするためものです

sub follow_line()
{
  SetSensor(SENSOR_2,SENSOR_LIGHT);
    while(FastTimer(0)<black_time){      //black_timeが30より小さい間繰り返す
        if(SENSOR_2<36){      //黒色の時
           migisenkai           //右に旋回
        }else if((SENSOR_2>=36)&&(SENSOR_2<39)){  //黒灰色の時
           usetsu ClearTimer(0);    //右折,タイマー0をセット
        }else if((SENSOR_2>=39)&&(SENSOR_2<43)){   //灰色の時
           chokushin ClearTimer(0);  //直進,タイマー0をセット
        }else if((SENSOR_2>=43)&&(SENSOR_2<47)){   //白灰色の時
           sasetsu ClearTimer(0);   //左折,タイマー0をセット
        }else if(SENSOR_2>=47){   //白色の時
           hidarisenkai ClearTimer(0);  //左に旋回,タイマー0をセット
         }
   }
Off(OUT_AC);
Wait(100);
ClearTimer(0);
}

ここからメインプログラムです。 なぜか、follow_lineが一つだけだとうごかないが、2つ重ねると動くので、重ねています。   task main (){

ピンポン玉をつかむ機構はそこまで速さはいらないのでパワーを1にしました。
  SetPower(OUT_B,1);

  follow_line();

  follow_line();

ここまでがBからCまでです。

  gl;
  Wait(30);
  Off(OUT_AC);
  s;
  Wait(30);
  Off(OUT_AC);

交差点を通過するためのプログラムです。

  follow_line();
  follow_line();

CからDまでです。

  gr;
  Wait(30);
  Off(OUT_AC);
  s;
  Wait(30);
  Off(OUT_AC);

これも交差点のためのプログラムです

  follow_line();
  follow_line();

DE間のプログラムです。

  s;
  gr;
  Wait(150);
  Off(OUT_AC);
90度のカーブのためのプログラムです。
  follow_line();
  follow_line();
EF間です。
  b;
  Wait(50);
  Off(OUT_AC);  
  gr;
  Wait(140);
  Off(OUT_AC);

ロボットが少しずれてしまっているので少し後退させまた動かしています。

  follow_line();
  follow_line();

GH間です

  gl;
  Wait(130);
  Off(OUT_AC);
  s;
  Wait(60);
  Off(OUT_AC);
交差点のプログラムです。
  follow_line();
  follow_line();

HI間です

  gl;
  Wait(100);
  Off(OUT_AC);
  s;
  Wait(50);
  Off(OUT_AC);

Iの交差点ようです。

  follow_line();
  follow_line();

IJ間です。

  s;
  Wait(30);
  Off(OUT_AC);

ここは交差点プログラムを使わずに、まっすぐ行けばKまでいけました。

  gr;
  Wait(30)
  Off(OUT_AC);
  s;
  Wait(20);
  Off(OUT_AC);

一回ロボット自体を回転させKからLまでです。   close; ここでピンポン玉をつかみます。

  gr;
  Wait(250);
  Off(OUT_AC);

このプログラムはロボットを180度回転させます。

  s;
  Wait(20);
  Off(OUT_AC);

そしてこのプログラムはロボットをラインの上に動かすプログラムです。

  follow_line;
  follow_line;

KM間です ラインの左側を通ることで交差点を通らずに行ったので交差点プログラムはないです。

  b;
  Wait(50);
  Off(OUT_AC);

これはシュートするために一回後退するプログラムです。

  open;
  s;
  Wait(50);
  Off(OUT_AC);

ここまでがシュートでした。

 最後に

今回良かった点

・ロボット自体が小さいおかげか小回りや大回りがfollow_lineだけですべて通れた
・ロボットが大きくならなかったので持ち運びが楽だった。
・ピンポン玉をつかむ機構と簡単に分けることができる
・簡単につなげることもできる
・ロボットが壊れることがなかった。 

今回悪かった点

・交差点でいちいちプログラムを書いていた点(交差点プログラムを作らなかったこと)
・90度のカーブがうまくプログラムを書けなかった。
・何度かうまく動かなくなることがあった。

   


添付ファイル: filep.JPG 3件 [詳細] filer.png 6件 [詳細] fileq.JPG 3件 [詳細] fileo.JPG 5件 [詳細] file1.JPG 4件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-06 (火) 13:44:33 (12d)