2007a/MemberOnly/進行状況A

Counter: 1352, today: 2, yesterday: 1

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

ぎょうざ&たけぽん

このロボットを製作するにあたってのポイント☆

  • 全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。
  • 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。
  • 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる
    の3つを注意して作る。

ロボットについて

光を追いかけるロボット
ロボット 018.JPG
・4輪車
 
・1つのモーターで左右どちらのタイヤも動かせる
 
・光センサーの地面に対する角度を変えることができる
 
・分解することが容易にできる

・2つあるモーターの一つをタイヤ、もうひとつで投げる
001.JPG  003.JPG   002.JPG

この上の写真、よく見ていただければわかるのですが、なんと光センサーの角度が変えられます!!!

さらに詳しく!

1つのモーターで左右どちらのタイヤも動かせる仕組み
OnFwd(OUT_B)にすると左のタイヤが動き、右のタイヤが止まって右に曲がり、OnRev(OUT_B)とすると右のタイヤが動き、左のタイヤが止まり左に曲がる。左右に交互に曲がることにより前に進むことができる。
ロボット 014.JPG

今回は、モーターが2つあるうちの1つは、ブロックを投げるために使わざるを得なかった。そのため、上記のような仕組みが必要となった。

ロボット 008.JPGブロックを投げるための仕組み(拡大版) 
・機械の真ん中かつ上のほうにつけているためブロックをスムーズに前方に飛ばすことができる

これらの機能が重なりあうことによって、このロボットは初めて、光に向かって進み更には、その光源に向かってブロックを投げることができるのである。

プログラム

試作プログラム

このプログラムは試作段階であり、を追うのみである。

#define   turn_left    OnFwd(OUT_B);//右に曲がる
#define   turn_right   OnRev(OUT_B);//左に曲がる
task main()
{
  SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサー(以下光1とする)
  SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ−3は光センサー (以下光3) 
  while(true){
     if(SENSOR_1>=40&&SENSOR_3>=40&&SENSOR_1<SENSOR_3){
       turn_right ;//光1と光3が40以下で光3の光の方が強いとき右に曲がる
       }
     if(SENSOR_1>=40&&SENSOR_3>=40&&SENSOR_1>SENSOR_3){
       turn_left  ;//光1と光3が40以下で光1の光の方が強いとき左に曲がる
       }
     if(SENSOR_1<40&&SENSOR_3>=40){
       turn_left  ;//光1が40以下で光3が40以上のとき左に曲がる
       }
     if(SENSOR_1>=40&&SENSOR_3<40){
       turn_right ;//光3が40以下で光1が40以上のとき右に曲がる
       }
     if(SENSOR_1<40&&SENSOR_3<40&&SENSOR_1<SENSOR_3){
       turn_right ;//光1と光3が40以上で光3の光の方が強いとき右に曲がる
       }
     if(SENSOR_1<40&&SENSOR_3<40&&SENSOR_1>SENSOR_3){
       turn_left ;//光1と光3が40以上で光1の光の方が強いとき左に曲がる 
       }
       }}

完成プログラム

このプログラムは、前回のプログラムに更に手を加えて、

なんと光に向かって走るうえにその光に向かってブロックを投げることができるのである。
#define   turn_left    OnFwd(OUT_B);//右に曲がる
#define   turn_right   OnRev(OUT_B);//左に曲がる
#define   shot         OnFwd(OUT_A);Wait(15);Off(OUT_A);//投げる
task main()
{
  SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサー(以下光1とする)
  SetSensor(SENSOR_2,SENSOR_TOUCH);//センサ−2はタッチセンサー(以下タッチ2)
  SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ−3は光センサー (以下光3) 
  while(true){
      if(SENSOR_1>=40&&SENSOR_3>=40&&SENSOR_1<SENSOR_3){
        turn_right ;//光1と光3が40以下で光3の光の方が強いとき右に曲がる
        }
      if(SENSOR_1>=40&&SENSOR_3>=40&&SENSOR_1>SENSOR_3){
        turn_left  ;//光1と光3が40以下で光1の光の方が強いとき左に曲がる
        }
      if(SENSOR_1<40&&SENSOR_3>=40){
        turn_left  ;//光1が40以下で光3が40以上のとき左に曲がる
        }
      if(SENSOR_1>=40&&SENSOR_3<40){
        turn_right ;//光3が40以下で光1が40以上のとき右に曲がる
        }
      if(SENSOR_1<40&&SENSOR_3<40&&SENSOR_1<SENSOR_3){
        turn_right ;//光1と光3が40以上で光3の光の方が強いとき右に曲がる
        }
      if(SENSOR_1<40&&SENSOR_3<40&&SENSOR_1>SENSOR_3){
        turn_left ;//光1と光3が40以上で光1の光の方が強いとき左に曲がる 
        }
      if(SENSOR_1>=60&&SENSOR_3>=60){
        shot;//光1と光3がともに60を超えたとき投げる
        }
      if(SENSOR_2 == 1) // タッチ2に当たると止まる        
        { Off(OUT_B);  }
        }}

工夫,苦労したところ

  • 光センサーを前のほうに二つ付けることにより光をより追いやすくしたこと。
  • タッチセンサを前方に付けることにより、もし機械が何かの障害物にあたっても止まれるようにした。
  • 光を見失ったと判断させるところ。部屋自体が明るいので、光センサーの値が低すぎても高すぎてもダメだったので、調整するのが難しかった。
  • タイヤを動かすのに一個しかモーターを使うことができないので、機械を動かすプログラムをモーターの前後だけでやらなくてはならく、そのプログラムに苦労した。

反省&感想

  • 何から何まで時間が足りなかった、というのが正直な感想。次回はロボコンということで、今までの数えきれない程の反省点、がどこまで生かせるのか?わからないが、今自分にできる最大限のことをしたいと思う。

先生,TAの方々のコメント

些細なことでも、何かお気付きになられましたら、コメントの方お願いしますm(_ _)m

  • モーター1つでマシンの移動をやりくりするのが、この課題のポイントの一つですから、さらにさらに詳しい解説がほしいところです。 -- まいける(TA) 2007-07-05 (木) 00:44:55
  • 字の色を変えるなど、見やすさに注意しているのはよいと思います。 -- ヒロヤ? 2007-07-05 (木) 09:22:40
  • 光センサーの角度を可変にした、理由、その機構を作ったときの過程、苦労、同様にブロックを投げる機構を作ったときの、過程、苦労、その他何か自分たちで苦労、集中して作ったポイントなどを書くとよいのではないでしょうか。 -- まいける(TA) 2007-07-11 (水) 00:11:29


添付ファイル: file003.JPG 242件 [詳細] file002.JPG 240件 [詳細] file001.JPG 244件 [詳細] file無題.jpg 116件 [詳細] fileロボット 018.JPG 246件 [詳細] fileロボット 017.JPG 120件 [詳細] fileロボット 016.JPG 120件 [詳細] fileロボット 015.JPG 130件 [詳細] fileロボット 014.JPG 239件 [詳細] fileロボット 013.JPG 114件 [詳細] fileロボット 012.JPG 134件 [詳細] fileロボット 011.JPG 127件 [詳細] fileロボット 010.JPG 123件 [詳細] fileロボット 009.JPG 139件 [詳細] fileロボット 008.JPG 234件 [詳細]

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