Smart GigE Kameras eröffnen neue Möglichkeiten für die Anwendungsarchitektur

Kombiniert man eine intelligente Kamera mit einer GigE Schnittstelle so kann dabei mehr entstehen als nur ein „zwei-in-eins-Gerät“. Das zeigt die PicSight Smart GigE von Leutron Vision. Sie bietet neben dem Funktionsumfang einer normalen GigE Vision kompatiblen Industriekamera zusätzlich integrierte Rechenleistung mit einem Echtzeit-Betriebssystem auf einem Nexperia Prozessor – mit weitreichenden Folgen für die Möglichkeiten der Gestaltung von Bildverarbeitungsanwendungen.

1+1=3

Die PicSight Smart GigE sieht genauso aus wie eine PicSight GigE Kamera. Auch die Auswahl an Sensoren und optischen Filtern ist identisch. Lediglich an der Aufschrift auf dem Typenschild ist der Unterschied von außen erkennbar. Und genau so einfach lässt sich die Kamera in GigE Vision kompatible Bildverarbeitungssoftware integrieren und benutzen. Zusätzlich birgt das Maschinenauge jedoch einen 32 Bit RISC Prozessor unter seinem unscheinbaren silbernen Gehäuse. Der macht sie zu einer echten intelligenten Kamera. Mit ihr lassen sich auch autonom arbeitende Bildverarbeitungsanwendungen zu einem Preis realisieren, der nur wenig über dem einer normalen GigE-Kamera liegt. Noch viel interessanter ist jedoch die Fülle von Möglichkeiten die sich aus der Kombination mit der GigE-Schnittstelle und der strikten Orientierung am GigEVision / GenICam Standard ergibt. Da sowohl die Kameraseite, als auch die Host-Seite programmierbar sind, kann man nicht nur den Funktionsumfang der Kamera erweitern, es lassen sich auch Bildverarbeitungsaufgaben zwischen Kamera und Host-PC leicht verteilen. Die Kommunikation und Datenübertragung erfolgt dabei immer standardisiert über GigEVision. Da sich die PicSight Smart GigE genau wie eine normale GigE-Kamera verhält kann sie problemlos mit Halcon, MIL, LabView, VisionPro und Common Vision Blox und anderen Bibliotheken nutzen. Ein Wechsel von einer normalen GigE zum intelligenten Schwestermodell ist dank Standardisierung ebenfalls problemlos möglich.

Drei verschiedenen Architekturen mit einer Smart-GigE-Kamera: GigE, autonom, verteilte Bildverarbeitung
Drei verschiedenen Architekturen mit einer Smart-GigE-Kamera: GigE, autonom, verteilte Bildverarbeitung


Zusätzliche Kamera-Funktionen programmieren

Auf dem Prozessor der Smart-Kamera kann man nicht nur Bildverarbeitung machen. Mit wenig Programmieraufwand lässt sich der Funktionsumfang der PicSight Smart GigE vielseitig anpassen und erweitern. So kann die Kamera beispielsweise zusätzliche Steuerungsaufgaben z.B. Für eine Sequenzsteuerung, erweiterte Beleuchtungssteuerungen oder andere Hardware übernehmen. Durch die Möglichkeit, für die Parametrisierung eigener Funktionen, GenICam-Register zu nutzen, lässt sich die Steuerung dafür einfach über GigE Vision realisieren und steht direkt im Feature-Tree von GenICam/GigE Vision kompatiblen Anwendungen zur Verfügung. So können Funktionen kostengünstig und direkt auf der Kamera integriert werden, die sonst anderweitig gelöst werden müssten, und die Kamera bleibt trotz der Funktionsereiterungen GenICam-kompatibel. Einige Funktionen wie z.B. Ein Lenscontroller zur Ansteuerung motorisierter Objektive gehören bereits zum Standardumfang der PicSight Smart GigE.



Beispiel 1: Funktionserweiterung der Kamera

