†クワガタのような大きなアームを装備している。半時計周りの空き缶運び。ラインの右側をトレースしながら8.5秒間(空き缶を掴むまで)前進する。ラインの左側を前進しながら3回十字路を通過する。↓20.5秒間ラインの左側を前進する。右旋回をして、180°機体の向きを回転させる。バックして、向きを前進方向に戻す。↓ラインの右側を前進して、ゴールに向かう。基本的な動作は至って簡単で、黒ラインの縁をトレースするものである。ライントレースするにあたって光センサでラインの高度を読み取りながら走行するようにした。ラインの縁に差し掛かったときだけ直進するプログラムを作った。ラインの右側を走行する場合は白(紙の色)のとき左折をする。このとき黒ラインにどれだけ近いかで旋回と片輪をを軸にした回転に分割した。黒ラインから大きく離れているときは片輪を軸にした左回転。黒ラインに比較的近いときは左旋回とした。黒ラインの中に収まっているときは、黒色の濃さによって右折の度合いを判断している。黒ラインの中心部に機体が居るとき、センサーは一番小さな値を返して来る。この値に近いときは、片輪を軸とした右回転をする。中心部から外れた明るい黒(センサーの値が中心部より高い)時には、右旋回をする。これがこのプログラムの前進部の動作原理である。次に十字路について解説する。十字路では前進するプログラムを続けると片輪の回転を連続して繰り返すことになる。回転した分のキョリを戻ることによって十字路の中心部に戻ることになる。中心に戻った後一度前進してから前進のプログラムに切り替える。この前進と十字路のプログラムを合わせることによってコースを完走することが出来する。45赤外線センサーのラインを読み取った時の値。この値は中央よりやや外側の値になっている。20500この値は走行中に4回目に通過した交差点から空き缶を離すまでの時間である。32この値は走行中のモーターの強度を示している。SPEED_Hは直線、SPEED_Lは急な角などで用いる。OnFwd(OUT_B,SPEED_L);これは片輪を軸とした回転運動のときに使用するもの。Rが右回転、Lが左回転を示す。OnFwd(OUT_B,SPEED_L);これは車体の中心を軸とした小回り重視の回転をするときに用いるものである。SRが右旋回、SLが左旋回を示す。OnFwd(OUT_B,-50);OnFwd(OUT_C,-50);直進運動に用いるものである。Fが前進、bが後進である。300交差点を走行時に使用するものである。交差点を判断するループの1ループあたりの時間をSTEPで示し、このループ回数をnMAX回行うと交差点であるとしている。Off(OUT_BC);Wait(300);交差点を判断しているループから抜けたあとの処理に問題が起きないようにするためのものである。OnFwd(OUT_C,SPEED_L);OnFwd(OUT_B,SPEED_L);Wait(CROSS_TIME);short_break;これは交差点での走行の仕方を定義したものである。ここでもshort_breakを使い誤動作をなくしている。機体は初め使っていたライントレース専門の機体を空き缶を掴めるようにするために改造した。改造に使える時間が時間が短く、大部分の構造は変更することが出来まかった。そこで、もともと機体の制御部の位置を高い位置にすることによって空き缶を掴むアーム部分を取り付けることが出来た。十字路の進入角度が鈍角のものと鋭角のものがあり、鈍角のときに中心部に差し掛かる時間が少なくなり、十字路をうまく曲がることが出来なかった。中心部分に差し掛かる時間を短くすることで十字路と認識させることができうまくいった。プログラムを書いて動かしたときは課題をうまくこなせず、中間ロボコンに挑戦することがとても不安だった。徐々に機体の性質やセンサーの感度を理解でき最終的に完走まで持っていけることが出来てよかった。全体的にぎこちなく、またうまくいったりいかなかったと不安要素がとても多いプログラムを作ってしまった。今回のプログラミングを通してアルゴリズムを考えることも大切だが、何よりも動くものとして形にするときには、まず動くことが大切だと言うことが分かった。今回経験を生かしたプログラミングができるよう、残りの授業を楽しみたい。