Anzeige

Generisches Herzstück

Zehn Jahre Kamera-Branchenstandard GenICam

Meilensteine

Die 2004 begonnene Entwicklung des Standards mündete in das Release von GenICam 1.0 im September 2006. Von Anfang an gab es passend zum GenICam-Standard auch eine Referenzimplementierung, welche die gesamte Funktionalität in Form einer C++ API zur Verfügung stellte. Der Name dafür war schnell gefunden: GenAPI, also eine generische Programmierschnittstelle. Heute verwendet nahezu jeder Kamera- und Software-Hersteller die aktuelle Version dieser Referenzimplementierung als Teil seiner Installation. Nun galt es zu verhindern, dass verschiedene Kamerahersteller die gleiche Funktionalität unter unterschiedlichen Namen anbieten würden. Dazu wurde die sogenannte GenICam Standard Features Naming Convention (SFNC) entwickelt. Diese beschreibt die Namen, den Typ und den Wertebereich der üblichen Kamera-Features. Falls also eine Kamera ein in der SFNC definiertes Feature anbietet (z.B. ExposureTime), muss es der SFNC-Definition folgen. Bis auf wenige Ausnahmen sind die Features in der SFNC als recommended bzw. optional gekennzeichnet, das heißt die Kamera muss nicht alle Features anbieten. Gleichzeitig kann eine Kamera auch weitere Hersteller-spezifische Features anbieten (custom features). Der Erfolg von GenICam liegt nun unter anderem darin, dass sowohl Kameras mit wenigen Features als auch Kameras mit vielen beziehungsweise auch speziellen Features möglich sind. Dank GenAPI werden die tatsächlich verfügbaren Features zur Laufzeit interpretiert und können von der Bildverarbeitungsapplikation ausgelesen und gesetzt werden. Somit ermöglicht es GenICam explizit, dass sich Kameras differenzieren sowie durch neue Features erweitern lassen können, ohne die Kompatibilität zum Standard zu verlieren. Da der GigE Vision-Standard von Anfang an verlangte, dass eine Kamera kompatibel zum GenICam-Standard sein muss, hat sich der Standard schnell verbreitet und fand nach und nach auch Verwendung für andere bereits existierende Transport Layer Standards wie DCAM (IEEE 1394) und Camera Link, insbesondere aber auch für USB3 Vision, CoaXPress und Camera Link HS. Für ein möglichst einfaches Zusammenspiel von Kamera und Bildverarbeitungsapplikation sind GenAPI und SFNC allerdings nur der erste Schritt. Um ein echtes Plug&Play zu erreichen, benötigt man auch eine definierte Programmierschnittstelle, die alle vorhandenen Geräte enumeriert, den Verbindungsaufbau übernimmt sowie sich um die Übertragung der eigentlichen Bilddaten kümmert. Dazu wurde 2008 ein weiteres Modul spezifiziert: GenTL, ein generischer Transport Layer. Dessen Hauptaufgabe ist es zu gewährleisten, dass Treiber und SDK unterschiedlicher Anbieter reibungslos zusammenarbeiten. 2009 erfolgte das Release von GenICam 2.0, drei Jahre später mit GenICam 2.3 kam das erste Release von GenCP (Control Protocol). Zwischen 2013 und 2015 erfolgte eine komplette Neuentwicklung der Referenzimplementierung GenAPI mit höherer Performance bei gleichzeitig deutlich geringerem Speicherverbrauch. Fast parallel dazu wurde auch der steigenden Nachfrage nach 3D-Applikationen Rechnung getragen und GenICam 3D als Erweiterungen von SFNC und GenTL entwickelt. Dies führte schließlich im Dezember 2015 zur Veröffentlichung von GenICam 3.0. Das neueste Release von GenICam vom Mai 2016 trägt die Versionsnummer 3.0.1 und beinhaltet vor allem eine erweiterte Version der SFNC, deren Umfang im Lauf der letzten zehn Jahre auf etwa 500 Seiten angewachsen ist.

EMVA European Machine Vision Association

Dieser Artikel erschien in inVISION 4 2016 - 20.09.16.
Für weitere Artikel besuchen Sie www.invision-news.de