[[2016a/Member]]

#contents
*2016年課題3 [#ie6e0909]
課題2で作成したコースを用いてタイムレースを行う。
#ref(2016a/Member/hareruya/Mission2/IMG_7779.png,80%,コース)

**ルール [#b4f05d28]
紙コップを運ぶロボットを作り、最終的に黒線で囲まれた輪の中にC地点からの紙コップとD地点からの紙コップを交互に重ねる。
詳しいルールはこちら⇒([[課題3:http://yakushi.shinshu-u.ac.jp/robotics/?2016a%2FMission3]])

*ロボットの解説 [#yf896001]

*プログラム [#e99cbb4b]

**定義 [#j4b1bc1a]
 #define TURN_TIME 5
 #define BLACK 42
 #define WHITE 50
 #define RIGHT_H OnFwd(OUT_A); OnRev(OUT_C); Wait(TURN_TIME);//右旋回
 #define RIGHT_L OnFwd(OUT_A); Off(OUT_C); Wait(TURN_TIME);//右回転
 #define LEFT_H OnFwd(OUT_C); OnRev(OUT_A); Wait(TURN_TIME);//左旋回
 #define LEFT_L OnFwd(OUT_C); Off(OUT_A); Wait(TURN_TIME);//左回転
 #define GO_FORWARD(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
 #define STEP 1
 #define ARM OnFwd(OUT_B);Wait(TURN_TIME);//アーム回転


**ライントレースのサブルーチン [#b2a4010a]
交差点で止まった時に音が鳴るようにしました。交差点の判別にはタイマーを使用し、黒が0.5秒以上続いたときに1秒止まり、音が鳴ります。ラインの右側を通るようにトレースをします。黒を認識したら右、白を認識したら左に進みます。

 sub LINE()
 {
  ClearTimer(0);//タイマの初期化
  while(FastTimer(0) <= 50) //括弧の中はタイマーが一定の時間を超えるまで行われる
    {
       if (SENSOR_2 <= BLACK) {//括弧内が満たされれば次のプログラムを、それ以外はelse以下を実行する
        RIGHT_H;
        } 
         else 
          if (SENSOR_2 < BLACK){
            RIGHT_L;                
           } else if (SENSOR_2 < WHITE) { 
            LEFT_L;
            ClearTimer(0);
           } else if (SENSOR_2 >= WHITE) {
            LEFT_H;               
            ClearTimer(0);
           } else {
            OnFwd(OUT_AC);
            ClearTimer(0);
           }
  
            Wait(STEP);
            }
             Off(OUT_AC);
             ClearTimer(0);
             PlaySound(SOUND_UP);
             Wait(100);//1秒間音が鳴る
 }

**右折のサブルーチン [#h2f74bda]
右に1秒曲がる
 
 sub CROSS_RIGHT()
 {
    while(FastTimer(0) < 100) {
       RIGHT_L;
   }
    ClearTimer(0);
   }
 
**左折のサブルーチン [#p6b1161b]
左に1.6秒間曲がる

 sub CROSS_LEFT()
 {
    while(FastTimer(0) < 160) {
        LEFT_L;
    }
    ClearTimer(0);
   }

**メインプログラム [#w287f8b1]

 task main()
 
 {
   SetSensor(SENSOR_2, SENSOR_LIGHT);
   GO_FORWARD(120);
   LINE();
   WHOLE();
   LINE();
   CROSS_LEFT();
   LINE();
   CROSS_LEFT();
   GO_FORWARD(80);
   LEFT_(50);
   GO_FORWARD(90);
   LINE();
   CROSS_RIGHT();
   LINE();
   CROSS_RIGHT();
   LINE(); 
   ARM(45);
 }

*結果と反省点 [#r04452e7]
紙コップを上げるプログラムが未完成のまま終わった。チームで集まる時間があまり取れず良いアイデアがあまり浮かばないまま、ロボットの製作から本番に至るまで中途半端に終わってしまった。今回の課題にはどうやって紙コップを運んで重ねるかという、高い発想力が必要とされていた終始驚かされた。今回の課題でロボティクス入門ゼミは終わりになるが、課題1から3にかけて得られた知識や発想力や独創性で、1年後期からも学んでいこうと思った。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS