目次

課題

懐中電灯に向かってブロックを投げるロボット

黄色いホイールを2個以上連射するロボットを作成し、以下の動きをするようにプログラムを作成せよ。

1. 全方向から2つの懐中電灯の方向を探しだし、懐中電灯を狙ってホイールを投げる。可能な限り正確な方向に投げること。

2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げる。

メンバー

タツヤ、マキロンの二名により構成されています。

ロボット

今回はあまり時間が無く、複雑な物を作る余裕がなかったのでホイールの発射はシンプルな構造の物にしました。

全体

CIMG0054.JPG

これが今回、製作したロボットです。

側面

CIMG0060.JPG
ZIMG0058.JPG

発射機構

〜澗

CIMG0072.JPG

設置されたホイールをモーターに取り付けられたアームで打ち出すというシンプルなものになっています。

側面(内部)

ZIMG0062.JPG
CIMG0066.JPG

ガイドを設けたことにより、まっすぐ飛びやすくなり、またガイドは動かすことが出来るので発射角度を調節することが出来ます。

A填
(横)

CIMG0071.JPG

 今回、一番大変だったのがこの装填です。
アームが上から降りてくるのでホイールを上から落として装填させることができず 悩まされましたが、横からスライドさせることで解決できました。

(上)

CIMG0068.JPG

 装填は出来るようになりましたが、ホイールがアームにしっかり当たる位置にこない、 ホイールが固定出来ないなどの障害がありました。
 しかしこのストッパー ↓△鯢佞韻襪海箸撚鮠辰靴泙靴拭
 まず、,砲茲螢曠ぁ璽襪鬟◆璽爐降りてくる位置に誘導します。このとき,任呂覆 ホイールがスライドしてくる棒を伸ばすことを試しましたが、ホイールが上手く落ちず断念しました。
 次に△砲茲螢曠ぁ璽襪後ろに落ちるのを防ぎ、その場に留めます。
 以上より装填時の問題を解決しました。

光センサー

CIMG0057.JPG
CIMG0055.JPG

光センサーについては光を追う際に左右で光の当たり具合の差を顕著にする必要があったため、左右を分ける壁を作りました。

工夫した点、苦労した点

 発射機構はシンプルなものですが、ちゃんと飛ばすにはホイールがアームに上手く当たるようにする必要があり、そのために先ほど記述したように横からホイールを装填したり、ストッパーを付けるということに試行錯誤の結果行き着きました。

プログラム

タツヤのプログラム

#define eye_L SENSOR_1				//SENSOR_1をeye_Rと定義
#define eye_R SENSOR_3				//SENSOR_3をeye_Lと定義
#define go(t)   OnFwd(OUT_A+OUT_C);Wait(t);//前進
#define turn_R(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);//右回転
#define turn_L(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);//左回転
#define shoot   OnFwd(OUT_B);Wait(25);OnRev(OUT_B);Wait(5);Off(OUT_B);Wait(100);//ホイールを射つ
#define Llow 50   // 光源が光センサーは反応するが発射はしない距離の光量
#define Lhi 80   //光源にホイールを発射する距離の光量 

 
task main()
 {
       SetSensor(eye_L, SENSOR_LIGHT);//光センサー(左)
       SetSensor(eye_R, SENSOR_LIGHT);//光センサー(右)

    while(true)			
           {
           
            if((eye_R > Llow)&&(eye_L <Llow))              //右が左より明るいとき
                 {
               turn_R(5);                  //右回転
                  }
             else if((eye_R < Llow)&&(eye_L >Llow))        //左が右より明るいとき
                   {
                turn_L(5);                 //左回転
                
                   }
             else if ((eye_R > Llow)&&(eye_L >Llow))   //両方明るい時前進
                   {
                go(5);
                   }
             else if ((eye_R > Lhi)||(eye_L >Lhi)) //光源がホイール発射する距離に来た時
                    {
                  Off(OUT_A+OUT_C);                  //光源の停止を確認
                      Wait(200);       
                  until((eye_R > Lhi)&&(eye_L >Lhi))//光源が停止していたら
                           {
                        repeat(2){                      //2回ホイールを射つ
                                 shoot;
                                         }
                            }
                     }
                else if ((eye_R < Llow)&&(eye_L <Llow))//左右両方とも暗かった時
                     {
                      turn_R(5);                   //右に旋回して光を探します
                              
                     }
               }
}

僕が担当したのは光を追い、一定の距離に来た時ホイールを発射するプログラムです。
光を追うプログラムはあまり時間は掛かりませんでしたが、いつ発射させるのかが難しくどのようにするのか悩みました。最終的に光量の値を二つ定義することで光源との距離を区別することが出来るようになりました。

マキロンのプログラム

int X;
 task main ()
  {SetSensor(SENSOR_1, SENSOR_LIGHT);
     X = 0 ;
      Repeat(80){OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(15);if(X < SENSOR_1)
      {X = SENSOR_1;}}//明るい場所を探す
       while(X >SENSOR_1){OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(15);}//明るい
       場所へ車体を向ける
       OnFwd(OUT_B);Wait(25);OnRev(OUT_B);Wait(5);Off(OUT_B);Wait(100); //発射
     X = 0 ;
       repeat(5){OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(15);}
       repeat(65){OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(15);if(X < SENSOR_1)
       {X = SENSOR_1;}}
       repeat(5){OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(15);}//二番目に明るい
       場所を見つける
       while(X > SENSOR_1){OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(15);}//二番目
       に大きいところに車体を向ける
       OnFwd(OUT_B);Wait(25);OnRev(OUT_B);Wait(5);Off(OUT_B);Wait(100);//発射
   }

感想

タツヤ

今回は時間が短くあまり凝ったものを作ることが出来なかったのが心残りですが、少ない時間の中でもそれなりの物が作れたと思います。
色々と大変な時期で苦労しましたが、完成させることが出来てよかったです。  

マキロン

ごっつ大変だった 時間がなかった。

コメント

コメントをどうぞ

  • シンプルにわかりやすくまとめられています。二人目の課題は、授業中に説明があったとおり、変数を用いて最大値と2番目の値を見つける課題なので、そこに注意してください -- FI? 2010-07-30 (金) 17:45:09
  • ロボットの説明はよくできています。試行錯誤の部分の説明もあるとさらに良いと思います -- TAKA? 2010-07-30 (金) 17:54:05


添付ファイル: fileCIMG0055.JPG 205件 [詳細] fileCIMG0057.JPG 197件 [詳細] fileCIMG0068.JPG 198件 [詳細] fileCIMG0071.JPG 202件 [詳細] fileZIMG0062.JPG 199件 [詳細] fileCIMG0066.JPG 211件 [詳細] fileCIMG0062.JPG 113件 [詳細] fileCIMG0072.JPG 220件 [詳細] fileZIMG0058.JPG 205件 [詳細] fileCIMG0060.JPG 227件 [詳細] fileCIMG0058.JPG 112件 [詳細] fileCIMG0054.JPG 200件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-13 (金) 16:00:34 (3296d)