#contents
*課題3 懐中電灯に向かってブロックを投げるロボット [#o9ccefe7]
**メンバー紹介 [#e83a6176]
やぎれって かつれっど [#x344b1a4]
*課題の内容 [#z49020b1]
1、全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 [#k60db6fa]
2、懐中電灯をゆっくり動かしたときに懐中電灯に向かって進む。 [#i12e5296]
3、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。 [#p8103101]
ただし、モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。懐中電灯の代わりに携帯のライトなどを利用してもよい。 [#x5c5c9ea]
*ロボットの紹介 [#c70291d0]
今回の課題にはモーターの使用制限があり、それによってタイヤを動かすために使えるモーターは1つしかありませんでした。先生方のヒントを参考に、なんとかタイヤを回すのにモーターを1つ、ブロックを投げるのにモーター1つを使うロボットを作成できました。これがロボットの完成写真です。
#ref(2007a/A1/課題3右/20070712185835.jpg,100%,達筆なロボット)
#ref(2007a/A1/課題3右/tate.JPG,100%,達筆なロボット)
今回は余分なものを省いたシンプルなマシンに仕上がりました。このマシンにさらにブロックを投げる用の装置を付け加えるとこんな感じになります。
#ref(2007a/A1/課題3右/20070717194246.jpg,100%,達筆なロボット)
投げる部分を見やすくするとこんな感じです
#ref(2007a/A1/課題3右/20070717195847.jpg,100%,達筆なロボット)
初め投げるときに、上投げ(普通のオーバースロー)にしようと組み立てましたが、うまくタイヤが飛ばなかっため下投げでタイヤを飛ばすことにしました。きれいな弧を描きながらタイヤを投げるアームは、1回転をし遥か彼方までタイヤを投げ飛ばします。
ここで今回のマシンで特徴的な部分を2つ説明しておきます。まず一つ目はマシンのタイヤを動かすモーターと直結している部分です。こちらが写真です。
#ref(2007a/A1/課題3右/タイヤの上下回転.JPG,100%,達筆なロボット)
説明文
次にタイヤを回転させるためにモーターの力を相殺する部分です。こちらが写真です。
#ref(2007a/A1/課題3右/ギア回転.JPG,100%,達筆なロボット)
説明。
*プログラム [#y004eee8]
***プログラムその1 [#w09fa3db]
#define THRESHOLD 40 //光の強さを定義
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーと定義
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3を光センサーと定義
while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)) {
OnFwd(OUT_A);
Off(OUT_C);
}
Off(OUT_A);
OnRev(OUT_C); Wait(35);
Off(OUT_C);
}
***プログラムその2 [#a8ebed07]
#define THRESHOLD 45 //光の強さを定義します。
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサ1が、光センサであることを指定します
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサ3が、光センサであることを指定します
SetPower(OUT_A,3);
while(true)
{
if ((SENSOR_1 < THRESHOLD)&&(SENSOR_3 < THRESHOLD))
{
OnFwd(OUT_A);Wait(5);//センサ1の感じ取る光が定義した光より弱く、
同じくセンサ3の感じ取る光も定義した光よりも弱い場合、左に曲がります。
}
if((SENSOR_1 <THRESHOLD) && (SENSOR_3 >THRESHOLD)){
OnRev(OUT_A);Wait(30);//センサ1の感じる光が定義した光より弱く、
センサ3の感じる光は定義よした光よりも強い場合、左に曲がります。
}
if((SENSOR_1 > THRESHOLD ) && (SENSOR_3 <THRESHOLD)){
OnFwd(OUT_A);Wait(5);//センサ1の光の感じる光が定義した光よりも強く、
センサ3の感じる光も定義した光よりも強い場合、右に回り回ります。
}
}
}
***プログラムその3 [#vcdc2b24]
#define THRESHOLD 40
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を光センサーと定義
while(true)
{
if ( (SENSOR_1 > 50) || (SENSOR_3 > 50))
{
Float(OUT_A);
OnFwd(OUT_C);Wait(35);
Off(OUT_C);
}else{
if ((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD))
{
OnFwd(OUT_A);Wait(5);
}
if((SENSOR_1 <THRESHOLD) || (SENSOR_3 >THRESHOLD))
{
OnRev(OUT_A);Wait(30);
}
if((SENSOR_1 > THRESHOLD ) || (SENSOR_3 <THRESHOLD))
{
OnFwd(OUT_A);Wait(5);
}
}
}
}
*苦労した点 [#ocf7da7b]
今回、ロボットの土台を完成させたときから、ずっと走るときに、ぎぎぎぎぎとギアが空回りする様な音が出ることに悩まされた。詳しく調べてみると、モーターのギアのかみ合いが悪いらしく、少し離せば音は消えることがわかりました。そこで、この問題を解消するためにギアとギアの間に挟むことができるような部品を探しました。そして、ギアとギアの間にゴムを挟むことによってこの騒音問題に対応しました。
#ref(2007a/A1/課題3右/20070712190440-2.JPG,100%,達筆なロボット)
*課題点 [#cd98bea2]
タイヤを飛ばすためのアームが装置として大きすぎたために、マシン全体の重量が重くなりモーターが重さに負けて動きが多少鈍くなってしまった。モーターとタイヤを飛ばすためのアームが、今よりもよりスリムにする必要があると思った。スリムにしても、重いモーターを支えなければならないので、スリムに且つ頑丈になるべく改良できたらいいと思った。
*まとめ [#x144ea86]
今回は今までと違い、個人個人がバラバラに行動するのではなく、2人で協力して作業を進めることができたと思う。今まではバラバラにプログラムを作ったり、ロボットを組み立てたりしていたので作業効率が悪く、いつも最後の最後まで時間を浪費していた。それを修正できた点で、今回はロボコンに向けてかなり進め方についてヒントを得た気がした。また、マシンを組み立てたときに発生したトラブルにも原因を突き止めてちゃんと修正でき、だいぶこのロボットの作成作業にもなれてきたのが収穫だった。この課題3をステップにして、本番のロボコンでは自分たちの力を100%発揮できるようにがんばりたい。
-連携できてよかったですね。投げ方の工夫がよいと思います。 -- [[ヒロヤ]] &new{2007-07-27 (金) 06:55:01};
#comment