
IDS NXT とのインターフェース
IDS NXT カメラをファクトリーオートメーションに取り入れる方法
IDS NXT は産業用途向けの新世代のビジョンシステムで、ファクトリーオートメーションでの強力なビジョンセンサーとして使用できます。IDS NXT Experience Kit と併用することで、ディープラーニングもまた使いやすくなります。個々のニューラルネットワークをエッジ上で直接実行し、オールインワンソリューションとして、IDS NXT カメラを強力な推論カメラに変換するために必要なすべてを備えています。画像の撮影と管理、AI のトレーニング、最終的に機能する推論カメラまで、わずかな手順で進められます。それでは、どのような方法で推論カメラを個々の環境に統合するのでしょうか。
このテクニカルティップスでは、IDS NXT カメラを統合するインターフェースに焦点を当てて説明します。また、推論結果を固有の環境で使用する方法を総合的に解説します。
IDS NXT のインターフェース
コンパクトな組み込みビジョンカメラである IDS NXT カメラは、画像処理タスクをエッジ上で直接処理して、PC を別途用意しなくても結果を提供できます。そのため、自律型ビジョンセンサーとして使用できます。アクセスおよび外部システム向けのデータ交換要件については、主に PC ベースの画像処理での画像プロバイダーとして機能する、標準的な産業用カメラとは根本的に異なります。このため、IoT 型の導入事例で使用できるよう、IDS NXT カメラに、さらに簡単で柔軟なインターフェースを搭載しました。
IDS NXT cockpitIDS NXT Cockpit によって、IDS NXT 産業用カメラのすべての重要な設定と機能にアクセスできます。また、REST インターフェースに完全準拠しています。さらに、ビジョンアプリをインストールまたは設定できます。
今後使用するカメラのインターフェースを問わず、IDS NXT Cockpit には使いやすい GUI が搭載され、カメラアプリケーションを手軽にセットアップし、実運用向けに設定できます。
IO と RS-232
インダストリー 4.0 の時代を迎えた今でも、デジタル入出力と UART ベースのシリアルインターフェースおよびそれに基づくフィールドバスには、最新の後継インターフェースよりも多くのメリットがあります。複雑な部品検査や画像ベースの検証でも、通常は IO または NIO という驚くほどシンプルな結果で十分で、先進的な産業ラインでの製品をすばやく容易に制御します。他のインターフェースでは、デジタル入出力をこれほど容易に低コストで実装できません。同様に、RS-232 によるデバイスのシリアル通信も、多数のメーカーやユーザーによってサポートされています。これほど広範にわたって実績のあるアクセサリはありません。このため、RS-232 は産業通信で現在も規格の 1 つとして生き残っています。
IO と RS-232 インターフェースを備えた IDS NXT カメラは、コンパクトで強力な組み込みビジョンソリューションによって多数の既存システムを補完し、既存のインフラストラクチャを変更する必要はありません。
IDS NXT REST インターフェース

