LoginSignup
5
5

More than 3 years have passed since last update.

ETロボコン プライマリークラスで青色マーカー検出をやってみた

Posted at

ETロボコンでは、ライントレース走行を行います。
ラインは通常黒色ですが、途中に目印としてマーカーと呼ばれるラインの色を変えたエリアが存在します。

マーカーは2018年までは灰色が使用されてきましたが、2019年は青色に変更されました。

倒立サンプルプログラムはev3_color_sensor_get_reflect()を使用していますが、
この反射光モードでは、カラーセンサーをラインの中央に静止させた状態でようやく黒色と青色の違いが分かる程度の差しかありません。

マーカー検出のために色を見てみたいので、ここは素直にev3_color_sensor_get_rgb_raw()を使うことにします。

サンプルコースを使用してコースの計測値を確認してみます。
raw.png

RGB各々で値の範囲が異なりますので、黒色~白色が-50~50の値になるように正規化を行って、各色のレンジを揃えて変化を確認してみます。
normal.png

コースから取得したRGB三色の変化から次の方法で制御を行うことにしました。

  • R赤でライントレース
  • B青でマーカー検出
  • G緑は使わない

R赤はライントレースで使用する黒色と青色で近い値が出るため、マーカーでコースアウトしない安定したライントレースが期待できます。
B青は青色マーカーをライントレースしている時に値の変化をしっかり認識できそうです。

動かしてみた

会場都合で動画が残ってないですが、ガレージインを青色マーカー検出で行った制御ログになります。
R赤でライントレースを行っているため、赤いラインが左軸の0付近にあります。
B青がマーカー部分で大きく変化していることが確認できます。
G緑は使用していません。
黄色いラインが右軸の相対距離で、マーカーの長さ150mm区間を検出できていることが確認できます。
190713_142753_Rガレージ.png

最後に

RGB Raw値を使うということになると、アドバンストクラスのチームがやっているようなカラーブロックを判別する処理を実装しないといけないのか?と思われる方もいらっしゃると思いますが、プライマリークラスでやりたいことはライントレースと青色マーカー検出だけ(2019年競技規約)ですので、そんなに手間を掛けなくてもできるよということで参考にしてみてください。

このやり方が正解だというわけではありませんがCSモデルを見た中では、ID:260 平成デロリアンさんが同様のことを行っているようですので、ETロボコン2019参加者の方はモデルをチェックしてみてください。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5