-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft allgemein die virtuelle Datenerzeugung und Annotation und insbesondere Verfahren und Systeme zum Erzeugen virtueller Sensordaten, die für eine Verwendung beim Entwickeln, Trainieren, Testen und Beweisen fahrzeugbasierter Computersehalgorithmen für das Schätzen von Tiefen von Objekten aus Bildern geeignet sind.
-
HINTERGRUND
-
Bei der Entwicklung von Computersehalgorithmen durch überwachtes Maschinenlernen für das Erkennen von Objekten in einer Fahrtumgebung sind verschiedene Sensordatensätze erforderlich, um die Detektionsalgorithmen und zusätzliche nachgeschaltete Funktionen in Zusammenhang mit den Algorithmen zu trainieren, zu entwickeln, zu testen und zu beweisen. Gewöhnlich sind jedoch erhebliche Mengen an Geld, Zeit und Ressourcen erforderlich, um reale Sensordaten zu erfassen. Beispielsweise können für das Erhalten realer Sensordaten Sensoren physikalisch entlang einem Fahrtweg angeordnet werden müssen oder an einem Fahrzeug angebracht werden müssen, und es können tatsächliche Ausfahrten auf verschiedenen Straßentypen, für verschiedene Verkehrsbedingungen und unter verschiedenen Wetter- und Beleuchtungsbedingungen ausgeführt werden müssen, damit die Sensoren zahlreiche Sensordatensätze für eine Vielzahl von Szenarios sammeln können. Beispielsweise können für die Robustheit der Algorithmen unter verschiedenen Bedingungen Umgebungsvariablen oder -parameter in der Art von Wetter, Temperatur, Wind, Beleuchtungsbedingungen und andere Faktoren in die realen Sensordatensätze aufgenommen werden müssen. Folglich kann die Anzahl der zu sammelnden Sensordatensätze enorm sein. Im Allgemeinen sind von hunderten oder sogar tausenden Straßenmeilen gesammelte Sensordaten, die tausende verschiedene Bilder aufweisen können, erforderlich, um einen genauen und zuverlässigen Computerseherkennungsalgorithmus zu entwickeln, was zu erheblichen Mengen an Zeit, Geld und Ressourcen führt, die für das Erfassen dieser Daten erforderlich sind.
-
KURZBESCHREIBUNG DER ZEICHNUNG
-
Nicht einschränkende und nicht erschöpfende Ausführungsformen der vorliegenden Offenbarung werden mit Bezug auf die folgenden Figuren beschrieben, wobei sich gleiche Bezugszahlen überall in den verschiedenen Figuren auf gleiche Teile beziehen, sofern nichts anderes spezifiziert wird. Es zeigen:
-
1 ein Diagramm eines als Beispiel dienenden Szenarios, worin Ausführungsformen gemäß der vorliegenden Offenbarung verwendet werden können,
-
2 ein Diagramm von als Beispiel dienenden Daten, welche eine virtuelle Umgebung kennzeichnen, und einer als Beispiel dienenden Tiefenkarte, wodurch Daten gemäß einer Ausführungsform der vorliegenden Offenbarung annotiert sind,
-
3 ein Diagramm von als Beispiel dienenden Bildern, die einen Teil einer virtuellen Umgebung mit verschiedenen Umgebungsparametereinstellungen kennzeichnen, und einer als Beispiel dienenden Tiefenkarte, die jedes der Bilder gemäß einer Ausführungsform der vorliegenden Offenbarung annotiert,
-
4 ein Flussdiagramm eines als Beispiel dienenden Prozesses gemäß einer Ausführungsform der vorliegenden Offenbarung und
-
5 ein Diagramm eines als Beispiel dienenden Systems gemäß einer Ausführungsform der vorliegenden Offenbarung.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden Beschreibung wird auf die anliegende Zeichnung Bezug genommen, die einen Teil davon bildet und worin zur Veranschaulichung spezifische als Beispiel dienende Ausführungsformen dargestellt sind, in denen die Offenbarung verwirklicht werden kann. Diese Ausführungsformen werden in ausreichenden Einzelheiten beschrieben, um es Fachleuten zu ermöglichen, die hier offenbarten Konzepte anzuwenden, und es ist zu verstehen, dass Modifikationen an den verschiedenen offenbarten Ausführungsformen vorgenommen werden können und dass andere Ausführungsformen verwendet werden können, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Die folgende detaillierte Beschreibung ist daher nicht einschränkend auszulegen.
-
Die vorliegende Offenbarung strebt an, die Schwierigkeiten des Erfassens für die Entwicklung eines Computersehalgorithmus benötigter Sensordaten zu überwinden und die Kosten dafür zu verringern. Implementationen gemäß der vorliegenden Offenbarung erzeugen Sensordaten mit einer durch verschiedene dreidimensionale (3D-)Modellierungstechniken und/oder Animationstechniken erzeugten virtuellen Umgebung. Verschiedene Szenarien, Bedingungen und Parameter, die vorstehend erwähnt wurden, können in der virtuellen Umgebung leicht eingerichtet werden, und jeder von dem einen oder den mehreren virtuellen Sensoren kann an einem jeweiligen Ort in der virtuellen Umgebung angeordnet werden, um bei einer Simulation einen jeweiligen Satz von Sensordaten zu erzeugen. Jeder virtuelle Sensor kann in einer jeweiligen Orientierung in Bezug auf die virtuelle Umgebung aufgestellt werden und den jeweiligen Satz von Sensordaten vom jeweiligen Ort in der jeweiligen Orientierung erzeugen. Jeder virtuelle Sensor kann anschließend in eine andere Orientierung versetzt werden und einen anderen Satz von Sensordaten aus dieser Orientierung erzeugen. Ferner kann jeder virtuelle Sensor die virtuelle Umgebung in einer Simulation durchlaufen oder sich in dieser herum bewegen und weitere Sensordaten, die für die Entwicklung des Computersehalgorithmus benötigt werden, virtuell sammeln (d.h. durch Simulation erzeugen). Die virtuelle Umgebung und der eine oder die mehreren virtuellen Sensoren werden modelliert, um der entsprechenden realen Umgebung und dem einen oder den mehreren realen Sensoren eng zu entsprechen, so dass die durch Simulation erzeugten virtuellen Sensordaten im Wesentlichen die gleichen Informationen repräsentieren, die durch einen oder mehrere reale Sensoren in der realen Umgebung gesammelt werden würden.
-
Die virtuelle Umgebung kann verschiedene virtuelle Objekte aufweisen, die an verschiedenen Orten innerhalb der virtuellen Umgebung verteilt sind. Jedes virtuelle Objekt kann entweder ortsfest oder beweglich in Bezug auf einen ortsfesten Bezugspunkt der virtuellen Umgebung sein. Ein ortsfestes virtuelles Objekt kann beispielsweise ein Gebäude sein, das neben der Straße steht, oder ein Hügel, der weit entfernt ist. Ein bewegliches virtuelles Objekt kann beispielsweise ein auf der Straße fahrendes Fahrzeug, ein auf dem Fußgängerstreifen der Straße gehender Fußgänger, ein über die Straße laufendes Tier oder ein vorbeifliegendes Flugzeug sein.
-
Ferner kann jedes virtuelle Objekt eine bestimmte Größe und Form aufweisen und einen bestimmten Raum um den jeweiligen Ort des virtuellen Objekts in der virtuellen Umgebung einnehmen. Für jedes virtuelle Objekt kann eine Anzahl von Koordinaten in der virtuellen Umgebung erforderlich sein, um einen jeweiligen Raum zu definieren, der vom virtuellen Objekt eingenommen wird. Für ein bewegliches virtuelles Objekt kann sich die Anzahl von Koordinaten in Zusammenhang mit dem beweglichen virtuellen Objekt in der virtuellen Umgebung von einem Moment zum nächsten ändern.
-
1 zeigt eine als Beispiel dienende virtuelle Umgebung 100, worin als Beispiel dienende Ausführungsformen der vorliegenden Offenbarung implementiert werden können. Die virtuelle Umgebung 100 kann eine Straße 110 aufweisen, die entweder einen Einweg- oder Zweiweg-Kraftfahrzeugverkehr erlaubt, wie durch sich bewegende Fahrzeuge 181, 182 und 190 dargestellt ist. Die virtuelle Umgebung 100 kann auch straßenseitige Strukturen in der Art einer Seitenschiene oder eines Kantsteins 150, eines Verkehrszeichens 160, kommerzieller Zeichen oder Werbetafeln (nicht dargestellt) und eines Baums 170 aufweisen. Die virtuelle Umgebung 100 kann ferner Gebäude in der Art eines Hauses 140 und auf einem Fußgängerstreifen 130 gehende Fußgänger 131 und 132 aufweisen. Die virtuelle Umgebung 100 kann auch einen Hügel 120 am fernen Ende der Straße 110, ein über den Himmel fliegendes Flugzeug 180 und einen über die Straße 110 laufenden Hund 133 aufweisen. Fachleute werden verstehen, dass die Darstellung der virtuellen Umgebung 100 in 1 lediglich ein Beispiel für erläuternde Zwecke ist und dass es zahlreiche Variationen der Umgebung 100 mit verschiedenen Objekten in Bezug auf die Anzahl des Typs geben kann. Das heißt, dass Ausführungsformen der virtuellen Umgebung 100 gemäß der vorliegenden Offenbarung nicht auf das in 1 dargestellte Beispiel beschränkt sind.
-
Die Straße 110, der Hügel 120, der Fußgängerstreifen 130, die Fußgänger 131 und 132, der Hund 133, das Haus 140, der Kantstein 150, das Verkehrszeichen 160, der Baum 170, die Fahrzeuge 181, 182 und 190 und das Flugzeug 180 sind jeweils virtuelle Objekte innerhalb der virtuellen Umgebung 100. Unter den virtuellen Objekten sind die Straße 110, der Hügel 120, der Fußgängerstreifen 130, das Haus 140, der Kantstein 150, das Verkehrszeichen 160 und der Baum 170 ortsfeste virtuelle Objekte, weil sie sich nicht in Bezug auf einen festen Bezugspunkt 105 der virtuellen Umgebung 100 bewegen. Andererseits sind die Fußgänger 131 und 132, der Hund 133, die Fahrzeuge 181, 182 und 190 und das Flugzeug 180 bewegliche virtuelle Objekte, weil sie sich in Bezug auf den Bezugspunkt 105 bewegen.
-
Für jedes virtuelle Objekt kann ein Koordinatensatz mit einer Anzahl von Koordinaten in Zusammenhang mit dem jeweiligen virtuellen Objekt verwendet werden, um den Raum zu definieren, der vom virtuellen Objekt in der virtuellen Umgebung eingenommen wird. Verschiedene Anzahlen von Koordinaten können verwendet werden, um verschiedene virtuelle Objekte zu definieren. Beispielsweise kann das Haus 140 eine kompliziertere Struktur aufweisen als das Straßenzeichen 160 und so eine größere Anzahl von Koordinaten zur Definition seines Raums innerhalb der virtuellen Umgebung 100 erfordern. Für ein bewegliches virtuelles Objekt können sich die zugeordneten Koordinaten entsprechend einer Bewegungsstrecke des beweglichen virtuellen Objekts von einem Moment zum nächsten ändern. Die Änderung der zugeordneten Koordinaten oder die Ortsänderung des beweglichen virtuellen Objekts kann für verschiedene bewegliche virtuelle Objekte in der virtuellen Umgebung verschieden sein. Beispielsweise kann in 1 ein Fußgänger 131 mit einer Geschwindigkeit auf dem Fußgängerstreifen 130 gehen, die langsamer als jene eines Hunds 133 ist, der über die Straße 110 laufen kann, und in der Richtung davon verschieden ist. Daher kann die Ortsänderung des Fußgängers 131 von einem ersten Moment zu einem zweiten Moment bei der Simulation von der Ortsänderung des Hunds 133 vom ersten Moment zum zweiten Moment in der Simulation verschieden sein, was sich in Änderungen der beiden Koordinatensätze widerspiegelt, die den Fußgänger 131 bzw. den Hund 133 repräsentieren. Dagegen ändern sich die für das Definieren des von einem ortsfesten virtuellen Objekt in der Art des Hauses 140 oder des Straßenzeichens 160 eingenommenen Raums verwendeten Koordinaten bei der Simulation beispielsweise nicht von einem Moment zum nächsten, weil sich der von einem ortsfesten virtuellen Objekt in der virtuellen Umgebung 100 eingenommene Raum im Laufe der Zeit nicht ändert.
-
Zur Erzeugung eines Sensordatensatzes, der die virtuelle Umgebung 100 kennzeichnet, können ein oder mehrere virtuelle Sensoren in der virtuellen Umgebung 100 positioniert werden. Ein Sensor kann an einem stationären Ort positioniert werden. Beispielsweise kann der Sensor 141 am Haus 140 angebracht werden. Alternativ kann ein Sensor in der virtuellen Umgebung 100 so positioniert werden, dass er in Bezug auf den Bezugspunkt 105 der virtuellen Umgebung 100 beweglich ist. Wenn ein virtueller Sensor so positioniert ist, dass er einem beweglichen virtuellen Objekt in der virtuellen Umgebung 100 zugeordnet ist, kann dieser virtuelle Sensor die virtuelle Umgebung 100 zusammen mit dem beweglichen virtuellen Objekt durchlaufen oder sich auf andere Weise darin herum bewegen. Beispielsweise können die Sensoren 191, 192 und 193 am sich bewegenden Fahrzeug 190 angebracht sein und so die virtuelle Umgebung 100 bei der Simulation durchlaufen oder sich auf andere Weise darin herum bewegen.
-
Ähnlich den virtuellen Objekten in der virtuellen Umgebung 100 kann ein virtueller Sensor in der Art eines der Sensoren 141, 191, 192 und 193 mit einer Anzahl von Koordinaten versehen werden, die den Ort des virtuellen Sensors sowie den vom virtuellen Sensor in der virtuellen Umgebung 100 eingenommenen Raum definieren. Falls der virtuelle Sensor verglichen mit der virtuellen Umgebung 100 verhältnismäßig klein ist, kann der von ihm eingenommene Raum für alle praktischen Zwecke vernachlässigbar sein und kann der Ort dieses virtuellen Sensors durch eine einzige Koordinate repräsentiert werden. Für einen solchen an einem stationären Ort positionierten virtuellen Sensor in der Art des am Haus 140 angebrachten Sensors 141 kann sich die den Ort des virtuellen Sensors repräsentierende einzige Koordinate während der Simulation nicht ändern. Alternativ kann sich für einen in der virtuellen Umgebung 100 beweglich positionierten virtuellen Sensor die den Ort des virtuellen Sensors repräsentierende einzige Koordinate bei der Simulation im Laufe der Zeit ändern. Beispielsweise kann der jeweilige Ort von jedem der am Fahrzeug 190 angebrachten Sensoren 191, 192 und 193 durch eine jeweilige Koordinate repräsentiert werden, die sich bei der Simulation von einem Moment zum nächsten ändert. Die Änderung der Koordinate, d.h. die Ortsänderung von jedem der Sensoren 191, 192 und 193, kann der Ortsänderung des Fahrzeugs 190 im Laufe der Zeit bei der Simulation ähneln oder dieser gleichen.
-
Zusätzlich dazu, dass er an einem Ort in der virtuellen Umgebung 100 positioniert oder auf andere Weise dort angeordnet wird, kann ein virtueller Sensor ferner an seinem jeweiligen Ort in eine bestimmte Orientierung in Bezug auf die virtuelle Umgebung 100 versetzt werden. Wenngleich der virtuelle Sensor 141 beispielsweise an einem äußeren Ort des Hauses 140 (d.h. auf dem Dach) angeordnet sein kann, kann der virtuelle Sensor (141) ferner in eine solche Orientierung versetzt werden, dass der virtuelle Sensor (141) dem Fußgängerstreifen 130 über die Straße 110 gegenübersteht. Alternativ kann der virtuelle Sensor 141 in eine Orientierung in Bezug auf die virtuelle Umgebung 100 versetzt werden, so dass der virtuelle Sensor 141 einem Ende der Straße 110 gegenübersteht, an dem das Fahrzeug 190 in die Straße 110 einfährt. Das heißt, dass der virtuelle Sensor 141 in verschiedene Orientierungen in Bezug auf die virtuelle Umgebung 100 versetzt werden kann, während er sich am selben festen Ort befindet (d.h. auf dem Dach des Hauses 141), so dass der virtuelle Sensor 141 in der Lage sein kann, die virtuelle Umgebung 100 vom selben Ort zu kennzeichnen, jedoch in verschiedenen Orientierungen. Dabei stellt die Fähigkeit, einen virtuellen Sensor in verschiedene Orientierungen zu versetzen, einen zusätzlichen Freiheitsgrad für das Kennzeichnen der virtuellen Umgebung durch den virtuellen Sensor von einem gegebenen Ort in der virtuellen Umgebung bereit.
-
Gemäß einigen Ausführungsformen können jeder, einige oder alle der Sensoren 141, 191, 192 und 193 eine virtuelle Kamera aufweisen, die dafür ausgelegt ist, die virtuelle Umgebung 100 durch Aufnahme entweder von Standbildern (d.h. Bildern) oder von Bewegtbildern (d.h. Video) oder durch eine Kombination von beiden zu kennzeichnen. Das heißt, dass die Sensordaten ortsfeste und/oder bewegte Bilder der virtuellen Umgebung 100 aufweisen können. Abhängig vom Ort und von der Orientierung einer virtuellen Kamera kann ein Teil der virtuellen Umgebung 100 gekennzeichnet werden, indem er durch ein von der virtuellen Kamera erzeugtes Bild erfasst wird. Wenn die virtuelle Kamera des Sensors 141 beispielsweise in eine solche Orientierung versetzt wird, dass die virtuelle Kamera dem Fußgängerstreifen 130 über die Straße 110 gegenübersteht, kann ein von der virtuellen Kamera des Sensors 141 erzeugtes Bild Informationen aufweisen, welche Fußgänger 131 und 132, Fahrzeuge 181 und 190, den Hund 133, den Baum 170 sowie einen Teil des Fußgängerstreifens 130 und einen Teil der Straße 110 kennzeichnen. Infolge der Orientierung der virtuellen Kamera kann das Bild jedoch keine Informationen aufweisen, die den Hügel 120 oder das Flugzeug 183 kennzeichnen. Das Bild kann auch infolge der Orientierung nicht einmal das Fahrzeug 182 oder das Verkehrszeichen 160 erfassen.
-
Ein von einer virtuellen Kamera erzeugtes Bild kann eine Anzahl von Bildpixeln aufweisen, und die Bildpixel können in einem Feld präsentiert werden. Wie in 2 dargestellt ist, kann ein durch eine virtuelle Kamera erzeugtes Bild 210 ein in m Spalten und n Zeilen präsentiertes Feld von Bildpixeln einschließen, wobei m und n jeweils eine positive ganze Zahl sind. Jede Spalte des Felds hat die gleiche Anzahl von Pixeln wie eine andere Spalte des Felds, während jede Zeile des Felds die gleiche Anzahl von Pixeln wie eine andere Zeile des Felds aufweist. Daher ist die Gesamtzahl der im Bild enthaltenen Pixel m·n. Beispielsweise hat die erste Spalte des Bilds 210 n Pixel, nämlich P11, P12, ..., P1n, und hat die letzte Zeile des Bilds 210 m Pixel, nämlich P1n, P2n, ..., Pmn, wie in 2 dargestellt ist. Für ein hochauflösendes Bild kann m 1920 oder größer sein und kann n 1080 oder größer sein. Beispielsweise kann ein Ultra-High-Definition(UHD)-Bild ein Pixelfeld mit 3840 Spalten und 2160 Zeilen aufweisen. Gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung kann die Anzahl der Spalten und Zeilen im Pixelfeld eines Bilds von den tatsächlichen Anforderungen einer Implementation abhängen.
-
Weil ein von einer virtuellen Kamera erzeugtes Bild eine Ansicht der von der virtuellen Kamera wahrgenommenen virtuellen Umgebung repräsentiert, wird jedes Pixel des Bilds daher gerendert, um ein virtuelles Bild in der von der virtuellen Kamera vom Ort und in der Orientierung der virtuellen Kamera wahrgenommenen virtuellen Umgebung zu zeigen oder dies ihm zuzuordnen. Es sei die virtuelle Kamera 141 aus 1 als ein Beispiel angenommen, wobei diese auf dem Dach des Hauses 140 positioniert ist und in eine dem Fußgängerstreifen 130 über die Straße 110 gegenüberstehenden Orientierung versetzt ist. Ein von der virtuellen Kamera 141 erzeugtes Bild 210 kann ein Bildpixelfeld aufweisen, wie in 2 dargestellt ist. Einige der Pixel des Bilds 210 können demgemäß gerendert werden, um den Fußgänger 131 zu zeigen oder auf andere Weise zu repräsentieren, während einige der Pixel des Bilds 210 gerendert werden können, um den Fußgänger 132 zu zeigen oder auf andere Weise zu repräsentieren. Ebenso können einige der Pixel des Bilds 210 gerendert werden, um das Fahrzeug 181 zu zeigen oder auf andere Weise zu repräsentieren, können einige der Pixel des Bilds 210 gerendert werden, um das Fahrzeug 190 zu zeigen oder auf andere Weise zu repräsentieren, und können einige der Pixel des Bilds 210 gerendert werden, um den Hund 133 zu zeigen oder auf andere Weise zu repräsentieren. Überdies können einige der Pixel des Bilds 210 gerendert werden, um den Baum 170 zu zeigen oder auf andere Weise zu repräsentieren, können einige der Pixel des Bilds 210 gerendert werden, um einen Teil des Fußgängerstreifens 130 zu zeigen oder auf andere Weise zu repräsentieren, und können einige der Pixel des Bilds 210 gerendert werden, um einen Teil der Straße 110 zu zeigen oder auf andere Weise zu repräsentieren.
-
Damit ein Satz durch die virtuellen Sensoren erzeugter Sensordaten zum Entwickeln, Trainieren, Testen und Beweisen von Computersehalgorithmen verwendbar wird, muss der Satz von Sensordaten mit Ground-Truth-Informationen annotiert werden. Gemäß einigen Ausführungsformen werden die Ground-Truth-Informationen in Form einer Tiefenkarte für jedes durch den virtuellen Sensor erzeugte Bild präsentiert. Wie in 2 dargestellt ist, wird das Bild 210 durch eine entsprechende Tiefenkarte 260 annotiert, die Tiefen-Ground-Truth-Informationen enthält. Die Tiefenkarte 260 kann ein Elementfeld aufweisen, wobei das Elementfeld die gleiche Größe hat wie das Pixelfeld des Bilds 210. Das heißt, dass das Elementfeld der Tiefenkarte 260 auch m Spalten und n Zeilen aufweist, so dass sich insgesamt m·n Elemente ergeben. Tatsächlich haben die Elemente in der Tiefenkarte 260 eine 1-zu-1-Entsprechung mit den Pixeln im Bild 210. Beispielsweise entspricht das Element D11 der Tiefenkarte 260 dem Pixel P11 des Bilds 210 und entspricht das Element D12 der Tiefenkarte 260 dem Pixel P12 des Bilds 210. Ebenso entspricht das Element Dmn der Tiefenkarte 260 dem Pixel Pmn des Bilds 210.
-
Jedes Element der Tiefenkarte kann einen Zahlenwert speichern, der den Abstand in der virtuellen Umgebung zwischen dem virtuellen Sensor und dem virtuellen Objekt, das am entsprechenden Bildpixel gerendert wurde, angibt, repräsentiert oder diesem auf andere Weise entspricht. Beispielsweise kann das Pixel P32 des von der virtuellen Kamera 141 erzeugten Bilds 210 gerendert werden, um einen Teil des Baums 170 zu zeigen oder ihm zugeordnet zu werden. Daher kann das entsprechende Element D32 der Tiefenkarte 260 einen dem Abstand zwischen diesem Teil des Baums 170 und der virtuellen Kamera 141 in der virtuellen Umgebung 100 entsprechenden Zahlenwert enthalten. Als ein weiteres Beispiel kann das Pixel Pm1 des von der virtuellen Kamera 141 erzeugten Bilds 210 gerendert werden, um einen Teil des Fußgängerstreifens 130 zu zeigen oder ihm zugeordnet zu werden. Daher kann das entsprechende Element Dm1 der Tiefenkarte 260 einen dem Abstand zwischen diesem Teil des Fußgängerstreifens 130 und der virtuellen Kamera 141 in der virtuellen Umgebung 100 entsprechenden Zahlenwert enthalten.
-
Im Gegensatz zu einer realen Sensordatensammlung, wobei der Abstand zwischen einem realen Sensor und einem Objekt in der tatsächlichen Fahrtumgebung unter Verwendung kostspieliger und zeitaufwendiger Geräte in der Art von Tiefenscannern gemessen wird, kann der Abstand zwischen einem virtuellen Sensor und einem virtuellen Objekt in der virtuellen Umgebung leicht berechnet werden, beispielsweise durch einen Prozessor einer Rechenvorrichtung, weil die Orte jedes virtuellen Sensors und jedes virtuellen Objekts zu jeder Zeit während einer Simulation bekannte Informationen sind. Beispielsweise kann der im Element D32 der Tiefenkarte 260 zu speichernde Zahlenwert leicht unter Verwendung der einen oder der mehreren Koordinaten des Baums 170 und der Koordinate der virtuellen Kamera 141 berechnet werden. Als ein weiteres Beispiel kann der im Element Dm1 der Tiefenkarte 260 zu speichernde Zahlenwert leicht unter Verwendung der Koordinate der virtuellen Kamera 141 und der Koordinate des am Pixel P32 des von der virtuellen Kamera 141 erzeugten Bilds 210 gerenderten Teils des Fußgängerstreifens 130 berechnet werden.
-
Wie zuvor erwähnt wurde, müssen zum Entwickeln robuster Computersehalgorithmen unter verschiedenen Bedingungen Umgebungsvariablen oder -parameter wie Wetter-, Temperatur-, Wind-, Beleuchtungsbedingungen und andere Faktoren möglicherweise in die realen Sensordatensätze aufgenommen werden. Während erhebliche Mengen an Zeit, Geld und Ressourcen erforderlich sind, um solche Daten in einem realen Szenario zu erfassen, ist ein erheblich geringerer Aufwand erforderlich, um Sensordaten zu erzeugen, die den verschiedenen Umgebungsbedingungen Rechnung tragen. Bei einigen Ausführungsformen kann ein Bild, das einen bestimmten Teil der virtuellen Umgebung unter einer ersten Umgebungsbedingung kennzeichnet, durch einen oder mehrere Umgebungsparameter gerendert werden, um ein anderes Bild zu erzeugen, das denselben bestimmten Teil der virtuellen Umgebung unter einer von der ersten Umgebungsbedingung verschiedenen zweiten Umgebungsbedingung kennzeichnet. Beispielsweise kann Bild 310 von 3, das Pixel P11–Pmn aufweist, eine Ansicht eines Teils der virtuellen Umgebung 100 repräsentieren, wie er von der virtuellen Kamera 192 in einem bestimmten Moment während der Simulation unter einer Schönwetterbedingung wahrgenommen wird. Das Bild 310 kann dann durch Einstellen eines oder mehrerer Umgebungsparameter zum Bild 320 gerendert werden, das Pixel Q11–Qmn aufweist, die eine Ansicht desselben Teils der virtuellen Umgebung 100 repräsentieren können, wie er von der virtuellen Kamera 192 im selben bestimmten Moment während der Simulation unter einer nebligen Bedingung wahrgenommen wird. Alternativ oder nachfolgend kann das Bild 310 dann durch Einstellen eines oder mehrerer Umgebungsparameter zum Bild 330 gerendert werden, das Pixel R11–Rmn aufweist, die eine Ansicht desselben Teils der virtuellen Umgebung 100 repräsentieren können, wie er von der virtuellen Kamera 192 im selben bestimmten Moment während der Simulation in der Dämmerung wahrgenommen wird. Beispielsweise kann das Pixel P32 des Bilds 310 zum Pixel Q32 des Bilds 320 gerendert werden, um einen Teil des Baums 170 unter einer nebligen Bedingung zu kennzeichnen, während das Pixel P32 des Bilds 310 auch zum Pixel R32 des Bilds 330 gerendert werden kann, um denselben Teil des Baums 170 unter einer Dämmerungsbedingung zu kennzeichnen.
-
Insbesondere können, weil jedes der Bilder 310, 320 und 330 eine Ansicht repräsentiert, welche denselben Teil der virtuellen Umgebung 100 von derselben virtuellen Kamera 192 kennzeichnet, die am selben Ort in derselben Orientierung positioniert ist, die drei Bilder 310, 320 und 330 mit derselben Tiefenkarte 360 annotiert werden. Das heißt, dass jedem der entsprechenden Pixel der Bilder 310, 320 und 330 derselbe Zahlenwert zugeordnet werden kann, der im jeweiligen Element der Tiefenkarte 360 gespeichert ist. Beispielsweise können das Pixel P32 des Bilds 310, das Pixel Q32 des Bilds 320 und das Pixel R32 des Bilds 330 den Baum 170 als von der virtuellen Kamera 192 in einem bestimmten Moment während der Simulation, jedoch unter einer jeweiligen Umgebungsbedingung wahrgenommen kennzeichnen, und sie können durch dasselbe Element D32 der Tiefenkarte 360 annotiert werden, weil der Abstand zwischen einem Teil des Baums 170 und der virtuellen Kamera 192 in diesem bestimmten Moment während der Simulation für alle drei simulierten Umgebungsbedingungen der gleiche sein kann.
-
Ferner ist es erwähnenswert, dass die Technik zum Erzeugen von Bildern, die einen bestimmten Teil der virtuellen Umgebung unter verschiedenen Umgebungsbedingungen kennzeichnen, wie vorstehend mit den Bildern 310, 320 und 330 gezeigt wurde, gleichermaßen auf stehende Bilder und Bewegtbilder anwendbar ist. Ähnlich ist die Technik zum Annotieren von Bildern, wie vorstehend mit Bezug auf die 2 und 3 gezeigt, auch auf stehende Bilder und Bewegtbilder anwendbar. Überdies ist es erwähnenswert, dass Ausführungsformen zum Annotieren von Bildern und zum Erzeugen von Bildern gemäß der vorliegenden Offenbarung nicht auf die in den 2 und 3 dargestellten Beispiele beschränkt sind. Zusätzlich ist es erwähnenswert, dass, wenngleich mehrere Bilder, die jeweils durch die gleichen Tiefen-Ground-Truth-Daten wie die Tiefenkarte 360 annotiert sind, unter Verwendung der vorstehend beschriebenen Umgebungsparameter erzeugt werden können, um verschiedenen Wetterbedingungen und Beleuchtungsbedingungen Rechnung zu tragen, es Ausführungsformen der vorliegenden Offenbarung nicht erfordern, dass mehrere Bilder am genau gleichen Ort unter verschiedenen Bedingungen aufgenommen werden. Mit anderen Worten können gemäß einigen Ausführungsformen der vorliegenden Offenbarung einfach Bilder von verschiedenen Orten innerhalb einer virtuellen Umgebung erzeugt werden, Wetterbedingungen von einem Bild zum nächsten geändert werden und/oder die entsprechenden Tiefen-Ground-Truth-Daten für jedes der Bilder erzeugt werden, ohne dass es erforderlich wäre, dass zwei oder mehr Bilder für genau denselben Ort aufgenommen oder auf andere Weise erzeugt werden, um dieselbe Ansicht der virtuellen Umgebung unter verschiedenen Wetterbedingungen oder Beleuchtungsbedingungen zu kennzeichnen.
-
4 zeigt einen als Beispiel dienenden Prozess 400 zum Erzeugen virtueller Sensordaten zum Entwickeln oder Testen von Computerseherkennungsalgorithmen gemäß der vorliegenden Offenbarung. Der Prozess 400 kann eine oder mehrere Operationen, Aktionen oder Funktionen aufweisen, die als Blöcke dargestellt sind, wie 410, 420, 430, 440 und 450. Wenngleich sie als diskrete Blöcke dargestellt sind, können verschiedene Blöcke des Prozesses 400 in zusätzliche Blöcke unterteilt werden, zu weniger Blöcken kombiniert werden oder beseitigt werden, wobei dies von der gewünschten Implementation abhängt. Der Prozess 400 kann mit Block 410 beginnen.
-
Bei 410 des Prozesses 400 kann ein Prozessor eine virtuelle Umgebung (beispielsweise die virtuelle Umgebung 100) erzeugen. Bei der Erzeugung der virtuellen Umgebung können verschiedene virtuelle Objekte durch Zuweisen einer oder mehrerer Koordinaten zu jedem der virtuellen Objekte eingerichtet werden. Die virtuellen Objekte können ortsfeste virtuelle Objekte (beispielsweise Straße 110, Hügel 120, Fußgängerstreifen 130, Haus 140, Kantstein 150, Verkehrszeichen 160 und Baum 170) und bewegliche virtuelle Objekte (beispielsweise Fußgänger 131 und 132, Hund 133, Fahrzeuge 181, 182 und 190 und Flugzeug 180) umfassen. Block 420 kann Block 410 folgen.
-
Bei 420 des Prozesses 400 kann der Prozessor einen oder mehrere virtuelle Sensoren (beispielsweise die virtuellen Sensoren 141, 191, 192 und 193) in der virtuellen Umgebung (beispielsweise der virtuellen Umgebung 100) positionieren. Für jeden von dem einen oder den mehreren virtuellen Sensoren kann bei der Positionierung eine Koordinate für den Ort des virtuellen Sensors zugewiesen werden und kann eine Orientierung in Bezug auf die virtuelle Umgebung festgelegt werden. Bei der Positionierung können auch ein Ort und eine Orientierung für den virtuellen Sensor entsprechend einer vorgegebenen Bewegungsbahn des virtuellen Sensors festgelegt werden. Block 430 kann Block 420 folgen.
-
Bei 430 des Prozesses 400 kann der Prozessor Daten aufzeichnen (beispielsweise das Bild 310), welche die virtuelle Umgebung kennzeichnen, wie sie von dem einen oder den mehreren virtuellen Sensoren wahrgenommen wird (beispielsweise vom virtuellen Sensor 192). Bei 430 des Prozesses 400 kann der Prozessor ferner Daten aufzeichnen (beispielsweise die Bilder 320 und 330), welche eine Wetterbedingung und/oder eine Beleuchtungsbedingung der virtuellen Umgebung berücksichtigen. Block 440 kann Block 430 folgen.
-
Bei 440 des Prozesses 400 kann der Prozessor die aufgezeichneten Daten (beispielsweise die Bilder 310, 320 und 330) mit einer Tiefenkarte (beispielsweise der Tiefenkarte 360) annotieren. Bei der Annotierung der aufgezeichneten Daten kann der Prozessor für jedes Element der Tiefenkarte den Abstand zwischen dem virtuellen Sensor und einem jeweiligen virtuellen Objekt in Zusammenhang mit dem jeweiligen Element der Tiefenkarte berechnen und speichern. Beispielsweise kann der Prozessor beim Prozess 400 den Abstand zwischen einem Teil des Baums 170, der am Pixel P32 des Bilds 310 gerendert ist, und der virtuellen Kamera 192 berechnen und einen Zahlenwert in Zusammenhang mit dem berechneten Abstand am Element D32 der Tiefenkarte 360 speichern. Block 450 kann Block 440 folgen.
-
Bei 450 des Prozesses 400 kann der Prozessor feststellen, ob eine Simulationsendebedingung erreicht wurde. Eine Simulationsendebedingung kann als erreicht festgestellt werden, wenn beispielsweise eine vorgegebene Anzahl von Bildern durch den einen oder die mehreren virtuellen Sensoren erzeugt wurde. Eine Simulationsendebedingung kann auch als erreicht festgestellt werden, wenn als ein weiteres Beispiel von einem Fahrzeug (beispielsweise dem Fahrzeug 190), das einen oder mehrere virtuelle Sensoren trägt (beispielsweise die virtuellen Sensoren 191, 192 und 193), eine vorgegebene Anzahl von Meilen zurückgelegt wurde. Zusätzlich kann festgestellt werden, dass eine Simulationsendebedingung erreicht wurde, wenn als ein weiteres Beispiel eine vorgegebene Simulationszeit erreicht wurde. Ansprechend auf eine Feststellung, dass eine Simulationsendebedingung erreicht wurde, kann der Prozess 400 enden. Alternativ kann der Prozess 400 ansprechend auf eine Feststellung, dass eine Simulationsendebedingung nicht erreicht wurde, mit Block 420 fortfahren, um jeden, einige oder alle von dem einen oder den mehreren virtuellen Sensoren mit oder ohne Orientierungsänderung an einem oder mehreren anderen Orten zu repositionieren.
-
5 zeigt ein als Beispiel dienendes Sensordatenerzeugungssystem 500, worin als Beispiel dienende Ausführungsformen der vorliegenden Offenbarung implementiert werden können. Das Sensordatenerzeugungssystem 500 kann eine oder mehrere Simulationen ausführen, um einen Sensordatensatz 570 zu erzeugen, der für das Entwickeln, Testen und/oder Trainieren verschiedener Computerseherkennungsalgorithmen geeignet ist. Das Sensordatenerzeugungssystem 500 kann dies mit einem beliebigen geeigneten Verfahren, einschließlich des als Beispiel dienenden Prozesses 400, ausführen. Das Sensordatenerzeugungssystem 500 kann als Hardware, Software oder eine Kombination davon verwirklicht sein. Bei einigen Implementationen kann das Sensordatenerzeugungssystem 500 eine Rechenvorrichtung in der Art beispielsweise eines Laptopcomputers, eines Tabletcomputers, eines Notebookcomputers, eines Desktopcomputers, eines Servers, eines Smartphones und einer tragbaren Vorrichtung sein, ist jedoch nicht darauf beschränkt.
-
Gemäß einigen Ausführungsformen kann das Sensordatenerzeugungssystem 500 einen oder mehrere Prozessoren 502, einen Speicher 590, eine Benutzerschnittstelle 504, andere Hardware 506 in der Art beispielsweise eines feldprogrammierbaren Gate-Arrays (FPGA), einer Graphikverarbeitungseinheit (GPU) oder dergleichen oder eine Kombination oder Unterkombination davon aufweisen. Der Speicher 590 kann operativ mit dem einen oder den mehreren Prozessoren 502 verbunden oder auf andere Weise damit zugänglich sein und dafür ausgelegt sein, eine oder mehrere Computersoftwarekomponenten zur Ausführung durch den einen oder die mehreren Prozessoren 502 zu speichern.
-
Die Benutzerschnittstelle 504 kann es einem Benutzer, beispielsweise einem Ingenieur, Techniker oder dergleichen, ermöglichen, mit verschiedenen Aspekten des Sensordatenerzeugungssystems 500 zu interagieren, sie auszuführen, sie eigens auszulegen oder zu steuern. Gemäß einigen Ausführungsformen kann die Benutzerschnittstelle 504 ein oder mehrere Tastenfelder, Tastaturen, Berührungsbildschirme, Zeigevorrichtungen oder dergleichen oder eine Kombination oder Unterkombination davon aufweisen.
-
Gemäß einigen Ausführungsformen kann der Speicher 590 Daten, Codes und/oder Befehle, die zu einer oder mehreren virtuellen Umgebungen 510, wovon die vorstehend beschriebene virtuelle Umgebung 100 ein Beispiel sein kann, gehören oder diese auf andere Weise definieren, speichern. Die eine oder die mehreren virtuellen Umgebungen 510 können verschiedene virtuelle Objekte und Strukturen in der Art jener enthalten, die in 1 dargestellt sind und in Bezug damit vorstehend beschrieben wurden. Der Speicher 590 kann auch zumindest jene Komponenten speichern, die in 5 dargestellt sind, wie beispielsweise ein oder mehrere Sensormodelle 520, das Positionierungsmodul 530, das Umgebungsmodul 540, das Simulationsmodul 550, das Annotationsmodul 560, Sensordaten 570 und eine oder mehrere Tiefenkarten 580.
-
Gemäß einigen Ausführungsformen kann die virtuelle Umgebung 510 ein dreidimensionales Netz aufweisen, das Orte, Orientierungen, Größen, Formen, Farben, Oberflächenreflexionsgrade und andere Eigenschaften virtueller Objekte in einem virtuellen Raum definieren, in der Art einiger oder aller der ortsfesten virtuellen Objekte in der virtuellen Umgebung 100, wie in 1 dargestellt ist, einschließlich der Straße 110, des Hügels 120, des Fußgängerstreifens 130, des Hauses 140, des Kantsteins 150, des Verkehrszeichens 160 und des Baums 170. Gemäß einigen Ausführungsformen kann die virtuelle Umgebung 510 auch Eigenschaften beweglicher virtueller Objekte definieren, beispielsweise der Fußgänger 131 und 132, des Hunds 133, der Fahrzeuge 181, 182 und 190 und des Flugzeugs 180, wie in 1 dargestellt ist, einschließlich Geschwindigkeit, Bewegungsrichtung, Beschleunigung/Verzögerung und Drehen von jedem der beweglichen virtuellen Objekte, jedoch ohne Einschränkung darauf.
-
Gemäß einigen Ausführungsformen kann jedes Sensormodell 520 ein Softwaremodell sein, das die Ausgabe eines entsprechenden realen Sensors definiert oder vorhersagt. Verschiedene Sensoren können in der realen Welt verschieden kennzeichnen. Beispielsweise kann eine Stereokamera anders als eine Panoramakamera kennzeichnen. Daher können das eine oder die mehreren Sensormodelle 520 ein jeweiliges Sensormodell zum Modellieren jedes Kameratyps für eine Anzahl von Kameratypen einschließen, einschließlich einer Stereokamera und einer Panoramakamera, jedoch ohne Einschränkung darauf.
-
Gemäß einigen Ausführungsformen kann das Positionierungsmodul 530 verwendet werden, um einen Ort und eine Orientierung eines virtuellen Sensors in der virtuellen Umgebung 510 festzulegen. Beispielsweise kann das Positionierungsmodul 530 in Zusammenhang mit der als virtuelle Umgebung 100 modellierten virtuellen Umgebung 510 den virtuellen Sensor 141 an einem äußeren Ort des Dachs des Hauses 140 anordnen und den virtuellen Sensor 141 in eine Orientierung versetzen, die dem Fußgängerstreifen 130 über die Straße 110 gegenübersteht. Als ein weiteres Beispiel kann das Positionierungsmodul 530 für jeden Moment während der Simulation einen Ort und eine Orientierung des virtuellen Sensors 192 auf der Grundlage einer Fahrstrecke des Fahrzeugs 190, woran der Sensor 192 angebracht ist, bestimmen.
-
Gemäß einigen Ausführungsformen kann das Umgebungsmodul 540 verwendet werden, um einer Wetterbedingung (beispielsweise neblig, regnerisch, schneiend oder sonnig) und/oder einer Beleuchtungsbedingung (beispielsweise hell, Dämmerung oder dunkel) der virtuellen Umgebung Rechnung zu tragen. Eine Anzahl von Umgebungsparametern kann eingestellt werden, um eine Änderung der Umgebungs-Wetter- oder Beleuchtungsbedingung widerzuspiegeln. Beispielsweise kann ein Wetterparameter des Umgebungsmoduls 540 für ein unter einer Schönwetterbedingung aufgenommenes Bild eingestellt werden, um das Bild zu einem anderen Bild zu rendern, das die gleiche Ansicht der virtuellen Umgebung 100 bei nebligem Wetter kennzeichnen würde. Bei einem anderen Beispiel kann ein Beleuchtungsparameter des Umgebungsmoduls 540 für das unter der Schönwetterbedingung aufgenommene Bild eingestellt werden, um das Bild zu einem anderen Bild zu rendern, das die gleiche Ansicht der virtuellen Umgebung 100 unter einer Dämmerungsbedingung kennzeichnen würde.
-
Gemäß einigen Ausführungsformen kann das Simulationsmodul 550 eine Eingabe von der virtuellen Umgebung 510, vom Sensormodell 520 und vom Positionierungsmodul 530 entgegennehmen, um einen Datensatz zu erzeugen, wodurch eine Ausgabe eines Sensors in einem realen Szenario modelliert wird. Beispielsweise kann das Simulationsmodul 550 das Bild 210 erzeugen, das einen Teil der virtuellen Umgebung 100 kennzeichnet und ein Feld von m Spalten mal n Zeilen von Bildpixeln aufweist. Jedes Pixel des Bilds 210 kann einem Teil eines virtuellen Objekts zugeordnet werden, der durch das Pixel gerendert ist oder auf andere Weise dadurch repräsentiert wird. Gemäß einigen Ausführungsformen kann das Annotationsmodul 560 das Bild 210 mit der Tiefenkarte 260 annotieren, die ein Feld von Zahlenwerten aufweist, das die gleiche Größe hat wie das Pixelfeld des Bilds 210. Jedes Element der Tiefenkarte 260 kann einem jeweiligen Pixel des Bilds 210 entsprechen und einen Zahlenwert in Zusammenhang mit dem Abstand zwischen dem virtuellen Sensor und einem jeweiligen Teil des virtuellen Objekts, der an dem jeweiligen Pixel gerendert ist, speichern. Gemäß einigen Ausführungsformen kann der Speicher 590 Sensordaten 570 speichern, die mehrere vom Simulationsmodul 550 erzeugte virtuelle Bilder aufweisen. Gemäß einigen Ausführungsformen kann der Speicher 590 auch Tiefenkarten 580 speichern, welche die mehreren virtuellen Bilder annotieren.
-
Zahlreiche Vorteile ergeben sich aus den Systemen und Verfahren, die sich in verschiedenen Ausführungsformen der vorliegenden Offenbarung manifestieren. Die Vorteile umfassen zumindest das schnelle Erzeugen von Sensordaten in der virtuellen Umgebung mit annotierter Tiefen-Ground-Truth, wobei die Sensordaten für das Entwickeln, Trainieren, Testen und Beweisen von fahrzeugbasierten Computerseherkennungsalgorithmen geeignet sind.
-
Die Artikel "ein/eine/eines" werden hier verwendet, um sich auf eines oder mehrere (d.h. wenigstens eines) des grammatischen Objekts des Artikels zu beziehen. Beispielsweise bedeutet "ein Benutzer" einen oder mehr als einen Benutzer. In dieser Patentschrift bedeutet ein Bezug auf "eine einzige Ausführungsform", "eine Ausführungsform", "ein einziges Beispiel" oder "ein Beispiel", dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, die in Zusammenhang mit der Ausführungsform oder dem Beispiel beschrieben wird, in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Demgemäß beziehen sich Erscheinungen der Begriffe "gemäß einer einzigen Ausführungsform", "gemäß einer Ausführungsform", "ein einziges Beispiel" oder "ein Beispiel" an verschiedenen Stellen in dieser Patentschrift nicht notwendigerweise alle auf dieselbe Ausführungsform oder dasselbe Beispiel. Ferner können die bestimmten Merkmale, Strukturen, Datenbanken oder Charakteristiken gemäß einer oder mehreren Ausführungsformen oder bei einem oder mehreren Beispielen in beliebigen geeigneten Kombinationen und/oder Unterkombinationen kombiniert werden. Zusätzlich ist zu verstehen, dass die hier bereitgestellten Figuren Durchschnittsfachleuten der Erklärung dienen sollen und dass die Zeichnungen nicht notwendigerweise maßstabsgerecht sind.
-
Ausführungsformen gemäß der vorliegenden Offenbarung können als eine Vorrichtung, ein Verfahren oder ein Computerprogrammprodukt verwirklicht werden. Demgemäß kann die vorliegende Offenbarung die Form einer ganz aus Hardware bestehenden Ausführungsform, einer ganz aus Software bestehenden Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode oder dergleichen) oder einer Software- und Hardwareaspekte, die hier alle allgemein als "Schaltung", "Modul" oder "System" bezeichnet werden können, kombinierenden Ausführungsform annehmen. Ferner können Ausführungsformen der vorliegenden Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem gegenständlichen Aufnahmemedium mit in das Medium aufgenommenem von einem Computer verwendbarem Programmcode verwirklicht ist.
-
Die Flussdiagramme und Blockdiagramme in den anliegenden Figuren zeigen die Architektur, Funktionalität und die Arbeitsweise möglicher Implementationen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder Blockdiagrammen ein Codemodul, ein Codesegment oder einen Codeabschnitt repräsentieren, der einen oder mehrere ausführbare Befehle zur Implementation der spezifizierten Logikfunktion(en) umfasst. Es sei auch bemerkt, dass jeder Block der Blockdiagramme und/oder Flussdiagramme und Kombinationen von Blöcken in den Blockdiagrammen und/oder Flussdiagrammen durch hardwarebasierte Systeme für spezielle Zwecke, welche die spezifizierten Funktionen oder Schritte ausführen, oder Kombinationen von Hardware für spezielle Zwecke und Computerbefehlen implementiert werden können. Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die im computerlesbaren Medium gespeicherten Befehle einen Herstellungsartikel erzeugen, der Befehlsmittel aufweist, welche die im einen oder den mehreren Blöcken des Flussdiagramms und/oder Blockdiagramms spezifizierte Funktion bzw. den darin spezifizierten Schritt implementieren.
-
Wenngleich die vorliegende Offenbarung in Bezug auf bestimmte Ausführungsformen beschrieben wird, werden Durchschnittsfachleuten, denen der Vorteil dieser Offenbarung gegeben ist, andere Ausführungsformen einfallen, einschließlich Ausführungsformen, die nicht alle hier dargestellten Vorteile und Merkmale, die auch innerhalb des Schutzumfangs dieser Offenbarung liegen, bereitstellen. Es ist zu verstehen, dass andere Ausführungsformen verwendet werden können, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen. Zeichenerklärung Fig. 1
SPEED LIMIT | GESCHWINDIGKEITSBEGRENZUNG |