CVL for Linux !?

仮想マシンついでにこっちもやってみました。

材料

VMWare Player(VMware社からダウンロード)
ubuntu 8.04 LTSのVMWare仮想マシン(ubuntu Japanese teamサイトからダウンロード)
・CVL7.0CR13 (linux専用版。残念ながら非売品)

作り方

  1. ubuntu 8.04をVMWare Playerで起動する
  2. ubuntuをアップデートして10.04 LTSに更新
  3. VMWare Toolをインストール
  4. CVLをインストール
    インストーラーがあるわけでは無いのでアーカイブを解凍して、環境をマニュアルでいろいろ設定します
  5. USBドングル(CVL用)のドライバのインストール
  6. USBドングルを仮想マシンに接続

インストール後はこのようなファイル構成です。

動作環境

OS
  • 32bit linux
  • kernel 2.6.26以降 Ubuntu 10.04LTS Debian GNU/Linux6.0以降
  • X11のサポート(Header, Lib libx11-dev, libxext-dev パッケージ)
開発環境
  • gcc 4.3
  • g++ 4.3
  • make

機能

  • 画像取込はGigEのみサポート
  • すべてのフレームグラバは非サポート
  • FireWireは非サポート
  • AIKは非サポート
  • ccDisplayConsole, ccWin32Displayは非サポート
    X用のccXWinDisplayが代わりに使えるけどオーバーレイグラフィックスが非サポートなど一部機能制限がある
  • 画像処理機能はWindows版と同等

サンプルを動かしてみる

CVLのインストールディレクトリ以下にsampleディレクトリがあり、その中にいくつかサンプルがありました。
サンプルを動かすにはコンソールで make run でビルドして実行されます。

Displayのサンプル


左側のウィンドウがディスプレーです。インタラクティブグラフィックス(ちょっと色が暗くて見にくいですが)をマウスでいじれました

Blobのサンプル


ブロブの実行結果です。WindowsのCVLのブロブと使い方は全く同じでした。

まとめ

Linux版といってもソースコードはDisplay以外同じなので拍子抜けでした。ただ、Linux(というかunix)をいじるのはほとんど20年ぶりなので、すっかり忘れている上に、勝手が違っていて、そちらの方に驚きました。昔いじっていたのはSony news。。。古っ!

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 6 アプリケーションのインストール


OmniView 6 SDKのインストール


インストール完了


OmniViewのアプリケーションはアプリ本体と設定ツールがインストールされます。SDKの方はヘルプだけです。

とりあえず動かしてみる

OmniViewのアプリケーションを起動してみます。仮想PCだし、カメラもつなげていないし、、、

このようなスプラッシュがいったん表示されるのですが起動しません。
よくよく見てみると「OmniViewの設定ファイルがないよ」と文句をいっています。

仕方ないので、OmniView Setup Wizardを起動して設定ファイルを作ります。


主に画像取り込み関連の設定を行います。カメラが接続されていませんが、デフォルトのまま最後まで進めます。


最後に画像取り込み関連の設定が変わったからキャリブレーション取り直すように警告されて無事に終了。

もう一度アプリをきどうしてみる


無事に起動されました!!バンザイ!!
ただ、カメラがつながっていないと、ここまででこの先何も操作できません。
やはりカメラ間のキャリブレーション調整などが必要なので、画像ファイルだけ使ってのお試しはできなさそうです。

サンプルを動かしてみる

OmniViewのインストールフォルダの下にサンプルがいくつか入っています。
今回はその中からカラーのサンプルを動かします。
サンプルを動かすためには、コマンドプロンプトを開いて、OmniViewのデータがあるフォルダを環境変数で設定してあげて、コマンドプロンプトからomniview.exeを起動します。詳しい動かし方はサンプルのフォルダのreadme.txtに書いてありました。

無事にサンプルデータで起動できました。アイスクリームのカップの品種判別のサンプルでした。
サンプルのフォルダにあるイメージデータベースを開くことで、様々な画像でサンプルを動かすこともできます。
このパネルの右側にある

Train Shape
カップの位置を決めるための位置決め情報をカメラ4台分設定します。カップの外形を設定します:

Set Alignment Parameter
詳しいところはまだよくわからないのです上で設定した外形を使った位置決めのためのパラメタのせっていです。カップの位置を三次元的に認識されていますね:

Train Unwrap Regions
平面に変換する際の切り出し領域の設定です。360度なのかちょっと多めに400度なのか、切り離す先頭位置はどこかなどを設定します:

Edit Inspections
平面に変換された画像でどんな検査をするのか設定します。この部分は通常のQuick Buildですね:


まとめ

とりあえず仮想マシンでも動作しました。仮想マシンの設定はメモリ4GB、コアは1個だけと必要最低限のWindows 7 64ビットですがサンプル程度ならばなんとか動きます。
仮想マシンのいいところで、ファイルだけコピーすればどこにでも持っていけます。今日はノートパソコンにコピーして持ち歩いて動かしています。

 WindowsタブレットでVisionProを動かしてみる

