Entwicklungsplattform vorgestellt Embedded-Systeme schneller entwickeln

Die Stereokamera und das eingebettete System aus der Drohne.
Die Stereokamera und das eingebettete System aus der Drohne.

Um Bildverarbeitungssoftware für Embedded-Systeme zu entwickeln, muss der Entwickler Programmcode mühsam von einer in die andere Sprache übersetzen. Meist von C++ in einen FPGA-Code. Um den Vorgang zu beschleunigen, hat ein EU-Konsortium jetzt eine Entwicklungsplattform geschaffen.

Immer öfter kommen in der Entwicklung Bildverarbeitungskomponenten zum Einsatz, zum Beispiel für Drohnen, Fahrerassistenzsysteme oder mobile Röntgengeräte. Als Plattform für die Komponenten dienen meist Embedded-Systeme auf FPGA-Basis. Als Programmiersprache für die FPGAs dient meist VHDL. Bildverarbeitungsanwendungen liegen jedoch meist in C oder C++ vor, weshalb der Entwickler den Programmcode mühsam übersetzen muss. Außerdem ist die Hardware anzupassen, was nicht immer möglich ist. So kommt es vor, dass Software-Entwickler bei Anwendungen zur Bildverarbeitung wieder bei null anfangen.

Programmcode schneller umwandeln

Um das Ganze zu umgehen, hat ein Konsortium aus sechs Ländern im Rahmen des »Tulipp-Projekts« eine Entwicklungsplattform geschaffen. Die Plattform besteht aus Design-Richtlinien, einer konfigurierbaren Hardware-Plattform, einem echtzeitfähigen Betriebssystem sowie einer Programmierwerkzeugkette.

Darüber hinaus hilft ein Starter-Kit, mit dem sich solche Anwendungen viel schneller und einfacher entwickeln lassen. Portierungen von C++-Programmen auf FPGA, an denen ein Entwickler oft mehrere Monate gearbeitet hat, sind mit dem Starter-Kit innerhalb weniger Wochen zu stemmen.

Konkret heißt das für den Entwickler: Ausgehend von der in C++ programmierten Software überlegt er, welche Code-Bestandteile auf welche Hardware-Komponenten aufzuteilen sind und welche Programmschritte sich optimieren lassen. Dabei helfen die erarbeiteten Design-Richtlinien. Anschließend kommt das Starter-Kit zum Einsatz. 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 Programmierwerkzeugkette. 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.

Bilder: 4

Fraunhofer Embbeded-Systeme

Mit der Entwicklungsplattform lässt sich Programm-Code schneller entwickeln, zudem werden die Machine-Learning-Algorithmen beschleunigt.

Auch Algorithmus wird beschleunigt

Zu den Projektpartnern bei der Entwicklung der Tulipp-Plattform zählt auch das Fraunhofer Institut für Optronik, Systemtechnik und Bildauswertung IOSB in Karlsruhe. Um die Werkzeuge bei der Code-Transformierung zu testen, wurden drei konkrete Anwendungsfälle herangezogen. Ein Forscherteam beschäftigte sich mit dem Verfahren zur Hinderniserkennung einer Drohne mit Stereokameras, ein anderes mit der Fußgängerdetektion bei autonomen Fahrzeugen und ein drittes mit der Live-Bildverbesserung bei Röntgenaufnahmen.

Das Ergebnis war für das Forscherteam zufriedenstellend. So wurde nachgewiesen, dass sich mit dem Entwicklungs-Kit nicht nur die Programmierung des Codes beschleunigt, auch der Bildverarbeitungs-Algorithmus läuft auf dem Embedded-System deutlich schneller als auf C++-Basis. Die Verfahren, die ursprünglich auf einem Hochleistungs-PC mehrere Sekunden für die Analyse eines einzigen Bildes gebraucht haben, laufen auf der Drohne in Echtzeit. So werden etwa 30 Bilder pro Sekunde analysiert. Auch die Fußgängerdetektion wurde in punkto Schnelligkeit um den Faktor hundert gesteigert: Statt einem Bild pro sieben Sekunden schafft das System 14 Bilder pro Sekunde. Die Strahlung bei Röntgenuntersuchungen wurde aufgrund vorgeschalteter Filter und besserer Bildauswertung auf ein Viertel reduziert. Gleichzeitig verringerte sich der Energieverbrauch aller drei Anwendungen um ein Vielfaches.

Somit erreicht Entwickler bei Einsatz der Entwicklungsplattform eine schnellere Programmierung, eine Beschleunigung der Algorithmen sowie eine Verringerung des Energieverbrauchs.