技術記事

簡単、無制限、標準準拠

標準化されたカメラインターフェースとして GenICam を搭載し、ビジョンプロトコルとして USB3 や GigE Vision に対応した、マシンビジョンアプリケーションを開発するための便利なコンポーネントが登場しました。

しかし、メーカーの開発ツールはもう不要だとお考えなら、IDS peak をぜひお試しください。

 

現在、マシンビジョンアプリケーションを開発するなら、EMVA (European Machine Vision Association) の汎用インターフェース規格 GenICam を避けて通ることはできません。現在では、さまざまなメーカーからのカメラを標準化して使用すると、多数の統合プロセスやビジョンアプリケーションの起動が簡単になり、カメラのハードウェアをユーザーが容易に交換できます。また、IDS Imaging Development Systems GmbH などの産業用カメラメーカーにとっても、カメラ市場で優位に立つには USB3 Vision および GigE Vision などのデータインターフェースが不可欠であることは明らかです。このため、ほとんどの GenICam 準拠のアプリケーションと自動的に連携するようになり、メーカー固有のドライバーソフトウェアのインストールは不要になります。MVTec の HALCON などの画像処理アプリケーションは、Vision 転送レイヤーに互換だからです。メーカーがパッケージを開発する余地やニーズはもうないのでしょうか?GenICam は、標準準拠のマシンビジョンアプリケーションを開発する最適なインターフェースとして確立されているのではないのでしょうか?

最適なカメラインターフェース

機能をカメラに移行することで、標準化は必要とされる根本的な革新をもたらしました。その結果、すべてのビジョンカメラとの通信に使用できる、非常に汎用性の高いソフトウェア基盤が生まれました。すべてのモジュールと機能はカメラから完全に独立し、汎用的に設計されています。どのような細かな部分やパラメーターでも個別に設定して調整できるので、その組み合わせは無数と言えます。このため、使用する標準言語の構文が非常に柔軟になり、簡単で使いやすくなります。シンプルなプログラムシーケンスであっても、正しく組み合わせるには多数のコード行とパラメーター設定が必要になり、プロセスが複雑でミスが発生しやすくなってしまいます。GenAPI によるカメラ機能の厳密な分離と個別の処理、転送レイヤーによる純粋な画像バッファーパスは、構造上はわかりやすいのですが、アプリケーション開発がシンプルで明確になるとは言えません。

製品のプログラミング API はユーザーインターフェースであり、処理がどの程度容易かで評価されるツールです。また、優れたユーザーの操作性だけが、製品の成否を決定します。インターフェースとして、カメラ自体を表現し、開発者の可能性をも決定します。ユーザーの操作性を高める重要な属性とは、簡便性、直感的、柔軟性、透過的、将来性、支援性です。GenICam 規格には多数の傑出した技術的ソリューションがありますが、カメラメーカーはユーザーに十分なサポートを提供できず、カメラの機能だけではユーサーエクスペリエンスを改善できません。

カメラメーカーがユーザーに完全なソフトウェアサポートを提供するには、多数の理由があります」と、IDS のプロダクトマネージャー Maike Strecker は言います。

両方のタイプの長所を兼備

IDS は、カスタマーエクスペリエンスに基づいて GenICam と独自の IDS Software Suite の利点と欠点を把握し、いくつかの点で IDS peak をユーザーのサポートに役立てたいと考えました。GenICam を標準化したソフトウェアベースとして、先進的な開発インターフェースの利点を利用せずに、新しい SDK にはユーザーがどのカメラを使用するか選択できる自由度があります。最適なユーザーエクスペリエンスのために、プラットフォームに依存しない IDS peak SDK には、ソースコードサンプルから転送レイヤーまで、必要なあらゆるコンポーネントがあります。そのため、ユーザーは独自のアプリケーションの開発をすぐに開始できます。プラス面として、IDS peak ユーザーは IDS の固有の窓口から、すべてのアプリケーションコンポーネントについてフルサポートを受けられます。

IDS peak で標準をシンプル化

IDS peak は、アプリケーション開発者に必要なすべてのライブラリとソフトウェアインターフェースを提供する、完全な SDK (ソフトウェア開発者キット) となっています。さらに、新たに開発された、オブジェクト指向プログラミングインターフェースは、機能を制限したりバイパスしたりすることなく、GenICam よりも使用がはるかに簡単です。

カメラハードウェアとの通信は標準化されたインターフェースおよび Vision 転送レイヤー経由でのみ実行され、IDS peak はハードウェアにまったく依存せず、標準準拠となります。引き続き、すべての USB3 Vision および GigE Vision 準拠の産業用カメラと交換可能で互換性があります。メーカー固有の制約はなく、異なるメーカーのカメラと混在して使用したり、別のインターフェースで使用したりすることも、問題ありません。

「理解しやすいプログラミングインターフェースは、GenTL や GenAPI から直接アクセスしなくても済む、使いやすい手段です。さらに、便利な特殊クラスで、必要なコード量が減少し、プログラミング作業も削減されます」と Maike Strecker は語ります。

IDS peak は GenTL 規格が定めるモジュール階層をベースとしています。モジュールは記述子からアクセスできます。記述子とは、モジュールの名刺のようなものです。このため、モジュールが利用可能になって開かれる前に、特定の情報をモジュールから要求できます。下位レイヤーのモジュールの機能は、対応するモジュールが開かれて利用可能になったとき、いわゆる親子関係でのみ認識され、使用できるようになります。このコンセプトにより、クラスを操作するときのミスが減り、アプリケーションの開発時間が短縮されます。

