| HOME |
マイコンカーに新たに加わった試練です。画像処理においても大きな試練となっていますが、今回画像処理で越えたいと思います。
白線の幅を測定し、測定幅が「50」以上「100」以下ならばハーフラインの検出とします。ハーフラインではレーンチェンジが「右」か「左」かも検出しなければなりません。今回、ハーフラインの重心位置を測定しプラスなら右レーンチェンジ、マイナスなら左レーンチェンジと判定します。
ライン センター 幅
0 -64 1
1 31 64 ←ハーフライン発見(ライン幅が50以上100以下で中心が「31」でプラス)
2 16 20
3 16 20
4 18 22
5 18 22
6 18 22
7 18 22
「2本目」のラインで白線の幅が64なのでハーフラインと判断しています。次にその白線の重心が31でプラスなので右レーンチェンジとなります。
ハーフラインを発見すけば、ブレーキを掛けながらハーフラインの先、約10cm先までロータリーエンコンダーの値で進む。
レーンチェンジを行う方向に車体をあらかじめ寄せておきます。通常のマイコンカーでもレーンチェンジを早く抜けるために行うテクニックです。画像処理でも利用することで車体をなるべく大きく移動させないことで画像処理を簡単にしています。
ラインの終端の検出には、画面の中の白の個数を調べます。通常、全て真っ黒になるのですがノイズも考えられますので30以下の白になると終端と判断しています。
ラインの終端まで移動すると車体をレーンの方にハンドルを切ります。次のラインが見えるまでハンドルを切り続けます。
白の個数が100以上見つけると隣のラインとし、そのラインと車体とを平行になるようにハンドルを調整します。車体とラインとの角度はライントレースで使用した最小二乗法のaaの値で平行になるようにハンドル操作を行います。ハンドル操作はライントレースの時と同じ計算式で行います。
handle2( bb*hp-aa*kp );
ただし、すぐに通常のライントレースモードに戻すと速度が速すぎてコースアウトする可能性が高くなるので、車体とラインが平行となるまで速度を落としてハンドル操作を行う。
レーンチェンジの終了として、aaの絶対値が5以下になると、ラインと車体とが平行になるので、通常のライントレースモードに移行しレーンチェンジの終了します。
aa = −3