[[2016a/Member]]
目次
#contents
*課題 [#b9947262]
今回の課題はセンサーを利用してライントレースをするロボットを作ることです。
*ロボット本体の説明 [#q2f77fad]
#ref(2016a/Member/oyco/Mission2/IMG_1482.JPG,20%,本体の構造)
本体の前方にセンサーをつけました。
#ref(2016a/Member/oyco/Mission2/IMG_1483.JPG,20%,センサー)
このセンサーを使ってラインを判断します。
*コース [#hfdddc43]
**図 [#b1090389]
黒い線に沿って進み、交差点で一度止まり、ゴールまで行って止まること。
http://yakushi.shinshu-u.ac.jp/robotics/?plugin=attach&refer=2016a%2FMission2&openfile=2016a-mission2.png
**コース(ルート) [#bee49fd4]
A地点からB地点へ (A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点)
*プログラムの説明 [#hf725160]
**定義(サブルーチン) [#p71412d5]
 #define BLACK 42
 #define WHITE 50
 #define RIGHT_H OnFwd(OUT_A); OnRev(OUT_C);//右旋回
 #define LEFT_H OnFwd(OUT_C); OnRev(OUT_A);//左旋回
 #define RIGHT_L OnFwd(OUT_A); Off(OUT_C);//右回転
 #define LEFT_L OnFwd(OUT_C); Off(OUT_A);//左回転
 #define GO_FORWARD(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
 #define STEP 1
 
 sub LINE()
 {
  ClearTimer(0);
  while(FastTimer(0) <= 50) {
    if (SENSOR_2 <= BLACK) {
        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);
 }
 sub LEFT()
 {
    while(FastTimer(0) < 170) {
       LEFT_L;
   }
    ClearTimer(0);
   }
 sub CROSS_LEFT()
 {
    while(FastTimer(0) < 250) {
        LEFT_H;
    }
    ClearTimer(0);
   }
 sub WHOLE()
 {
    while(FastTimer(0) < 36) {
      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 {
    GO_FORWARD(50);
    ClearTimer(0);
    }
    Wait(STEP);
   }
    Off(OUT_AC);
    ClearTimer(0);
  }

**メイン [#l068566d]
 task main()
 {
   SetSensor(SENSOR_2, SENSOR_LIGHT);
   GO_FORWARD(140);
   LINE();
   LEFT();
   LINE();
   LEFT();
   LINE();
   LEFT();
   LINE();
   CROSS_LEFT();
   GO_FORWARD(140);
   LINE();
 }
*まとめ [#a6afc464]
**感想&反省点 [#oe0b723f]
2回目の課題だったのにスムーズに課題を進めることができず、プログラムの作成に時間がかかってしまい、プログラムを調節する時間がなく、ゴールへたどり着くことができなかった。
また、1回目の課題とは違い、今回はセンサーを使うため簡単にいけると思ったが、サブルーチンという大きなくくりの定義の理解が遅く、なかなかうまくサブルーチンを使うことができず、1回目とは違う難しさがあった。しかし、とても便利なので、サブルーチンをうまく使うことができたら難なく2回目の課題ができたんじゃないかと思う。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS