2012a/Member

目次

課題2 ライントレースをするロボット[製作者]萩原 孝幸 

コース

コースの条件

仝鮑硬澄2

▲悒▲團鵐ーブ×1

D廠僉1

コース

ロボット本体

ドライブベースは説明書の通り組みました。

ロボット本体←1秒ことに視点が90度回転します。 ロボット本体←光センサーはこのように付けています。

ライントレースの仕組み

コース

黒に乗ったら閾値で判断して左に曲がり 白に乗ったら閾値で判断して右に曲がることを繰り返して進んでいきます。

脱出について

脱出

タイマー制御で行っています。 図の赤線のように脱出手前の直線でタイマー制御し ライントレースのサイドを変えて脱出します。

1秒でも早くする周回する

閾値を2つ作り、その2つの閾値以外のところでは直進加速するようにしました。

トレースの右へ、左への動きの出力を見失わないギリギリまで上げました。

直角の曲がり方として右車輪と左車輪の回転を逆にし、最短で曲がるようにしています。

これにより直角もスムーズに回れるようになっています。

動画

http://www.youtube.com/watch?v=bHZ48P824-k&feature=youtu.be

↑youtubeにアップロードしてみました。(NEW! 6月23日完成版に更新しました)

*音が小さいです。授業で使っているOSでは「alsamixer」というコマンドで音量調整できます。

プログラム

/*  マクロ(動作)  */
#define Right OnFwd(OUT_A,60);Off(OUT_C);//右へ曲がれ
#define Left OnFwd(OUT_C,60);OnRev(OUT_A,60);//左へ曲がれ
#define Straight OnFwd(OUT_A,28);OnFwd(OUT_C,30)//直進しろ
#define WBODER 59 //閾値が59以上なら白の上に乗っているということ
#define BBODER 43  //閾値が43以下なら黒の上に乗っているということ


/*  マクロ(音階)  */
#define Do  523//ド
#define Re  587//レ
#define Mi  659//ミ
#define Fa  698//ファ
#define Sol 784//ソ
#define Ra  880//ラ
#define Ti  988//シ


/*  演奏タスク(勝利のファンファーレ(FINAL FANTASYより)  */
task music() 
{

/*ドドドドー*/

PlayTone(Do,100);//ドの音を0.1秒間ならせ
Wait(160);
PlayTone(Do,100);
Wait(160);
PlayTone(Do,100);
Wait(160);
PlayTone(Do,290);
Wait(500);

/*ラ♭ーシ♭ードッシ♭ドー*/

PlayTone(415,400);
Wait(500);
PlayTone(466,340);
Wait(430);
PlayTone(Do,200);
Wait(310);
PlayTone(466,200);
Wait(190);
PlayTone(Do,800);
Wait(1200);

/*ソーファソファー*/

while(true)//以下からはループさせよ
{
PlayTone(392,360);
Wait(380);
PlayTone(349,360);
Wait(380);
PlayTone(392,340);
Wait(370);
PlayTone(349,280);
Wait(200);

/*シシ♭ーラーソーファー*/

PlayTone(466,200);
Wait(400);
PlayTone(466,330);
Wait(200);
PlayTone(440,360);
Wait(360);
PlayTone(392,330);
Wait(200);
PlayTone(349,400);
Wait(600);

/*ソーファーミーファレー*/

PlayTone(392,330);
Wait(400);
PlayTone(349,330);
Wait(400);
PlayTone(330,330);
Wait(400);
PlayTone(349,200);
Wait(200);
PlayTone(294,1000);
Wait(2000); 

/*ソーファソファー*/

PlayTone(392,360);
Wait(380);
PlayTone(349,360);
Wait(380);
PlayTone(392,340);
Wait(370);
PlayTone(349,280);
Wait(200);

/*シシ♭ーラーソーファー*/

PlayTone(466,200);
Wait(400);
PlayTone(466,330);
Wait(200);
PlayTone(440,360);
Wait(360);
PlayTone(392,330);
Wait(200);
PlayTone(349,400);
Wait(600);

/*ソーファーソーシ♭ドー*/

PlayTone(392,330);
Wait(400);
PlayTone(349,330);
Wait(400);
PlayTone(392,330);
Wait(400);
PlayTone(466,200);
Wait(200);
PlayTone(523,1000);
Wait(2000);
}
}

/*  ライントレースタスク  */
task main ()
{ 

 SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサーである
 SetSensorLight(IN_1);//1のライトを点灯せよ
  
 long time1,timeX;
 time1 = CurrentTick();//ストップウォッチ1のスタートを押せ
  

  while( 42000 >= timeX)//ストップウォッチ1が42秒以内なら以下のプログラムを繰り返せ
   

{    timeX = CurrentTick()-time1;

       if  (SENSOR_1 > WBODER)//白上なら左に曲がる
           {Left;}
  
  else if  (SENSOR_1 < BBODER)//黒上なら右に曲がる
           {Right;}

     else 
           
           {Straight;}   
}

  long time2,timeY;
  time2 = CurrentTick();//ストップウォッチ2のスタートを押せ
  

while( 1000 >= timeY)//ストップウォッチ2が1秒以内なら以下のプログラムを繰り返せ
   

{   timeY = CurrentTick()-time2;  
Off(OUT_AC);   
Wait(3000);
OnFwd(OUT_C,30);
Wait(0800);
Off(OUT_C);
}
 
 
 long time3,timeZ;
 time3 = CurrentTick();//ストップウォッチ3のスタートを押せ
 

 while( 7000 >= timeZ)//ストップウォッチ3が7秒以内なら以下のプログラムを繰り返せ
   

{  timeZ = CurrentTick()-time3;   

       if  (SENSOR_1 > WBODER)//白上なら右に曲がる
           {Right;}
  
  else if  (SENSOR_1 < BBODER)//黒上なら左に曲がる
           {Left;}

     else 
           
           {OnFwd(OUT_A,30);OnFwd(OUT_C,30);} 
}

while(timeZ >= 7000)//ストップウォッチ3が7秒以上なら止まれ
  {     
Off(OUT_AC);   

}

}

感想

センサーが1つしか使えなかったのでとても難しかったです。 1つの場合、黒い線上の時にまっすぐ進めと言う動作は非常に難しく、

今回のように黒い線、白い線を交互に辿って行くのが正解かなと思います。

音階のマクロは結局ドしか使わなかったです。 このくらいの長さの曲なら1つ1つ振動数を手入力でもなんとかなりました。

コメント欄 コメントは以下のフォームによろしくお願いしますm(_ _)m

  • 間違い報告やアドバイス等何かあればお願いします。 -- 萩原? 2012-06-19 (火) 22:33:13
  • もう最終課題に入っていてロボットは残っていないかもしれませんが白と黒の認識をプログラム上で実測してやると周りの環境に左右されにくいロボットになるのではないでしょうか?例えば線が色あせても走れるような。 -- 一般の人? 2012-07-11 (水) 21:43:14
  • 確かに交差点判断時には黒白交互がいいのかもしれませんが直線部だとセンサ1つの時は中間の値も入れてやるとより直線的で早く動くことができると思います。ちなみに中間を使うとモーターの出力100%での走行も可能になりますよ。 -- 一般の人? 2012-07-11 (水) 21:54:06


添付ファイル: fileライントレース.png 178件 [詳細] file黒.PNG 198件 [詳細] fileIMAG0284.jpg 185件 [詳細] fileIMAG0293.jpg 183件 [詳細] fileNXT.gif 182件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-11 (水) 21:54:06