この一例が、カメラ機能へのアクセスです。すでに開かれているカメラからのみ、「nodemap」にアクセスできます。その後、このカメラへの詳細な照会や特殊設定を実行できます。

カメラの nodemap からデバイス名を読み取る

// 開いているカメラデバイスの nodemap を取得する
auto remoteNodeMap = camera->RemoteDevice()->NodeMaps().at(0);
// DeviceModelName をカメラの nodemap から取得する
auto modelName = remoteNodeMap->FindNode<StringNode>("DeviceModelName")->Value();

規格にはない便利なクラスと関数により、デバイスおよびメモリの処理など、反復プロセスの処理がシンプルになります。このようなモジュールクラスを使用すると、必要なアプリケーションコードが減少し、カメラアプリケーションの可読性と安定性が向上します。

DeviceManager モジュールは、接続されたカメラを見つけて一覧して開き、使用できる転送レイヤーとインターフェースを管理する、便利な方法になります。シンプルなアップデートコマンドで、モジュールはシステム全体をスキャンし、完全なデバイスツリーが作成されます。または特定のカメラがわずか数行のコードで開かれます。IDS peak DeviceManager モジュールを使用すると、4 行のコードがあれば接続されたカメラを開けます。

IDS peak DeviceManager モジュールでカメラを開く

// device manager オブジェクトを作成する
auto deviceManager = std::make_shared<peak::DeviceManager>();
deviceManager->Update();
// デバイス記述子のベクターを取得する
auto devices() = deviceManager->Devices();
// 最初のカメラを選択して開く
auto device = deviceManager->Devices().at(0)->OpenDevice();

IDS peak はこのようなモジュールで常に拡張されています。カメラクラスの簡素化や、画像撮影を設定する撮影マネージャーをすでに予定しています。その他にも、未使用のメモリリソースを自動的に解放する共有ポインターや、モジュール依存のスレッドセキュリティの使用など、よく知られた手法により、IDS peak は最新のオブジェクト指向プログラミングインターフェースとなり、プログラマーは作業時に豊富なサポートとフィードバックを受けられます。

しかし、IDS peak は、GenICam ソフトウェアベースなのでカメラにまったく依存せず、カメラモデルやファームウェアバージョンとの関連性がない、唯一のホストソフトウェアです。そのため、アプリケーション開発者は、IDS peak の便利さ、サポート、シンプルさのどれを活用するか、自由に選べます。各ビジョンカメラのカメラ機能も他の GenICam 準拠アプリケーションと使用できます。

ユーザーは独自のアプリケーションで IDS Vision カメラに、IDS peak から、GenICam から直接、または標準準拠なサードパーティアプリケーションから、アクセスできます。
ユーザーは独自のアプリケーションで IDS Vision カメラに、IDS peak から、GenICam から直接、または標準準拠なサードパーティアプリケーションから、アクセスできます。

アプリケーションのスケーリングと機能の拡張

IDS が新しい SDK に込めているのはこれだけではありません。新しいアプリベースの産業用カメラ IDS NXT rio & rome ファミリーは、Vision 準拠のファームウェアを取得し、IDS peak でプログラムできます。これだけではありません。IDS peak プログラミング API でホスト PC 上で開発およびテストされたアプリケーションプロセスは、新しい SDK を使って IDS ビジョンアプリとして容易にエクスポートできます。自己プログラミングされた画像処理プロセスをロードして、スマートフォンのアプリのように、IDS NXT カメラで直接実行できます。

カメラのトリガーと IO インターフェースを使用して、マシン制御などの結果やプロセス決定を直接通知できます。アプリケーションによっては、追加のデスクトップ PC は不要になります。

IDS peak によるビジョンアプリ開発
IDS peak によるビジョンアプリ開発

Smart GenICam は、ビジョンアプリの入出力パラメーターを、カメラの標準化された XML 記述ファイルから、カスタムアプリケーションや任意のビジョン準拠のサードパーティアプリケーションで使用できるようにします。これにより、IDS のお客様は IDS NXT カメラをランタイム時に IDS peak で拡張または変更できます。メーカーからのファームウェアアップデートを待つ必要はありません。

ソフトウェア開発者は、ビジョンアプリを作成するために新しいプログラミング言語を学習する必要はありません。IDS peak で、デスクトップアプリケーションだけでなく、IDS NXT ファミリーのインテリジェントなカメラ向けのビジョンアプリをプログラムできます。組み込み開発とアプリケーションの拡張が、これまで以上に簡単になりました。そのすべてが 1 つのソースから提供されます。

新しいコンセプト、新しいソフトウェア、これまでと同じシンプルさ

IDS では、USB3 Vision および GigE Vision 産業用カメラに対して IDS peak によるソフトウェアのフルサポートも提供しています。既存の IDS Software Suite のお客様は、ビジョンの分野で簡単な処理と制限されないメーカーのサポートというメリットも受けられるようになりました。GenICam 規格の拡張として、IDS peak は容易で直感的なプログラミング API を備えた標準準拠の SDK というだけでなく、すべてのビジョン準拠カメラの操作、構成、プログラミングの独立したソフトウェアでもあります。

新しい IDS NXT 産業用カメラのファームウェアベースとして、ビジョンアプリ開発の基礎にもなり、少ない労力で組み込みビジョンアプリケーションを実現できる普遍的なツールとなります。 IDS peak があれば、カメラメーカーはすべての製品を 1 つのソフトウェアスイートにまとめることができます。これでユーザーの作業は非常に簡単になります。