REST (Representational State Transfer) Web サービスにより、IDS NXT カメラはマシン間通信に対して、ネットワーク接続が容易にできる標準化されたオープンインターフェースを提供します。これにより、パラメーターやカメラの結果を変更したり照会したりできます。REST Web サービスは HTTP プロトコルをベースとしているため、大半のネットワークで使用できます。
GET、POST、PUT、PATCH などの標準的な HTTP メソッドを統一インターフェースとして使用します。そこで、IDS NXT REST インターフェースはプラットフォームに依存せず、普及している HTTP メソッドを使用することで、多様なクライアント (PC、スマートフォン、タブレット) で使用できます。C++ アプリケーションでは完全な開発環境のセットアップが必要になりますが、REST(ful) API は、ソフトウェアやゲートウェイを追加しなくても、Web 対応デバイスクラスで利用できます簡単に使い始められるだけでなく、さまざまなセットアップ操作をシンプルなスクリプトにまとめることもできます。
自律的に動作しているビジョンセンサーとの汎用通信について、REST を IoT (Internet of Things) や IIoT (Industrial Internet of Things) の分野で容易に使用でき、GenICam などの PC ベースのインターフェースよりもオーバーヘッドは減少します。IDS NXT カメラでは、REST はデータや結果の転送の「ランタイム」インターフェースとなるほか、カメラとそのアプリやインターフェース (IO、RS232) の設定 (IDS NXT Cockpit など) に使用されます。
REST を使う理由
- ステートレス
ステートレス通信により、クライアント/サーバーの各メッセージが自己完結し、アプリケーションの現在のステータスに関するすべての必要な情報が含まれるようになります。つまり、REST サービスの場合、実行の間に何かを保存する必要はないのです。サーバーのセッション管理も不要で、ネットワーク内で Web サービスを必要に応じて拡張できます。このため、REST は IoT で理想的になります。 - 統一され、プラットフォームに依存しない
REST により、Web テクノロジーに基づいた、標準化されたオープンインターフェースがシステムで実現し、ネットワーク化が容易になります。データや結果をすべての (I)IoT デバイス間で交換できます。プロトコル変換やゲートウェイは不要です。 - 簡単でリソースを節約
シンプルな REST API 呼び出しの構築、受け渡し、その後処理には、ほとんどの場合、処理能力はほぼ不要です。さらに、標準的な HTTP メソッドの使用が普及したため、REST 通信に必要な技術的要件を、ソフトウェアを追加しなくても、ほとんどの Web 対応デバイスで満たせるようになっています。 - 位置に依存しない
クライアントとサーバーは個別に動作できます (分散システム)。別のサーバーでホストされていても、REST 経由の通信が可能です。
- 業界および Web に準拠
データへの容易なアクセスと転送は、IIoT にとって重要な要素です。柔軟性があり、普及しているリソースを使用できるので、REST によって産業オートメーションのシンプル化も可能になります。アプリケーションやデバイスをまたがる通信を使用して、多くのシステムとデバイスをすばやく容易に統合できます。Web 互換性により、さらに総合的な統合戦略の可能性が開けます。業界の進化と発展にとっても、新しいシステムとテクノロジーを取り入れるメリットがあります。

実装される IDS NXT REST Web サービスは、以下の機能を備えています。
- REST Web サービスは通常の操作中は常にアクティブです。
- アクセス保護は HTTP Basic 認証を介して実装されます。各要求には認証されたユーザーのデータの認証が要求され、Base64 エンコードされて転送されます。
- 応答は JSON または XML 形式で転送されます。
マニュアル
IDS NXT REST インターフェースのマニュアル IDS NXT カメラのログイン情報 (IDS NXT Cockpit のマニュアルの第 3.3 章「Logging on to the device」)お使いの IDS NXT モデルについて、IDS Web サイトのダウンロード領域にあります。
IO およびRS-232 を介した IDS NXT 通信

