省エネ二足歩行ロボット

ある研修でライントレースロボットを作成しました。自分が作成した部分の発表資料です。

発表資料

本機のマイコンで行っている処理の流れを示します。
まず、「画像取り込み」でCMOSカメラからのデータを受信し、輝度のみを取り出します。
次に、「画像処理+解析」で取り込んだ画像データからラインを識別し、ラインが画面のどの位置にあるか判定します。
「進行方向決定」では、ラインの位置と現在の状態から進行方向を決定します。
「歩行駆動制御」で目的の動作を行うためパルスを生成します。モータにはステッピングモータを使用しました。
処理の概要
  1. 2値化
    カメラから得られるデータは256段階のグレースケール画像になっているので、適当な閾値を設けて白黒の2値画像に変換します。 ここで小さなゴミや影、明るさのバラつき等が除去されます。
  2. モザイク処理
    そのままでは10万画素もの膨大な情報になってしまうので、縦4マス、横16マスに圧縮します。 ここで、2値化でも残されたノイズも除去され、後の画像処理の負荷軽減につながります。
  3. ライン識別処理
    ここでラインとそれ以外の領域に分離します。 ラインは画面の下部から伸びる黒の連続した領域だと仮定しています。 画面下部に黒マスが現れない場合にはラインを見失ったと判定します。 この処理により、隣のラインやコースの外側がカメラに写り込む場合の誤判別を防止します。
  4. ラインの向き判定
    前の処理で見つけたラインが画面上端および左右の端に達している所を探します。 複数見つかる場合には前方を優先します。
画像解析、進路判定
画像処理で得られた情報を元に、ここで示すルーチンによって進行方向を決定します。 電源立ち上げ直後はInisitalから始まります。 そして、ひし形の「Search」内で先ほどの画像処理を行い、ラインの位置を取得し、それぞれの状態に遷移します。 詳細の解説は避けますが、ラインを見失った場合の処理もここに組み込まれています。 ちなみに、LED表示によってどのステートに居るのかが分かるようになっています。 ステートマシン