今回の課題で、私はバッターのロボットを担当した。このレポートでは、ピッチャーロボットとの連携やバッターロボットの構造、バッターロボットのプログラムについて説明する。このレポートで使用しているコースの地図の画像はロボティクス入門ゼミのホームページの課題3から引用している。†バッターロボットは、上の写真を見てもわかるように台車の上に制御装置を置き、その上にバットとそれを振るモーターがつくという構造になっている。バッターロボットはバットを振るだけでいいので、このような単純な構造にした。することで最初の移動の時に正確な移動ができるようになった。†ロボットの動作には光センサーを使用したため、正確な動作のために台車は小回りが利くように作る必要があった。そのため、車輪は2つ設置し、上の写真を見てもわかるように車輪の近くに光センサーを設置した。今回の課題では回転センサーを使用したが、上の写真のように設置してある。†バットは、ボールに当てる確率を上げるために長くした。スイングスピードを上げるためにモーターの軸に直接取り付けてた。スイングスピードを速くしたのは、打球のスピードを上げて10点のゴールも狙えるようにするためだ。長いバットを高速で振るため、バットとバットを動かすモーターを支える部分には大きな力が加わる。そのため、上の写真のように強力な補強を施した。下の写真は構えた時のバットの位置(水色の部分)で、その右側の図はボールを打つ過程である。このロボットは光センサーがある方を進行方向として動いて、車輪も進行方向側に寄っている。そのため、バットを進行方向前側に設置すると車輪と接触する可能性があった。そこで車輪のない進行方向後ろ側にバットを設置することでこの問題を解決した。それに伴って機器同士の通信をする送受信部分も進行方向後ろ側に向いている。今回は、移動のプログラムを私が書き、通信及びバッティングのプログラムをバッターロボットの相方が書き、それを合わせて一つのプログラムとした。そのため、マクロやプログラムの書き方に違いが出ている。移動のプログラムは私が担当した。main()はセンサーの設定と3つのサブルーチンを書くのみとした。3つのサブルーチンの分け方は以下のとおりである。位置的には直進できるが、そうすると4点のゴールにぶつかってしまうため、このようなルートとなった。BLANK;}プログラムの流れとしては「B枠の方向を向いたロボットを右斜めに回転する→黒線を感知するまで直進する→そこから設定した回転センサーの値まで直進する→左斜めに回転して元の向きに戻す」という流れになっている。光センサーを使用することで、最初の位置取りによる誤差がなるべくなくなるようにした。回転センサーを使用することにより、正確な移動ができるようにした。}}先ほどの移動ルートの図を見てもわかるように、P2(赤線)のルートは3本の黒線を横断するルートとなっている。そこで「白いエリアを進む→黒いエリアを進む」という流れを3回繰り返すことで、ちょうど左側にB枠が来るようにした。光センサーのみを使用することでP1(青線)で生じた誤差を修正することができる。下の図はこのプログラムを図解したものである。turnr(5);}このプログラムの流れとしては「P2(赤線)終了後、少し直進→左に90度回転→Cの枠線に着くまで直進(光センサー使用)→設定した回転センサーの値になるまで直進→右斜めに回転してバットと送受信部がピッチャーロボットの方向に向くようにする」という流れである。光センサーでBの枠を感知することで、全て回転センサーに頼るときに比べてそれまでの移動での誤差の影響を最小限にとどめてほぼ同じ位置に停止することができる。実際、プログラムを組む過程で何回か移動実験を行ったがほとんどの場合でBの枠内に収まり、送受信部がピッチャーロボットの方向に向いた。今回のバッティングのプログラムは相方が担当した。プログラムの流れとしては、ピッチャーロボットと通信できるまで近づき、そのあとバッティングが始まるという流れだ。SendMessage(test);}どちらのロボットも、移動の際に誤差ができて毎回同じ場所に止まるということが難しい。そのため、場合によってはお互いに通信できない場所に止まることがある。そこでこのプログラムを実行することによって、通信できないという事態を防ぐことにした。ほとんどの場合、初めから通信可能でこの近づくプログラムは実行されないことが多かったが、このプログラムによって通信できるようになった例はいくつかあり、効果は確認されている。//バットを振る}バッティングのプログラムは5球打つようになっている。ピッチャーロボットとの通信はその都度行うため、通信のプログラムとバッティングのプログラムの両方がrepeatの中に入っている。その都度通信を行うことで最初のみ通信をするときに比べ、最初の誤差を後の方まで引きずらないようにした。今回の課題はロボットを2台使い、4人で協力して取り組むという難しい課題だった。今までの課題は2人ずつ独立していたため、プログラムは自分流で予定も合わせやすかった。今回は通信機能を使ったため、通信する時のメッセージの数字やどのように通信するかなど、完全に自分流にというわけにはいかなかった。通信機能を使ったプログラムは片方のロボット単体で試せるものではなく、両方のロボットが無いと試せないものだったので、4人の都合の合う日を探らなければいけなかった。そのため、一人で進められるところは独自に進めるようにしないといけなかった。そのような状況のなかで無事に完成にたどりつけられたことはすごいことだなと思った。私は、この授業を通して、アイデアを生み出したりお互いに協力したりする力が身に着いたと感じている。大変な授業だったが、有意義な授業だったと思う。