img_0009_Medium.jpg

シングルバンパーを前と左に付けました。バンパーのサイズ調整に苦労しました。ぴったりと壁に沿って走行中です。

壁に沿って動くロボット

注 スタートは本体の左(センサー)を壁に押し当てている状態からです。   反時計回りに机を周回します。

//    作成者:山崎 畠山
//    作成日: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();}     //正面から壁にぶつかると、少し下がって右折してから、壁に寄せます
  }
}

難しかった点

  • バンパーを壁にうまくあてるのが大変で、サイズや位置を決めるのが難しかった。
  • 正面から壁にぶつかり、後退して曲がった後、どうやって壁に寄せるかを考えるのが大変だった。

工夫した点

  • 壁から離れたり、ぶつかったりすると、すぐに前進処理から壁に沿う様に移動する処理が始まるようにプログラムし、壁に沿う精度を高くした。
  • 壁に段差があってもひっかからないよう、左のバンパーの先に丸いパーツを付けた。
  • 後退してから右折した後の、壁に向かって斜めに直進して壁に寄せるというアイディアは良かった。

反省点

  • 繰り返し処理が多く、カーブでマシンの行動回数が多くなってしまい、確実に曲がれるがやや遅くなってしまった。

感想

  • ロボの馬鹿さにあきれた。が、うまく動いてめでたしめでたし。
  • 他と比べてシンプルだが、安定した動作がウリです。

コメントはこちらまで

  • キャタピラをタイヤに変更すると、どうなるでしょうか? -- 松本(教員)? 2005-11-17 (木) 23:51:22
  • 次の課題にて行う予定です。 -- 畠山? 2005-11-28 (月) 16:21:59
  • よくまとめられています。ほかの課題もこの調子で頑張って下さい。 -- まいける(TA) 2005-12-02 (金) 18:09:08
  • ページ全体が良くまとまっていますね。よいです。 -- かとりーぬ(TA)? 2005-12-02 (金) 19:41:09

戻る

tya1 1 &counter([total|today|yesterday]);

添付ファイル: fileimg_0009_Medium.jpg 217件 [詳細] fileIMG_0306.JPG 105件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-02 (金) 19:41:09