目次
#contents
*課題について [#ie2cf49e]
課題2については[[2019a/Mission2]]を参照。
また、A地点から出発するコースでプログラムを考えた。
*ロボットについて [#q293edc9]
&ref(1563503784882.jpg);
ロボットをできるだけ小さく作った。
&ref(1563503776849.jpg);
前に取り付けたアームで、ボールの上げ下げを行う。
*プログラムについて [#x87b87cf]
#define BLACK 32
#define WHITE 52
#define kurohai 36
#define GLAY 42
#define sirohai 47
#define SP 20  //速度
#define turn_left OnFwd(OUT_B,SP);Off(OUT_C); //左に曲がる
#define turn_right OnFwd(OUT_C,SP);Off(OUT_B); //右に曲がる
#define st OnFwd(OUT_BC,SP); // まっすぐ進む
#define senkai_left OnFwd(OUT_B,SP);OnRev(OUT_C,SP); //左に旋回
#define senkai_right OnFwd(OUT_C,35);OnRev(OUT_B,35); //右に旋回
#define mochiageu OnRev(OUT_A,SP);Wait(500); //ボールを持ち上げる
#define sageru OnFwd(OUT_A,SP);Wait(500); //ボールを落とす

sub follow_line()
{
  SetSensorLight(S2);

  long t0=CurrentTick();

  while(CurrentTick()-t0<700){
    if(SENSOR_2<BLACK){
    senkai_left;  
    }else if(SENSOR_2<kurohai){
    turn_left;
    t0=CurrentTick();
    }else if(SENSOR_2<GLAY){
    st;
    t0=CurrentTick();
    }else if(SENSOR_2<sirohai){
    turn_right;
    t0=CurrentTick();
    }else if(SENSOR_2<WHITE){
    senkai_right;
    t0=CurrentTick();
   }
    Wait(1);
  }
  Wait(1);
  }
}
task main(){
    follow_line(); //トレース
    Off(OUT_BC);  //少し左に曲がった状態で停止
    OnFwd(OUT_C,SP);Wait(1200); //ロボットを線上に戻す
    follow_line(); //トレース
    Off(OUT_BC); //少し左に曲がった状態で停止
    OnFwd(OUT_C,SP);Wait(1500); //ロボットが右回りに動くようにする
    if(SENSOR_2<BLACK){
    senkai_left;  
    }else if(SENSOR_2<kurohai){
    turn_left;
    }else if(SENSOR_2<GLAY){
    st;
    }else if(SENSOR_2<sirohai){
    turn_right;
    }else if(SENSOR_2<WHITE){
    senkai_right;
    }
    Wait(10000); //J地点までトレース
    OnFwd(OUT_C,SP);Wait(1200); //J地点を右に曲がる
    follow_line(); //トレース
}
*反省点 [#i7e76704]
J地点から先のルートへ進むことができなかった。また、トレースの成功率が極めて低かったのでそこをより改善できれば良かったと思う。



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