Projekt Tulipp, Fraunhofer IOSB
03.09.2019, 09:11 Uhr
Neue Entwicklungsplattform für Bildverarbeitungskomponenten
Eine neue Entwicklungsplattform erlaubt es Field Programmable Gate Arrays (FPGAs) bedeutend schneller zu programmieren und optimiert dabei Geschwindikeit sowie Akku-Effizienz.
Auf den ersten Blick haben Drohnen, Fahrerassistenzsysteme und mobile medizinische Diagnosegeräte nicht allzu viel gemeinsam. Doch: Sie benutzen vermehrt Bildverarbeitungskomponenten, etwa für die Hinderniserkennung oder Fußgängerdetektion. Im Gegensatz zu einem Arbeitsplatzrechner, wo die Abmessungen und Energieverbrauch nicht wirklich kritisch sind, sind für solche Anwendungen kleine, leichte, energieeffiziente und trotzdem echtzeitfähige Bildverarbeitungskomponenten gefragt. Gängige Computerarchitekturen mit Prozessoren sind für diese Anforderungen keine geeignete Hardwareplattform. Oft kommen deshalb eingebettete Systeme auf Basis sogenannter Field Programmable Gate Arrays (FPGAs) zum Einsatz. Das sind Logikbausteine, deren Schaltungsstruktur sich über eine spezielle Art der Programmierung frei konfigurieren lässt.
Dafür wird in der Regel die hardwarenahe Sprache VHDL verwendet. Das Problem dabei: Die meisten Bildverarbeitungsanwendungen liegen in höheren Programmiersprachen wie C/C++ vor, und ihre Übertragung auf die eingebetteten Systeme ist sehr mühselig. Nicht nur, dass VHDL sich stark von anderen Programmiersprachen unterscheidet – zusätzlich muss noch eine Anpassung auf die jeweilige Hardware erfolgen. So sind selbst bereits vorhandene VHDL-Programme nicht auf andere Hardware übertragbar. Die Software-Entwickler müssen also bei jedem neuen System wieder nahezu bei null anfangen.
Neues Starter-Kit
Ein Konsortium, dem acht Partner aus sechs Ländern angehörten – darunter auch das Fraunhofer-Institut für Optronik, Systemtechnik und Bildauswertung IOSB in Karlsruhe – hat dieses Prozedere im Rahmen des Tulipp-Projekts nun erheblich vereinfacht. »Dabei entstand eine Entwicklungsplattform bestehend aus Design-Guidelines, einer konfigurierbaren Hardware-Plattform, einem echtzeitfähigen Betriebssystem, welches Multi-core-Prozessoren unterstützt, sowie einer Programmierwerkzeugkette«, fasst Dr.-Ing. Igor Tchouchenkov, Gruppenleiter am Fraunhofer IOSB, zusammen. »Darüber hinaus hilft ein Starter-Kit, das von einem unserer Partner im Rahmen von Tulipp auf den Markt gebracht wurde. Mit ihm lassen sich solche Anwendungen viel schneller und einfacher entwickeln. Portierungen von C++-Programmen auf FPGA, an denen ein Entwickler oft mehrere Monate gearbeitet hat, sind mit dem Tulipp-Starterkit innerhalb von wenigen Wochen zu stemmen.«
Für den Entwickler heißt das: Ausgehend von der in C++ programmierten Software überlegt er zunächst, welche Code-Bestandteile man auf welche Hardware-Komponenten aufteilt und welche Programmschritte sich optimieren beziehungsweise parallelisieren lassen. Dabei helfen ihm die erarbeiteten Design-Guidelines. Anschließend kommt das Starter-Kit ins Spiel. Es enthält die konfigurierbare Hardware, an die sich die benötigten Sensoren und Ausgabegeräte anschließen lassen, das multiprozessorfähige Echtzeit-Betriebssystem sowie die sogenannte STHEM-Toolchain. Die darin enthaltenen Anwendungen erlauben es, das C++-Programm so zu optimieren, dass es möglichst einfach und schnell auf die FPGA portiert werden kann. »Ein besonderer Schwerpunkt der Toolchain liegt auf der Energieoptimierung: Schließlich sollen die Bildverarbeitungssysteme möglichst mit einem kleinen Akku auskommen«, sagt Tchouchenkov. »In der Toolchain lässt sich der Energieverbrauch daher für jede Code-Funktion einzeln anzeigen und optimieren.«
Hundertmal schneller als der High-End-PC
Um die Tulipp-Plattform zu entwickeln und zu testen, hat das Konsortium drei konkrete Anwendungsfälle bearbeitet: Das Forscherteam am Fraunhofer IOSB hat sich den Verfahren zur Hinderniserkennung einer Drohne mit Stereokameras gewidmet, weitere Projektpartner befassten sich mit der Fußgängerdetektion im Umfeld eines Autos sowie mit der Live-Bildverbesserung von Röntgenbildern eines mobilen C-Bogens während einer Operation. Im Rahmen von Tulipp haben sie entsprechende Bildverarbeitungsverfahren von C++ auf FPGA portiert.
Das Ergebnis kann sich sehen lassen: Die Verfahren, die ursprünglich auf einem High-End-PC mehrere Sekunden für die Analyse eines einzigen Bildes gebraucht haben, laufen nun auf der Drohne in Echtzeit, das heißt es werden nun circa 30 Bilder pro Sekunde analysiert. Auch die Fußgängerdetektion konnte in punkto Schnelligkeit um einen Faktor von hundert gesteigert werden: Statt einem Bild pro sieben Sekunden schafft das System nun 14 Bilder pro Sekunde. Und die Strahlung bei Röntgenuntersuchungen konnte aufgrund vorgeschalteter Filter und besserer Bildauswertung auf ein Viertel reduziert werden. Gleichzeitig konnte der Energieverbrauch aller drei Anwendungen um ein Vielfaches verringert werden.