前回記事、RaspberryPi4 HALCON・Baslerの導入テストの続きとなります
●RaspberryPi4 HALCON・Baslerの導入テスト●
前回、RaspberryPi4(略ラズパイ)を使用してHALCONの導入を行い、サンプルプログラムの実行までを行いました。
今回はHALCONで制作したプログラムを使ってリアルタイムで画像処理を行っていきます。
C++のコンパイルの必要ファイルは、LINX様よりいただいたコンパイルフォルダsample_embを使用します。
HALCONからのエクスポート
まず開発環境からラズパイで実行するプログラムの作成を行います。
プログラムの内容
Pylonを使い、リアルタイムで撮った画像から特定の画像を見つけ識別させるパターンマッチングプログラム
テストプログラム.hdev
この作成したプログラムをC++にエクスポートしていきます。
HALCON<ファイル> -> エクスポートを選択し、以下のように設定しました。
エクスポートするファイルと形式
形式 : C++
エクスポートする範囲
範囲 : プログラム
プロシージャオプション
最下項目以外チェック
プロシージャの出力先 : 単一ファイル
ウィンドウエクスポート
HALCONウィンドウの使用
エンコード
UTF-8
次に、エクスポートされたC++のファイルをラズパイに転送し、
sample_emb/sourceファイルに転送したものをコピーします。
LXTerminalを起動し、
—————————————————————————————————-
cd sample_emb/makefiles
—————————————————————————————————-
このコマンドでmakefilesフォルダに移動します。
ここのmakefilesフォルダではmakefileの中身の変数を変更します。
変更する方法は前回で使用したnano、テキストエディタを使用し変更します。
変更箇所は2点(実行環境が違う場合3点)あり、そこを修正します。
・PROGの部分の名称変更
・SRCSの初めのC++ファイルの名称変更
(・HALCONARCH 以降のアーキテクチャの部分※今回はarmv7a-linuxなので変更なし)
この2点を変更します
変更が完了したら、
—————————————————————————————————-
make
—————————————————————————————————-
を行いソースコードをコンパイルしていきます。
前回同様エラー文が出現したら、都度修正していきます。
完了したら、
—————————————————————————————————-
./bin/armv7a-linux/○○
—————————————————————————————————-
で実行を行うと、
[実行結果 左側:角度無 右側:角度あり]
画像のように「e」の形を始めに記録し、そこからリアルタイムで見ている際、
「e」でパターンマッチングを行います。
見つかったらその「e」部分に色を付けられています。
この画像より、対象が一部隠れていたり、向きが変わっていたり、少しクリップが隠れていたりしても、
しっかり検出されています。
また、解像度を変更しながら実行してみた結果、かくつきなく動作できるであろう解像度は、
500*500位が限界だとわかりました。
結論・RaspberryPiを触ってみて
今回Windowsとは違うLinux環境でのHALCONの連携を行いました。
当初は、USBが認識しない、コンパイルができない、パッケージが足りないなど、数々の問題が発生しました。
この時、一時は無理かと思いましたが、実際に動作できることができて、とても嬉しかったです。
また、リアルタイムでの画像処理も解像度の大きさ次第ですが、500*500ならサクサク動作する事がわかりました。
この点に関しても導入する際の参考になると感じました。
問題点は、ラズパイのCPUの温度や導入するまでの構築の難しさなのかなと思いました。
CPUの温度に関しては、CPUがむき出し(ヒートシンクやファン無)の状態だと1時間もしないうちに80℃近くまで上がりました。
しっかりと熱を逃がすようヒートシンク・ファンを装着するようにしないと連続運転は厳しいと感じました。
他にもラズパイではなく画像処理に向いたシングルボードコンピュータを使用する方がいいかもしれません。
以上RaspberryPi4、HALCONの連携についてでした。