In einer Messzelle müssen viele Kameras von einem 3D Objekt eine Bildsequenz. möglichst schnell und mit verschiedenen Lichtquellen und Bildparametern aufnehmen. Die Bilder werden anschließend während des Objektwechsels ausgewertet.

Bei einer Lösung mit Standard GigE Kameras würde die gleichzeitige Übertragung der Bilder das Ethernet sehr schnell überfordern oder zumindest eine entsprechend aufwändige Auslegung der Netzwerk- und Rechnerarchitektur erfordern

Durch ein einfaches Zusatzprogramm kann die Kamerafunktion zur Aufnahme kompletter parametrisierbarer Bildsequenzen erweitert werden. Vor jedem Bild werden die Kamera (Gain, Shutter,...) und ein Beleuchtungskontroller über eine RS232 Schnittstelle konfiguriert. Die Bilder werden lokal auf der Kamera gespeichert und können bei der Auswertung vom Hostrechner abgerufen werden. Der Übertragungszeitpunkt der Daten ist unabhängig vom Aufnahmezeitpunkt. Dadurch wird eine sehr robuste Übertragungslösung erreicht, die Netzwerk und Host-PC nicht überfordert.

Beispielcode:

 

void acquire_sequence()

{

char UartBuffer[m_iMaxCmdLen];

// Aufnehmen einer Bildsequenz mit verschiedenen Parametern

for( int frameIndex=0; frameIndex < m_iNrFrames; frameIndex++ ) {

    // 1. Belichtungszeit festlegen

    lvAcqSetShutterTime( seqFrameBuffer[frameIndex+1].Shutter );

    // 2. Verstärkungsfaktor festlegen    

    lvAcqSetAnalogGain ( seqFrameBuffer[frameIndex+1].Gain);    

    // 3. Lichtsteuerung über RS232 Kommando, Farbe auswählen

    sprintf( UartBuffer,"%s\r\n", seqFrameBuffer[frameIndex].CmdOn );

    write( m_iUart, UartBuffer, strlen(UartBuffer));

    // 4. Warte bis Licht bereit ist

    lvNdkTaskSleep(seqFrameBuffer[frameIndex].Wait); // wait in ms

    // 5. Bildaufnahme

    lvAcqARTrigger(0); // Triggersignal generieren

    lvAcqWaitEndFullFrame( &m_iTimeOut ); // Warte auf Bildende

    // 6. Speichere Bild in Ringpuffer

    memcpy( seqFrameBuffer[frameIndex].Image.BaseAddress0, tmpImage.BaseAddress0, imageSize );

    }

}



Die strikte Orientierung am GenICam / GigEVision Standard bringt nicht nur den Vorteil der Kompatibilität. Programmierer die das GenAPI bereits kennen bewegen sich in gewohntem Umfeld. Die die  noch nicht damit gearbeitet haben investieren ihrem Lernaufwand nicht in irgend ein Herstellerspezifisches API, sondern in einen weit verbreiteten und gut dokumentierten Standard.


Verteilte Bildverarbeitung

Da es sich bei der Smart GigE um eine echte Smart-Kamera mit GigE-Interface handelt können auch Teile der Bildverarbeitung direkt auf der Kamera erfolgen. Zur Realisierung stehen als Bibliotheken, das freie OpenCV und MVTec's Halcon Embedded zur Verfügung. So können Beispielsweise Bilder auf der Kamera vorverarbeitet und ausgewählt werden, die anschließend über die schnelle GigE-Schnittstelle zum Host-PC gesendet werden. Dieser kann dann die eigentliche Auswertung übernehmen. Das ist besonders beim synchronen Einsatz mehrere Kameras interessant um Netzwerk und Host-CPU zu entlasten und einen sicheren und robusten Übertragungsweg zu gewährleisten.



Beispiel 2: Rechenaufgaben auf Kamera und Host verteilen

