移動式ロボットプログラミング基礎

7. 画像処理

1. カメラ画像の利用

Image Processing

RobView のバージョンによって,用意されているFunction Blockが異なる場合があります.

マイナーバージョンアップで消えるFunction Blockもあります.

今回は,RobView2 で用意されているFunction Blockを解説しますが,これらは今のところRobView 3/4にも存在します.

なお,RobView のバージョンによってはカメラ画像が写らず黒い画面になる場合があります.その場合,RobViewを動かしているパソコンのカメラを使うことで対応して下さい.Function Blockリストの一番下にある「add」から「Local camera」を追加して,プロパティを開いて「scan」を押すと,パソコンに接続しているカメラのリストが出てきます.それを選ぶと,RobViewを動かしているパソコンのカメラ画像が写ります.やり方がよく分からない場合は,演習の項目を飛ばして下さい.

私(植村)の手元で確認できた範囲では,RobView2 + RoboCupSim であれば,カメラ画像が写りました.それ以外の組合せ(Robotino Sim × RobView3/4)では写りませんでした(泣).

学生からの報告としてRobView 4.0.5 + RobotinoSim 1.4.2の組み合わせでカメラ画像が写ったとのことです.一度,その組合せを試してみて下さい.

RobView2 のダウンロードは,Robotino Wiki - Downloadsの「Robotino View」の項目の「Windows 32bit」を選んで下さい

Line Detector

(説明の動画が長くなったので,分割しました)

線を検知するFunction Blockを紹介します.Line Detectorです.

変数(パラメータ)は3つあり,検知に使う明るさの閾値,検知位置(下限側の値),検知範囲(検知幅)を設定します.

線(エッジ)の抽出結果は,2値(= 0または1)の画像で返ってきます.「見つかった」は1(白)を,「見つからなかった」は0(黒)を返します.

シミュレータ上の黒いテープが白色で返ってきます(色で考えると混乱の元になります).

2. 色検知の難しさ

Color Range Finder

指定した色を見つけ出すFunction Blockです.先ほどと同様,抽出結果は,2値(= 0または1)の画像で返ってきます.「見つかった」は1(白)を,「見つからなかった」は0(黒)を返します.

画像をマウスで範囲選択すると,その中にある色を検知するようになります.範囲は1つしか用意できないので,複雑な色の検知は無理です.複数の色を検知する場合には,Function Blockを複数使いましょう.

誤認識(=誤検知)をどこまで事前に想像できるかがポイントです.

    1. あるべき物が,見えない場合
    2. 物がないのに,あると見える場合
    前者はテストが簡単ですので対応しやすいのですが,後者は事前テストできない場合が起こりえるため難易度が高くなります.

3. プログラミング課題

物体追跡

画像検知とモータ制御を組み合わせて,目標物体に近づくプログラムを作ってみましょう.

    1. 検知物体が正面を向くように回転
    2. サイズが一定値になるまで前進
    3. 上記2つを同時に行ってみる

4. 課題の解説

物体追跡

Segment Trackerを使いましょう.

検知物体のうち,どのような物体を追跡対象とするかを指定できます.

一度追跡を始めると,その物体が画面から消えるまで追いかけ続けますので,追跡条件を途中で満たさなくなる場合もあります.例えば,「中心に近い物体」という条件で追跡を始めた物体が移動して画面の端に行き,端にあった物体が画面の中央に移動してきても,最初の物体を追跡し続けているので,そのときには「中心に近い物体」ではなくなっています.

■移動式ロボットプログラミング基礎■に戻る