ライントレースロボa2L

ロボット紹介

ロボット画像    前回のロボットを基礎から完全に組み直し、タイヤの回転の速さ方向転換のしやすさを考え、タイヤを遅くまわすためにに多くのギアとパーツを使用。黒い線の内側をトレースできるように光センサー2個を極力近い位置に設置。プログラムの面では、かなりの時間と労力をかけて製作した2aLの弐号機である。   他のチームのロボットとは全体的に形が大きく違い特徴的なフォルムとなっている。これは各パーツの付け替えや角度調整の自由度を上げるために狙ったためのものでありプログラム自体には特徴がある訳ではない。

作成過程

1 基礎部分

 ●大きいタイヤの方がおそらく小回りがきくだろうということで、ドライブベースを基礎に組み立てたが、大きいタイヤは動きが速すぎてセンサーが反応せず、また、横幅が広すぎてカーブが曲がり切れず結局小さいタイヤに変更。

ギア画像 ギア画像2

2 タッチセンサー部分

 ●基礎の部分に相当のパーツをつぎ込んだため、ぎりぎりマニュアル通りのものをつけることで終了。

タッチセンサー

3 光センサー部分

 ●2つのセンサーを隣り合わせて作る計画を立てた上で、地面にできるだけ近い所に設置できるように工夫した。

光センサー

4 プログラム

 ●インターネット上のプログラム説明を見てもなかなか理解できず、今回のロボット製作の中では一番の難所でありプログラムだけにかなりの時間を使った。

5 コース(ライン)

 ●簡単なコースではつまらないし格好がつかないということで信州大学のマークを変化させたものを作成。結果、超難関コースとなる。

コース1

 ●最初に作ったコースで、とても難易度が高く、カーブを曲がりきれなかったり橋が曲がりながらのものだったりして、製作後すぐに失敗作だということに気づく。

 ●このときプログラムはまだ未完成。

コース2

 ●二作目のコースであり特徴として黒いビニールテープで作ってある。鳥の首の付け根が厳しいということでボツになる。

 ●ビニールテープで作った理由は、「簡単にコースを組み換えられるから」。

コース3

 ●首のところを改善させた二作目の改良版。しかし、ビニールテープは曲がるところで波打ってしまっていてロボットの前輪がどうしてもひっかかってしまい結局ボツになる。この後再びマジックでコースを書きなおすことになる。

 ●このときプログラムはすでに完成版(他のチームのコースを使わせてもらい、一周以上回ることができ、成功を確認。

コース4

 ●三作目をマジックで書きなおした完成版。結局発表には間に合わせることができず、動画を残すことはできなかった。

プログラム

#define THRESHOLD 45
#define MOTOR OUT_A+OUT_C
sub touch()                                                          //タッチセンサーに関するプログラム
{
         PlaySound(SOUND_CLICK) ;
         OnRev(MOTOR);
         Off(MOTOR);Wait(200);
         OnFwd(MOTOR);
}          
         
task main()
{
        SetSensor(SENSOR_1,SENSOR_LIGHT);
        SetSensor(SENSOR_2,SENSOR_TOUCH);
        SetSensor(SENSOR_3,SENSOR_LIGHT);
        while (true){
          while(SENSOR_2 == 0)
          {
            if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
            {
              OnFwd(MOTOR);                            
            }
            if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 < THRESHOLD))
//左の光センサーがラインから外れた場合の行動:右に曲がる
            {
              OnRev(OUT_C);
              OnFwd(OUT_A); 
            }  
            if((SENSOR_1 < THRESHOLD)&&(SENSOR_3 > THRESHOLD))
//右の光センサーがラインから外れた場合の行動:左に曲がる
            {
              OnRev(OUT_A);
              OnFwd(OUT_C);  
             }  
            if((SENSOR_1 > THRESHOLD)&&(SENSOR_3 > THRESHOLD))
//光センサーが両方ともラインから外れた場合の行動:わずかに左に曲がり、一時停止した後前進
            {
              OnFwd(OUT_C);
              OnRev(OUT_A);
              Wait(20);
              Off(MOTOR);
              Wait(100);
              OnFwd(MOTOR);
              Wait(50);
            }
          if(SENSOR_2 == 1)                    //タッチセンサーが反応した場合の行動
              {
                touch();
              }    
            }
      }
}

プログラムについての考察

  今回は前回とは全く違ったプログラムを使い、ロボットにちょっとした条件判断命令をうまく実行させることが目的でした。whileやifを使って黒いラインにそってロボットを動かしラインの交差している場所での橋をうまく渡る、という口で言ってしまえば簡単なことですが、whileやifを使うと見るまでもなくプログラムが複雑になってしまい、さらにセンサー3つということでプログラムの理解と構成にかなりの時間がかかってしまった。

  プログラムの順番によっては条件上存在しないはずの命令が実行されてしまうなど、単純に構成だけではない難しさがあった。

  プログラム自体の話をすると、ほとんどは基礎のまま、両方の光センサーが同時にでてしまった時だけ数秒間直進してから少し曲がるように組んである。

反省と感想

  なにより余裕をもたせて課題を完了させることができなかった。そのため、プログラムが複雑ではあるが、基本的な組み合わせで完成させることしかできなかったのが残念である。

  コースの設計にいくつもの致命的欠陥が見られ、何度も修正する必要が出てしまった。改良として行ったビニールテープによるコースも、結果として不規則な段差と摩擦を生じさせるにいたり、プログラムによる調整の限界を超えてしまっていた。つまり、プログラムではなくコースによる調整を最終的にせざるを得ず、重点を置く場所に重点を置けなかった。

  一方で、完全オリジナルのロボットを組めたことはよかった。ギアの工夫による速度調節、センサーの位置、全体としてのバランス、それぞれある程度満足のいく物を組み上げることができた。

どうすればよいか(改善点及び改善策)

  時間的余裕を持てるようにする。このためには課題に対して取り組むものを、最初の段階で大きくしすぎない。完成に近づけた後に改良を行っていく形にする。

  課題の内容面に関しては、プログラムの内容のより一層の充実、より細かい部分までプログラムを組めるようにする。表面上問題のないプログラムに仕上がってはいるが、コース状況が不安定だったためその分おおざっぱなプログラムし組めていなかったからである。

  そして、感想に延べてあるロボット本体であるが。前回の改善点の強度の面においては十分な結果が出せたのだが、ギアの関係上前回同様非常に大きく重いものとなってしまった。片方を満たせればよいというものでもないので、その場での思いつきの構成ではなく、より先を見た設計が必要である。

コメント

コメントおまちしてまーす!!



添付ファイル: fileTS3B0058.JPG 355件 [詳細] fileTS3B0057.JPG 361件 [詳細] fileTS3B0056.JPG 324件 [詳細] fileTS3B0044.JPG 363件 [詳細] fileTS3B0045.JPG 348件 [詳細] fileTS3B0043.JPG 366件 [詳細] fileTS3B0046.JPG 397件 [詳細] fileTS3B0042.JPG 369件 [詳細] fileTS3B0041.JPG 352件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-07-25 (水) 08:44:04