カメラ画像処理結果をデジタル入出力またはシリアルインターフェースを介して通信するために必要な操作は、2 つの IDS NXT ビジョンアプリ "GPIO Gateway" と "RS-232 Gateway" を IDS NXT Cockpit を通じて起動して、特定の結果を出力するビジョンアプリから設定するだけです。プログラミングは不要です。すべての設定は IDS NXT Cockpit GUI を経由して実行できます。
例として、カメラ AI ("ImageNet1000" と CNN Manager) が特定の物体を分類する (「良」または「不良」) たびに、デジタル出力をアクティブに設定することができます。または、検出した物体クラスと推論の確率を結果の値としてシリアル接続で通信できます。
マニュアル
2 つのビジョンアプリとその設定の詳細な説明は、IDS Web サイトで、お使いの IDS NXT カメラのダウンロード領域から入手できます。 「GPIO Gateway」マニュアル (EN) をダウンロード
「RS-232 Gateway」マニュアル (EN) をダウンロード
IDS NXT REST 通信
開発者にとっての REST の大きな利点は Web 互換性で、必要なツールがシンプルになります。そこで、HTTP メソッドの GET、POST、PUT、DELETE を使用して IDS NXT カメラからデータを容易に取得する方法の例を示します。
このテクニカルティップスでは、REST API の使用方法を総合的に説明することを目的にはしていません。簡単に使い始められるように、基本的なヒントを紹介します。後はあなた次第です。
以下の例を再現するには、IDS NXT カメラに、同じネットワーク上にある Windows PC でアクセスできるようにします。意味のないパラメーターの照会を避けるため、カメラで何か実用的な処理を行います。カメラ AI とプリインストール済みの CNN "KritzelNN" を使用します。カメラ AI に、人間、犬、猫、カメラの絵を認識させることができます。REST-API によって、自分が描いた絵が何に認識されたかを問い合わせます。
テストシナリオ「あなたには見えないものが見える」
- IDS NXT rio または rome カメラと Windows PC を接続したネットワーク
- ビジョンアプリ "CNN Manager" をプリインストールされたニューラルネットワーク "KritzelNN" を実行する
- 人間、カメラ、猫、犬など、さまざまな絵
マニュアル
CNN Manager と必要な REST URL を使用する方法と "KritzelNet" を起動する方法のマニュアルは、IDS Web サイトで、お使いの IDS NXT カメラのダウンロード領域から確認できます。「CNN Manager」マニュアル (EN) をダウンロード
"cURL" による REST 呼び出し (コマンドライン)
cURL はデータを URL 経由で転送するコマンドラインツールで、コマンドプロンプト (および cmd.exe) で簡単に実行できます。最新のカメラ画像の推論結果 (KritzelNN) を問い合わせるには、目的のリソース /vapps/cnnmanager/resultsources/last を使って GET 要求を送信します。
カメラ画像:
C:\Users\ids>curl -sX GET http://192.168.2.102/vapps/cnnmanager/resultsources/last --user admin:ids
{
"inference": {
"Top1": "person",
"Top2": "camera",
"Top3": "cat",
"Top4": "dog"
},
"inference_propability": {
"Top1": "0.99",
"Top2": "0.01",
"Top3": "0.00",
"Top4": "0.00"
},
"inferencetime": {
"Content": "43"
}
}
JSON 応答データをフィルターするには、jq などのツールを追加して使用できます。軽量で柔軟なコマンドライン JSON プロセッサーには、他の依存関係は不要です。最上位の推論結果と確率だけを出力するには、応答を拡張します。
| jq ".inference.Top1, .inference_propability.Top1, .inferencetime.Content"
C:\Users\ids>curl -sX GET http://192.168.2.102/vapps/cnnmanager/resultsources/last --user admin:ids | jq ".inference.Top1, .inference_propability.Top1"
"person"
"0.95"
ここで、カメラレンズの前にテスト用にさまざまな絵を置いて、それぞれの推論結果を呼び出します。
ブラウザーでの REST 呼び出し
アドレス行から直接
推論の照会は、Web ブラウザー (Firefox や Google Chrome など) を通じても非常に簡単に実行できます。このためには、以下の URL をアドレス行に入力します。http://admin:[email protected]/vapps/cnnmanager/resultsources/last
ユーザー認証情報は標準 HTTP 認証ヘッダーで転送されます。
しかし、セキュリティ上の理由から、一部のブラウザー (IE など) では URL への認証情報の埋め込みをサポートしなくなりました。
ブラウザープラグインの使用
REST API ブラウザープラグイン
REST 呼び出しをテストする非常に明快な GUI を持つ、便利なブラウザープラグインも多数あります。
推論結果の照会を、Google Chrome ブラウザーと拡張機能 "YuiAPI" でテストします。
特殊クライアントでの REST 呼び出し
REST Web サービスと通信する最も手軽な方法は、おそらく "Postman" などのクライアントを使用するものです。わかりやすく配置された GUI と、ステータスコード、応答時間、自動音声認識や、REST 呼び出しを作成するときのリンクおよび構文強調表示などの多数のサポート機能により、専門家でなくても REST にすばやくアクセスできます。応答データの分析とフィルタリングも簡素化されます。もう 1 つの利点は、完全な API 記述をインポートしたり、RAML、WADL、OpenAPI などの既知の API 仕様を使用して自分で作成したりすることができることです。
Postman は、IDS NXT カメラと REST Web サービスで通信するためのビジュアル開発環境です。REST 呼び出しを作成し、コレクションとして保存して整理できます。

繰り返し必要となるデータは変数として提供すると便利です。しかし、Postman の最も重要な機能はコード生成です。ボタンを押すだけで、テストして保存した REST 呼び出しから完全に使用可能なコードスニペットがクライアントで作成され、cURL、C、C#、Python、Java、Swift などの多数の一般的なプログラミング言語やクライアントで使用できます。

