2019a/Member

課題について

コース

下の図のようなコースを各チームで作成し、「ミッション」を遂行せよ。

IMG_5614.PNG

ミッション

A地点を出発し、次のいずれかの経路を黒い線にそって動くロボットを作成する

A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(右折) → J(一時停止の後、左折) → I(直進) → H(直進) → G(左折) → F → E → D(一時停止の後、直進) → C(直進) → B(一時停止) → シュート→ A地点に入る(ゴール)

ロボットについて

72BD800E-741E-40CA-BCFC-2A8A03815300.jpeg

車体を比較的コンパクトになるようにした。

C8850B42-83FF-4B3E-A903-949E054D7269.jpeg

ボールをキャッチするためにアームを取り付け、アームの反対側にボールストッパーを取り付けた。

プログラムについて

#defineの設定 

#define Turn_RightL OnFwd(OUT_A); OnRev(OUT_C);
#define Turn_LeftL OnFwd(OUT_C); OnRev(OUT_A);
#define Go OnFwd(OUT_AC);
#define Turn_RightS OnFwd(OUT_A); Off(OUT_C);
#define Turn_LeftS OnFwd(OUT_C); Off(OUT_A);
#define Catch  OnRev(OUT_B);          Wait(30);Off(OUT_B);OnFwd(OUT_AC);Wait(50);Off(OUT_AC);OnFwd(OUT_B);Wait(30);Off(OUT_B);
#define Shoot OnRev(OUT_B);Wait(30);Off(OUT_B);OnFwd(OUT_AC);Wait(30);Off(OUT_AC);

まず上から右旋回、左旋回、直進、右折、左折、ボールを掴む、ボールを放すといった動作を定義した。

サブルーチンの設定

sub follow_lineL()
  {
     SetSensor(SENSOR_2,SENSOR_LIGHT);
     ClearTimer(0);
     while(FastTimer(0)<27){
          if (SENSOR_2 > 49){
              Turn_RightL; ClearTimer(0);
          } else if (SENSOR_2 > 45){
              Turn_RightS; ClearTimer(0);
          } else if (SENSOR_2 >42){
              Go; ClearTimer(0);
          } else if (SENSOR_2 > 37){
              Turn_LeftS; ClearTimer(0);
          } else {
              Turn_LeftL
           } 
    }
    Off(OUT_AC);
    Wait(100);
    ClearTimer(0);
  }
   
sub follow_lineS()
  {
     SetSensor(SENSOR_2,SENSOR_LIGHT);
     ClearTimer(0);
     while(FastTimer(0)<20){
          if (SENSOR_2 > 49){
              Turn_RightL; ClearTimer(0);
          } else if (SENSOR_2 > 45){
              Turn_RightS; ClearTimer(0);
          } else if (SENSOR_2 >42){
              Go; ClearTimer(0);
          } else if (SENSOR_2 > 37){
              Turn_LeftS; ClearTimer(0);
          } else {
              Turn_LeftL
           } 
    }
    Off(OUT_AC);
    Wait(100);
    ClearTimer(0);
  }

sub follow_lineT()
  {
     SetSensor(SENSOR_2,SENSOR_LIGHT);
     ClearTimer(0);
     while(FastTimer(0)<18){
          if (SENSOR_2 > 49){
              Turn_RightL; ClearTimer(0);
          } else if (SENSOR_2 > 45){
              Turn_RightS; ClearTimer(0);
          } else if (SENSOR_2 >42){
              Go; ClearTimer(0);
          } else if (SENSOR_2 > 37){
              Turn_LeftS; ClearTimer(0);
          } else {
              Turn_LeftL
           } 
    }
    Off(OUT_AC);
    Wait(100);
    ClearTimer(0);
  }

ひとつのサブルーチンでは全ての曲がり角に対応できないので、秒数を変えた3つのサブルーチンを使って使い分けるようにした

sub cross_lineL()
 {
  OnRev(OUT_C);
  Off(OUT_A);
  Wait(50);
  OnFwd(OUT_AC);
  Wait(70);
  Off(OUT_AC);
 }

曲がり角で止まったときに直進するためのサブルーチンを上のようにした。

sub cross_lineS()
 {
  OnRev(OUT_C);
  Off(OUT_A);
  Wait(90);
  OnFwd(OUT_AC);
  Wait(40);
  Off(OUT_AC);
 }

Hの地点で上のサブルーチンではうまく行かないことが多かったので少し変えたサブルーチンを作った。

sub cross_lineT()
 {
   OnFwd(OUT_C);
  Off(OUT_A);
  Wait(120);
  Off(OUT_AC);
}

Jの地点で曲がるためのサブルーチンを作った。

全体のプログラム

task main()
 { 
    follow_lineL();

M→Kまで

    cross_lineL();

Kを直進

    Catch;

ボールを掴む

    OnRev(OUT_AC);
    Wait(100);
    Off(OUT_AC);
    OnFwd(OUT_C);
    OnRev(OUT_A);
    Wait(50);
    Off(OUT_AC);

Kまで戻って旋回

    OnFwd(OUT_AC);
    Wait(30);
    Off(OUT_AC);
    follow_lineS();

直進してライントレースに戻る

    cross_lineT();
    follow_lineT();

J→Iまで

    cross_lineL();
    follow_lineS();

I→Hまで

    cross_lineS();
    follow_lineL();

H→Fまで

    OnFwd(OUT_C);
    OnRev(OUT_A);
    Wait(80);
    Off(OUT_AC);

Fで直角に曲がる

    follow_lineL();

F→Eまで

    OnFwd(OUT_C);
    OnRev(OUT_A);
    Wait(80);
    Off(OUT_AC);

Eで直角に曲がる

    follow_lineS();

E→Dまで

    OnFwd(OUT_AC);
    Wait(30);
    Off(OUT_AC);

Dを直進

    follow_lineL();

D→Cまで

    OnFwd(OUT_AC);
    Wait(30);
    Off(OUT_AC);

Cを直進

    follow_lineL();

C→Bまで

    cross_lineL();

Bで向きを直す

    Shoot;
  }

ボールをシュート

まとめ

一通り成功することはできたが、K地点で止まることとボールを掴むところは何回かに一回成功するという感じだったので完成したとは言いがたかった。FastTimarをうまく使いこなせばうまく行けたのかもしれない。しかし、他の部分はサブルーチンを使い分けることで比較的スムーズにいったのでよかった。


添付ファイル: fileC8850B42-83FF-4B3E-A903-949E054D7269.jpeg 10件 [詳細] file72BD800E-741E-40CA-BCFC-2A8A03815300.jpeg 4件 [詳細] fileIMG_5614.PNG 2件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-14 (水) 01:02:50 (11d)