久しぶりのGenICamネタ、下記の記事を見つけました。
思い起こせば、初めてGenICamネタ書いてから8年近く経ってました。
今回は上記VisionSystemの記事を元に、再びGenICam概要見てみます、
しかし”Engine Room of Machine Vision”ってのも面白い表現ですね。
GenICamとGenAPI
GenICamはGeneric Interface for Cameras の略称、ロゴだと下記
iが山括弧で囲まれているのは、XMLでデバイスの機能を記述する意味とのこと。
余談ですが、最近はカメラ以外のGenICam対応品(照明など)も出ているので、
記事でもデバイスという表現になっているのだと思います。
GenAPI
GenICamのXML部分で、大きく3つの役割が有ります。
ユーザーの最大のメリットは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と言っても、
結局はメーカー毎にソフト作って対応することになりますね。