-
Die Erfindung betrifft ein Verfahren zum Ablegen einer Umfeldkarte in einem Speicher eines Fahrzeugs sowie eine entsprechend eingerichtete elektronische Recheneinheit.
-
Für viele zukünftige Fahrfunktionen und Fahrerassistenzsysteme eines Fahrzeugs, insbesondere das automatisierte Fahren, Einparkassistent, etc, ist die Erfassung des Umfeldes des Fahrzeugs unerlässlich. Insbesondere muss meist festgestellt werden, welche Teilbereiche des Umfeldes nicht durch Hindernisse blockiert sind und damit uneingeschränkt befahrbar sind. Die Umfelderfassung wird dabei mit verschiedenen Sensorsystemen wie Kameraverbünde, Radar, Lidar und Ultraschallsensoren, ausgeführt. Zur Modellierung des Umfelds eines Fahrzeugs für verschiedene Kamera- bzw. generell sensorbasierte Fahrerassistenzsysteme (z.B. Einparkassistent), wird typischerweise eine Umfeldkarte, häufig auch als Grid bezeichnet, als Modell verwendet.
-
Eine Umfeldkarte umfasst Umfelddaten, die aus der Verarbeitung von Sensormessungen des Umfeldes resultieren und diese repräsentieren. Die Umfelddaten werden dabei meist nach Teilbereichen (manchmal auch Zelle genannt) des Umfeldes geordnet. Jedem Teilbereich werden diejenigen Umfelddaten zugeordnet, die aus Messungen in diesem Teilbereich resultieren. Die Umfelddaten können unterschiedliche Informationstypen je Zelle umfassen, beispielsweise die Belegungswahrscheinlichkeit der jeweiligen Zelle (also die Wahrscheinlichkeit, dass die Zelle von einem Hindernis belegt ist), die Höhe des Hindernisses, der Explorationsgrad der Zelle, etc. Ein Hindernis in einer Zelle bedeutet, dass der Teilbereich des Umfeldes nicht oder nur unter Bedingungen mit dem Fahrzeug befahren werden kann. Insgesamt umfassen Umfeldkarten somit typischerweise mehrere Ebenen mit jeweils unterschiedlichen Informationstypen.
-
Die Teilbereiche des Umfeldes können gemäß verschiedenen geometrischen Anordnungen aufgeteilt sein. Beispielsweise können die Teilbereiche in einer regelmäßigen Gitterstruktur aufgeteilt sein mit Zeilen und Spalten (im Sinne einer Aufteilung nach kartesischen Koordinaten), die Teilbereiche können allerdings auch einer radialen Aufteilung nach Entfernung vom Ursprung und Winkelbereich folgen (im Sinne einer Aufteilung nach Polarkoordinaten). Die Anordnung gestattet allerdings den Teilbereichen jeweils einen Rang in zwei Ordnungen zuzuweisen. In einer Gitterstruktur kann dies die Zeilennummer und die Spaltennummer sein. In einer radialen Anordnung kann dies die (beispielsweise aufsteigend bestimmte) Nummer des Entfernungsbereichs vom Ursprung und die (beispielsweise aufsteigend bestimmte) Nummer der Winkelbereich sein.
-
Die Umfeldkarte wird in typischen echtzeitfähigen Implementierungen in embedded systemen für Fahrzeuge in einem linear angeordneten Speicher (Bitmap) abgelegt. Dabei wird jeder Zelle einer Umfeldkarte ein statischer Speicherbereich zugewiesen. Die benachbarten Zellen einer Zeile der Umfeldkarte liegen dabei auch in benachbarten Speicherzellen. Diese Ebenen können auf zwei Weisen codiert werden: Für jede Ebene wird ein eigener linearer Speicherbereich verwendet, oder die Ebenen liegen Zellenweise verschränkt im gleichen Speicherbereich.
-
Zur Verarbeitung der Karte wird der Speicherbereich üblicherweise vollständig traversiert, also die abgelegten Umfelddaten jeder Zelle bearbeitet, wodurch auch informationslose Zellen bzw. Zellen, deren Umfelddaten nicht auf ein Hindernis hindeuten, adressiert werden. In einer typischen Umfeldszene, also einem typischen Umfeld eines Fahrzeugs, ist die Umfeldkarte üblicherweise relativ dünn besetzt, umfasst also vergleichsweise wenig Zellen, deren Umfelddaten auf ein Hindernis hindeuten, beispielsweise weniger als 30%, 25%, 20%, 15%, 10% oder 5% der Zellen. Deshalb führt die vollständige Traversierung einer Karte zu einem eigentlich unnötigen und erheblichen Mehraufwand an Rechenleistung. Auf heutigen Desktop-Rechnern mit kostengünstigen Vergleichsoperatoren, ist dieser Mehraufwand in zeitlicher Hinsicht vernachlässigbar und die Echtzeitfähigkeit ist sichergestellt. Auf handelsüblichen Automotive- bzw. generell Embedded-Prozessoren, insbesondere mit nur seriellen Rechenkapazitäten, single core, können diese zusätzlichen Vergleiche allerdings die Laufzeit negativ beeinträchtigen. Diese Prozessoren sind gegebenenfalls nicht in der Lage, eine für die Anwendung zur Fahrtsteuerung unerlässliche Echtzeitfähigkeit zu erreichen.
-
Es ist deshalb eine Aufgabe der vorliegenden Erfindung, die Speicherung einer Umfeldkarte in einem Speicher eines Fahrzeugs derart zu optimieren, dass unnötiger Rechenaufwand vermieden wird.
-
Die Aufgabe wird durch ein Verfahren und eine elektronische Recheneinheit gemäß den unabhängigen Ansprüchen gelöst. Vorteilhafte Weiterbildungen sind in den abhängigen Ansprüchen definiert.
-
Ein erster Aspekt der Erfindung betrifft ein Verfahren zum Ablegen einer Umfeldkarte in einem Speicher eines Fahrzeugs, wobei die Umfeldkarte Umfelddaten umfasst, die Sensormessungen des Bereichs des Umfelds repräsentieren, wobei der Bereich in Teilbereiche unterteilt ist; wobei jedem Teilbereich diejenigen Umfelddaten zugewiesen sind, die die Sensormessungen des entsprechenden Teilbereichs repräsentieren; wobei jedem Teilbereich ein erster Rang in einer ersten Ordnung, beispielsweise eine Zeile, und ein zweiter Rang in einer zweiten Ordnung, beispielsweise eine Spalte, zugewiesen wird; wobei die Zuweisung auf der geometrischen Anordnung der Teilbereiche innerhalb des Bereichs basiert; wobei das Verfahren umfasst: Für einen ausgewählten Teilbereich; wobei die Umfelddaten des ausgewählten Teilbereiches ein vorgegebenes Kriterium erfüllen; wobei der erste und zweite Rang des ausgewählten Teilbereiches als ausgewählter erster beziehungsweise zweiter Rang bezeichnet werden: Aus den Teilbereichen mit ausgewähltem ersten Rang: Bestimmen desjenigen Teilbereiches, nachfolgender Teilbereich genannt, dessen Umfelddaten das vorgegebene Kriterium erfüllen, (der also belegt ist) und dessen zweiter Rang höher oder niedriger und am nächsten am ausgewählten zweiten Rang ist; Speichern des zweiten Ranges des nachfolgenden Teilbereiches in Verbindung mit den Umfelddaten des ausgewählten Teilbereiches. Typischerweise betrifft das Kriterium die Belegtheit eines Teilbereiches durch ein Hindernis, so dass das Fahrzeug den Teilbereich nicht oder nur unter Einschränkungen befahren kann. Aus diesem Grund wird ein Teilbereich, dessen Umfelddaten das Kriterium erfüllen hierin auch belegter Teilbereich genannt. Typischerweise wird durch Wiederholung des Verfahrens für jeden belegten Teilbereich des Bereiches der nachfolgende Teilbereich ermittelt und gespeichert, sofern vorhanden. Mit anderen Worten: Die für den ausgewählten Teilbereich beschriebenen Schritte werden für jeden belegten Teilbereich wiederholt. Jeder belegte Teilbereich wird somit in einem Durchlauf der ausgewählte Teilbereich.
-
Hierin wird also vorgeschlagen, nicht nur die Umfelddaten bezüglich eines Teilbereiches im Speicher abzulegen, sondern für belegte Teilbereiche auch die Information, welcher Teilbereich in derselben Zeile (oder allgemein desselben ersten Ranges) der nächste belegte Teilbereich in der Zeile ist. Es wird also ein Zeiger bzw. Verweis auf den nächsten belegten Teilbereich der Zeile in Verbindung mit dem Teilbereich gespeichert. Die belegten Teilbereiche werden somit verkettet. Falls kein nachfolgender belegter Teilbereich vorhanden ist, wird ein entsprechender Hinweis oder kein Eintrag gespeichert. Mit anderen Worten: Die verkettete Liste wird aufgebaut, indem beim Zugriff auf eine neu zu belegende und (mit einem Hindernis) belegte Zelle jeweils die Umfelddaten (sensorische Information) sowie der rechte beziehungsweise der linke belegte Nachbar (oder beide) gespeichert werden (Insert in eine verkette Liste).
-
Auf diese Weise wird es ermöglicht, dass die Umfeldkarte bei der Auswertung für Fahrerassistenzsysteme nicht vollständig traversiert werden muss, sondern bei der Auswertung von belegten Teilbereichen zu belegten Teilbereichen gesprungen werden kann. Die Bearbeitung von unbelegten Zellen wird vermieden und die entsprechende Rechenzeit insbesondere bei embedded systemen eingespart. Dies ermöglicht häufig erst den Einsatz derzeit handelsüblicher automotive Recheneinheiten als echtzeitfähige Systeme.
-
Die durch die Ausführung des Verfahrens entstehende Datenstruktur, erlaubt die für Embedded Systeme übliche statische Allokation von Speicher mit minimalem zusätzlichem Speicherbedarf (ein Verweis pro Zelle). Sowohl die Umfeldkarte als auch die verkettete Liste, haben dabei eine (zur Übersetzungszeit) festgelegte maximale Speichergröße, da es sich bei der aus dem Verfahren vorgeschlagenen Datenstruktur um eine implizite Verschränkung zweier Datenstrukturen Umfeldkarte (bzw. Grid) und der verketteten Liste im gleichen Speicherbereich handelt.
-
In einer Implementierung der Erfindung wird für alle oder einen Großteil der Teilbereiche die Erfüllung des Kriteriums bestimmt, also die Belegung des jeweiligen Teilbereiches ermittelt. Anhand des Anteils der belegten Teilbereiche zur Gesamtheit der Teilbereiche können Fahrerassistenzsysteme (und/oder vorgelagerte Interpretationen des Umfeldes) unterschiedliche Auswertungen vornehmen, die sich in ihrem Rechenaufwand je belegtem Teilbereich unterscheiden (unter der Annahme, dass für unbelegte Teilbereiche kein oder ein im Vergleich zu einem belegten Teilbereich geringerer Rechenaufwand anfällt). Je weniger Teilbereiche belegt sind, desto rechenintensiver kann die Auswertung pro belegtem Teilbereich sein. Beispielsweise können sich die Auswertungen in der Berücksichtigung der verschiedenen Informationstypen oder Quantisierung der Informationen unterscheiden.
-
Vorteilhafterweise umfasst das Verfahren ferner: Für den ausgewählten Teilbereich, wobei zuvor der höhere Rang bestimmt wurde (Ziel ist also die Bestimmung der nächsthöheren und nächstniedrigeren belegten Zelle): Aus den Teilbereichen mit ausgewähltem ersten Rang: Bestimmen desjenigen Teilbereiches, vorangehender Teilbereich genannt, dessen Umfelddaten das vorgegebene Kriterium erfüllen und dessen zweiter Rang niedriger und am nächsten am ausgewählten zweiten Rang ist; Speichern des zweiten Ranges des vorangehenden Teilbereiches in Verbindung mit den Umfelddaten des ausgewählten Teilbereiches. Hierin wird also auch der belegte Vorgängerteilbereich des ausgewählten Teilbereiches in Verbindung mit dem ausgewählten Teilbereich gespeichert. Auf diese Weise werden belegter Vorgänger und belegter Nachfolger in Verbindung mit einem belegten Teilbereich gespeichert. Es entsteht eine zweifach verkettete Liste. Mit anderen Worten: Die Implementierung sieht vor, die Zellstruktur einer Umfeldkarte (bzw. eines Grids) nebst dem sensorischen Inhalt (den Umfelddaten) um weitere Information (NEXT/PREV bzw. nachfolgender Teilbereich/vorangehender Teilbereich) zu ergänzen, sodass eine zweifach verkettete Liste über alle belegten Grid-Zellen dargestellt werden kann. In jeder belegten Zelle wird somit auf die jeweils linken und rechten belegten Nachbarzellen verwiesen. Damit kann das Grid traversiert werden, indem man der verketteten Liste über die belegten Zellen folgt. Der Speicherbedarf pro Teilbereich erhöht sich um zwei Zeiger, die Gesamtgröße des Speicherbedarfs bleibt weiterhin festgelegt.
-
Jedem Teilbereich ist typischerweise ein Speicherbereich im Speicher des Fahrzeugs zugewiesen ist, der darauf ausgelegt ist sowohl die jeweiligen entsprechenden Umfelddaten, als auch den zweiten Rang des nachfolgenden und/oder vorangehenden Teilbereichs zu speichern. Zur Laufzeit des entsprechenden Programms kann somit einzelnen Speicherbereichen fest eine entsprechende Zelle und deren Umfelddaten zugewiesen werden. Weiterhin umfasst der jeweilige Speicherbereich auch Speicherkapazität für die Zeiger zum belegten vorangehenden Teilbereich als auch zum belegten nachfolgenden Teilbereich. Dies ermöglicht die bei embedded Systemen übliche Aufteilung des Speicherbereiches.
-
Das vorgegebene Kriterium betrifft insbesondere die Bestimmung, dass die Umfelddaten des entsprechenden Teilbereichs darauf hindeuten, dass der Teilbereich nicht oder nur unter Bedingungen mit dem Fahrzeug befahren werden kann. Dabei können die verschiedenen Informationstypen der Umfelddaten kombiniert ausgewertet werden.
-
In einer Weiterbildung umfasst das Verfahren ferner: Für einen betrachteten ersten Rang: Aus den Teilbereichen mit betrachtetem ersten Rang: Bestimmen desjenigen Teilbereiches, Start-Teilbereich genannt, der das vorbestimmte Kriterium erfüllt und den kleinsten zweiten Rang aufweist; Speichern des zweiten Ranges des Start-Teilbereiches in Verbindung mit dem betrachteten ersten Rang. Hierin wird also vorgeschlagen, auf den ersten belegten Teilbereich einer Zeile gesondert zu verweisen. Dabei kann für alle ersten Ränge die entsprechenden zweiten Ränge gespeichert werden; wobei die zweiten Ränge in einer gemeinsamen Struktur gespeichert werden.
-
Im Betrieb des Systems kann somit vorgesehen sein, für alle ersten Ränge den derartigen ersten belegten Teilbereich zu bestimmen, sofern vorhanden. Auf diese Weise wird eine Liste von Zeigern auf die jeweilige erste belegte Zelle einer Zeile erhalten. Diese hilft, direkt jene Zeilen (bzw. Teilbereiche gleichen ersten Ranges) anzuspringen, welche mindestens eine belegte Zelle enthalten. Dies ermöglicht weitere Effizienzgewinne hinsichtlich des Rechenaufwandes.
-
Ein anderer Aspekt der Erfindung betrifft eine elektronische Recheneinheit mit Speicher (beispielsweise ein embedded system für den Einsatz im Fahrzeug oder allgemeiner einen Computer), die dazu eingerichtet ist, eines der vorstehend erläuterten Verfahren auszuführen.
-
KURZE BESCHREIBUNG DER ZEICHNUNG
-
1 zeigt eine Datenstruktur, wie sie durch die Anwendung eines Verfahrens gemäß einem Ausführungsbeispiel entsteht.
-
DETAILLIERTE BESCHREIBUNG DES AUSFÜHRUNGSBEISPIELS
-
1 zeigt eine Datenstruktur, wie sie durch die Anwendung eines Verfahrens gemäß einem Ausführungsbeispiel entsteht. Symbolisch wird die Speicherung einer Umfeldkarte 1 in einer Gitterstruktur im Speicher eines Fahrzeugs dargestellt. Die Gitterstruktur spiegelt die kartesische Aufteilung der Teilbereiche des Umfeldes wider. Die s Gitterstruktur umfasst Zeilen in y-Richtung und Spalten in x-Richtung. Jeder Gitterzelle ist ein Speicherbereich im Speicher eines Fahrzeugs (nicht dargestellt) zugeordnet. Jeder Speicherbereich weist eine Kapazität für die entsprechenden Umfelddaten (symbolischer Abschnitt 4) und zwei Zeiger (symbolische Abschnitte 5 und 6) auf. Im Betrieb wird den Teilbereichen des Umfeldes statisch ein Speicherbereich zugewiesen.
-
Beim Betrieb des Fahrzeuges führt eine elektronische Recheneinrichtung mit dem Speicher eine regelmäßige Verarbeitung von Sensordaten von Radar- und Kameravorrichtungen durch. Verfahren hierzu sind im Stand der Technik bekannt. Dabei werden die Sensordaten aufbereitet um die Umfelddaten zu erhalten (umfassend wiederum die Informationstypen Belegungswahrscheinlichkeit und Höhe des Hindernisses). Die Umfelddaten eines Teilbereiches werden dann in den dem Teilbereich zugeordneten Speicherbereich in Abschnitt 4 geschrieben.
-
Vor oder nach dem Schreiben der Umfelddaten überprüft die Recheneinrichtung zusätzlich, ob die der Teilbereich des Umfeldes als belegt gilt (also das vorbestimmte Kriterium erfüllt). Dazu wird die Belegungswahrscheinlichkeit und Höhe des Hindernisses der zu schreibenden Umfelddaten ausgewertet. Verfahren hierzu sind im Stand der Technik bekannt. Im einfachsten Fall wird die Zelle als belegt angenommen, wen die Belegungswahrscheinlichkeit größer 50% ist und die Höhe des Hindernisses größer als 20 cm ist. Durch Hindernisse belegte Zellen sind in 1 schwarz markiert. Gegebenenfalls kann vorgesehen sein, die Belegung einer Zelle als explizites Speicherdatum in den Speicherbereich zu schreiben.
-
Wenn die Belegung der Zelle festgestellt wird, werden Zeiger auf den Speicherbereich der vorangehenden belegten Zelle und den Speicherbereich der nachfolgenden belegte Zelle in derselben Zeile bestimmt. Dazu werden von der betrachteten Zelle ausgehend die benachbarten Zellen hinsichtlich ihrer Belegung überprüft, wobei mit den nächstliegenden Zellen in der Zeile begonnen wird. Ausgehend von der betrachteten Zelle werden somit schrittweise die links neben der betrachteten Zelle liegenden Zellen in derselben Zeile hinsichtlich der Belegung überprüft bis eine belegte Zelle identifiziert wird. Die Spalte dieser linken belegten Zelle wird in den Abschnitt 6 des Speicherbereiches geschrieben und stellt einen Zeiger dar. Falls das Ende der Zeile erreicht wird, wird ein Nullzeiger in den Abschnitt 6 geschrieben. Gemäß demselben Verfahren wird die nächste belegte Zelle rechts von der betrachteten Zelle gesucht und die Spalte der identifizierten Zelle in den Abschnitt 5 geschrieben und stellt ebenfalls einen Zeiger dar. Die Zeigerverhältnisse sind in 1 durch Pfeile dargestellt. Nach dem Schreiben der betrachteten Zelle in den entsprechenden Speicherbereich, werden die Zeiger der Speicherbereiche der referenzierten Speicher angepasst. Diese werden derart gesetzt, dass sie auf den Speicherbereich der betrachteten Zelle verweisen. Auf diese Weise entsteht eine zweifach verkettete Liste.
-
Zusätzlich zur Speicherung der Umfeldkarte (inklusive der Zeiger) selbst, wird eine Speicherung 2 einer Liste mit Zeigern auf die Speicherbereiche der jeweils ersten belegten Zellen der Zeilen der Umfeldkarte erstellt. Dazu bestimmt ein Algorithmus die jeweils ersten belegten Zellen einer Zeile und schreibt einen Zeiger auf den entsprechenden Speicherbereich in die Liste (In 1 „Start1“, „Start2“ und „Start3“). Die Verweisung für „Start3“ wird in 1 durch einen Pfeil dargestellt. Diese weitere Liste ermöglicht zusätzliche Optimierungen des Rechenaufwandes bei der Interpretation der Umfeldkarte.
-
Die Laufzeit des vorgestellten Verfahrens kann durch die Verwendung von hierarchischen Strukturen statt der zweifach verketteten Liste verringert werden, sofern dies für die Anwendung erforderlich ist.