4方向ビジョンシステムの進捗(M1nカメラモジュール使用)
はじめに
大変お久しぶりです。しばらく記事を書くのをサボっていました。
今回は、以前の記事で紹介したSipeed M1nカメラモジュールを使用したビジョンシステムが完成し、実用できるまで開発が進んだので一旦記事にまとめようと思います。このビジョンシステムはロボカップジュニアのサッカーオープンリーグに出場するロボットに搭載するために開発しました。
本編
ハードウェア
写真のように4つのカメラが円型に等間隔で配置されています。M1nにもともと付属しているカメラの素子はOV2640という型番のものですが、FFCケーブルが短く今回のような配置は難しかったです。代用としてOV7740というOV2640よりも性能がいい(らしい)ものをAliExpressで見つけたので購入しました。
レンズの視野は死角を減らすために一番大きい160°のものを購入しましたが、M1nに接続して確認したところ実際の視野は95°くらいで、4方向にするにはギリギリの視野になりました。それでも死角はほとんどできなかったので良しとします。(一度120°のものを買って失敗しています)
また、レンズが少し下(30°)を向いているのはコート外のものが映らないようにと、ロボット近くにボールがあった時に死角がでないようにするためです。
レンズの固定は、両面テープが付属していましたが、強い衝撃を受けるロボットに使用するには不向きだったので、3Dプリンタで作ったパーツで挟み込むようにしてガッチリと固定しています。
カメラモジュールは高性能ですが、その分発熱も激しいです。指でギリギリ触れるくらい熱くなります(60℃くらい?)。モジュール中央に冷却ファンが搭載されていますが、直接M1nのボードに風が当たっていないのであまり効果がないかもしれないです。今後マイコンそれぞれにヒートシンクを搭載し、各モジュールに風を送る設計に修正しようと思います。
ソフトウェア
オレンジ色のゴルフボール、黄色ゴール、青色ゴールを色認識し、それぞれの角度(0°〜90°)と距離をUARTでF446REに送信しています。カメラから見た座標をコート上での座標に変換する方法はまだ研究中なので、三角関数で無理やり変換しているとだけ書いておきます。これに関しても今後記事を挙げるかもしれません。
そこまでプログラム上で難しい処理はしていませんが、ゲイン調整や彩度調整、閾値調整が難しいので自動化したいなと思っています。
フレームレートはパソコン接続状態で15fps前後、接続していない状態で30fpsくらい出ています。画像の取得範囲やメモリの使用量を調整することでfpsを上げることができました。
公式リファレンスを読むとありがたい情報が次々と見つかります。wiki.sipeed.com
STM32 F446RE(カメラ統合マイコン)
4つのカメラモジュールからUARTで受け取った情報を統合し、ボールとゴールのそれぞれの角度と距離をメインマイコンにUARTで出力します。それぞれのカメラモジュールで処理しきれなかったエラーデータは他のカメモジュールからの情報を利用して修正します。
メリット・デメリット
上記のことを踏まえて、従来の双曲線ミラーを使用した全方位カメラと比べた時のメリットデメリットを簡潔にまとめます。
メリット
遠くのボールでも認識しやすい
ミラーやアクリルパイプを介さないので画像が綺麗
デメリット
プログラムを書き込むのに時間がかかる → 工夫次第で解決可能
重心が高くなる → バッテリーの配置などである程度解決可能
計算が大変 → 数学を勉強するきっかけになる
スペースをとる → 設計次第ではカッコ良くなる
デメリットの方が数的には多いですが、個人的にはメリットの方が断然大きいと考えています。4方向カメラのビジョンシステムを導入して後悔は全くしていません。
今後の展望
現在はコート上の自己位置推定にゴールの角度と距離のみを使用していますが、より正確なデータを得るためにコートの緑色を認識して自己位置推定ができればと思っています。
また、現在は閾値の調整をするために4つのカメラモジュールにそれぞれプログラムを書き込まないといけ試合前の貴重な時間を節約するために、カメラ統合マイコンから閾値を調整できるようにしたいと考えています。
基板紹介
ビジョンシステムの基板はJLCPCBのPCBAサービスを利用して作成しました。半田付けが難しいチップ部品が実装された状態で届くのでハンダ割れの心配がなく、半田付けの時間も節約することができます。また、JLCPCBに欲しい部品がなくても代理で発注をしてくれるので非常に便利です。
JLCPCBは中国にある基板製造メーカーです。私は以前、プリント基板制作は小さなものでも非常に高価になるという印象がありました。しかし、JLCPCBでは最安$2から基板を発注することができます。国内ではこんなに安く基板発注をできるサービスはおそらくないでしょう。
さらに、JLCPCBは基板作成だけでなく、部品実装(PCBA)、3Dプリント、CNC加工などのサービスも展開されています。これらも非常にお手軽な価格になっています。
新規ユーザーには$54クーポンも貰うことができます。
↓発注方法の動画
JLCPCBへの発注方法 - YouTube
この記事が気に入ったらサポートをしてみませんか?