-
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 und ein zweiter Rang in einer zweiten Ordnung zugewiesen wird; wobei die Zuweisung auf der geometrischen Anordnung der Teilbereiche innerhalb des Bereichs basiert; wobei der Umfeldkarte eine Liste von Zeigern auf jeweils einen zweiten Rang zugewiesen ist, wobei jeder Zeiger einem (jeweils anderen) ersten Rang zugewiesen ist; 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: Speichern des zweiten Ranges, auf den der Zeiger der Liste für den ausgewählten ersten Rang verweist, in Verbindung mit den Umfelddaten des ausgewählten Teilbereiches; Setzen des Zeigers der Liste für den ausgewählten ersten Rang auf den ausgewählten zweiten Rang. 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 das Verfahren für jede neue Feststellung einer Belegung eines Teilbereiches basierend auf neuen Sensordaten erneut ausgeführt. Mit anderen Worten: Die für den ausgewählten Teilbereich beschriebenen Schritte werden für jede (er)neute Feststellung einer Belegung eines Teilbereichs 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, eines Verweises (auch Zeiger genannt) auf einen oder zwei weitere belegte Teilbereiche. 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 typischerweise zwei Verweise jeweils auf eine in der Verkettung vorgehende und nachfolgende Zelle. Der Aufbau der Verweisung wird durch Einfügungen ermöglicht, ohne eine Zeile (Teilbereiche gleichen ersten Ranges) zumindest teilweise traversieren zu müssen. Im Endeffekt ist die Verkettung dann unsortiert, was im Zugriff bzw. in der Auswertung aufgrund einer Speicherung meist im RAM oder Cache keine bzw. kaum Leistungseinbußen mit sich bringt. Die Verwendung einer unsortierten Verkettung birgt gegenüber einer sortieren Verkettung (Verweise jeweils nur auf die nächstliegenden belegten Zellen in einer Zeile) bei Einfügungen bzw. Aktualisierungen der Umfeldkarte eine Verringerung des Rechenaufwandes, weil kein Durchsuchen der Zeilen nach den nächsten belegten Nachbarn des ausgewählten Teilbereiches erfolgen muss.
-
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 oder zwei Verweise 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: Vor dem Setzen des Zeigers: Speichern des ausgewählten zweiten Ranges in Verbindung mit den Umfelddaten des Teilbereiches mit ausgewähltem ersten Rang und zweiten Rang, auf den der Zeiger verweist. Hierin wird also auch eine Verkettung zum Vorgänger explizt definiert. Es entsteht die 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 vorangehenden und nachfolgenden belegten Zellen 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.
-
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 resultierende Datenstruktur 1 einer Umfeldkarte in einer Gitterstruktur 2 im Speicher eines Fahrzeugs dargestellt. Die Gitterstruktur 2 spiegelt die kartesische Aufteilung der Teilbereiche des Umfeldes wider. Die Gitterstruktur 2 umfasst Zeilen in „horizontaler“-Richtung (x-Richtung) und Spalten in „vertikaler“-Richtung (y-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, hier ein Speicherbereich für die Belegungswahrscheinlichkeit p) und zwei Zeiger (symbolische Abschnitte 5 und 6) auf und ist entsprechend gegliedert. Der Zeiger 6 dient zum Verweis auf einen vorhergehenden Speicherbereich und der Zeiger 5 dient zum Verweis auf einen nachfolgenden Speicherbereich in der Verkettung. Die Verweise sind in 1 symbolisch durch Pfeile dargestellt. Im Betrieb wird den Teilbereichen des Umfeldes statisch ein Speicherbereich zugewiesen. Ferner umfasst die Datenstruktur 1 eine Liste an Zeigern 3, die jeweils einen Verweis auf eine Spalte speichern können.
-
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 dem Schreiben der Umfelddaten überprüft die Recheneinrichtung, ob der Teilbereich des Umfeldes als belegt gilt (also das vorbestimmte Kriterium erfüllt). Dazu wird die Belegungswahrscheinlichkeit p 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. 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.
-
Im Betrieb empfängt die Recheneinrichtung kontinuierlich Sensordaten für die verschiedenen Teilbereiche des Umfeldes und wertet diese aus. Sofern ein Teilbereich als belegt gilt, wird der entsprechende Speicherbereich beschrieben. In 1 empfängt die Recheneinrichtung beispielhaft zu den Zeitpunkten t1, t2 und t3 Sensordaten von belegten Zellen und schreibt diese in die Datenstruktur. Zusätzlich werden auch die Informationen zur Verkettung, also die Zeiger in den Zellen und der Zeiger der Liste 3, geschrieben.
-
Im Zeitpunkt t1 werden Sensordaten für den Teilbereich in Spalte 5 und Zeile 1 empfangen, die auf eine Belegung hindeuten (p > 0,5). Diese Sensordaten zeigen die erste Belegung in Zeile 5 an. Die Sensordaten werden in den entsprechenden Speicherbereich geschrieben. Die Zeiger 5 und 6 der Zelle werden mit Nullwerten belegt, weil bisher in der Zeile 5 noch keine anderen belegten Zellen vorhanden sind. Dies kann anhand des Nullwertes des der Zeile zugordneten Zeigers bis zum Zeitpunkt t1 ermittelt werden. Dieser Zeiger wird nun auf den (Spalten)Rang 5 der belegten geschriebenen Zelle gesetzt.
-
Zum Zeitpunkt t2 werden Sensordaten für den Teilbereich in Spalte 7 und Zeile 1 empfangen, die auf eine Belegung hindeuten. Die Sensordaten werden zusammen mit einem Verweis auf den zweiten Rang (Spaltennummer) der zuletzt beschriebenen belegten Zelle abgelegt (hier Spaltennummer 5). Die Information über die zuletzt beschriebene belegte Zelle wird dem entsprechenden Zeiger der Liste 3 entnommen. Der Zeiger der Liste 3 wird auf den zweiten Rang (die Spaltenummer 7) der neu beschriebenen Zelle gesetzt. Darüber hinaus wird in der zuletzt beschriebenen Zelle (in Spalte 5) ein Zeiger auf die neu geschriebene Zelle (in Spalte 7 gesetzt. Auf diese Weise entsteht eine Verkettung von belegten Zellen in Zeile 1, deren Beginn durch den Zeiger der Liste 3 angezeigt wird. Jede Zelle verweist auf die zuletzt vor ihr beschriebene Zelle und auf die, falls vorhanden, nach ihr geschriebene Zelle. Das Ende der Verweisungskette wird durch den Nullzeiger angezeigt. Auf diese Weise entsteht eine unsortierte zweifache Verkettung für belegten Zellen mit gleichem erstem Rang bzw. in derselben Zeile. Die Verkettung folgt der zeitlichen Abfolge des Schreibens einer belegten Zelle.
-
Zum Zeitpunkt t3 werden Sensordaten für den Teilbereich in Spalte 2 und Zeile 1 empfangen, die auf eine Belegung hindeuten. Die Sensordaten werden zusammen mit einem Verweis auf die zuletzt beschriebene Zelle abgelegt. Die Information über die zuletzt beschriebene belegte Zelle wird dem entsprechenden Zeiger der Liste 3 entnommen. Der Zeiger der Liste 3 wird auf den zweiten Rang (die Spaltenummer 2) der neu beschriebenen Zelle gesetzt. Darüber hinaus wird in der zuletzt beschriebenen Zelle (in Spalte 7) ein Zeiger auf die neu geschriebene Zelle (in Spalte 2) gesetzt. Auf diese Weise entsteht eine Verkettung der belegten Zellen in Zeile 1, deren Beginn durch den Zeiger der Liste 3 angezeigt wird. Jede Zelle verweist auf die zuletzt vor ihr beschriebene Zelle. Darüber hinaus verweisen die „mittleren“ Zellen auf die jeweils nach ihr beschriebenen Zellen.