*目次 [#ndcfc0ed]

#contents

*ロボットについて [#o7ffe449]

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

**ディファレンシャルギアとは? [#t4738e02]
#ref(ディファレンシャル・ギア(機構)_02.JPG)
 先にも述べたように、一つのモーターでロボットを時計回り又は反時計回りに回転させることができるものである。よって、今回の目的の一つである“全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。”という行為を行うことができるのである。

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

**光センサーについて [#l3e0a3d9]
#ref(光センサー拡大(加工)_01.JPG)
 二つの光センサーの間に衝立代わりとして黒い棒を置いて各々を独立させることにより、反応しやすいようにした。

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

*プログラム [#re691a92]

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

  #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);
             }
       }
  }

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

  #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);             //反時計回りに回転する
                   }
               }
          }
  }              

 ディファレンシャルギアを用いると、モーターをどのように回してもロボットは後退ができなくなる。そのため、モーターの正回転と逆回転を繰り返せば、ロボットは時計回りと反時計回りの動きを繰り返すので自ずと前進する。
*工夫した点 [#sa9ed899]
-プログラムをかなり簡略化した。
-投擲方法を簡単にしたので指定されたブロック以外のブロックでも投げられる。
*苦労した点 [#m728b4ea]
-ブロックの投擲時間を長くしすぎるとロボットが分解してしまう。
-縦長になってしまったので、バランスが悪い。

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



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS