目次

ロボットの説明

'2013b/Member/wei/Mission2/' には、下位層のページがありません。

コース攻略

プログラム

sub before_cross_line_1() //T字路付近の黒線を走るプログラム {

int nOnline=0; 
 while (nOnline < SAIDAI){
  if(SENSOR_3<=right_kuro){
      if(SENSOR_1<=left_kuro){
        go_forward;}
      else if(SENSOR_1<=left_sen){
        senkai_right;}
      else{senkai_right;}
    nOnline++;
  }else{
    if(SENSOR_3<=right_sen){
      if(SENSOR_1<=left_kuro){
         senkai_left;}   
      else if(SENSOR_1<=left_sen){
         go_forward;}
      else{senkai_right;}}
   else{
      if(SENSOR_1<=left_kuro){
         senkai_left}   
      else if(SENSOR_1<=left_sen){
         senkai_left;}
      else{go_forward;}}
     nOnline=0;}
  Wait(STEP);
 }                                            //while(<saidai)文終わり               

}

sub before_cross_line_2() //T字路付近の黒線を走るプログラム {

int nOnline=0; 
 while (nOnline < SAIDAI){
  if(SENSOR_1<=left_kuro){
      if(SENSOR_3<=right_kuro){
        go_forward;}
      else if(SENSOR_3<=right_sen){
        senkai_left;}
      else{senkai_left;}
    nOnline++;
  }else{
   if(SENSOR_1<=left_sen){
      if(SENSOR_3<=right_kuro){
         senkai_right;}   
      else if(SENSOR_3<=right_sen){
         go_forward;}
      else{senkai_left;}}
   else{
      if(SENSOR_3<=right_kuro){
         senkai_right;}   
      else if(SENSOR_3<=right_sen){
         senkai_right;}
      else{go_forward;}}
    nOnline=0;}
  Wait(STEP);
 }                                            //while(<saidai)文終わり               

}

sub before_cross_line_3() //T字路or十字路付近の黒線を走るプログラム { int nOnline=0; while (nOnline < SAIDAI){

 if(SENSOR_1<=left_kuro&&SENSOR_3<=right_kuro){
        go_forward;nOnline++;}
 else if(SENSOR_1<=left_sen&&SENSOR_3<=right_sen){
        go_forward;nOnline++;}
 else if(SENSOR_1<=left_kuro){
      if(SENSOR_3<=right_sen){
        senkai_left;}
      else{senkai_left;}nOnline==0;}
 else if(SENSOR_1<=left_sen){
      if(SENSOR_3<=right_kuro){
         senkai_right;}   
      else{senkai_left;}nOnline==0;}
 else{
      if(SENSOR_3<=right_kuro){
         senkai_right;}   
      else if(SENSOR_3<=right_sen){
         senkai_right;}
      else{go_forward;}nOnline==0;}
 Wait(STEP);

} //while(<saidai)文終わり } task main(){

SetSensor(SENSOR_1,SENSOR_LIGHT);//左側の光センサー
SetSensor(SENSOR_2,SENSOR_LIGHT);//缶の判断用
SetSensor(SENSOR_3,SENSOR_LIGHT);//右側の光センサー
int nCross=0;