すみません。本当はOCRMaxのご紹介と思ったのですが、、、
OCRMaxは近いうちにやりますのでお待ちください。

で、正月明けに技術グループにおもちゃが届いていたのを見つけて横取りしてきました。

VisionPro 7.2 32bitのインストール


AcerのIconia TAB W500というWindows 7モデルです。Cドライブの容量が30GB程度と少ないので、いっぱいになる前にVisionProを入れちゃいました。
メモリは2GB、プロセッサはAMDのFusion(C-50)です。

インストールは意外なほど軽快で、あっさり完了。

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の最新のターミナルの状態にあわせて、ターミナルにアクセスするために自動生成されたクラスを更新します。
通常自動生成されたクラスは変更していないので問題は無いはずですが、もし手動で変更している場合は変更点を対比させておく必要があります。
ターミナルの追加・削除・変更時に実行してください。

スクリプトの有無をアイコンで表示


このようにスクリプトが存在するToolBlock等のツールアイコンが変化します。
アイコンの中に小さくVBC#と表示されます。

おまけ

スクリプトデバッグ操作を動画にしました。
なかなか使いやすくなったと思います。是非VisionPro 7.2をお試しください。

 コグネックス製品使いこなしの情報サイト ができました!!

このブログのよりもっと実践的なノウハウ提供をするサイトができました!

作者は私よりも社歴の長いベテランエンジニアが作っています
コグネックス画像処理を使う際の資料やサンプルプログラム
私のブログはVisionProとCVLに限定していますが、こちらのサイトはIn-SightやDataManのノウハウも掲載されています。
私のサイトと違ってサンプルコード満載です
すでに50近い記事が掲載されています

VisionPro 7.2リリースしました

皆様あけましておめでとうございます。

長らくお休みしていましたが、今日から復帰します!
昨年末にかけてCOGNEXのプライベートフェア東京、大阪、名古屋、熊本で開催され、その合間にロボット展や国際画像機器展があったりとバタバタしていてお休みしていました。

さて、気を取り直して今年の最初のネタはVisionProの新しいリリースです。

VisionPro 7.2 重要な変更点

MVS-8510シリーズをサポート

新しいアナログのフレームグラバを標準でサポートしました。
このバージョン以降パッチのインストールは必要ありません。

OCRMaxツール

昨年のプライベートフェア熊本、東京で展示したものです。
強力な文字読み取りツールです。
GigE カメラと組み合わせることで、廉価なOCR+IDリーダーの提案ができます。

  • 微少電子部品などの変形の激しい刻印
  • 食品、医薬品などの賞味期限等のドット文字

 
既存のOCRとの違い

  • フォントはグレーモデル
  • 一つの文字に複数パターン登録可能(「A」に対して複数のA文字パターンを登録。平均ではない)

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 ではサポートされない機能
  • CogOCVEdit
  • CogOCVDontEdit
    CogOCVTool はプログラミングからは利用可能
  • FireWire, 8500, 8100Lなど未サポート
  • PIOを通信エクスプローラーからサポートしない 
  • Measurement Computing PIOボードをサポートしない
サポート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を紹介しました。

  1. スクリプトエディタの代わりにVisual Studioをエディタとして利用する方法(記事
  2. スクリプトをDLL化することでVisual Studioで開発する方法(記事
  3. DLLをVisual Studioデバッグする方法(記事

3のTipsでは、別途起動したQuick BuildをVisual Studioのデバッガからアタッチするものでした。この方法では、DLLのビルドとデバッグを繰り返す場合に、Quick Buildを毎回再起動する必要があり、ちょっと面倒です。今回はQuick Buildを使わずに、DLL化したスクリプトデバッグする方法を紹介します。

Visual Studioのプロジェクトの作成

前回(3)で使ったプロジェクトを流用します。
今回の開発環境はVisual Studio 2010です。(記事を書くPCが何台かあって環境がまちまちなんです。。。)

  1. 前回のプロジェクトを開きます
  2. 「ファイル」→「追加」→「新しいプロジェクト」でVB.NETWindowsフォームプロジェクトを追加します
  3. ソリューションエクスプローラで追加したWindowsフォームプロジェクトを右クリックして「スタートアッププロジェクトに設定」します
  4. 「プロジェクト」→「プロジェクトの依存関係」ダイアログでWindowsフォームプロジェクトの依存先にDLLプロジェクトを指定します
  5. 両方のプロジェクトの.NET Frameworkバージョンを3.5に設定します(理由は追及していないのですが4ではうまく動きませんでした。Visual Studio自身が3.5フレームワークで動作していて、そのプロセスからDLLをGACに登録するためエラーになっていると推測しています)
  6. 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フォームが実際のアプリケーション本体に該当すると思います。