今回の課題はピッチャーロボットとバッターロボットが所定の位置からスタートし、所定の位置につき、ピッチャーが投げたボールをバッターが打ってゴールにいれることで点をとる。その得点と観客がつけた技術点の平均との合計を競うというものである。機体のメインはボールの発射機構である。私の班はボールを転がすことで発射する機構にした。この機構をつくるにあたって1番苦労したのは、ボールをいれて運ぶための場所である。このロボットではボールを転がすためにボールを入れる場所を高くする必要があった。あまりに高すぎるとバランスが悪くなるのでそれを防ぐために横に広く作った。これだとボール同士が干渉し、ボールが出てこなくなったため、細かい部品を中に取り付けることでつまらないようにした。ボールを機体の真ん中を転がす機構にしたため、センサー等は機体の横に取り付けた。それによりライントレースは難しくなったため、今回は使わないことにした。†defineは方向転換とセンサ−用の直進と角度制御用の直進、それと発射装填を用意した。RotateMotor(OUT_A,-90,90);Wait(1000);RotateMotor(OUT_A,-90,-90);//ボールを発射、装填サブルーチン(BASYO)はライトセンサーでラインを検知してそれを超えるものである。Wait(500);}プログラムの流れとしては、まずゴールにぶつからないように向きを変え、角度制御により直進、そこで向きを変え、ラインを3回超えるまで進む、そうすると投球位置を過ぎるので後退して位置調整、その後、方向転換してバッターの方を向き通信を開始するという流れになっている。通信が始まってからについては通信(#g7b8458f)で詳しく説明する。}}最初は超音波センサーを使ったバッターの検知等も試したが正確な検知ができず、角度制御で場所を指定した方が正確に向きを合わせられたので今回は角度制御で場所、向きをバッターに合わせた。私は基本的にピッチャーを担当したのでバッターにはあまり詳しくない。私たちの班ではボールをキャッチしてから発射する方法をとった。そのためにアームを取り付けた。これをタイミングよく下げることでボールをキャッチし、上げることで発射される。1度完全に勢いを消せるのでキャッチできればかなり正確にゴールを狙える。こちらも超音波センサーを使わず、ライトセンサーのみとなっている。†ここではバッターが最初の位置から位置に着くまでのプログラムを説明する。通信が始まってからのプログラムは通信(#g7b8458f)で説明する。流れとしてはまず、角度制御である程度進み、ライントレースをすることで最終位置に近づき、最後の調整でピッチャーの方を向く。defineは角度制御、ライントレースともに必要なのでそのためのカーブ、旋回、直進を準備。他にもライントレースの時間や1部の位置調節がある。Off(OUT_C);//ライントレース前の向き、位置調整ライントレース用のプログラム。黒の濃さによって曲がり方を変えている他、ライントレースの時間も制御している。Off(OUT_BC);}ライントレースを始める場所まで移動、その後、位置調整する。†ここでは通信の開始、つまりボールを投げて打つところのプログラムを説明する。今回はRemoteStartProgramというプログラムを使った。これは相手のプログラムを開始させるプログラムである。親機であるピッチャーのプログラムはピッチャーの項目で説明したプログラムに含まれているが、バッターのプログラムはバッターの位置に着くためのプログラムとは別のプログラムである。ここからは親機と子機の動きを起こる順番に説明するため、どちらのプログラムかわかりにくくなると思うので注意してほしい。defineとしてボールの発射装填(ピッチャー)、ボールのキャッチ(バッター)、ボールの発射(バッター)、向きの調節(バッター)を準備した。RotateMotorEx(OUT_BC,40,s,t,true,true);Wait(1000);向き調整(バッター)まず、親機であるピッチャーが子機の通信が準備できるまで待機、その後、子機のプログラムを開始させる。位置に着くところや通信のプログラムはかなりよくできたと思うがボールの発射速度が遅く、バッターがキャッチできないことも多かった。ボールを転がすならもう少し高い位置から転がしてスピードをあげるべきだったと思う。