前の記事はこちら RoboCupJunior Rescue New Simulation 障害物の回避
自分のPythonの勉強も兼ねて、ちまちまと RoboCupJunior Rescue New Simulation のプログラム作りを楽しんでいます。
カメラの使い方も良く分かっていませんが・・・とりあえず、(被災者発見の)サンプルプログラムを組み込む音で、曲がりなりにも被災者発見ができるようになりました。
(でも、被災者の種別の判定はできません)
で・・・New SIM には、もう一種類、ハザードマップ(Hazard maps)があります。
いつのまにか・・・左から2番目のハザードマップ(P)は、発見できるようになっていました。
これは単純に白地の四角だから(普通の文字の被災者と似てるから)でしょう。
他のハザードマップを検知できるようにするためには・・・さらに勉強しなければなりません。(笑)
改めて、サンプルプログラムを見てみます。
まあ、良く分かりませんが・・・ググりながら解析していくと・・・
①カメラの画像を読み込む
②グレースケールのデータに変換する
③指定した値で二値(白と黒)に変換する
④できた図形の輪郭を調べる
⑤輪郭で囲んだ領域の大きさを調べる
⑥輪郭で囲んだ領域が大きければ被災者が近くに居ると判断する
なんとなく、こんな流れです。
ここまでは分かりました。
この時には・・・③で指定する値(しきい値)や⑥の領域の大きさを調整すれば、ハザードマップも検出できると思っていたのですが・・・そう簡単ではありませんでした。
これは、まじめにやらないとダメみたいです。
いろいろとググって考えたのは・・・
②でグレースケールに変換していますが、カラーのままにして、赤だけを検出すれば、赤いハザードマップ(F)が検出できるのではないかと・・・
ということで、やってみたのがこちら
①カメラの画像を読み込む
②BGRをHSV形式に変換する
③赤色の範囲を決めて、その範囲だけ抽出する
あとは同じで
④できた図形の輪郭を調べる
⑤輪郭で囲んだ領域の大きさを調べる
⑥輪郭で囲んだ領域が大きければ赤のハザードマップが近くに居ると判断する
これで・・・なんと、赤色のハザードマップ(F)、赤と黄のハザードマップ(O)を検知できるようになりました。
ハザードマップの種類の特定はできないので・・・とりあえず「ハザードマップ(F)発見」にしています。
あとは・・・白と黒のハザードマップ(C)だけが発見できません。
これは、どうしたらいいのでしょうか!?
とりあえず、動画です。
RoboCupJunior Rescue New Simulation(DEMO) sample robot-10
一つ古いバージョンのプラットフォームです。何故かと言うと、最新のプラットフォームでは、なぜか障害物回避ができないからです・・・(笑)
動画の 1:22 で、正面のハザードマップを発見します。本来であればロボットの右側しか見ないので、復路で発見するはずなのですが・・・逆に復路では発見せず(できずに)スルーします。(何で!?)
続きの記事はこちら RoboCupJunior Rescue New Simulation ハザードマップの発見 つづき