[[2019a/Member]]

#contents

*課題の解説 [#md50f4e0]

**内容 [#pe98ebdd]

A地点を出発し、下図の赤い矢印にそって動くロボットを作成する 。

&ref(001.jpg);

**コースの概要 [#y5275963]

A地点から出発 → M → K(直進) → L(ピンポン玉をつかむ) → K(右折) → J(一時停止の後、左折) → I(直進) → H(直進) → G(左折) → F → E → D(一時停止の後、直進) → C(直進) → B(一時停止) → シュート→ A地点に入る(ゴール)

**注意点 [#d825c545]

交差点では1秒間停止し、丁字路では直角方向に進入する時のみ一時停止すること。

*ロボット作成の方針 [#tc268f06]

**ライントレース [#l8ceb661]

ライントレースをするためにカラーセンサーを使用する。このカラーセンサーは対象に向かって光を出し、反射した光の量を測って対象の明るさを測定している。黒い部分を測ると反射量が少なくなり値が小さくなる。白い部分を測ると反射量が多くなり値が大きくなる。

&ref(002.jpg);

ライントレースをするにはカラーセンサーの値が常に一定になるように進めばよい。今回は紙とラインの境目をトレースする方法を利用することにした。つまり白い領域に入ったら黒い領域に向かうようにし、黒い領域に入ったら白い領域に向かうようにすることで常に黒と白の中間を辿るようにすることにした。

ラインを滑らかにトレースするためにはラインに対して本体が入る角度をできるだけ浅くするために小さく曲がる必要がある。一方で急なカーブを曲がるときには大きく曲がらなければいけない。スムーズな移動をするためには状況によって曲がる量を変える必要がある。
このセンサーの値は連続的に変化するので黒と白に加えて黒よりの灰色や灰色、白よりの灰色と分けることができる。今回はこの五つに分けて大きく右に曲がる、小さく右に曲がる、直進する、小さく左に曲がる、大きく左に曲がるようにした。




**交差点認識、判別 [#l47d0d15]

基本はライントレースをしているので交差点に入ったことをロボットに認識させる必要がある。ラインの左側をトレースさせる場合交差点に入るとカラーセンサーの値は黒色を示すので左に転回してしまう。ここで普通のカーブと異なる点は黒色の領域にいる時間がカーブの時より長いことである。この違いを利用して交差点を判別することにする。


普通はtime関数を使って黒色を示す時間を計測して判別するところだが、ここではあえて黒色を示した”回数”を利用した。このプログラムではwhileを使って0.001秒ごとにカラーセンサーの値を読み取り、ifを使ってその値に合わせた5段階の動き方をするように作っている(0.001秒ごとの周期に設定しているが実際に0.001秒ごとにやってくれているのかはわからない)。ここでロボットがラインに大きく入り込んだとすると、ロボットはラインから出るように動くはずである。この動作は白い部分に出るまで連続で続く。ここで変数(ここではiと置いている)を使って黒に入ったときにiに数を足していきiが一定の値を超えた時にこのトレースが止まるようにすれば交差点を認識できる。もちろん黒い領域にいる時間が最も長くなるのは交差点(直角カーブでも止まるが交差点を左折する動きをすれば問題ない)であるから交差点でのみ止まるように値を調節する必要がある。またこの設定では小刻みにラインに入っても止まるので灰色より明るい場所に入った場合にはiの値を0、すなわちリセットしている。

**ボールキャッチ・シュート [#p72435c8]

ボールをつかみ、シュートするという複雑な動きをたった一つのモーターで行わなければけないというのはかなり無理のあることである。しかし、我々はこの難題を解決する方法を編み出した。まずシュートする方法を考えなければならないが、チームの一人がカタパルト式がいいという熱い要望があったのでカタパルト式を採用することになった。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS