CVL for Linux !?
仮想マシンついでにこっちもやってみました。
材料
・VMWare Player(VMware社からダウンロード)
・ubuntu 8.04 LTSのVMWare用仮想マシン(ubuntu Japanese teamサイトからダウンロード)
・CVL7.0CR13 (linux専用版。残念ながら非売品)
作り方
機能
OmniView 6 をインストールしてみた
OmniViewはVisionProの派生商品で、円筒形の対象物を4台のカメラで撮影して、画像処理で平面の画像に変換するアプリケーションです。
OmniView 6は昨年リリースされていたのですが、推奨動作環境が
- Windows 7 64bit
- 12 core以上
- Memory 12GB以上
とちょっと厳しいためインストールを躊躇していました。
また、OmniViewにも専用バージョンのVisionProが含まれるため、OmniViewをインストールすると、最新のVisionProと競合してしまい、専用のPCが必要になるのも気軽にインストールできなかった理由です。
そうはいってもいい加減ちょっとはいじっておきたかったので、自宅のPCをWindows 7 64bitに更新したのを機会に、VMWare を使って仮想PC上にインストールしてみました。(当然自宅PCの環境にはVisinPro 7.2がインストール済みです)
インストール手順
仮想PCにWindows 7 64bitをインストール
VMWare Workstationを購入しました。円高を生かすために、ドル建てでUSのVMwareサイトから購入です。クーポンも使って円建ての半額以下で購入できました。(1万円弱)
OSのインストールは非常に簡単で、あっという間に完了。
OmniView 6のインストール
OmniViewは、用途に応じてインストール方法が異なります。
用途 | インストールするパッケージ | |
---|---|---|
付属アプリケーションのみ利用 | VisionPro 7.1のインストール OmniViewアプリケーションのインストール |
|
OmniView SDKで開発 | VisionPro 7.1のインストール VisionPro 3D 7.1 Rev.A Prerelease 2のインストール OmniView SDKのインストール |
|
付属アプリとSDKを両方利用 | VisionPro 7.1のインストール VisionPro 3D 7.1 Rev.A Prerelease 2のインストール OmniViewアプリケーションのインストール OmniView SDKのインストール |
今回はとりあえず3番目の全部入りでやってみました。
VisionPro 7.1とVisionPro 3D 7.1 Rev.A Prerelease 2のインストール
これは、普通のインストールどおりなので省略
インストール完了
OmniViewのアプリケーションはアプリ本体と設定ツールがインストールされます。SDKの方はヘルプだけです。
とりあえず動かしてみる
OmniViewのアプリケーションを起動してみます。仮想PCだし、カメラもつなげていないし、、、
このようなスプラッシュがいったん表示されるのですが起動しません。
よくよく見てみると「OmniViewの設定ファイルがないよ」と文句をいっています。
仕方ないので、OmniView Setup Wizardを起動して設定ファイルを作ります。
主に画像取り込み関連の設定を行います。カメラが接続されていませんが、デフォルトのまま最後まで進めます。
最後に画像取り込み関連の設定が変わったからキャリブレーション取り直すように警告されて無事に終了。
もう一度アプリをきどうしてみる
無事に起動されました!!バンザイ!!
ただ、カメラがつながっていないと、ここまででこの先何も操作できません。
やはりカメラ間のキャリブレーション調整などが必要なので、画像ファイルだけ使ってのお試しはできなさそうです。
サンプルを動かしてみる
OmniViewのインストールフォルダの下にサンプルがいくつか入っています。
今回はその中からカラーのサンプルを動かします。
サンプルを動かすためには、コマンドプロンプトを開いて、OmniViewのデータがあるフォルダを環境変数で設定してあげて、コマンドプロンプトからomniview.exeを起動します。詳しい動かし方はサンプルのフォルダのreadme.txtに書いてありました。
無事にサンプルデータで起動できました。アイスクリームのカップの品種判別のサンプルでした。
サンプルのフォルダにあるイメージデータベースを開くことで、様々な画像でサンプルを動かすこともできます。
このパネルの右側にある
- Set Alignment Parameter
- 詳しいところはまだよくわからないのです上で設定した外形を使った位置決めのためのパラメタのせっていです。カップの位置を三次元的に認識されていますね:
- Train Unwrap Regions
- 平面に変換する際の切り出し領域の設定です。360度なのかちょっと多めに400度なのか、切り離す先頭位置はどこかなどを設定します:
- Edit Inspections
- 平面に変換された画像でどんな検査をするのか設定します。この部分は通常のQuick Buildですね:
WindowsタブレットでVisionProを動かしてみる
すみません。本当はOCRMaxのご紹介と思ったのですが、、、
OCRMaxは近いうちにやりますのでお待ちください。
で、正月明けに技術グループにおもちゃが届いていたのを見つけて横取りしてきました。
VisionPro 7.2 32bitのインストール
AcerのIconia TAB W500というWindows 7モデルです。Cドライブの容量が30GB程度と少ないので、いっぱいになる前にVisionProを入れちゃいました。
メモリは2GB、プロセッサはAMDのFusion(C-50)です。
acer【アイコニア】ICONIA タブレットPC ダークシルバー ICONIATAB-W500
- 出版社/メーカー: 日本エイサー
- 発売日: 2011/05/20
- メディア: Personal Computers
- クリック: 34回
- この商品を含むブログ (4件) を見る
GigEポートの拡張
このタブレットは残念ながらイーサネットのポートがありません。無線LANだけです。
そこで、USBポートを使ってGigEのイーサネットポートを拡張しました。USB2の速度(480MBits/s)がGigE(1GBits/s)の半分程度なのでパフォーマンスはあまり期待できません。
USBで拡張したLANポートですが、GigE Vision Configuration Toolで問題なく認識され、パフォーマンスドライバも動作しました。
GigE Visionカメラの接続
Basler のAceシリーズの200万画素(最大20フレーム/秒)を接続しました。
当然USB2の480MBits/s(60MB/s)がボトルネックなんですが、接続するカメラも最大40MB/s程度の帯域があれば十分なので、コマ落ちも無くキレイにライブ画像も表示されました。下手なオンボードのギガビットイーサネットポートよりも性能いいかもしれません。
画像処理もやってみる
PatMaxを動かしてみました。
画像は200万画素。サーチエリアは画面全体です。角度自由度はプラマイ45度です。
この設定でPatMaxが約80msでした。決して早くはありませんが、そんなに悪くありません。
おまけ
今回は完全にお遊びです。ただ、タブレットで動くとなんか妙に感動します。キーボードの付いてないノートパソコンと考えれば動いて当たり前なんですけどね。
ちなみに、ライブ表示中に指二本で拡大・縮小もできました。これはイイ!
VisionPro 7.2 でがらっと変わったスクリプト
とはいっても、スクリプト自身は変わっていません。
これまで作ったスクリプトはそのまま利用できます。
スクリプトのデバッグ方法
スクリプトにブレークポイント設定
下記はToolBlockのスクリプトのサンプルです。下記3行がコメントアウトされているので、この3行のコメントを外すとブレークします。
#If DEBUG Then If System.Diagnostics.Debugger.IsAttached Then System.Diagnostics.Debugger.Break() #End If
スクリプトを「Debug」モードでビルド
スクリプトエディタのツールバーにあるビルドモードをReleaseからDebugに切り替えてからビルドします。
ビルドは、「Debug」の左隣のボタンでできます。
Visual StudioでQuickBuildプロセスにアタッチします。
Visual Studioのメニュー「ツール」→「プロセスにアタッチ」でQuickBildプロセスにアタッチします。
QuickBuildを実行してブレークを発生させる
ToolBolckの場合はToolBlockの実行ボタンを押すと、ブレークポイントでVisual Studioに切り替わります。
Visual Studioには下記のようにブレークした箇所のスクリプトが表示されます。
変数の値を確認、変更したり、ステップ実行など通常のデバッガーの機能が利用できます。
ただし、スクリプトの変更はQuickBuildに反映されないので、QuickBuild側のスクリプトエディターで行います。
プログラムの続行(F5キー)で残りのスクリプトが実行されて、制御がQucikBuildに戻ります。
そのほかの機能
Read Script from tool/Write Script from Tool
編集途中のスクリプトをToolBlock等のツールに書き込んだり、前回保存したスクリプトをツールからロードすることができます。
Check Interface Terminals
この機能はToolBlockでSimpleスクリプトを選択している場合に表示されます。
ToolBlockの最新のターミナルの状態にあわせて、ターミナルにアクセスするために自動生成されたクラスを更新します。
通常自動生成されたクラスは変更していないので問題は無いはずですが、もし手動で変更している場合は変更点を対比させておく必要があります。
ターミナルの追加・削除・変更時に実行してください。
コグネックス製品使いこなしの情報サイト ができました!!
このブログのよりもっと実践的なノウハウ提供をするサイトができました!
作者は私よりも社歴の長いベテランエンジニアが作っています
コグネックス画像処理を使う際の資料やサンプルプログラム
私のブログはVisionProとCVLに限定していますが、こちらのサイトはIn-SightやDataManのノウハウも掲載されています。
私のサイトと違ってサンプルコード満載です
すでに50近い記事が掲載されています
VisionPro 7.2リリースしました
皆様あけましておめでとうございます。
長らくお休みしていましたが、今日から復帰します!
昨年末にかけてCOGNEXのプライベートフェア東京、大阪、名古屋、熊本で開催され、その合間にロボット展や国際画像機器展があったりとバタバタしていてお休みしていました。
さて、気を取り直して今年の最初のネタはVisionProの新しいリリースです。
VisionPro 7.2 重要な変更点
MVS-8510シリーズをサポート
新しいアナログのフレームグラバを標準でサポートしました。
このバージョン以降パッチのインストールは必要ありません。
VisionPro 7.2の詳細な変更点
MVS-8510シリーズのサポート
OCRMaxツール
- QuickBuildでのサポート
- プログラミングサンプル提供
- セキュリティービットが追加されたので開発ドングルのアップデート必要です
- Plusパッケージに追加
GigE Vision改善
- GenICam 1.1 -> 2.2
- 起動時の初期化処理が高速化された
- GigE Vision Configuration ToolのShow Featureでより詳細な情報が得られる
- デフォルトのROIサイズがこれまではカメラの最大だったが、カメラのデフォルト値に変更
Advanced Image Grading
- Inspection Designer(VPro7.0で追加された機能)の改善
スクリプティングの大幅な改善
個人的にOCRMax以外では一押しの改善点です
Application Wizard を64bit OSでサポート
Model Maker を64bit OSでサポート
V1コントロール(OCXを使っているもの)の最後のサポート
正式にはサポートは打ち切られていますが、このバージョンまでは利用できました。
このバージョンを最後に本当に利用できなくなります(たぶん)。
次のバージョンからOCXがインストールされなくなると予想されます。
Windows 7 64bit ではサポートされない機能
サポートOS
Microsoft Windows OS's | Service Pack # | Processors |
---|---|---|
XP Home 32-bit | SP3 | single or multi |
XP Professional 32-bit | SP1 | single or multi |
Windows 7 Premium 32-bit and 64-bit | SP1 | single or multi |
Windows 7 Professional 32-bit and 64-bit | SP1 | single or multi |
Windows 7 Ultimate 32-bit and 64-bit | SP1 | single or multi |
サポート開発環境
Compiler | Service Pack | .NET Framework |
---|---|---|
Microsoft Visual Studio 2010 (version 10.0) for VB.NET, C#, and managed C++ | SP1 | 2.0 Service Pack 2, 3.0, 3.5, 4.0 |
Microsoft Visual Studio 2010 Express (version 10.0) for VB.NET, C#, and managed C++ | SP1 | 2.0 Service Pack 2, 3.0, 3.5, 4.0 |
Microsoft Visual Studio 2008 (version 9.0) for VB.NET, C#, and managed C++ | SP1 | 2.0 Service Pack 2, 3.0, 3.5 |
Microsoft Visual Studio 2008 Express (version 9.0) for VB.NET, C#, and managed C++ | SP1 | 2.0 Service Pack 2, 3.0, 3.5 |
Microsoft Visual Studio 2005 (version 8.0) for VB.NET, C#, and managed C++ | SP1 | 2.0 Service Pack 2 |
Microsoft Visual Studio 2005 Express (version 9.0) for VB.NET, C#, and managed C++ | SP1 | 2.0 Service Pack 2 |
Quick BuildのスクリプトのQBを使わずにデバッグをVisual Studioだけでやってみる
これまで、Quick Buildのスクリプトエディターの機能がシンプルで、凝ったスクリプトは作りにくいので、いろいろなTipsを紹介しました。
- スクリプトエディタの代わりにVisual Studioをエディタとして利用する方法(記事)
- スクリプトをDLL化することでVisual Studioで開発する方法(記事)
- DLLをVisual Studioでデバッグする方法(記事)
3のTipsでは、別途起動したQuick BuildをVisual Studioのデバッガからアタッチするものでした。この方法では、DLLのビルドとデバッグを繰り返す場合に、Quick Buildを毎回再起動する必要があり、ちょっと面倒です。今回はQuick Buildを使わずに、DLL化したスクリプトをデバッグする方法を紹介します。
Visual Studioのプロジェクトの作成
前回(3)で使ったプロジェクトを流用します。
今回の開発環境はVisual Studio 2010です。(記事を書くPCが何台かあって環境がまちまちなんです。。。)
- 前回のプロジェクトを開きます
- 「ファイル」→「追加」→「新しいプロジェクト」でVB.NETのWindowsフォームプロジェクトを追加します
- ソリューションエクスプローラで追加したWindowsフォームプロジェクトを右クリックして「スタートアッププロジェクトに設定」します
- 「プロジェクト」→「プロジェクトの依存関係」ダイアログでWindowsフォームプロジェクトの依存先にDLLプロジェクトを指定します
- 両方のプロジェクトの.NET Frameworkバージョンを3.5に設定します(理由は追及していないのですが4ではうまく動きませんでした。Visual Studio自身が3.5フレームワークで動作していて、そのプロセスからDLLをGACに登録するためエラーになっていると推測しています)
- DLLプロジェクトの「ビルドイベント」にGACへの登録を自動で行うようコマンドを設定します(下の図を参照)
これで準備は完了です。
ソリューションエクスプローラがこのようになっているはずです。
上のプロジェクトがDLL、下のプロジェクトがWindowsフォームです。
完成した全プロジェクトのファイルはこちらQBScriptDLLDebug.zip
DLL呼び出し用のWindowsフォームプロジェクトを作る
これが完成のイメージです。非常に簡単で、CogJobManagerEditをひとつ配置して、ボタンを押すとジョブファイル(VPP)を読み込むだけです。
実際のDLLの呼び出しは、ジョブ内のQuick Buildのスクリプトから書いてあるはずなので実行ボタンを押せば、スクリプトが呼び出されデバッグできるようになります。
Windowsフォームプロジェクトのコードはこれだけです。
VisionProのサンプルからコピーしたので不要なmyJobやmyIndependentJobがありますが、気にしないでください。
実行してみましょう
「F5」を押して、デバッグ実行してみましょう。
添付のプロジェクトを解凍するとフォルダ直下にQuickBuild1.bppが入っています。
DLLを呼び出しているスクリプトのDLL参照先はお使いの環境に合わせて修正してから実行してください。
アプリを起動したら、「Load」ボタンを押して、プロジェクトのVPPファイルを読み込みます。
何のエラー処理もしていないので、プロジェクト以外の(たとえばジョブの)VPPファイルを読み込むとエラーになります。手抜きですみません。
VPPファイルを読み込むとこのようになります。左上の実行ボタンを押すとスクリプトが実行されて、「Hello VisionPro!」のダイアログが出るはずです。
DLL内にブレークポイントを設定すればこのようにデバッグも可能です。
アプリケーションを終了して(私の環境ではなぜかアプリが正常に終了しないのでいつも強制終了させてます。こちらも手抜きですみません)、DLLのコードを変更して、もう一度デバッグ実行すと、DLLがビルドされ、GACに登録されてからアプリが起動します。
まとめ
毎回VPPをロードしなければならないのでちょっと時間はかかりますが、Quick Buildを再起動するよりは多少簡単になったと思います。
実際のアプリケーションでは、Quick BuildからDLLを呼び出すことはないはずで、今回作ったWindowsフォームが実際のアプリケーション本体に該当すると思います。