今回は二輪車型を採用した。ラインという道路を走るので、この形状が一番適しているのはいうまでもない。ボールをうまく掴むために、今回は以下のような機構を用意した。左右両側から覆うような構造にしたため、ボールに到達した時完全にボール正面に位置しなくても、ボールを捉えやすい。この機構は、ボールを離した状態ではボールを弾いてキックすることもできる。+本体とラインセンサーの距離を「近くに置いた」。実はこの距離には加減が重要で、前回私が作成した文字を書くロボットのペン先の位置と同様に回転軸の中心にラインセンサーを置いたのでは、プログラム設計上の問題が生じる。プログラムを計画通りに(プログラム-方針の項目参照)動かすには、回転軸中心の少し前方にラインセンサーを置かなくてはならない。+比重の高いギアを採用した。プログラムを作成していくうちに、一連の動きを「早く」終了するためには、「速い動き」ではなく、「正確な動き」である必要があるとわかった。言い換えれば、安定性のために低速での動作を選んだということである。因みに、このおかげで一層タイヤとラインセンサーの位置が近くなった。ラインセンサーを用いれば、センサー先の色の濃さが判別できる。これを用いて、黒色だったら線の外側へ斜め前方向に、白色だったら線の内側に斜め前方向に移動することができれば、線の「縁」をたどることができる。+方針を達成するために、黒、黒よりのグレー、グレーよりの白、白、の4つの境界を用意した。次に、効率よくプログラムを作るため、順に、直進、右/左斜め前へ直進、右/左方向へ回転する動作。その他にも小休止、(使うことはなかったが)後退を定義した。※35というパワーは、正確さを失わずに全行程を終了させることのできる最高の速さとして調整した。+次に方針に従ってラインをトレースするサブルーチンをを左端、右端それぞれについて作った。継続して黒にいる時間が150×10^-3秒経過したとき、サブルーチンを終了するようにした。(実際にはサブルーチン開始後即その時の時刻をt0として定義し、while文を用いて「以降の時々の時刻-t0」が150×10^-3より小さい時はトレースを実行としている。黒の時だけタイマーが効くのは、黒以外の時はそれぞれの動作の直前にt0をその時の時刻として定義し直しているからである。※このサブルーチンでは、設計で述べたラインセンサーと動力モータの絶妙な位置関係が生きる。いうのも、極端な色(白や黒)での軌道修正は純粋な回転(モーターを左右逆に動かす)を採用している。これは交差点を渡った後やボールをつかんだあとの方向修正にとても有用だからである。仮にラインセンサーが回転軸中心にあったのではこの回転では全くラインセンサーの値は全く変化しない。逆に少しだけ前方においていれば値は変化するので斜め前方向への移動にシフトできる。+次段階として、(順に)十字路手前のライン右端から十字路を超えた先のライン左端/十字路手前のライン左端から十字路を超えた先のライン右側/十字路手前から十字路の向こう(端の変更なし)へ移動するサブルーチンを作った。これが、右端トレースと左端トレースを使い分けるミソとなる。2回目のK以外は音が鳴って、交差点を渡る合図となるようにした。黒になるまで直進する。それだけでは直進方向と垂直方向の線上に行くので、交差点として認識してしまう。そこで少し直進を入れた。Cに到達したことを明確にしたいので、敢えてCまで右側で、C点の交差点で右側から左側への移動を入れた。D~Gは左端、枠の外側を移動すれば、このマシンは正確なので(外側の白では回転の動作というのもあるが)、90度の角をトレースできる。Jで違う挙動を取りたい。カウンターを用いてトレース、交差点通過を2回繰り返した。(repeat記号でもよかった)JKの右側に出る動作は、調整して線右側の白い部分に出るようにした。原始的な調整で、KLの左側に行くよう点Kで回る。次だが、論理積を用いてカウンターを用いた条件が両方とも満たされた時だけトレースするようにした。線の外側のカウントと内側のカウントを二つ用意して、ボールのところまでで、止めるようにした。Lでの方向転換を少しすれば、あとは線の右側走行に切り替えることで、白の時は回転し軌道修正してくれる。その後は上記注釈通りに実行する。問題はヘアピンカーブだが、これも外側ならば問題なく辿ることができる。グレーの綴が間違っていました、GLAYではなくて、GRAYが正解でした。今回は二輪車型を採用した。ラインという道路を走るので、この形状が一番適しているのはいうまでもない。ボールをうまく掴むために、今回は以下のような機構を用意した。左右両側から覆うような構造にしたため、ボールに到達した時完全にボール正面に位置しなくても、ボールを捉えやすい。この機構は、ボールを離した状態ではボールを弾いてキックすることもできる。+本体とラインセンサーの距離を「近くに置いた」。実はこの距離には加減が重要で、前回私が作成した文字を書くロボットのペン先の位置と同様に回転軸の中心にラインセンサーを置いたのでは、プログラム設計上の問題が生じる。プログラムを計画通りに(プログラム-方針の項目参照)動かすには、回転軸中心の少し前方にラインセンサーを置かなくてはならない。+比重の高いギアを採用した。プログラムを作成していくうちに、一連の動きを「早く」終了するためには、「速い動き」ではなく、「正確な動き」である必要があるとわかった。言い換えれば、安定性のために低速での動作を選んだということである。因みに、このおかげで一層タイヤとラインセンサーの位置が近くなった。ラインセンサーを用いれば、センサー先の色の濃さが判別できる。これを用いて、黒色だったら線の外側へ斜め前方向に、白色だったら線の内側に斜め前方向に移動することができれば、線の「縁」をたどることができる。+方針を達成するために、黒、黒よりのグレー、グレーよりの白、白、の4つの境界を用意した。次に、効率よくプログラムを作るため、順に、直進、右/左斜め前へ直進、右/左方向へ回転する動作。その他にも小休止、(使うことはなかったが)後退を定義した。※35というパワーは、正確さを失わずに全行程を終了させることのできる最高の速さとして調整した。+次に方針に従ってラインをトレースするサブルーチンをを左端、右端それぞれについて作った。継続して黒にいる時間が150×10^-3秒経過したとき、サブルーチンを終了するようにした。(実際にはサブルーチン開始後即その時の時刻をt0として定義し、while文を用いて「以降の時々の時刻-t0」が150×10^-3より小さい時はトレースを実行としている。黒の時だけタイマーが効くのは、黒以外の時はそれぞれの動作の直前にt0をその時の時刻として定義し直しているからである。※このサブルーチンでは、設計で述べたラインセンサーと動力モータの絶妙な位置関係が生きる。いうのも、極端な色(白や黒)での軌道修正は純粋な回転(モーターを左右逆に動かす)を採用している。これは交差点を渡った後やボールをつかんだあとの方向修正にとても有用だからである。仮にラインセンサーが回転軸中心にあったのではこの回転では全くラインセンサーの値は全く変化しない。逆に少しだけ前方においていれば値は変化するので斜め前方向への移動にシフトできる。+次段階として、(順に)十字路手前のライン右端から十字路を超えた先のライン左端/十字路手前のライン左端から十字路を超えた先のライン右側/十字路手前から十字路の向こう(端の変更なし)へ移動するサブルーチンを作った。これが、右端トレースと左端トレースを使い分けるミソとなる。2回目のK以外は音が鳴って、交差点を渡る合図となるようにした。黒になるまで直進する。それだけでは直進方向と垂直方向の線上に行くので、交差点として認識してしまう。そこで少し直進を入れた。Cに到達したことを明確にしたいので、敢えてCまで右側で、C点の交差点で右側から左側への移動を入れた。D~Gは左端、枠の外側を移動すれば、このマシンは正確なので(外側の白では回転の動作というのもあるが)、90度の角をトレースできる。Jで違う挙動を取りたい。カウンターを用いてトレース、交差点通過を2回繰り返した。(repeat記号でもよかった)JKの右側に出る動作は、調整して線右側の白い部分に出るようにした。原始的な調整で、KLの左側に行くよう点Kで回る。次だが、論理積を用いてカウンターを用いた条件が両方とも満たされた時だけトレースするようにした。線の外側のカウントと内側のカウントを二つ用意して、ボールのところまでで、止めるようにした。Lでの方向転換を少しすれば、あとは線の右側走行に切り替えることで、白の時は回転し軌道修正してくれる。その後は上記注釈通りに実行する。問題はヘアピンカーブだが、これも外側ならば問題なく辿ることができる。グレーの綴が間違っていました、GLAYではなくて、GRAYが正解でした。