Integration von Bildverarbeitung in Embedded Systeme
Ein Schlüssel für neue Produktentwicklungen
Embedded Computersysteme sind für viele Anwendungen interessant und ermöglichen die Entwicklung neuer Produkte. Viele Anwender können aber auch mit Embedded Systemen effizientere Ansätze für bereits vorhandene Systeme finden und Systemkosten sparen.
Für alle, die eine Embedded Bildverarbeitungstechnologie in ihrem System einsetzen möchten, stellt sich eine wichtige Frage: Wie kann die Kamera in das System integriert werden? In der industriellen Bildverarbeitung erfolgt eine typische Kameraintegration über eine GigE- oder USB-Schnittstelle an einem PC (bzw. IPC), was mehr oder weniger einer Plug-and-play-Lösung entspricht. Zusammen mit einem Software Development Kit (SDK) des Herstellers kann dann leicht auf die Kamera zugegriffen werden. Kann dieses Prinzip auf ein Embedded System angewandt werden? Die Antwort ist einfach: ja! Mit einem Single Board Computer (SBC) bleibt die Vorgehensweise die gleiche: Populäre SBCs wie Raspberry Pi oder Odroid, aber auch industrietaugliche Modelle (z. B. von Thoradex oder Advantech) bieten kompatible Schnittstellen (USB/Ethernet). Obwohl SBCs mit x86-basierten Prozessoren angeboten werden, sind solche mit ARM-Prozessoren weiter verbreitet. Immer mehr Kamerahersteller bieten ihre SDKs mit einer ARM-Version an, damit Anwender eine Kamera auf vertraute Weise wie mit einem Windows PC integrieren können. Im Idealfall bietet das SDK die gleiche Funktionalität und APIs (Anwendungsprogrammierschnittstellen) für beide Plattformen. Somit kann selbst der Anwendungscode teilweise wiederverwendet werden und der Integrationsaufwand bleibt überschaubar.
Spezialisierte Embedded Systeme
Embedded Systeme können aber auch auf weit höher spezialisierter Hardware basieren. Viele solcher Systeme verwenden SoMs (Systems on Module), das sind sehr kompakte Boardcomputermodule, die nur Prozessor (üblicherweise ein SoC, System on Chip), Speicher und andere wichtige Komponenten besitzen. Solch ein SoM wird auf eine Trägerplatine montiert, das die nötigen Verbindungen zur Außenwelt zur Verfügung stellt. Mit einer solchen relativ günstigen Trägerplatine kann das System für spezifische Anforderungen individuell angepasst werden. Dennoch bleiben durch den Einsatz eines Standard-SoMs die Gesamteinrichtungskosten gering.
Diese Konfiguration kann auch mit einem Standard-Schnittstellenanschluss (d. h. USB) ausgestattet werden. In diesem Fall profitiert man von den gleichen Vorteilen wie bei einem SBC. Oft ist aber die USB-Schnittstelle hinsichtlich Platz-, Gewichts- oder Energiebedarf nicht optimal für ein schlankes System-Setup. Hier ist eine direkte Kamera-Prozessor-Verbindung von Interesse.
Spezielle Bilddatenübertragung
Stabil und robust: Eine Bilddatenübertragung auf LVDS-Basis oder über den CSI2-Standard ist für die direkte Verbindung zwischen Kamera und SoC gut geeignet. Für beide Methoden gibt es aber keine eindeutig standardisierte Hardware, d.h. keine spezifizierten Anschlüsse oder Kabel. Sie müssen folglich für die Anbindung einer Kamera an die Trägerplatine gesondert definiert werden.
CSI2, ein Standard aus der Mobilgeräteindustrie, beschreibt die Signalübertragung und einen Softwareprotokollstandard. Einige SoCs bieten CSI-Schnittstellen, sie arbeiten jedoch nicht einheitlich und es gibt keine generischen Treiber. Somit bietet CSI2 keine direkt einsatzfähige Lösung “out of the box“.
Doch auch für LVDS gibt es kein Standard-SW-Protokoll und keine Standard-Treiber, auch wenn es sich dabei um ein weit verbreitetes Verfahren für die Hochgeschwindigkeitsdatenübertragung handelt. Einige Hersteller bieten Abhilfe in Gestalt von Kameras mit LVDS-Ausgang auf Basis eines proprietären Protokolls und die dazu passenden Verarbeitungsplatinen mit entsprechenden Treibern. Der Vorteil ist eine Komplettlösung mit geringem Integrationsaufwand. Allerdings ist der Anwender auf eine ganz bestimmte Hardware festgelegt.
Andere Kamerahersteller bieten für die Hardwareintegration einen offen dokumentierten LVDS-basierten Kameraausgang. In diesem Fall kann ein Treiber bzw. eine Ausleseroutine erstellt werden oder vorhandene Treiber an das eigene System angepasst werden. Dafür sind vorhandene Referenzsysteme oder Treiber-Vorlagen bei der Entwicklung hilfreich.
Kamerakonfiguration
Wichtig für die Kameraintegration ist auch die Frage der Kamerakonfiguration. Steuersignale zwischen dem SoC und der Kamera können über Bussysteme, wie z. B. CAN, SPI oder I²C, ausgetauscht werden. Für diese Funktionalität ist noch kein Standard festgelegt. Der Kamerahersteller bestimmt, welche Bildverarbeitungsparameter wie gesteuert werden können und ob etwa GenICam unterstützt wird. Mit dem richtigen Treiber kann die Software direkt auf die Kamerakonfiguration zugreifen und Parameter anpassen. Eine gute Dokumentation des Softwareprotokolls hilft, die Möglichkeiten der Kamerakonfiguration ausschöpfen zu können. Basler unterstützt den Zugriff auf Kameras via I²C (als Teil der BCON for LVDS-Schnittstelle) von Baslers pylon SDK aus und bietet standardisierte APIs (d. h. in C++) zur Konfigurationsprogrammierung.
Fazit
Embedded Bildverarbeitung kann für bestimmte Anwendungen die ideale Lösung sein. Embedded Anwendungen können für SBCs mit GigE- oder USB-Verbindung zur Kamera entwickelt werden. Diese Hardware ist populär, in vielen Preis-, Leistungs- und Qualitätsklassen verfügbar und eignet sich für viele Anwendungsfälle.
LVDS- und CSI2-basierte Kamera-zu-SoC-Verbindungen bieten eine direktere Schnittstelle für die Bilddatenübertragung, jedoch ohne die Basis eines umfassenden Industriestandards. Somit erfordern beide Methoden bei der Entwicklung einfacher Integrationslösungen Anpassungs- und Integrationsaufwand. Aber Unternehmen bieten Treiber, Development Kits und andere Hilfsmittel, um Anwendern die Integration zu erleichtern.
Für die Zukunft wären für eine einfachere Integration von Kameras mit Direktanschluss an einem SoC die Entwicklung und Einführung von Standards wünschenswert. Mit generischen Treibern und standardisierten Daten-APIs kann die Entwicklung auch spezialisierter Bildverarbeitungslösungen erleichtert werden. Damit würde die Integration von Bildverarbeitungstechnologie selbst in die kleinsten und schlankesten Embedded Systeme ebenso leicht werden, wie das heute bereits für die (I)PC-basierte industrielle Bildverarbeitung der Fall ist.