#ref(img_0009_Medium.jpg)
シングルバンパーを前と左に付けました。バンパーのサイズ調整に苦労しました。
*壁に沿って動くロボット [#p94ca47f]
注 スタートは本体の左(センサー)を壁に押し当てている状態からです。
  反時計回りに机を周回します。
 //    作成者:山崎 畠山
 //    作成日:2005-11-17
 
 sub go(){OnFwd(OUT_A+OUT_C);}       //前進
 
 sub left(){ 
             OnFwd(OUT_C);           //左折
             OnRev(OUT_A);
             until(SENSOR_1 == 1);   //左のセンサーが壁にあたるまで
           }
 
 sub right(){
              OnRev(OUT_A+OUT_C);    //後退
              Wait(25);              //後退時間
              OnFwd(OUT_A);          //右折
              OnRev(OUT_C);
              Wait(195);             //右折する時間。90度よりやや浅く曲がるので
              OnFwd(OUT_A+OUT_C);    //直進すると斜めに壁に寄せることができます
              until(SENSOR_1 == 1); 
            }
 
 task main ()
 {
    SetSensor(SENSOR_1, SENSOR_TOUCH);//左に付けたセンサー
    SetSensor(SENSOR_3, SENSOR_TOUCH);//前に付けたセンサー
   
    while(true)                      //無限に繰り返す。
   {
     go();                           //前進
     until((SENSOR_1 == 0) || (SENSOR_3 == 1));
                                     //センサー左が離れるまたは前がぶつかるまで
     if(SENSOR_1 == 0){left();}      //壁から離れると左折して寄せます
     if(SENSOR_3 == 1){right();}     //正面から壁にぶつかると、少し下がって右折してから、壁に寄せます
   }
 }
*&size(25){難しかった点}; [#m502f3b1]
-バンパーを壁にうまくあてるのが大変で、サイズや位置を決めるのが難しかった。
*&size(25){工夫した点}; [#n7707be8]
-壁から離れたり、ぶつかったりすると、すぐに前進処理から壁に沿う様に移動する処理が始まるようにプログラムし、壁に沿う精度を高くした。
*&size(25){反省点}; [#r60785eb]
-繰り返し処理が多く、プログラムの実行回数が多くなって遅くなってしまった。
*&size(25){感想}; [#x167cb22]
-ロボの馬鹿さにあきれた。が、うまく動いてめでたしめでたし。
*&size(20){コメントはこちらまで}; [#u85df0c1]
-キャタピラをタイヤに変更すると、どうなるでしょうか? -- [[松本(教員)]] &new{2005-11-17 (木) 23:51:22};
-次の課題にて行う予定です。 -- [[畠山]] &new{2005-11-28 (月) 16:21:59};

#comment
[[戻る>2005/C6]]
RIGHT:
tya&counter(today);
&counter(yesterday);
&counter(all);
//11月22より

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