-
TECHNISCHES GEBIET
-
Die Erfindung betrifft Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten, Bestimmen, dass sich keiner der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befindet, und dann Generieren eines neuen Segments, das den aktuell evaluierten Höhenpunkt umfasst.
-
ALLGEMEINER STAND DER TECHNIK
-
Eine Technik zum Sortieren von Punktwolkendaten, die von Light-Detection-and-Ranging-(LIDAR)-Vorrichtungen erhalten wurden, ist das Voxelizing. Voxelizing kann viel Zeit in Anspruch nehmen, um Punktwolkendaten zu sortieren und zu aggregieren. In einigen Beispielen kann der Voxelizing-Prozess zu langsam oder aufwändig für Umgebungen sein, die sich rasch ändern können und bei denen eine rasche Reaktion auf solche Veränderungen erwünscht ist.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Es ist ein Bildgebungssystem für ein Fahrzeug beschrieben, das einen Computer und zumindest eine Tiefenerfassungsvorrichtung beinhaltet (wie z. B. eine Light-Detection-and-Ranging-Vorrichtung). Des Weiteren sind ein oder mehrere Verfahren zum Verwenden des Systems ebenfalls beschrieben. Gemäß einem veranschaulichenden Beispiel kann ein Verfahren Folgendes umfassen: Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten; Bestimmen, dass sich keiner der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befindet; und dann Generieren eines neuen Segments, das den aktuell evaluierten Höhenpunkt umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel werden die Vielzahl und der aktuell evaluierte Höhenpunkt von einer Light-Detection-and-Ranging-Vorrichtung empfangen.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Hinzufügen des neuen Segments zu der Gitterbaumdatenstruktur.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Generieren eines Tiefendatenpakets, das einen parsierbaren Schlüssel, einen x-Koordinatenwert und einen y-Koordinatenwert des aktuell evaluierten Höhenpunktes und einen Segmentidentifikator des neuen Segments umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Lokalisieren des Tiefendatenpakets in der Datenstruktur unter Verwendung des parsierbaren Schlüssels, wobei die Datenstruktur eine Hashzuordnung umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst jeder der Vielzahl Folgendes: einen Hashwert, einen x-Koordinatenwert, einen y-Koordinatenwert und einen Segmentidentifikator.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel ist die Datenstruktur eine Quadtree-Datenstruktur.
-
Gemäß einem weiteren veranschaulichenden Beispiel beinhaltet ein Verfahren Folgendes: Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten; Bestimmen, dass sich einer der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befindet, wobei der eine einen ersten Segmentidentifikator umfasst; und dann Markieren des aktuell evaluierten Höhenpunkts mit dem ersten Segmentidentifikator.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel werden die Vielzahl und der aktuell evaluierte Höhenpunkt von einer Light-Detection-and-Ranging-Vorrichtung empfangen.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Generieren eines Tiefendatenpakets, das einen parsierbaren Schlüssel, einen x-Koordinatenwert und einen y-Koordinatenwert des aktuell evaluierten Höhenpunktes und den ersten Segmentidentifikator umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Lokalisieren des Tiefendatenpakets in der Datenstruktur unter Verwendung des parsierbaren Schlüssels, wobei die Datenstruktur eine Hashzuordnung umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst jeder der Vielzahl Folgendes: einen Hashwert, einen x-Koordinatenwert und einen y-Koordinatenwert, wobei zumindest einer der Vielzahl den ersten Segmentidentifikator beinhaltet.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Parsen Verarbeiten von lediglich unbelegten Knoten.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel ist die Datenstruktur eine Quadtree-Datenstruktur.
-
Gemäß einem weiteren veranschaulichenden Beispiel beinhaltet ein Verfahren Folgendes: Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten; Bestimmen, dass sich ein erster Punkt und ein zweiter Punkt der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befinden, wobei der erste Punkt einen ersten Segmentidentifikator umfasst, wobei der zweite Punkt einen zweiten Segmentidentifikator umfasst; Zusammenführen von Segmenten, die dem ersten und zweiten Punkt zugeordnet sind; und Hinzufügen des aktuell evaluierten Höhenpunktes und eines neuen Identifikators des zusammengeführten Segments zu der Datenstruktur.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel werden die Vielzahl und der aktuell evaluierte Höhenpunkt von einer Light-Detection-and-Ranging-Vorrichtung empfangen.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Generieren eines Tiefendatenpakets, das einen parsierbaren Schlüssel, einen x-Koordinatenwert und einen y-Koordinatenwert des aktuell evaluierten Höhenpunktes und den neuen Identifikator umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Verfahren ferner Lokalisieren des Tiefendatenpakets in der Datenstruktur unter Verwendung des parsierbaren Schlüssels, wobei die Datenstruktur eine Hashzuordnung umfasst.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst jeder der Vielzahl Folgendes: einen Hashwert, einen x-Koordinatenwert und einen y-Koordinatenwert, wobei andere der Vielzahl einen dritten Segmentidentifikator beinhalten, der sich von dem ersten und zweiten Identifikator unterscheidet.
-
Gemäß dem vorangehend erwähnten zumindest einen Beispiel umfasst das Parsen Verarbeiten von lediglich unbelegten Knoten.
-
Gemäß dem zumindest einen Beispiel ist ein Computer offenbart, der programmiert ist, um eine beliebige Kombination der Beispiele des bzw. der Verfahren(s) auszuführen, die vorstehend dargelegt sind.
-
Gemäß dem zumindest einen Beispiel ist ein Computerprogrammprodukt offenbart, das ein computerlesbares Medium beinhaltet, auf dem Anweisungen gespeichert sind, die durch einen Computerprozessor ausführbar sind, wobei die Anweisungen eine beliebige Kombination der Beispiele des bzw. der Verfahren(s) beinhalten, die vorstehend dargelegt sind.
-
Figurenliste
-
- 1 ist eine perspektivische Ansicht eines Fahrzeugs, die ein Bildgebungssystem aufweist, das eine Light-Detection-and-Ranging-(LIDAR)-Vorrichtung umfasst.
- 2 ist eine schematische Darstellung von einigen beispielhaften Komponenten des Bildgebungssystems.
- 3 ist eine Darstellung, die eine Rasterbaumstruktur veranschaulicht.
- 4-6 veranschaulichen verschiedene Standpunktrasterbaumstrukturen.
- 7 ist eine schematische Ansicht, die veranschaulicht, wie das Bildgebungssystem zwei LIDAR-Segmente zusammenführt.
- 8 veranschaulicht ein Ablaufdiagramm eines Segmentierungsprozesses, bei dem Punktwolkendaten in LIDAR-Segmenten organisiert und die LIDAR-Segmente in virtuelle Objekte aggregiert werden, die repräsentativ für physische Objekte sind, die durch das Bildgebungssystem abgetastet wurden.
-
DETAILLIERTE BESCHREIBUNG
-
Nun unter Bezugnahme auf die Figuren, in denen gleiche Bezugszeichen gleiche oder ähnliche Elemente, Merkmale oder Funktionen angeben, ist ein autonomes Antriebssystem 10 für ein Fahrzeug 12 gezeigt. Das autonome Antriebssystem 10 kann ein Bildgebungssystem 14 beinhalten, das einen Computer 20 und zumindest eine Tiefenerfassungsvorrichtung 22 umfasst (wie z. B. eine Light-Detection-and-Ranging-(LIDAR)-Vorrichtung). Der Computer 20 kann einen Punktwolkendatensatz von der Tiefenerfassungsvorrichtung 22 empfangen und kann diesen Datensatz parsen und sortieren, sodass das Fahrzeug 12 eine Lagebeurteilung bestimmen und in der Lage sein kann, in einem autonomen Antriebsmodus zu navigieren. Insbesondere kann der Computer 20 diese Punktwolkendaten (die durch die Vorrichtung 22 abgetastet wurden) gemäß einem Prozess, der üblicherweise als Segmentierung bezeichnet wird, analysieren und in virtuelle Objekte organisieren, die repräsentativ für physische oder tatsächliche Objekte in der realen Welt (z. B. um das Fahrzeug 12) sind. Gemäß einer hierin beschriebenen Technik kann der Computer 20 Anweisungen verwenden, die sowohl Standpunktbaumdatenstrukturen als auch Rasterdatenstrukturen nutzen, um das virtuelle Objekt (die virtuellen Objekte) zu rekonstruieren. Unter Verwendung dieses Hybridansatzes aus Standpunktbaum und Rasterbaum kann der Computer 20 in der Lage sein, das virtuelle Objekt schneller und effizienter zu rekonstruieren als durch Verwenden von lediglich einer Rasterbaumdatenstruktur, lediglich einer Standpunktbaumdatenstruktur (oder metrischen Datenstruktur) oder lediglich einer anderen Datenstruktur. Nach einer beispielhaften Beschreibung des autonomen Antriebssystems 10 werden ein oder mehrere Verfahren zum Verwenden des Systems 10 und/oder des Systems 14 beschrieben.
-
In 1 ist das Fahrzeug 12 als ein Personenkraftwagen veranschaulicht; bei dem Fahrzeug 12 könnte es sich jedoch um einen beliebigen anderen geeigneten Fahrzeugtyp handeln, einschließlich eines Trucks, eines Geländewagens (sports utility vehicle - SUV), eines Wohnmobils, eines Busses, eines Luftfahrzeugs, eines Wasserfahrzeugs oder dergleichen, welches das autonome Antriebssystem 10 und/oder das Bildgebungssystem 14 umfasst. Das System 10 kann einen Betrieb des Fahrzeugs 12 in einem oder mehreren autonomen Modi unterstützen, wie durch die Society of Automotive Engineers (SAE) definiert (die den autonomen Fahrzeugbetrieb mit den Stufen 0-5 definiert hat). Insbesondere (und wie nachfolgend genauer beschrieben) kann das System 10 einen oder mehrere bordeigene Computer umfassen, die konfiguriert sind, um Logikanweisungen oder Anweisungssätze zu speichern und auszuführen, die in Hardware, Software, Firmware, einer Kombination davon oder dergleichen ausgeführt sind, um dadurch zu ermöglichen, dass das Fahrzeug 12 mit einem gewissen Maß an Benutzerunterstützung (Teilautonomie) oder ohne jegliche Benutzerunterstützung (Vollautonomie) betrieben wird. Zum Beispiel überwacht oder steuert ein menschlicher Fahrer bei den Stufen 0-2 den Großteil der Fahraufgaben, oftmals ohne Hilfe des Fahrzeugs 12. Beispielsweise ist bei Stufe 0 („keine Automatisierung“) ein menschlicher Fahrer für alle Fahrzeugvorgänge verantwortlich. Bei Stufe 1 („Fahrerassistenz“) unterstützt das Fahrzeug 12 gelegentlich beim Lenken, Beschleunigen oder Bremsen, aber der Fahrer ist noch immer für die große Mehrheit der Fahrzeugsteuerung verantwortlich. Bei Stufe 2 („partielle Automatisierung“) kann das Fahrzeug 12 das Lenken, Beschleunigen und Bremsen unter bestimmten Umständen ohne menschliche Interaktion steuern. Bei Stufe 3-5 übernimmt das Fahrzeug 12 mehr fahrbezogene Aufgaben. Bei Stufe 3 („bedingte Automatisierung“) kann das Fahrzeug 12 das Lenken, Beschleunigen und Bremsen bei bestimmten Bedingungen bewältigen sowie die Fahrumgebung überwachen. Bei Stufe 3 kann es jedoch erforderlich sein, dass der Fahrer gelegentlich eingreift. Bei Stufe 4 („hohe Automatisierung“) kann das Fahrzeug 12 die gleichen Aufgaben wie bei Stufe 3 bewältigen, ist jedoch nicht darauf angewiesen, dass der Fahrer in bestimmten Fahrmodi eingreift. Bei Stufe 5 („vollständige Automatisierung“) kann das Fahrzeug 12 alle Aufgaben ohne Eingreifen des Fahrers bewältigen.
-
In zumindest einem Beispiel können der eine oder die mehreren Computer des autonomen Antriebssystems 10 des Fahrzeugs 12 jeweils zumindest einen Prozessor und/oder Speicher aufweisen, wobei der (die) entsprechende(n) Prozessor(en) Anweisungen ausführt (ausführen), die in entsprechenden Speichern gespeichert sind und ein Fahren des Fahrzeugs 12 in einem oder mehr der vorangehend beschriebenen autonomen Modi unterstützen. Der Computer 20 kann diese Anweisungen zum autonomen Fahren gespeichert haben und ausführen; in anderen Beispielen kann (können) (ein) Computer (nicht gezeigt) jedoch solche Anweisungen zum autonomen Fahren gespeichert haben und ausführen (z. B. könnte der Computer 20 dem Bildgebungssystem 14 zugewiesen sein). Gemäß zumindest einem Beispiel kann das Fahrzeug 12 unter Verwendung des Systems 10 gemäß Stufe 3, 4 und/oder 5 der SAE betrieben werden; und in zumindest einem Beispiel unterstützt das autonome Antriebssystem 10 einen Betrieb des Fahrzeugs 12 bei voller Autonomie (z. B. Stufe 5).
-
Nun unter Bezugnahme auf das Bildgebungssystem 14 kann das System 14 beliebige Komponenten umfassen, die angepasst sind, um Tiefenerfassungsdaten zu empfangen und solche Daten zu analysieren, zu sortieren, zu aggregieren und/oder zu nutzen. Wie vorangehend beschrieben, umfasst das System 14 zumindest einen Computer (z. B. den Computer 20) und zumindest eine Tiefenerfassungsvorrichtung 22. Der Computer 20 kann Bildgebungssystemaufgaben zugewiesen sein; in anderen Beispielen kann der Computer 20 mit anderen Fahrzeugfunktionen geteilt werden oder konfiguriert, programmiert usw. sein, um andere Aufgaben auszuführen.
-
Wie in 2 gezeigt, kann der Computer 20 zumindest einen Prozessor 32 (einer gezeigt) und Speicher 34 umfassen. Der Prozessor 32 kann programmiert sein, um digitale Anweisungen zu verarbeiten und/oder auszuführen, um zumindest einige der hierin beschriebenen Aufgaben durchzuführen. Nicht einschränkende Beispiele für den Prozessor 32 beinhalten einen Mikroprozessor, einen Mikrocontroller oder eine Steuerung, einen anwendungsspezifischen integrierten Schaltkreis (application specific integrated circuit - ASIC) usw. - um nur einige zu nennen. Ein nicht einschränkendes Beispiel für digital gespeicherte Anweisungen - die in dem Speicher 34 gespeichert sein können und durch den Prozessor 32 ausgeführt werden können - schließt Anweisungen zu Folgendem ein: Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten; Bestimmen, dass sich keiner der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befindet; und dann Generieren eines neuen Segments, das den aktuell evaluierten Höhenpunkt umfasst. Andere Beispiele für Anweisungen, die anstelle von und/oder zusätzlich zu diesen Beispielen verwendet werden können, sowie Anweisungssequenzen werden in dem einen oder den mehreren nachfolgenden Prozessen beschrieben.
-
Der Speicher 34 kann ein beliebiges nichtdauerhaftes computernutzbares oder -lesbares Medium beinhalten, das eine(n) oder mehrere Speichervorrichtungen oder -artikel beinhalten kann. Beispielhafte nichtdauerhafter computernutzbare Speichervorrichtungen schließen Folgendes ein: herkömmlichen Festplatten-, Festspeicher, Direktzugriffsspeicher (random access memory - RAM), Festwertspeicher (read-only memory - ROM), löschbaren programmierbaren Festwertspeicher (erasable programmable read-only memory - EPROM), elektrisch löschbaren und programmierbaren Festwertspeicher (electrically erasable programmable read-only memory - EEPROM) sowie beliebige andere flüchtige oder nichtflüchtige Medien. Nichtflüchtige Medien schließen zum Beispiel optische Platten oder Magnetplatten und andere dauerhafte Speicher ein und flüchtige Medien können zum Beispiel ebenfalls dynamischen Direktzugriffsspeicher (dynamic random access memory - DRAM) einschließen. Diese Speichervorrichtungen sind nicht einschränkende Beispiele; z. B. existieren andere Formen von computerlesbaren Medien und diese beinhalten magnetische Medien, Compact Disc ROM (CD-ROMs), Digital Video Disc (DVDs), andere optische Medien, einen beliebigen geeigneten Speicherchip oder ein beliebiges geeignetes Speichermodul oder ein beliebiges anderes Medium, von welchem aus ein Computer lesen kann. Wie vorstehend erörtert, können in dem Speicher 34 ein oder mehrere Computerprogrammprodukte gespeichert sein, die als Software, Firmware oder andere Programmieranweisungen ausgeführt sein können, die durch den Prozessor 32 ausführbar ist/sind.
-
Die eine oder mehreren Tiefenerfassungsvorrichtungen 22 (es ist z. B. eine gezeigt) können eine beliebige geeignete elektronische Vorrichtung umfassen, die konfiguriert ist, um Bereichsmessungen zu empfangen (z. B. einen Bereich oder eine Entfernung zwischen der Vorrichtung 22 und einem physischen Objekt innerhalb der Sichtlinie (line-of-sight - LOS) der Vorrichtung. Ferner stellt die Vorrichtung 22 dem Computer 20 solche Messungen zur Analyse bereit - z. B. insbesondere, sodass das Fahrzeug 12 die Form, Position und Art des physischen Objekts identifizieren und danach um oder bezogen auf das physische Objekt navigieren kann. Selbstverständlich kann die Vorrichtung 22 gleichzeitig Tiefenerfassungsdaten für mehrere physische Objekte bezogen auf das Fahrzeug 12 bereitstellen (z. B. nicht nur für das einzige Objekt, das in 1 gezeigt ist).
-
In einigen Beispielen kann die Vorrichtung 22 Vorverarbeiten von Punktwolken- oder anderen Sensordaten ausführen - und dies dann an dem Computer 20 bereitstellen. In weiteren Beispielen kommt es zu keinem Vorverarbeiten und werden sogenannte Rohdaten an dem Computer 20 bereitgestellt. In der folgenden Erörterung ist die Vorrichtung 22 als eine Light-Detection-and-Ranging-(LIDAR)-Vorrichtung beschrieben, die Punktwolkendaten bereitstellt; es soll jedoch nachvollzogen werden, dass es sich hierbei lediglich um ein Beispiel handelt. Radar- und andere Tiefenerfassungsvorrichtungen könnten stattdessen verwendet werden; gleichermaßen könnten andere als die Punktwolkendaten an dem Computer 20 zur Verfügung gestellt werden.
-
Die LIDAR-Vorrichtung 22 kann an einer beliebigen geeigneten Stelle an dem Fahrzeug 12 positioniert sein; in 1 ist die LIDAR-Vorrichtung 22 z. B. auf einem Dach 38 gezeigt; hierbei handelt es sich um ein Beispiel (nicht einschränkende Beispiele für andere Stellen schließen z. B. die A-Säulen, eine hintere Fahrzeugtür, einen Fahrzeugkühlergrill usw. ein). Die LIDAR-Vorrichtung 22 kann eine Region um das Fahrzeug 12 abtasten und physische Objekte 40 innerhalb einer Sichtlinie (line-of-sight - LOS) des Fahrzeugs 12 erfassen. In 1 handelt es sich bei dem physischen Objekt 40 um ein anderes Fahrzeug; hierbei handelt es sich jedoch lediglich um ein Beispiel. Die LIDAR-Vorrichtung 22 kann ein beliebiges physisches Objekt 40 abtasten, das (z. B. aus dem Blickwinkel der Vorrichtung 22) zwei- oder dreidimensionale physische Eigenschaften aufweist. Wie durch den Fachmann nachvollzogen werden kann, empfängt die Vorrichtung 22 in dem LIDAR-Beispiel Reflexionsdaten, die (z. B. verglichen mit anderen im Handel erhältlichen Alternativen) eine relativ hohe Tiefenauflösung aufweisen; Tiefendaten, die von einer LIDAR-Vorrichtung empfangen werden, werden hierin auch als Punktwolkendaten bezeichnet. Und im Sinne dieser Schrift ist eine Sammlung dieser Punktwolkendaten ein Satz von Punktwolkendaten. Ferner wird jeder Punkt der Punktwolkendaten hierin als ein Höhenpunkt bezeichnet. Jeder Höhenpunkt kann relative Koordinatenparameter, einen Zeitstempel und/oder andere Informationen beinhalten. Koordinatenparameter können durch ein sphärisches Koordinatensystem, ein kartesisches Koordinatensystem oder dergleichen definiert sein. Komponenten und eine Konstruktion der LIDAR-Vorrichtung, Punktwolkendaten, die von einer LIDAR-Vorrichtung empfangen wurden, und LIDAR-Abtasttechniken werden nicht genauer beschrieben, da diese Aspekte und Techniken von dem Fachmann nachvollzogen werden können.
-
Wie nachfolgend genauer erörtert, kann der Computer 20 in zumindest einem Beispiel für jeden Höhenpunkt (unter Verwendung einer Standpunktrasterbaumdatenstruktur, die unter Verwendung von Anweisungen umgesetzt ist, die durch den Computer 20 ausgeführt werden können) bestimmen, ob sich der aktuellen Höhenpunkt innerhalb einer vorbestimmten Entfernung von vorangehend evaluierten Höhenpunkten befindet. Wie hierin verwendet, handelt es sich bei einem aktuell evaluierten Höhenpunkt um einen Höhenpunkt, der aktuell durch den Computer 20 für den Zweck der Segmentierung und/oder Bestimmung oder Auflösung eines virtuellen Objekts evaluiert wird. Wie hierin verwendet, handelt es sich bei einem vorangehend evaluierten Höhenpunkt um einen Höhenpunkt, der vorangehend in Bezug auf das virtuelle Objekt ähnlich aufgelöst wurde. Insbesondere kann der Computer 20 (unter Verwendung einer Rasterbaumdatenstruktur, die unter Verwendung von Anweisungen umgesetzt ist, die durch den Computer 20 ausgeführt werden können) bestimmen, ob sich der aktuell evaluierte Höhenpunkt innerhalb der vorbestimmten Entfernung von lediglich vorangehend evaluierten Höhenpunkten befindet. Wie nachfolgend erörtert, kann eine Rasterbaumdatenstruktur zum Beispiel eine Hashzuordnung von Tiefendaten beinhalten (z. B., welche Tiefendaten ein oder mehrere Tiefendatenpakete umfassen). Wie hierin verwendet, kann es sich bei jedem Tiefendatenpaket um eine Objektdatenstruktur handeln, welche die Koordinatenparameter eines vorangehend evaluierten Höhenpunktes sowie einen Segmentidentifikator umfasst, der auf ein Segment des virtuellen Objekts hinweist. Wie hierin verwendet, kann ein Segment einen einzigen vorangehend evaluierten Höhenpunkt oder eine Aggregation von vorangehend evaluierten Höhenpunkten umfassen, die als ein Abschnitt eines gemeinsamen virtuellen Objekts angeordnet ist (d. h. für zumindest einen Abschnitt des virtuellen Objekts repräsentativ ist, das abgetastet wird). Anders ausgedrückt kann eine Vielzahl von aggregierten Segmenten das virtuelle Objekt umfassen.
-
Unter erneuter Bezugnahme auf 2 veranschaulicht die Darstellung, dass der Computer 20 und die LIDAR-Vorrichtung 22 für eine drahtgebundene und/oder drahtlose elektronische Kommunikation über einen Netzwerkanschluss 42 konfiguriert sein können. Der Netzwerkanschluss 42 kann eines oder mehrere von einem Controller-Area-Network-(CAN-)Bus, Ethernet, Local Interconnect Network (LIN), einer Glasfaserverbindung oder dergleichen einschließen - um nur ein paar nicht einschränkende Beispiele zu nennen. Gemäß einem Beispiel, das alternativ zu oder in Kombination mit dem veranschaulichten Bus-Beispiel verwendet werden kann, umfasst der Anschluss 42 eine oder mehrere drahtgebundene oder drahtlose Anschlüsse.
-
3-7 sind schematische Darstellungen, die beispielhafte Datenstrukturen veranschaulichen, die in einem Speicher 34 gespeichert werden können und die durch einen Prozessor 32 verwendet werden können, um die hierin beschriebene Segmentierung durchzuführen. Diese Datenstrukturen werden lediglich als Beispiel veranschaulicht und/oder verwendet - um z. B. ein Beschreiben eines Prozesses der in 8 gezeigten Tiefendatensegmentierung zu unterstützen. Jede Darstellung und Aspekte davon werden nachfolgend erörtert.
-
3 veranschaulicht eine beispielhafte Rasterbaumdatenstruktur 50, die mehrere Ebenen 52, 54, 56 umfasst. Während drei gezeigt sind, kann selbstverständlich eine beliebige geeignete Anzahl an Ebenen verwendet werden. Jede Ebene 52-56 kann eine Vielzahl von Knoten umfassen. Beispielsweise umfasst Ebene 52 einen Stammknoten 58 und eine Vielzahl von untergeordneten Knoten 60, 62, 64, 66 in diesem Stammknoten 58 (z. B. sowie alle der Knoten jedes untergeordneten Knotens 60-66). In diesem Beispiel handelt es sich bei der Rasterbaumdatenstruktur 50 um eine Quadtree-Datenstruktur; somit umfasst jeder übergeordnete Knoten (wie z. B. der Stammknoten 58) vier untergeordnete Knoten (in diesem Fall z. B. die Knoten 60-66).
-
Bei einer Quadtree-Datenstruktur handelt es sich um eine Datenstruktur, bei der jeder interne Knoten genau vier untergeordnete Knoten aufweist. Quadtree-Datenstrukturen können als zweidimensionales Analogon einer Octree-Datenstruktur angesehen werden. Bei einer Umsetzung einer Quadtree-Datenstruktur handelt es sich lediglich um ein Beispiel; andere Beispiele für Rasterbaumdatenstrukturen können stattdessen verwendet werden.
-
Dementsprechend kann in dem veranschaulichenden Beispiel auf Ebene 54 ein untergeordneter Knoten 60 eine Vielzahl von untergeordneten Knoten 68, 70, 72, 74 umfassen (z. B. sowie alle der Knoten jedes untergeordneten Knotens 68-74). Und dementsprechend kann auf Ebene 56 ein untergeordneter Knoten 70 eine Vielzahl von untergeordneten Knoten 76, 78, 80, 82 umfassen (z. B. sowie alle der Knoten jedes untergeordneten Knotens 76-82 - hier sind z. B. keine gezeigt). Wenn die Rasterbaumdatenstruktur 50 weiter ausgeweitet werden würde, könnte jeder untergeordnete Knoten 76-82 ebenfalls eine Vielzahl von untergeordneten Knoten aufweisen.
-
In jedem Knoten können ein oder mehrere Tiefendatenpakete gespeichert sein - es ist z. B. ein Tiefendatenpaket G(m) lediglich zu Veranschaulichungszwecken gezeigt. In 3 ist das Tiefendatenpaket G(m) Teil des Knotens 58, des Knotens 60, des Knotens 70 und des Knotens 80. Somit kann der Computer 20 unter Verwendung einer solchen Rasterbaumdatenstruktur ein Tiefendatenpaket G(m) schnell darin lokalisieren, wie nachfolgend beschrieben.
-
Gemäß bekannten Rasterbaumdatenstrukturtechniken kann in jedem Knoten eine Schwellenmenge an Daten (z. B. eine Schwellenanzahl an Tiefendatenpaketen) gespeichert sein und kann der Computer 20 programmiert sein, um den Knoten in untergeordnete Knoten aufzuteilen, wenn die Datenmenge in dem entsprechenden Knoten die Menge überschreitet. Andere Aspekte der Rasterbaumdatenstrukturen, wie etwa andere Konfigurationsregeln und - protokolle, können von dem Fachmann nachvollzogen werden.
-
Wenn ein Knoten in der Rasterbaumdatenstruktur 50 keinen untergeordneten Knoten aufweist, kann dieser hierin als Endknoten bezeichnet werden. Somit kann der untergeordnete Knoten 80 in 3 beispielsweise ein Endknoten sein. Wenn ein beliebiger Knoten zumindest ein Tiefendatenpaket umfasst, wird dieser außerdem im Sinne dieser Schrift als ein belegter Knoten bezeichnet. Wenn ein beliebiger Knoten keine Tiefendatenpakete umfasst (dieser z. B. zumindest noch nicht ausgefüllt ist), wird dieser im Sinne dieser Schrift als ein leerer Knoten bezeichnet. Somit muss ein aktuell evaluierter Höhenpunkt lediglich in Bezug auf vorangehend evaluierte Höhenpunkte der belegten Knoten evaluiert werden (z. B. anstatt alle belegten und leeren Knoten zu evaluieren). Somit kann eine elektronische Verarbeitung unter Verwendung dieses Hybridansatzes aus Standpunktbaumdatenstruktur und Rasterbaumdatenstruktur effizienter sein und dadurch ein Fahrerlebnis eines Fahrgasts des Fahrzeugs erhöhen.
-
Gemäß einer objektorientierten Technik kann jedes Tiefendatenpaket
G(m) einen parsierbaren Schlüssel und einen Satz von Werten umfassen, wie nachfolgend in Beispiel (1) gezeigt. Dementsprechend kann der Computer
20 (z. B. gemäß den bekannten Hashcode-Techniken) den Befehl put() ausgeben, um die Tiefendaten eines aktuell evaluierten Höhepunktes als ein Tiefendatenpaket in der Hashzuordnung der Rasterbaumdatenstruktur
50 zu speichern - z. B. zur Verwendung in dem nachfolgend beschriebenen Prozess. Ferner kann der Computer
20 später (z. B. ebenfalls gemäß den bekannten Hashcode-Techniken) den Befehl get() ausführen, um das Tiefendatenpaket abzurufen, wie ebenfalls nachfolgend beschrieben. Hier sind die Koordinatenparameter als kartesische Koordinatenwerte gezeigt; hierbei handelt es sich jedoch lediglich um ein Beispiel.
-
In Beispiel (1) und wie nachfolgend erörtert kann es sich bei dem parsierbaren Schlüssel um einen Hashwert handeln. Wie hierin verwendet, kann es sich bei einem Hashwert um einen numerischen Wert (z. B. einen Dezimal-, Binär-, Hexadezimalwert usw.) handeln, der eine feste Länge aufweist und für Zwecke des eindeutigen Identifizierens von dessen entsprechendem Tiefendatenpaket verwendet werden kann. Gemäß zumindest einem Beispiel ist der Hashwert ein numerischer Wert kleiner des gemeinsamen entsprechenden x- und y-Koordinatenwerts und Segmentidentifikators - sodass der Computer 20 z. B. durch Verwenden des Hashwerts große Mengen an Tiefendaten schneller parsen kann und das erwünschte Tiefendatenpaket schneller identifizieren kann.
-
In der folgenden Beschreibung sollte nachvollzogen werden, dass Daten von der LIDAR-Vorrichtung 20 einen x-Koordinatenwert, einen y-Koordinatenwert und einen z-Koordinatenwert umfassen können. Zum Zwecke der Deutlichkeit (und nicht als beschränkend anzusehen) verwendet die folgende Beschreibung ein veranschaulichendes Beispiel von x- und y-Koordinatenwerten und verzichtet auf eine Erörterung von z-Koordinatenwerten. Es sind jedoch sowohl zweidimensionale als auch dreidimensionale Umsetzungen vorhanden.
-
Gemäß einem Beispiel beziehen sich die x- und y-Koordinatenwerte auf eine Tiefenposition in einem Sichtfeld der LIDAR-Vorrichtung 22. Dementsprechend kann der Computer 20 auf Grundlage einer Position und/oder Ausrichtung der LIDAR-Vorrichtung 22 an dem Fahrzeug 12 und unter Verwendung bekannter Ausrichtungstechniken eine relative Position des physischen Objekts 40 in Bezug auf das Fahrzeug 12 bestimmen.
-
4-6 veranschaulichen jeweils eine beispielhafte Standpunktbaumdatenstrukturen 84, 86, 88. Beispielsweise veranschaulicht jede Struktur 84, 86, 88 einen aktuell evaluierten Höhenpunkt P(n) eines Satzes von Punktwolkendaten, zwei beispielhafte Segmente S1, S2 und einen Radius R, der sich von dem Punkt P(n) radial nach außen erstreckt (und z.B. dementsprechend eine sphärische Region 90 definiert). Gemäß einem hierin beschriebenen Aggregationsprozess werden Höhenpunkte P(n) auf Grundlage von deren Nähe (z. B. innerhalb des Radius R) zu dem entsprechenden Segment mit einem Segmentidentifikator markiert.
-
Gemäß einem Beispiel kann der Wert des Radius R vorbestimmt sein (z. B. in dem Speicher 34 gespeichert sein). In weiteren Beispielen kann der Radius R von Fall zu Fall bestimmt werden, während sich das Fahrzeug 12 bewegt - z. B. auf Grundlage der Entfernung des physischen Objekts 40 von der Vorrichtung 22 (z. B. ist der Radius R für physische Objekte größer, die weiter weg sind, und ist der Radius R kleiner für physische Objekte, die näher sind). Außerdem sollte nachvollzogen werden, dass der Wert des Radius R auf Grundlage eines Wertes bestimmt werden kann, durch den virtuelle Objekte auf nicht unerwünschte Weise zusammengeführt werden, wenn die entsprechenden physischen Objekte getrennt und unterschiedlich sind. Zur Veranschaulichung sollen zwei verschiedene Fahrzeuge (die durch die Vorrichtung 22 abgetastet wurden), die nebeneinander herfahren betrachtet werden - wobei ein Abstand dazwischen vorliegt. Es wäre wünschenswert, den Wert von R auf geringer als diesen Abstand einzustellen, sodass der Computer 20 die zwei Fahrzeuge, die nebeneinander herfahren, nicht als ein einziges Fahrzeug ansieht.
-
Gemäß dem in 4 gezeigten Beispiel befindet sich weder Segment S1 noch S2 innerhalb des Radius R - z. B. befinden sich diese außerhalb der Grenzen der sphärischen Region 90. In diesem Beispiel würde der aktuell evaluierte Höhenpunkt P(n) nicht mit einem Segmentidentifikator markiert, da weder Segment S1 noch Segment S2 die sphärische Region 90 schneidet. Wenn sich keine Segmente innerhalb des Radius R befinden würden, würde der aktuell evaluierte Höhenpunkt P(n) mit einem neuen und einzigartigen Segmentidentifikator markiert werden (der z. B. der erste Punkt wäre, der diesem bestimmten Segment zugeordnet ist), wie nachfolgend beschrieben.
-
Gemäß dem in 5 gezeigten Beispiel befindet sich der aktuell evaluierte Höhenpunkt P(n) innerhalb des Radius R von Segment S1 und befindet sich der aktuell evaluierte Höhenpunkt P(n) nicht innerhalb des Radius R von Segment S2 - z. B. schneidet lediglich Segment S1 die sphärische Region 90. Wie nachfolgend beschrieben, wird der aktuell evaluierte Höhenpunkt P(n) in diesem Beispiel lediglich mit einem Identifikator des Segments S1 markiert.
-
Und gemäß dem in 6 gezeigten Beispiel befindet sich der aktuell evaluierte Höhenpunkt P(n) innerhalb des Radius R von sowohl Segment S1 als auch S2 - z. B. schneiden beide Segmente S1 und S2 zumindest teilweise die sphärische Region 90. Wenn sich ein Segment innerhalb des Radius R befindet (oder die sphärische Region 90 schneidet) bedeutet dies im Sinne dieser Schrift, dass sich zumindest ein Höhenpunkt des entsprechenden Segments innerhalb einer Entfernung des Radius R von dem aktuell evaluierten Höhenpunkt P(n) befindet. Wie nachfolgend beschrieben, werden die zwei Segmente S1 und S2 in diesem Beispiel (durch den Computer 20) zu einem einzigen Segment (S1,2) zusammengefügt und wird der aktuell evaluierte Höhenpunkt P(n) mit einem Identifikator des neu zusammengefügten Segments S1,2 markiert. Ferner werden alle der vorangehend evaluierten Höhenpunkte, die Segment S1 und Segment S2 zugeordnet sind, (durch den Computer 20) mit dem Segmentidentifikator von Segment S1,2 erneut markiert. Wie hierin verwendet, bezieht sich der Begriff Markierung oder Markieren auf ein Verwenden des Computers 20, um ein Datenelement über den Prozessor 32 und/oder Speicher 34 einem anderen zuzuordnen (um z. B. ein Segment oder einen Segmentidentifikator mit einem Höhenpunkt zu speichern, sodass der Computer 20 bei einem späteren Abrufen den Höhenpunkt als mit dem entsprechenden Segment aggregiert ausliest).
-
Ein schematisches Beispiel des neu zusammengeführten Segments S1,2 ist in 7 gezeigt. Wie nachfolgend erörtert, kombiniert der Computer 20 diese Segmente (S1 und S2), um gemäß dem Segmentierungsprozess einen größeren Abschnitt des virtuellen Objekts zu bilden, das von der LIDAR-Vorrichtung 22 abgetastet wurde. Und der Computer 20 fährt mit dem vorangehend beschriebenen Prozess fort, bis eine Repräsentation des virtuellen Objekts durch Hinzufügen von Punkten zu bestehenden Segmenten, Generieren von neuen Segmenten und Zusammenfügen von zwei oder mehr Segmenten gebildet wurde.
-
Nun unter Bezugnahme auf 8 ist ein beispielhafter Segmentierungsprozess 800 gezeigt - z. B. zum Generieren eines virtuellen Objekts auf Grundlage eines abgetasteten physischen Objekts 40. Wie vorangehend erörtert, nutzt der Prozess 800 eine Hybridtechnik - z. B. unter Verwendung einer Standortbaumdatenstruktur (z. B. 84, 86, 88) und einer Rasterbaumdatenstruktur (z. B. 50), um eine Berechnungsgeschwindigkeit des Bestimmens des virtuellen Objekts zu erhöhen - wodurch z. B. physische Objekte schneller aufgelöst werden (als ohne den Prozess), physische Objekte mit einer höheren Tiefenauflösung aufgelöst werden (als ohne den Prozess), mehr physische Objekte während eines gemeinsamen Zeitraums aufgelöst werden (als ohne den Prozess) oder eine Kombination davon. Im Allgemeinen kann der Prozess 800 eine Vielzahl von Anweisungen umfassen, die in 8 gezeigt und nachfolgend als Logikblöcke beschrieben sind. Ferner läuft der Prozess 800 iterativ ab - z.B. werden Block 810-890 oder eine beliebige Kombination davon üblicherweise wiederholt, um die Segmentierung auszuführen.
-
Der Prozess 800 kann bei Block 810 beginnen, bei dem der Computer 20 einen aktuell evaluierten Höhenpunkt P(n) von dem LIDAR-Sensor 22 empfängt. Wie vorangehend beschrieben, kann der aktuell evaluierte Höhenpunkt P(n) zumindest einen x-Koordinaten- und y-Koordinatenwert umfassen (die z. B. nachfolgend jeweils als x(n) und y(n) bezeichnet werden).
-
Bei dem folgenden Block 820 kann der Computer 20 den aktuell evaluierten Höhenpunkt P(n) unter Verwendung der vorangehend erörterten Hybridtechniken aus Standpunktbaum- und Rasterbaumdatenstruktur evaluieren. Insbesondere kann der Computer 20 eine Hashzuordnung der Rasterbaumdatenstruktur 50 parsen, um lediglich die belegten Knoten zu identifizieren, und kann die darin gespeicherten Tiefendatenpakete identifizieren (z. B. unter Verwendung des Befehls get()). Somit kann der Computer 20 die Zeit verringern, die für das Durchsuchen der Rasterdatenstruktur 50 aufgewendet wird, indem er die leeren Knoten nicht parst (d. h. nicht alle Knoten parst).
-
Koordinatenwerte für jeden vorangehend evaluierten Höhenpunkt können unter Verwendung von entsprechenden parsierbaren Knoten durch den Computer 20 abgerufen werden, um Tiefendatenpakete in der Rasterbaumdatenstruktur 50 zu lokalisieren. Indem die parsierbaren Schlüssel verwendet werden, die jedem Tiefendatenpaket G(m) zugeordnet sind, kann somit Zeit, die für die Suche aufgewendet wird, weiter minimiert werden (z. B. da der Computer 20 nicht jedes Datenelement in der Rasterbaumdatenstruktur 50 durchsuchen muss).
-
Unter Fortsetzung mit Block
820 kann der Computer
20 für jedes abgerufene Tiefendatenpaket
G(m) den aktuell evaluierten Höhenpunkt P(n) evaluieren, um zu untersuchen, ob sich einer der vorangehend evaluierten Höhenpunkte innerhalb des Radius R (von Punkt P(n)) befindet. Insbesondere kann der Computer
20 diese Evaluierung unter Verwendung der nachfolgenden Gleichung (1) durchführen.
wobei x
(m) der x-Koordinatenwert ist, der aus dem entsprechenden Tiefendatenpaket G
(m) abgerufen wurde, und y
(m) der entsprechende y-Koordinatenwert ist, der von dem entsprechenden Tiefendatenpaket G
(m) abgerufen wurde.
-
Zu Veranschaulichungszwecken kann ein erstes Tiefendatenpaket G(1) Folgendes umfassen: einen parsierbaren Schlüssel(1), den x-Koordinatenwert x(1) den y-Koordinatenwert y(1) und einen Segmentidentifikator S(1). Somit kann der Computer 20 den Radius R mit der Entfernung D(1) vergleichen. Wenn Entfernung D(1) ≤ R, dann kann P(n) als Teil von Segment S1 angesehen werden und kann der Computer 20 den Punkt P(n) mit dem Segmentidentifikator S(1) markieren. Wenn der Computer 20 in diesen Fällen ein weiteres Tiefendatenpaket identifiziert, das [während dieser Iteration] den Segmentidentifikator S(1) umfasst, kann der Computer 20 die Evaluierung nach Gleichung (1) in Bezug auf dieses Tiefendatenpaket überspringen - da vorangehend bestimmt wurde, dass P(n) Teil von Segment S1 ist. Dies kann ebenfalls die Verarbeitungseffizienz erhöhen.
-
Wenn andererseits Entfernung D(1) > R, dann wird bestimmt, dass sich P(n) nicht innerhalb von Segment S1 befindet, und kann der Computer 20 zu einem nächsten Tiefendatenpaket springen, das aus der Rasterdatenstruktur 50 abgerufen wurde.
-
Unter Fortsetzung des vorangehenden Beispiels kann dieser Parsingprozess für ein zweites Tiefendatenpaket G(2) wiederholt werden. Das Paket G(2) kann Folgendes umfassen: einen parsierbaren Schlüssel(2), den x-Koordinatenwert x(2) den y-Koordinatenwert y(2) und einen Segmentidentifikator S(2) . Somit kann der Computer 20 die Entfernung D(2) berechnen und den Radius R mit der Entfernung D(2) vergleichen. Die Evaluierung des zweiten Tiefendatenpakets G(2) kann ähnlich zu der vorangehend in Bezug auf Paket G(1) beschriebenen sein; daher wird diese nicht in deren Gesamtheit beschrieben. Zu Veranschaulichungszwecken des Prozesses 800 soll ein Beispiel in Erwägung gezogen werden, bei dem die Entfernung D(2) größer R ist. Ähnlich wie vorangehend beschrieben, kann der Computer 20 bestimmen, dass P(n) ebenfalls als Teil von Segment S2 angesehen wird, und kann der Computer 20 P(n) mit dem Segmentidentifikator S(2) markieren.
-
Dieser Parsingprozess kann fortgesetzt werden, bis jedes Tiefendatenpaket G(m) in der Rasterbaumdatenstruktur 50 in Bezug auf Punkt P(n) evaluiert oder berücksichtigt wurde. Dementsprechend wird der aktuell evaluierte Höhenpunkt P(n) unter Umständen in manchen Fällen nicht mit einem Segmentidentifikator markiert (was z. B. bedeutet, dass keines der Tiefendatenpakete vorangehend evaluierte Höhenpunkte umfasst hat, die sich innerhalb eines Radius R von P(n) befunden haben); oder kann Punkt P(n) mit einem Segmentidentifikator markiert werden (was z. B. bedeutet, dass lediglich eines der Tiefendatenpakete einen vorangehend evaluierten Höhenpunkt umfasst hat, der sich innerhalb eines Radius R von P(n) befunden hat); oder kann Punkt P(n) mit mehreren Segmentidentifikatoren markiert werden (was z. B. bedeutet, dass mehrere Tiefendatenpakete entsprechende vorangehend evaluierte Höhenpunkte umfasst haben, die sich innerhalb eines Radius R von Punkt P(n) befunden haben). Sobald alle Tiefendatenpakete G(m) der Datenstruktur 50 evaluiert worden sind, kann der Prozess 800 mit Block 830-890 fortfahren.
-
Block 830-890 veranschaulichen einen Prozessablauf auf Grundlage der Anzahl an Segmentidentifikatoren, mit welcher der aktuell evaluierte Höhenpunkt P(n) bei Block 820 markiert wurde. Beispielsweise wird bei Block 830 bestimmt, ob Markierungen mit Segmentidentifikatoren vorgenommen wurden. Wenn kein Segmentidentifikator für den Punkt P(n) bestimmt wurde, geht der Prozess 800 zu Block 840 über (siehe z. B. die in 4 gezeigte Repräsentation). Wenn zumindest ein Segmentidentifikator den für Punkt P(n) bestimmt wurde, geht der Prozess 800 zu Block 850 über (siehe z. B. die in 5 und 6 gezeigten Repräsentationen).
-
Bei Block 840 generiert der Computer 20 ein neues Tiefendatenpaket für den aktuell evaluierten Höhenpunkt P(n). Dies kann beinhalten, dass der Computer 20 einen neuen (einzigartigen) Segmentidentifikator für den aktuell evaluierten Höhenpunkt P(n) generiert und den Punkt P(n) mit dem neu generieren Segment markiert. Ferner kann der Computer 20 einen neuen parsierbaren Schlüssel (einen neuen Hash) für das neue Tiefendatenpaket generieren. Somit kann das neue Tiefendatenpaket einen neuen parsierbaren Schlüssel, den x-Koordinatenwert von dem Punkt P(n), den y-Koordinatenwert von dem Punkt P(n) und den neuen Segmentidentifikator umfassen. Danach geht der Prozess 800 zu Block 860 über.
-
Bei Block 860 kann der Computer 20 den neuen parsierbaren Schlüssel und den Befehl put() verwenden, um das neue Tiefendatenpaket innerhalb der Rasterbaumdatenstruktur 50 zu lokalisieren. Auf diese Weise kann dieses neue Tiefendatenpaket in Zukunft durch den Computer 20 abgerufen und verwendet werden, um zukünftige aktuell evaluierte Höhenpunkte zu evaluieren.
-
Nach Block 860 kann der Prozess zu Block 865 übergehen. Bei Block 865 kann der Computer 20 bestimmen, ob zusätzliche Höhenpunkte P(n) zur Evaluierung verfügbar sind. Wenn zusätzliche Punkte P(n) verfügbar sind, kann der Prozess 800 zu Block 810 zurückspringen und zumindest einen Teil des Prozesses 800 wiederholen. Wenn keine zusätzlichen Punkte P(n) verfügbar sind, kann der Prozess 800 enden.
-
Unter erneuter Bezugnahme auf Block 850 (der in manchen Fällen auf Block 830 folgt), hat der Computer 20 hier bestimmt, dass der aktuell evaluierte Höhenpunkt P(n) mit zumindest einem Segmentidentifikator markiert wurde. Bei Block 850 bestimmt der Computer 20, ob der Punkt P(n) mit lediglich einem Segmentidentifikator markiert wurde, oder ob der Punkt P(n) mit mehreren Segmentidentifikatoren markiert wurde. Wenn der Punkt P(n) lediglich mit einem Segmentidentifikator markiert wurde, geht der Prozess 800 zu Block 870 über. Und wenn der Punkt P(n) mit mehr als einem Segmentidentifikator markiert wurde, geht der Prozess 800 zu Block 880 über.
-
Bei Block 870 generiert der Computer 20 auf eine der vorangehend (bei Block 840) beschriebenen ähnlich Weise ein neues Tiefendatenpaket; hier speichert der Computer 20 jedoch den einzigen Segmentidentifikator, mit dem der Punkt P(n) markiert ist, anstatt einen neuen Segmentidentifikator zu generieren. Ferner generiert der Computer 20 einen neuen parsierbaren Schlüssel, wie vorangehend beschrieben. Nach Block 870 kann der Prozess 800 zu Block 860 (wobei er die Anweisung davon wiederholt) und schließlich zu Block 810 übergehen (oder enden).
-
Unter erneuter Bezugnahme auf Block 880 (der in manchen Fällen auf Block 850 folgt), hat der Computer 20 hier bestimmt, dass der aktuell evaluierte Höhenpunkt P(n) mit mehr als einem Segmentidentifikator markiert wurde. Bei Block 880 bestimmt der Computer 20 auf Grundlage davon, dass sich der Punkt P(n) innerhalb eines Radius R von zwei oder mehr Segmenten (z. B. Segment S1 und S2) befindet, dass diese (z. B. zwei) Segmente daher Teil desselben virtuellen Objekts sein müssen. Dementsprechend führt der Computer 20 bei Block 880 zwei Segmente zu einem einzigen Segment zusammen (z. B. zu dem Segment S1,2, wie in 7 veranschaulicht). Auf diese Weise kann eine Rekonstruktion des virtuellen Objekts schneller erfolgt - z. B. ermöglicht diese Zusammenführung somit die vorangehend erörterten Effizienzen in Bezug auf zukünftig evaluierte Höhenpunkte P(n), die sich innerhalb eines Radius R von einem der Höhenpunkte befinden, die mit dem Segmentidentifikator S(1,2) markiert wurden. Block 880 kann außerdem Aktualisieren von jedem der Tiefendatenpakete umfassen, die mit dem Segmentidentifikator S(1) und dem Segmentidentifikator S(2) markiert wurden, mit dem neu zusammengeführten Segmentidentifikator S(1,2) .
-
Somit nutzt der Prozess 800 sowohl die Rasterdatenstrukturtechniken als auch die Standpunktdatenstrukturtechniken. Dies ermöglicht eine nahtlosere Methode, Segmente zusammenzuführen. Ferner führt diese Hybridtechnik zu weniger Artefakten als es bei herkömmlichen Verfahren der Fall ist.
-
Der Prozess 800 war lediglich ein Beispiel und es existieren weitere Beispiele. Gemäß einem alternativen Beispiel wird das Bildgebungssystem 14 an anderen Strukturen als dem Fahrzeug 12 genutzt. Beispielsweise kann das Bildgebungssystem 14 ohne das autonome Antriebssystem 10 verwendet werden. Tatsächlich kann die Struktur, an welche die Tiefenerfassungsvorrichtung gekoppelt ist, beweglich oder stationär (wie z. B. ein Gebäude oder eine andere Infrastruktur) sein.
-
Somit wurde ein Bildgebungssystem beschrieben, das einen Computer und eine Tiefenerfassungsvorrichtung umfasst. Gemäß einem Beispiel stellt die Vorrichtung dem Computer Punktwolkendaten bereit und ist der Computer programmiert, um einen Segmentierungsprozess auszuführen. Der Prozess nutzt sowohl eine Rasterbaumdatenstruktur als auch eine Standpunktbaumdatenstruktur.
-
Im Allgemeinen können die beschriebenen Rechensysteme und/oder -vorrichtungen ein beliebiges aus einer Reihe von Computerbetriebssystemen einsetzen, einschließlich unter anderem Versionen und/oder Varianten der SYNC®-Anwendung von Ford, AppLink/Smart Device Link Middleware, der Betriebssysteme Microsoft® Automotive, Microsoft Windows®, Unix (z. B. das Betriebssystem Solaris®, vertrieben durch die Oracle Corporation in Redwood Shores, Kalifornien), AIX UNIX, vertrieben durch International Business Machines in Armonk, New York, Linux, Mac OSX und iOS, vertrieben durch die Apple Inc. in Cupertino, Kalifornien, BlackBerry OS, vertrieben durch Blackberry Ltd. in Waterloo, Kanada, und Android, entwickelt von Google Inc. und der Open Handset Alliance, oder der Plattform QNX® CAR for Infotainment, angeboten von QNX Software Systems. Zu Beispielen für Rechenvorrichtungen gehören unter anderem ein bordeigener Fahrzeugcomputer, ein Computerarbeitsplatz, ein Server, ein Desktop-, Notebook-, Laptop- oder Handheld-Computer oder ein anderes Rechensystem und/oder eine andere Rechenvorrichtung.
-
Rechenvorrichtungen beinhalten im Allgemeinen computerausführbare Anweisungen, wobei die Anweisungen durch eine oder mehrere Rechenvorrichtungen, wie etwa die vorstehend aufgeführten, ausführbar sein können. Computerausführbare Anweisungen können von Computerprogrammen zusammengestellt oder ausgewertet werden, die unter Verwendung einer Vielzahl von Programmiersprachen und/oder -technologien erstellt worden sind, einschließlich unter anderem und entweder für sich oder in Kombination Java™, C, C++, Visual Basic, Java Script, Perl usw. Einige dieser Anwendungen können auf einer virtuellen Maschine zusammengestellt und ausgeführt werden, wie etwa der Java Virtual Machine, der Dalvik Virtual Machine oder dergleichen. Im Allgemeinen empfängt ein Prozessor (z. B. ein Mikroprozessor) Anweisungen z. B. von einem Speicher, einem computerlesbaren Medium usw. und führt diese Anweisungen aus, wodurch er einen oder mehrere Prozesse, einschließlich eines oder mehrerer der hierin beschriebenen Prozesse, durchführt. Derartige Anweisungen und andere Daten können unter Verwendung einer Vielzahl von computerlesbaren Medien gespeichert und übertragen werden.
-
Ein computerlesbares Medium (auch als prozessorlesbares Medium bezeichnet) beinhaltet ein beliebiges nichttransitorisches (z. B. physisches) Medium, das an der Bereitstellung von Daten (z. B. Anweisungen) beteiligt ist, die durch einen Computer (z. B. durch einen Prozessor eines Computers) ausgelesen werden können. Ein derartiges Medium kann viele Formen annehmen, einschließlich unter anderem nichtflüchtiger Medien und flüchtiger Medien. Zu nichtflüchtigen Medien können zum Beispiel optische Platten oder Magnetplatten und andere persistente Speicher gehören. Zu flüchtigen Medien kann zum Beispiel ein dynamischer Direktzugriffsspeicher (dynamic random access memory - DRAM) gehören, der üblicherweise einen Hauptspeicher darstellt. Derartige Anweisungen können durch ein oder mehrere Übertragungsmedien übertragen werden, einschließlich Koaxialkabeln, Kupferdraht und Glasfasern, einschließlich der Drähte, die einen mit einem Prozessor eines Computers gekoppelten Systembus umfassen. Gängige Formen computerlesbarer Medien schließen beispielsweise Folgendes ein: eine Diskette, eine Folienspeicherplatte, eine Festplatte, ein Magnetband, ein beliebiges anderes magnetisches Medium, eine CD-ROM, eine DVD, ein beliebiges anderes optisches Medium, Lochkarten, Lochstreifen, ein beliebiges anderes physisches Medium mit Lochmustern, einen RAM, einen PROM, einen EPROM, einen FLASH-EEPROM, einen beliebigen anderen Speicherchip oder eine beliebige andere Speicherkassette oder ein beliebiges anderes Medium, das von einem Computer gelesen werden kann.
-
Zu hier beschriebenen Datenbanken, Datenbeständen oder sonstigen Datenspeichern können verschiedene Arten von Mechanismen zum Speichern von, Zugreifen auf und Abrufen von verschiedenen Arten von Daten gehören, einschließlich einer hierarchischen Datenbank, einer Gruppe von Dateien in einem Dateisystem, einer Anwendungsdatenbank in einem proprietären Format, eines relationalen Datenbankverwaltungssystems (relational database management system - RDBMS) usw. Jeder derartige Datenspeicher ist im Allgemeinen innerhalb einer Rechenvorrichtung eingeschlossen, die ein Computerbetriebssystem, wie etwa eines der vorstehend erwähnten, einsetzt, und es wird auf eine oder mehrere beliebige einer Vielzahl von Weisen über ein Netzwerk darauf zugegriffen. Auf ein Dateisystem kann von einem Computerbetriebssystem zugegriffen werden und es kann in verschiedenen Formaten gespeicherte Dateien beinhalten. Ein RDBMS setzt im Allgemeinen die strukturierte Abfragesprache (Structured Query Language - SQL) zusätzlich zu einer Sprache zum Erstellen, Speichern, Bearbeiten und Ausführen gespeicherter Abläufe ein, wie etwa die vorstehend erwähnte PL/SQL-Sprache.
-
In einigen Beispielen können Systemelemente als computerlesbare Anweisungen (z. B. Software) auf einer oder mehreren Rechenvorrichtungen (z. B. Servern, Personal Computern usw.) umgesetzt sein, die auf damit assoziierten computerlesbaren Medien (z. B. Platten, Speichern usw.) gespeichert sind. Ein Computerprogrammprodukt kann derartige Anweisungen, die auf computerlesbaren Medien gespeichert sind, zum Ausführen der hierin beschriebenen Funktionen umfassen.
-
Der Prozessor ist über Schaltkreise, Chips oder andere elektronische Komponenten umgesetzt und kann einen oder mehrere Mikrocontroller, einen oder mehrere feldprogrammierbare Gate-Arrays (field programmable gate arrays - FPGAs), einen oder mehrere anwendungsspezifische Schaltkreise (application specific circuits - ASICs), einen oder mehrere digitale Signalprozessoren (digital signal processors - DSPs), einen oder mehrere kundenintegrierte Schaltkreise usw. beinhalten. Der Prozessor kann zum Verarbeiten der Sensordaten programmiert sein. Das Verarbeiten der Daten kann Verarbeiten der Videoeingabe oder eines anderen Datenstroms beinhalten, der durch die Sensoren erfasst wird, um die Fahrbahnspur des Host-Fahrzeugs und das Vorhandensein von beliebigen Zielfahrzeugen zu bestimmen. Wie nachstehend beschrieben, weist der Prozessor die Fahrzeugkomponenten an, gemäß den Sensordaten betätigt zu werden. Der Prozessor kann in eine Steuerung, z. B. eine Steuerung für einen autonomen Modus, integriert sein.
-
Der Speicher (oder die Datenspeichervorrichtung) ist über Schaltkreise, Chips oder andere elektronische Komponenten umgesetzt und kann eines oder mehrere von Festwertspeicher (read only memory - ROM), Direktzugriffsspeicher (random access memory - RAM), Flash-Speicher, elektrisch programmierbarem Speicher (electrically programmable memory - EPROM), elektrisch programmierbarem und löschbarem Speicher (electrically programmable and erasable memory - EEPROM), eingebetteten Multimediakarten (embedded MultiMediaCard - eMMC), einer Festplatte oder beliebigen flüchtigen oder nichtflüchtigen Medien usw. beinhalten. Auf dem Speicher können von Sensoren gesammelte Daten gespeichert sein.
-
Die Offenbarung wurde auf veranschaulichende Weise beschrieben und es versteht sich, dass die verwendete Terminologie vielmehr der Beschreibung als der Einschränkung dienen soll. In Anbetracht der vorstehenden Lehren sind viele Modifikationen und Variationen der vorliegenden Offenbarung möglich und die Offenbarung kann anders als konkret beschrieben umgesetzt werden.
-
Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten, Bestimmen, dass sich keiner der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befindet, und dann Generieren eines neuen Segments, das den aktuell evaluierten Höhenpunkt umfasst.
-
Gemäß einer Ausführungsform werden die Vielzahl und der aktuell evaluierte Höhenpunkt von einer Light-Detection-and-Ranging-Vorrichtung empfangen.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Hinzufügen des neuen Segments zu der Rasterbaumdatenstruktur gekennzeichnet.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Generieren eines Tiefendatenpakets gekennzeichnet, das einen parsierbaren Schlüssel, einen x-Koordinatenwert und einen y-Koordinatenwert des aktuell evaluierten Höhenpunktes und einen Segmentidentifikator des neuen Segments umfasst.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Lokalisieren des Tiefendatenpakets in der Datenstruktur unter Verwendung des parsierbaren Schlüssels gekennzeichnet, wobei die Datenstruktur eine Hashzuordnung umfasst.
-
Gemäß einer Ausführungsform umfasst jeder der Vielzahl einen Hashwert, einen x-Koordinatenwert, einen y-Koordinatenwert und einen Segmentidentifikator.
-
Gemäß einer Ausführungsform ist die Datenstruktur eine Quadtree-Datenstruktur.
-
Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten, Bestimmen, dass sich einer der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befindet, wobei der eine einen ersten Segmentidentifikator umfasst, und dann Markieren des aktuell evaluierten Höhenpunkts mit dem ersten Segmentidentifikator.
-
Gemäß einer Ausführungsform werden die Vielzahl und der aktuell evaluierte Höhenpunkt von einer Light-Detection-and-Ranging-Vorrichtung empfangen.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Generieren eines Tiefendatenpakets gekennzeichnet, das einen parsierbaren Schlüssel, einen x-Koordinatenwert und einen y-Koordinatenwert des aktuell evaluierten Höhenpunktes und den ersten Segmentidentifikator umfasst.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Lokalisieren des Tiefendatenpakets in der Datenstruktur unter Verwendung des parsierbaren Schlüssels gekennzeichnet, wobei die Datenstruktur eine Hashzuordnung umfasst.
-
Gemäß einer Ausführungsform umfasst jeder der Vielzahl einen Hashwert, einen x-Koordinatenwert und einen y-Koordinatenwert, wobei zumindest einer der Vielzahl den ersten Segmentidentifikator beinhaltet.
-
Gemäß einer Ausführungsform umfasst das Parsen Verarbeiten von lediglich belegten Knoten.
-
Gemäß einer Ausführungsform ist die Datenstruktur eine Quadtree-Datenstruktur.
-
Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren Parsen einer Rasterbaumdatenstruktur für eine Vielzahl von vorangehend evaluierten Höhenpunkten, Bestimmen, dass sich ein erster Punkt und ein zweiter Punkt der Vielzahl innerhalb eines Radius eines aktuell evaluierten Höhenpunktes befinden, wobei der erste Punkt einen ersten Segmentidentifikator umfasst, wobei der zweite Punkt einen zweiten Segmentidentifikator umfasst, Zusammenführen von Segmenten, die dem ersten und zweiten Punkt zugeordnet sind, und Hinzufügen des aktuell evaluierten Höhenpunktes und eines neuen Identifikators des zusammengeführten Segments zu der Datenstruktur.
-
Gemäß einer Ausführungsform werden die Vielzahl und der aktuell evaluierte Höhenpunkt von einer Light-Detection-and-Ranging-Vorrichtung empfangen.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Generieren eines Tiefendatenpakets gekennzeichnet, das einen parsierbaren Schlüssel, einen x-Koordinatenwert und einen y-Koordinatenwert des aktuell evaluierten Höhenpunktes und den neuen Identifikator umfasst.
-
Gemäß einer Ausführungsform ist die Erfindung ferner durch Lokalisieren des Tiefendatenpakets in der Datenstruktur unter Verwendung des parsierbaren Schlüssels gekennzeichnet, wobei die Datenstruktur eine Hashzuordnung umfasst.
-
Gemäß einer Ausführungsform umfasst jeder der Vielzahl einen Hashwert, einen x-Koordinatenwert und einen y-Koordinatenwert, wobei andere der Vielzahl einen dritten Segmentidentifikator beinhalten, der sich von dem ersten und zweiten Identifikator unterscheidet.
-
Gemäß einer Ausführungsform umfasst das Parsen Verarbeiten von lediglich belegten Knoten.