2007a/MemberOnly/進行状況A

全体

課題3  光を追う+ブロックを投げる

1.全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。

2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。

3.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。

ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。

ロボット  SCORPION

名前の由来→ロボットの形を見てください!!(^^)

全体

苦労した点

とにかくブロックを投げるところが上手くいかなかったです。 相方が一生懸命ロボットを作ってくれていました...

試作1号として、パチンコみたいな形を作成!!

→どうストッパー(ブロックを落ちないようにするため)を設置するのか,引っ張った状態でどう固定するのか,さらにこんな大きいものをどこにつけるのか!?という様々な問題が発生したのでNG

投げる所その1

結局シンプルISベストということで、こんな形になりました。

投げる所その2

また、今回モーターを2個しか使えないということなので、ディファレンシャルギアを駆使してモーター1つでどうにか動かすことに挑戦しました。

いざ走らせてみるとここでも問題が発生!!

4輪にするとうまくまわらないので、3輪にしました。ですが、後ろにあるタイヤの強度に大きな問題が…

なので、かなり小さめの車輪を勝手に作り出し設置→安定して走るようになりました!

工夫した点

タイヤを飛ばすためのアームの強度があまりにも弱く、全然飛んでいかなかったので、小さいブロックを1つ付けてより勢いがつくようにしました。

投げる所工夫

プログラミング

今回は相方が大活躍!!その1を基本ベースとしてその2,3へと応用していきました。

その1  担当ち,つ

#define THRESHOLD 48

task main()
{
        SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義
        SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を光センサーと定義
        SetPower(OUT_A+OUT_C,7);//AとCのモーターの出力を7にする
             
        while(true
        {
                   if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)))//センサー1と3が受ける光が閾値より弱ければ


                   {
                       OnFwd(OUT_A);//時計回りに回転  
                   }
                   
                     else
                   
                   {
                      Off(OUT_A);//両方とも受ける光が閾値より強くなったらブロックを投げる
                      OnRev(OUT_C);
                      Wait(150);
                      OnFwd(OUT_C);
                      Wait(150);
                      Off(OUT_C);
                      Wait(300);
                   }     
        }
}
#define THRESHOLD 48
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を光センサーと定義

while(true){
if(SENSOR_1>THRESHOLD) {//センサーの受ける光が閾値より弱かった時
OnRev(OUT_A)//時計回り
}else{
OnRev(OUT_C);//ブロックを投げる
Wait(150);
OnFwd(OUT_C);
Wait(150);
Off(OUT_C);
Wait(300);
}
}
}

その2  担当 ち,つ

#define THRESHOLD 45

task main()
{
        SetSensor(SENSOR_1,SENSOR_LIGHT);//センサーを定義
        SetSensor(SENSOR_3,SENSOR_LIGHT);
        SetPower(OUT_A+OUT_C,7);//AとCのモーターの出力を7にする
               
        while(true)
        {
                   if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD)))//センサー1と3が受ける光が閾値より弱ければ

                   {
                       OnFwd(OUT_A);//時計回り
                  }
                   else
                   {
                      OnRev(OUT_A);//前進
                   }     
        }
}
#define THRESHOLD 48
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサーを定義
SetSensor(SENSOR_3,SENSOR_LIGHT);

while(true){
if(SENSOR_1>THRESHOLD) {//センサー1が受ける光が閾値より大きければ
OnRev(OUT_A);//前進

}else{//小さければ
OnFwd(OUT_A);//時計回り
}
}
} 

その3 担当 ち

#define THRESHOLD 48
#define XDAY 30////XDAYを3秒に定義する

task main()
{
        SetSensor(SENSOR_1,SENSOR_LIGHT);//センサーを定義
        SetSensor(SENSOR_3,SENSOR_LIGHT);
        SetPower(OUT_A+OUT_C,7);//AとCのモーターの出力を7にする

               
        while(true)
        {
                   if((SENSOR_1<THRESHOLD)&&(SENSOR_3<THRESHOLD))//センサー1と3の受ける光が閾値より小さかった時
                   {
                       OnFwd(OUT_A);//時計回り  
                   }
                   else
                   {
                      ClearTimer(0);//タイマーをクリアする
                      OnRev(OUT_A);
                      until( Timer(0) >= XDAY);//XDAY(3秒)よりタイマーが大きくなるまで
                      Off(OUT_A);//反時計回り
                      OnRev(OUT_C);//ブロックを投げる
                      Wait(150);
                      OnFwd(OUT_C);
                      Wait(150);
                      Off(OUT_C);
                      Wait(300);
                   }     
        }
}

反省点

今回の課題は今までよりも数段レベルが高く、かなり焦りました。

相方に何もかもお世話になってしまい、本当に申し訳ないと心底反省しています。

COMMENTS

コメントをよろしくお願いします('人')


    


添付ファイル: fileNEC_0063.jpg 335件 [詳細] fileScorpion.jpg 377件 [詳細] file200707051901000.jpg 327件 [詳細] fileNEC_0064.jpg 327件 [詳細] fileNEC_0062.jpg 169件 [詳細] filerobo.jpg 312件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-08-20 (月) 10:32:09