Postman コードスニペットは、IDS NXT カメラを自己プログラミングされたアプリケーションに統合する優れた基盤になります。
REST API のプログラムされたアプリケーションへの統合
IDS NXT カメラには C++ アプリケーションなどの開発 SDK は提供されていませんが、カメラをプログラミングによって統合できないという訳ではありません。ほとんどのプログラミング言語で、メーカーからのソフトウェアを追加せずに、REST または HTTP 接続が可能です。このため、Postman などの REST クライアントで完全に機能するコードスニペットを提供し、直接使用できるのです。
IDS の AI カメラの結果をサンプルとして使用して、Python で REST 呼び出しをプログラムする方法を示します。
Python による REST 呼び出し
import http.client
import mimetypes
conn = http.client.HTTPSConnection("192.168.188.21")
payload = ''
headers = {
'Authorization': 'Basic YWRtaW46aWRz'
}
conn.request("GET", "/vapps/cnnmanager/resultsources/last", payload, headers)
res = conn.getresponse()
data = res.read()
# output camera response
print(data.decode("utf-8"))
Python は IoT では非常に一般的なプログラミング言語です。IDS NXT カメラを生産オートメーションシステムに統合する方法を、Python を使用して詳細に説明します。
Python でのインタラクティブな開発
テクニカルティップスでは、ソフトウェアパッケージに Python コードスニペットを追加し、IDS NXT カメラとそのインターフェースの基本操作を示します。付属の Jupyter Notebook を使って、ライブのオープンソース Web アプリケーションで、Python のサンプルと、IDS NXT カメラとのデータ交換をテストし、理解することができます。
1.ログインと画像の転送 (connect_and_get_image.ipynb)
最初のサンプルでは、GET コマンドを使用して認証し、IDS NXT カメラから画像を取得する方法を示します。
2.露出時間の変更 (change_exposure.ipynb)
2 番目のサンプルは、カメラパラメーターの要求方法と変更方法を示します。このためには、PATCH コマンドを使用して露出値を変更します。
3.画像撮影のトリガー (trigger_image_acquisition.ipynb)
3 番目のサンプルでは、POST コマンドを使用して、画像撮影をトリガーして修正したシーンの画像内容を取得する方法を示します。
4.IO Gateway の設定 (set_gpio_gateway.ipynb)
4 番目のサンプルでは、CNN Manager ビジョンアプリの結果に基づいて、カメラのデジタル出力を切り替える方法を示します。
Python コードサンプル Python コードサンプルを Jupyter Notebookとしてダウンロード
Jupyter Notebook を使用してサンプルをテストする方法は、付録「Python で IDS NXT と通信する」で説明しています。
まとめ
デジタル入出力、RS-232、REST Web サービスにより、IDS NXT カメラは標準インターフェースを実現し、非常に柔軟に使用できるようになります。ホスト PC を使わずに画像処理タスクを実行する組み込みビジョンデバイスには、リモートステーションとの通信に PC サポートは不要になります。ステートレス REST インターフェースにより、すべての Web 互換デバイスに接続できるようになり、カメラを IoT ネットワーク構造で最適に位置付けできます。適切な REST クライアント (Postman など) により、多数の共通プログラミング言語向けのソフトウェアラッパーを、ボタンを押すだけで作成できます。
既存ツールと IDS NXT 推論カメラプラットフォームのインターフェースで、実績のある技術で既存インストールへの統合と同様に、今後の Web 互換の IoT 構造へもインストールが容易になります。IDS NXT または統合の詳細については、ナレッジベースをご覧になるか、システムコンサルタントまでお問い合わせください。
ティップス:IDS NXT ウェビナービデオ
IDS のウェビナービデオ「Integration of IDS NXT in Factory Automation」では、IDS NXT カメラインターフェースを通じた通信を、Python サンプルコードと Jupiter Notebook を使って実演します。
その他のヒントを読む:IDS NXT カメラを OPC UA を使用してファクトリーオートメーションに統合
後編の「OPC UA を使用した IDS NXT とのインターフェース」では、OPC UA Server を通じた IDS NXT カメラの通信における新たな可能性を中心に紹介します。AI サンプルワークフローを使用して、保存したカメラ設定のアクティブ化、推論タスクの開始、OPC UA クライアントを介した結果の問い合わせの方法を説明します。これにより、IDS NXT カメラを OPC UA ベースの産業用途に統合しやすくなります。