目次

ロボットについて

今回の目的

200801102052000.jpg

 今回のロボットは“全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。”ことと“懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。”ことを目的としたものである。また、今回はモーター,タッチセンサー,光センサーをそれぞれ二つまでしか使用できない。そのため、一つのモーターでロボットを左右に回転させることが可能な“ディファレンシャルギア”を用いた。

ディファレンシャルギアとは?

ディファレンシャル・ギア(機構)_02.JPG

 先にも述べたように、一つのモーターでロボットを時計回り又は反時計回りに回転させることができるものである。よって、今回の目的の一つである“全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。”という行為を行うことができるのである。

ディファレンシャル・ギア_02.JPG

 ディファレンシャル・ギアの内部に三つのギアを組み込み、その中の二つのギアにシャフトを接続する。すると、片方のシャフトが回転したときに接続されているギアも同時に回転し、シャフトがつけられていないギアがその回転を継いでもう片方のシャフトが接続されているギアにつなげ、最初に回転していない方のシャフトがもう片方のシャフトとは逆の回転をする。

光センサーについて

光センサー拡大(加工)_01.JPG

 二つの光センサーの間に衝立代わりとして黒い棒を置いて各々を独立させることにより、反応しやすいようにした。

ブロックの投擲方法

投擲方法_01.JPG

 今回のロボットで使用可能なモーターは二つであり、一つは移動用に、もう一つは投擲用に使用している。投擲方法はいたってシンプルで、モーターに投擲台をつけ、モーターが回転すれば投擲が可能になるようにした。

プログラム

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

 #define THRESHOLD 70              //光の明るさを定義
 
 task main()
 {
      SetSensor(SENSOR_1, SENSOR_LIGHT);       //光センサーを定義
      
      while(true)
      {
           if(SENSOR_1 < THRESHOLD)         //定義した光よりも暗い場合
           {
                OnFwd(OUT_A);              //時計周りに回転する
           }
           else                     //定義した光よりも明るい場合
           {
                Off(OUT_A);               //タイヤの動きを止める
                OnFwd(OUT_C);             //ブロックを投げる
                Wait(5);
                Off(OUT_C);
            }
      }
 }

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

 #define THRESHOLD 70             //光の明るさを定義
 
 task main()
 {
 SetSensor(SENSOR_1, SENSOR_LIGHT);      //光センサーを定義
 SetSensor(SENSOR_3, SENSOR_LIGHT);
 
    while(true)
    {
           if(SENSOR_1< THRESHOLD)         //定義した光よりも光センサー1が暗い場合
           {
                if(SENSOR_3< THRESHOLD)       //定義した光よりも光センサー3が暗い場合
                     {
                     OnFwd(OUT_A);            //時計回りに回転する
                   
                     }
                     else                 //定義した光よりも光センサー3が明るい場合
                     {
                     OnRev(OUT_A);            //反時計回りに回転する
                     }
             }
             if(SENSOR_1> THRESHOLD)        //定義した光よりも光センサー1が明るい場合
             {
                  if(SENSOR_3< THRESHOLD)      //定義した光よりも光センサー3が暗い場合
                  {
                       OnFwd(OUT_A);           //時計回りに回転する
                  }
                  if(SENSOR_3> THRESHOLD)      //定義した光よりも光センサー3が明るい場合
                  {
                  OnRev(OUT_A);             //反時計回りに回転する
                  }
              }
         }
 }              

 ディファレンシャルギアを用いると、モーターをどのように回してもロボットは後退ができなくなる。そのため、モーターの正回転と逆回転を繰り返せば、ロボットは時計回りと反時計回りの動きを繰り返すので自ずと前進する。

工夫した点

  • プログラムをかなり簡略化した。
  • 投擲方法を簡単にしたので指定されたブロック以外のブロックでも投げられる。

苦労した点

  • ブロックの投擲時間を長くしすぎるとロボットが分解してしまう。
  • 縦長になってしまったので、バランスが悪い。

コメントをお願いします。



添付ファイル: file投擲方法_01.JPG 439件 [詳細] file光センサー拡大(加工)_01.JPG 417件 [詳細] fileディファレンシャル・ギア(機構)_02.JPG 507件 [詳細] fileディファレンシャル・ギア_02.JPG 553件 [詳細] fileディファレンシャル・ギア_01.JPG 205件 [詳細] file200802011811000.jpg 171件 [詳細] file200801151447002.jpg 175件 [詳細] file200801151447001.jpg 193件 [詳細] file200801151447000.jpg 185件 [詳細] file200801151446002.jpg 191件 [詳細] file200801151446001.jpg 139件 [詳細] file200801151446000.jpg 174件 [詳細] file200801151445002.jpg 162件 [詳細] file200801151445001.jpg 165件 [詳細] file200801102057000.jpg 171件 [詳細] file200801102056001.jpg 170件 [詳細] file200801102056000.jpg 172件 [詳細] file200801102055001.jpg 185件 [詳細] file200801102055000.jpg 131件 [詳細] file200801102054001.jpg 177件 [詳細] file200801102054000.jpg 173件 [詳細] file200801102053002.jpg 176件 [詳細] file200801102053001.jpg 178件 [詳細] file200801102052001.jpg 145件 [詳細] file200801102052000.jpg 399件 [詳細] file200801102053000.jpg 175件 [詳細]

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