mengineer's blog

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

GenICam再び

久しぶりのGenICamネタ、下記の記事を見つけました。

www.vision-systems.com

思い起こせば、初めてGenICamネタ書いてから8年近く経ってました。

今回は上記VisionSystemの記事を元に、再びGenICam概要見てみます、
しかし”Engine Room of Machine Vision”ってのも面白い表現ですね。

GenICamとGenAPI

GenICamはGeneric Interface for Cameras の略称、ロゴだと下記

iが山括弧で囲まれているのは、XMLでデバイスの機能を記述する意味とのこと。

余談ですが、最近はカメラ以外のGenICam対応品(照明など)も出ているので、
記事でもデバイスという表現になっているのだと思います。

GenAPI

GenICamのXML部分で、大きく3つの役割が有ります。

  1. バイスの機能をユーザーが判りやすい固有名称で記述
  2. バイスの低レベル インターフェイスレジスタ何番地だとか)
  3. 上記2つの間で変換を行うデータフローグラフ

ユーザーの最大のメリットは1で、例えばどのメーカーのカメラでも、
ExposureTime / TriggerModeなど同じ名前で機能を使えます。

2.は、ExposureTimeを変えたら実際は何番地のレジスタに書くか等で、
ここはカメラメーカー個々に異なる部分(ユーザーは知る必要無し)

3.は、何だか良く判っていません。

GenICam Standard

ややこしいことに、GenAPIをGenICam Standardと呼ぶ場合も有るようです、
実際にEMVAのWebサイトでも、GenAPI2.1.1と書かれた リンク先
GenICam_Standard_v2_1_1.pdfというファイル名になっています。

SFNC

これも以前ネタ書いてますが、Standard Features Naming Conventionの略ですね。

要は前述の固有名称やデータ・タイプ、単位などを定めたものです、
以前ネタで”469ページも有る”とか書いてましたが、最新はバージョン2.7で、
更に597ページまで増加、Light/Optical等のControlも増えています。

SFNCの詳しいことは以前ネタ参照。

あと元記事のReference Implementationで、free-of-charge library 云々
も書かれてましたが、ここも詳しくは判りません。

EMVAのダウンロードサイトから、GenICamPackage一式ダウンロードすると、
ライブラリやインクルードファイルも有るので、それらで何か出来るのかも?

追加モジュール

”Additional Modules”で、代表的なものが3つ挙げられていました。

GenTL

最も良く知られているもの、Generic TransportLayerの略、
FrameGrabberとPlug&Playでシームレスに云々書かれています。

個人的には、.ctiファイルを使って色々出来そうなのが便利です、
ここも以前ネタ書いてました、興味有る方は見てみて下さい。

GenCP

汎用制御プロトコル 、名前は聞いたこと有るな程度でした、
USB3VisionやCoaxPressはこれに基づいてるようですが、
正直どの程度重要なのか判りません。

GenDC

Generic Data Containerの略、これは全くの初耳でした、
GenTLで転送するデータの中身で、単一画像/複雑なものなど、
どういうデータ並びにするか、などを定めているようです。

これらの規格書も先ほどのダウンロードページに有りますが、
普通にカメラ使うだけなら、特に知る必要無さそうです。

New ReleaseとFuture

最新は2023年7月に、GenICamPackageとしてリリースされています。

Python3.8~3.11がサポートされたのと、ARM上でのLinuxでも
Pythonサポートされたようです。

今後の話として、ひとつは検証ツールが提供されるようです、
先程の2023.7版にもPreview版が入っているらしい?
具体的に何(の作業?)を検証するのかは判りません。

もうひとつはGenericFeatureAccess、先程のGenAPIに基づいて、
APIを標準化する?みたいな話ですかね、これも詳細は??

まとめ

久しぶりのGenICamネタでしたが、未だに全貌は判りませんでした。

カメラがGenICam対応です=上記のXMLファイルが提供されてる
みたいなイメージで充分かと思います。(私見

カメラからXMLを読み出してGUI表示する部分は、
各メーカー毎にSDKで提供されています。
(ユーザーがXML自体を見て調べたりする必要は無い)

SDKは自社製品しか使えないパターンが多いので、Genericと言っても、
結局はメーカー毎にソフト作って対応することになりますね。