メンバー紹介

・小町 ・まっちゃん

課題3の目標

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

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

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

ロボット紹介

一番大きなタイヤをつけ、土台とした今回のロボット↓

????-0015-1.jpg

製作過程

Part1:ディファレンシャル・ギア

今回はモーターを二つしか使ってはいけないという制限があり、今までと同じプログラミングではロボットがブロック(ホイール)を投げることができなくなってしまいます。そこで、その問題を解決するために今回登場するのが、この『ディファレンシャル・ギア』です↓

画像-0010.jpg

このディファレンシャル・ギアがあることによって、モーターが一つでもロボットを走らせたり、ブロックを投げさせることができます。なぜならこのギアにより、例えば左側のタイヤを停止させた状態で右側のタイヤを正回転させてもタイヤは動くことができます。逆の場合も同様に、タイヤは動くことができます。

Part2:ブロックを投げる

今回はここにブロック(ホイール)を挟み、投げさせます。

画像-0012.jpg

このモーターを回転させることにより、上の写真の黄色い部分(ブロックを投げるためのアーム)が前方向に動き、挟んであったブロックを投げます。タイヤにブロックを挟んでそれを回転させて飛ばすなど、投げさせ方はたくさんありますが、この方法が一番投げやすいのではないかと思ったので、今回はこれでいくことにしました。

画像-0011-1.jpg

Part3:光センサー

今回は前方に光センサーを二つ取り付けました。初めは一つでしたが、ロボットが懐中電灯の光を効率よく探せるように、前に二つ取り付けることにしました。これにより、左右の光はある程度センサーが認識できます。

初めのロボットです。光センサーが一つのとき↓

画像-0013.jpg

改良後のロボット(光センサー二つ)はロボット紹介の写真をご覧ください。

プログラム

全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる

#define THRESHOLD 60
task main ()
{
         SetSensor(SENSOR_1,SENSOR_LIGHT);    //センサー1を光センサーと定義する
         SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサー3を光センサーと定義する
         while(true){
         OnFwd(OUT_A);                        //基本は右周りに回転
         Off(OUT_C);
         if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) {  //もしセンサー1と3が光を感知
                                       Off(OUT_A+OUT_C);             したら停止して投げる
                                       OnFwd(OUT_B);

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

#define THRESHOLD  60
task  main  ()
{
    SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーと定義する
    SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーと定義する
    while(true){
    if((SENSOR_1 <  THRESHOLD) && (SENSOR_3 <  THRESHOLD)) {  //センサー1とセンサー3が閾値より弱いとき以下を実行
    OnFwd(OUT_A);                        //モーターAを正回転
    Off(OUT_C);                                                 //モーターCを停止
 }                             
    if ((SENSOR_1 >THRESHOLD) && (SENSOR_3 <  THRESHOLD)) {     //センサー1とセンサー3が閾値より強いとき以下を実行
    OnRev (OUT_C);                                              //モーターCを逆回転
    Off (OUT_A);                        //モーターAを停止
 }
    if ((SENSOR_1 <  THRESHOLD) && (SENSOR_3 > THRESHOLD)) {  //センサー1とセンサー3が閾値より弱いとき以下を実行
    OnRev (OUT_A);                       //モーターAを逆回転
    Off(OUT_C);                         //モーターCを停止
 }
    if ((SENSOR_1 >  THRESHOLD) && (SENSOR_3 > THRESHOLD)) {    //センサー1とセンサー3が閾値より強いとき以下を実行
    Off(OUT_A+OUT_C);                      //モーターAとCを停止
    OnFwd(OUT_B);         
    Wait(50);
}

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

#define THRESHOLD 60

task main ()
{    
          SetSensor(SENSOR_1,SENSOR_LIGHT);          //センサー1を光センサーと定義する
          SetSensor(SENSOR_3,SENSOR_LIGHT);                    //センサー3を光センサーと定義する
          while(true){
          if((SENSOR_1 > THRESHOLD) && (SENSOR_3 >  THRESHGOLD)) {  //センサー1と3が光を感知す
                                        Off(OUT_A+OUT_C);              るとき停止
                                        Onfwd(OUT_B);                       //ブロックを投げる
          }
          if((SENSOR_1 <  THRESHOLD) && (SENSOR_3 >  THRESHOLD)) {  //センサー3のみが光を感知す
                                     OnRev(OUT_C);                 るとき右に曲がる
                                        Off(OUT_A);
          }
          if((SENSOR_1 > THRESHOLD) && (SENSOR_3 <  THRESHOLD)) {  //センサー1のみが光を感知する
                                        OnRev(OUT_A);                とき左に曲がる
                                        Off(OUT_C);
          if((SENSOR_1 < THRESHOLD) && (SENSOR_3 <  THRESHOLD)) {  //センサー1も3も光を感知しな                   
                                        OnRev(OUT_A);                いとき見つかるまで左回りに回                                                                 
                                        Off(OUT_C);                  転する。
          }
          }

工夫した点

工夫した点はディファレンシャル・ギアとその周辺部分のギアの作成です。 作り始めたときは、ブロックとタイヤの間のギアがとても出ていて見た感じあまりきれいではなかった↓

dscn2323_Medium.jpg

そこで、ギアをブロックの内側に入れて、見た目もきれいにしてみました。

ロボットの性能には影響しなかったのでよかったです。

画像-0016.jpg

感想

今回の課題はヒントが少なく、ロボットやプログラムの作成が本当に大変でした。初めはディファレンシャル・ギアの構造がまったくわからなく、どういったロボットにすればいいのかとても悩みました。授業計画にあるヒントや過去の先輩方のホームページを参考にして、今回のロボットを作成しました。

コメントをお願いします

  • 課題として課せられているプログラムと、実際のプログラムの内容がちょっと違いますね。「懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。」 投げる部分がないのでは。 -- まいける(TA) 2007-07-14 (土) 14:13:47


添付ファイル: filedscn2323_Medium.jpg 208件 [詳細] file画像-0016.jpg 218件 [詳細] file画像-0013.jpg 224件 [詳細] file画像-0011-1.jpg 240件 [詳細] file画像-0012.jpg 215件 [詳細] file2-1.bmp 120件 [詳細] file画像-0010.jpg 240件 [詳細] file????-0015-1.jpg 218件 [詳細] file画像-0015.jpg 117件 [詳細] file2.bmp 112件 [詳細] file0010.jpg 114件 [詳細] file0013.jpg 112件 [詳細] file4.bmp 101件 [詳細] file5.bmp 117件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-08-02 (木) 14:38:17 (4404d)