目次
#contents

*はじめに [#d59e7004]
**課題 [#ld598a3b]
#ref(2016b/Member/ssh/Mission3/2016b-mission3.png)
今回の課題はM地点からピッチャーロボットがピンポン玉を投球し、そのピンポン玉をB地点にいるバッターロボットが打ち返すことで点数が振られている目標を狙うというものだ。このときピッチャーロボットはA地点から、バッターロボットはC地点からそれぞれ出発して、目標に接触しないように所定の位置へ到着しなければいけない。
**目標 [#n7201a3e]
今回、私たちのチームはロボットの制作を分担し、効率よく制作を進めた。全体の目標は高得点を出すことだが、私はピッチャーロボットを担当したため、バッターロボットが打ちやすいボールを出すことを個人としての目標にした。
*全体の具体的な概要 [#kfeb4ce7]
**機体の説明 [#j47ba9e4]
今回私はピッチャーロボットを担当した。そのため、バッターロボットに関しては、rtsとatsのHPを参照してもらいたい。
#ref(2016b/Member/ssh/Mission3/1486879578021.jpg)
上の写真はロボット全体の姿である。移動するための機構はモーターを二つと回転センサーを使用した。全体的にコンパクトにしたかったため、タイヤは前輪のみで後ろは引きずるような形にした。
#ref(2016b/Member/ssh/Mission3/20170206_162135856.jpg)
上の写真はピンポン玉を転がすための機構である。ピンポン玉を上に積んでいくような形になっている。そのため、ギアを複数枚使用することでピンポン玉が落ちてこないように蓋をするパーツと、ピンポン玉を捕まえて転がすパーツが連動するようにした。また、ピンポン玉の軌道が安定するようにレールの代わりになるパーツを取り付けた。ちなみに、この機構は下の車の部分と着脱可能である。
さらに、RIS本体の向きとピンポン玉が出る方向を同じにしてまっすぐM地点に入るだけで投球が可能になるようにしてある。
**プログラムの説明 [#r7499704]
***定義 [#f33082be]
通信するときに使用する数字を定義したものである
 #define THROW_SIGNAL 100   //ピッチャーからバッターへ送る数字である
 #define BATTING_SIGNAL 200 //ピッチャーがバッターから受け取る数字である
                                  //ピンポン玉を打つときに二つの機体が連携をとるために使う
 #define CALL_SIGNAL 201  //ピッチャーからバッターへ送る数字である
 #define RESPONS_SIGNAL 101 //ピッチャーがバッターから受け取る数字である
                                  //ピッチャーとバッター同士の距離を調整するために使う
***サブルーチン [#q10a23fc]
ピンポン玉を転がすためのプログラムである。
 sub pitching()
 {
     SetPower(OUT_A,0);  //勢いが強いと部品が外れていしまう可能性があるためパワーを落とした。
     OnFwd(OUT_A);
     Wait(20);
     Off(OUT_A);
     Wait(60);
     OnRev(OUT_A);
     Wait(21);
     Off(OUT_A);
 }
A地点からM地点に移動するためのプルグラムである。
 sub AtoQ()
 {
       SetSensor(SENSOR_2,SENSOR_ROTATION); 回転センサーを使用して正確な移動を目指した
       ClearSensor(SENSOR_2);
       SetPower(OUT_C,4);
 
       Wait(100); 
       PlaySound(SOUND_UP);  
 
       OnFwd(OUT_B);
       OnRev(OUT_C);
       until(SENSOR_2==4);
       Off(OUT_BC);
       ClearSensor(SENSOR_2);
 
       OnRev(OUT_BC);
       until(SENSOR_2==-65);
       Off(OUT_BC);
       ClearSensor(SENSOR_2);
 }
二つの機体が離れすぎて通信できなくなってしまわないために、通信できるようになるまで間の距離を詰めるプログラミングである。
 sub tsusin_check()
 {
     ClearMessage();
     while(Message()!=RESPONS_SIGNAL){
        Wait(40);
       SendMessage(CALL_SIGNAL);
     }                        
     PlaySound(SOUND_UP);
 }
実際に通信込みでのピッチングのプログラムである。
 sub tsusin_pitching(){
     ClearMessage();
     while(Message()!=BATTING_SIGNAL){
           Wait(30);
           SendMessage(THROW_SIGNAL);
     }
           PlaySound(SOUND_LOW_BEEP);
           pitching();
 }
***メインプログラム [#rb87024a]
 task main()
 {
     AtoQ();
     tsusin_check();
     repeat(5){
        tsusin_pitching();
     }           //ピッチングの動作を繰り返すためにリピートを使用した。
 }
*まとめ [#w3b10f82]
**結果 [#bbe842a2]
一回目の挑戦では両機とも正確にに所定の位置までたどり着くことができ、ピッチングも行うことができたが、三球目からピンポン玉が詰まっていまい得点を伸ばすことができなかった。そこでピッチャーロボットを改良しピンポン玉がつまらないようにした。そして、二回目の挑戦も正確に所定の位置にたどり着くことができた。しかし、今度はバッターロボットの調整に失敗してしまい、バッティングのタイミングがずれてしまい、またしても得点が伸びなかった。これらの結果最終順位は四位という良くも悪くもないといった結果になった。
**考察 [#m9df9bc7]
今回の課題では、練習でうまくいくことが何度もあり大丈夫だと高をくくっていた。しかし、本番では、練習で試すことができていなかったピンポン玉を5個乗せる状況でピンポン玉が引っかかって途中からピッチングできなくなるトラブルが起きた。そこで自分たちの詰めの甘さが浮き彫りになった。また、紙の凹凸によりピンポン玉がまっすぐ転がらないという問題も解決できなかった。このように、完全に解決できず本番に臨んでしまったことが今回の失敗だと思われた。しかし、複数人で一つの課題に挑むことや多くのの問題を解決していくといった経験を積むことができてとてもよかったと思う。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS