課題2 黒い線に沿って動くロボット

黒の線に沿って走るロボットを作成した。

課題のポイント

●交差点で優先側を走っていない場合には、一時停止し、もう一台のロボットが走り去ってからまた動き出すこと。

●前方にあるもう一台のロボットに接触した場合、ロボットを停止させ、もう一台のロボットが走り去るのを待つ。

●ロボットのスピードは速い方がよい。

●コースには二カ所以上のカーブを入れること。

コース

a6

解説

 交差点が二個あるカーブを重視した少し複雑なコースにした。  カーブが急なため、プログラミングが重要である。

ロボット

製作過程1(タイヤなどの土台)

a6

解説

 タイヤは三輪で後輪に大きなタイヤを置くことによって動きを安定させ、土台は地面に対し平行になるようにした。  前輪にはモーターはついていない。

製作過程2 (光センサー)

a6

解説

 光センサーは、黒線かそうでないかの判断をより早くするため、前の方につけた。  また、光センサーが土台から外れるのを防ぐため輪ゴムで補強した。

制作過程3(タッチセンサー)

a6

解説

 タッチセンサーは一番前につけ、一つだけにすることによってスリムさを出すことにした。

完成図

a6

解説

 全体として細長くシンプルな感じになり、難しい感じがなく、非常に使いやすく、いいロボットになった。

プログラム

#define Do  523
#define Re  587
#define Mi  659
#define Fa  698
#define Sol 784
#define Ra  440
#define Shi 494
#define DO 1047
task play_music()   ドレミの歌
{
   while (true)
   {
   PlayTone(Do,25); Wait(30);
   PlayTone(Re, 5); Wait(10);
   PlayTone(Mi,25); Wait(30);
   PlayTone(Do, 5); Wait(10);
   PlayTone(Mi,10); Wait(15);
   PlayTone(Do,10); Wait(15);
   PlayTone(Mi,20); Wait(25);
   PlayTone(Re,25); Wait(30);
   PlayTone(Mi, 5); Wait(10);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Mi, 5); Wait(10);
   PlayTone(Re, 5); Wait(10);
   PlayTone(Fa,40); Wait(45);
   PlayTone(Mi,25); Wait(30);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Sol,25); Wait(30);
   PlayTone(Mi, 5); Wait(10);
   PlayTone(Sol,10); Wait(15);
   PlayTone(Mi,10); Wait(15);
   PlayTone(Sol,20); Wait(25);
   PlayTone(Fa,25); Wait(30);
   PlayTone(Sol, 5); Wait(10);
   PlayTone(Ra, 5); Wait(10);
   PlayTone(Ra, 5); Wait(10);
   PlayTone(Sol, 5); Wait(10);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Ra,40); Wait(45);
   PlayTone(Sol,25); Wait(30);
   PlayTone(Do, 5); Wait(10);
   PlayTone(Re, 5); Wait(10);
   PlayTone(Mi, 5); Wait(10);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Sol, 5); Wait(10);
   PlayTone(Ra,40); Wait(45);
   PlayTone(Ra,25); Wait(30);
   PlayTone(Re, 5); Wait(10);
   PlayTone(Mi, 5); Wait(10);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Sol, 5); Wait(10);
   PlayTone(Ra, 5); Wait(10);
   PlayTone(Shi,40); Wait(45);
   PlayTone(Shi,25); Wait(30);
   PlayTone(Mi, 5); Wait(10);
   PlayTone(Fa, 5); Wait(10);
   PlayTone(Sol, 5); Wait(10);
   PlayTone(Ra, 5); Wait(10);
   PlayTone(Shi, 5); Wait(10);
   PlayTone(DO,40); Wait(45);
   PlayTone(DO, 5); Wait(10);
   PlayTone(Shi, 5); Wait(10);
   PlayTone(Ra,10); Wait(15);
   PlayTone(Fa,10); Wait(15);
   PlayTone(Shi,10); Wait(15);
   PlayTone(Sol,10); Wait(15);
   PlayTone(DO,40); Wait(45);
    }
}
#define THRESHOLD 40  
task main()
{
 start play_music ; //ドレミの歌を流す
 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーとする 
 SetSensor(SENSOR_2,SENSOR_TOUCH);  //センサー2をタッチセンサーとする
  while(true)  
 {
  while(SENSOR_2==0) //タッチセンサーが触れてないとき 
        {
        if(SENSOR_1 < THRESHOLD) //黒い線に沿うプログラム
               {
               OnFwd(OUT_A);
               Off(OUT_C);
               }else{
               Off(OUT_A);
               OnFwd(OUT_C);
               }
        }
       Off(OUT_A+OUT_C); //タッチセンサーが触れてるとき、一時停止するプログラム
       Wait(100);     
  }
}

まとめ

工夫&苦労した点

 工夫したところや苦労したところは、タッチセンサーと光センサーをどのように一直線上に置き、使いやすくかつシンプルにするかという点で、レゴをたくさん使って強度を補強すると重くなりタッチセンサーと光センサーの働きもあまりよくないので、考えた結果輪ゴムを使うことにより、強度の補強と機械の軽量化に成功した。

失敗点と改善すべき点

 ロボットのボディのシンプルさを意識するあまり、光センサーを1つだけ使うことにしてしまった。そのため、光センサー1つでは交差点であるかそうでないかの見分けをつけることが出来ず、交差点での一時停止のプログラムをどんなに頑張っても作ることが出来なかった。つまり、ほかの班のように光センサーを二個にし、両方が白線上、片方が白線でもう片方が黒線上、その反対、両方が黒線上、という4パターンにして交差点を判断させるべきであった。 なので、最初から後々のことをよく考えてロボット作成の計画を立てるべきだった。

感想

 機械のバランスを考えるとうまくいかないことが多く、プログラムを作るときも、ものすごく手間取ってしまったが、出来上がりを見てみるとなかなかよく出来ていてよかったです。今度はもう少し複雑なプログラムにしたいと思いました。

なぜ失敗したか

 やはりこれは交差点での優先を考えなかったことにあり、光センサー一つで作ることにこだわりすぎて方法を見失ってしまったことにある。第二にコースの作り方を間違ってしまったことにあると思う。コースのカーブはもっと直角に近くすべきであり、カーブの角度を厳しくすると機械が判断できなくなり、だめであった。三番目にプログラムでもっと簡単なプログラムで大丈夫だと思っていたが、やり終わってみるとプログラムが全然足りず動きに幅がなかった。これらの点が失敗につながったのであり、もう別の課題に入ったため作り直すことができないが、これらの失敗をロボコンに生かそうと思いました。


 


添付ファイル: fileImage0136.jpg 342件 [詳細] fileImage0135.jpg 355件 [詳細] fileImage0146.jpg 352件 [詳細] fileImage0146-7.jpg 179件 [詳細] fileImage0138.jpg 331件 [詳細] fileImage0137.jpg 176件 [詳細] fileImage0134.jpg 179件 [詳細] fileImage0133.jpg 335件 [詳細]

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