while(nCross<=8){

  if(nCross==0){
    senkai_right;Wait(50);
    go_forward;
    until(SENSOR_3<=left_sen);
    senkai_left;Wait(60);                                //ここでラインの上に乗っかる
    while(SENSOR_2>=sekkin){
     line_race();}
    Off(OUT_AC);                                          
    while(Message() != GO){SendMessage(HOLD);Wait(40);} //缶をつかむ&上に持ち上げる
    senkai_left;Wait(410);
    nCross++;
    }
  else if(nCross==1){
    while(SENSOR_2>=sekkin){
      line_race();}
    Off(OUT_AC);                                          
    while(Message() != GO){SendMessage(TUMU_UP);Wait(40);}//缶を積む&上に持ち上げる 
    ClearTimer(0);
    while(FastTimer(0)<300){
     line_race();}
    before_cross_line_1();
    CROSS(50,0,0);
    nCross++;
    }
  else if(nCross==2){
    while(SENSOR_2>=sekkin){
      line_race();}                                    
    Off(OUT_AC);
    while(Message() != GO){SendMessage(TUMU);Wait(40);}      //缶を積む          
    ClearTimer(0);
    while(FastTimer(0)<830){
     line_race();}
    before_cross_line_3();
    CROSS(150,0,0);
    senkai_right;Wait(130);
    Off(OUT_AC);
    while(Message() != GO){SendMessage(HASAMI);Wait(40);}      //ハサミを広げる
    back;Wait(100);
    senkai_right;Wait(235);
    go_forward;Wait(150);
    nCross++;
    }
 else if(nCross==3){
    ClearTimer(0);
    while(FastTimer(0)<1000){
     line_race();}
    before_cross_line_2();
    CROSS(50,150,0);
    nCross++;
   }
 else if(nCross==4){
     ClearTimer(0);
     while(FastTimer(0)<200){
        line_race();}
     before_cross_line_3();
     CROSS(50,0,150);
     nCross++; 
   }
  else if(nCross==5){
    while(SENSOR_2>=sekkin){
      line_race();}                  
    Off(OUT_AC);                                         
    while(Message() != GO){SendMessage(HOLD);Wait(40);}     //缶をつかむ&上に持ち上げる          
    ClearTimer(0);
    while(FastTimer(0)<1600){
     line_race();}
    before_cross_line_3();
    go_forward;Wait(50);
    CROSS(50,0,0);
    nCross++;
    }
  else if(nCross==6){
    while(SENSOR_2>=sekkin){
      line_race();}
    Off(OUT_AC);
    while(Message() != GO){SendMessage(TUMU_UP);Wait(40);}  //缶を積む&上に持ち上げる
    while(SENSOR_2>=sekkin){
      line_race();}
    Off(OUT_AC);
    while(Message() != GO){SendMessage(TUMU);Wait(40);}      //缶を積む        
    ClearTimer(0);
    while(FastTimer(0)<300){
     line_race();}
    before_cross_line_1();
    go_forward;Wait(50);
    senkai_right;Wait(150);
    CROSS(50,0,150);
    nCross++;
    }
  else if(nCross==7){
    ClearTimer(0);
    while(FastTimer(0)<200){
       line_race();}
    before_cross_line_3();
    go_forward;Wait(50);
    senkai_right;Wait(150);
    CROSS(50,0,150);
    nCross++; 
   }
  else if(nCross==8){
    ClearTimer(0);
    while(FastTimer(0)<1000){
     line_race();}
    before_cross_line_3();
    CROSS(50,0,0);
    senkai_right;Wait(100);                    
    Off(OUT_AC);
    while(Message() != GO){SendMessage(HASAMI);Wait(40);}      //ハサミを広げる
    back;Wait(500);      
    nCross++;
    }

} //while(nCross<=8)終わり stop main; //task main()を終了 }

else if(Message() == TUMU){            //1,2目の缶を3つ目の缶に積んで3つ目の缶を挟む
  down(20);
  hirogeru;
  down(130);
  hasamu;
  go_sin;
  send_go();
  n=1;
}
else if(Message() == HASAMI){         //ハサミを広げる
  hirogeru;
  go_sin;
  send_go();
  n=1;
}
if(n==0){SetPower(OUT_C,1);OnRev(OUT_C);Wait(100);Off(OUT_C);Wait(100);}

} }

この講義の反省と感想

ロボットを作る過程はみんな一緒に協力する、自分自身に対していい経験です。また、外国人の私に対して交流面問題がある、でもみんな根気がよいてわたしの意見を聞いた。とてもありがどうございます。とりあいず、ロボット制作に関する知識は工科の私に対していい経験です


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-02-07 (金) 01:51:01