今回の課題の内容は、A地点を出発しいずれかのコースを黒線に沿って動きボールを捕まえるというものである。僕が選んだのは一番のコースである。上のようなロボットをつくった。基本構造は説明書と同じであり、ボールを捕まえる機構を上に乗せただけである。改善すべき点としては、もっと光センサーとタイヤとの距離を短くするべきだった点だ。タイヤとセンサーの位置が遠いとラインを識別する位置とタイヤが曲がる位置にずれが生じてしまい、ライントレースが上手くいかないことがあった。急なカーブを交差点と勘違いしてしまい、カーブの途中でとまってしまうこともあった。過去のレポートを参考にして多少時間がかかっても光センサーの位置を直したほうがよかったと感じた。†ボールをつかむ機構は上のようにした。アームはボールを確実につかめるようにかなり大きめにした。工夫した点は、車体の重心を移動させないようにできるだけ軽くしたことと、カーブしたときにボールに当たらないようにパーツを少なくし、シンプルな構造にしたことだ。反省点は、ボールを見つける超音波センサーを使えなかったことだ。自力でボールの手前まで車体を動かすしかなかった。センサーを使ってモノを見つけるプログラムを描けるようにしたい。黒い線に沿って動かすためにライントレースというプログラムを作る。灰色」、「完全な白」の5つの段階の明るさを判別して、それぞれの明るさで別々の動きをさせる。5つの測定した値は以下のものである。それぞれの値の時の動作のプログラムは次のように定義した。//ボールを掴むスムーズにライントレースができるように、五段階に分けた。}このプログラムは授業で習ったものとほとんど同じなので説明は省略するが、あまりスムーズにならなかったので線の黒さによって速度を変えるプログラムにすればよかったと感じた。線の右をトレースするプログラムも書いたが、使わなかったので省略する。交差点かどうかを判断するのにはライントレース中の真っ黒である時間で認識させる。交差点では、直線を走るときよりも、真っ黒の時間を走っている時間が長くなるので、そのターンにかかる時間が一定の時間を超えたときにロボットが止まるようにする。これを行うために、時間変数t0を用いた。測る直前の時刻を時間変数t0に代入して、このt0を基準に時間を測定する。このt0と現在の時刻との差を計算することによって、時間がどれくらいたったのかがわかる。t0=CurrentTick()で得られる。私が作ったロボットでは交差点でターンするのに0.11秒かかった。ゆえに、t0と現在の時刻との差CurrentTick-t0が0.11より大きいとき、機体が止まるようにする。ifの中にto=CurrentTick()をいれ、toと現在の時刻との差を0にすることで、黒の値以外の値をとっているときに変数の値CurrentTick()が増え続けていき、0.11秒を超えてしまい、交差点以外のところで止まるのを防ぐ。†ただ単にライントレースをすることとボールを捕まえることは簡単にできたが、交差点の認識や急カーブを曲がることは難しかった。maxを使って無視するプログラムにすればよかったと思いました。ロボットに関して言えば車体のシンプルで、ボールをつかむ機構も少ないパーツで作ることができたので、前回の反省を生かせていると思いました。