mengineer's blog

ニッチなネタばかりですが。

GenICamの世界その5 GenTLは何か難解

ということで、先日からGenTLの規格書を眺めているのですが、かなり苦戦中...、
今回は、いつも以上にざっくりした概要だけになるかもしれません。

その前におさらい、GenICamの最新版はGenICamTM package Version3.0なのですが、
いつものダウンロードページを見ると、下記6つの組合せだと判ります。

f:id:mengineer:20160518142910p:plain

  1. GenApi3.0 → ほぼGenICam本体(GenApiのバージョン=GenICamバージョン)
  2. GenTL 1.5 → 今回説明するもの
  3. SFNC2.2 → その2で説明
  4. GenTL SFNC1.0
  5. GenCP 1.1
  6. CLProtocol1.1

以前1~3が主な要素だと言いましたが、なんと他にも4~6の3つが有ります。

ここまで細分化&個別バージョンにするのは、当然何か理由が有るのでしょうが、
規格を初めて見る人(私のような)からすると、ホント判りづらいですね。
(前回、規格を決める側優先になってる気が...とか言ったのも、この辺りです)

ちなみにGenApiは3.0ですが、下の方を見ていくと、

"new major release of the GenApi reference implementation: complete re-implementation (faster, smaller footprint, additional platforms), still based on the GenApi standard 2.0."

と有るので、その2で説明したGenApi2.0と基本は同じと考えて良さそうです。
(規格書のpdfも2.0が最新です)

前置きが長くなりました、ではGenTLの中身を見てみましょう。

GenTLとは

最新バージョンは1.5で、規格書はダウンロードページに有ります、下記参照。

http://www.emva.org/wp-content/uploads/GenICam_GenTL_1_5.pdf

GenTLは、実際のカメラへの読み書きだとか、画像データを転送する部分になります、
以前載せた下記の図で言うと、"Transport Layer" の部分です。

f:id:mengineer:20160511160855p:plain

GenTLには、概念として"Producer"と"Consumer"の2つが定義されています、
下記は上記規格書の13ページより抜粋。

f:id:mengineer:20160518222844p:plain

GenTL Producer

ハードウェア(カメラ)の制御や、画像データを転送するためのライブラリ、
もしくはドライバーソフトウェア

GenTL Consumer

GenTL Producerを参照する上位のアプリケーションなど

上図で判るように、インターフェイスやVendorが異なるGenTL Producerを、
ひとつのGenTL Consumerから参照出来ますよ、ということですね。

カメラや画像処理ボードがProducerで、SDKなどがConsumerですかね。

ということで、今回はここまでです。(いきなりですが)

規格書を見ていったのですが、あとは実際のAPIの説明が中心でした、
例えばデバイスへのアクセスだと、こういうサンプルが出てきます。
(興味の有る方は、規格書を見てみて下さい)

f:id:mengineer:20160519212237p:plain

この辺りは、実際にソフトを開発する場合の話になってきますので、
いずれ機会が有れば、サンプルソフトを作りながら調べるつもり。

あと最初の4〜6、GenTL SFNC(何じゃこりゃ)だとか、GenCP、
CL Protocol等々は、調べてネタに出来そうなら載せようと思います。

なんとなくGenICamの雰囲気は判ったので、いったん良しとしましょう。