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 cockpit
IDS 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 形式で転送されます。

IO およびRS-232 を介した IDS NXT 通信

カメラ画像処理結果をデジタル入出力またはシリアルインターフェースを介して通信するために必要な操作は、2 つの IDS NXT ビジョンアプリ "GPIO Gateway" と "RS-232 Gateway" を IDS NXT Cockpit を通じて起動して、特定の結果を出力するビジョンアプリから設定するだけです。プログラミングは不要です。すべての設定は IDS NXT Cockpit GUI を経由して実行できます。

例として、カメラ AI ("ImageNet1000" と CNN Manager) が特定の物体を分類する (「良」または「不良」) たびに、デジタル出力をアクティブに設定することができます。または、検出した物体クラスと推論の確率を結果の値としてシリアル接続で通信できます。

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" を実行する
  • 人間、カメラ、猫、犬など、さまざまな絵

"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"
    }
}
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:ids@192.168.188.21/vapps/cnnmanager/resultsources/last
ユーザー認証情報は標準 HTTP 認証ヘッダーで転送されます。

しかし、セキュリティ上の理由から、一部のブラウザー (IE など) では URL への認証情報の埋め込みをサポートしなくなりました。

ブラウザープラグインの使用

REST API ブラウザープラグイン
REST 呼び出しをテストする非常に明快な GUI を持つ、便利なブラウザープラグインも多数あります。

REST 通信をブラウザーで直接行う便利な GUI インターフェース
REST 通信をブラウザーで直接行う便利な GUI インターフェース
Postman は REST API の開発およびテスト環境です
Postman は REST API の開発およびテスト環境です

繰り返し必要となるデータは変数として提供すると便利です。しかし、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 を使用して詳細に説明します。

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 ビジョンアプリの結果に基づいて、カメラのデジタル出力を切り替える方法を示します。