ライントレースをするロボット?

 ・移動形式  タイヤ  (キャタピラを妥協。。。泣)

 ・概略 ロボットの形は初期のロボットにセンサーを取り付けるための部品を取り付けた簡単で規模の小さいものであります。ちょっともの足りないかもしれませんのでご了承下さい。。。

ロボットの前部に光センサーを取り付けそれより前にタッチセンサーをつける。光センサー1つ、タッチセンサー2つの計3つを車両の前方に取り付けてみました。 光センサーは、コースである黒い線を認識するプログラム。 前方につけたバンパーにはタッチセンサーが取り付けてあり、バンパーが前にいる車に接触する事でタッチセンサーが押され、前にいる車に接触した事を認識する事でその後のプログラムに移行します。

なぜ光センサーが1つでタッチセンサーが2つなのかというのについては、いろいろなグループ内での葛藤があって話せば長くなるんです。人にはなかなか言えない何かが色々あったんです。    

 今回は例の規模の小さい簡単に作成できるロボットの写真を撮り忘れたようで写真はありません。申し訳ない。

・マシン作成の流れ

いろいろな繰り返しの中で作り上げたこのマシンを説明させていただきたいと思います。。。

  1. 最初に作ったロボはキャタピラだったので回転するスピードが遅くなり、比較的ゆるやかなカーブや、曲がりやすいコースでもすぐにコースアウトしてしまった。
  2. 車体の横幅を小さくしたほうがすばやい旋回が出来る事に気づく。。。キャタピラでは不可能だ!!!!!!
  3. キャタピラへの熱い想いを捨て去り、ついにタイヤに切り替える事を決意!!ここにグループの結束が高まる。。。
  4. 結局普通のドライブベースが一番無難という意見にまとまる。
  5. 光センサーの取り付け位置は結構重要。2〜3cmずらすだけで、マシンが生まれ変わる。
  6. ↑妥協。。。結局適当につけてみた。

 ・前にある障害物にあたると反転して戻るプログラム

 制作者 祇園 安部  

 #define hi 45
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 SetSensor(SENSOR_3,SENSOR_TOUCH);
 while(true){
  if(SENSOR_1 < hi)    //黒線上にいるとき
   {
    OnFwd(OUT_A);     //左回転
    Off(OUT_C);
    }
    else          //黒線上にいないとき
     {
      Off(OUT_A);      //右回転
      OnFwd(OUT_C);
      }
 
 if((SENSOR_2 ==1) || (SENSOR_3 ==1))  //障害物にあたったとき

 {
 OnRev(OUT_A+OUT_C);    //後退
 Wait(100);
 OnFwd(OUT_A);       //左回転
 Wait(250);
 OnFwd(OUT_C);       //前進
 }
 }
 }      

  ・前にある障害物にあたると追い抜くプログラム       制作者 祇園 高野

 #define hi 45
 task main()
 {
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_TOUCH);
 SetSensor(SENSOR_3,SENSOR_TOUCH);
 while(true){
  if(SENSOR_1 < hi)         //黒線上にいるとき
  {
   OnFwd(OUT_A);      //左回転 
   Off(OUT_C);
   }
   else           //黒線上にいないとき 
   {
    Off(OUT_A);       //右回転
    OnFwd(OUT_C);
     }
 
  if((SENSOR_2 ==1) || (SENSOR_3 ==1))    //障害物にあたったとき

   { 
    OnRev(OUT_A+OUT_C);      //後退
    Wait(100);
    OnFwd(OUT_A);         //左回転
    Wait(150);
    OnFwd(OUT_C);         //前進
    Wait(150);
    Off(OUT_A);          //右回転
    Wait(150);
    OnFwd(OUT_A);         //前進
    Wait(150);
  Off(OUT_A);                    //右回転
    Wait(150);
    OnFwd(OUT_A);                 //前進
    Wait(150);
    }
    }
    }

 ・苦労した点  

  1. メンバーの一人が風邪を引いてしまいロボットを作ったりプログラムを作る時間がなかった。
  2. タッチセンサーをつけて反応させるようにするプログラミングが難しかった。特にifを使ったところが難しく最初の方はプログラムを入れてもその通りに動く事がなかった↓↓ここで大量に時間を消費!!!!かなりの努力と時間の浪費によってなんとか見てられるような動きをしてくれるようになった。。。ほっと一安心。
  3. 前にいる車を回避する時のモーターの回転する秒数が微妙に合わなかったりしていて、何度も数値を変えてテストしなければならなくて本当に大変だった。
  4. 光センサーの位置の調整をする事。最初作ってみたコースはコーナーが急で曲がらせようとしてもうまくライントレースしてくれなくてこれではいけないという事になり、コースを極端に優しくしてみた。でもこれだと何か妥協した感じで嫌だったからセンサーを中央に持っていったり、いくつかの方法を試みた。
  5. マシン作成でも何度もマシンを作り直したりして、最初の方はタッチセンサーが一つだったり、光センサーが二つだったりといろいろ試したが、バランスなどを考慮して結局は今の形に落ち着きました。

 ・今回の反省点   

  1. 上記に書いた通り、光センサーを一つしか使ってないので光をなかなか感知できないので動きがぎこちないし時間がかかる。だから、タッチセンサー重視から光センサー重視のライントレースしやすいマシンに仕上げたい。
  2. コースアウトしにくいコース(比較的緩やかにカーブするコース)を書いたため、あまりコースを走っていても面白くはなかったからもう少し難易度の高いコースを制作してみたいと思う。

 ・担当者      本体&プログラム&ホームページ 祇園 高野 安部 (順不同)     

皆さんのありがたきコメントをどうぞ〜♫ 

  • 苦労した点等を、もう少し具体的に記述してください。 -- ゆき(TA)? 2006-06-30 (金) 14:49:23


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