Die Vorverarbeitung auf der PicSight Smart GigE kann zur Entlastung des Hostsystems und des Netztwerkes dienen.
Bei intelligenten Überwachungskameras können Überwachungsszenarien direkt auf der Kamera geprüft werden und nur Bilder mit relevanten Änderungen übertragen werden. Beispielsweise können in Tunnel Haltebuchten überwacht werden und nur bei Veränderungen Bilder an die Leitstellen gemeldet werden. In Anlagen zur Überwachung von fließendem Verkehr kann die Erkennung der Fahrzeuge auf der Kamera zum Triggern einer Bildsequenz verwendet werden. Nur Bilder die für die Nummernschilderkennung notwendig sind werden an den Host übertragen.
Typische Vorverarbeitungsalgorithmen können auch zur Bildverbesserung, Spiegelung, Drehung und  Filterung des Originalbildes dienen. Je nach Komplexität und verwendeter Bibliothek ist dies in Echtzeit oder mit eingeschränkter Bildrate möglich. Zur Programmierung der Bildverarbeitungsfunktionen können auf der PicSight Smart GigE das freie OpenCV, Halcon Embedded von MVTec, oder aber eigene Algorithmen in C / C++ verwendet werden.



Bildvorverarbeitung auf der Kamera wählt ein Bild aus, die Übertragung erfolgt über GigE Vision an den Host-PC



Umfangreiche Werkzeuge erleichtern das Arbeiten

Um die Evaluierung und Programmierung zu vereinfachen, bietet Leutron Vision für alle seine Kameras das kostenlosen Entwicklungspaket Simplon an. Der Simplon-Explorer beinhaltet einen Kamera-Viewer zur Darstellung von Kamerabildern, einen GenICam-Feature-Tree-Browser, Sourcecode-Generator und ein Dokumentationssystem, das zusätzlich zur Beschreibung der GenICam-Funktionene auch Hilfe und Beispiele für deren Verwendung im Sourcecode enthält.

Nach dem Auswählen der angeschlossenen Kamera, werden sämtliche Funktionen der Kamera im GenICam-Feature-Tree in einer Baumstruktur angezeigt. Die zugehörigen Parameter können direkt verändert und ausprobiert werden. Die Dokumentation zur jeweiligen Funktion und Ihrer Verwendung wird in einem Fenster unterhalb des Feature-Trees angezeigt.


Simplon Expolorer mit Camera Viewer (1), GeniCam Feature Browser (2), Info und API-Dokumentation (3), Standardausgabe und Userlog der Smart-Kamera (4), Projektgenerator (5) und Sourcecode-Generator (6)


Programmcode erzeugen lassen

Für jedes Feature lassen sich mit wenigen Mausklicks Codefragmente in C, C++, C# und VB-.Net und ganze Applikationsskelette mit allen zugehörigen Code und Projekt-Dateien erzeugen. Da der Bildaufnahmecode für die Smart-Seite PicSight Smart GigE weitgehend identisch ist mit dem der Hostseite, kann Simplon sowohl Code für Smart-Applikationen als auch für Host-Anwendungen erzeugen. Bildverarbeitungscode kann dadurch, z.B. Mit der OpenCV Bildverarbeitungsbibliothek, auf dem Host-PC entwickelt und getestet werden und lässt sich später leicht in die Smart-Applikation übertragen. Das reduziert den Lernaufwand und verkürzt die Entwicklungszeit. Für Nutzer Der Smart-Kamera wurden zusätzliche Werkzeuge in Simplon integriert. So können Anwendungen auf der Kamera direkt aus Simplon heraus gestartet und die Kamera zurückgesetzt werden. Um das Debugging zu erleichtern werden die Standardausgabe und Userlogs direkt im Log-Fenster des Simplon-Explorers angezeigt.

Die PicSight Smart GigE eröffnet Bildverarbeitern neue Möglichkeiten für die Auslegung Ihres Bildverarbeitungssystems. Verarbeitungsaufgaben können sinnvoll zwischen Kamera und Host-PC verteilt werden. Zusätzliche Kamerafunktionen lassen sich leicht entwickeln und in GeniCam / GigEVision compatible Software integrieren. Umfangreiche Entwicklungswerkzeuge erleichtern das Arbeiten mit der Kamera.