ルール

2015b-mission2.png

上図のコースを
B → P右折 → Q右折 → P左折 → Q左折 → Q直進 → P直進 → A
のように走行する

ロボット

IMG_1320.JPG

特に工夫等はなし。光センサーを取り付けただけ

プログラム

#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<7){
 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);
}

感想

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


添付ファイル: fileIMG_1320.JPG 108件 [詳細] file2015b-mission2.png 86件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-20 (土) 21:23:40