2008b

ライントレースロボット(黒い線に沿って動くロボット)の作成

各チームで作成したコースに沿って動くロボットを作成する。ただし、

  • 速さと正確さを追求すること
  • 交差点で優先側を走っていない場合には、一時停止すること
  • 前方にあるもう一台のロボットに接触した場合には停止して相手のロボットが行き過ぎる、あるいは距離が離れるのを待つこと
  • コースを2周したら自動的に止まること

目次

方針

ロボットもプログラムもあまり複雑になりすぎないよう、シンプルなものを目指す。

コース

交差点は全部で4つ。きついカーブをおりまぜた難易度やや高めのコースを作成した。

course

ロボット

  • 基礎部分  この課題では小回りが利くことが求められるため、3輪駆動を採用した。
  • 光センサ  ライントレースをするのに必要。今回は2つの光センサを使用した。

machine1

  • タッチセンサ  ほかのロボットとの衝突などを想定してバンパーを搭載。今回、シングルバンパーを採用したため、タッチセンサは1つだけ使用した。

machine2

プログラム

2周したあとロボットを停止させるために関数を用いた。また、ほかのロボットと衝突した際の動き(衝突→後退→しばらく停止→前進して元の位置に戻る)を工夫した。

 #define THRESHOLD 40                             //閾値を40に設定
 task main ()
 {
 SetSensor(SENSOR_1, SENSOR_LIGHT);               //センサ1が光センサであると宣言
 SetSensor(SENSOR_2,SENSOR_TOUCH);                //センサ2がタッチセンサであると宣言
 SetSensor(SENSOR_3, SENSOR_LIGHT);               //センサ3が光センサであると宣言
 int count;
 count=0;
 int count_max=8;
 while(true) {
  until(count>=count_max){                        //(※)の回数が8回になるまで以下の命令を繰り返す
       if (SENSOR_1<THRESHOLD) {   
        OnRev(OUT_A);
        OnFwd(OUT_C);       
         }                                        //センサ1が閾値よりも小さな値を示す、すなわち左の光センサが黒いラインを感知したら左に曲がる
       if(SENSOR_3 <THRESHOLD){
       OnRev(OUT_C);
       OnFwd(OUT_A); 
        }                                         //センサ3が閾値よりも小さな値を示す、すなわち右の光センサが黒いラインを感知したら右に曲がる
       if((SENSOR_1 <THRESHOLD)&&(SENSOR_3 <THRESHOLD)){ 
       Off(OUT_A+OUT_C);
       Wait(100);
       OnFwd(OUT_A+OUT_C);Wait(50);count=count+1;}  //センサ1とセンサ3が閾値よりも小さな値を示す、
                                                      すなわち両側の光センサが黒いライン(交差点)を感知したら一時停止した後しばらく前進する・・・・・・・(※)
       if(SENSOR_2==1){
       OnRev(OUT_A+OUT_C) ;     Wait(50); 
       Off(OUT_A+OUT_C);          Wait(150); 
       OnFwd(OUT_A+OUT_C) ;Wait(50);}             //タッチセンサが反応、すなわちバンパーに何かがぶつかったら後退し、少し待ってから再び前進する
       else {                          
       OnFwd(OUT_A+OUT_C);}}                      //上記以外は前進する
       Off(OUT_A+OUT_C);}                         //(※)の回数が8回になったら止まる
 }

その後の改良

今回は作成することができなかったが、ロボットがコースから外れてしまった時のことを想定し、ロボットがコースに戻ってくることができるようなプログラムを追加すればさらにライントレースの際の成功率を上げ、失敗を防ぐことができると思う。

反省&感想

一人は主にプログラム作成、もう一人はホームページ作成と役割分担をして取り組んだが、比較的作業をスムーズに進めることができたのでよかったと思う。 授業時間外に集まって作業をするのはなかなか大変ではあったが、課題発表でしっかりロボットが動いてくれてよかった。次の課題も頑張りたい。

コメントをどうぞ

  • よくできています。その他の改良の欄が空白ですが書き忘れですか? -- なかむら? 2008-12-11 (木) 13:57:46


添付ファイル: file081204_1645082.jpg 243件 [詳細] file081204_1642312.jpg 264件 [詳細] file081204_164231.jpg 137件 [詳細] file081204_164508.jpg 141件 [詳細] file081202_203320.jpg 150件 [詳細] file081202_203355.jpg 270件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-18 (木) 13:38:31 (3901d)