Python
micropython
OpenMV

OpenMVに触ってみた

More than 1 year has passed since last update.

OpenMVって何

最近OpenMVというマシンビジョンユニットが販売されています。
https://openmv.io/
IMG_9631.JPG

プロセッサーにCortex-m7を搭載したマイコンボードのような物で、ボードにはイメージセンサーとレンズが乗っている他、MicroSDスロットもあり、スナップショットや動画の保存ができたり、その他のデータ保存が可能なようです(そのうち試してみます)。
またGPIOも何本か出ていて接続することができます。
メーカーからはシールドも販売されているようです。
https://openmv.io/collections/shields

プログラムは専用のIDEが用意されており、micro Pythonでプログラムを作成します。
https://openmv.io/pages/download
ide_first.jpeg
IDEにはコードエディタ、シリアルモニタ、カメラ画像、そしてヒストグラムが表示されます。

IDEとセットでサンプルプログラムがいくつかあり

  • Lチカ
  • とりあえずカメラ画像をIDEに表示させるプログラム
  • カメラ画像に図形なんかを描画するプログラム
  • 画像にフィルターかけるプログラム
  • 動画やスナップショットを保存するプログラム
  • 数字を認識するプログラム
  • 色を認識するプログラム
  • 特徴点を抽出してマークするプログラム
  • 顔を検出するプログラム
  • アイトラッキング
  • 平面や円を検出するプログラム
  • シールドを使ったプログラム

この他様々なサンプルプログラムがあります。
今回はとりあえず接続して動かすところまで触ってみました。

なお今回はMacOSX10.13とOpenMV IDE 1.7.1の環境で動かしています。

とりあえずOpenMVを動かす

OpenMVを接続する

まず以下のリンクからOpenMV IDEをダウンロードして展開します。
https://openmv.io/pages/download

IDEの展開が終わったら起動してみましょう。下のように「helloworld」のサンプルプログラムが開かれているIDE画面が出てきます。
ide_first.jpeg

OpenMVとPCを接続し、ドライバのインストールが終わればIDE側から接続する準備が整います。

OpenMVとの接続と接続状態の確認はIDE左下のボタンで行います。
上のアイコンのボタンがOpenMVとの接続、下のアイコンのボタンがコード実行です。
disconnect.jpeg
正直わかりにくいですが、上のように接続されているように見えるアイコンのときは切断されていて、クリックすると接続されるという意味のようです。

接続されると下のようになります。
connect.jpeg

コードを実行する

実行前にまずファームアップデートを

初回起動時に「skip_frames(time = 2000)」なんて命令無いよ、なんてIDEから怒られ実行ができませんでした。
これはOpenMV側のファームウェアバージョンが古いのが原因のようで、動かない場合はIDE下中央「Firmware Version」のところに「バージョン古いからバージョンアップしてね」みたいな文言が出ている場合があります。(バージョンアップしちゃったので画像ありません)
fwv.png
この時は、このIDE下のバージョン表示をクリックすることでファームウェアのバージョン確認とバージョンアップ(あるいは復元)を行うことができます。
購入後まず始めに行う

コードを実行する

OpenMVと接続した状態で、IDE左下の緑の三角のボタンをクリックするか【⌘+R】で、IDEのコードエディタに入力されているプログラムが実行されます。
実行実行されている間は、アイコンは下のようになります。
run.jpeg

問題なく実行されると、IDE右上にカメラの映像が表示されるのと一緒に、IDE下の「SerialTerminal」をクリックするとfpsの値が連続で送られて来ているのが確認できます。
run_hw.jpeg

この他にも色々と機能がありますが、次は顔検出を使って顔を追いかけるロボットを作ってみようかと思います。