詳しくはこちらを参照2019a/Mission2ロボットを動かすルートは次の通り。今回の課題は線に沿って動く動作と球を掴んでゴールするという動作の2つが必要となるので、形を考えるのに少し苦労した。後でも述べるが、センサーの位置がタイヤの後ろになってしまっているのが今回の失敗の1番の原因だと思われる。画像左側がロボットの前部分になるが、見てわかるようにタイヤの後ろにセンサーがきてしまっている。ロボットの全体アームを取り付けるだけの簡易的なものにしたため、アーム用のプログラムを書く手間が省けた。球が取れるかはモーターの動き具合に左右されてしまうので、そこも改善すべき点の1つである。アームの先端に小さな返しを取り付けることによって球を出にくくした。センサーはなるべく紙面と垂直になるように取り付けた。今回のプログラムは、センサーを使って、黒線をトレースするもの,交差点を直進するもの,ヘアピンカーブを曲がるものの3つを作った。センサーが示す色の値を5段階で表すことによって、より細かい動きが可能になった。今回のプログラムの定義は次のようにした。左右に曲がる曲がり方をそれぞれ3種類ずつに区切ることで、よりカーブをやりやすくした。僕は今回、左トレースで考えた。することによってほとんどの線を左トレースだけで動くことができると思ったからだ。CurrentTickを使うことで黒色の時間を計り、その値がt_maxを超えるとwhileループから抜け出すようになっている。ここでのt_maxは黒でいる時間の上限であり、そこに数値を代入してしきい値の役割を果たしている。untilを用いることでしっかりループの時間を設定した。†このプログラムは線をトレースするプログラムとほとんど同じであるが、急カーブを曲がる際にトレースするだけのプログラムだとセンサーの位置やロボットの形状、思わぬ方向に向いてしまうため、曲がる用にもう1つプログラムを用意した。上記のプログラムで交差点に差し掛かるとロボットは、斜め左を向いているはずである。そこで一旦黒線から抜け出して右回転して元の線に戻れるようなプログラムを作った。ここでもuntilを使うことでちゃんとした向きになるまで回転したり動いたりできるようにしてある。上記のプログラムを組み合わせてこのように組んだ。Off(OUT_`BC);}僕は今回ぎりぎりまでプログラムを少なくしてみようと思った。僕の考えではこれらのプログラムを組み合わせればゴールできると考えていたからだ。今回のルートだとそれは可能だと思う。球をとる動作に関しては球を置く位置をアームが動く可動範囲に置いておくことで自動的に入るという仕組みにしてある。意外と入ってくれたので良かったと思う。直線的な部分はしっかり進んだが、急カーブになると正しい道から逸れてしまった。モーター(電池)の都合で上手く曲がってくれなかった。「ロボットについて」でも述べたように、タイヤの後ろにセンサーを付けてしまったせいでより多くの時間回転してしまったため思わぬ方向にロボットが向いてしまったと考えられる。こまめに電池の管理を怠っていたために今回のように電池がたりなくなってしまったと思われる。今回課題2をやってみて、とりあえず難しいなと心から感じた。ペアの人といくら悩んでもわからないエラーが出てきたり、先生がホワイトボードに書かれたプログラムを試してもうまくいかないなどたくさんの問題が出てきた。同時に、やっていて楽しくも感じた。直しても直しても出てくる課題に立ち向かうことが特に楽しかった。課題3は4人でやるのでみんなで協力してやっていきたい。課題2では、わからないことが課題1に比べてたくさん出てきた。それにもかかわらず1番頼りになる先生に聞くこともなく自分たちだけで悩んだことが最も反省すべき点だと思う。早く聞いていたらロボットの構造的な問題に気づいていたかもしれない。プログラムの簡略化を図りそれのせいで誤作動が多くなり、改良する回数が増えたのもよくないと思う。適度に簡単にすることが大事なんだなと思った。