今回、私が担当したのはコースBである。下の写真はロボットの全体像である。今回の課題のコースは、急なカーブがあったりたくさんの交差点があったりと、一つの光センサーで乗り越えるには厳しいコースだった。そのため、精密なプログラムを組む必要があった。いくらプログラムが良くても電池の減り具合などの要因で正しくプログラムを実行できないという可能性があった。よって、ロボットはタイヤを前方の2つのみとし、後方は下が丸い部品で滑りをよくし、小回りが利くようにした。光センサーはタイヤの近くに設置し、急激なセンサー値の変化によるエラーを防いだ。今回私のペアは、リング状の部品(バー)を作成し、そこにボールを閉じ込めることにした。バーは台車の乗せたモーターを動力として上下に動く。ボールはピンポン玉であるためバーは低い位置に、地面と平行になるのが望ましいと考えている。台車の構造の都合でモーターは低い位置に設置するのは困難であった。そこで上の写真でもわかるように、モーターが動力を伝える軸から下方にさらに軸を伸ばした。することで、バーが低い位置で地面に平行になるようにし、正常に上下できるようにした。上の写真を見てもわかるように台車に直接設置してある平な部品(スカート)がある。仮にこの部品が無いと、光センサーが出っ張った構造となってしまう。なると、最後にボールをシュートするときにボールが横に逃げてしまう。そこでそれを防ぐためにこの部品を設置した。幅はバーとの間に隙間がなくなるようにし、両側にブロックを取り付けることでさらに正確性を向上させた。台車は、正確な動作を実現するために少ない部品で構成している。そのため、制御装置も台車を補強する役割がある。今まで載せてきた写真を見てもわかるように、前方ぎりぎりに設置してある。これを一つでも後方に移すと後方にかかる重さが大きくなり、後方の滑りが悪くなってしまう。なれば、正しくプログラムを実行することができなくなってしまう。†プログラムはB→P、P→Q、Q→ボールキャッチ、ボールキャッチ→C、C→シュートの5つのプロセスにわけて書いた。そのうち、「P→Q」と「ボールキャッチ→C」は同じサブルーチンで動作する。以下では4つのサブルーチンを紹介する。サブルーチン内で使われているマクロは上に記されている。//次のサブルーチンの始点に移動}このプログラムは、途中Rを直進するという難所がある。RはT字路なのでラインの左側を走行することで難所を攻略できた。WAIT;}このプログラムはサブルーチン「P3」の次に実行されるため、このサブルーチンが始まる時はかなりラインの内側に光センサーがある可能性がある。すると、いきなり交差点と判断してしまうというエラーが起こる可能性が高まる。その対策として、上記のように最初に左回転を実行することにした。ボールはライン上にある。そのため、ロボットの構造上、どうしてもラインの右側を走行するとバーがボールに当たり、ボールをキャッチできない。そこでラインの左側を走行させることにした。}}このプログラムは、十字路なら直進、T字路なら右に曲がるという動作をする。これにより、複雑な「ボールキャッチ→C」のプロセスを単純にwhileで繰り返せるようにした。このプロセスの間には半径4cmの急カーブがある。そのため、ラインの右側を走行すると光センサーが黒い部分を通り続け、交差点と判断する可能性が高かった。そこでラインの左側を走行することにした。これは、白い部分は交差点の判断材料にならないからだ。//シュート}このプログラムはサブルーチン「P3」のあとに実行されるため、このサブルーチンが始まる時、ロボットはゴールに対して斜めになっている。言って、最後の直線のために新たにサブルーチンを作るのは効率が悪い。そのため、最初にそれを修正するためのプログラムを書いた。シュートの成功率を上げるためにシュート時に進む距離をシュート前に下がる距離より長くし、ロボットをゴールに近い位置で止まるようにした。//終了音を鳴らす}上記のように、ロボットが走行を始める前にバーを上げるプログラムがある。バーの動く時間は定数で定義してあるが、電池の減り具合によってバーの位置が変わってくる。十分に下がらなければボールをつかめないし、下がりすぎると地面に接触して正確にプログラムを実行できなくなる。そこでプログラム実行ボタンを押す前にあらかじめバーをちょうどよい位置にし、ボタンを押したら初めにバーを上げるという方法をとった。することで、バーを下げるときちょうどよい位置で泊まれるようにした。今回の課題は、前回の反省を活かし、マクロやサブルーチンを多用し、正確なプログラムの実行のために動作間に一時停止する時間を作った。私は、今回は前回よりも良い出来だと感じている。改良できるのではないかとも感じている。次回の課題は今回の反省を活かしながら進められればよいと思った。