今回は「画像処理」についてお話しします。
ロボットの頭には全方位カメラが取り付けられています。

カメラはSONY製のDFW-VL500です。
また、カメラの性能を最大限に引き出すため、ドライバはCMU 1394 Digital Camera Driverを使っています。
画像処理にはOpenCVというライブラリを使っています。
画像処理は「画像取得スレッド」と「画像処理スレッド」に分かれています。
最近流行のマルチスレッドで動いているんですね~。
画像取得スレッドでは、
・データの読み出し
・240×240にトリミング
・色変換(YUVとHSV)& 色抽出
画像処理スレッドでは、
・ボール検出
・自己位置推定
・障害物検出
といった処理を行っています。
中型リーグでは自己位置推定が大きな課題となっており、多くのチームが「パーティクルフィルタ」を用いた手法を採用しています。
OpenCVではパーティクルフィルタは「Condensation」という形で実装されています。パーティクルフィルタって何?という方はこちらをどうぞ(英語サイトです)。
検出した白線情報を元に、パーティクルフィルタによって自己位置を求めます。
↓こんな感じ
画像処理は行動に比べて専門性が高いです。
ですが、わかるようになれば、これほど面白いものはありません。「あれをやってみよう!」「こういうのはどうか?」など、考えを巡らせるのが楽しくなっていきます。
次回は「通信」についてお送りします。
0 件のコメント:
コメントを投稿