* ルール [#i0c03715]
#ref(2015b/Member/North/Mission2/2015b-mission2.png,100%)
上図のコースを~
B → P右折 → Q右折 → P左折 → Q左折 → Q直進 → P直進 → A~
のように走行する

* ロボット [#ea63a0d2]
#ref(2015b/Member/North/Mission2/IMG_1320.JPG,50%)
特に工夫等はなし。光センサーを取り付けただけ

* プログラム [#c0117fed]
 #define SPEED 30                                              
 #define go_forward OnFwd(OUT_BC,SPEED);                      
 #define turn_left OnFwd(OUT_B,SPEED);Off(OUT_C);              
 #define turn_right OnFwd(OUT_C,SPEED);Off(OUT_B);             
 #define turn_left2 OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);    
 #define turn_right2 OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED);    
 #define STEP 50   //                                              
 #define TMAX 150  //
 
 task main()
 {
 SetSensorLight(S1);
 long t = CurrentTick();
 int n=0;         //交差点を通過する回数
 while(true){
 while(CurrentTick()-t<TMAX){
  if(SENSOR_1<30){
  turn_left2;
  }else if(SENSOR_1<35){
  turn_left;
  t = CurrentTick();
  }else if(SENSOR_1<40){
  go_forward;
  t = CurrentTick();
  }else if(SENSOR_1<45){
  turn_right;
  t = CurrentTick();
  }else{
  turn_right2;
  t = CurrentTick();
  }
 }
 if(n<2){
  Off(OUT_BC);
  Wait(1000);
  turn_right;   //交差点を右折
  until(SENSOR_1>50);
  n++;
  t = CurrentTick();
  }else if(n<3){
  Off(OUT_BC);
  Wait(1000);
  turn_left;    //交差点を左折
  Wait(600);            
  n++;
  t = CurrentTick();
  }else{
  Off(OUT_BC);
  Wait(1000);
  turn_right;   //交差点を直進
  Wait(600);
  t = CurrentTick();
  }
 }
  Wait(STEP);
 }

* 感想 [#q50314ed]
単純なライントレースではなく、回数などを利用するために様々なプログラムを利用したため、完全に理解しているとは言い難い状態になってしまった。~
動作の確実性にも欠けるため、どうすれば成功しやすいかをもう少し追求する必要がある。


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