Bildverarbeitung - HANSER automotive
Bildverarbeitung - HANSER automotive
Bildverarbeitung - HANSER automotive
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
12lA UTOMOTIVE<br />
3-4.2009l TITEL<br />
© Carl Hanser Verlag GmbH & Co.KG, München, www.hanser-<strong>automotive</strong>.de; Nicht zur Verfügung in Intranet- u.Internet-Angeboten oder elektron. Verteilern<br />
ENTWICKLUNG VON FAHRERASSISTENZSYSTEMEN MIT FPGAS<br />
<strong>Bildverarbeitung</strong><br />
mit Methode<br />
Mit AIDA, dem Advanced Integrated Driver Assistance System von Altera<br />
wird zum einen eine integrierte Systemarchitektur zur kostengünstigen<br />
Umsetzung von Fahrerassistenzsystemen und zum anderen eine neue<br />
Methodik vorgestellt, die eine direkte Schnittstelle von der PC Entwicklun<br />
zur Hardware realisiert.<br />
Moderne Fahrzeuge bieten heute schon Lösungen<br />
basierend auf Radar oder Kamerasystemen,<br />
die den Fahrer in Gefahrensituationen<br />
warnen und unterstützen sollen. Die erste Generation<br />
solcher Systeme sind Spurwechselassistenten (LDW –<br />
Lane Departure Warning), Adaptive Abstandssysteme<br />
(ACC – Adaptive Cruise Control), Rückschaukameras als<br />
Einparkhilfe und Nachtsichthilfen. Die nächste Generation<br />
wird über mehr Sensoren mit noch höherer Auflösung<br />
und über deutlich komplexere Funktionen verfügen.<br />
Systementwickler stehen dabei vor großen Herausforderungen,<br />
da die aufwendigen Algorithmen eine<br />
sehr hohe Verarbeitungsleistung erfordern, im Fahrzeug<br />
aber weder viel Platz noch ausreichende Kühlmöglichkeit<br />
für stromhungrige Prozessoren besteht. Dazu kommen<br />
noch die üblichen Randbedingungen wie minimale<br />
Kosten und maximale Ausfallsicherheit. Eine Reihe von<br />
Halbleiterbausteinen adressiert diese Probleme auf<br />
unterschiedliche Art. Heute werden sowohl spezielle<br />
Bildverabeitungs-Controller, als auch Signalprozessoren<br />
(DSPs), Standard-Prozessoren und Programmierbare<br />
Logik (FPGAs) in neuen Systemkonzepten untersucht.<br />
Beispiel eines Spurwechselassistenten<br />
Das Beispiel in Bild 1 zeigt den prinzipiellen Aufbau von<br />
Fahrerassistenzsystemen. In diesem Fall wird eine nach<br />
vorne schauende Kamera eingesetzt, die eine Auflösung<br />
von mindestens 640x480 Bildpunkten und eine Bildrate<br />
von 15-30 fps (Bilder pro Sekunde) aufweist. Der<br />
LDW-Algorithmus verarbeitet das Kamerasignal in ver-
TITELl AUTOMOTIVE<br />
3-4.2009l13<br />
© Carl Hanser Verlag GmbH & Co.KG, München, www.hanser-<strong>automotive</strong>.de; Nicht zur Verfügung in Intranet- u.Internet-Angeboten oder elektron. Verteilern<br />
Bild 1: Verarbeitungsblöcke und Signalfluss für einen Spurwechsel-Assi-<br />
© <strong>automotive</strong><br />
schiedenen Schritten. Zunächst werden<br />
relevante Messpunkte gesucht und<br />
extrahiert, anhand derer dann Kandidaten<br />
identifiziert werden, die auf einer<br />
Spurgrenze liegen könnten. Mit einer<br />
Reihe von Filterfunktionen und der<br />
Betrachtung vorausgehender Bilder wird<br />
diese Information zur Spurkennzeichnung<br />
verwendet. Schließlich wird die<br />
Lage des Fahrzeugs auf der Spur berechnet.<br />
Je nachdem wie nahe das Fahrzeug<br />
der Spurgrenze kommt wird ein Warnsignal<br />
generiert.<br />
stenten.<br />
Prinzipiell kann man zwei Arten der Signalverarbeitung<br />
unterscheiden. Die<br />
ersten Berechnungsschritte verarbeiten den Strom der<br />
Bilddaten direkt und müssen daher sehr schnell ablaufen.<br />
Dabei werden im Pixeltakt mehrere Linien gleichzeitig<br />
gefiltert, um z.B. Kanten zu erkennen. Diese sogenannte<br />
Bildvorverarbeitung (Pre-Processing) wird in der<br />
Regel parallel in Hardware implementiert. Der Signalfluss<br />
geht als Strom durch die Blöcke hindurch. Die<br />
Anforderungen an die Hardware sind dabei recht<br />
beachtlich. Ein einfaches 3-Tap-Filter für ein VGA-Signal<br />
mit 30 fps erzeugt einen Rechenaufwand von 30 Millionen<br />
Multiplizier-Akkumulier-Zyklen pro Se-kunde. Die<br />
Ergebnisse der Berechnung werden wieder zu einem<br />
Bild zusammengesetzt und im Speicher abgelegt. Das<br />
ist notwendig, weil die folgenden Verarbeitungsschritte<br />
wahlfrei auf einzelne Bildpunkte zugreifen müssen und<br />
daher nicht direkt im Bildstrom arbeiten können. Diese<br />
Bildnachverarbeitung (Backend-Processing) ist nur mit<br />
hohem Aufwand parallel zu implementieren und wird<br />
daher meist in einer Prozessorarchitektur als Programm<br />
durchlaufen. Dabei ist die Speicherbandbreite des<br />
Systems entsprechend leistungsfähig auszulegen,<br />
denn nur ein einziger wahlfreier Zugriff pro Bildpunkt<br />
erzeugt schon eine Buslast von etwa 150 MByte/s.<br />
Bild 2: Aufbau des AIDA-Prozessors.<br />
Um den oben genannten Anforderungen gerecht zu<br />
werden, bestehen leistungsfähige Fahrerassistenzsysteme<br />
heute aus mindestens zwei Bausteinen, dem Vorverarbeitungsbaustein<br />
an der Kamera und einem oder<br />
mehreren DSPs zur Bildnachverarbeitung. Die Architektur<br />
der Vorverarbeitungseinheit hängt von der Fahrerassistenzfunktion<br />
ab, die realisiert werden soll. Es gibt<br />
zwar eine Reihe von Standardfiltern, die auch in einigen<br />
Spezialbausteinen in Hardware integriert sind - die Qualität<br />
eines Systems wird jedoch entscheidend von der<br />
Bildvorverarbeitung beeinflusst. Damit ist es meist<br />
unerlässlich spezielle Filterfunktionen zu implementieren.<br />
Besonders flexibel geht das mit FPGAs.<br />
AIDA-Controller<br />
Fahrerassistenzsysteme werden aufgrund des hohen<br />
Bauteileaufwands derzeit nur in Oberklasse- und einigen<br />
Mittelklasse-Fahrzeugen als Option angeboten. Ein<br />
breiter Einsatz auch in Volumenbaureihen erfordert eine<br />
grundlegende Optimierung der Systemarchitektur. Eine<br />
deutliche Kostenreduktion ergibt sich durch die Integration<br />
einer flexiblen Bildvorverarbeitung und einer programmierbaren<br />
Bildnachverarbeitung in einen Baustein.<br />
Der AIDA-Prozessor (Bild 2) bietet<br />
sowohl die Flexibilität der programmierbaren<br />
Hardware als auch die<br />
Programmierbarkeit und die Verarbeitungsleistung<br />
eines DSPs.<br />
Die dargestellten Funktionsblöcke<br />
sind Hardware-Module, die entweder<br />
fest vorgegeben oder anwenderspezifisch<br />
konfigurierbar sind.<br />
Dabei implementiert die linke Funktionsblockreihe<br />
die Signalvorverarbeitungsmodule<br />
mit vier unabhängigen<br />
Kameraeingängen, die mittlere<br />
Reihe realisiert das Back-end-Processing<br />
mit drei unabhängigen<br />
CPUs für verschiedene Algorithmen<br />
und die rechte Reihe stellt einen<br />
System Kommunikationscontroller<br />
zur Verfügung, um den AIDA-Controller<br />
mit den im Fahrzeug vorhan-<br />
© <strong>automotive</strong><br />
denen Schnittstellen zu verbinden.
14lA UTOMOTIVE<br />
3-4.2009l TITEL<br />
© Carl Hanser Verlag GmbH & Co.KG, München, www.hanser-<strong>automotive</strong>.de; Nicht zur Verfügung in Intranet- u.Internet-Angeboten oder elektron. Verteilern<br />
Bild 3: FPGA-Entwicklungssystem.<br />
Am unteren Rand ist die Speicherverwaltung mit zwei<br />
DDR2-Speichercontrollern und einem Flash-Controller<br />
abgebildet. Zusätzlich zum externen Speicher steht noch<br />
ein internes SRAM zur Verfügung. Der dargestellte Funktionsumfang<br />
stellt den Maximalausbau dar. Je nach Anforderungen<br />
werden alle oder nur ein Teil der Blöcke in den<br />
Controller integriert.<br />
Design-Methodik<br />
Der AIDA-Controller wird auf der Basis von Programmierbarer<br />
Logik entwickelt und steht dem Entwickler als sogenanntes<br />
Design-Template zur Verfügung. Die festen Funktionsmodule<br />
sind dabei bereits im Design vorhanden und<br />
miteinander verbunden. Die konfigurierbaren Blöcke werden<br />
mithilfe von Design Werkzeugen weitgehend automatisch<br />
generiert und in das Design eingebaut. Am Beispiel<br />
des oben genannten Spurwechselassistenten soll<br />
hier der Entwicklungsvorgang näher betrachtet werden.<br />
Der verwendete LDW-Algorithmus stammt dabei von der<br />
Firma Elektrobit Automotive und basiert auf dem PRE-<br />
VENT SAFELANE Projekt der Europäischen Gemeinschaft.<br />
Die Entwicklung eines LDW-Systems erfolgt zunächst am<br />
PC und benutzt eine Reihe von Test-Videos, um die Qualität<br />
des Algorithmus direkt überprüfen zu können. Das Entwicklungssystem<br />
kann dazu Echtzeitvideos von Fahrszenen auf<br />
eine Festplatte aufzeichnen und dem Algorithmus zur Bearbeitung<br />
anschließend wiedergeben. Die Hardware für beide<br />
Entwicklungsphasen ist in einem FPGA integriert. Dabei ist<br />
das FPGA aufgeteilt in einen Video-Streamingblock und in<br />
den eigentlichen AIDA-Block. Beide Blöcke arbeiten dabei<br />
unabhängig voneinander und beeinflussen sich auch bezüglich<br />
der Verarbeitungsleistung nicht gegenseitig. Während<br />
der Entwicklung wird hauptsächlich der Video-Streamingblock<br />
für die Fahrszenenwiedergabe verwendet. Im endgültigen<br />
AIDA-Controller werden dann die Streaming-Eingänge<br />
direkt mit Kameras verbunden.<br />
Der Streamingblock hat ein Anwenderinterface mit Bildschirm<br />
und Touchscreen. Sein Festplatteninterface und die<br />
dazugehörige Software stellt ein Filesystem zur Verfügung,<br />
aus dem bis zu vier VGA-Videokanäle gleichzeitig<br />
auf den AIDA-Block aufgespielt werden<br />
können.<br />
Der AIDA-Teil ist rund um den Nios II-Prozessor<br />
aufgebaut, einen flexiblen 32-bit<br />
RISC Controller mit folgenden zusätzlichen<br />
Basiselementen<br />
■ Performance Counter für das Code<br />
Profiling,<br />
■ Nachrichtenspeicher zur Kommunikation<br />
mit der Streaming-Schnittstelle,<br />
■ Grafikcontroller, um verarbeitete Bildszenen<br />
abspielen zu können.<br />
Auch für die Software des AIDA-Controllers<br />
steht eine Designvorlage zur Verfügung, die<br />
aus vordefinierten Elementen besteht und<br />
© <strong>automotive</strong> nur um den Anwendercode erweitert werden<br />
muss. Eine Profiling-Phase dient zur<br />
Identifikation von Softwareteilen, die eine<br />
Hardwarebeschleunigung erforderlich machen. Dabei gibt es<br />
zwei verschiedene Fälle zu berücksichtigen:<br />
■ Verarbeitet der Algorithmusteil die Pixeldaten des Videosignals<br />
nacheinander, dann wird dieser Teil zu einem Vorverarbeitungsblock<br />
im Systemgenerator, dem sogenannten<br />
SOPC-Builder. Der Eingang eines solchen Blockes ist die<br />
Video-Streamingschnittstelle. Die verarbeiteten Daten werden<br />
in einem Bildspeicher abgelegt. Dieser Teil des Algorithmus<br />
wird oft in Tools wie MATLAB/SIMULINK entwickelt.<br />
■ Benötigt der Algorithmusteil den wahlfreien Zugriff auf<br />
die Punkte in einem Bildspeicher mit einem weiteren Bildspeicher<br />
für die Ergebnisse, dann handelt es sich um eine<br />
Backend-Verarbeitung. Dieser Teil des Algorithmus ist in der<br />
Regel C/C++ Softwarecode.<br />
Diese beiden Fälle treten in realen Fahrerassistenzalgorithmen<br />
in der Regel gleichzeitig und teilweise auch mehrfach<br />
auf. Zur Hardware-Beschleunigung von Signalvorverarbeitung<br />
und der Backend-Verarbeitung werden zwei<br />
unterschiedliche Methoden eingesetzt.<br />
Die Signalvorverarbeitung berechnet Operationen direkt auf<br />
dem Videostream und ist daher sehr rechenintensiv. Eine<br />
Hardwarebeschleunigung ist meist unumgänglich, da sehr<br />
viele arithmetische Operationen durchzuführen sind. Wird<br />
zum Beispiel eine einzige MAC-Instruktion mit Multiplikation<br />
und Aufsummierung für jeden der 307.200 Pixel eines VGA-<br />
Bildes verlangt, so benötigt ein Standard-DSP mit einer Verarbeitungseinheit<br />
genau 307.200 Zyklen zu deren Berechnung.<br />
Ein Signalvorverarbeitungsblock in Hardware kann<br />
jedoch viele dieser Operationen parallel ausführen und benötigt<br />
deswegen wesentlich weniger Zeit für die Verarbeitung<br />
eines kompletten Bildes. Die Algorithmen der Signalvorverarbeitung<br />
werden oft in MATLAB/SIMULINK entwickelt,<br />
bevor sie in C++ übersetzt werden. Das Tool DSP Builder<br />
arbeitet direkt mit MATLAB/SIMULINK zusammen und kann<br />
aus der grafischen Darstellung des Algorithmus automatisch<br />
einen Hardwarebeschleunigungs-Block generieren. Im Beispiel<br />
der LDW-Funktion benötigt der Signalvorverarbeitungsblock<br />
etwa 70 % der gesamten Rechenzeit. Eine Implementierung<br />
in Hardware mithilfe des automatischen Design<br />
Flows benötigt nur noch ca. 1% der Rechenzeit und ver-
TITELl AUTOMOTIVE<br />
3-4.2009l15<br />
© Carl Hanser Verlag GmbH & Co.KG, München, www.hanser-<strong>automotive</strong>.de; Nicht zur Verfügung in Intranet- u.Internet-Angeboten oder elektron. Verteilern<br />
braucht 2500 Logikelemente, das sind etwa<br />
3% der zur Verfügung stehenden Ressourcen<br />
eines AIDA-Controllers.<br />
Im Unterschied zur Signalvorverarbeitung arbeitet<br />
das Backend-Processing mit wahlfreiem<br />
Zugriff auf die einzelnen Pixel eines Videobildes.<br />
Ein Beispiel dafür ist die Korrektur des Bildes<br />
von einer Weitwinkellinse, wie sie oft in Rükkschaukameras<br />
zum Einsatz kommt. Dieser<br />
Algorithmus ordnet die Pixel des Eingangsbildes<br />
neu an und führt eine Interpolationsfunktion<br />
aus. Die Pixelzuordnung selbst ist ideal für<br />
eine sequentielle Abarbeitung in einem RISC<br />
Prozessor geeignet. Da die Interpolation einige<br />
Rechenzeit benötigt, wird hier direkt aus dem<br />
C-Code mithilfe des Tools C2H automatisch<br />
Hardware zur Beschleunigung generiert. Dieser Block wird<br />
dabei mit einem DMA-Mechanismus an das Prozessorsystem<br />
angeschlossen und die Funktion im C-Code ist dann nur<br />
noch ein Kommunikationsaufruf zur Hardware.<br />
Entwicklungsplattform<br />
Bei Fahrerassistenzsystemen ist es besonders wichtig, möglichst<br />
früh einen Prototyp auf der Zielhardware zu testen, um<br />
damit die voraussichtlichen Kosten und den Systemumfang<br />
abschätzen zu können. Der AIDA-Controller wurde für die<br />
PARIS-Infotainment Plattform (Bild 4) entwickelt, die zum<br />
Aufbau von Prototypen für Head-Units und Fahrerassistenzsysteme<br />
eingesetzt werden kann. Dazu stehen zwei LCD-<br />
Bildschirme, das Mainboard mit den Systemschnittstellen<br />
und dem Prozessormodul mit dem FPGA sowie eine Festplatte<br />
zur Verfügung. Das Mainboard hat eine ganze Reihe von<br />
Anschlüssen für alle gebräuchlichen Infotainment Schnittstellen,<br />
die in dem FPGA integriert werden können.<br />
National Instruments Germany GmbH<br />
Konrad-Celtis-Str. 79 • 81369 München<br />
Tel.: 089 7413130 • Fax: 089 7146035<br />
ni.com/germany • info.germany@ni.com<br />
Bild 4: PARIS Entwicklungsplattform für Fahrerassistenzsystem Prototypen.<br />
Zusammenfassung<br />
Die FPGAs und HardCopy-ASICs von Altera stellen eine<br />
attraktive Lösung für Fahrerassistenzsysteme dar. Mit paralleler<br />
Signalverarbeitung in Hardware sowie prozessorbasierter<br />
Verarbeitung wird im Vergleich zu konventionellen<br />
Systemarchitekturen eine weitaus höhere Systemleistung<br />
zu signifikant niedrigeren Kosten erreicht. Die vorgestellte<br />
Design-Methodik ermöglicht darüber hinaus einen direkten<br />
und automatischen Übergang von C++ Code oder MAT-<br />
LAB/SIMULINK Modellen in die Hardware, ohne dass eine<br />
Hardware-Beschreibungssprache verwendet werden muss.<br />
(oe)<br />
Simulation - Prüftechnik - Versuchsauswertung<br />
Dr. Axel Zimmermann ist Market Development<br />
Manager Europe Automotive bei<br />
Altera.<br />
Altera<br />
@ www.altera.com<br />
7. Technologietag “Prüfstandskonzepte in der Automobilindustrie”<br />
Am 26. Mai 2009 im CongressPark Wolfsburg<br />
Agenda und kostenfreie Anmeldung: ni.com/germany/<strong>automotive</strong>tag<br />
© <strong>automotive</strong><br />
Der NI-Technologietag bietet Ihnen:<br />
• ein hochkarätiges Vortragsprogramm<br />
• zwei begleitende Workshops<br />
• eine umfangreiche Fachausstellung<br />
Diskutieren Sie mit NI-Experten sowie zahlreichen Ausstellern und Fachkollegen und holen Sie sich neue Impulse für Ihre<br />
Aufgabenstellungen! Die Teilnahme an der ganztägigen Veranstaltung ist kostenfrei.<br />
© 2009 National Instruments Corporation. Alle Rechte vorbehalten. National Instruments, NI und ni.com sind Warenzeichen von National Instruments. Andere erwähnte Produkt- und Firmennamen sind Warenzeichen oder Handelsbezeichnungen der jeweiligen Unternehmen. Druckfehler, Irrtümer und Änderunge vorbehalten.