DE102022114521A1 - PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING - Google Patents

PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING Download PDF

Info

Publication number
DE102022114521A1
DE102022114521A1 DE102022114521.2A DE102022114521A DE102022114521A1 DE 102022114521 A1 DE102022114521 A1 DE 102022114521A1 DE 102022114521 A DE102022114521 A DE 102022114521A DE 102022114521 A1 DE102022114521 A1 DE 102022114521A1
Authority
DE
Germany
Prior art keywords
pose
reachability
poses
trajectories
vehicle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022114521.2A
Other languages
German (de)
Inventor
David Nister
Yizhou Wang
Jaikrishna Soundararajan
Sachit Kadle
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102022114521A1 publication Critical patent/DE102022114521A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0234Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using optical markers or beacons
    • G05D1/0236Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using optical markers or beacons in combination with a laser
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W30/00Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
    • B60W30/18Propelling the vehicle
    • B60W30/18009Propelling the vehicle related to particular drive situations
    • B60W30/18145Cornering
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/06Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W60/00Drive control systems specially adapted for autonomous road vehicles
    • B60W60/001Planning or execution of driving tasks
    • B60W60/0011Planning or execution of driving tasks involving control alternatives for a single driving scenario, e.g. planning several paths to avoid obstacles
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W60/00Drive control systems specially adapted for autonomous road vehicles
    • B60W60/001Planning or execution of driving tasks
    • B60W60/0015Planning or execution of driving tasks specially adapted for safety
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0214Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with safety or protection criteria, e.g. avoiding hazardous areas
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0221Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving a learning process
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0223Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving speed control of the vehicle
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0238Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
    • G05D1/024Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors in combination with a laser
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0242Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using non-visible light signals, e.g. IR or UV signals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • G05D1/0251Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means extracting 3D information from a plurality of images taken from different locations, e.g. stereo vision
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0255Control of position or course in two dimensions specially adapted to land vehicles using acoustic signals, e.g. ultra-sonic singals
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0259Control of position or course in two dimensions specially adapted to land vehicles using magnetic or electromagnetic means
    • G05D1/0263Control of position or course in two dimensions specially adapted to land vehicles using magnetic or electromagnetic means using magnetic strips
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0276Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
    • G05D1/0278Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using satellite positioning signals, e.g. GPS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • G06V20/586Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads of parking space
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W30/00Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
    • B60W30/06Automatic manoeuvring for parking
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W30/00Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
    • B60W30/08Active safety systems predicting or avoiding probable or impending collision or attempting to minimise its consequences
    • B60W30/09Taking automatic action to avoid collision, e.g. braking and steering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • General Physics & Mathematics (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Theoretical Computer Science (AREA)
  • Electromagnetism (AREA)
  • Mechanical Engineering (AREA)
  • Transportation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Medical Informatics (AREA)
  • Optics & Photonics (AREA)
  • Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Acoustics & Sound (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Image Analysis (AREA)
  • Control Of Driving Devices And Active Controlling Of Vehicle (AREA)

Abstract

Zur Bestimmung eines Wegs durch einen Posenkonfigurationsraum können Trajektorien von Posen mindestens auf der Basis einer Parallelverschiebung der Trajektorien entlang mindestens einer Achse des Posenkonfigurationsraums (z. B. einer Ausrichtungsachse) parallel bewertet werden. Eine Trajektorie kann mindestens einen Abschnitt einer Wendung umfassen, der einen festen Wendungsradius hat. Wendungen oder Wendungsabschnitte, die den gleichen Wendungsradius und die gleiche Anfangsausrichtung haben, können entlang der θ-Achse parallel verschoben und parallel verarbeitet werden, da sie parallelverschobene Kopien voneinander sind, jedoch mit unterschiedlichen Ausgangspunkten (x, y). Trajektorien können mindestens auf der Basis von Verarbeitungsvariablen bewertet werden, die verwendet werden, um die Erreichbarkeit als Bitvektoren mit Threads zu bewerten, die große Vektoroperationen effektiv synchron durchführen. Ein Parallelitätsreduktionsmuster kann verwendet werden, um Abhängigkeiten zu berücksichtigen, die zur Bewertung der Erreichbarkeit zwischen Abschnitten einer Trajektorie bestehen können, und die Parallelverarbeitung der Abschnitte zu ermöglichen.In order to determine a path through a pose configuration space, trajectories of poses can be evaluated at least on the basis of a parallel translation of the trajectories along at least one axis of the pose configuration space (e.g. an alignment axis). A trajectory may include at least a portion of a turn that has a fixed turn radius. Twists or twist portions that have the same twist radius and initial orientation can be translated along the θ-axis and processed in parallel since they are translated copies of each other, but with different starting points (x,y). At a minimum, trajectories can be evaluated based on processing variables used to evaluate reachability as bit vectors with threads effectively performing large vector operations synchronously. A concurrency reduction pattern can be used to account for dependencies that may exist between sections of a trajectory to assess reachability, and to allow parallel processing of the sections.

Description

HINTERGRUNDBACKGROUND

Um ein Fahrzeug oder ein anderes manövrierbares Objekt zu steuern, kann ein empfohlener Weg von einer aktuellen Pose (z. B. Position und Ausrichtung) des Fahrzeugs zu einer Zielpose für das Fahrzeug bestimmt werden (z. B. zum autonomen Einparken). Die Bestimmung eines empfohlenen Wegs für ein Fahrzeug kann die Erkundung potenzieller Wege in einem Konfigurationsraum unter nicht-holonomen Einschränkungen umfassen, die durch die Fahrzeugkinematik vorgegeben sind. Herkömmliche Ansätze zur Lösung dieses Problems können eine Graphensuche (z. B. A*) mit einer Heuristik verwenden, die den Suchraum reduziert, indem sie die frühzeitige Erkundung erfolgsversprechender Wege anreizt. Die besten Wege können jedoch nicht sofort ersichtlich sein und daher in Szenarien nicht identifiziert werden. Dementsprechend gibt es Umgebungen, in denen die Heuristik nicht genau zutrifft, da eine Heuristik nicht in allen Situationen anwendbar sein kann.To control a vehicle or other maneuverable object, a recommended path may be determined from a current pose (e.g., position and orientation) of the vehicle to a target pose for the vehicle (e.g., for autonomous parking). Determining a recommended path for a vehicle may involve exploring potential paths in configuration space under non-holonomic constraints dictated by vehicle kinematics. Traditional approaches to solving this problem can use graph search (e.g. A*) with a heuristic that reduces the search space by encouraging early exploration of promising paths. However, the best paths may not be immediately apparent and therefore may not be identified in scenarios. Accordingly, there are environments where the heuristic does not exactly apply, since a heuristic may not be applicable in all situations.

Zudem können die Algorithmen, die von herkömmlichen Systemen verwendet werden, nur geringfügig parallelisiert sein. Zum Beispiel wurden parallele Implementierungen von A* entwickelt, die acht Verarbeitungsthreads verwenden, um eine Beschleunigung um den Faktor vier zu erreichen. Moderne Parallelprozessoren können jedoch Tausende von Prozessorkemen bereitstellen, die einen viel höheren Parallelitätsgrad ermöglichen. Aufgrund der beschränkten Parallelisierung, die herkömmliche Ansätze bieten, ist die Dichte des erkundeten Konfigurationsraums oft relativ gering, um die Wegbestimmung auf recheneffiziente Weise zu ermöglichen. Das heißt, wenn der Konfigurationsraum zu dicht ist, kann die Identifizierung eines Wegs mit herkömmlichen Ansätzen für die praktische Anwendung zu lange dauern oder zu viele Ressourcen verbrauchen. Die Anzahl der potenziellen Wege, die bestimmt werden können, kann daher durch die Dichte des Konfigurationsraums limitiert sein.In addition, the algorithms used by conventional systems can only be slightly parallelized. For example, parallel implementations of A* using eight processing threads have been developed to achieve four times speedup. However, modern parallel processors can provide thousands of processor cores, allowing for a much higher degree of parallelism. Due to the limited parallelism offered by conventional approaches, the density of the configuration space explored is often relatively low to enable path determination in a computationally efficient manner. That is, if the configuration space is too dense, identifying a path using conventional approaches may take too long or consume too many resources for practical application. The number of potential paths that can be determined can therefore be limited by the density of the configuration space.

ZUSAMMENFASSUNGSUMMARY

Ausführungsformen der vorliegenden Erfindung betreffen eine massenparallele Fahrzeug-Wegplanung, die zum Einparken geeignet ist. Es werden Systeme und Verfahren offenbart, die den Weg eines Fahrzeugs durch einen Posenkonfigurationsraum auf hoch parallelisierte Weise bestimmen können.Embodiments of the present invention relate to mass-parallel vehicle path planning suitable for parking. Systems and methods are disclosed that can determine a vehicle's path through a pose configuration space in a highly parallelized manner.

Im Gegensatz zu traditionellen Ansätzen, wie den oben beschriebenen, können die offenbarten Ansätze verwendet werden, um in einem dichten Posenkonfigurationsraum durch schnelle parallele Erkundung von Wegen (z. B. aller Wege) einen Weg durch den Posenkonfigurationsraum zu bestimmen. Trajektorien von Posen im Posenkonfigurationsraum können mindestens auf der Basis einer Parallelverschiebung der Trajektorien entlang mindestens einer Achse des Posenkonfigurationsraums (z. B. einer θ-Achse, die die Fahrzeugausrichtung darstellt) parallel bewertet werden. In mindestens einer Ausführungsform kann eine Trajektorie mindestens einen Abschnitt einer Wendung umfassen, die einen festen Wendungsradius hat. Wendungen, die den gleichen Wendungsradius und die gleiche Anfangsausrichtung haben, können entlang der θ-Achse parallel verschoben und parallel verarbeitet werden, da sie parallelverschobene Kopien voneinander sind, jedoch mit unterschiedlichen Ausgangspunkten (x, y). Ferner können Trajektorien mindestens auf der Basis von Verarbeitungsvariablen bewertet werden, die verwendet werden, um die Erreichbarkeit als Bitvektoren zu bewerten. Logische bitweise Operationen können von jedem Verarbeitungsthread durchgeführt werden, um die Propagation der Erreichbarkeit zu steuern und bedingte Verarbeitungen oder Verzweigungen zu vermeiden, sodass die Threads große Vektoroperationen effektiv synchron durchführen können. Die offenbarten Ansätze können ein Parallelitätsreduktionsmuster verwenden, um Abhängigkeiten zu berücksichtigen, die bei der Bewertung der Erreichbarkeit zwischen Abschnitten einer Trajektorie bestehen können, und die Parallelverarbeitung der Abschnitte zu ermöglichen.In contrast to traditional approaches such as those described above, the disclosed approaches can be used to determine a path through the pose configuration space in a dense pose configuration space by quickly exploring paths (e.g. all paths) in parallel. Trajectories of poses in pose configuration space may be evaluated in parallel based at least on a parallel translation of the trajectories along at least one axis of the pose configuration space (e.g., a θ-axis representing vehicle orientation). In at least one embodiment, a trajectory may include at least a portion of a turn that has a fixed turning radius. Twists that have the same turning radius and initial orientation can be translated along the θ-axis and processed in parallel since they are translated copies of each other, but with different starting points (x,y). Furthermore, trajectories can be evaluated at least on the basis of processing variables used to evaluate reachability as bit vectors. Bitwise logical operations can be performed by each processing thread to control reachability propagation and avoid conditional processing or branches, allowing the threads to effectively perform large vector operations synchronously. The disclosed approaches may use a parallelism reduction pattern to account for dependencies that may exist between sections of a trajectory when assessing reachability and to allow parallel processing of the sections.

Figurenlistecharacter list

Die vorliegenden Systeme und Verfahren zur Parallelverarbeitung einer zum Einparken geeigneten Fahrzeug-Wegplanung werden im Folgenden Bezug nehmend auf die beigefügten Zeichnungen im Detail beschrieben, wobei:

  • 1A eine Darstellung eines beispielhaften Wegplaners gemäß Ausführungsformen der vorliegenden Erfindung ist;
  • 1B eine Darstellung ist, die zusätzliche Elemente zeigt, die gemäß Ausführungsformen der vorliegenden Erfindung im Wegplaner von 1A enthalten sein können;
  • 2 eine Darstellung ist, die einen beispielhaften Posenkonfigurationsraum zeigt, der gemäß Ausführungsformen der vorliegenden Erfindung verwendet werden kann, um Fahrzeugposen zu modellieren;
  • 3 ein beispielhaftes Bewegungsmodell zeigt, das gemäß Ausführungsformen der vorliegenden Erfindung verwendet werden kann, um Trajektorien des Fahrzeugs durch den Posenkonfigurationsraum zu definieren;
  • 4 eine Darstellung eines beispielhaften Belegungsraums ist, der gemäß Ausführungsformen der vorliegenden Erfindung die Belegung von Posen in einem Posenkonfigurationsraum erfasst;
  • 5 beispielhafte Wendungen verschiedener Wendungstypen zeigt, die gemäß Ausführungsformen der vorliegenden Erfindung in einem Posenkonfigurationsraum bewertet werden können;
  • 6A einen beispielhaften „Korkenzieher“ einer Wendung zeigt, der gemäß Ausführungsformen der vorliegenden Erfindung in einem Posenkonfigurationsraum beschrieben wird;
  • 6B den beispielhaften Korkenzieher der Wendung von 6A zusammen mit einen im Posenkonfigurationsraum beschriebenen Korkenzieher einer anderen Wendung zeigt, die gemäß Ausführungsformen der vorliegenden Erfindung eine parallelverschobene Kopie der ersten Wendung ist;
  • 6C beispielhafte verschobene Trajektorien zeigt, die gemäß Ausführungsformen der vorliegenden Erfindung durch Parallelverschiebung der Korkenzieher von 6B gebildet wurden;
  • 7 veranschaulicht, wie geradlinige Fahrwege konzeptionell auf einen Posenkonfigurationsraum gemäß Ausführungsformen der vorliegenden Erfindung abgebildet werden können;
  • 8 einen beispielhaften Berechnungsflussgraphen zeigt, der gemäß Ausführungsformen der vorliegenden Erfindung zur Verarbeitung von Wendungen verwendet werden kann, wobei die Erreichbarkeit mit einem Binärwert kodiert ist;
  • 9 einen beispielhaften Berechnungsflussgraphen zeigt, der gemäß Ausführungsformen der vorliegenden Erfindung zur Verarbeitung von Wendungen verwendet werden kann, wobei die Erreichbarkeit mit einem nicht binären Wert kodiert ist;
  • 10 ein Ablaufplan ist, der ein Verfahren gemäß Ausführungsformen der vorliegenden Erfindung zur Bestimmung verschobener Posen eines Posenkonfigurationsraums zeigt, um einen Weg durch den Posenkonfigurationsraum zu bestimmen;
  • 11 ein Ablaufplan ist, der ein Verfahren 1100 gemäß Ausführungsformen der vorliegenden Erfindung zur Parallelverschiebung der Trajektorien von Posen in einem Posenkonfigurationsraum zu verschobenen Trajektorien zeigt, um einen Weg durch den Posenkonfigurationsraum zu bestimmen;
  • 12 ein Ablaufplan ist, der ein Verfahren 1200 gemäß Ausführungsformen der vorliegenden Erfindung zur parallelen Bewertung der Erreichbarkeit von Abschnitten einer Trajektorie zeigt.
  • 13A eine Darstellung eines beispielhaften autonomen Fahrzeugs gemäß Ausführungsformen der vorliegenden Erfindung ist;
  • 13B ein Beispiel für Kamerapositionen und Sichtfelder für das beispielhafte autonome Fahrzeug von 13A gemäß Ausführungsformen der vorliegenden Erfindung ist;
  • 13C ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug von 13A gemäß Ausführungsformen der vorliegenden Erfindung ist;
  • 13D ein Systemdiagramm für die Kommunikation zwischen Cloud-basierten Servern und dem beispielhaften autonomen Fahrzeug von 13A gemäß Ausführungsformen der vorliegenden Erfindung ist;
  • 14 ein Blockdiagramm einer beispielhaften Computereinheit ist, die zur Implementierung von Ausführungsformen der vorliegenden Erfindung geeignet ist; und
  • 15 ein Blockdiagramm eines beispielhaften Datenzentrums ist, das zur Implementierung von Ausführungsformen der vorliegenden Erfindung geeignet ist.
The present systems and methods for parallel processing of a parking-ready vehicle path plan are described in detail below with reference to the accompanying drawings, wherein:
  • 1A Figure 12 is an illustration of an exemplary path planner in accordance with embodiments of the present invention;
  • 1B 12 is a diagram showing additional elements included in the path planner of FIG 1A may be included;
  • 2 Figure 12 is a diagram showing an example pose configuration space that may be used to model vehicle poses in accordance with embodiments of the present invention;
  • 3 Figure 12 shows an exemplary motion model that may be used to define trajectories of the vehicle through pose configuration space, in accordance with embodiments of the present invention;
  • 4 Figure 12 is an illustration of an exemplary occupancy space that captures the occupancy of poses in a pose configuration space, in accordance with embodiments of the present invention;
  • 5 FIG. 12 shows exemplary turns of different types of turns that can be evaluated in a pose configuration space according to embodiments of the present invention;
  • 6A Figure 12 shows an exemplary "corkscrew" of a twist described in a pose configuration space in accordance with embodiments of the present invention;
  • 6B the exemplary corkscrew of the phrase from 6A Figure 1 together with Figure 1 shows a corkscrew described in the pose configuration space of another twist that is a translated copy of the first twist in accordance with embodiments of the present invention;
  • 6C shows exemplary shifted trajectories obtained by parallel shifting the corkscrews of FIG 6B were formed;
  • 7 Figure 12 illustrates how straight-line travel paths can be conceptually mapped to a pose configuration space in accordance with embodiments of the present invention;
  • 8th Figure 12 shows an exemplary computation flow graph that may be used to process idioms where reachability is encoded with a binary value, according to embodiments of the present invention;
  • 9 Figure 12 shows an exemplary computation flow graph that may be used to process idioms where reachability is encoded with a non-binary value, according to embodiments of the present invention;
  • 10 Figure 12 is a flow chart showing a method according to embodiments of the present invention for determining translated poses of a pose configuration space to determine a path through the pose configuration space;
  • 11 12 is a flowchart showing a method 1100 according to embodiments of the present invention for translating the trajectories of poses in a pose configuration space to translated trajectories to determine a path through the pose configuration space;
  • 12 12 is a flowchart showing a method 1200 according to embodiments of the present invention for evaluating the reachability of sections of a trajectory in parallel.
  • 13A Figure 12 is an illustration of an exemplary autonomous vehicle in accordance with embodiments of the present invention;
  • 13B an example of camera positions and fields of view for the example autonomous vehicle of FIG 13A according to embodiments of the present invention;
  • 13C FIG. 14 is a block diagram of an example system architecture for the example autonomous vehicle of FIG 13A according to embodiments of the present invention;
  • 13D a system diagram for communication between cloud-based servers and the exemplary autonomous vehicle of FIG 13A according to embodiments of the present invention;
  • 14 Figure 12 is a block diagram of an exemplary computing device suitable for implementing embodiments of the present invention; and
  • 15 Figure 12 is a block diagram of an exemplary data center suitable for implementing embodiments of the present invention.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Es werden Systeme und Verfahren offenbart, die eine Parallelverarbeitung einer zum Einparken geeigneten Fahrzeug-Wegplanung betreffen. Auch wenn die vorliegende Erfindung in Bezug auf ein beispielhaftes autonomes Fahrzeug 1300 (hier auch als „Fahrzeug 1300“ oder „Ego-Fahrzeug 1300“ bezeichnet), das auf 13A-13D Bezug nehmend als Beispiel beschrieben wird, ist dies nicht einschränkend zu verstehen. Die Systeme und Verfahren, die hier beschrieben werden, sind zum Beispiel, ohne darauf beschränkt zu sein, auch in nicht-autonomen Fahrzeugen, halbautonomen Fahrzeugen (z. B. in adaptiven Fahrerassistenzsystemen (ADAS)), gelenkten und ungelenkten Robotern oder Roboterplattformen, Lagerfahrzeugen, Geländefahrzeugen, fliegenden Wasserfahrzeugen, Booten, Shuttles, Noteinsatzfahrzeugen, Motorrädern, elektrischen oder motorisierten Zweirädern, Flugzeugen, Baufahrzeugen, Unterwasserfahrzeugen, Drohnen und/oder anderen Fahrzeugtypen anwendbar. Auch wenn die vorliegende Erfindung in Bezug auf die Weg- oder Routenplanung für autonomes oder halbautonomes Fahren beschrieben wird, ist dies nicht einschränkend zu verstehen, und die Systeme und Verfahren, die hier beschrieben werden, können für die Wegplanung in Augmented Reality-, Virtual Reality-, Mixed Reality-, Robotik-, Sicherheits- und Überwachungsanwendungen, autonomen oder halbautonomen Maschinenanwendungen und/oder in anderen Technologiebereichen verwendet werden, in welchen die Weg- oder Routenplanung verwendet wird.Systems and methods are disclosed relating to parallel processing of parking-ready vehicle path planning. Although the present invention relates to an exemplary autonomous vehicle 1300 (also referred to herein as "vehicle 1300" or "ego vehicle 1300"), that up 13A-13D Described with reference to an example, this is not to be construed as limiting. The systems and methods described here are, for example, but not limited to, also in non-autonomous vehicles, semi-autonomous vehicles (e.g. in adaptive driver assistance systems (ADAS)), guided and unguided robots or robotic platforms, storage vehicles , ATVs, flying watercraft, boats, shuttles, emergency vehicles, motorcycles, electric or motorized two-wheelers, airplanes, construction vehicles, underwater vehicles, drones and/or other types of vehicles. Although the present invention is described in relation to path or route planning for autonomous or semi-autonomous driving, this is not to be understood in a limiting sense and the systems and methods described herein can be used for path planning in augmented reality, virtual reality -, mixed reality, robotics, security and surveillance applications, autonomous or semi-autonomous machine applications and/or in other technology areas in which path or route planning is used.

In einer Parkanwendung kann ein Ziel darin bestehen, ein Fahrzeug unter nicht-holonomen Einschränkungen in eine Parklücke zu manövrieren (z. B. ungefähr aus Sichtlinien-Entfernungen) und dabei eine Kollision mit Hindernissen (z. B. anderen Fahrzeugen, Säulen, Barrieren, Wänden, Parkhausstrukturen, Fußgängern usw.) zu vermeiden. Es werden Systeme und Verfahren offenbart, die einen Weg (z. B. eine Mehrpunktwendung, die zum Einparken oder Manövrieren in engen Räumen geeignet ist) eines Fahrzeugs von einer aktuellen Pose zu einer Zielpose in einem Posenkonfigurationsraum bestimmen können, in welchem Posen im Freiraum liegen oder durch ein Hindernis (z. B. ein auf der Basis von Fahrzeugsensordaten erkanntes Hindernis) blockiert sein können. Das heißt, von der aktuellen Pose zur Zielpose können mehrere Wege vorhanden sein, und jeder Weg kann aus verschiedenen Kombinationen von Wendungen (z. B. scharf nach links, leicht nach links, geradeaus, leicht nach rechts und scharf nach rechts) und Richtungen (z. B. vorwärts und rückwärts) bestehen. Zudem können entlang eines Wegs oder mehrerer Wege ein oder mehrere Hindernisse positioniert sein. Die offenbarten Ansätze können zur Bewertung der Wege verwendet werden, um auf der Basis eines oder mehrerer Kriterien (z. B. die kürzeste Wegstrecke, der schnellste Weg, geringste Anzahl von Wendungen usw.) einen empfohlenen Weg um Hindernisse herum und zur Zielpose zu identifizieren.In a parking application, a goal may be to maneuver a vehicle into a parking space under non-holonomic constraints (e.g., approximately from line-of-sight distances) while avoiding collisions with obstacles (e.g., other vehicles, pillars, barriers, walls, car park structures, pedestrians, etc.). Systems and methods are disclosed that can determine a path (e.g., a multipoint turn suitable for parking or maneuvering in tight spaces) of a vehicle from a current pose to a target pose in a pose configuration space in which open space poses reside or blocked by an obstacle (eg, an obstacle detected based on vehicle sensor data). That is, there can be multiple paths from the current pose to the target pose, and each path can consist of various combinations of turns (e.g., sharp left, slightly left, straight, slightly right, and sharp right) and directions ( e.g. forwards and backwards). In addition, one or more obstacles can be positioned along one or more paths. The disclosed approaches can be used to evaluate the paths to identify a recommended path around obstacles and to the target pose based on one or more criteria (e.g., shortest path, fastest path, fewest number of turns, etc.). .

Die offenbarten Ansätze können verwendet werden, um bei der Bestimmung eines empfohlenen Wegs von einer aktuellen Pose zu einer Zielpose (z. B. in einer Zielmenge von Posen) schnell Wege (z. B. alle Wege) in einem dichten Posenkonfigurationsraum parallel zu erkunden. Es kann ein iterativer Ansatz verwendet werden, bei dem in einer Iteration die Erreichbarkeit einer Menge von Trajektorien parallel bewertet werden kann und die Ergebnisse in einer nachfolgenden Iteration als Eingaben für die Bewertung der Erreichbarkeit der Menge von Trajektorien (oder einer anderen Menge von Trajektorien) dienen können (wodurch die erreichbaren Trajektorien effektiv um zusätzliche Trajektorien erweitert werden). Schlechte Weg-Empfehlungen können durch gründliche Untersuchung der Weg-Möglichkeiten vermieden werden. Auch wenn dieser Arbeitsaufwand bisher zu groß gewesen ist, um für dichte Posenkonfigurationsräume praktisch durchführbar zu sein, ermöglichen die offenbarten Ansätze eine Massenparallelität, die die Vorteile moderner Parallelverarbeitungsarchitekturen (z. B. mit Tausenden von Kernen und/oder Threads) nutzen kann. Dadurch können dichte Posenkonfigurationsräume wesentlich schneller, effizienter und/oder mit viel geringerer Granularität (z. B. höherer räumlicher Dichte und Winkeldichte) erkundet werden als bisher möglich.The disclosed approaches can be used to quickly explore paths (e.g., all paths) in a dense pose configuration space in parallel when determining a recommended path from a current pose to a target pose (e.g., in a target set of poses). An iterative approach can be used, where in one iteration the reachability of a set of trajectories can be evaluated in parallel and in a subsequent iteration the results serve as inputs for evaluating the reachability of the set of trajectories (or another set of trajectories). (thereby effectively adding additional trajectories to the achievable trajectories). Poor route recommendations can be avoided by thoroughly investigating the route options. Although this amount of work has so far been too great to be practical for dense pose configuration spaces, the disclosed approaches enable mass parallelism that can take advantage of modern parallel processing architectures (e.g., with thousands of cores and/or threads). This allows dense pose configuration spaces to be explored much faster, more efficiently, and/or with much lower granularity (e.g. higher spatial density and angular density) than previously possible.

In mindestens einer Ausführungsform kann ein Posenkonfigurationsraum Posen eines Fahrzeugs in einer Umgebung darstellen, wobei mindestens x- und y-Achsen für die Position des Fahrzeugs und eine θ-Achse für eine Ausrichtung (z. B. den Steuerkurswinkel) des Fahrzeugs verwendet werden. Massenparallelität kann mindestens zum Teil dadurch entstehen, dass Trajektorien von Posen in einem Posenkonfigurationsraum mindestens auf der Basis einer Parallelverschiebung der Trajektorien entlang mindestens einer Achse des Posenkonfigurationsraums (z. B. einer θ-Achse) parallel bewertet werden. Solch eine Anordnung ermöglicht es Trajektorien und/oder Abschnitten davon, zur Parallelverarbeitung unabhängig voneinander verarbeitet zu werden. Zum Beispiel können mindestens einige der Posen der Trajektorien verschoben werden (z. B. während der Fahrt oder im Voraus durch eine gemeinsame Parallelverschiebungsfunktion), um parallele Linien zu bilden, von denen ein oder mehrere Abschnitte unabhängig voneinander parallel durchlaufen werden können, um die Erreichbarkeit zu bewerten.In at least one embodiment, a pose configuration space may represent poses of a vehicle in an environment using at least x- and y-axes for the vehicle's position and a θ-axis for an orientation (e.g., heading angle) of the vehicle. Mass parallelism may arise, at least in part, by evaluating trajectories of poses in a pose configuration space in parallel based at least on a parallel translation of the trajectories along at least one axis of the pose configuration space (e.g., a θ-axis). Such an arrangement allows trajectories and/or portions thereof to be processed independently for parallel processing. For example, at least some of the poses of the trajectories can be shifted (e.g. during travel or in advance by a common parallel shift function) to form parallel lines, one or more sections of which can be independently traversed in parallel to improve accessibility to rate.

In einer oder mehreren Ausführungsformen kann eine Trajektorie mindestens einen Abschnitt einer Wendung umfassen, die einen festen Wendungsradius hat. Wenn eine Trajektorie eine Wendung ist, kann sie eine zyklische oder eine gerade Trajektorie (bei einem unendlichen Wendungsradius) bilden. Die offenbarten Ansätze können die Eigenschaft nutzen, dass jede Wendung (oder ein Teil davon) unter den Wendungen, die den gleichen Wendungsradius und die gleiche Anfangsorientierung haben (gleicher Wendungstyp), eine parallelverschobene Kopie jeder der anderen Wendungen (oder entsprechender Teile davon) sein kann, jedoch mit einem anderen Ausgangspunkt (x,y), was sich aus der Tatsache ergibt, dass das Fahrzeug sich unabhängig von seiner Anfangsposition gleich verhält. Daher können die Wendungen (oder Wendungsabschnitte) des Wendungstyps, die unterschiedlichen Trajektorien entsprechen, entlang der θ-Achse parallelverschoben und parallel verarbeitet werden.In one or more embodiments, a trajectory may include at least a portion of a turn that has a fixed turning radius. If a trajectory is a turn, it can form a cyclic trajectory or a straight trajectory (with an infinite turning radius). The disclosed approaches can exploit the property that each turn (or part of it) among the turns genes that have the same twist radius and initial orientation (same twist type) can be a translated copy of each of the other twists (or corresponding parts thereof), but with a different starting point (x,y), resulting from the fact that the vehicle behaves the same regardless of its initial position. Therefore, the twist-type twists (or twist portions) corresponding to different trajectories can be translated along the θ-axis and processed in parallel.

Ferner können die Variablen, die zur Bewertung der Erreichbarkeit verwendet werden, Bits umfassen, die Binärwerte darstellen (z. B. erreichbar oder nicht, Freiraum oder nicht), wobei jede Pose einem jeweiligen Bit einer Variablen entspricht. Dadurch können Trajektorien mindestens auf der Basis der Verarbeitung der Variablen als Bitvektoren bewertet werden. Zum Beispiel kann eine Trajektorie pro Bit eines Bitvektors parallel bewertet werden. Logische bitweise Operationen können von jedem Thread durchgeführt werden, um die Propagation der Erreichbarkeit zu steuern und bedingte Verarbeitungen oder Verzweigungen zu vermeiden, die der Parallelverarbeitung abträglich sind, sodass die Threads große Vektoroperationen effektiv synchron durchführen können. Daher kann dieser Ansatz für einen modernen Parallelprozessor geeignet sein, der von großen Vektoroperationen profitiert, die in einer „Simultaneous Instruction Multiple Thread“ (SIMT)-Weise gut im Speicher aufeinander abgestimmt sind.Further, the variables used to assess reachability may include bits representing binary values (e.g., reachable or not, space or not), with each pose corresponding to a respective bit of a variable. This allows trajectories to be evaluated at least on the basis of processing the variables as bit vectors. For example, a trajectory per bit of a bit vector can be evaluated in parallel. Bitwise logical operations can be performed by each thread to control reachability propagation and avoid conditional processing or branching that is detrimental to parallelism, allowing the threads to effectively perform large vector operations synchronously. Therefore, this approach may be appropriate for a modern parallel processor that benefits from large vector operations that are well matched in memory in a Simultaneous Instruction Multiple Thread (SIMT) fashion.

Die Offenbarung stellt auch Ansätze bereit, die verwendet werden können, um den Verarbeitungsaufwand, der zur Bewertung der Trajektorien genutzt wird, in Abschnitte der Trajektorien aufzuteilen, was die parallele Bewertung solcher Abschnitte ermöglicht, statt ganzer Trajektorien. Abschnitte einer Trajektorie können nicht voneinander unabhängig sein, da die Erreichbarkeit sich durch die gesamte Trajektorie auswirken kann (z. B. sowohl vorwärts als auch rückwärts bei einer zyklischen Trajektorie). Diese Abhängigkeit kann für die Parallelverarbeitung der Abschnitte ein Hindernis darstellen. Die offenbarten Ansätze können diese Abhängigkeit unter Verwendung eines Parallelitätsreduktionsmusters handhaben, das die (z. B. parallel berechneten) Ergebnisse von Abschnitten hierarchisch sammelt, einen kleinen Teil der Verarbeitung mit den gesammelten Ergebnissen (z. B. parallel) durchführt, und die Ergebnisse dann wieder an einzelne Abschnitte als Eingaben zur weiteren (z. B. parallelen) Verarbeitung zurückstreut.The disclosure also provides approaches that can be used to split the processing overhead used to evaluate the trajectories into sections of the trajectories, allowing for parallel evaluation of such sections rather than entire trajectories. Sections of a trajectory cannot be independent of each other, as reachability can affect through the entire trajectory (e.g. both forward and backward in a cyclic trajectory). This dependency can be an obstacle to parallel processing of the sections. The disclosed approaches may handle this dependency using a concurrency reduction scheme that hierarchically collects the results (e.g., computed in parallel) of sections, performs a small amount of processing on the collected results (e.g., in parallel), and then the results backscatters back to individual sections as inputs for further (e.g., parallel) processing.

Der vorliegende Wegplaner kann zusätzliche Parallelisierungsmöglichkeiten bieten. Zum Beispiel kann bei der Verarbeitung der Erreichbarkeit jeder Wendung jedes Wendungstyps die Wendung in Wendungsteilabschnitte unterteilt werden, und jeder Wendungsteilabschnitt kann halb-unabhängig durch einen separaten Thread verarbeitet werden. Die Möglichkeit, Wendungsteilabschnitte unabhängig voneinander zu bearbeiten, ermöglicht es unter anderem, die Arbeit auf mehrere Threads (falls vorhanden) zu verteilen. Da davon auszugehen ist, dass Wendungsteilabschnitte kürzer sind als ganze Wendungen, können die Speicherlatenzen reduziert werden, da es weniger wahrscheinlich ist, dass ein Thread (so lange) darauf warten muss, dass ein anderer Thread fertig ist.This path planner can offer additional parallelization options. For example, when processing the reachability of each phrasal of each phrasal type, the phrasal may be divided into phrasal subsections, and each phrasal subsection may be processed semi-independently by a separate thread. One of the benefits of being able to edit turns subsections independently is to spread the work across multiple threads (if any). Because portions of a turn are expected to be shorter than full turns, memory latencies can be reduced since one thread is less likely to have to wait (that long) for another thread to finish.

Nun auf 1A Bezug nehmend, ist 1A eine Darstellung eines beispielhaften Wegplaners 110 gemäß Ausführungsformen der vorliegenden Erfindung. Es versteht sich, dass diese und andere Anordnungen, die hier beschrieben werden, lediglich beispielhaft sind. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Funktionsgruppen usw.) können zusätzlich zu oder anstelle der gezeigten verwendet werden, und einige Elemente können auch ganz entfallen. Ferner sind viele der Elemente, die hier beschrieben werden, funktionale Einheiten, die als einzelne oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene Funktionen, die hier als von Einheiten ausgeführt beschrieben werden, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt.Now on 1A referring, is 1A 12 is an illustration of an exemplary path planner 110 in accordance with embodiments of the present invention. It should be understood that these and other arrangements described herein are exemplary only. Other arrangements and elements (e.g., engines, interfaces, functions, sequences, groups of functions, etc.) may be used in addition to or in place of those shown, and some elements may be omitted altogether. Furthermore, many of the elements described herein are functional units that can be implemented as single or distributed components, or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by devices may be performed by hardware, firmware, and/or software. For example, various functions may be performed by a processor executing instructions stored in memory.

In mindestens einer Ausführungsform kann der Wegplaner 110 einen Konfigurationsraum-Manager 136, einen Freiraum-Manager 120, einen Erreichbarkeitsmanager 122 und einen Wegbewerter 130 umfassen. Der Konfigurationsraum-Manager 136 kann einen Posenkonfigurationsraum 112 verwalten, der Posen (z. B. die Posen 114, 116 und 117) darstellt, die Positionen und Ausrichtungen eines Fahrzeugs (oder eines anderen Objekts) in einer Umgebung (z. B. auf einem Parkplatz) umfassen.In at least one embodiment, the path planner 110 may include a configuration space manager 136 , a free space manager 120 , a reachability manager 122 , and a path assessor 130 . Configuration space manager 136 may manage a pose configuration space 112 representing poses (e.g., poses 114, 116, and 117) representing positions and orientations of a vehicle (or other object) in an environment (e.g., on a parking lot).

Der Freiraum-Manager 120 und der Erreichbarkeitsmanager 122 können den Posenkonfigurationsraum 112 verarbeiten, um einen oder mehrere Wege zum Manövrieren von einer aktuellen Pose C zu einer Zielpose T (oder allgemein zwischen zwei beliebigen Posen) im Posenkonfigurationsraum 112 zu bestimmen. Zum Beispiel kann der Freiraum-Manager 120 eine Kollisionsprüfung das Fahrzeugs mit Objekten 124 in der Umgebung vornehmen, um einen oder mehrere Belegungsräume 118 zu bestimmen, die erfassen können, welche Posen blockiert oder belegt sind (z. B. die Pose 116 und die Pose 118) und welche Posen frei oder unbelegt sind (z. B. die Pose 114). Der Erreichbarkeitsmanager 122 kann mindestens Abschnitte von Trajektorien (z. B. der Trajektorien 126 und 128) von Posen analysieren, die das Fahrzeug im Posenkonfigurationsraum 112 durchlaufen kann, um einen oder mehrere Erreichbarkeitsräume 102 (auch als Kostenraum bezeichnet) zu bestimmen, die erfassen können, welche Posen im Posenkonfigurationsraum 112 durch die Trajektorien erreichbar sind, und/oder die Kosten für das Erreichen dieser Posen. Der Wegbewerter 130 kann mindestens auf der Basis der Bewertung durch den Erreichbarkeitsmanager 122 einen oder mehrere empfohlene oder potenzielle Wege für das Fahrzeug identifizieren. Zum Beispiel kann der Wegbewerter 130 die Wege oder Multisegment-Trajektorien (z. B. die Wege 132 und 134) anhand eines oder mehrerer Kriterien (z. B. Wegstrecke, Anzahl der Wendungen, Anzahl der Gangwechsel, Kosten, Erreichbarkeit usw.) identifizieren und/oder bewerten.The clearance manager 120 and the reachability manager 122 may process the pose configuration space 112 to determine one or more ways to maneuver from a current pose C to a target pose T (or generally between any two poses) in the pose configuration space 112 . For example, the clearance manager 120 can collision check the vehicle with objects 124 in the environment to determine one or more occupancy spaces 118 that can detect which poses are blocked or occupied (e.g., pose 116 and pose 118) and which poses are free or unoccupied (e.g., pose 114 ). The reachability manager 122 may analyze at least portions of trajectories (eg, trajectories 126 and 128) of poses that the vehicle may traverse in the pose configuration space 112 to determine one or more reachability spaces 102 (also referred to as a cost space) that may capture , which poses in the pose configuration space 112 are reachable by the trajectories, and/or the cost of reaching those poses. The path estimator 130 may identify one or more recommended or potential paths for the vehicle based at least on the evaluation by the accessibility manager 122 . For example, the path estimator 130 may identify the paths or multi-segment trajectories (e.g., paths 132 and 134) based on one or more criteria (e.g., travel distance, number of turns, number of gear changes, cost, accessibility, etc.). and/or evaluate.

Nun auf 1B Bezug nehmend, ist 1B eine Darstellung, die zusätzliche Elemente zeigt, die gemäß Ausführungsformen der vorliegenden Erfindung im Wegplaner 110 von 1A enthalten sein können. Der Konfigurationsraum-Manager 136 kann einen Parameter-Controller 138 umfassen, der Erreichbarkeits-Manager 122 kann einen Posen-Parallelverschieber 146 und einen Erreichbarkeitsbewerter 148 umfassen, der Freiraum-Manager 120 kann einen Objekt-Detektor 140 und einen Belegungsbewerter 142 umfassen, und der Wegbewerter 130 kann einen Trajektorienbewerter 150 und einen Rückverfolger 152 umfassen.Now on 1B referring, is 1B 12 is a diagram showing additional elements included in path planner 110 of FIG 1A can be included. The configuration space manager 136 may include a parameter controller 138, the reachability manager 122 may include a pose translator 146 and a reachability evaluator 148, the free space manager 120 may include an object detector 140 and an occupancy evaluator 142, and the path evaluator 130 may include a trajectory estimator 150 and a backtracker 152 .

In mindestens einer Ausführungsform kann der Konfigurationsraum-Manager 136 mit dem Posenkonfigurationsraum 112 zusammenhängende Operationen erleichtern, indem er den Parameter-Controller 138 verwendet, um Parameter des Posenkonfigurationsraums 112 zu konfigurieren. Der Posenkonfigurationsraum 112 kann Fahrzeugposen unter Verwendung eines Raums wie z. B. eines mehrdimensionalen Raums (z. B. eines 3D-Raums) darstellen. Das Fahrzeug kann sich zum Beispiel in einer Fahrumgebung (z. B. auf einem Parkplatz) befinden. Jede Pose im Posenkonfigurationsraum 112 kann mindestens eine Fahrzeugposition in der Fahrumgebung und eine Ausrichtung des Fahrzeugs an der Fahrzeugposition umfassen. In mindestens einer Ausführungsform können die Positionen in der Umgebung im Posenkonfigurationsraum 112 durch ein XY-Gitter (das z. B. eine Grundfläche darstellt) dargestellt werden, wie in 1A gezeigt. Die Ausrichtungen in der Umgebung können im Posenkonfigurationsraum 112 durch eine Winkelausrichtungskomponente θ (z. B. Drehung relativ zur x-Achse) dargestellt werden. In mindestens einer Ausführungsform kann der Posenkonfigurationsraum 112 als Pose P = (x, y, θ) parametrisiert sein.In at least one embodiment, configuration space manager 136 may facilitate operations related to pose configuration space 112 by using parameter controller 138 to configure pose configuration space 112 parameters. The pose configuration space 112 may pose vehicle poses using a space such as B. a multi-dimensional space (e.g. a 3D space). For example, the vehicle may be in a driving environment (eg, in a parking lot). Each pose in the pose configuration space 112 may include at least a vehicle position in the driving environment and an orientation of the vehicle to the vehicle position. In at least one embodiment, the positions in the environment in pose configuration space 112 may be represented by an XY grid (e.g., representing a ground plane), as shown in FIG 1A shown. The orientations in the environment may be represented in pose configuration space 112 by an angular orientation component θ (e.g., rotation relative to the x-axis). In at least one embodiment, the pose configuration space 112 may be parameterized as the pose P=(x,y,θ).

2 ist eine Darstellung, die einen beispielhaften Posenkonfigurationsraum zeigt, der gemäß Ausführungsformen der vorliegenden Erfindung zur Modellierung von Fahrzeugposen verwendet werden kann. 2 veranschaulicht ein Beispiel dafür, wie ein Gitter von Posen 210 - jeder Pose P = (x, y, θ)-, die im Posenkonfigurationsraum 112 gespeichert sind, Positionen 212 eines Fahrzeugs in der Fahrumgebung darstellen können. Zum Beispiel zeigt 2, dass jede θ-Scheibe 214 und 216 des Posenkonfigurationsraums 112 einen Satz von (x,y)-Werten in Kombination mit einer jeweiligen Winkelausrichtung θ darstellen kann. 2 12 is a diagram showing an example pose configuration space that may be used to model vehicle poses in accordance with embodiments of the present invention. 2 illustrates an example of how a grid of poses 210—each pose P=(x,y,θ)—stored in pose configuration space 112 may represent positions 212 of a vehicle in the driving environment. For example shows 2 that each θ-disk 214 and 216 of the pose configuration space 112 can represent a set of (x,y) values in combination with a respective angular orientation θ.

3 zeigt ein beispielhaftes Bewegungsmodell 300, das Ausführungsformen der vorliegenden Erfindung gemäß zur Definition von Trajektorien des Fahrzeugs durch den Posenkonfigurationsraum 112 verwendet werden kann. Die im Posenkonfigurationsraum 112 erfassten Posen können Punkten auf Trajektorien entsprechen, die durch das Bewegungsmodell 300 erfasst werden. Im gezeigten Beispiel umfasst das Bewegungsmodell 300 ein Ackermann-Bewegungsmodell. Nach dem Bewegungsmodell 300 kann eine Wendung als eine kreisförmige Karosseriebewegung 310 fortschreiten, wobei ein Mittelpunkt 312 der Wendung in einem Abstand 316 von der Mitte 318 einer Hinterradachse axial mit einer Hinterradachse 314 des Fahrzeugs ausgerichtet ist. Wie in 3 gezeigt, kann die Mitte 318 der Hinterradachse den x, y-Koordinaten einer Pose im Posenkonfigurationsraum 112 entsprechen. Der Abstand 316 entspricht dem Radius der Wendung, der durch einen Winkel der Vorderräder 320 und 322 des Fahrzeugs bestimmt werden kann. Wie in 3 gezeigt, kann der Winkel der Vorderräder 320 und 322 des Fahrzeugs der θ-Koordinate einer Pose im Posenkonfigurationsraum 112 entsprechen. 3 12 shows an exemplary motion model 300 that may be used to define trajectories of the vehicle through the pose configuration space 112 in accordance with embodiments of the present invention. The poses captured in pose configuration space 112 may correspond to points on trajectories captured by motion model 300 . In the example shown, the motion model 300 includes an Ackermann motion model. According to the motion model 300, a turn may proceed as a circular body motion 310 with a center 312 of the turn axially aligned with a rear wheel axle 314 of the vehicle at a distance 316 from the center 318 of a rear wheel axle. As in 3 As shown, the rear wheel axis center 318 may correspond to the x,y coordinates of a pose in pose configuration space 112 . The distance 316 corresponds to the radius of the turn, which can be determined by an angle of the front wheels 320 and 322 of the vehicle. As in 3 As shown, the angle of the vehicle's front wheels 320 and 322 may correspond to the θ coordinate of a pose in pose configuration space 112 .

Verschiedene Parameter können sich auf den Posenkonfigurationsraum 112 auswirken, wie z. B. die Größe der Umgebung, die durch den Posenkonfigurationsraum 112 dargestellt wird, und die räumliche Größe und Winkelgröße der Zellen. Daher kann der Konfigurationsraum-Manager 136 den Parameter-Controller 138 verwenden, um diese Einstellungen zu definieren. Zum Beispiel kann der Parameter-Controller 138 Abmessungen der zu bewertenden Umgebung (z. B. 30 m × 30 m) empfangen, und eine Zellgröße (z. B. 0,3 m), die sich auf die räumliche Dichte des Posenkonfigurationsraums 112 (z. B. die Anzahl der Zellen in der x-Achse und in der y-Achse) auswirken kann. Darüber hinaus kann dem Parameter-Controller 138 auch die Winkelgröße der Zellen (z. B. in Bogenmaß) oder die Anzahl der Winkelzellen angegeben werden, was sich auf die Winkeldichte des Posenkonfigurationsraums 112 (z. B. die Anzahl der Schichten in der θ-Achse) auswirken kann. Ein Posenkonfigurationsraum mit mehr Zellen in einem gegebenen Raum (z. B. aufgrund einer kleineren räumlichen Zellgröße und/oder winkelmäßigen Zellgröße in einem gegebenen Bereich) kann eine größere Anzahl von Posen und Wegen aufweisen, die für die Bewertung in Frage kommen, und eine höhere Genauigkeit beim Erreichen einer Pose ermöglichen.Various parameters can affect the pose configuration space 112, such as: B. the size of the environment represented by the pose configuration space 112 and the spatial size and angular size of the cells. Therefore, the configuration space manager 136 can use the parameter controller 138 to define these settings. For example, the parameter controller 138 may receive dimensions of the environment to be evaluated (e.g. 30m x 30m) and a cell size (e.g. 0.3m) relating to the spatial density of the pose configuration space 112 ( eg the number of cells in the x-axis and in the y-axis). In addition, the parameter controller 138 may also be given the angular size of the cells (e.g., in radians) or the number of angular cells, which affects the angular density of the pose configuration space 112 (e.g., the number of layers in the θ- axis) can affect. A pose configuration space with more cells in a given space (e.g., due to a smaller spatial cell size and/or angular cell size in a given region) may have a larger number of poses and paths eligible for evaluation, and a higher one Allow for accuracy when reaching a pose.

In mindestens einer Ausführungsform kann zur Bestimmung von Wegen und/oder Mehrpunktwendungen, die für eine Umgebung spezifisch sind, die Belegung des Posenkonfigurationsraums 112 berechnet werden, z. B. unter Verwendung des Freiraum-Managers 120. Das heißt, der Freiraum-Manager 120 kann bestimmen, welche Posen im Posenkonfigurationsraum 112 als mindestens teilweise durch ein Hindernis belegt erkannt werden und welche Posen als offen oder frei erkannt werden. Der Freiraum-Manager 120 kann den Objektdetektor 140 verwenden, um Objekte, die Positionen in der Umgebung belegen oder behindern können, zu detektieren und/oder zu identifizieren. Der Freiraum-Manager 120 kann zusätzlich oder alternativ dazu von einem Objektdetektor 140, der außerhalb des Wegplaners 110 betrieben wird, Daten empfangen, die Objekte darstellen. Der Freiraum-Manager 120 kann den Belegungsbewerter 142 verwenden, um eine Kollisionsprüfung der Karosserie des Fahrzeugs mit den Objekten vorzunehmen. Eine gewisse Ausweitung der Karosserie des Fahrzeugs und/oder der Objekte kann verwendet werden, um eine Marge vorzusehen.In at least one embodiment, to determine paths and/or multipoint turns specific to an environment, the occupancy of the pose configuration space 112 may be calculated, e.g. e.g., using clearance manager 120. That is, clearance manager 120 can determine which poses in pose configuration space 112 are recognized as at least partially occupied by an obstacle and which poses are recognized as open or vacant. Clearance manager 120 may use object detector 140 to detect and/or identify objects that may occupy or obstruct locations in the environment. The free space manager 120 may additionally or alternatively receive data representing objects from an object detector 140 operating external to the path planner 110 . The clearance manager 120 may use the occupancy evaluator 142 to perform a collision check of the body of the vehicle with the objects. Some expansion of the body of the vehicle and/or objects may be used to provide a margin.

Bei der Kollisionsprüfung können die Hindernis- und Fahrzeugkarosserie-Darstellungen, die als Eingabe für den Belegungsbewerter 142 verwendet werden, polygonal oder gerastert sein, und die Ausgabe kann gerastert sein. Die Kollisionsprüfung kann die Mitte der Hinterradachse des Fahrzeugs bei (x, y) mit einer Drehung θ relativ zur x-Achse verwenden. Nun auf 4 Bezug nehmend, ist 4 eine Darstellung eines beispielhaften Belegungsraums 412, der gemäß Ausführungsformen der vorliegenden Erfindung die Belegung von Posen in einem Posenkonfigurationsraum erfasst. Insbesondere zeigt 4 mindestens einen Teil des Belegungsraums 412, der wie der Posenkonfigurationsraum 112 parametrisiert sein kann (z. B. unter Verwendung von mindestens x, y, θ). Außerdem zeigt 4 ein beispielhaftes Hindernis 408, das erkannt werden kann, und stellt die Position des Hindernisses 408 in Bezug auf einen Satz von (x, y)-Werten 414 dar, der für alle θ's gleich sein kann. Darüber hinaus stellt 4 beispielhafte Datenwerte für eine θ-Ebene 416 und für eine θ-Ebene 418 dar, die einer jeweiligen Winkelausrichtung des Fahrzeugs entsprechen können.In collision testing, the obstacle and vehicle body representations used as input to occupancy evaluator 142 may be polygonal or rasterized, and the output may be rasterized. The collision check may use the center of the vehicle's rear axle at (x,y) with a rotation θ relative to the x-axis. Now on 4 referring, is 4 Figure 4 shows an example occupancy space 412 that captures the occupancy of poses in a pose configuration space, in accordance with embodiments of the present invention. In particular shows 4 at least a portion of the occupancy space 412, which may be parameterized like the pose configuration space 112 (e.g., using at least x, y, θ). Also shows 4 an example obstacle 408 that may be detected, and represents the position of the obstacle 408 with respect to a set of (x,y) values 414, which may be the same for all θ's. In addition, 4 12 depict exemplary data values for a θ-plane 416 and for a θ-plane 418 that may correspond to a respective angular orientation of the vehicle.

Als Beispiel, und ohne darauf beschränkt zu sein, kann der Belegungsraum 412 ein Bit pro Zelle speichern, wobei eine Eins darstellen kann, dass die entsprechende Pose frei ist, und eine Null darstellen kann, dass die entsprechende Pose nicht frei (z. B. belegt ist). Wie in 4 gezeigt, sind einige der Posen 420 für die θ-Ebene 416 auf eins gesetzt und sind aufgrund der Winkelausrichtung des Fahrzeugs frei. Die entsprechenden Posen 422 in der θ-Ebene 418 sind jedoch auf null gesetzt und potenziell behindert, da der Winkel des Fahrzeugs anders ist und sich potenziell mit dem Hindernis 408 überschneidet.By way of example and not limitation, the occupancy space 412 may store one bit per cell, where a one may represent that the corresponding pose is vacant and a zero may represent that the corresponding pose is not vacant (e.g., is occupied). As in 4 As shown, some of the poses 420 for the θ plane 416 are set to one and are free due to the angular orientation of the vehicle. However, the corresponding poses 422 in the θ plane 418 are set to zero and are potentially obstructed because the angle of the vehicle is different and potentially intersecting the obstruction 408 .

In mindestens einer Ausführungsform kann der Belegungsbewerter 142 die Belegung der Posen des Posenkonfigurationsraums 112 berechnen und die Ergebnisse parallel dazu in den Belegungsraum 412 schreiben. Zum Beispiel kann jede der Posen separat geprüft werden (z. B. durch einen Thread) und die Ergebnisse parallel dazu (z. B. durch den Thread) in den Belegungsraum 412 geschrieben werden. Die Daten des Belegungsraums 412 können vom Erreichbarkeitsmanager 122 für die nachfolgende Verarbeitung und zur Identifizierung und Bewertung von Wegen verwendet werden.In at least one embodiment, the occupancy evaluator 142 may calculate the occupancy of the poses of the pose configuration space 112 and write the results to the occupancy space 412 in parallel. For example, each of the poses can be checked separately (e.g., by a thread) and the results written to the allocation space 412 in parallel (e.g., by the thread). The occupancy space 412 data may be used by the reachability manager 122 for subsequent processing and for path identification and evaluation.

Mit den Daten vom Belegungsraum, die vom Freiraum-Manager 120 erhalten wurden, kann der Wegplaner 110 einen Algorithmus ausführen, um unter Berücksichtigung der nicht-holonomen Einschränkungen des Fahrzeugs einen empfohlenen Weg von einer aktuellen Pose (xc, yc, θc) zu einem Zielposensatz (xmin, ymin, θmin), (xmax, ymax, θmax) zu finden. Sowohl die aktuelle Pose als auch die Zielpose können dem Wegplaner 110 von einem oder mehreren anderen Bewegungsplanern als Eingaben bereitgestellt werden (z. B. bei Erkennung eines Parkplatzes, einer Position, die es einem Roboter erlaubt, eine Palette aufzunehmen, usw.).With the data from the occupancy space obtained from the clearance manager 120, the path planner 110 can run an algorithm to generate a recommended path from a current pose (x c , y c , θ c ) given the non-holonomic constraints of the vehicle. to find a target pose set (x min , y min , θ min ), (x max , y max , θ max ). Both the current pose and the target pose may be provided as inputs to the path planner 110 from one or more other motion planners (e.g., upon detection of a parking space, a position allowing a robot to pick up a pallet, etc.).

In mindestens einer Ausführungsform kann der Wegplaner 110 dazu konfiguriert sein, in Bezug auf die aktuelle oder Anfangspose im Posenkonfigurationsraum 112 eine oder mehrere vorgegebene Wendungs- oder Trajektorientypen zu bewerten, wobei ein Wendungs- oder Trajektorientyp einem gegebenen Wendungsradius und einer Richtung (z. B. vorwärts oder rückwärts) entsprechen kann. Zum Beispiel kann ein Trajektorientyp mehrere Trajektorien durch den Posenkonfigurationsraum 112 definieren, und der Erreichbarkeitsmanager 122 kann den Erreichbarkeitsbewerter 148 verwenden, um jede oder fast jede dieser Posen bezüglich einer Anfangspose oder aktuellen Pose zu bewerten. Hier werden als Beispiele hauptsächlich Trajektorien beschrieben, die mindestens Abschnitte von Wendungen sind, die offenbarten Ausführungsformen sind jedoch allgemeiner auf Trajektorien anderen Typs anwendbar, die zum Beispiel aus Wendungsprimitiven bestehen können.In at least one embodiment, the path planner 110 may be configured to evaluate one or more predetermined turn or trajectory types relative to the current or starting pose in the pose configuration space 112, where a turn or trajectory type corresponds to a given turn radius and direction (e.g., forward or backward). For example, a trajectory type may define multiple trajectories through the pose configuration space 112, and the achievable Accessibility manager 122 may use reachability evaluator 148 to evaluate any or almost any of these poses relative to an initial pose or current pose. Here, trajectories that are at least portions of turns are mainly described as examples, but the disclosed embodiments are more generally applicable to trajectories of other types, which may consist of, for example, turn primitives.

In mindestens einer Ausführungsform kann der Erreichbarkeitsbewerter 148 die Erreichbarkeit bestimmen, zum Beispiel im Hinblick darauf, ob die Posen in einer Trajektorie von der aktuellen oder Anfangspose C (oder einer Zielpose T oder einer anderen Pose, in einigen Ausführungsformen) des Fahrzeugs aus erreichbar sind. Es kann ein iterativer Ansatz verwendet werden, bei dem der Erreichbarkeitsmanager 122 die Erreichbarkeit einer Menge von Trajektorien (z. B. eines oder mehrerer Wendungstypen) bewertet und die Ergebnisse der Bewertung als Eingaben verwendet, um die Erreichbarkeit der Menge von Trajektorien (oder einer anderen Menge von Trajektorien) in einer nachfolgenden Iteration zu bewerten. Zum Beispiel kann eine Trajektorie einer nachfolgenden Iteration mindestens aufgrund dessen erreichbar sein, dass sie durch mindestens eine Trajektorie aus einer vorherigen Iteration erreichbar ist (z. B. damit verbunden ist), und dass die Ausgangspose durch diese mindestens eine Trajektorie aus der vorherigen Iteration erreichbar ist.In at least one embodiment, the reachability evaluator 148 may determine reachability, for example in terms of whether the poses in a trajectory are reachable from the vehicle's current or initial pose C (or a target pose T or other pose, in some embodiments). An iterative approach may be used, in which the reachability manager 122 assesses the reachability of a set of trajectories (e.g., one or more turn types) and uses the results of the assessment as inputs to determine the reachability of the set of trajectories (or another set of trajectories) in a subsequent iteration. For example, a trajectory of a subsequent iteration may be reachable by at least that it is reachable by (e.g., linked to) at least one trajectory from a previous iteration and that the starting pose is reachable by that at least one trajectory from the previous iteration is.

Der Erreichbarkeitsbewerter 148 kann die Erreichbarkeit für eine beliebige Anzahl von Trajektorienausführungen bewerten (z. B. bis zu einer Schwellenanzahl von Trajektorienausführungen und/oder bis eine Zielpose erreichbar ist). Zum Beispiel kann der Erreichbarkeitsmanager 122 die Erreichbarkeit bewerten, wenn das Fahrzeug im Posenkonfigurationsraum 112 eine Einzelwendung oder eine Mehrpunktwendung (z. B. bis zu einer bestimmten Anzahl von Wendungen, z. B. 8 Wendungen) ausführen würde. In mindestens einer Ausführungsform kann der Erreichbarkeitsbewerter 148 die Erreichbarkeit von Trajektorien auch im Hinblick darauf bewerten, ob deren Posen frei sind (z. B. anhand der Bestimmungen des Freiraum-Managers 120). Zum Beispiel kann ein Hindernis in einer Trajektorie die Erreichbarkeit aller nachfolgenden Posen in der Trajektorie automatisch ausschließen.The reachability assessor 148 may assess reachability for any number of trajectory executions (e.g., up to a threshold number of trajectory executions and/or until a target pose is reachable). For example, the reachability manager 122 may assess reachability if the vehicle in the pose configuration space 112 were to perform a single turn or a multipoint turn (e.g., up to a certain number of turns, e.g., 8 turns). In at least one embodiment, reachability assessor 148 may also assess the reachability of trajectories in terms of whether their poses are clear (e.g., based on clearance manager 120 determinations). For example, an obstacle in a trajectory can automatically make all subsequent poses in the trajectory inaccessible.

Der Erreichbarkeitsbewerter 148 kann in einigen Ausführungsformen auch Kosten bestimmen und/oder aufzeichnen, die mit dem Erreichen von Posen der Trajektorien verbunden sind, zum Beispiel bei der Bewertung der Erreichbarkeit der Posen. Wie hier beschrieben, kann als Erreichbarkeitsindikator ein Kostenwert verwendet werden, zum Beispiel mit einer 1 oder 0, die angibt, ob eine Position erreichbar ist oder nicht, einem maximalen Kostenwert, der „unerreichbar“ angibt, und einem anderen Kostenwert, der „erreichbar“ angibt, usw. In anderen Beispielen kann der Erreichbarkeitsmanager 122 Kostenwerte separat von den Erreichbarkeitsindikatoren speichern. In verschiedenen Ausführungsformen müssen ein oder mehrere Hindernisse nicht unbedingt dazu führen, dass eine Pose in einer Trajektorie als unerreichbar eingestuft wird, sondern können Kosten verursachen, die größer sind als der Kostenwert, wenn kein Hindernis vorhanden ist. Außerdem können verschiedene Hindernisse unterschiedliche Kostenwerte haben.The reachability assessor 148 may also, in some embodiments, determine and/or record costs associated with reaching poses of the trajectories, for example when evaluating the reachability of the poses. As described here, a cost value can be used as the reachability indicator, for example with a 1 or 0 indicating whether a position is reachable or not, a maximum cost value indicating "unreachable" and another cost value indicating "reachable". indicates, etc. In other examples, the availability manager 122 may store cost values separately from the availability indicators. In various embodiments, one or more obstacles may not necessarily result in a pose being classified as unreachable in a trajectory, but may incur a cost greater than the cost value if no obstacle is present. Also, different obstacles can have different cost values.

Wie hier beschrieben, können eine oder mehrere der Trajektorien, die mit einer Pose im Posenkonfigurationsraum 112 verbunden sind, eine Wendung sein, und jede „Wendung“ kann beinhalten, dass das Fahrzeug sich über eine beliebige Wegstrecke vorwärts oder rückwärts bewegt, während das Lenkrad feststehend bleibt (wodurch der Wendungsradius beibehalten wird). 5 veranschaulicht Beispiele für Wendungen verschiedener Wendungstypen, die im Posenkonfigurationsraum 112 bewertet werden können, darunter eine scharfe Linkswendung 510, eine leichte Linkswendung 512, eine Gerade 514 (θ = 0), eine leichte Rechtswendung 516 und eine scharfe Rechtswendung 518. Jeder der verschiedenen Wendungstypen kann einen jeweiligen Wendungsradius haben, wobei Linkswendungen ein negatives (-) und Rechtswendungen ein positives (+) Vorzeichen tragen. Zum Beispiel kann der Radius für die scharfe Linkswendung 510 „-10 m“ sein, und der Radius für die leichte Linkswendung 512 kann „-20 m“ sein, während der Radius für die scharfe Rechtswendung 518 „10 m“ sein kann, und der Radius für die leichte Rechtswendung 516 „20 m“ sein kann.As described herein, one or more of the trajectories associated with a pose in pose configuration space 112 may be a turn, and each "turn" may involve the vehicle moving forward or backward any distance while the steering wheel is stationary remains (thereby maintaining the turning radius). 5 Figure 12 illustrates examples of turns of different types of turns that can be evaluated in pose configuration space 112, including a sharp left turn 510, a slight left turn 512, a straight 514 (θ=0), a slight right turn 516, and a sharp right turn 518. Each of the various turn types can have a respective turning radius, with left turns carrying a negative (-) and right turns carrying a positive (+) sign. For example, the radius for the sharp left turn 510 can be "-10 m" and the radius for the slight left turn 512 can be "-20 m", while the radius for the sharp right turn 518 can be "10 m" and the Radius for the slight right turn 516 can be "20 m".

In mindestens einer Ausführungsform verfolgt das Fahrzeug beim Durchlauf eines Wendungstyps die Trajektorie von Posen im Posenkonfigurationsraum 112, die durch Gleichung (1) definiert werden kann: P ( θ ) = ( x 0 + q Q  sin  θ , y 0 + q Q ( cos θ -1 ) , θ ) ,

Figure DE102022114521A1_0001
durch θ parametrisiert, wobei Q der Wendungsradius ist, q die Wendungsrichtung ist (z. B. +1 für rechts bei Vorwärtsfahrt oder -1 für links bei Vorwärtsfahrt), und (x0, y0) die Position ist, wenn θ null ist.In at least one embodiment, when traversing a turn type, the vehicle tracks the trajectory of poses in pose configuration space 112, which can be defined by Equation (1): P ( θ ) = ( x 0 + q Q sin θ , y 0 + q Q ( cos θ -1 ) , θ ) ,
Figure DE102022114521A1_0001
parametrized by θ, where Q is the turning radius, q is the turning direction (e.g. +1 for right when driving forward or -1 for left when driving forward), and (x 0 ,y 0 ) is the position when θ is zero .

Der Erreichbarkeitsbewerter 148 kann alle potenziellen Wendungskombinationen durchlaufen, einschließlich aller Variationen von Wendungstypen (z. B. erst vorwärts, dann rückwärts). Der Erreichbarkeitsmanager 122 kann einen Erreichbarkeitsraum 102 nach jeder Iteration der Erreichbarkeitsbewertung mit einer Angabe darüber aktualisieren, ob jede Pose im Posenkonfigurationsraum 112 in dieser speziellen Iteration erreichbar ist (z. B. erreichbar bis zurück zur Ausgangspose, ohne durch ein Hindernis blockiert zu sein) und/oder mit Kosten für das Erreichen der Pose. Der Durchlauf jeder Trajektorie bei jeder Iteration kann ein signifikantes Verarbeitungsvolumen darstellen und in manchen Fällen durch Parallelverarbeitung stark beschleunigt werden.The reachability evaluator 148 can iterate through all potential combinations of phrases, including all variations of phrase types (e.g., forward first, then backward). The reachability manager 122 may update a reachability space 102 after each iteration of the reachability score with an indication of whether each pose in the pose configuration space 112 is reachable in that particular iteration (e.g., reachable all the way back to the home pose without being blocked by an obstacle) and /or with a cost of reaching the pose. Running through each trajectory at each iteration can represent a significant amount of processing and in some cases can be greatly speeded up by parallel processing.

In mindestens einer Ausführungsform kann der Erreichbarkeitsbewerter 148 zur Parallelverarbeitung von Trajektorien, um die Erreichbarkeit der darin enthaltenen Posen zu bestimmen, disjunkte Trajektorien im Posenkonfigurationsraum 112 analysieren, was eine unabhängige Verarbeitung ermöglicht. Offenbarten Ausführungsformen gemäß können die disjunkten Trajektorien einen Satz Trajektorien eines gemeinsamen Trajektorien- oder Wendungstyps (z. B. Wendungsradius und Richtung) umfassen. Bei der Verarbeitung der Trajektorien oder von Abschnitten davon (z. B. durch einen jeweiligen Thread) kann der Posen-Parallelverschieber 146 des Erreichbarkeitsmanagers 122 dazu konfiguriert sein, verschobene Posen des Posenkonfigurationsraums 112 mindestens auf der Basis der Parallelverschiebung der Posen des Posenkonfigurationsraums 112 entlang mindestens einer Achse des Posenkonfigurationsraums 112 zu bestimmen, um die verschobenen Posen der disjunkten Trajektorien zu bestimmen. Die disjunkten Trajektorien (oder Abschnitte davon) können durch Parallelverarbeitung (z. B. durch einen jeweiligen Thread) bewertet werden, was dem Erreichbarkeitsbewerter 148 eine schnelle Bewertung der Erreichbarkeit der verschobenen Posen ermöglicht.In at least one embodiment, the reachability estimator 148 may analyze disjoint trajectories in the pose configuration space 112 to process trajectories in parallel to determine the reachability of the poses contained therein, allowing for independent processing. According to disclosed embodiments, the disjoint trajectories may include a set of trajectories of a common trajectory or turn type (e.g., turn radius and direction). In processing the trajectories or portions thereof (e.g., by a respective thread), the pose translator 146 of the reachability manager 122 may be configured to translate poses of the pose configuration space 112 based at least on the translation of the poses along the pose configuration space 112 at least of an axis of the pose configuration space 112 to determine the shifted poses of the disjoint trajectories. The disjoint trajectories (or portions thereof) may be evaluated by parallel processing (e.g., by a respective thread), allowing the reachability evaluator 148 to quickly assess the reachability of the shifted poses.

Beispiele für Ansätze, die vom Posen-Parallelverschieber 146 verwendet werden können, um die Parallelverschiebung der Posen des Posenkonfigurationsraums 112 durchzuführen, werden anhand von 6A-6B beschrieben. Nun auf 6A Bezug nehmend, ist 6A ein Beispiel für einen „Korkenzieher“ einer Wendung 610, der Ausführungsformen der vorliegenden Erfindung gemäß in einem Posenkonfigurationsraum 112 beschrieben wird. Wie gezeigt, kann die Wendung 610 konzeptionell auf einen Korkenzieher im Posenkonfigurationsraum 112 abgebildet werden, indem die durch Gleichung (1) definierte Trajektorie von Posen verfolgt wird. Das heißt, wenn eine Wendung durch den Raum fortschreitet (z. B. beim Verfolgen der durch Gleichung (1) definierten Posen), kann die Wendung von aktuellen (x, y)-Koordinaten zu den nächsten (x, y)-Koordinaten fortschreiten, während sie auch entlang der θ-Achse durch θ-Ebenen wie z. B. die θ-Ebene 616 fortschreitet. Mit anderen Worten, jede der x-, y- und θ-Koordinaten können sich im Verlauf der Wendung auf die in der in 6A gezeigte korkenzieherartige Weise ändern.Examples of approaches that may be used by the pose translator 146 to translate the poses of the pose configuration space 112 are provided with reference to FIG 6A-6B described. Now on 6A referring, is 6A an example of a "corkscrew" of a twist 610 described in a pose configuration space 112 according to embodiments of the present invention. As shown, the turn 610 can be conceptually mapped onto a corkscrew in the pose configuration space 112 by following the trajectory of poses defined by equation (1). That is, as a rotation progresses through space (e.g., in following the poses defined by Equation (1)), the rotation may progress from current (x,y) coordinates to the next (x,y) coordinates , while they are also along the θ-axis through θ-planes like e.g. B. the θ-plane 616 advances. In other words, each of the x, y, and θ coordinates may change as the turn progresses to those specified in the in 6A change in the corkscrew-like manner shown.

Im Posenkonfigurationsraum 112 kann jede Wendung, die den gleichen Wendungsradius und die gleiche Anfangsausrichtung hat (gleicher Wendungstyp), eine parallelverschobene Kopie jeder anderen Wendung sein, jedoch mit einem anderen Ausgangspunkt (x,y), was darauf zurückzuführen ist, dass das Fahrzeug sich unabhängig von seiner Anfangsposition gleich verhält. 6A zeigt zum Beispiel die Wendung 610, die einen festen Wendungsradius hat und an (x, y) -Koordinaten 614 in der θ- Ebene 616 beginnt. Jede der anderen Wendungen, die den gleichen Wendungsradius hat, jedoch an anderen (x, y)-Koordinaten in der θ-Ebene 616 beginnt, kann eine parallelverschobene Kopie der Wendung 610 im Posenkonfigurationsraum 112 sein. Zum Beispiel auf 6B Bezug nehmend, zeigt 6B ein Beispiel eines Korkenziehers der Wendung 610 von 6A zusammen mit einem Korkenzieher einer Wendung 612, die eine parallelverschobene Kopie der Wendung 618 ist, und der gemäß Ausführungsformen der vorliegenden Erfindung im Posenkonfigurationsraum 112 beschrieben wird. Wendungen, die den gleichen Wendungsradius haben, können eine Verschiebungsparallelität aufweisen, die durch den Posen-Parallelverschieber 146 für die Parallelverarbeitung genutzt werden kann. Auch wenn Wendungen beschrieben werden, können auch andere Arten von Trajektorien und/oder Abschnitte davon eine Verschiebungsparallelität aufweisen, die auf ähnliche Weise für die hier beschriebene Parallelverarbeitung genutzt werden kann.In pose configuration space 112, any turn that has the same turn radius and initial orientation (same turn type) can be a translated copy of every other turn, but with a different starting point (x,y), due to the vehicle moving independently behaves in the same way from its initial position. 6A For example, FIG. 6 shows turn 610, which has a fixed turning radius and begins at (x,y) coordinates 614 in θ-plane 616. Any of the other twists that have the same twist radius but start at different (x,y) coordinates in the θ-plane 616 may be a translated copy of the twist 610 in the pose configuration space 112 . For example on 6B Referring shows 6B an example of a corkscrew of turn 610 from 6A along with a corkscrew of a twist 612 that is a translated copy of twist 618 and that is described in pose configuration space 112 in accordance with embodiments of the present invention. Turns that have the same turning radius can have shift parallelism that can be exploited by the pose translator 146 for parallel processing. While turns are described, other types of trajectories and/or portions thereof may also exhibit displacement parallelism, which may similarly be exploited for the parallel processing described herein.

In mindestens einer Ausführungsform kann der Posen-Parallelverschieber 146 die Posen des Posenkonfigurationsraums 112 entlang mindestens einer Achse (z. B. der θ-Achse) parallel verschieben, und der Erreichbarkeitsbewerter 148 kann jede der Posen entlang der mindestens einen Achse parallel verarbeiten, um die Erreichbarkeit zu bewerten (z. B. mit einem Thread pro Wendung oder einem Abschnitt davon). Zum Beispiel kann die Parallelität von Wendungstypen aufgedeckt werden, indem der Posen-Parallelverschieber 146 eine Parallelverschiebung vornimmt, die den Satz von Korkenziehern im Posenkonfigurationsraum 112, die demselben Wendungsradius entsprechen, zu einem Bündel paralleler Linien entlang der θ-Achse macht. Die parallelen Linien können den Posenkonfigurationsraum 112 als disjunkte Trajektorien parallel durchlaufen, was deren unabhängige Verarbeitung ermöglicht.In at least one embodiment, the pose translator 146 can translate the poses of the pose configuration space 112 along at least one axis (e.g., the θ-axis), and the reachability evaluator 148 can process each of the poses in parallel along the at least one axis to convert the Assess reachability (e.g. with one thread per turn or a section of it). For example, the parallelism of turn types can be revealed by having the pose translator 146 perform a parallel translation that makes the set of corkscrews in the pose configuration space 112 that correspond to the same turn radius a bundle of parallel lines along the θ-axis. The parallel lines can traverse the pose configuration space 112 in parallel as disjoint trajectories, allowing them to be processed independently.

In mindestens einer Ausführungsform kann der Posen-Parallelverschieber 146 für einen gegebenen Wendungsradius und eine gegebene Richtung (einen Wendungstyp) eine Parallelverschiebung, wie durch Gleichung (2) definiert: t ( θ ) = ( t x ( θ ) , t y ( θ ) ) = ( q Q  sin θ , q Q ( cos θ -1 ) )

Figure DE102022114521A1_0002
als eine Funktion von θ durchführen und die Transformation, wie durch Gleichung (3) definiert: ( x , y , θ ) ( x t x ( θ ) , y t y ( θ ) , θ )
Figure DE102022114521A1_0003
auf den Posenkonfigurationsraum 112 anwenden (z. B. mit einem Warp). Dies kann auf eine Parallelverschiebung jeder konstanten θ-Ebene des Posenkonfigurationsraums 112 hinauslaufen.In at least one embodiment, for a given turn radius and direction (a turn type), the pose translator 146 can translate as defined by Equation (2): t ( θ ) = ( t x ( θ ) , t y ( θ ) ) = ( q Q sin θ , q Q ( cos θ -1 ) )
Figure DE102022114521A1_0002
as a function of θ and perform the transformation as defined by equation (3): ( x , y , θ ) ( x t x ( θ ) , y t y ( θ ) , θ )
Figure DE102022114521A1_0003
apply to the pose configuration space 112 (e.g., with a warp). This may amount to a translation of each constant θ plane of pose configuration space 112 .

Die transformierte Version der Wendungstrajektorien eines Wendungstyps kann durch Gleichung (4) definiert werden: P ( θ ) = ( x 0 , y 0 , θ ) ,

Figure DE102022114521A1_0004
was einer Menge von Linien entspricht, die parallel zueinander und zur θ-Achse sind. Zum Beispiel auf 6C Bezug nehmend, zeigt 6C ein Beispiel für verschobene Trajektorien, die Ausführungsformen der vorliegenden Erfindung gemäß durch Parallelverschiebung der Korkenzieher von 6B gebildet wurden. Insbesondere stellt 6C konzeptionell den Posenkonfigurationsraum 112 zusammen mit den Wendungen 610 und 618 dar, wie sie durch den Posen-Parallelverschieber 146 parallelverschoben wurden. Wie gezeigt, sind die Wendungen 610 und 618 (z. B. mit dem gleichen Wendungsradius und der gleichen Richtung) nun parallele Linien entlang der θ-Achse und können als solche verarbeitet werden. Diese Transformation ist möglich, da die Trajektorien in Bezug auf die Parallelverschiebung entlang x und y in dem Sinne translationsinvariant sind, dass die Operationen des Folgens der Wendungskurve und der Parallelverschiebung kommutieren. Die Trajektorien des Wendungstyps können als parallelverschobene Kopien voneinander betrachtet werden und haben unabhängig von den (x0, y0)-Koordinaten des Ausgangspunkts die gleiche Form. Die Parallelität entlang der θ-Achse trägt zur Massenparallelität des Wegplaners 110 in einer Weise bei, die für einen modernen Parallelprozessor geeignet ist. Optional können die Daten transponiert werden, um die θ-Achse und die x--Achse zu vertauschen, sodass die Trajektorien stets parallel zur x-Achse (oder θ-Achse) sind.The transformed version of the turn trajectories of a turn type can be defined by equation (4): P ( θ ) = ( x 0 , y 0 , θ ) ,
Figure DE102022114521A1_0004
which corresponds to a set of lines parallel to each other and to the θ-axis. For example on 6C Referring shows 6C an example of shifted trajectories, the embodiments of the present invention according to parallel shifting of the corkscrew of FIG 6B were formed. In particular represents 6C 12 conceptually represents the pose configuration space 112 along with the twists 610 and 618 as translated by the pose translator 146. FIG. As shown, turns 610 and 618 (e.g., having the same turning radius and direction) are now parallel lines along the θ-axis and can be processed as such. This transformation is possible because the trajectories are translation-invariant with respect to the translation along x and y in the sense that the operations of turning curve following and translation are commutated. The turn-type trajectories can be viewed as translated copies of each other and have the same shape regardless of the (x 0 ,y 0 ) coordinates of the starting point. The parallelism along the θ-axis contributes to the mass parallelism of the path planner 110 in a way that is appropriate for a modern parallel processor. Optionally, the data can be transposed to swap the θ-axis and the x- axis so that the trajectories are always parallel to the x-axis (or θ-axis).

In einer oder mehreren Ausführungsformen kann der Posen-Parallelverschieber 146 den Posenkonfigurationsraum 112 (z. B. virtuell durch ein Zugriffsmuster oder tatsächlich durch Umherkopieren von Daten) für jeden Wendungstyp (z. B. mit dem gleichen Radius und der gleichen Richtung) so transformieren, dass die Wendungskurven dieses Wendungstyps die parallelen Linien bilden. Der Erreichbarkeitsbewerter 148 und/oder andere Systemkomponenten können dann jede der Linien parallel durchlaufen. Die Verarbeitung kann parallel zur θ-Achse entlang jeder der parallelen Linien erfolgen, die Gleichung (5) entsprechend durch (x0, y0) gewählt wird, während auf den ursprünglichen Posenkonfigurationsraum zugegriffen wird: ( x 0 + t x ( θ ) , y 0 + t y ( θ ) , θ ) ,

Figure DE102022114521A1_0005
was durch das Inverse der oben definierten Transformation gegeben ist. Diese Transformation kann leicht invertierbar und daher bijektiv sein. Es kann wünschenswert sein, dass diese Bijektivität bei Verwendung einer diskretisierten Implementierung der Transformation erhalten bleibt. Zum Beispiel kann durch eine bijektive Transformation eine komplette parallele Trennung zwischen Threads, die einzelne Trajektorien (oder Abschnitte davon) verarbeiten, beibehalten werden, ohne dass auf atomare Operationen zurückgegriffen werden muss oder Wettlauf-Bedingungen für das Lesen oder Schreiben zu befürchten sind. Dies kann auch die Fähigkeit für jede Zelle im diskretisierten Posenkonfigurationsraum verbessern, bei der Verarbeitung eines Wendungstyps von einem der Threads bedient zu werden. Die Bijektivität kann zum Beispiel erreicht werden, indem t(θ) in jeder konstanten θ-Ebene auf gleiche Weise quantisiert wird. Die vom Posen-Parallelverschieber 246 durchgeführte Transformation des Posenkonfigurationsraums 112 kann dann, als Bild betrachtet, eine Parallelverschiebung jeder konstanten θ-Ebene um eine ganzzahlige Anzahl von Pixeln sein. Dies ist für parallele Implementierungen ideal, da der verschobene Speicherzugriff während der Verarbeitung erfolgen kann, wodurch der Speicherzugriff, der ein limitierender Faktor sein kann, reduziert wird. Zusätzlich kann die Differenz in Parallelverschiebungen aufeinanderfolgender Ebenen reduziert werden (z. B. um nicht mehr als ein Pixel oder einen anderen Schwellenwert), um große Sprünge entlang der diskretisierten Trajektorienverarbeitung zu vermeiden. Dies kann durch eine ausreichende Winkelauflösung des Posenkonfigurationsraums 112 erreicht werden.In one or more embodiments, the pose translator 146 may transform the pose configuration space 112 (e.g., virtually by an access pattern or actually by copying data around) for each turn type (e.g., having the same radius and direction) so that the turning curves of this type of turning form the parallel lines. The reachability assessor 148 and/or other system components can then traverse each of the lines in parallel. The processing can be done parallel to the θ-axis along each of the parallel lines chosen according to equation (5) by (x 0 ,y 0 ) while accessing the original pose configuration space: ( x 0 + t x ( θ ) , y 0 + t y ( θ ) , θ ) ,
Figure DE102022114521A1_0005
which is given by the inverse of the transformation defined above. This transformation can be easily invertible and therefore bijective. It may be desirable that this bijectivity is preserved when using a discretized implementation of the transform. For example, a bijective transformation can maintain complete parallel separation between threads processing individual trajectories (or portions thereof) without resorting to atomic operations or fear of read or write race conditions. This can also improve the ability for each cell in the discretized pose configuration space to be serviced by one of the threads when processing a turn type. Bijectivity can be achieved, for example, by quantizing t(θ) in each constant θ plane in the same way. The transformation of the pose configuration space 112 performed by the pose translator 246, viewed as an image, may then be a translator of each constant θ plane by an integer number of pixels. This is ideal for parallel implementations as the deferred memory access can occur during processing, reducing the memory access that can be a limiting factor. Additionally, the difference in parallel displacements of successive planes can be reduced (e.g., by no more than a pixel or other threshold) to avoid large jumps along the discretes to avoid oriented trajectory processing. This can be achieved by providing sufficient angular resolution of the pose configuration space 112 .

Bei der Erreichbarkeitsbewertung kann der Wegplaner 110 sowohl gekrümmte Wendungen als auch geradlinige Manöver (z. B. Wendungen mit einem unendlichem Wendungsradius) bewerten. Beim Durchlaufen einer Trajektorie von Posen entlang eines geraden Wegs können die Posen durch Gleichung (6) definiert werden: P ( u ) = ( x 0 + u  cos θ ,y 0 + u  sin θ , θ ) ,

Figure DE102022114521A1_0006
durch u parametrisiert, wobei θ der nun konstante Steuerkurswinkel ist und (x0, y0) die Ausgangsposition ist, wenn u null ist. Im Posenkonfigurationsraum 112 können die Trajektorien als Linien mit einem Winkel θ in jeder θ-Ebene dargestellt werden. Zum Beispiel stellt 7 Trajektorien 710 und 712 dar, die bei jeweiligen (x, y)-Koordinaten anfangen und beide dem Winkel θ, der einer θ-Ebene 714 zugeordnet ist, entsprechend ausgerichtet sind. Darüber hinaus stellt 7 Trajektorien 716 und 718 dar, die bei jeweiligen (x, y)-Koordinaten anfangen und beide einem anderen Winkel 0, der einer θ-Ebene 720 zugeordnet ist, entsprechend ausgerichtet sind.In the reachability assessment, the path planner 110 may assess both curved turns and straight-line maneuvers (e.g., turns with an infinite turning radius). Traversing a trajectory of poses along a straight path, the poses can be defined by equation (6): P ( and ) = ( x 0 + and cos θ y 0 + and sin θ , θ ) ,
Figure DE102022114521A1_0006
parametrized by u, where θ is the now constant heading angle and (x 0 ,y 0 ) is the home position when u is zero. In the pose configuration space 112, the trajectories can be represented as lines with an angle θ in any θ plane. For example puts 7 Illustrate trajectories 710 and 712 starting at respective (x,y) coordinates and both oriented according to the angle θ associated with a θ plane 714 . In addition, 7 trajectories 716 and 718 starting at respective (x,y) coordinates and both oriented according to a different angle θ associated with a θ plane 720. FIG.

Eine Transformation (z. B. durch den Posen-Parallelverschieber 146) von Geraden zu parallelen Linien, die mit einer der Koordinatenachsen ausgerichtet sind, kann auf verschiedene Weise erreicht werden. Zum Beispiel kann in mindestens einer Ausführungsform jede θ-Ebene um den Winkel - θ gedreht werden, und als kontinuierliche Transformation ist dieser Ansatz bijektiv. Zum Beispiel können Warps an Arbeit definiert werden, wobei jeder Warp jede konstante θ-Ebene unabhängig um einen Winkel - θ so um ihre Mitte dreht, dass alle Geraden parallel zur x-Achse verlaufen. Dieser Ansatz kann in einer GPU effizient sein, da die Warps in jeder konstanten θ-Ebene aus einer Bilddrehung bestehen, die mit der Interpolationsmethode „nearest“ erreicht werden kann (z. B., um die Integrität der Ganzzahlen im gewarpten Raum zu erhalten). Durch die Drehung können Ecken außerhalb des ursprünglichen Raums gedreht werden, was durch die Verwendung einer aufgefüllten Version des Raums berücksichtigt werden kann. Alle Zellen, die außerhalb des ursprünglichen Raums liegen, können wie bei Hindernissen oder hohen Kosten als unerreichbar und unzulässig behandelt werden.A transformation (e.g., by the pose translator 146) from straight lines to parallel lines aligned with one of the coordinate axes can be accomplished in a number of ways. For example, in at least one embodiment, each θ plane can be rotated by the angle -θ, and as a continuous transform, this approach is bijective. For example, warps of work can be defined, where each warp rotates each constant θ-plane independently by an angle −θ about its center such that all lines are parallel to the x-axis. This approach can be efficient in a GPU since the warps in each constant θ plane consist of an image rotation, which can be achieved using the "nearest" interpolation method (e.g. to preserve the integrity of the integers in the warped space) . Rotation allows corners to be rotated outside of the original space, which can be accommodated by using a padded version of the space. Any cells that are outside of the original space can be treated as unreachable and impermissible, as with obstacles or high costs.

Eine diskretisierte Bilddrehung kann nicht ohne weiteres eine Bijektivität der Transformation beibehalten, auch wenn eine bijektive Bilddrehung durch drei Koordinaten-Schertransformationen erreichbar ist. Alternativ dazu kann eine einzelne Schertransformation pro θ-Ebene angewandt werden, was weniger Diskretisierungsrauschen erzeugt und die Möglichkeit bietet, die Transformation während der Verarbeitung durch einfache Parallelverschiebung der Speicherzugriffsvektoroperationen durchzuführen. Wenn die Richtung der Linien beispielsweise näher zur x-Achsenrichtung als zur y-Achsenrichtung (|tan θ| ≤ 1) oder an einem anderen Schwellenwert liegt, kann der Posen-Parallelverschieber 146 die Trajektorien so scheren, dass sie parallel zur x-Achse oder andernfalls zur y-Achse werden. Im ersteren Fall (z. B. näher an der x-Achse) kann der Posen-Parallelverschieber 146 x0 = 0 einstellen, und im letzteren Fall (z. B. näher an der y-Achse) kann der Posen-Parallelverschieber 146 y0 = 0 einstellen und dennoch alle Linien berücksichtigen. Diese Operationen können die durch Gleichung (6) definierte Trajektorienfamilie ergeben: P ( u ) = { ( u  cos θ ,y 0 + u  sin θ , θ ) , | tan θ | 1 ( x 0 + u  cos θ , u  sin θ , θ ) , | tan θ | > 1 '

Figure DE102022114521A1_0007
die auch als Gleichung (7) geschrieben werden kann: { P ( x ) = ( x , y 0 + x  tan θ , θ ) . | tan θ | 1 P ( y ) = ( x 0 y  tan ( θ + π 2 ) , y , θ ) , | tan θ | > 1 '
Figure DE102022114521A1_0008
A discretized image rotation cannot easily maintain a bijectivity of the transform, even if a bijective image rotation is achievable by three coordinate shearing transforms. Alternatively, a single shear transform per θ-plane can be applied, which produces less discretization noise and offers the possibility to perform the transform on-the-fly by simply parallel-shifting the memory access vector operations. For example, if the direction of the lines is closer to the x-axis direction than the y-axis direction (|tan θ| ≤ 1) or some other threshold, the pose translator 146 can shear the trajectories to be parallel to the x-axis or otherwise become the y-axis. In the former case (eg, closer to the x-axis), the pose translator 146 can set x 0 = 0, and in the latter case (eg, closer to the y-axis), the pose translator 146 can set y Set 0 = 0 and still consider all lines. These operations can give the family of trajectories defined by equation (6): P ( and ) = { ( and cos θ y 0 + and sin θ , θ ) , | tan θ | 1 ( x 0 + and cos θ , and sin θ , θ ) , | tan θ | > 1 '
Figure DE102022114521A1_0007
which can also be written as equation (7): { P ( x ) = ( x , y 0 + x tan θ , θ ) . | tan θ | 1 P ( y ) = ( x 0 y tan ( θ + π 2 ) , y , θ ) , | tan θ | > 1 '
Figure DE102022114521A1_0008

Die bijektive Schertransformation kann dann durch Gleichung (8) definiert werden: ( x , y , θ ) { ( x , y x  tan θ , θ ) , | tan θ | 1 ( x + y  tan ( θ + π 2 ) , y , θ ) , | tan θ | > 1 '

Figure DE102022114521A1_0009
The bijective shear transformation can then be defined by equation (8): ( x , y , θ ) { ( x , y x tan θ , θ ) , | tan θ | 1 ( x + y tan ( θ + π 2 ) , y , θ ) , | tan θ | > 1 '
Figure DE102022114521A1_0009

Nach dieser Transformation können die Trajektorien die Form von Gleichung (9) annehmen: { P ( x ) = ( x , y 0 , θ ) | tan | 1 P ( y ) = ( x 0 , y , θ ) | tan | > 1

Figure DE102022114521A1_0010
was einem Satz von Linien entspricht, die entweder parallel zur x-Achse oder zur y-Achse sind.After this transformation, the trajectories can take the form of equation (9): { P ( x ) = ( x , y 0 , θ ) | tan | 1 P ( y ) = ( x 0 , y , θ ) | tan | > 1
Figure DE102022114521A1_0010
which corresponds to a set of lines parallel to either the x-axis or the y-axis.

Wie im Fall der gekrümmten Wendung kann der Erreichbarkeitsbewerter 148 die Verarbeitung entlang dieser Linien durchführen, während er Gleichung (10) gemäß auf den ursprünglichen Posenkonfigurationsraum zugreift: { ( x , y + x  tan θ , θ ) , | tan θ | 1 ( x y  tan ( θ + π 2 ) , y , θ ) , | tan θ | > 1 '

Figure DE102022114521A1_0011
was durch das Inverse der Schertransformation gegeben sein kann.As in the case of the curved turn, the reachability evaluator 148 can perform the processing along these lines while accessing the original pose configuration space according to equation (10): { ( x , y + x tan θ , θ ) , | tan θ | 1 ( x y tan ( θ + π 2 ) , y , θ ) , | tan θ | > 1 '
Figure DE102022114521A1_0011
which can be given by the inverse of the shear transformation.

Wie hier beschrieben, kann ein iterativer Ansatz verwendet werden, bei dem der Erreichbarkeitsmanager 122 die Erreichbarkeit einer Menge von Trajektorien (z. B. eines oder mehrerer Wendungstypen) bewertet und die Ergebnisse der Bewertung als Eingaben verwendet, um die Erreichbarkeit der Trajektorienmenge (oder eines anderen Trajektorienmenge) in einer nachfolgenden Iteration zu bewerten. Zu diesem Zweck kann der Erreichbarkeitsbewerter 148 verwendet werden, um zu bestimmen, ob eine Pose im Posenkonfigurationsraum 112 (z. B., wie durch den Posen-Parallelverschieber 146 transformiert) von einer aktuellen Position aus erreichbar ist, indem in einer Iteration eine oder mehrere Trajektorien verarbeitet werden und dann eine oder mehrere nachfolgende Iterationen (z. B. bis zu einer gegebenen maximalen Anzahl von Wendungen) durchgeführt werden, um zu bestimmen, ob die Pose in einer nachfolgenden Iteration erreichbar wird. Zum Beispiel kann der Erreichbarkeitsbewerter 148 bewerten, ob eine Pose erreichbar ist, indem er bestimmt, ob die Pose blockiert oder belegt ist (z. B. anhand des Belegungsraums 412) und in einer oder mehreren Trajektorien (z. B. 510, 512, 514, 516, 518 usw.) einer Iteration enthalten ist.As described herein, an iterative approach may be used in which the reachability manager 122 assesses the reachability of a set of trajectories (e.g., one or more turn types) and uses the results of the assessment as inputs to determine the reachability of the trajectory set (or one other trajectory set) in a subsequent iteration. To this end, the reachability evaluator 148 can be used to determine whether a pose in the pose configuration space 112 (e.g., as transformed by the pose translator 146) is reachable from a current position by, in one iteration, one or more Trajectories are processed and then one or more subsequent iterations (e.g. up to a given maximum number of turns) are performed to determine whether the pose becomes reachable in a subsequent iteration. For example, the reachability evaluator 148 can assess whether a pose is reachable by determining whether the pose is blocked or occupied (e.g., based on the occupancy space 412) and in one or more trajectories (e.g., 510, 512, 514, 516, 518, etc.) of an iteration.

In mindestens einer Ausführungsform kann der Erreichbarkeitsbewerter 148 bei einer aktuellen oder Anfangspose (xc, yc, θc) beginnen, wobei nur diese Pose als erreichbar markiert ist. In einer ersten Iteration kann der Erreichbarkeitsbewerter 148 einen oder mehrere Erreichbarkeitsräume 102 für die erste Iteration mit Anmerkungen versehen, um anzuzeigen (z. B. zu markieren), ob jede Pose von der aktuellen Pose aus mit den Trajektorien in der ersten Iteration erreichbar ist (z. B. entlang einer Wendungstrajektorie mindestens einer der Trajektorien, ohne von der aktuellen Pose aus durch ein Hindernis blockiert zu werden). Zum Beispiel kann der Erreichbarkeitsbewerter 148 die Erreichbarkeit für jeden Wendungstyp bewerten. Dies kann einen Erreichbarkeitsraum 102 ergeben, der nach der ersten Iteration einen Satz erreichbarer Posen angibt. In einer zweiten Iteration kann der Erreichbarkeitsbewerter 148 einen oder mehrere andere Erreichbarkeitsräume 102 (oder dieselben Erreichbarkeitsräume 120, in einigen Ausführungsformen) für die zweite Iteration mit Anmerkungen versehen, um anzuzeigen (z. B. zu markieren), ob jede Pose von der aktuellen Pose aus mit den Trajektorien in der zweiten Iteration erreichbar ist (z. B. für jeden Wendungstyp und/oder verschiedene Wendungstypen). Die Iterationen können dementsprechend fortgesetzt werden, bis der Erreichbarkeitsbewerter 148 eine maximale Anzahl von Iterationen (z. B. 8 Wendungen) erreicht hat, eine Zielpose entdeckt hat und/oder eine andere Endbedingung erfüllt ist. Der Wegbewerter 130 kann die mit Anmerkungen versehenen Erreichbarkeitsräume 102 verwenden, um zu ermitteln, welcher Weg, wenn überhaupt, auf der Basis einer Kostenfunktion (z. B. geringste Anzahl von Wendungen, kürzeste Wegstrecke oder andere Kostenbewertung) oder eines anderen Ansatzes empfohlen wird.In at least one embodiment, the reachability evaluator 148 may start at a current or initial pose (x c , y c , θ c ) with only that pose marked as reachable. In a first iteration, the reachability assessor 148 may annotate one or more first iteration reachability spaces 102 to indicate (e.g., mark) whether each pose is reachable from the current pose using the trajectories in the first iteration ( e.g., along a turn trajectory of at least one of the trajectories without being blocked by an obstacle from the current pose). For example, the reachability rater 148 can rate the reachability for each turn type. This can result in a reachability space 102 that indicates a set of reachable poses after the first iteration. In a second iteration, the reachability assessor 148 may annotate one or more other reachability spaces 102 (or the same reachability spaces 120, in some embodiments) for the second iteration to indicate (eg, mark) whether each pose differs from the current pose from is achievable with the trajectories in the second iteration (e.g. for each turn type and/or different turn types). Accordingly, the iterations may continue until the reachability evaluator 148 has reached a maximum number of iterations (e.g., 8 turns), has discovered a target pose, and/or has met some other end condition. The route evaluator 130 may use the annotated reachability spaces 102 to determine which route, if any, is recommended based on a cost function (e.g., least number of turns, shortest route, or other cost score) or some other approach.

Der Erreichbarkeitsbewerter 148 kann den Posenkonfigurationsraum 112 auf verschiedene Weise verarbeiten, wenn er eine Iteration durchläuft. In mindestens einer Ausführungsform kann der Erreichbarkeitsbewerter 148 für jeden Trajektorientyp den durch (x, y, θ) parametrisierten Belegungsraum 112 und einen separaten, ebenfalls durch (x, y , θ) parametrisierten Erreichbarkeitsraum 102 referenzieren (z. B. einen Erreichbarkeitsraum 102 für Vorwärtsfahrt scharf nach links, einen Erreichbarkeitsraum 102 für Rückwärtsfahrt scharf nach links, einen Erreichbarkeitsraum 102 für Vorwärtsfahrt geradeaus usw.). Zusätzlich kann jede Zelle, die einer Einzelpose (x, y, θ) entspricht, in einem entsprechenden Erreichbarkeitsraum 102 aktualisiert werden, wenn der Erreichbarkeitsbewerter 148 bewertet, ob die jeweilige Pose in der Iteration frei und erreichbar ist.The reachability evaluator 148 may process the pose configuration space 112 in a variety of ways as it iterates. In at least one embodiment, for each trajectory type, the reachability evaluator 148 can reference the occupancy space 112 parameterized by (x, y, θ) and a separate reachability space 102, also parameterized by (x, y, θ) (e.g., a reachability space 102 for forward travel sharp left, an accessibility space 102 for reverse travel sharp left, an accessibility space 102 for forward travel straight ahead, etc.). In addition, each cell corresponding to a single pose (x, y, θ) in a corresponding reachability space 102 may be updated as the reachability assessor 148 evaluates whether the respective pose in the iteration is free and reachable.

Nun auf 8 Bezug nehmend, zeigt 8 einen beispielhaften Berechnungsflussgraphen 800 gemäß Ausführungsformen der vorliegenden Erfindung, der zur Verarbeitung von Wendungen verwendet werden kann, wobei die Erreichbarkeit mit einem Binärwert kodiert ist. Der Berechnungsflussgraph 800 kann für Ausführungsformen geeignet sein, bei denen ein Binärwert verwendet wird, um zu speichern, ob eine Position erreichbar ist oder nicht. In einer oder mehreren Ausführungsformen kann der Erreichbarkeitsbewerter 148 bei jeder Iteration mit einem gemeinsam genutzten Erreichbarkeitsraum beginnen und jeden Wendungstyp parallel verarbeiten, um einen entsprechenden Erreichbarkeitsraum zu berechnen. Zum Beispiel kann der Erreichbarkeitsbewerter 148 bei der Iteration 802A mit einem Erreichbarkeitsraum 808A starten und einen Wendungstyp scharf nach links zur Erzeugung eines Erreichbarkeitsraums 810A, einen Wendungstyp scharf nach links zur Erzeugung eines Erreichbarkeitsraums 810A, einen Wendungstyp leicht nach links zur Erzeugung eines Erreichbarkeitsraums 812A, einen geraden Wendungstyp zur Erzeugung eines Erreichbarkeitsraums 814A, einen Wendungstyp leicht nach rechts zur Erzeugung eines Erreichbarkeitsraums 816A und einen Wendungstyp scharf nach rechts zur Erzeugung eines Erreichbarkeitsraums 818A parallel verarbeiten. Obwohl dies nicht dargestellt ist, können Wendungstypen sowohl für die Vorwärts- als auch für die Rückwärtsfahrt verarbeitet werden.Now on 8th Referring shows 8th Figure 8 shows an exemplary computation flow graph 800 that may be used to process phrases where reachability is encoded with a binary value, according to embodiments of the present invention. Calculation flow graph 800 may be suitable for embodiments where a binary value is used to store whether or not a position is reachable. In one or more embodiments, the reachability evaluator 148 may start with a shared reachability space at each iteration and process each phrase type in parallel to calculate a corresponding reachability space. For example, the reachability evaluator 148 may start at iteration 802A with a reachability space 808A and enter a sharp left turn type to create a reachability space 810A, a sharp left turn type to create a reachability space 810A, a slight left turn type to create a reachability space 812A process a straight turn type in parallel to create a reachability space 814A, a turn slightly right type to create a reachability space 816A, and a turn sharp right type to create a reachability space 818A. Although not shown, both forward and reverse turn types can be processed.

Bei jeder Iteration kann der Erreichbarkeitsbewerter 148 auch die Erreichbarkeitsräume für die Wendungstypen zusammenführen, um den gemeinsam genutzten Erreichbarkeitsraum für eine nachfolgende Iteration bereitzustellen. Zum Beispiel kann die Iteration 802A beinhalten, dass der Erreichbarkeitsbewerter 148 eine Zusammenführung 820A der Erreichbarkeitsräume 810A, 812a, 814A, 816A und 818A durchführt, um einen Erreichbarkeitsraum 808B als Eingabe für eine Iteration 802B zu generieren. In einer oder mehreren Ausführungsformen kann die Zusammenführung 820A eine logische ODER-Verknüpfung umfassen. Ein logisches ODER kann geeignet sein, um zu reflektieren, dass die Erreichbarkeitsräume verschiedene Wege zu bestimmten Zellen erfassen können, von denen jeder gültig sein kann. In mindestens einer Ausführungsform kann der gemeinsam genutzte Erreichbarkeitsraum in einem gemeinsam genutzten Speicher (z. B. einer GPU) gecacht werden, auf den jeder Thread Zugriff hat.At each iteration, the reachability evaluator 148 may also merge the reachability spaces for the phrase types to provide the shared reachability space for a subsequent iteration. For example, iteration 802A may include reachability evaluator 148 performing a merge 820A of reachability spaces 810A, 812a, 814A, 816A, and 818A to generate reachability space 808B as input to an iteration 802B. In one or more embodiments, the merge 820A may include a logical OR operation. A logical OR may be appropriate to reflect that the reachability spaces may cover different paths to particular cells, each of which may be valid. In at least one embodiment, the shared reachability space may be cached in shared memory (e.g., a GPU) that each thread has access to.

In einem Aspekt der vorliegenden Erfindung propagiert der Erreichbarkeitsbewerter 148 die Erreichbarkeit entlang einer gesamten Wendungstrajektorie, sodass jede Pose, die entlang der Wendungstrajektorie der erreichbaren Einzelpose liegt (z. B. schattierte Kästchen in 9) und nicht durch ein Hindernis von der erreichbaren Einzelpose getrennt wird, als erreichbar markiert wird. Um zu bestimmen, welche Pose(n) aus einer vorherigen Iteration erreichbar sind, durchläuft der Wegplaner jede einzelne Wendung, die diesen Wendungsradius und diese Richtung hat, und da die Parallelverschiebung angewandt wurde, kann dies parallel ausgeführt werden. Bei jeder Pose (x, y, θ) schaltet der Wegplaner die Erreichbarkeit aus, wenn (z. B. auf der Basis des Belegungsraums) ein Hindernis gefunden wird, und schaltet die Erreichbarkeit ein, wenn die Erreichbarkeit aus einer vorherigen Iteration gefunden wird.In one aspect of the present invention, reachability evaluator 148 propagates reachability along an entire turn trajectory such that each pose that lies along the turn trajectory of the reachable single pose (e.g., shaded boxes in 9 ) and is not separated from the reachable single pose by an obstacle, is marked as reachable. To determine which pose(s) are reachable from a previous iteration, the path planner iterates through each and every turn that has that turn radius and direction, and since the parallel translation has been applied, this can be done in parallel. At each pose (x, y, θ), the path planner turns reachability off when an obstacle is found (e.g., based on occupancy space) and turns reachability on when reachability from a previous iteration is found.

Dadurch kann der Erreichbarkeitsbewerter 148 beim Durchlaufen einer Iteration einen Erreichbarkeitsraum aus einer vorherigen Iteration in einen Erreichbarkeitsraum nach der Iteration umwandeln. In mindestens einer Ausführungsform kann der Erreichbarkeitsbewerter 148 eine Regel anwenden, die besagt, dass, wenn eine Pose auf einer Trajektorie (z. B. eine bestimmte Wendung eines Wendungstyps), die gerade verarbeitet wird, vorher erreichbar war (wie durch den Erreichbarkeitsraum angezeigt), alle Posen entlang der Trajektorie, die nicht durch ein Hindernis von einem der zuvor erreichbaren Punkte getrennt sind, erreichbar sind. Auf diese Weise kann die Erreichbarkeit sich entlang der Trajektorie propagieren, bis sie durch ein Hindernis gestoppt wird.This allows the reachability evaluator 148 to transform a reachability space from a previous iteration into a reachability space after the iteration when running through an iteration. In at least one embodiment, the reachability evaluator 148 may apply a rule stating that if a pose on a trajectory (e.g., a particular turn of a turn type) being processed was previously reachable (as indicated by the reachability space) , all poses along the trajectory that are not separated by an obstacle from any of the previously reachable points are reachable. In this way, reachability can propagate along the trajectory until it is stopped by an obstacle.

8 enthält Pseudocode 830, um zu veranschaulichen, wie ein Thread des Erreichbarkeitsbewerters 148 M Posen-Zellen einer Trajektorie mit einer Kernschleife durchlaufen kann, die die durch eine lokale Variable r dargestellte Erreichbarkeit für eine Posen-Zelle i ausschaltet, wenn der Thread ein Hindernis findet, wie durch ein Element einer Belegungsraum-Eingabe F dargestellt, und die Erreichbarkeit für die Pose-Zelle i einschaltet, wenn der Thread eine Erreichbarkeit aus einer vorherigen Iteration findet, wie durch eine Erreichbarkeitsraum-Eingabe Ri dargestellt, und dann die Erreichbarkeit r in eine Erreichbarkeitsraum-Ausgabe Ro ausschreibt. Wie hier beschrieben, kann der Posen-Parallelverschieber 146 verwendet werden, um die Posen zur Verarbeitung im Voraus oder während der Fahrt zu verschieben. 8th contains pseudocode 830 to illustrate how a thread of the reachability assessor 148 can traverse M pose cells of a trajectory with a kernel loop that turns off the reachability represented by a local variable r for a pose cell i when the thread encounters an obstacle, as represented by an element of a occupancy space entry F, and turns on reachability for pose cell i if the thread finds a reachability from a previous iteration, as represented by a reachability space entry Ri, and then reachability r into a reachability space -Output Ro writes out. As described herein, the pose translator 146 can be used to shift the poses for processing in advance or on the fly.

In einer oder mehreren Ausführungsformen können alle Variablen r, F, Ri, Ro als Bitvektoren verarbeitet werden. Wenn die Variablen beispielsweise als vorzeichenlose 32-Bit-Ganzzahlen ausgedrückt werden, können 32 Bit und damit 32 parallele Trajektorien als Bitvektoren parallel verarbeitet werden. Die Verarbeitung darf keine bedingte Verarbeitung oder Verzweigungen enthalten - nur eine logische UND-Verknüpfung, um die Propagierung zu stoppen, wenn der Freiraum endet, und eine logische ODER-Verknüpfung, um die Propagierung zu starten oder neu zu starten, wenn die Erreichbarkeit in der Eingabe aus der vorherigen Iteration angegeben ist. Zudem kann die Verarbeitung dieser Kernschleife parallel und genau synchronisiert zwischen vielen Threads ablaufen, wovon denen jeder für eine Trajektorie zuständig ist, sodass die Threads große Vektoroperationen effektiv synchronisiert durchführen.In one or more embodiments, all variables r, F, Ri, Ro can be processed as bit vectors. For example, if the variables are expressed as 32-bit unsigned integers, 32 bits and thus 32 parallel trajectories can be processed as bit vectors in parallel. The processing must not include any conditional processing or branching - just a logical AND to stop propagation when the free space ends and a logical OR to stop the Start or restart propagation when reachability is given in the input from the previous iteration. In addition, the processing of this core loop can be parallel and precisely synchronized between many threads, each responsible for a trajectory, so that the threads perform large vector operations effectively synchronized.

Daher kann dieser Ansatz für einen modernen Parallelprozessor geeignet sein, der von großen Vektoroperationen profitiert, die im Speicher in einer „Simultaneous Instruction Multiple Thread“ (SIMT)-Weise gut aufeinander abgestimmt sind, ähnlich wie „Simultaneous Instruction Multiple Data“ (SIMD), jedoch unterschiedlich. Beispielsweise können einige Parallelverarbeitungsarchitekturen eine Grundeinheit der Parallelverarbeitung wie z. B. einen Warp oder eine Wellenfront von 32 Threads aufweisen, die danach streben, zur Effizienzsteigerung gleichzeitig ausgeführt zu werden. Ein „Warp“ kann sich hier allgemeiner auf eine Grundeinheit der Parallelverarbeitung beziehen. Jeder Streaming-Multiprozessor kann eine oder mehrere Grundeinheiten gleichzeitig verarbeiten, und es können zahlreiche Multiprozessoren vorhanden sein. Ein Einzelthread kann 32 Trajektorien (z. B. Wendungen) als Bitvektor gleichzeitig verarbeiten, so dass jede Grundeinheit (z. B. Warp) 32x32=1024 Trajektorien parallel verarbeiten kann. Zudem können acht oder mehr Multiprozessoren vorhanden sein, von denen jeder viele Grundeinheiten gleichzeitig handhabt, um eine Parallelität von zehntausenden zu erreichen. Dadurch, dass es möglich ist, in jeder Iteration jede Trajektorie (z. B. Wendung) zu bewerten, ist der Wegplaner 110 in der Lage, die gesamte Arbeit durchzuführen, statt eine Heuristik anzuwenden, um hoffentlich einen vielversprechenden Weg einzuschlagen. Dadurch kann der Wegplaner 110 Empfehlungen vermeiden, die sich aus nicht anwendbaren Heuristiken ergeben, die versuchen, Operationen zuerst auf die beste Arbeit zu beschränken.Therefore, this approach may be appropriate for a modern parallel processor that benefits from large vector operations that are well coordinated in memory in a Simultaneous Instruction Multiple Thread (SIMT) manner, similar to Simultaneous Instruction Multiple Data (SIMD), however different. For example, some parallel processing architectures may use a basic unit of parallel processing such as B. have a warp or wavefront of 32 threads striving to run concurrently to increase efficiency. Here, a "warp" may more generally refer to a basic unit of parallel processing. Each streaming multiprocessor can process one or more basic units at a time, and there can be numerous multiprocessors. A single thread can process 32 trajectories (e.g. twists) as a bit vector at the same time, so each basic unit (e.g. warp) can process 32x32=1024 trajectories in parallel. In addition, there may be eight or more multiprocessors, each handling many basic units simultaneously to achieve tens of thousands of parallelism. By being able to evaluate each trajectory (e.g., turn) in each iteration, the path planner 110 is able to do all the work rather than apply a heuristic to hopefully pick a promising path. This allows the path planner 110 to avoid recommendations resulting from inapplicable heuristics that attempt to limit operations to the best work first.

Der Wegplaner 110 kann eine oder mehrere Iterationen durchlaufen, und der Wegbewerter 130 kann die Ergebnisse der Iteration(en) verwenden, um mindestens einen Weg zu identifizieren und/oder zu empfehlen, um das Fahrzeug zur Zielpose zu manövrieren. Zu diesem Zweck können die ausgegebenen Erreichbarkeitsräume von jeder Iteration beibehalten werden, um eine Rückverfolgung, wie hier beschrieben, zu unterstützen. Da die Erreichbarkeitsräume nur ein Bit pro Zelle benötigen, kann dies nur N bits pro Zelle im Posenkonfigurationsraum erfordern. Bei einer angemessenen Anzahl von Iterationen ist dies nicht mehr als das, was durch Darstellung der Räume durch eine 8-, 16- oder 32-Bit-Festkomma- oder -Gleitkommazahl verwendet worden wäre.The path planner 110 may go through one or more iterations, and the path estimator 130 may use the results of the iteration(s) to identify and/or recommend at least one path to maneuver the vehicle to the target pose. To this end, the reported reachability spaces of each iteration can be preserved to support backtracking as described herein. Since the reachability spaces only require one bit per cell, this can only require N bits per cell in the pose configuration space. With a reasonable number of iterations, this is no more than what would have been used by representing the spaces by an 8, 16, or 32 bit fixed or floating point number.

Um einen Weg zu identifizieren und/oder auszuwählen, kann der Wegbewerter 130 den Trajektorienbewerter 150 umfassen, der eine oder mehrere Kosten bewertet, die mit Trajektorien (z. B. Wendungen) verbunden sind, und es gibt viele Kostenfunktionen mit unterschiedlicher Komplexität, die anwendbar sind, um einen empfohlenen Weg zu identifizieren. Eine einfachere Kostenfunktion kann die Anzahl der Trajektorien (z. B. Wendungen) berücksichtigen, die erforderlich sind, um eine bestimmte Pose zu erreichen, und Wege, die die Pose in weniger Trajektorien erreichen, höher bewerten. Eine komplexere Kostenfunktion kann berücksichtigen, wie viele Ressourcen für die Verfolgung eines Wegs aufgewendet werden müssen. Zum Beispiel kann der Trajektorienbewerter 150 eine Kostenfunktion anwenden, die die zum Durchlauf einer Trajektorie benötigte Zeit modelliert, die eine Penalität für das Umschalten aus dem Vorwärtsgang in den Rückwärtsgang oder zurück enthalten kann und eine für den Durchlauf einer Trajektorie aufgewendete Zeit in Abhängigkeit von ihrer Wegstrecke bewertet. In einem noch komplexeren Beispiel kann ein Zustandsraum verwendet werden, indem die Wendungskrümmung und Vorzeichen (der zugrunde liegende Zustand kann die Lenkrad- und Straßenradstellung und der Gang sein) sowie die Geschwindigkeit hinzugefügt werden. Dies ermöglicht die Modellierung von Kosten, die anfallen, wenn beim Einlegen des Rückwärtsgangs bis zum Stillstand abgebremst werden muss oder große Änderungen in der Lenkradstellung erforderlich sind.To identify and/or select a path, the path estimator 130 may include the trajectory estimator 150, which evaluates one or more costs associated with trajectories (e.g., turns), and there are many cost functions of varying complexity that are applicable are to identify a recommended path. A simpler cost function may consider the number of trajectories (e.g. turns) required to reach a given pose and give higher priority to paths that reach the pose in fewer trajectories. A more complex cost function can take into account how many resources are required to follow a path. For example, the trajectory estimator 150 may apply a cost function that models the time taken to complete a trajectory, which may include a penalty for shifting from forward to reverse or back, and a time taken to complete a trajectory as a function of its travel distance rated. In an even more complex example, a state space can be used by adding the turning curvature and sign (the underlying state can be steering wheel and road wheel position and gear) and speed. This enables the modeling of costs incurred when engaging reverse gear by braking to a standstill or requiring large changes in steering wheel position.

Der Trajektorienbewerter 150 kann abhängig von den Zielen und der Anwendung des Wegplaners 110 verschiedene Kostenmodelle anwenden. Zum Beispiel kann ein Kostenmodell eine explizite Geschwindigkeitskomponente weglassen und stattdessen Kosten haben, die mindestens zum Teil von der Wegstrecke abhängig sind, die durch eine Wendung zurückgelegt wird, mit einer Penalität für die Änderung des Wendungstyps (einschließlich des Einlegens des Rückwärtsgangs), die vom Wendungstyp vor und nach der Änderung abhängig ist. Dieser Ansatz nähert sich dem Verständnis, dass Wendungen mit einer festen, niedrigen Geschwindigkeit durchfahren werden, die relativ schnell erreicht wird, und dass Wechsel zwischen Wendungstypen einen zusätzlichen Nachteil mit sich bringen, da langsamer gefahren werden muss, um das Lenkrad zu bewegen und/oder den Gang zu wechseln. Dieses Kostenmodell kann durch einen Erreichbarkeitsraum 102 in Form eines durch (x,y,θ) parametrisierten Kostenvolumens gehandhabt werden, das für jeden Wendungstyp (z. B. einschließlich Wendungsradius und Vorwärts-/Rückwärtsgang) die niedrigsten Kosten enthält, die aufgewendet werden müssen, um diesen Posenzustand mit dem entsprechenden Wendungstyp als letzte Wendung zu erreichen. Dieses Modell kann im Wesentlichen mit einem vierdimensionalen Zustandsraum arbeiten, in welchem die vierte Dimension die möglichen Wendungsradien mal die zwei Gänge enthält.The trajectory estimator 150 can apply different cost models depending on the goals and application of the path planner 110 . For example, a cost model may omit an explicit speed component and instead have costs that depend, at least in part, on the distance traveled by a turn, with a penalty for changing the type of turn (including engaging reverse gear) dependent on the type of turn before and after the change is dependent. This approach approaches the understanding that turns are negotiated at a fixed, low speed that is reached relatively quickly, and that switching between turn types carries an additional disadvantage of having to slow down to turn the steering wheel and/or to change gear. This cost model can be handled by a reachability space 102 in the form of a cost volume parameterized by (x,y,θ) containing for each type of turn (e.g. including turn radius and forward/reverse gear) the lowest cost to be expended, to reach that pose state with the appropriate twist type as the final twist. This model can essentially use a four-dimensional State space work in which the fourth dimension contains the possible turn radii times the two gears.

Der Wegplaner 110 kann die Aktualisierungsschritte durchlaufen, die eine Wendung auf einmal durchführen, um den Zustandsraum von der Berücksichtigung aller Wege bis zu n Wendungen auf n + 1 zu aktualisieren. Für jeden Wendungstyp, die für die (n + 1). te Wendung verwendet wird, kann der Trajektorienbewerter 150 mit einem der anderen Wendungstypen beginnen und zunächst die Kosten für den Übergang zahlen. Die kleinste dieser Möglichkeiten kann als die kostengünstigste betrachtet werden, wenn man bereit ist, von dieser Pose aus eine Wendung dieses Typs zu starten, und der Wegplaner 110 kann nur die effizienteste in Betracht ziehen. Dann kann der Wegplaner 110 die Wendung durchlaufen, um nach Beendigung der (n + 1). ten Wendung mit diesem Wendungstyp die niedrigsten Kosten zu erreichen. In einem Beispiel kann der Durchlauf von N Wendungen mit K Wendungsradien die Verarbeitung von 2NK Wendungen erfordern (z. B. unter der Annahme, dass der Rückwärtsgang einen separaten Verarbeitungsschritt erfordert). Daher kann der Trajektorienbewerter 150 vor jeder Wendung das Minimum für den Übergang zum Beginn der Wendung aus 2K Kostenvolumen ermitteln. In einem Aspekt der Offenbarung kann dieser Schritt für alle 2K Wendungstypen gleichzeitig durchgeführt werden, wobei das Lesen der 2K Volumen, das Berechnen der (2K)2 Übergänge, das Ermitteln der 2K Minima und das Zurückschreiben in die Volumen gleichzeitig erfolgen. Diese Verarbeitung aktualisiert durch Speicherzugriffe auf 4NK Volumen die Kosten vor der Wendung auf Kosten nach der Wendung für die nächste Wendung. Jede Wendung kann die Kosten auch zurücklesen, den Freiraum lesen und die neuen Kosten ausschreiben, was 6NK zusätzliche Speicherzugriffe auf das Volumen zur Folge hat. Dieser Ansatz kann zu einer Gesamtzahl von 10 NK Volumenzugriffen führen.The path planner 110 can go through the update steps that perform one turn at a time to update the state space from considering all paths up to n turns to n+1. For each twist type, for the (n+1). te turn is used, the trajectory estimator 150 can start with one of the other turn types and pay the cost of the transition first. The smallest of these possibilities can be considered the least expensive if one is willing to start a turn of this type from this pose, and the path planner 110 can only consider the most efficient one. Then the path planner 110 can traverse the turn to, after completion of the (n+1). th turn to achieve the lowest cost with this turn type. In one example, traversing N turns with K turn radii may require the processing of 2NK turns (e.g., assuming reverse requires a separate processing step). Therefore, before each turn, the trajectory estimator 150 can determine the minimum for the transition to the beginning of the turn from 2K cost volume. In one aspect of the disclosure, this step can be performed for all 2K turn types simultaneously, reading the 2K volumes, computing the (2K) 2 transitions, finding the 2K minima, and writing back to the volumes at the same time. This processing updates the pre-turn cost to the post-turn cost for the next turn through memory accesses to 4NK volumes. Each turn can also read back the cost, read the free space, and write out the new cost, resulting in 6NK additional memory accesses to the volume. This approach can result in a total of 10 NK volume accesses.

Die Kostenfunktion kann weiter vereinfacht werden, indem zum Beispiel die Übergangskosten zwischen Wendungstypen unabhängig davon, welche Typen von Wendungen an dem Übergang beteiligt sind, gleich bewertet werden. Darüber hinaus kann das Kostenmodell voraussetzen, dass die Kosten des Durchfahrens einer Wendung im Vergleich zu den Übergangskosten vernachlässigbar sind. Bei diesem Ansatz können die Kosten auf der Basis der Anzahl der Wendungen berechnet werden. Auch wenn dieser Ansatz die Abläufe stark vereinfacht und einige Situationen nicht berücksichtigt (z. B. zwei kurze Wendungen mit einem Übergang, die weniger Zeit in Anspruch nehmen als eine lange Wendung, oder wenn der Übergang zwischen zwei Wendungen mit ähnlichem Radius im gleichen Gang schneller ist als eine große Änderung in der Lenkung oder ein Gangwechsel), kann dieses Kostenmodell dennoch eine praktikable Heuristik darstellen. Bei diesem einfacheren Modell kann anstelle eines vierdimensionalen Zustandsraums ein dreidimensionaler Zustandsraum verwendet werden. Ein einziges Zustandsvolumen kann nun festhalten, ob eine entsprechende Pose mit n Wendungen erreicht werden könnte oder nicht, was dem durch den Pseudocode 830 dargestellten Ansatz entspricht oder ähnelt. Bei diesem einfacheren Kostenmodell kann die Verarbeitung jeder Wendung aus einem gemeinsamen vorherigen Kostenvolumen ausgelesen werden, da die Übergangspenalität stets gezahlt wird und keine Notwendigkeit besteht, sich zu merken, welcher Wendungstyp der letzte war. Der Belegungsraum wird noch gelesen, und die neuen Kosten werden für den ersten Wendungstyp ausgeschrieben und durch logisches ODER mit den vorherigen Ergebnissen für die folgenden Wendungstypen kombiniert, was ein Lesen und ein Schreiben mit sich bringt. Dies entspricht einem Speicherzugriff auf insgesamt 8NK - 2N Volumen. Zudem kann das Kostenvolumen durch ein Einzelbit pro Zelle (erreichbar oder nicht) dargestellt werden, statt durch 8, 16 oder sogar 32 Bits, je nach Auflösung der Kostenfunktion. Die Verarbeitungsgeschwindigkeit vieler moderner Kernel wird größtenteils durch die Menge an Speicherzugriffen bestimmt, und dieser Ansatz kann eine geringe Menge an Speicherzugriffen erfordern.The cost function can be further simplified, for example, by valuing the transition costs between turn types the same regardless of which types of turns are involved in the transition. In addition, the cost model may assume that the cost of making a turn is negligible compared to the transition cost. With this approach, the cost can be calculated based on the number of turns. Although this approach greatly simplifies operations and does not take into account some situations (e.g. two short turns with a transition that take less time than one long turn, or when the transition between two turns of similar radius in the same aisle is faster than a major change in steering or a gear change), this cost model can still represent a workable heuristic. In this simpler model, a three-dimensional state space can be used instead of a four-dimensional state space. A single state volume can now state whether or not a corresponding pose could be reached with n turns, corresponding or similar to the approach represented by pseudocode 830. With this simpler cost model, the processing of each turn can be gleaned from a common previous cost volume since the transition penalty is always paid and there is no need to remember which turn type was the last. The occupancy space is still read and the new cost is written out for the first turn type and combined by logical OR with the previous results for the following turn types, involving a read and a write. This corresponds to memory access to a total of 8NK - 2N volumes. In addition, the cost volume can be represented by a single bit per cell (reachable or not) instead of 8, 16 or even 32 bits, depending on the resolution of the cost function. The processing speed of many modern kernels is largely determined by the amount of memory accesses, and this approach can require a small amount of memory accesses.

Nun auf 9 Bezug nehmend, zeigt 9 einen beispielhaften Berechnungsflussgraphen 900 gemäß Ausführungsformen der vorliegenden Erfindung, der zur Verarbeitung von Wendungen verwendet werden kann, wobei die Erreichbarkeit mit einem nicht binären Wert kodiert wird. Das Rechenflussdiagramm 900 kann geeignet sein, wenn der Erreichbarkeitsbewerter 148 eine allgemeinere Kostenfunktion als das Rechenflussdiagramm 800 von 8 verwendet.Now on 9 Referring shows 9 Figure 9 shows an exemplary computation flow graph 900 that may be used to process idioms where reachability is encoded with a non-binary value, according to embodiments of the present invention. The computational flowchart 900 may be appropriate when the reachability evaluator 148 is a more general cost function than the computational flowchart 800 of FIG 8th used.

Wie der Berechnungsflussgraph 800 kann der Berechnungsflussgraph 900 N Iterationen wie z. B. eine Iteration 902A und eine Iteration 902B durchlaufen, wobei jedes Mal K Trajektorentypen (z. B. scharf nach links, leicht nach links, geradeaus, leicht nach rechts, scharf nach rechts, usw.) berücksichtigt werden. Statt einen gemeinsam genutzten Erreichbarkeitsraum zu verwenden, kann jede Iteration eine Kostenaktualisierung der Kostenausgaben nach der Trajektorie aus der vorherigen Iteration umfassen, um Kosten vor der Trajektorie für die Iteration zu generieren. Zum Beispiel kann die Iteration 802B eine Kostenaktualisierung 820 der Kostenausgaberäume nach der Trajektorie 910A, 912A, 914A, 916A und 918A aus der Iteration 902A beinhalten, um Kostenausgaberäume vor der Trajektorie 910B, 912B, 914B, 916B und 918B für die Iteration 902B zu generieren. In einer oder mehreren Ausführungsformen können Kosten nach der Trajektorie die niedrigsten Kosten für das Erreichen einer Pose darstellen, die mit dem entsprechenden Trajektorientyp endet, und Kosten vor der Trajektorien können die niedrigsten Kosten für das Erreichen der Pose und die Bereitschaft für den entsprechenden Trajektorientyp ohne Penalität darstellen. Die Wendungs-Kernverarbeitung einer Iteration kann die Kosten vor der Trajektorie dann in Kosten nach der Trajektorien umwandeln, und der Prozess kann wiederholt werden. Zum Beispiel kann die Iteration 902B die Umwandlung der Kostenausgaberäume vor der Trajektorie 910B, 912B, 914B, 916B und 918B in entsprechende Kostenausgaberäume nach der Trajektorie beinhalten, wie gezeigt. In 9 steht jede vertikale Linie für die Bewertung eines Trajektorientyps.Like the computational flow graph 800, the computational flow graph 900 may include N iterations such as B. go through an iteration 902A and an iteration 902B, each time considering K types of trajectories (e.g. sharp left, slightly left, straight, slightly right, sharp right, etc.). Instead of using a shared reachability space, each iteration may include a cost update of the post-trajectory cost outputs from the previous iteration to generate a pre-trajectory cost for the iteration. For example, iteration 802B may include a cost update 820 of post-trajectory cost output spaces 910A, 912A, 914A, 916A, and 918A from iteration 902A to generate pre-trajectory cost output spaces 910B, 912B, 914B, 916B, and 918B for iteration 902B. In one or more embodiments, costs may follow the trajectory represent the lowest cost of reaching a pose ending with the corresponding trajectory type and cost before trajectories may represent the lowest cost of reaching the pose and being ready for the corresponding trajectory type without penalty. The turn kernel processing of an iteration can then convert the pre-trajectory cost to a post-trajectory cost, and the process can be repeated. For example, iteration 902B may include converting the pre-trajectory cost output spaces 910B, 912B, 914B, 916B, and 918B into corresponding post-trajectory cost output spaces, as shown. In 9 each vertical line represents a trajectory type rating.

9 enthält Pseudocode 930, um zu veranschaulichen, wie ein Thread des Erreichbarkeitsbewerters 148 M Posen-Zellen einer Trajektorie mit einer Kernschleife durchlaufen kann, die mit einer allgemeineren Kostenfunktion als der Pseudocode 830 arbeitet, die Kosten c beinhaltet. Hier sind die Variablen keine Bitvektoren mehr, um nicht-binäre Kostenwerte zu erfassen. Außerdem werden die logischen Operationen durch Max/Min-Operationen ersetzt. Hindernisse können durch Maximalkosten dargestellt werden, die nicht änderbar sein können, oder sie können proportional zur Größe des Hindernisses sein (z. B., wenn Hindernisse das Fahrzeug nicht unbedingt blockieren). Zudem können sich die Kosten bei jedem Schritt um eins erhöhen. 9 8 includes pseudocode 930 to illustrate how a thread of reachability assessor 148 can traverse M pose cells of a trajectory with a core loop that operates on a more general cost function than pseudocode 830 that involves cost c. Here the variables are no longer bit vectors to capture non-binary cost values. In addition, the logical operations are replaced by max/min operations. Obstacles can be represented by maximum costs, which can be unchangeable, or they can be proportional to the size of the obstacle (e.g., if obstacles don't necessarily block the vehicle). In addition, the cost can increase by one at each step.

In einer oder mehreren Ausführungsformen kann eine Iteration jede Trajektorie sowohl in der Vorwärts- als auch in der Rückwärtsrichtung verarbeiten. Wenn sie zyklisch ist, was bei Wendungen der Fall ist, es sei denn, sie sind gerade, kann sie auch für zwei Zyklen verarbeitet werden. Dies deshalb, weil es nicht trivial ist, a priori zu wissen, wo ein Zyklus starten soll, und ein ungünstigster Fall ist, dass die Erreichbarkeit von der letzten Zelle aus durch einen gesamten zweiten Zyklus propagiert werden muss, obwohl gewisse Heuristiken entwickelt werden können, um dies zu berücksichtigen. Daher können die Trajektorien in vier Abläufen (Sweeps) mit Code verarbeitet werden, der keine langwierigen Verzweigungsunterschiede zwischen Threads aufweist, um Thread-Divergenzen, die die Parallelität behindern, zu vermeiden. Ein Großteil dieser Verarbeitung kann jedoch vermieden werden, während zugleich noch mehr Parallelität ermöglicht wird, indem jede Trajektorie in eine beliebige Anzahl von Abschnitten aufgeteilt wird, die parallel verarbeitbar sind.In one or more embodiments, an iteration can process each trajectory in both the forward and reverse directions. If it is cyclic, which is the case with turns, unless they are even, it can also be processed for two cycles. This is because it is not trivial to know a priori where a cycle should start, and a worst case is that reachability must be propagated from the last cell through an entire second cycle, although certain heuristics can be developed to take this into account. Therefore, the trajectories can be processed in four runs (sweeps) with code that does not have lengthy branch differences between threads to avoid thread divergences that impede concurrency. However, much of this processing can be avoided while still allowing for more parallelism by splitting each trajectory into any number of sections that can be processed in parallel.

Durch Verwendung der offenbarten Ansätze zur Aufteilung einer Trajektorie in Abschnitte, die parallel verarbeitet werden können, kann ein Großteil der Kosten vermieden werden, die durch den Durchlauf zyklischer Wendungen vorwärts und rückwärts in zwei Zyklen entstehen. In einer oder mehreren Ausführungsformen teilt der Erreichbarkeitsmanager 122 die Verarbeitung einer oder mehrerer Trajektorien in unabhängige parallele Abschnitte auf. Die Ergebnisse zwischen Abschnitten einer Wendung können nicht völlig unabhängig sein, da die Erreichbarkeit sich bei zwei Zyklen durch die gesamte Trajektorie auswirken kann, sowohl vorwärts als auch rückwärts. Die offenbarten Ansätze können diese Abhängigkeit mit einem Parallelitätsreduktionsmuster handhaben, das die Ergebnisse hierarchisch sammelt, einen kleinen Teil der Verarbeitung mit den gesammelten Ergebnissen durchführt und die Ergebnisse dann wieder als Eingaben an einzelne Abschnitte zurückstreut.By using the disclosed approaches to dividing a trajectory into sections that can be processed in parallel, much of the cost of running cyclic turns back and forth in two cycles can be avoided. In one or more embodiments, the reachability manager 122 divides the processing of one or more trajectories into independent parallel sections. The results between sections of a turn cannot be totally independent, as reachability can affect two cycles through the entire trajectory, both forward and backward. The disclosed approaches can handle this dependency with a concurrency reduction pattern that collects the results hierarchically, performs a small amount of processing on the collected results, and then propagates the results back as inputs to individual sections.

Die Ergebnisse eines Abschnitts können von anderen Abschnitten unabhängig sein, mit Ausnahme der Erreichbarkeit, die am Anfang eines Abschnitts eintritt (oder am Ende, wenn die Verarbeitung in der Rückwärtsrichtung erfolgt). Mit den offenbarten Ansätzen kann die Vorwärts- und/oder Rückwärtserreichbarkeit, die am Anfang oder am Ende eines Abschnitts eintritt, berechnet werden, was eine unabhängige Verarbeitung der Abschnitte mit diesen Eingaben ermöglicht. Bei kleinen Abschnitten können der eingebende Belegungsraum und Erreichbarkeitsraum einmal geladen werden, und sowohl der Vorwärts- als auch der Rückwärtsdurchlauf können gleichzeitig verarbeitet werden, wodurch globale Speicherzugriffe halbiert werden. Dies kann wünschenswert sein, da das Halten der Daten in lokalen Registern oder gemeinsam genutztem Speicher in der Nähe der Verarbeitungskeme in der Regel viel schneller ist als der Zugriff auf globalen Speicher.The results of a section may be independent of other sections, except for reachability, which occurs at the beginning of a section (or at the end if processing is in the reverse direction). With the disclosed approaches, the forward and/or backward reachability that occurs at the beginning or at the end of a section can be calculated, allowing independent processing of the sections with these inputs. For small chunks, the input occupancy space and reachability space can be loaded once, and both forward and backward traversals can be processed simultaneously, halving global memory accesses. This can be desirable since keeping the data in local registers or shared memory near the processing cores is usually much faster than accessing global memory.

Zur Bestimmung der Vorwärts- und Rückwärtserreichbarkeit, die in jeden Abschnitt eintritt, kann ein Verarbeitungsdurchlauf durchgeführt werden, der für jeden Abschnitt folgendes (z. B. parallel) berechnet: Die Vorwärtserreichbarkeit, die den Abschnitt in der Vorwärtsrichtung verlässt, wie sie in dem Abschnitt ihren Ursprung hat (SRƒ), die Rückwärtserreichbarkeit, die den Abschnitt in der Rückwärtsrichtung verlässt, wie sie in dem Abschnitt ihren Ursprung hat (SRb), und den Abschnitt-Freiraum, d. h. ob der Abschnitt ganz aus Freiraum besteht (SF).To determine the forward and backward reachability entering each chunk, a processing pass can be performed that calculates for each chunk (e.g., in parallel): The forward reachability exiting the chunk in the forward direction, as found in the chunk originating (SRƒ), reverse reachability leaving the span in the reverse direction as it originated in the span (SRb), and span clearance, i. H. whether the section is entirely open space (SF).

Die abschnittsbasierte Vorwärts- und Rückwärtserreichbarkeit, die aus diesem Ablauf hervorgeht, ist eine Erreichbarkeit, die ihren Ursprung in diesem Abschnitt hat. Es mag nicht möglich sein, die Erreichbarkeit, die von außerhalb des Abschnitts propagiert wird, zum Beispiel die Erreichbarkeit, die am Anfang des Abschnitts eintritt und ihn komplett durchläuft, lokal zu erkennen, weil der Abschnitt vollständig aus Freiraum besteht. Dies kann durch die Berechnung des Abschnitt-Freiraums berücksichtigt werden, so dass diese global propagierten Wirkungen in einem viel kleineren Verarbeitungsablauf bestimmt werden können, der mit Abschnitten arbeitet, statt mit einzelnen Zellen.The section-based forward and backward reachability that emerges from this flow is reachability that originates in this section. It may not be possible to locally detect the reachability that is propagated from outside the span, for example the reachability that enters at the beginning of the span and traverses it completely, because the span consists entirely of free space. This can be taken into account by calculating the section clearance so that these globally propagated effects can be determined in a much smaller processing flow that works with sections rather than individual cells.

Es folgt ein beispielhafter Pseudocode für den Verarbeitungsdurchlauf, bei dem ein Rückwärtsdurchlauf, der mit dem Vorwärtsdurchlauf vermischt ist, weggelassen wurde:

Figure DE102022114521A1_0012
Figure DE102022114521A1_0013
wobei m die Abschnittslänge darstellt und s ein Index für einen Abschnitt ist.The following is example pseudocode for the processing pass, where a backward pass that is interspersed with the forward pass has been omitted:
Figure DE102022114521A1_0012
Figure DE102022114521A1_0013
where m represents the section length and s is an index for a section.

Es kann ein anderer Verarbeitungsdurchlauf verwendet werden, der ähnlich wie der Verarbeitungsdurchlauf in Abschnitten mit Abschnitten arbeitet, aber stattdessen die Erreichbarkeit und den Freiraum von Abschnitten verwendet. Dieser Verarbeitungsdurchlauf kann die Abschnitt-Ausgaben in zwei Schleifen durchlaufen (im Falle zyklischer Wendungen). In der ersten Schleife kann die Erreichbarkeit, die propagiert werden könnte, „aufgewärmt“ werden. Die zweite Schleife kann die vollständige Propagierung für zyklische Wendungen abschließen und das Ergebnis zurückschreiben. Es folgt ein beispielhafter Pseudocode für den Verarbeitungsdurchlauf, der nur den Vorwärtsdurchlauf zeigt, da der Rückwärtsdurchlauf völlig analog ist:

Figure DE102022114521A1_0014
Figure DE102022114521A1_0015
Another processing pass can be used that works similarly to the processing pass in sections with sections, but instead uses the reachability and free space of sections. This processing pass can loop through the section outputs in two (in the case of cyclic turns). In the first loop, the reachability that could be propagated can be "warmed up". The second loop can complete the full propagation for cyclic turns and write back the result. The following is example pseudo-code for the processing pass, showing only the forward pass as the backward pass is entirely analogous:
Figure DE102022114521A1_0014
Figure DE102022114521A1_0015

Auch wenn diese Verarbeitung die Abschnitt-Ausgaben viermal durchläuft (z. B. parallel), fällt in diesem Schritt insgesamt nur 4/m mal so viel Arbeit an, da diese bei längeren Abschnitten abnimmt (Wahl eines größeren m).Even if this processing runs through the section outputs four times (e.g. in parallel), only 4/m times as much work is incurred in this step, since this decreases with longer sections (choice of a larger m).

Ein weiterer Verarbeitungsdurchlauf der Abschnittsverarbeitung kann mit der Basisschleife nahezu identisch sein, mit der Änderung, dass die Abschnitt-Erreichbarkeit als Eingabe verwendet wird, statt die Erreichbarkeit bei null zu starten. Es folgt ein beispielhafter Pseudocode für den Verarbeitungsdurchlauf, bei dem ein Rückwärtsdurchlauf weggelassen wurde:

Figure DE102022114521A1_0016
Another processing pass of the section processing can be almost identical to the basic loop, with the change that the section reachability is used as input instead of starting the reachability at zero. The following is example pseudocode for the processing pass, where a backward pass has been omitted:
Figure DE102022114521A1_0016

Der Verarbeitungsdurchlauf des Zurückschreibens des Ergebnisses kann in ein logisches ODER mit dem umgeändert werden, was bereits für jeden außer dem ersten Wendungstyp vorhanden war. Die Abschnittsverarbeitung mit der allgemeineren Kostenfunktion funktioniert analog dazu, mit der Ausnahme, dass die Erreichbarkeit r den niedrigsten Kosten beim Verlassen oder Eintreten in einen Abschnitt entsprechen kann.The processing pass of writing the result back can be changed to a logical OR with what was already there for each but the first phrase type. Section processing with the more general cost function works analogously, except that the reachability r can correspond to the lowest cost of exiting or entering a section.

Die Verwendung eines Parallelitätsreduktionsmusters, wie hier beschrieben, kann für den Verarbeitungsdurchlauf, der die Berechnung der Erreichbarkeit beinhaltet, die ihren Ursprung in einem Abschnitt hat, 2 Lese- und 3/m Schreibvorgänge pro Zelle des Posenkonfigurationsraums 112 umfassen. Der Verarbeitungsdurchlauf, der die Propagation der Abschnitt-Ausgaben beinhaltet, kann 8/m Lese- und 2/m Schreibvorgänge umfassen. Der Verarbeitungsdurchlauf, der die Abschnitt-Erreichbarkeit als Eingabe verwendet, kann 2 (oder 3) Lesevorgänge und 1 Schreibvorgang umfassen. Daher kann das Parallelitätsreduktionsmuster in 5 + 8/m Lese- und 1 + 5/m Schreibvorgängen erreicht werden, oder insgesamt 6 + 13/m Zugriffen. Dies kann mit einer Verarbeitung ohne Abschnitte verglichen werden, die 2 Lese- und 1 Schreibzugriffe x 3 Durchläufe und 3 Lesezugriffe und 1 Schreibzugriff bei einem letzten Durchlauf oder insgesamt 9 Lese-, 4 Schreibzugriffe und 13 Gesamtspeicherzugriffe umfassen kann. Dadurch kann die Abschnittverarbeitung die Speicherzugriffe um mehr als den Faktor zwei reduzieren. Zusätzlich können weitere Einsparungen erreicht werden, indem die Eingaben für den Freiraum oder die Belegung und die Erreichbarkeit zwischen dem ersten und dritten Durchlauf im gemeinsam genutzten Speicher gecacht werden, wodurch die zwei Leseoperationen im dritten Durchlauf und die resultierenden 4 + 13 /m Zugriffe eingespart werden, um Speicherzugriffe um einen Faktor von mehr als drei einzusparen. Der Ansatz szq Parallelitätsreduktionsmusters weist auch mehr Parallelität auf, da es in jeder Wendung M/m Abschnitte gibt, die parallel bearbeitet werden können.Using a concurrency reduction pattern as described herein may involve 2 reads and 3/m writes per cell of the pose configuration space 112 for the processing pass involving the computation of reachability originating in a section. The processing pass involving the propagation of the section outputs may involve 8/m reads and 2/m writes. The processing pass that takes the section reachability as input can 2 (or 3) reads and 1 write. Therefore, the concurrency reduction pattern can be achieved in 5+8/m reads and 1+5/m writes, or a total of 6+13/m accesses. This can be compared to processing without chunks, which can be 2 reads and 1 write x 3 passes and 3 reads and 1 write on a final pass, or a total of 9 reads, 4 writes and 13 total memory accesses. This allows section processing to reduce memory accesses by more than a factor of two. In addition, further savings can be achieved by caching the free space or occupancy and reachability inputs in shared memory between the first and third passes, saving the two read operations on the third pass and the resulting 4 + 13 /m accesses to save memory accesses by a factor of more than three. The szq parallelism reduction pattern approach also exhibits more parallelism since there are M/m sections in each turn that can be processed in parallel.

Wie hier beschrieben, kann der Trajektorienbewerter 150 des Wegbewerters 130 den oder die Erreichbarkeitsräume verwenden, die vom Erreichbarkeitsbewerter 148 über eine oder mehrere Iterationen mit Anmerkungen versehen wurden, um unter Verwendung des Rückverfolgers 152 einen Weg zu identifizieren und/oder auszuwählen. In einer oder mehreren Ausführungsformen kann der Rückverfolger 152 eine Rückverfolgung durchführen, um einen Weg zu finden, der zum Erreichen eines Ziels die kleinste Anzahl von Trajektorien oder Wendungen (oder allgemeiner, den Weg zu den geringsten Kosten) erreicht hat. Der Rückverfolger 152 kann von einer CPU und/oder mit Parallelverarbeitung (z. B. durch mindestens eine GPU) ausgeführt werden.As described herein, the trajectory estimator 150 of the path estimator 130 may use the reachability space(s) annotated by the reachability estimator 148 over one or more iterations to identify and/or select a path using the backtracker 152 . In one or more embodiments, the backtracker 152 may perform backtracking to find a path that has the smallest number of trajectories or turns (or more generally, the path of lowest cost) to reach a destination. The backtracker 152 may be executed by a CPU and/or with parallel processing (e.g., by at least one GPU).

In mindestens einer Ausführungsform kann der Rückverfolger 152 nach einer oder mehreren Zellen in einer Zielmenge einer oder mehrerer Posen suchen, für welche die Erreichbarkeits-Endausgabe in dem oder den Erreichbarkeitsräumen gesetzt ist. Zum Beispiel kann der Rückverfolger 152 eine Schleife über eine Zielmenge von Posen durchlaufen oder, falls Parallelität gewünscht ist, eine Parallelitätsreduktion verwenden. Wenn mehr als eine Zelle vorhanden ist, deren Erreichbarkeit gesetzt ist, können eine oder mehrere Posen durch eine Präferenzfunktion gewählt werden, z. B. auf der Basis der Nähe zu einer ausgewählten Pose. Wenn keine derartige Pose vorhanden ist, kann dies anzeigen, dass es keinen Wegplan mit Al-Wendungen gibt, der die Zielmenge erreicht, und in diesem Fall ein Plan mit (N + 1) Wendungen bewertet werden kann.In at least one embodiment, the backtracker 152 may search for one or more cells in a target set of one or more poses for which the final reachability output is set in the reachability space(s). For example, the backtracker 152 can loop over a target set of poses or, if parallelism is desired, use parallelism reduction. If there is more than one cell whose reachability is set, one or more poses can be chosen by a preference function, e.g. B. based on proximity to a selected pose. If there is no such pose, this may indicate that there is no path plan with Al turns that achieves the target set, and in this case a plan with (N+1) turns can be evaluated.

Sobald eine Zelle ausgewählt wurde, von der aus eine Rückverfolgung gestartet werden soll, kann angenommen werden, dass die Zelle nach i Iterationen erreicht wurde und einer der Wendungstypen die Pose von einer anderen Pose aus erreicht hat, die eine Iteration früher (bei Iteration i - 1) ereicht wurde. Der Rückverfolger 152 kann daher alle K Wendungstypen von dieser Zelle aus zurückverfolgen und wird entlang dieser irgendwo eine Zelle finden, die in einem Erreichbarkeitsraum, der von der Iteration i - 1 ausgegeben wurde, auf erreichbar gesetzt ist. Da die Wendungen wiederholbare Koordinatendefinitionen haben, können sie genau wie bewertet zurückverfolgt werden. Diese Rückverfolgung von K Wendungen kann sequenziell von einer CPU oder durch eine Parallelitätsreduktion durchgeführt werden. Es kann zu einer zyklischen Mehrdeutigkeit kommen, da eine Wendung sowohl in de Vorwärts- als auch in der Rückwärtsrichtung erfolgt sein kann. Die Mehrdeutigkeit kann aufgelöst werden, indem der Freiraum entlang der zurückverfolgten Wendungen geprüft und die Rückverfolgung gestoppt wird, wenn ein Hindernis gefunden wird (in Ausführungsformen, in denen Hindernisse einen Weg komplett blockieren können).Once a cell has been chosen from which to start a backtrack, it can be assumed that the cell was reached after i iterations and one of the turn types reached the pose from another pose one iteration earlier (at iteration i - 1) has been reached. The backtracker 152 can therefore backtrack all K terminology types from this cell and will find somewhere along it a cell set to reachable in a reachability space output from iteration i-1. Because the turns have repeatable coordinate definitions, they can be traced back exactly as scored. This backtracking of K turns can be performed sequentially by a CPU or by concurrency reduction. A cyclic ambiguity may arise since a turn may have occurred in either the forward or reverse direction. The ambiguity can be resolved by examining the clearance along the traced turns and stopping the traceback when an obstacle is found (in embodiments where obstacles may completely block a path).

Im Falle einer allgemeineren Kostenfunktion kann das Kriterium sein, unter den Zellen, für welche die Kostenreduktion den Kosten der zurückverfolgten Wendung entspricht, die Zelle mit den niedrigsten Kosten zu finden. Wenn mehr als eine Zelle das Kriterium erfüllt, kann eine Heuristik zur Auswahl einer Zelle verwendet werden, wie z. B. die Auswahl der Zelle, die mit der kürzesten Wendung zu erreichen ist. Wenn das gesetzte Ziel in weniger als N Wendungen erreicht wurde, werden einige der anfänglichen Rückverfolgungsschritte eine erreichbare Zelle aus der vorherigen Iteration als die gleiche Zelle finden (weil dieser Wendungsschritt nicht erforderlich war). Der Rückverfolger 152 kann bestimmen, dass dieses Kriterium erfüllt ist, und diese Wendung aus einer Weglösung entfernen. Sobald eine Zelle gefunden wurde, kann der Prozess von dieser Zelle aus wiederholt werden, bis nach Iteration 1 eine erreichbare Zelle gefunden wird. Die Rückverfolgung kann mit der aktuellen Pose abschließen, die den erreichbaren Raum vor jeder Wendung darstellt, und kann mit der aktuellen Pose durchgeführt werden, um die zyklische Mehrdeutigkeit aufzulösen.In the case of a more general cost function, the criterion can be to find the cell with the lowest cost among the cells for which the cost reduction corresponds to the cost of the traced turn. If more than one cell meets the criterion, a heuristic can be used to select a cell, such as B. Selecting the cell that can be reached with the shortest turn. If the set goal was reached in less than N turns, some of the initial backtracking steps will find a reachable cell from the previous iteration as the same cell (because that turning step was not required). The backtracker 152 can determine that this criterion is met and remove this turn from a path solution. Once a cell is found, the process can be repeated from that cell until a reachable cell is found after iteration 1. The backtracking can conclude with the current pose, which represents the reachable space before each turn, and can be performed with the current pose to resolve the cyclic ambiguity.

Nun auf 10 Bezug nehmend, umfasst jeder Block des Verfahrens 1000, das hier beschrieben wird, einen Rechenprozess, der mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Die Verfahren können auch in Form von computerausführbaren Anweisungen, die auf Computer-Speichermedien gespeichert sind, verkörpert sein. Die Verfahren können durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige Beispiele zu nennen. Darüber hinaus werden die Verfahren beispielhaft in Bezug auf den Wegplaner 110 von 1A und 1B beschrieben. Diese Verfahren können jedoch zusätzlich oder alternativ dazu durch ein beliebiges System oder eine beliebige Kombination von Systemen ausgeführt werden, einschließlich der hier beschriebenen, ohne darauf beschränkt zu sein.Now on 10 With reference, each block of the method 1000 described herein includes a computational process that may be performed with any combination of hardware, firmware, and/or software. For example, various functions may be performed by a processor executing instructions stored in memory. The methods may also be embodied in computer-executable instructions stored on computer storage media be. The methods may be provided by a standalone application, service, or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name just a few examples. Additionally, the methods are exemplified with respect to the path planner 110 of FIG 1A and 1B described. However, these methods may additionally or alternatively be performed by any system or combination of systems, including but not limited to those described herein.

10 ist ein Ablaufplan, der ein Verfahren 1000 zur Bestimmung verschobener Posen eines Posenkonfigurationsraums gemäß Ausführungsformen der vorliegenden Erfindung zeigt, um einen Weg durch den Posenkonfigurationsraum zu bestimmen. Das Verfahren 1000 umfasst in Block B1002 das Bestimmen verschobener Posen mindestens auf der Basis der Parallelverschiebung von Posen eines Posenkonfigurationsraums, um verschobene Trajektorien zu erzeugen, die die verschobenen Posen enthalten. Zum Beispiel kann der Posen-Parallelverschieber 146 des Erreichbarkeitsmanagers 122 verschobene Posen des Posenkonfigurationsraums 112, die Posen eines Objekts (z. B. des Fahrzeugs 1300) in einer Umgebung darstellen, mindestens auf der Basis einer Parallelverschiebung eines Satzes von Posen, die Trajektorien (z. B. den Wendungen 618 und 610 in 6B) im Posenkonfigurationsraum 112 entsprechen, entlang mindestens einer Achse (z. B. der θ-Achse) bestimmen, um verschobene Trajektorien zu erzeugen, die die verschobenen Posen enthalten (z. B. die Wendungen 618 und 610 in 6C). 10 10 is a flowchart showing a method 1000 for determining translated poses of a pose configuration space to determine a path through the pose configuration space, according to embodiments of the present invention. The method 1000 includes in block B1002 determining shifted poses based at least on the parallel shift of poses of a pose configuration space to generate shifted trajectories containing the shifted poses. For example, the pose translator 146 of the reachability manager 122 may translate poses of the pose configuration space 112 representing poses of an object (e.g., the vehicle 1300) in an environment based at least on a translation of a set of poses representing trajectories (e.g., B. turns 618 and 610 in 6B ) in pose configuration space 112 along at least one axis (e.g., the θ-axis) to generate shifted trajectories containing the shifted poses (e.g., turns 618 and 610 in 6C ).

Das Verfahren 1000 umfasst in Block B1004 das Bestimmen eines Wegs durch den Posenkonfigurationsraum mindestens auf der Basis der Bewertung der Erreichbarkeit der verschobenen Posen durch Parallelverarbeitung der verschobenen Trajektorien. Zum Beispiel kann der Wegbewerter 130 einen Weg von der aktuellen Pose C in 1A zu einer Zielpose T in 1A mindestens auf der Basis des Erreichbarkeitsbewerters 148 bestimmen, der die Erreichbarkeit der verschobenen Posen der verschobenen Trajektorien von der ersten Pose aus durch Parallelverarbeitung der verschobenen Trajektorien (z. B. dem Pseudocode 830 oder 930 entsprechend) bewertet.The method 1000 includes in block B1004 determining a path through the pose configuration space based at least on the assessment of the reachability of the shifted poses by parallel processing of the shifted trajectories. For example, the path evaluator 130 can calculate a path from the current pose C in 1A to a target pose T in 1A based at least on the reachability evaluator 148, which evaluates the reachability of the shifted poses of the shifted trajectories from the first pose by parallel processing of the shifted trajectories (e.g. corresponding to pseudocode 830 or 930).

Nun auf 11 Bezug nehmend, ist 11 Ablaufplan, der ein Verfahren 1100 gemäß Ausführungsformen der vorliegenden Erfindung zur Parallelverschiebung der Trajektorien von Posen in einem Posenkonfigurationsraum zu verschobenen Trajektorien zeigt, um einen Weg durch den Posenkonfigurationsraum zu bestimmen. Das Verfahren 1100 umfasst in Block B1102 eine Parallelverschiebung von Trajektorien von Posen in einem Posenkonfigurationsraum zu verschobenen Trajektorien, die einen oder mehrere Abschnitte enthalten, die parallel zueinander und zu mindestens einer Achse des Posenkonfigurationsraums sind. Zum Beispiel kann der Posen-Parallelverschieber 146 Trajektorien, die durch Posen im Posenkonfigurationsraum 112 gebildet werden, zu verschobenen Trajektorien parallel verschieben, die mindestens Abschnitte enthalten, die parallel zueinander und zu mindestens einer Achse des Posenkonfigurationsraums 112 sind.Now on 11 referring, is 11 Flowchart showing a method 1100 according to embodiments of the present invention for translating the trajectories of poses in a pose configuration space to translated trajectories to determine a path through the pose configuration space. The method 1100 includes, in block B1102, a parallel translation of trajectories from poses in a pose configuration space to translated trajectories that include one or more sections that are parallel to each other and to at least one axis of the pose configuration space. For example, the pose translator 146 may translate trajectories formed by poses in the pose configuration space 112 into translated trajectories that include at least portions that are parallel to each other and to at least one axis of the pose configuration space 112 .

Das Verfahren 1100 umfasst in Block B1104 die Parallelverarbeitung mindestens der Abschnitte der entlang der mindestens einen Achse verschobenen Trajektorien, um Erreichbarkeitsindikatoren für die verschobenen Trajektorien zu berechnen. Zum Beispiel kann der Erreichbarkeitsbewerter 148 mindestens die Abschnitte der verschobenen Trajektorien entlang der mindestens einen Achse parallel verarbeiten, um Erreichbarkeitsindikatoren für die verschobenen Trajektorien zu berechnen (z. B. dem Pseudocode 830 oder 930 entsprechend).In block B1104, the method 1100 includes the parallel processing of at least the portions of the trajectories shifted along the at least one axis in order to calculate reachability indicators for the shifted trajectories. For example, the reachability evaluator 148 may process at least the portions of the shifted trajectories along the at least one axis in parallel to compute reachability indicators for the shifted trajectories (e.g., corresponding to pseudocode 830 or 930).

Das Verfahren 1100 umfasst in Block B1106 das Bestimmen eines Wegs durch den Posenkonfigurationsraum mindestens auf der Basis der Erreichbarkeitsindikatoren. Zum Beispiel kann der Wegbewerter 130 einen Weg durch den Posenkonfigurationsraum 112 mindestens auf der Basis der Erreichbarkeitsindikatoren bestimmen.The method 1100 includes, in block B1106, determining a path through the pose configuration space based at least on the reachability indicators. For example, the path evaluator 130 may determine a path through the pose configuration space 112 based at least on the reachability indicators.

12 ist ein Ablaufplan, das ein Verfahren 1200 gemäß Ausführungsformen der vorliegenden Erfindung zur parallelen Bewertung der Erreichbarkeit von Abschnitten einer Trajektorie zeigt. Das Verfahren 1200 umfasst in Block B1202 das Berechnen, für einen ersten Abschnitt unter den Abschnitten einer Trajektorie von Posen in einem Posenkonfigurationsraum, eines oder mehrerer Erreichbarkeitsindikatoren beim Verlassen des ersten Abschnitts. Zum Beispiel kann der Erreichbarkeitsbewerter 148 für einen ersten Abschnitt unter den Abschnitten der Wendung 618 von 6B und 6C, der durch Posen im Posen-Konfigurationsraum 112 gebildet wird, einen Erreichbarkeitsindikator beim Verlassen des ersten Abschnitts berechnen. 12 FIG. 12 is a flowchart showing a method 1200 according to embodiments of the present invention for evaluating the reachability of sections of a trajectory in parallel. The method 1200 includes in block B1202 calculating, for a first section among the sections of a trajectory of poses in a pose configuration space, one or more reachability indicators upon exiting the first section. For example, the reachability evaluator 148 for a first section among the sections of the phrase 618 of 6B and 6C , which is formed by poses in the pose configuration space 112, calculate a reachability indicator when leaving the first section.

Das Verfahren 1200 umfasst in Block B1204 das Berechnen eines Erreichbarkeitsindikators beim Eintritt in einen zweiten Abschnitt unter den Abschnitten anhand des Erreichbarkeitsindikators beim Verlassen des ersten Abschnitts. Zum Beispiel kann der Erreichbarkeitsbewerter 148 einen Erreichbarkeitsindikator beim Eintritt in einen zweiten Abschnitt unter den Abschnitten anhand des Erreichbarkeitsindikators beim Verlassen des ersten Abschnitts berechnen.The method 1200 includes in block B1204 calculating a reachability indicator when entering a second section among the sections based on the reachability indicator when exiting the first section. For example, the reachability assessor 148 may include a reachability indicator calculate when entering a second section among the sections based on the accessibility indicator when leaving the first section.

Das Verfahren 1200 umfasst in Block B1206 das Berechnen eines Erreichbarkeitsindikators für eine Pose im ersten Abschnitt anhand des Erreichbarkeitsindikators beim Eintritt in den zweiten Abschnitt. Zum Beispiel kann der Erreichbarkeitsbewerter 148 einen Erreichbarkeitsindikator für eine Pose im ersten Abschnitt (z. B. in Bezug auf die aktuelle Pose C in 1A) anhand des Erreichbarkeitsindikators beim Eintritt in den zweiten Abschnitt berechnen. Das Verfahren 1200 kann als Teil eines Parallelitätsreduktionsmusters durch Parallelverarbeitung für eine Vielzahl von Trajektorien parallel durchgeführt werden.The method 1200 includes, in block B1206, calculating a reachability indicator for a pose in the first leg based on the reachability indicator when entering the second leg. For example, the reachability evaluator 148 can provide a reachability indicator for a pose in the first section (e.g., relative to the current pose C in 1A ) calculated using the accessibility indicator when entering the second section. The method 1200 may be performed in parallel as part of a parallelism reduction pattern by parallel processing for a plurality of trajectories.

BEISPIELHAFTES AUTONOMES FAHRZEUGEXEMPLARY AUTONOMOUS VEHICLE

13A ist eine Darstellung eines beispielhaften autonomen Fahrzeugs 1300 gemäß Ausführungsformen der vorliegenden Erfindung. Das autonome Fahrzeug 1300 (hier alternativ als „Fahrzeug 1300“ bezeichnet) kann, ohne darauf beschränkt zu sein, ein Personenfahrzeug wie z. B. einen Lkw, einen Bus, ein Rettungsfahrzeug, einen Shuttle, ein elektrisches oder motorisiertes Fahrrad, ein Motorrad, ein Feuerwehrauto, ein Polizeifahrzeug, einen Krankenwagen, ein Boot, ein Baufahrzeug, ein Unterwasserfahrzeug, eine Drohne, Fahrzeug mit Anhänger und/oder eine andere Art von Fahrzeug (z. B. ein unbemanntes Fahrzeug und/oder ein Fahrzeug, das einen oder mehrere Fahrgäste aufnimmt) umfassen. Autonome Fahrzeuge werden allgemein in Form von Automatisierungsgraden beschrieben, die von der National Highway Traffic Safety Administration (NHTSA), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers (SAE) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und künftige Versionen dieses Standards) definiert werden. Das Fahrzeug 1300 kann in der Lage sein, Funktionalitäten zu erfüllen, die einer oder mehreren der autonomen Fahrstufen 3 bis 5 entsprechen. Zum Beispiel kann das Fahrzeug 1300 je nach Ausführungsform zur bedingten Automatisierung (Level 3), Hochautomatisierung (Level 4) und/oder Vollautomatisierung (Level 5) fähig sein. 13A 13 is an illustration of an exemplary autonomous vehicle 1300 in accordance with embodiments of the present invention. The autonomous vehicle 1300 (alternatively referred to herein as “vehicle 1300”) may include, but is not limited to, a passenger vehicle, such as an automobile. a truck, bus, rescue vehicle, shuttle, electric or motorized bicycle, motorcycle, fire engine, police vehicle, ambulance, boat, construction vehicle, underwater vehicle, drone, trailer vehicle and/or another type of vehicle (e.g., an unmanned vehicle and/or a vehicle that accommodates one or more passengers). Autonomous vehicles are generally described in terms of automation levels defined by the National Highway Traffic Safety Administration (NHTSA), a division of the US Department of Transportation, and the Society of Automotive Engineers (SAE) "Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles” (Standard No. J3016-201806, published June 15, 2018, Standard No. J3016-201609, published September 30, 2016, and previous and future versions of this standard). The vehicle 1300 may be capable of performing functionalities corresponding to one or more of autonomous driving levels 3-5. For example, the vehicle 1300 may be capable of conditional automation (level 3), high automation (level 4), and/or full automation (level 5), depending on the embodiment.

Das Fahrzeug 1300 kann Komponenten wie ein z. B. Fahrgestell, eine Karosserie, Räder (z. B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Fahrzeugkomponenten umfassen. Das Fahrzeug 1300 kann ein Antriebssystem 1350 wie z. B. eine Brennkraftmaschine, einen Hybrid-Elektroantrieb, einen reinen Elektromotor und/oder ein Antriebssystem anderen Typs umfassen. Das Antriebssystem 1350 kann mit einem Antriebsstrang des Fahrzeugs 1300 verbunden sein, der ein Getriebe umfassen kann, um den Antrieb des Fahrzeugs 1300 zu ermöglichen. Das Antriebssystem 1350 kann in Reaktion auf den Empfang von Signalen von einem Gashebel/Beschleuniger 1352 gesteuert werden.The vehicle 1300 may include components such as a z. B. chassis, body, wheels (z. B. 2, 4, 6, 8, 18, etc.), tires, axles and other vehicle components include. The vehicle 1300 may include a propulsion system 1350 such as B. include an internal combustion engine, a hybrid electric drive, a pure electric motor and / or a drive system of another type. The propulsion system 1350 may be coupled to a powertrain of the vehicle 1300, which may include a transmission, to enable the vehicle 1300 to be propelled. The propulsion system 1350 may be controlled in response to receiving signals from a throttle/accelerator 1352 .

Ein Lenksystem 1354, das ein Lenkrad umfassen kann, kann verwendet werden, um ein Fahrzeug 1300 zu lenken (z. B. entlang eines gewünschten Wegs oder einer Route), wenn das Antriebssystem 1350 in Betrieb ist (z. B., wenn das Fahrzeug in Bewegung ist). Das Lenksystem 1354 kann von einem Lenkaktor 1356 Signale empfangen. Das Lenkrad kann für die vollautomatische Funktionalität (Level 5) optional sein.A steering system 1354, which may include a steering wheel, may be used to steer a vehicle 1300 (e.g., along a desired path or route) when the propulsion system 1350 is operational (e.g., when the vehicle is in motion). The steering system 1354 can receive signals from a steering actuator 1356 . The steering wheel can be optional for fully automatic functionality (level 5).

Das Bremssensorsystem 1346 kann verwendet werden, um die Fahrzeugbremsen in Reaktion auf den Empfang von Signalen von den Bremsaktuatoren 1348 und/oder Bremssensoren zu betätigen.The brake sensor system 1346 may be used to apply the vehicle brakes in response to receiving signals from the brake actuators 1348 and/or brake sensors.

Controller 1336, die, ohne darauf beschränkt zu sein, ein oder mehrere Ein-Chip-Systeme (SoCs) 1304 (13C) und/oder GPU(s) umfassen können, können einer oder mehreren Komponenten und/oder Systemen des Fahrzeugs 1300 Signale (die z. B. für Befehle stehen) bereitstellen. Zum Beispiel können die Controller Signale zur Betätigung der Fahrzeugbremsen über einen oder mehrere Bremsaktuatoren 1348, zur Betätigung des Lenksystems 1354 über einen oder mehrere Lenkaktuatoren 1356 und zur Betätigung des Antriebssystems 1350 über einen oder mehrere Drossel-/Beschleunigungsregler 1352 senden. Controller 1336 können eine oder mehrere eingebaute (z. B. integrierte) Recheneinheiten (z. B. Supercomputer) umfassen, die Sensorsignale verarbeiten und Betriebsbefehle (z. B. Signale, die für Befehle stehen) ausgeben, um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 1300 zu unterstützen. Die Controller 1336 können einen erste Controller 1336 für autonome Fahrfunktionen, einen zweiten Controller 1336 für funktionale Sicherheitsfunktionen, einen dritten Controller 1336 für die Funktionalität der künstlichen Intelligenz (z. B. Computer-Vision), einen vierten Controller 1336 für die Infotainment-Funktionalität, einen fünften Controller 1336 zur Redundanz in Notfällen und/oder andere Controller umfassen. In einigen Beispielen kann ein einziger Controller 1336 zwei oder mehr der obigen Funktionalitäten übernehmen, zwei oder mehr Controller 1336 können eine einzige Funktionalität übernehmen, und/oder eine beliebige Kombination daraus.Controllers 1336, including but not limited to one or more systems on chip (SoCs) 1304 ( 13C ) and/or GPU(s) may provide signals (e.g., representing commands) to one or more components and/or systems of the vehicle 1300 . For example, the controllers may send signals to actuate the vehicle brakes via one or more brake actuators 1348, to actuate the steering system 1354 via one or more steering actuators 1356, and to actuate the powertrain system 1350 via one or more throttle/acceleration controllers 1352. Controllers 1336 may include one or more onboard (e.g., integrated) computing units (e.g., supercomputers) that process sensor signals and issue operational commands (e.g., signals representing commands) to enable autonomous driving and/or or assist a human driver in driving the vehicle 1300 . The controllers 1336 may include a first controller 1336 for autonomous driving functions, a second controller 1336 for functional safety functions, a third controller 1336 for artificial intelligence (e.g., computer vision) functionality, a fourth controller 1336 for infotainment functionality, a fifth controller 1336 for emergency redundancy and/or other controllers. In some examples, a single controller 1336 can perform two or more of the above functions functionalities, two or more controllers 1336 can assume a single functionality, and/or any combination thereof.

Controller 1336 können die Signale bereitstellen, um in Reaktion auf Sensordaten, die von einem oder mehreren Sensoren (z. B. Sensoreingaben) empfangen werden, ein oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1300 zu steuern. Die Sensordaten können zum Beispiel, ohne darauf beschränkt zu sein, von globalen Satellitennavigationssystem (GNSS)-Sensor(en) 1368 (z. B., GPS-Sensor(en)), RADAR-Sensor(en) 1360, Ultraschallsensor(en) 1362, LIDAR-Sensor(en) 1364, Trägheitsmesseinheit (IMU)-Sensor(en) 1366 (z. B. Beschleunigungsmesser, Gyroskop(e), Magnetkompass(e), Magnetometer usw.), Mikrofon(e) 1396, Stereokamera(s) 1368, Weitwinkelkamera(s) 1370 (z. B., Fischaugenkameras), Infrarotkamera(s) 1372, Surround-View-Kamera(s) 1374 (z. B. 360 Grad-Kameras), Weitbereichs- und/oder Mittelbereichskamera(s) 1398, Drehzahlsensor(en) 1344 (z. B. zur Messung der Geschwindigkeit des Fahrzeugs 1300), Vibrationssensor(en) 1342, Lenksensor(en) 1340, Bremssensor(en) (z. B. als Teil des Bremssensorsystems 1346) und/oder anderen Sensortypen empfangen werden.Controllers 1336 may provide the signals to control one or more components and/or systems of the vehicle 1300 in response to sensor data received from one or more sensors (eg, sensor inputs). The sensor data can be, for example, but not limited to, global navigation satellite system (GNSS) sensor(s) 1368 (e.g., GPS sensor(s)), RADAR sensor(s) 1360, ultrasonic sensor(s) 1362, LIDAR sensor(s) 1364, Inertial Measurement Unit (IMU) sensor(s) 1366 (e.g. accelerometer, gyroscope(s), magnetic compass(es), magnetometer, etc.), Microphone(s) 1396, Stereo camera( s) 1368, wide angle camera(s) 1370 (e.g., fisheye cameras), infrared camera(s) 1372, surround view camera(s) 1374 (e.g., 360 degree cameras), long range and/or mid range camera (s) 1398, speed sensor(s) 1344 (e.g. for measuring the speed of the vehicle 1300), vibration sensor(s) 1342, steering sensor(s) 1340, brake sensor(s) (e.g. as part of the brake sensor system 1346 ) and/or other sensor types.

Ein oder mehrere Controller 1336 können Eingaben (z. B. in Form von Eingabedaten) von einem Kombi-Instrument 1332 des Fahrzeugs 1300 empfangen und über eine Mensch-Maschine-Schnittstelle (HMI)-Anzeige 1334, einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1300 Ausgaben (z. B. in Form von Ausgabedaten, Anzeigedaten usw.) bereitstellen. Die Ausgaben können Information wie z. B. Fahrzeuggeschwindigkeit, Drehzahl, Kartendaten (z. B. die HD-Karte 1322 von 13C), Ortsdaten (z. B. den Ort des Fahrzeugs 1300 auf einer Karte), die Richtung, den Ort anderer Fahrzeuge (z. B. ein Belegungsraster), Information über Objekte und den Status von Objekten, wie sie von Controller(n) 1336 erkannt wird, usw. umfassen. Zum Beispiel kann die HMI-Anzeige 1334 Information über das Vorhandensein eines oder mehrerer Objekte (z. B. ein Straßenschild, ein Warnschild, eine umschaltende Ampel usw.) und/oder Information über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z. B. jetzt die Spur wechseln, in zwei Meilen die Ausfahrt 34B nehmen, usw.).One or more controllers 1336 may receive input (e.g., in the form of input data) from an instrument cluster 1332 of the vehicle 1300 and via a human-machine interface (HMI) display 1334, an audible indicator, a speaker, and/or or provide outputs (e.g., in the form of output data, display data, etc.) via other components of the vehicle 1300 . The outputs can include information such as B. Vehicle speed, RPM, map data (e.g. the HD map 1322 from 13C ), location data (e.g., location of vehicle 1300 on a map), direction, location of other vehicles (e.g., an occupancy grid), information about objects and status of objects as received from controller(s) 1336 is detected, and so on. For example, the HMI display 1334 may display information about the presence of one or more objects (e.g., a road sign, a warning sign, a traffic light that is changing, etc.) and/or information about maneuvers that the vehicle has performed, is performing, or is performing (eg, change lanes now, take exit 34B in two miles, etc.).

Das Fahrzeug 1300 umfasst außerdem eine Netzschnittstelle 1324, die drahtlose Antenne(n) 1326 und/oder Modem(s) verwenden kann, um über ein oder mehrere Netzwerke zu kommunizieren. Die Netzschnittstelle 1324 kann zum Beispiel die Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000 usw. ermöglichen. Drahtlose Antenne(n) 1326 können auch die Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeugen, mobilen Geräten usw.) ermöglichen, indem sie lokale Netze wie z. B. Bluetooth, Bluetooth LE Z-Wave, ZigBee usw. und/oder Low-Power-Weitverkehrsnetze (LPWANs) wie z. B. LoRaWAN, SigFox usw. verwenden.The vehicle 1300 also includes a network interface 1324 that may use wireless antenna(s) 1326 and/or modem(s) to communicate over one or more networks. For example, network interface 1324 may enable communication over LTE, WCDMA, UMTS, GSM, CDMA2000, and so on. Wireless antenna(s) 1326 may also enable communication between objects in the environment (e.g., vehicles, mobile devices, etc.) by using local area networks such as e.g. B. Bluetooth, Bluetooth LE Z-Wave, ZigBee etc. and / or low-power wide area networks (LPWANs) such. B. Use LoRaWAN, SigFox etc.

13B ist ein Beispiel für Kamerapositionen und Sichtfelder für das beispielhafte autonome Fahrzeug 1300 von 13A gemäß Ausführungsformen der vorliegenden Erfindung. Die Kameras und ihre jeweiligen Sichtfelder sind eine beispielhafte Ausführungsform und nicht einschränkend zu verstehen. Zum Beispiel können zusätzliche und/oder alternative Kameras enthalten sein, und/oder Kameras können an anderen Stellen des Fahrzeugs 1300 angeordnet sein. 13B 13 is an example of camera positions and fields of view for the example autonomous vehicle 1300 of FIG 13A according to embodiments of the present invention. The cameras and their respective fields of view are exemplary and not limiting. For example, additional and/or alternative cameras may be included and/or cameras may be located at other vehicle 1300 locations.

Die Kameratypen für die Kameras können, ohne darauf beschränkt zu sein, Digitalkameras umfassen, die zur Verwendung mit Komponenten und/oder Systemen des Fahrzeugs 1300 angepasst sein können. Die Kamera(s) können bei der Kraftfahrzeug-Sicherheitsintegrationsstufe (ASIL) B und/oder einer anderen ASIL-Stufe betrieben werden. Die Kameratypen können in der Lage sein, eine Bildaufzeichnungsrate wie z. B. 60 Einzelbildern pro Sekunde (fps), 120 fps, 240 fps usw. zu erreichen. Die Kameras können Rollling-Shutters, Global Shutters, einen anderen Verschlusstyp oder eine Kombination daraus verwenden. In einigen Beispielen kann das Farbfilter-Array ein Rot-Klar-Klar-Klar-Farbfilter-Array (RCCC), ein Rot-Klar-Klar-Blau-Farbfilter-Array (RCCB), ein Rot-Blau-Grün-Klar-Farbfilter-Array (RBGC), ein Foveon X3-Farbfilter-Array, ein Bayer-Sensor-Farbfilter-Array (RGGB), ein Monochrom-Sensor-Farbfilter-Array und/oder ein Farbfilter-Array anderen Typs umfassen. In einigen Ausführungsformen können zur Erhöhung der Lichtempfindlichkeit Klarpixelkameras wie z. B. Kameras mit einem RCCC-, einem RCCB- und/oder einem RBGC-Farbfilter-Array verwendet werden.Camera types for the cameras may include, but are not limited to, digital cameras that may be adapted for use with vehicle 1300 components and/or systems. The camera(s) may operate at automotive safety integration level (ASIL) B and/or other ASIL level. The camera types may be able to record an image rate such as e.g. 60 frames per second (fps), 120 fps, 240 fps, etc. The cameras can use rolling shutters, global shutters, another type of shutter, or a combination of these. In some examples, the color filter array may be a red-clear-clear-clear color filter array (RCCC), a red-clear-clear-blue color filter array (RCCB), a red-blue-green-clear color filter array (RBGC), a Foveon X3 color filter array, a Bayer sensor color filter array (RGGB), a monochrome sensor color filter array, and/or another type of color filter array. In some embodiments, clear pixel cameras such as e.g. B. Cameras with an RCCC, an RCCB and/or an RBGC color filter array can be used.

In einigen Beispielen können eine oder mehrere der Kameras verwendet werden, um adaptive Fahrerassistenzsystemen (ADAS)-Funktionen auszuführen (z. B. als Teil eines redundanten oder ausfallsicheren Designs). Zum Beispiel kann eine Multifunktions-Monokamera installiert sein, um Funktionen einschließlich Spurhalteassistent, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung bereitzustellen. Eine oder mehrere der Kameras (z. B. alle Kameras) können gleichzeitig Bilddaten (z. B. Video) aufzeichnen und bereitstellenIn some examples, one or more of the cameras may be used to perform adaptive driver assistance systems (ADAS) functions (e.g., as part of a redundant or failsafe design). For example, a multi-function mono camera can be installed to provide functions including Lane Departure Warning, Traffic Sign Assist, and Intelligent Headlight Control. One or several of the cameras (e.g. all cameras) can record and provide image data (e.g. video) at the same time

Eine oder mehrere der Kameras können in einer Montagehalterung montiert sein, z. B. in einer kundenspezifisch entworfenen (3D-gedruckten) Halterung, um Streulicht und Reflexionen aus dem Fahrzeuginnenraum (z. B. Reflexionen vom Armaturenbrett, die in Spiegeln der Windschutzscheibe reflektiert werden) auszuschalten, die die Bilddatenerfassungsfähigkeiten der Kamera beeinträchtigen könnten. Was Seitenspiegel-Montagehalterungen anbetrifft, können die Seitenspiegelhalterungen kundenspezifisch so 3D-gedruckt werden, dass die Kameramontageplatte der Form des Seitenspiegel entspricht. In einigen Beispielen können Kamera(s) im Seitenspiegel integriert sein. Bei Seitenansicht-Kameras können die Kameras auch in den vier Säulen an jeder Ecke der Fahrgastzelle integriert sein.One or more of the cameras may be mounted in a mounting bracket, e.g. B. in a custom-designed (3D-printed) mount to eliminate stray light and reflections from the vehicle interior (e.g. reflections from the dashboard reflected in mirrors of the windshield) that could affect the image data collection capabilities of the camera. As for side mirror mounting brackets, the side mirror brackets can be custom 3D printed so that the camera mounting plate matches the shape of the side mirror. In some examples, camera(s) may be integrated into the side view mirror. For side view cameras, the cameras can also be integrated into the four pillars at each corner of the passenger compartment.

Kameras mit einem Sichtfeld, das vor dem Fahrzeug 1300 liegende Teile der Umgebung einschließt (z. B. nach vorne gerichtete Kameras), können für die Rundumsicht verwendet werden, um die Erkennung von Wegen und Hindernissen in der Vorwärtsrichtung zu unterstützen und mithilfe eines oder mehrerer Controller 1336 und/oder Steuer-SoCs Information bereitzustellen, die für die Erstellung eines Belegungsraster und/oder die Bestimmung bevorzugter Fahrzeug-Wege kritisch sind. Nach vorne gerichtete Kameras können verwendet werden, um viele derselben ADAS-Funktionen wie LIDAR zu erfüllen, einschließlich, ohne darauf beschränkt zu sein, Notbremsung, Fußgängererkennung und Kollisionsvermeidung. Nach vorne gerichtete Kameras könne auch für ADAS-Funktionen und -Systeme verwendet werden, einschließlich, ohne darauf beschränkt zu sein, auf Spurverlassenswarnungen (LDW), autonome Geschwindigkeitsregelung (ACC) und/oder andere Funktionen wie Verkehrszeichenerkennung.Cameras with a field of view that includes portions of the environment in front of the vehicle 1300 (e.g., forward-facing cameras) may be used for all-around vision to aid in detecting paths and obstacles in the forward direction and using one or more Controllers 1336 and/or control SoCs may provide information critical to establishing an occupancy grid and/or determining preferred vehicle paths. Forward-facing cameras can be used to perform many of the same ADAS functions as LIDAR, including but not limited to emergency braking, pedestrian detection, and collision avoidance. Forward-facing cameras may also be used for ADAS functions and systems including, but not limited to, lane departure warning (LDW), autonomous cruise control (ACC), and/or other functions such as traffic sign recognition.

Verschiedene Kameras können in einer nach vorne gerichteten Konfiguration verwendet werden, z. B. eine monokulare Kameraplattform mit einem CMOS (Complementary Metal Oxide Semiconductor)-Farbbildsensor . Ein weiteres Beispiel sind Weitwinkelkameras 1370, die verwendet werden können, um Objekte zu erkennen, die von der Peripherie her ins Blickfeld geraten (z. B. Fußgänger, Querverkehr oder Fahrräder). Auch wenn in 13B nur eine Weitwinkelkamera dargestellt ist, kann eine beliebige Anzahl von Weitwinkelkameras 1370 am Fahrzeug 1300 vorhanden sein. Darüber hinaus können Weitbereichskameras 1398 (z. B. ein Weitbereich-Stereokamerapaar) zur tiefenbasierten Objekterkennung verwendet werden, insbesondere für Objekte, für welche ein neuronales Netz noch nicht trainiert wurde. Weitbereichskameras 1398 können auch zur Objekterkennung und -klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.Various cameras can be used in a forward-facing configuration, e.g. B. a monocular camera platform with a CMOS (Complementary Metal Oxide Semiconductor) color image sensor. Another example is wide-angle cameras 1370, which can be used to detect objects coming into view from the periphery (e.g., pedestrians, crossing traffic, or bicycles). Even if in 13B only one wide-angle camera is shown, any number of wide-angle cameras 1370 may be present on vehicle 1300 . In addition, long-range cameras 1398 (e.g., a long-range stereo camera pair) can be used for depth-based object detection, particularly for objects for which a neural network has not yet been trained. Long range cameras 1398 can also be used for object detection and classification, as well as basic object tracking.

Eine oder mehrere Stereokameras 1368 können auch in einer nach vorne gerichteten Konfiguration enthalten sein. Die Stereokamera(s) 1368 können eine integrierte Steuereinheit mit einer skalierbaren Verarbeitungseinheit umfassen, die eine programmierbare Logik (FPGA) und einen Multicore-Mikroprozessor mit einer integrierten CAN- oder Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. Solch eine Einheit kann verwendet werden, um eine 3D-Karte der Umgebung des Fahrzeugs zu erzeugen, einschließlich einer Abstandsschätzung für alle Punkte im Bild. Alternative Stereokameras 1368 können kompakte Stereo-Vision-Sensor(en) umfassen, die zwei Kameralinsen (je eine links und rechts) und einen Bildverarbeitungschip umfassen können, der den Abstand vom Fahrzeug zum Zielobjekt messen und die erzeugte Information (z. B. Metadaten) verwenden kann, um autonome Notbrems- und Spurhaltewarnfunktionen zu aktivieren. Andere Arten von Stereokameras 1368 können zusätzlich oder alternativ zu den hier beschriebenen verwendet werden.One or more stereo cameras 1368 may also be included in a forward-facing configuration. The stereo camera(s) 1368 may include an integrated controller with a scalable processing unit that can provide programmable logic (FPGA) and a multi-core microprocessor with an integrated CAN or Ethernet interface on a single chip. Such a unit can be used to generate a 3D map of the vehicle's surroundings, including a distance estimate for all points in the image. Alternative 1368 stereo cameras may include compact stereo vision sensor(s) that may include two camera lenses (one each left and right) and an image processing chip that measures the distance from the vehicle to the target object and the information (e.g. metadata) generated can use to activate autonomous emergency braking and lane departure warning functions. Other types of stereo cameras 1368 may be used in addition or as an alternative to those described herein.

Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 1300 enthält (z. B. Seitenansicht-Kameras), können für die Rundumansicht verwendet werden und Information bereitstellen, die zur Erstellung und Aktualisierung des Belegungsrasters sowie zur Erzeugung von Seitenaufprallwarnungen verwendet werden. Zum Beispiel können Surround-View-Kamera(s) 1374 (z. B. vier Surround-View-Kameras 1374, wie in 13B dargestellt) am Fahrzeug 1300 angeordnet sein. Umgebungskameras 1374 können Weitwinkelkamera(s) 1370, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder dergleichen umfassen. Zum Beispiel können vier Fischaugenkameras an der Front, am Heck und an den Seiten des Fahrzeugs angeordnet sein. In einer alternativen Anordnung kann das Fahrzeug drei Surround-View-Kameras 1374 (z. B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z. B. eine nach vorne gerichtete Kamera) als vierte Surround-View-Kamera nutzen.Cameras with a field of view that includes portions of the environment to the side of the vehicle 1300 (e.g., side view cameras) may be used for the surround view and provide information used to create and update the occupancy grid and generate side impact alerts. For example, surround view camera(s) 1374 (e.g. four surround view cameras 1374 as in 13B shown) on the vehicle 1300 may be arranged. Perimeter cameras 1374 may include wide angle camera(s) 1370, fisheye camera(s), 360 degree camera(s), and/or the like. For example, four fisheye cameras may be located at the front, rear, and sides of the vehicle. In an alternative arrangement, the vehicle may use three surround view cameras 1374 (e.g., left, right, and rear) and one or more other cameras (e.g., a front-facing camera) as the fourth surround view Use view camera.

Kameras mit einem Sichtfeld, das Teile der Umgebung hinter dem Fahrzeug 1300 enthält (z. B. Hecksicht-Kameras) können für die Einparkhilfe, die Rundumsicht, Heckkollisionswarnungen und zum Erzeugen und Aktualisieren von Belegungsrastern verwendet werden. Es kann eine große Auswahl von Kameras verwendet werden, einschließlich, ohne darauf beschränkt zu sein, Kameras, die auch als nach vorne gerichtete Kameras geeignet sind (z. B. Weitbereichs- und/oder Mittelbereichskamera(s) 1398, Stereokamera(s) 1368, Infrarotkamera(s) 1372 usw.), wie hier beschrieben.Cameras with a field of view that includes portions of the environment behind the vehicle 1300 (e.g., rear view cameras) may be used for parking assistance, surround visibility, rear collision alerts, and to create and update occupancy grids. A wide range of cameras ver including but not limited to cameras that are also suitable as front-facing cameras (e.g., long-range and/or mid-range camera(s) 1398, stereo camera(s) 1368, infrared camera(s) 1372, etc .), as described here.

13C ist ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug 1300 von 13A gemäß Ausführungsformen der vorliegenden Erfindung. Es versteht sich, dass diese und andere Anordnungen, die hier beschrieben werden, lediglich beispielhaft sind. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Funktionsgruppen usw.) können zusätzlich zu oder anstelle der gezeigten verwendet werden, und einige Elemente können auch ganz entfallen. Ferner sind viele der Elemente, die hier beschrieben werden, funktionale Einheiten, die als einzelne oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene Funktionen, die hier als von Einheiten ausgeführt beschrieben werden, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. 13C 13 is a block diagram of an example system architecture for the example autonomous vehicle 1300 of FIG 13A according to embodiments of the present invention. It should be understood that these and other arrangements described herein are exemplary only. Other arrangements and elements (e.g., engines, interfaces, functions, sequences, groups of functions, etc.) may be used in addition to or in place of those shown, and some elements may be omitted altogether. Furthermore, many of the elements described herein are functional units that can be implemented as single or distributed components, or in conjunction with other components, and in any suitable combination and location. Various functions described herein as being performed by devices may be performed by hardware, firmware, and/or software. For example, various functions may be performed by a processor executing instructions stored in memory.

Alle Komponenten, Merkmale und Systeme des Fahrzeugs 1300 in 13C sind als über einen Bus 1302 verbunden dargestellt. Der Bus 1302 kann eine Controller Area Network (CAN)-Datenschnittstelle (hier alternativ als „CAN-Bus“ bezeichnet) umfassen. Ein CAN kann ein im Fahrzeug 1300 befindliches Netzwerk sein, das zur Unterstützung der Steuerung verschiedener Eigenschaften und Funktionalitäten des Fahrzeugs 1300 wie z. B. Betätigung der Bremsen, Beschleunigung, Bremsung, Lenkung, Scheibenwischer usw. verwendet wird. Ein CAN-Bus kann dazu konfiguriert sein, Dutzende oder sogar Hunderte von Knoten zu haben, von denen jeder seine eigene eindeutige Kennung (z. B. eine CAN-ID) hat. Der CAN-Bus kann ausgelesen werden, um den Lenkradwinkel, die Fahrgeschwindigkeit, die Motordrehzahl pro Minute (RPM), Knopfstellungen und/oder andere Fahrzeugzustandsindikatoren zu ermitteln. Der CAN-Bus kann ASIL B-konform sein.All components, features and systems of the vehicle 1300 in 13C are shown connected via a bus 1302 . Bus 1302 may include a Controller Area Network (CAN) data interface (alternatively referred to herein as "CAN bus"). A CAN may be a vehicle 1300 resident network configured to support control of various vehicle 1300 features and functionality such as: B. actuation of the brakes, acceleration, braking, steering, wipers, etc. is used. A CAN bus can be configured to have tens or even hundreds of nodes, each with its own unique identifier (e.g., a CAN ID). The CAN bus can be read to determine steering wheel angle, vehicle speed, engine speed per minute (RPM), knob positions, and/or other vehicle condition indicators. The CAN bus can be ASIL B compliant.

Auch wenn der Bus 1302 hier als CAN-Bus beschrieben wird, ist dies nicht einschränkend zu verstehen. Zum Beispiel können FlexRay und/oder Ethernet zusätzlich oder alternativ zum CAN-Bus verwendet werden. Auch wenn eine einzige Leitung verwendet wird, um de, Bus 1302 darzustellen, ist dies nicht einschränkend zu verstehen. Zum Beispiel kann eine beliebige Anzahl von Bussen 1302 vorhanden sein, die ein oder mehr CAN-Busse, ein oder mehr FlexRay-Busse, ein oder mehr Ethernet-Busse und/oder ein oder mehr Busse anderen Typs mit einem anderen Protokoll umfassen können. In einigen Beispielen können zwei oder mehr Busse 1302 verwendet werden, um verschiedene Funktionen auszuführen, und/oder sie können zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus 1302 für die Funktionalität der Kollisionsvermeidung verwendet werden, und ein zweiter Bus 1302 kann für die Betätigungssteuerung verwendet werden. In jedem Beispiel kann jeder Bus 1302 mit beliebigen Komponenten des Fahrzeugs 1300 kommunizieren, und zwei oder mehr Busse 1302 können mit denselben Komponenten kommunizieren. In einigen Beispielen kann jedes SoC 1304, jeder Controller 1336 und/oder jeder Computer innerhalb des Fahrzeugs Zugriff auf dieselben Eingabedaten haben (z. B. Eingaben von Sensoren des Fahrzeugs 1300) und mit einem gemeinsamen Bus wie z. B. dem CAN-Bus verbunden sein.Although the bus 1302 is described herein as a CAN bus, this is not meant to be limiting. For example, FlexRay and/or Ethernet can be used in addition to or as an alternative to the CAN bus. Although a single line is used to represent bus 1302, this is not intended to be limiting. For example, there may be any number of buses 1302, which may include one or more CAN buses, one or more FlexRay buses, one or more Ethernet buses, and/or one or more other type buses with a different protocol. In some examples, two or more buses 1302 may be used to perform different functions and/or used for redundancy. For example, a first bus 1302 may be used for collision avoidance functionality and a second bus 1302 may be used for actuation control. In each example, each bus 1302 can communicate with any component of the vehicle 1300, and two or more buses 1302 can communicate with the same components. In some examples, each SoC 1304, controller 1336, and/or computer within the vehicle may have access to the same input data (e.g., inputs from vehicle 1300 sensors) and communicate with a common bus, such as a bus. B. be connected to the CAN bus.

Das Fahrzeug 1300 kann einen oder mehrere Controller 1336 wie jene umfassen, die hier Bezug nehmend auf 13A beschrieben wurden. Controller 1336 können für eine Vielzahl von Funktionen verwendet werden. Controller 1336 können mit verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1300 gekoppelt sein und für die Steuerung des Fahrzeugs 1300, die künstliche Intelligenz des Fahrzeugs 1300, das Infotainment für das Fahrzeug 1300 und/oder dergleichen verwendet werden.The vehicle 1300 may include one or more controllers 1336 such as those referred to herein 13A have been described. Controllers 1336 can be used for a variety of functions. Controllers 1336 may be coupled to various other vehicle 1300 components and systems and used for vehicle 1300 control, vehicle 1300 artificial intelligence, vehicle 1300 infotainment, and/or the like.

Das Fahrzeug 1300 kann ein oder mehrere Ein-Chip-Systeme (SoC) 1304 umfassen. Das SoC 1304 kann CPU(s) 1306, GPU(s) 1308, Prozessor(en) 1310, Cache(s) 1312, Beschleuniger 1314, Datenspeicher 1316 und/oder andere, nicht dargestellte Komponenten und Merkmale umfassen. SoC(s) 1304 können in einer Vielzahl von Plattformen und Systemen zur Steuerung des Fahrzeugs 1300 verwendet werden. Zum Beispiel können SoC(s) 1304 in einem System (z. B. dem System des Fahrzeugs 1300) mit einer HD-Karte 1322 kombiniert sein, die über eine Netzschnittstelle 1324 von einem oder mehreren Servern (z. B. Server(n) 1378 von 13D) Kartenauffrischungen und/oder -updates empfangen kann.The vehicle 1300 may include one or more systems on chip (SoC) 1304 . SoC 1304 may include CPU(s) 1306, GPU(s) 1308, processor(s) 1310, cache(s) 1312, accelerators 1314, memory 1316, and/or other components and features not shown. SoC(s) 1304 can be used in a variety of platforms and systems to control the vehicle 1300 . For example, SoC(s) 1304 in a system (e.g., vehicle's 1300 system) may be combined with an HD card 1322 that may be accessed via a network interface 1324 from one or more servers (e.g., server(s) 1378 from 13D ) may receive map refreshes and/or updates.

Die CPU(s) 1306 können einen CPU-Cluster oder CPU-Komplex (hier auch als „CCPLEX“ bezeichnet) umfassen. CPU(s) 1306 können mehrere Kerne und/oder L2-Caches enthalten. In einigen Ausführungsformen können CPU(s) 1306 zum Beispiel acht Kerne in einer kohärenten Multiprozessorkonfiguration umfassen. In einigen Ausführungsformen können CPU(s) 1306 vier Dual-Core-Cluster umfassen, wobei jeder Cluster einen dedizierten L2-Cache (z. B. einen 2 MB L2-Cache) aufweist. Die CPU(s) 1306 (z. B. der CCPLEX) können dazu konfiguriert sein, den Cluster-Simultanbetrieb zu unterstützen, sodass jede Cluster-Kombination von CPU(s) 1306 jederzeit aktiv sein kann.The CPU(s) 1306 may comprise a CPU cluster or CPU complex (also referred to herein as "CCPLEX"). CPU(s) 1306 may include multiple cores and/or L2 caches. For example, in some embodiments, CPU(s) 1306 may include eight cores in a coherent multiprocessor configuration. In some embodiments, CPU(s) 1306 may include four dual-core clusters, where each cluster has a dedicated L2 cache (e.g., a 2 MB L2 cache). The CPU(s) 1306 (e.g., the CCPLEX) may be configured to support cluster concurrent operation, such that any cluster combination of CPU(s) 1306 may be active at any time.

CPU(s) 1306 können Energieverwaltungsfunktionen implementieren, die eine oder mehrere der folgenden Funktionen umfassen: einzelne Hardwareblöcke können im Leerlauf automatisch getaktet werden, um dynamische Energie zu sparen; jeder Kerntakt kann getaktet werden, wenn der Kern aufgrund der Ausführung von WFI/WFE-Anweisungen nicht auf aktive Weise Anweisungen ausführt; jeder Kern kann unabhängig stromgesteuert sein; jeder Kerncluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder stromgesteuert sind; und/oder jeder Kerncluster kann unabhängig stromgesteuert sein, wenn alle Kerne stromgesteuert sind. CPU(s) 1306 können außerdem einen erweiterten Algorithmus zur Verwaltung von Energiezuständen implementieren, bei dem zulässige Energiezustände und erwartete Aufweckzeiten festgelegt werden und die Hardware/der Mikrocode den besten Energiezustand für den Kern, Cluster und CCPLEX bestimmt. Die Prozessorkerne können vereinfachte Sequenzen zur Eingabe des Energiezustands in Software unterstützen, wodurch die Arbeitslast auf Mikrocode abgewälzt wird.CPU(s) 1306 may implement power management functions, including one or more of the following: individual hardware blocks may be automatically clocked when idle to conserve dynamic power; each core clock can be clocked when the core is not actively executing instructions due to execution of WFI/WFE instructions; each core can be independently current controlled; each core cluster can be independently clocked if all cores are clocked or power-driven; and/or each core cluster may be independently current controlled if all cores are current controlled. CPU(s) 1306 may also implement an advanced power state management algorithm, where allowable power states and expected wake-up times are set, and the hardware/microcode determines the best power state for the core, cluster, and CCPLEX. The processor cores can support simplified power state entry sequences in software, offloading the workload to microcode.

GPU(s) 1308 können eine integrierte GPU (hier alternativ dazu als „iGPU“ bezeichnet) umfassen. GPU(s) 1308 können programmierbar und effizient für parallele Arbeitslasten sein. GPU(s) 1308 können in einigen Beispielen einen erweiterten Tensor-Anweisungsssatz verwenden. GPU(s) 1308 können einen oder mehrere Streaming-Mikroprozessoren umfassen, wobei jeder Streaming-Mikroprozessor einen L1-Cache umfassen kann (z. B. einen L1-Cache mit mindestens 96 KB Speicherkapazität), und zwei oder mehr Streaming-Mikroprozessoren können einen L2-Cache (z. B. einen L2-Cache mit 512 KB Speicherkapazität) gemeinsam benutzen. In einigen Ausführungsformen können die GPU(s) 1308 mindestens acht Streaming-Mikroprozessoren umfassen. GPU(s) 1308 können eine oder mehrere Berechnungs-Programmierschnittstellen (API(s)) verwenden. Darüber hinaus können GPU(s) 1308 eine oder mehrere parallele Computerplattformen und/oder Programmiermodelle (z. B. CUDA von NVIDIA) verwenden.GPU(s) 1308 may include an integrated GPU (alternatively referred to herein as an “iGPU”). GPU(s) 1308 can be programmable and efficient for parallel workloads. GPU(s) 1308 may use an extended tensor instruction set, in some examples. GPU(s) 1308 may include one or more streaming microprocessors, where each streaming microprocessor may include an L1 cache (e.g., an L1 cache with at least 96 KB of storage capacity), and two or more streaming microprocessors may include one Share an L2 cache (for example, a 512 KB L2 cache). In some embodiments, GPU(s) 1308 may include at least eight streaming microprocessors. GPU(s) 1308 may use one or more computational programming interfaces (API(s)). Additionally, GPU(s) 1308 may use one or more parallel computing platforms and/or programming models (eg, NVIDIA's CUDA).

GPU(s) 1308 können zur optimalen Leistung in Automobilanwendungen und eingebetteten Anwendungen energieoptimiert sein. GPU(s) 1308 können zum Beispiel auf einem Fin-Feldeffekttransistor (FinFET) hergestellt sein. Dies ist jedoch nicht einschränkend zu verstehen, und GPU(s) 1308 können auch mit anderen Halbleiterfertigungsverfahren hergestellt werden. Jeder Streaming-Mikroprozessor kann eine Anzahl von Prozessorkernen mit gemischter Genauigkeit umfassen, die in mehrere Blöcke unterteilt sind. Zum Beispiel können 64 PF32-Kerne und 32 PF64-Kerne in vier Prozessorblöcke unterteilt sein, ohne darauf beschränkt zu sein. In solch einem Beispiel können jedem Prozessorblock 16 FP32-Keme, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA TENSOR COREs mit gemischter Genauigkeit für Deep-Learning-Matrixarithmetik, ein L0-Anweisungscache, ein Warp-Scheduler, eine Dispatch-Einheit und/oder eine 64 KB-Registerdatei zugewiesen sein. Darüber hinaus können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade umfassen, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnungen und Adressierungsberechnungen zu ermöglichen. Streaming-Mikroprozessoren können eine unabhängige Thread-Scheduling-Fähigkeit umfassen, um eine feinkörnigere Synchronisierung und Kooperation zwischen parallelen Threads zu ermöglichen. Streaming-Mikroprozessoren können einen kombinierten L1-Datencache und eine gemeinsam benutzte Speichereinheit umfassen, um die Leistung zu verbessern und gleichzeitig die Programmierung zu vereinfachen.GPU(s) 1308 may be power optimized for optimal performance in automotive and embedded applications. GPU(s) 1308 may be fabricated on a fin field effect transistor (FinFET), for example. This is not limiting, however, and GPU(s) 1308 may be fabricated using other semiconductor fabrication techniques. Each streaming microprocessor may include a number of mixed-precision processor cores divided into multiple blocks. For example, 64 PF32 cores and 32 PF64 cores can be divided into four processor blocks, but are not limited to this. In such an example, each processor block can have 16 FP32 cores, 8 FP64 cores, 16 INT32 cores, two mixed-precision NVIDIA TENSOR COREs for deep learning matrix arithmetic, an L0 instruction cache, a warp scheduler, a dispatch unit and/or allocated a 64K register file. In addition, streaming microprocessors can include independent parallel integer and floating point data paths to enable efficient execution of workloads with a mix of computation and addressing computation. Streaming microprocessors may include independent thread scheduling capability to allow finer grained synchronization and cooperation between parallel threads. Streaming microprocessors may include a combined L1 data cache and shared memory unit to improve performance while simplifying programming.

GPU(s) 1308 können einen Speicher mit hoher Bandbreite (HBM) und/oder ein 16 GB-HBM2-Speicher-Subsystem umfassen, um in einigen Beispielen eine Spitzen-Speicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In einigen Beispielen kann zusätzlich oder alternativ zum HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher (SGRAM) wie z. B. ein „Graphics double data rate type five synchronous random-access memory“ (GDDR5) verwendet werden,GPU(s) 1308 may include high-bandwidth memory (HBM) and/or a 16GB HBM2 memory subsystem to provide peak memory bandwidth of about 900GB/second in some examples. In some examples, in addition to or as an alternative to HBM memory, synchronous graphics random access memory (SGRAM), such as B. a "Graphics double data rate type five synchronous random-access memory" (GDDR5) can be used,

GPU(s) 1308 können eine Unified-Memory-Technologie mit Zugriffszählern umfassen, um eine genauere Zuweisung von Speicherseiten an den Prozessor zu ermöglichen, der am häufigsten auf diese zugreift, und dadurch die Effizienz von Speicherbereichen, die von mehreren Prozessoren gemeinsam genutzt werden, zu erhöhen. In einigen Beispielen kann die Unterstützung von Adressübersetzungsdiensten (ATS) verwendet werden, um GPU(s) 1308 den direkten Zugriff auf Seitentabellen von CPU(s) 1306 zu ermöglichen. In solchen Beispielen kann eine Adressübersetzungsanforderung an die CPU(s) 1306 gesendet werden, wenn die Speicherverwaltungseinheit (MMU) von GPU(s) 1308 einen Fehlschlag erleidet. In Reaktion darauf können GPU(s) 1308 in ihren Seitentabellen nach einer virtuell-physikalischen Zuordnung für die Adresse suchen und die Übersetzung an GPU(s) 1308 zurücksenden. Dadurch kann Unified-Memory-Technologie einen einzigen einheitlichen virtuellen Adressraum für den Speicher sowohl von CPU(s) 1306 als auch von GPU(s) 1308 ermöglichen, wodurch die Programmierung von GPU(s) 1308 und die Portierung von Anwendungen auf GPU(s) 1308 vereinfacht wird.GPU(s) 1308 may include unified memory technology with access counters to enable more accurate allocation of memory pages to the processor accessing them most frequently, thereby increasing the efficiency of memory areas shared by multiple processors. to increase. In some examples, address translation services (ATS) support may be used to allow GPU(s) 1308 direct access to CPU(s) 1306 page tables. In such examples, an address translation request may be sent to CPU(s) 1306 when the memory management unit (MMU) of GPU(s) 1308 fails. In response, GPU(s) 1308 may look up their page tables for a virtual-physical mapping for the address and return the translation to GPU(s) 1308. This allows unified memory technology to provide a single, unified virtual address space for the memory of both CPU(s) 1306 and also from GPU(s) 1308, thereby simplifying programming of GPU(s) 1308 and porting of applications to GPU(s) 1308.

Darüber hinaus können GPU(s) 1308 einen Zugriffszähler umfassen, der die Zugriffshäufigkeit der GPU(s) 1308 auf den Speicher anderer Prozessoren verfolgen kann. Der Zugriffszähler kann dazu beitragen, sicherzustellen, dass Speicherseiten in den physischen Speicher desjenigen Prozessors verschoben werden, der am häufigsten auf die Seiten zugreift.Additionally, GPU(s) 1308 may include an access counter that may track the number of times GPU(s) 1308 have accessed the memory of other processors. The hit count can help ensure that memory pages are moved to the physical memory of the processor that is accessing the pages most frequently.

SoC(s) 1304 können eine beliebige Anzahl von Cache(s) 1312 umfassen, einschließlich der hier beschriebenen. Zum Beispiel können die Cache(s) 1312 einen L3-Cache umfassen, der sowohl für CPU(s) 1306 als auch für GPU(s) 1308 verfügbar ist (z. B. weil er sowohl mit CPU(s) 1306 als auch mit GPU(s) 1308 verbunden ist). Cache(s) 1312 können einen Write-Back-Cache umfassen, der z. B. durch Verwendung eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI usw.) den Zustand von Zeilen verfolgen kann. Der L3-Cache kann je nach Ausführung 4 MB oder mehr aufweisen, obwohl auch kleinere Cache-Größen verwendet werden können.SoC(s) 1304 may include any number of cache(s) 1312, including those described herein. For example, cache(s) 1312 may include an L3 cache that is available to both CPU(s) 1306 and GPU(s) 1308 (e.g., because it is shared with both CPU(s) 1306 and GPU(s) 1308 is connected). Cache(s) 1312 may include a write-back cache, e.g. by using a cache coherency protocol (e.g. MEI, MESI, MSI, etc.) to track the state of rows. The L3 cache can be 4MB or larger depending on the implementation, although smaller cache sizes can also be used.

SoC(s) 1304 können eine arithmetische Logikeinheit(en) (ALU(s)) enthalten, die bei der Durchführung von Verarbeitungen in Bezug auf eine der vielen Tasks oder Operationen des Fahrzeugs 1300 - wie der Verarbeitung von DNNs - genutzt werden kann. Darüber hinaus können SoC(s) 1304 eine oder mehrere Gleitkommaeinheiten (FPU(s)) - oder andere mathematische Coprozessor- oder numerische Coprozessor-Typen - zur Durchführung mathematischer Operationen innerhalb des Systems umfassen. Zum Beispiel können SoC(s) 104 eine oder mehrere FPUs umfassen, die in einer oder mehreren CPU(s) 1306 und/oder GPU(s) 1308 als Ausführungseinheiten integriert sind.SoC(s) 1304 may include an arithmetic logic unit(s) (ALU(s)) that may be utilized in performing processing related to one of the many tasks or operations of the vehicle 1300, such as processing DNNs. Additionally, SoC(s) 1304 may include one or more floating point units (FPU(s)) - or other types of math coprocessors or numeric coprocessors - for performing math operations within the system. For example, SoC(s) 104 may include one or more FPUs integrated with one or more CPU(s) 1306 and/or GPU(s) 1308 as execution units.

SoC(s) 1304 können einen oder mehrere Beschleuniger 1314 umfassen (z. B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination daraus). Zum Beispiel können SoC(s) 1304 einen Hardwarebeschleunigungscluster umfassen, der optimierte Hardware-Beschleuniger und/oder einen großen On-Chip-Speicher umfassen kann. Der große On-Chip-Speicher (z. B. 4 MB SRAM) kann dem Hardwarebeschleunigungscluster die Beschleunigung neuronaler Netze und anderer Berechnungen ermöglichen. Der Hardwarebeschleunigungscluster kann zur Ergänzung der GPU(s) 1308 und zur Übernahme einiger Tasks von GPU(s) 1308 verwendet werden (z. B., um mehr Zyklen der GPU(s) 1308 für die Durchführung anderer Taskts freizugeben). Zum Beispiel können Beschleuniger 1314 für gezielte Arbeitslasten (z. B. Perzeption, konvolutionale neuronale Netze (CNNs) usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung zu geeignet zu sein. Der Begriff „CNN“, wie hier verwendet, kann alle Arten von CNNs umfassen, einschließlich regionenbasierter oder regionaler konvolutionale neuronaler Netze (RCNNs) und Fast RCNNs (z. B. für die Objekterkennung).SoC(s) 1304 may include one or more accelerators 1314 (e.g., hardware accelerators, software accelerators, or a combination thereof). For example, SoC(s) 1304 may include a hardware acceleration cluster, which may include optimized hardware accelerators and/or large on-chip memory. The large on-chip memory (e.g. 4MB SRAM) can enable the hardware acceleration cluster to accelerate neural networks and other calculations. The hardware acceleration cluster may be used to complement the GPU(s) 1308 and take over some tasks from the GPU(s) 1308 (e.g., to free up more cycles of the GPU(s) 1308 to perform other tasks). For example, accelerators 1314 can be used for targeted workloads (e.g., perception, convolutional neural networks (CNNs), etc.) that are stable enough to be eligible for acceleration. The term "CNN" as used herein can encompass all types of CNNs, including region-based or regional convolutional neural networks (RCNNs) and Fast RCNNs (e.g., for object detection).

Beschleuniger 1314 (z. B. der Hardwarebeschleunigungscluster) können einen Deep-Learning-Beschleuniger (DLA) umfassen. DLA(s) können eine oder mehrere Tensor-Verarbeitungseinheiten (TPUs) umfassen, die dazu konfiguriert sein können, zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und das Inferencing bereitstellen. TPUs können Beschleuniger sein, die dazu konfiguriert und optimiert sind, Bildverarbeitungsfunktionen (z. B. für CNNs, RCNNs usw.) durchzuführen. DLA(s) können darüber hinaus für eine bestimmte Gruppe von neuronalen Netztypen und Gleitkommaoperationen sowie für das Inferencing optimiert sein. Das Design der DLA(s) kann mehr Leistung pro Millimeter bieten als eine Universal-GPU und übertrifft die Leistung einer CPU bei weitem. TPU(s) können mehrere Funktionen durchführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die z. B. INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichtungen unterstützt, sowie Postprozessorfunktionen.Accelerators 1314 (e.g., the hardware acceleration cluster) may include a deep learning accelerator (DLA). DLA(s) may include one or more tensor processing units (TPUs) that may be configured to provide an additional tens of trillion operations per second for deep learning applications and inferencing. TPUs can be accelerators configured and optimized to perform image processing functions (e.g. for CNNs, RCNNs, etc.). DLA(s) may also be optimized for a specific set of neural network types and floating point operations and inferencing. The design of the DLA(s) can offer more performance per millimeter than a general-purpose GPU and far exceeds the performance of a CPU. TPU(s) can perform multiple functions, including a single-instance convolution function, e.g. B. INT8, INT16 and FP16 data types are supported for both features and weights, as well as post-processor functions.

DLA(s) können schnell und effizient neuronale Netze, insbesondere CNNs, mit verarbeiteten oder unverarbeiteten Daten für verschiedene Funktionen ausführen, zum Beispiel einschließlich, ohne darauf beschränkt zu sein: ein CNN zur Identifizierung und Erkennung von Objekten unter Verwendung von Daten von Kamerasensoren; ein CNN zur Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN zur Erkennung und Identifizierung von Einsatzfahrzeugen unter Verwendung von Daten von Mikrofonen; ein CNN zur Gesichtserkennung und Identifizierung von Fahrzeugbesitzem unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheitsbezogene Ereignisse.DLA(s) can quickly and efficiently execute neural networks, particularly CNNs, with processed or unprocessed data for various functions including, for example but not limited to: a CNN to identify and detect objects using data from camera sensors; a CNN for distance estimation using data from camera sensors; a CNN to detect and identify emergency vehicles using data from microphones; a CNN for facial recognition and identification of vehicle owners using data from camera sensors; and/or a CNN for security-related events.

DLA(s) können jede Funktion von GPU(s) 1308 durchführen, und ein Entwickler kann die Verwendung eines Inferencing-Beschleunigers zum Beispiel für jede Funktion der DLA(s) oder GPU(s) 1308 vorsehen. Der Entwickler kann zum Beispiel die Verarbeitung von CNNs und Gleitkommaoperationen auf DLA(s) konzentrieren und andere Funktionen den GPU(s) 1308 und/oder anderen Beschleunigern 1314 überlassen.DLA(s) may perform any function of GPU(s) 1308, and a developer may provide for use of an inferencing accelerator for each function of DLA(s) or GPU(s) 1308, for example. For example, the developer may concentrate processing of CNNs and floating point operations on DLA(s) and leave other functions to GPU(s) 1308 and/or other accelerators 1314.

Beschleuniger 1314 (z. B. Hardwarebeschleunigungscluster) können einen programmierbaren Visionsbeschleuniger (PVA) umfassen, der hier auch als Computer-Visionsbeschleuniger bezeichnet wird. Die PVA(s) können so konzipiert und konfiguriert sein, dass sie Computer-Vision-Algorithmen für erweiterte Fahrerassistenzsysteme (ADAS), autonomes Fahren und/oder Augmented-Reality- (AR) und/oder Virtual-Reality-Anwendungen (VR) beschleunigen. PVA(s) können ein Gleichgewicht zwischen Leistung und Flexibilität bieten. Zum Beispiel kann jeder PVA, ohne darauf beschränkt zu sein, eine beliebige Anzahl von Rechenkernen mit reduziertem Anweisungssatz (RISC), direkten Speicherzugriff (DMA) und/oder eine beliebige Anzahl von Vektorprozessoren umfassen.Accelerators 1314 (e.g., hardware acceleration clusters) may include a programmable vision accelerator (PVA), also referred to herein as a computer vision accelerator. The PVA(s) may be designed and configured to accelerate computer vision algorithms for advanced driver assistance systems (ADAS), autonomous driving, and/or augmented reality (AR) and/or virtual reality (VR) applications . PVA(s) can offer a balance between performance and flexibility. For example, each PVA may include, but is not limited to, any number of reduced instruction set (RISC), direct memory access (DMA), and/or any number of vector processors.

RISC-Kerne können mit Bildsensoren (z. B. Bildsensoren einer der Kameras, die hier beschrieben werden), Bildsignalprozessoren und/oder dergleichen zusammenwirken. Jeder der RISC-Kerne kann eine beliebige Menge an Speicher umfassen. RISC-Kerne können je nach Ausführungsform eine Reihe von Protokollen verwenden. In einigen Beispielen können die RISC-Kerne ein Echtzeitbetriebssystem (RTOS) ausführen. RISC-Kerne können mit einer oder mehreren integrierten Schaltungen, anwendungsspezifischen integrierten Schaltungen (ASICs) und/oder Speicherbausteinen implementiert sein. die RISC-Kerne können zum Beispiel einen Anweisungscache und/oder einen eng gekoppelten RAM enthalten.RISC cores may interact with image sensors (e.g., image sensors of any of the cameras described herein), image signal processors, and/or the like. Each of the RISC cores can contain any amount of memory. RISC cores can use a number of protocols depending on the embodiment. In some examples, the RISC cores can run a real-time operating system (RTOS). RISC cores may be implemented with one or more integrated circuits, application specific integrated circuits (ASICs), and/or memory devices. the RISC cores may include an instruction cache and/or tightly coupled RAM, for example.

Die DMA kann es Komponenten von PVA(s) ermöglichen, unabhängig von CPU(s) 1306 auf den Systemspeicher zuzugreifen. Die DMA kann eine beliebige Anzahl von Merkmalen zur Optimierung der PVA unterstützen, einschließlich, ohne darauf beschränkt zu sein, die Unterstützung mehrdimensionaler Adressierung und/oder zirkulärer Adressierung. In einigen Beispielen kann die DMA bis zu sechs oder mehr Adressierungsdimensionen unterstützen, die, ohne darauf beschränkt zu sein, Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockstaffelung, vertikale Blockstaffelung und/oder Tiefenstaffelung umfassen können.DMA may allow components of PVA(s) to access system memory independently of CPU(s) 1306. The DMA can support any number of features to optimize the PVA, including but not limited to supporting multi-dimensional addressing and/or circular addressing. In some examples, the DMA may support up to six or more dimensions of addressing, which may include, but are not limited to, block width, block height, block depth, horizontal block stagger, vertical block stagger, and/or depth stagger.

Die Vektorprozessoren können programmierbare Prozessoren sein, die dazu ausgelegt sein können, die Programmierung von Computer-Vision-Algorithmen effizient und flexibel auszuführen und Signalverarbeitungsfähigkeiten bereitzustellen. In einigen Beispielen kann der PVA einen PVA-Kern und zwei Vektorverarbeitungssubsystem-Partitionen umfassen. Der PVA-Kern kann ein Prozessor-Subsystem, DMA-Engine(s) (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte umfassen. Das Vektorverarbeitungssubsystem kann als Primärverarbeitungsengine der PVA arbeiten und eine Vektorverarbeitungseinheit (VPU), einen Anweisungscache und/oder einen Vektorspeicher (z. B. VMEM) umfassen. Ein VPU-Kern kann einen digitalen Signalprozessor wie z. B. einen digitalen „Single Instruction, Multiple Data“ (SIMD), „Very Long Instruction Word“ (VLIW)-Signalprozessor umfassen. Die Kombination von SIMD und VLIW kann den Durchsatz und die Geschwindigkeit erhöhen.The vector processors may be programmable processors that may be configured to efficiently and flexibly perform computer vision algorithm programming and provide signal processing capabilities. In some examples, the PVA may include a PVA core and two vector processing subsystem partitions. The PVA core may include a processor subsystem, DMA engine(s) (eg, two DMA engines), and/or other peripherals. The vector processing subsystem may operate as the primary processing engine of the PVA and may include a vector processing unit (VPU), an instruction cache, and/or vector memory (e.g., VMEM). A VPU core can be a digital signal processor such as e.g. B. a Single Instruction, Multiple Data (SIMD), Very Long Instruction Word (VLIW) digital signal processor. The combination of SIMD and VLIW can increase throughput and speed.

Jeder der Vektorprozessoren kann einen Anweisungscache umfassen und mit dediziertem Arbeitsspeicher gekoppelt sein. Dadurch kann in einigen Beispielen jeder der Vektorprozessoren dazu konfiguriert sein, unabhängig von anderen Vektorprozessoren zu arbeiten. In anderen Beispielen können Vektorprozessoren, die in einer bestimmten PVA enthalten sind, dazu konfiguriert sein, Datenparallelität zu verwenden. Zum Beispiel können mehrere Vektorprozessoren, die in einer Einzel-PVA enthalten sind, denselben Computer-Vision-Algorithmus ausführen, jedoch für unterschiedliche Bereiche eines Bilds. In anderen Beispielen können Vektorprozessoren, die in einer bestimmten PVA enthalten sind, gleichzeitig verschiedene Bildverarbeitungsalgorithmen am selben Bild ausführen, oder sogar verschiedene Algorithmen an aufeinanderfolgenden Bildern oder Teilen eines Bilds ausführen. Unter anderem kann eine beliebige Anzahl von PVAs im Hardware-Beschleunigungscluster enthalten sein, und in jedem PVA kann eine beliebige Anzahl von Vektorprozessoren enthalten sein. Zudem können PVA(s) einen zusätzlichen Speicher mit Fehlerkorrekturcode (ECC) umfassen, um die Gesamtsystemsicherheit zu erhöhen.Each of the vector processors may include an instruction cache and may be coupled to dedicated memory. Thus, in some examples, each of the vector processors can be configured to operate independently of other vector processors. In other examples, vector processors included in a particular PVA may be configured to use data parallelism. For example, multiple vector processors contained within a single PVA can run the same computer vision algorithm, but for different regions of an image. In other examples, vector processors included in a particular PVA may concurrently run different image processing algorithms on the same image, or even run different algorithms on consecutive images or portions of an image. Among other things, any number of PVAs can be included in the hardware acceleration cluster, and any number of vector processors can be included in each PVA. In addition, PVA(s) may include additional memory with Error Correcting Code (ECC) to increase overall system security.

Beschleuniger 1314 (z. B. der Hardware-Beschleunigungscluster) können ein Ein-Chip-Computer-Vision-Netz und einen statischen Direktzugriffsspeicher (SRAM) umfassen, um Beschleunigern 1314 einen SRAM mit hoher Bandbreite und geringer Latenz bereitzustellen. In einigen Beispielen kann der On-Chip-Speicher mindestens 4 MB SRAM umfassen, der zum Beispiel, ohne darauf beschränkt zu sein, aus acht feldkonfigurierbaren Speicherblöcken besteht, auf welche sowohl der PVA als auch der DLA zugreifen können. Jedes Paar von Speicherblöcken kann eine Advanced Peripheral Bus (APB)-Schnittstelle, Konfigurationsschaltung, einen Controller und einen Multiplexer umfassen. Jede Art von Speicher kann verwendet werden. Der PVA und der DLA können über ein Backbone auf den Speicher zugreifen, das dem PVA und der DLA einen Hochgeschwindigkeitszugriff auf den Speicher ermöglicht. Das Backbone kann ein Ein-Chip-Computer-Vision-Netz umfassen, das den PVA und den DLA (z. B. über APB) mit dem Speicher verbindet.Accelerator 1314 (e.g., the hardware acceleration cluster) may include a on-chip computer vision network and static random access memory (SRAM) to provide accelerators 1314 with high-bandwidth, low-latency SRAM. In some examples, the on-chip memory may include at least 4MB of SRAM, consisting of, for example but not limited to, eight field-configurable memory blocks accessible to both the PVA and the DLA. Each pair of memory blocks may include an Advanced Peripheral Bus (APB) interface, configuration circuitry, a controller, and a multiplexer. Any type of memory can be used. The PVA and the DLA can access the storage via a backbone that allows the PVA and the DLA to access the storage at high speed. The backbone may include a single-chip computer vision network that connects the PVA and DLA (e.g., via APB) to memory.

Das Ein-Chip-Computer-Vision-Netz kann eine Schnittstelle umfassen, die vor der Übertragung von Steuersignalen/Adressen/Daten feststellt, dass sowohl der PVA als auch der DLA vollständige und gültige Signale bereitstellen. Solch eine Schnittstelle kann getrennte Phasen und getrennte Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie eine Burst-Kommunikation für die kontinuierliche Datenübertragung vorsehen. Diese Art von Schnittstelle kann mit den ISO 26262- oder IEC 61508-Normen konform sein, auch wenn andere Normen und Protokolle verwendet werden können.The on-chip computer vision network may include an interface that determines that both the PVA and DLA provide complete and valid signals before transmitting control signals/address/data. Such an interface may provide separate phases and separate channels for control signal/address/data transmission and burst communication for continuous data transmission. This type of interface can conform to ISO 26262 or IEC 61508 standards, although other standards and protocols can be used.

In einigen Beispielen können die SoC(s) 1304 einen Echtzeit-Raytracing-Hardwarebeschleuniger enthalten, wie z. B. in der US-Patentanmeldung Nr. 16/101.232 beschrieben, die am 10. August 2018 eingereicht wurde. Der Echtzeit-Strahlenverfolgungs-Hardwarebeschleuniger kann zur schnellen und effizienten Bestimmung der Position und Ausdehnung von Objekten (z. B. innerhalb eines Weltmodells), zur Erzeugung von Echtzeit-Visualisierungssimulationen, zur RADAR-Signalinterpretation, zur Schallausbreitungssynthese und/oder -analyse, zur Simulation von SONAR-Systemen, zur allgemeinen Wellenausbreitungssimulation, zum Vergleich mit LIDAR-Daten zu Lokalisierungszwecken und/oder andere Funktionen und/oder zu anderen Zwecken verwendet werden. In einigen Ausführungsformen können eine oder mehrere Tree Traversal Units (TTUs) zur Ausführung einer oder mehrerer Operationen im Zusammenhang mit der Strahlenverfolgung verwendet werden.In some examples, the SoC(s) 1304 may include a real-time ray tracing hardware accelerator, such as. B. in the U.S. Patent Application No. 16/101,232 which was filed on August 10, 2018. The real-time ray-tracing hardware accelerator can be used for fast and efficient determination of the position and extent of objects (e.g. within a world model), generation of real-time visualization simulations, RADAR signal interpretation, sound propagation synthesis and/or analysis, simulation by SONAR systems, for general wave propagation simulation, for comparison with LIDAR data for localization purposes and/or other functions and/or for other purposes. In some embodiments, one or more tree traversal units (TTUs) may be used to perform one or more ray tracing-related operations.

Beschleuniger 1314 (z. B. der Hardwarebeschleunigungscluster) haben eine weite Bandbreite von Einsatzmöglichkeiten für das autonome Fahren. Der PVA kann ein programmierbarer Visionsbeschleuniger sein, der für Schlüsselverarbeitungsschritte in ADAS und autonomen Fahrzeugen verwendet werden kann. Die Fähigkeiten von PVAs sind gut für algorithmische Bereiche geeignet, die eine vorhersehbare Verarbeitung bei geringer Leistungsaufnahme und niedriger Latenz erfordern. Mit anderen Worten, der PVA eignet sich gut für halbdichte oder dichte regelmäßige Berechnungen, selbst bei kleinen Datensätzen, die vorhersehbare Laufzeiten mit geringer Latenz und niedriger Leistungsaufnahme erfordern. Im Kontext von Plattformen für autonome Fahrzeuge sind PVAs daher dazu ausgelegt, klassische Computer-Vision-Algorithmen auszuführen, da sie bei der Objekterkennung effizient sind und mathematisch mit Ganzzahlen arbeiten.Accelerators 1314 (e.g., the hardware acceleration cluster) have a wide range of uses for autonomous driving. The PVA can be a programmable vision accelerator that can be used for key processing steps in ADAS and autonomous vehicles. The capabilities of PVAs are well suited to algorithmic domains that require predictable, low-power, and low-latency processing. In other words, the PVA is well suited for semi-dense or dense regular computations, even with small data sets that require predictable, low-latency, low-power runtimes. In the context of autonomous vehicle platforms, PVAs are therefore designed to run classical computer vision algorithms because they are efficient at object recognition and work mathematically with integers.

Zum Beispiel wird der PVA gemäß einer Ausführungsform der Technologie verwendet, um Computer-Stereovision durchzuführen. In einigen Beispielen kann ein Semi-Global-Matching-Algorithmus verwendet werden, obwohl dies nicht einschränkend zu verstehen ist. Viele Anwendungen für autonomes Fahren der Level 3 bis 5 erfordern eine Bewegungsschätzung/einen Stereoabgleich während der Fahrt (z. B. Bewegungsstruktur, Fußgängererkennung, Fahrspurerkennung usw.). der PVA kann auf der Basis der Eingaben von zwei monokularen Kameras eine Computer-Stereovision-Funktion durchführen.For example, according to one embodiment of the technology, the PVA is used to perform computer stereo vision. A semi-global matching algorithm may be used in some examples, although this is not intended to be limiting. Many Level 3-5 autonomous driving applications require motion estimation/stereo matching while driving (e.g. motion structure, pedestrian detection, lane detection, etc.). the PVA can perform a computer stereo vision function based on inputs from two monocular cameras.

In einigen Beispielen kann der PVA verwendet werden, um einen dichten optischen Fluss zu realisieren. Zum Beispiel durch Verarbeitung von RADAR-Rohdaten (z. B. mit einer 4D-Fast-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In anderen Beispielen wird PVA für die Time-of-flight (ToF)-Tiefenverarbeitung verwendet, zum Beispiel durch Verarbeitung von Time-of-flight -Rohdaten, um verarbeitete Time-of-flight-Daten bereitzustellen.In some examples, the PVA can be used to realize a dense optical flow. For example by processing raw RADAR data (e.g. with a 4D Fast Fourier Transform) to provide processed RADAR data. In other examples, PVA is used for deep time-of-flight (ToF) processing, for example by processing raw time-of-flight data to provide processed time-of-flight data.

Der DLA kann verwendet werden, um jede Art von Netz zur Verbesserung der Steuerung und Fahrsicherheit zu betreiben, einschließlich zum Beispiel eines neuronales Netzes, das ein Konfidenzmaß für jede Objekterkennung ausgibt. Solch ein Konfidenzwert kann als eine Wahrscheinlichkeit interpretiert werden, oder als Bereitstellung einer relativen „Gewichtung“ jeder Detektion im Vergleich zu anderen Detektionen. Dieser Konfidenzwert ermöglicht es dem System, weitere Entscheidungen darüber zu treffen, welche Erkennungen als richtig positive Detektionen und nicht als falsch positive Detektionen zu betrachten sind. Zum Beispiel kann das System einen Schwellenwert für die Konfidenz festlegen und nur Detektionen, die den Schwellenwert übersteigen, als echte positive Detektionen betrachten. Bei einem automatischen Notbremssystem (AEB) würden falsch positive Detektionen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, was offensichtlich unerwünscht ist. Deshalb sollten nur die sichersten Detektionen als Auslöser für die Notbremsung (AEB) in Betracht gezogen werden. Der DLA kann ein neuronales Netz zur Regression des Konfidenzwerts ausführen. Das neuronale Netzwerk kann als Eingabe mindestens eine Teilmenge von Parametern verwenden, wie z. B., unter anderem, Begrenzungsrahmen-Abmessungen, die (z. B. von einem anderen Teilsystem) erhaltene Schätzung der Grundfläche, die Ausgabe von IMU-Sensor(en) 1366, die mit der Ausrichtung des Fahrzeugs 1300 korreliert, die Entfernung, 3D-Positionsschätzungen eines Objekts, die vom neuronalen Netz und/oder anderen Sensoren (z. B. LIDAR-Sensor(en) 1364 oder RADAR-Sensor(en) 1360) erhalten wurden.The DLA can be used to operate any type of control and driving safety enhancement network including, for example, a neural network that outputs a confidence measure for each object detection. Such a confidence value can be interpreted as a probability, or as providing a relative "weight" of each detection compared to other detections. This confidence value allows the system to make further decisions about which detections to consider as true positives and not false positives. For example, the system can set a confidence threshold and only consider detections that exceed the threshold as true positive detections. In an automatic emergency braking (AEB) system, false positive detections would result in the vehicle automatically performing emergency braking, which is obviously undesirable. Therefore, only the safest detections should be considered as triggers for emergency braking (AEB). The DLA can run a neural network to regress the confidence value. The neural network can take as input at least a subset of parameters such as: B., among others, bounding box dimensions, the floor area estimate obtained (e.g., from another subsystem), the output of IMU sensor(s) 1366 correlating to the orientation of the vehicle 1300, the distance, 3D - Position estimates of an object obtained from the neural network and/or other sensors (e.g. LIDAR sensor(s) 1364 or RADAR sensor(s) 1360).

SoC(s) 1304 können Datenspeicher 1316 (z. B. Arbeitsspeicher) umfassen. Datenspeicher 1316 können On-Chip-Speicher von SoC(s) 1304 sein, die neuronale Netze speichern können, die auf der GPU und/oder dem DLA ausgeführt werden. In einigen Beispielen kann die Kapazität von Datenspeichern 1316 groß genug sein, um zur Redundanz und Sicherheit mehrere Instanzen von neuronalen Netzen zu speichern. Datenspeicher 1312 können L2- oder L3-Cache(s) 1312 umfassen. Datenspeicher 1316 kann sich auf den Arbeitsspeicher beziehen, der dem PVA, DLA und/oder anderen Beschleunigern 1314 zugeordnet ist, wie hier beschrieben.SoC(s) 1304 may include data storage 1316 (e.g., memory). Data storage 1316 may be on-chip memory of SoC(s) 1304 that may store neural networks running on the GPU and/or the DLA. In some examples, the capacity of data stores 1316 may be large enough to store multiple neural network instances for redundancy and security. Data stores 1312 may include L2 or L3 cache(s) 1312. Data storage 1316 may refer to the working memory associated with the PVA, DLA, and/or other accelerators 1314 as described herein.

SoC(s) 1304 können einen oder mehrere Prozessoren 1310 (z. B. eingebettete Prozessoren) umfassen. Prozessoren 1310 können einen Boot- und Energieverwaltungssprozessor umfassen, die ein dedizierter Prozessor und ein Subsystem sein können, die Boot- und Energieverwaltungsfunktionen sowie die diesbezügliche Sicherheitsdurchsetzung übernehmen. Der Boot- und Energieverwaltungsprozessor kann Teil der Bootsequenz von SoC(s) 1304 sein und Laufzeitenergieverwaltungsdienste bereitstellen. Der Boot- und Energieverwaltungsprozessor kann Takt- und Spannungsprogrammierung, Unterstützung bei Systemübergängen in einen niedrigen Leistungszustand, die Steuerung von SoC(s) 1304-Termiken und Temperatursensoren und/oder die Steuerung von SoC(s) 1304-Leistungszuständen bereitstellen. Jeder Temperatursensor kann als Ringoszillator implementiert sein, dessen Ausgabefrequenz proportional zur Temperatur ist, und die SoC(s) 1304 können die Ringoszillatoren verwenden, um die Temperatur der CPU(s) 1306, GPU(s) 1308 und/oder Beschleuniger 1314 zu detektieren. Wenn bestimmt wird, dass Temperaturen einen Schwellenwert übersteigen, der Boot- und Energieverwaltungsprozessor eine Temperaturfehlerroutine einleiten und SoC(s) 1304 in einen niedrigen Leistungszustand versetzen und/oder das Fahrzeug 1300 in einen Haltemodus versetzen (z. B. das Fahrzeug 1300 zu einem sicheren Halt bringen).SoC(s) 1304 may include one or more processors 1310 (e.g., embedded processors). Processors 1310 may include a boot and power management processor, which may be a dedicated processor and subsystem that performs boot and power management functions and security enforcement related thereto. The boot and power management processor may be part of the SoC(s) 1304 boot sequence and provide runtime power management services. The boot and power management processor may provide clock and voltage programming, support for system transitions to low power states, control of SoC(s) 1304 thermals and temperature sensors, and/or control of SoC(s) 1304 power states. Each temperature sensor can be implemented as a ring oscillator whose output frequency is proportional to temperature, and the SoC(s) 1304 can use the ring oscillators to detect the temperature of the CPU(s) 1306, GPU(s) 1308, and/or accelerator 1314. If temperatures are determined to exceed a threshold, the boot and power management processor will initiate a temperature fault routine and place SoC(s) 1304 in a low power state and/or place vehicle 1300 in a hold mode (e.g., place vehicle 1300 in a safe bring a stop).

Prozessoren 1310 können außerdem eine Reihe von eingebetteten Prozessoren umfassen, die als Audioverarbeitungs-Engine dienen können. Die Audioverarbeitungs-Engine kann ein Audio-Subsystem sein, das eine volle Hardwareunterstützung für Mehrkanalton über mehrere Schnittstellen und eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht, In einigen Beispielen ist die Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.Processors 1310 can also include a variety of embedded processors that can serve as an audio processing engine. The audio processing engine can be an audio subsystem that enables full hardware support for multi-channel audio over multiple interfaces and a wide and flexible range of audio I/O interfaces. In some examples, the audio processing engine is a dedicated processor core with a digital Signal processor with dedicated RAM.

Prozessoren 1310 können außerdem eine ständig eingeschaltete Prozessor-Engine umfassen, die notwendige Hardware-Funktionen zur Unterstützung des Low-Power-Managements der Sensoren und der Aufweck-Anwendungsfälle bereitstellen kann. Die ständig eingeschaltete Prozessor-Engine kann einen Prozessorkern, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Taktgeber und Unterbrechungssteuerungen), verschiedene E/A-Steuerungsperipheriegeräte und Routing-Logik umfassen.Processors 1310 may also include an always-on processor engine that may provide necessary hardware functions to support low-power management of the sensors and wake-up use cases. The always-on processor engine may include a processor core, tightly coupled RAM, supporting peripherals (e.g., clocks and interrupt controllers), various I/O control peripherals, and routing logic.

Prozessoren 1310 können außerdem eine Sicherheits-Cluster-Engine umfassen, die ein spezielles Prozessor-Subsystem für das Sicherheitsmanagement von Automobilanwendungen umfasst. Die Sicherheits-Cluster-Engine kann zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Taktgeber, eine Unterbrechungssteuerung usw.) und/oder Routing-Logik umfassen. In einem Sicherheitsmodus können die zwei oder mehr Kerne in einem in einem Gleichschritt (Lockstep)-Modus arbeiten und als ein Einzelkem mit einer Vergleichslogik zur Erkennung von Unterschieden zwischen ihren Operationen funktionieren.Processors 1310 may also include a security cluster engine that includes a dedicated processor subsystem for security management of automotive applications. The security cluster engine may include two or more processor cores, tightly coupled RAM, supporting peripherals (e.g., clocks, an interrupt controller, etc.), and/or routing logic. In a security mode, the two or more cores can operate in a lockstep mode and function as a single core with comparison logic to detect differences between their operations.

Prozessoren 1310 können außerdem eine Echtzeit-Kamera-Engine umfassen, die ein spezielles Prozessor-Subsystem für das Echtzeit-Kamera-Management umfassen kann.Processors 1310 may also include a real-time camera engine, which may include a dedicated processor subsystem for real-time camera management.

Prozessoren 1310 können außerdem einen Signalprozessor mit hohem Dynamikbereich umfassen, der einen Bildsignalprozessor umfassen kann, der eine Hardware-Engine ist, die Teil der Kameraverarbeitungs-Pipeline ist.Processors 1310 may also include a high dynamic range signal processor, which may include an image signal processor, which is a hardware engine that is part of the camera processing pipeline.

Prozessoren 1310 können einen Videobild-Kompositor umfassen, der ein (z. B. auf einem Mikroprozessor implementierter) Verarbeitungsblock sein kann, der Videonachbearbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um das endgültige Bild für das Abspielfenster zu erzeugen. Der Videobild-Kompositor kann an Weitwinkelkamera(s) 1370, an Surround-View-Kamera(s) 1374 und/oder an Innenraumüberwachungskamerasensoren eine Linsenverzerrungskorrektur vornehmen. Der Kamerasensor zur Innenraumüberwachung wird bevorzugt von einem neuronalen Netz überwacht, das auf einer anderen Instanz des Advanced SoC läuft und dazu konfiguriert ist, Ereignisse im Innenraum zu identifizieren und entsprechend zu reagieren. Ein Innenraumsystem kann Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, den Zielort des Fahrzeugs zu ändern, das Infotainmentsystem und Einstellungen des Fahrzeugs zu aktivieren oder zu ändern oder sprachgesteuertes Surfen im Internet zu ermöglichen. Bestimmte Funktionen stehen dem Fahrer nur zur Verfügung, wenn das Fahrzeug in einem autonomen Modus betrieben wird, und sind ansonsten deaktiviert.Processors 1310 may include a video image compositor, which may be a processing block (e.g., implemented on a microprocessor) that implements video post-processing functions required by a video playback application to generate the final image for the playback window. The video image compositor may apply lens distortion correction to wide-angle camera(s) 1370, surround view camera(s) 1374, and/or indoor surveillance camera sensors. The interior surveillance camera sensor is preferably monitored by a neural network running on another instance of the Advanced SoC, configured to identify and respond to interior events. An interior system may perform lip reading to activate cellular service and make a call, dictate email, change the vehicle's destination, activate or change the vehicle's infotainment system and settings, or speak enable controlled surfing on the Internet. Certain features are only available to the driver when the vehicle is operating in an autonomous mode and are otherwise disabled.

Der Videobild-Kompositor kann eine verbesserte zeitliche Rauschunterdrückung sowohl für räumliche als auch für zeitliche Rauschunterdrückung umfassen. Wenn zum Beispiel in einem Video eine Bewegung auftritt, wird räumliche Information durch Rauschunterdrückung auf geeignete Weise gewichtet, wodurch die Gewichtung der Information von benachbarten Einzelbildern reduziert wird. Wenn ein Bild oder ein Teil eines Bilds keine Bewegung enthält, kann die vom Videobild-Kompositor durchgeführte Rauschunterdrückung zeitliche Information aus dem vorherigen Bild verwenden, um das Rauschen im aktuellen Bild zu reduzieren.The video image compositor may include improved temporal denoising for both spatial and temporal denoising. For example, when motion occurs in a video, noise reduction appropriately weights spatial information, thereby reducing the weight of information from adjacent frames. If there is no motion in an image or part of an image, the noise reduction performed by the video image compositor can use temporal information from the previous image to reduce noise in the current image.

Der Videobild-Kompositor kann auch dazu konfiguriert sein, eine Stereorektifizierung an eingegebenen Stereobildern vorzunehmen. Der Videobild-Kompositor auch zur Gestaltung der Benutzeroberfläche verwendet werden, wenn der Desktop des Betriebssystems in Gebrauch ist und keine GPUs 1308 zum kontinuierlichen Rendern neuer Oberflächen benötigt werden. Selbst wenn GPUs 1308 eingeschaltet sind und aktiv 3D-Rendering betreiben, kann der Videobild-Compositor verwendet werden, um GPUs 1308 zu entlasten und dadurch die Leistung und Reaktionsfähigkeit zu verbessern.The video image compositor can also be configured to perform stereo rectification on input stereo images. The video image compositor can also be used to render the user interface when the operating system desktop is in use and does not require GPUs 1308 to continuously render new interfaces. Even when GPUs 1308 are powered on and actively doing 3D rendering, the video image compositor can be used to offload GPUs 1308, thereby improving performance and responsiveness.

SoC(s) 1304 können außerdem eine serielle MIPI-Kameraschnittstelle für den Empfang von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock umfassen, der für Kamera- und verwandte Pixeleingabefunktionen verwendet werden kann. SoC(s) 1304 können außerdem einen oder mehrere Eingabe/Ausgabe-Controller umfassen, die durch Software gesteuert werden können und zum Empfang von E/A-Signalen verwendet werden können, die keiner spezifischen Aufgabe zugeordnet sind.SoC(s) 1304 may also include a MIPI serial camera interface for receiving video and input from cameras, a high-speed interface, and/or a video input block that may be used for camera and related pixel input functions. SoC(s) 1304 may also include one or more input/output controllers that can be controlled by software and used to receive I/O signals that are not associated with a specific task.

SoC(s) 1304 können außerdem eine breite Palette von Peripherieschnittstellen umfassen, um die Kommunikation mit Peripheriegeräten, Audio-Codecs, der Energieverwaltung und/oder anderen Geräten zu ermöglichen. SoC(s) 1304 können zur Verarbeitung von Daten aus Kameras (z. B. über Gigabit Multimedia Serial Link und Ethernet), Sensoren (z. B. LIDAR-Sensor(en) 1364, RADAR-Sensor(en) 1360 usw., die über Ethernet angeschlossen werden können), Daten aus dem Bus 1302 (z. B. Geschwindigkeit des Fahrzeugs 1300, Lenkradposition usw.), Daten aus GNSS-Sensor(en) 1358 (z. B. über Ethernet oder CAN-Bus angeschlossen) usw. verwendet werden. SoC(s) 1304 können außerdem dedizierte Hochleistungs-Massenspeicher-Controller enthalten, die ihre eigenen DMA-Engines enthalten können und dazu verwendet werden können, die CPU(s) 1306 von Routineaufgaben der Datenverwaltung zu entlasten.SoC(s) 1304 may also include a wide range of peripheral interfaces to enable communication with peripherals, audio codecs, power management, and/or other devices. SoC(s) 1304 can be used to process data from cameras (e.g. via Gigabit Multimedia Serial Link and Ethernet), sensors (e.g. LIDAR sensor(s) 1364, RADAR sensor(s) 1360, etc., which can be connected via ethernet), data from bus 1302 (e.g. speed of vehicle 1300, steering wheel position, etc.), data from GNSS sensor(s) 1358 (e.g. connected via ethernet or CAN bus) etc. are used. SoC(s) 1304 may also include dedicated high-performance mass storage controllers, which may include their own DMA engines and may be used to offload routine data management tasks from CPU(s) 1306.

SoC(s) 1304 können eine End-to-End-Plattform mit flexibler Architektur sein, die die Automatisierungsstufen 3 bis 5 abdeckt und dadurch eine umfassende funktionale Sicherheitsarchitektur bereitstellt, die Computer-Vision- und ADAS-Techniken effizient nutzt, um die Diversität und Redundanz gewährleisten, und eine Plattform für einen flexiblen, zuverlässigen Fahrsoftware-Stack zusammen mit Deep-Learning-Tools bereitstellt. SoC(s) 1304 können schneller, zuverlässiger und sogar energie- und platzsparender sein als herkömmliche Systeme. Zum Beispiel können die Beschleuniger 1314 in Kombination mit CPU(s) 1306, GPU(s) 1308 und Datenspeicher(n) 1316 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Level 3-5 bilden.SoC(s) 1304 can be an end-to-end platform with a flexible architecture that covers automation levels 3 through 5, thereby providing a comprehensive functional security architecture that efficiently leverages computer vision and ADAS techniques to address diversity and Ensure redundancy and provide a platform for a flexible, reliable driving software stack along with deep learning tools. SoC(s) 1304 can be faster, more reliable, and even more power and space efficient than traditional systems. For example, the accelerators 1314 in combination with CPU(s) 1306, GPU(s) 1308, and memory(s) 1316 can form a fast, efficient platform for Level 3-5 autonomous vehicles.

Die Technologie bietet daher Fähigkeiten und Funktionen, die mit herkömmlichen Systemen nicht erreichbar sind. Zum Beispiel können Computer-Vision-Algorithmen auf CPUs ausgeführt werden, die unter Verwendung einer höheren Programmiersprache wie z. B. der Programmiersprache C dazu konfiguriert werden können, eine Vielzahl von Verarbeitungsalgorithmen für eine große Vielfalt von visuellen Daten auszuführen. CPUs sind jedoch oft nicht in der Lage, die Leistungsanforderungen vieler Computer-Vision-Anwendungen zu erfüllen, wie z. B. jene bezüglich der Ausführungszeit und des Stromverbrauchs. Insbesondere sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, was eine Anforderung in ADAS-Anwendungen in Fahrzeugen ist und bei autonomen Fahrzeugen der Level 3-5 eine Anforderung ist.The technology therefore offers capabilities and functions that are not achievable with traditional systems. For example, computer vision algorithms can be executed on CPUs using a high-level programming language such as B. the C programming language can be configured to perform a variety of processing algorithms on a wide variety of visual data. However, CPUs are often unable to meet the performance requirements of many computer vision applications, such as B. those related to execution time and power consumption. In particular, many CPUs are unable to execute complex object detection algorithms in real-time, which is a requirement in in-vehicle ADAS applications and is a requirement in Level 3-5 autonomous vehicles.

Im Gegensatz zu herkömmlichen Systemen ermöglicht es die hier beschriebene Technologie durch die Bereitstellung eines CPU-Komplexes, eines GPU-Komplexes und eines Hardwarebeschleunigungsclusters, mehrere neuronale Netze gleichzeitig und/oder aufeinanderfolgend auszuführen und die Ergebnisse miteinander zu kombinieren, um autonome Fahrfunktionen der Level 3-5 zu ermöglichen. Zum Beispiel kann ein CNN, das auf dem DLA (Deep-Learning-Beschleuniger) oder einer dGPU (z. B. GPU(s) 1320) ausgeführt wird, eine Text- und Worterkennung einschließen, die es dem Supercomputer ermöglicht, Verkehrszeichen zu lesen und zu verstehen, einschließlich Zeichen, für die das neuronale Netz nicht speziell trainiert wurde. Der DLA kann außerdem ein neuronales Netz umfassen, das in der Lage ist, Zeichen zu identifizieren, zu interpretieren und semantisch zu verstehen und dieses semantische Verständnis an Wegplanungsmodule weiterzugeben, die auf CPU-Komplex laufen.In contrast to traditional systems, the technology described here, by providing a CPU complex, a GPU complex and a hardware acceleration cluster, makes it possible to execute multiple neural networks simultaneously and/or sequentially and to combine the results with each other to achieve level 3 autonomous driving functions. 5 to allow. For example, a CNN running on the DLA (Deep Learning Accelerator) or a dGPU (e.g. GPU(s) 1320) may include text and word recognition that enables the supercomputer to read traffic signs and to understand, including characters for which the neural network has not been specially trained. Of the DLA may also include a neural network capable of identifying, interpreting and semantically understanding characters and passing this semantic understanding to path planning engines running on CPU complex.

Ein weiteres Beispiel ist, dass mehrere neuronale Netze gleichzeitig laufen können, wie dies für das Fahren auf Level 3, 4 oder 5 erforderlich ist. Zum Beispiel kann ein Warnschild mit der Aufschrift „Achtung: Blinklichter weisen auf Glatteis hin“ zusammen mit einem elektrischen Licht unabhängig oder von mehreren neuronalen Netzen gemeinsam interpretiert werden. Das Schild selbst von einem ersten eingesetzten neuronalen Netz (z. B. einem trainierten neuronalen Netz) als Verkehrsschild identifiziert werden, der Text „Blinklichter deuten auf Glatteis hin“ kann von einem zweiten eingesetzten neuronalen Netz interpretiert werden, das die Wegplanungssoftware des Fahrzeugs (die bevorzugt auf dem CPU-Komplex ausgeführt wird) darüber informiert, dass Glatteis vorliegt, wenn blinkende Lichter erkannt werden. Das Blinklicht kann identifiziert werden, indem ein drittes eingesetztes neuronales Netz über mehrere Einzelbilder hinweg betrieben wird und die Software für die Wegplanung des Fahrzeugs über das Vorhandensein (oder die Abwesenheit) von Blinklichtern informiert. Alle drei neuronalen Netze können gleichzeitig laufen, z. B. im DLA und/oder auf GPU(s) 1308.Another example is that multiple neural networks can run simultaneously as required for level 3, 4 or 5 driving. For example, a warning sign that reads "Caution: Flashing lights indicate black ice" together with an electric light can be interpreted independently or jointly by several neural networks. The sign itself can be identified as a road sign by a first deployed neural network (e.g., a trained neural network), the text "Flashing lights indicate black ice" can be interpreted by a second deployed neural network, which the vehicle's path planning software (the runs preferentially on the CPU complex) informed that there is black ice when blinking lights are detected. The blinker can be identified by running a third deployed neural network over multiple frames and informing the vehicle's path planning software of the presence (or absence) of blinkers. All three neural networks can run simultaneously, e.g. B. in the DLA and/or on GPU(s) 1308.

In einigen Beispielen kann ein CNN zur Gesichtserkennung und Identifizierung des Fahrzeugbesitzers Daten von Kamerasensoren verwenden, um die Anwesenheit eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1300 zu erkennen. Die ständig eingeschaltete Sensor-Verarbeitungsengine kann verwendet werden, um das Fahrzeug zu entriegeln, wenn der Besitzer sich der Fahrertür nähert, und das Licht einschaltet, und um das Fahrzeug im Sicherheitsmodus zu deaktivieren, wenn der Besitzer das Fahrzeug verlässt. Auf diese Weise sorgen SoC(s) 1304 für Sicherheit gegen Diebstahl und/oder Carjacking.In some examples, a CNN may use data from camera sensors for facial recognition and vehicle owner identification to detect the presence of an authorized driver and/or owner of the vehicle 1300 . The always-on sensor processing engine can be used to unlock the vehicle when the owner approaches the driver's door and turn on the lights, and to disarm the vehicle in security mode when the owner exits the vehicle. In this way, SoC(s) 1304 provide security against theft and/or carjacking.

In einem anderen Beispiel kann ein CNN zur Erkennung und Identifizierung von Einsatzfahrzeugen Daten von Mikrofonen 1396 verwenden, um Sirenen von Einsatzfahrzeugen zu detektieren und zu identifizieren. Im Gegensatz zu herkömmlichen Systemen, die allgemeine Klassifikatoren zur Detektion von Sirenen und manuellen Extraktion von Merkmalen verwenden, verwenden die SoC(s) 1304 das CNN zur Klassifizierung von Umwelt- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. In einer bevorzugten Ausführungsform wird das CNN, das auf einem DLA läuft, darauf trainiert, die relative Annäherungsgeschwindigkeit eines Einsatzfahrzeugs zu erkennen (z. B. durch Nutzung des Dopplereffekts). Das CNN kann auch darauf trainiert sein, Einsatzfahrzeuge zu identifizieren, die spezifisch für das Gebiet sind, wie es von GNSS-Sensor(en) 1358 identifiziert wird. Zum Beispiel wird das CNN in Europa versuchen, europäische Sirenen zu detektieren, und in den Vereinigten Staaten versucht das CNN, nur nordamerikanische Sirenen zu identifizieren. Sobald ein Einsatzfahrzeug erkannt wird, kann ein Steuerprogramm verwendet werden, um eine Sicherheitsroutine für Einsatzfahrzeuge auszuführen, die das Fahrzeug mit Unterstützung von Ultraschallsensoren 1362 verlangsamt, an den Straßenrand fährt, das Fahrzeug parkt und/oder das Fahrzeug im Leerlauf laufen lässt, bis die Einsatzfahrzeuge vorbeigefahren sind.In another example, an emergency vehicle detection and identification CNN may use data from microphones 1396 to detect and identify emergency vehicle sirens. Unlike traditional systems that use general classifiers to detect sirens and manually extract features, the SoC(s) 1304 use the CNN to classify environmental and city sounds, as well as to classify visual data. In a preferred embodiment, the CNN running on a DLA is trained to detect the relative closing speed of an emergency vehicle (e.g., by utilizing the Doppler effect). The CNN may also be trained to identify emergency vehicles specific to the area as identified by GNSS sensor(s) 1358 . For example, in Europe, CNN will attempt to detect European sirens, and in the United States, CNN will attempt to identify only North American sirens. Once an emergency vehicle is detected, a control program can be used to run an emergency vehicle safety routine that uses ultrasonic sensors 1362 to slow the vehicle, pull to the curb, park the vehicle, and/or allow the vehicle to coast until emergency vehicles respond have passed.

Das Fahrzeug kann CPU(s) 1318 (z. B. diskrete CPU(s) oder dCPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z. B. PCIe) mit SoC(s) 1304 gekoppelt sein können. CPU(s) 1318 können zum Beispiel einen X86-Prozessor umfassen. CPU(s) 1318 können zur Durchführung verschiedener Funktionen verwendet werden, einschließlich zum Beispiel der Arbitrierung potenziell uneinheitlicher Ergebnisse zwischen ADAS-Sensoren SoC(s) 1304 und/oder der Überwachung des Status und des Zustands der Controller 1336 und/oder des Infotainment-SoC 1330.The vehicle may include CPU(s) 1318 (e.g., discrete CPU(s) or dCPU(s)) that may be coupled to SoC(s) 1304 via a high-speed interconnect (e.g., PCIe). CPU(s) 1318 may include an X86 processor, for example. CPU(s) 1318 may be used to perform various functions including, for example, arbitrating potentially inconsistent results between ADAS sensors SoC(s) 1304 and/or monitoring the status and health of the controllers 1336 and/or the infotainment SoC 1330.

Das Fahrzeug 1300 kann CPU(s) 1320 (z. B. diskrete CPU(s) oder dCPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z. B. NVIDIA's NVLINK) mit SoC(s) 1304 gekoppelt sein können. GPU(s) 1320 können zusätzliche KI-Funktionalität wie z. B. durch Ausführung redundanter und/oder anderer neuronaler Netze bereitstellen, und können dazu verwendet werden, neuronale Netze mindestens zum Teil auf der Basis von Eingaben (z. B. Sensordaten) von Sensoren des Fahrzeugs 1300 zu trainieren und/oder zu aktualisieren.Vehicle 1300 may include CPU(s) 1320 (e.g., discrete CPU(s) or dCPU(s)) that may be coupled to SoC(s) 1304 via a high-speed interconnect (e.g., NVIDIA's NVLINK). GPU(s) 1320 may include additional AI functionality such as by implementing redundant and/or other neural networks, and may be used to train and/or update neural networks based at least in part on input (e.g., sensor data) from vehicle 1300 sensors.

Das Fahrzeug 1300 kann außerdem eine Netzschnittstelle 1324 umfassen, die eine oder mehrere drahtlose Antennen 1326 (z. B. eine oder mehrere drahtlose Antennen für verschiedene Kommunikationsprotokolle, wie z. B. eine Mobilfunkantenne, eine Bluetooth-Antenne usw.) umfassen kann. Die Netzschnittstelle 1324 kann verwendet werden, um eine drahtlose Verbindung über das Internet mit der Cloud (z. B. mit Servern 1378 und/oder anderen Netzwerkgeräten), mit anderen Fahrzeugen und/oder mit Computergeräten (z. B. Client-Geräten von Fahrgästen) zu ermöglichen. Zur Kommunikation mit anderen Fahrzeugen kann eine direkte Verbindung zwischen zwei Fahrzeugen und/oder eine indirekte Verbindung (z. B. über Netzwerke und das Internet) hergestellt werden. Direkte Verbindungen können über eine Fahrzeug-Fahrzeug-Kommunikationsverbindung hergestellt werden. Die Fahrzeug-Fahrzeug-Kommunikationsverbindung kann dem Fahrzeug 1300 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1300 (z. B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 1300) bereitstellen. Diese Funktionalität kann Teil einer kooperierenden adaptiven Geschwindigkeitsregelungsfunktion des Fahrzeugs 1300 sein.The vehicle 1300 may also include a network interface 1324, which may include one or more wireless antennas 1326 (e.g., one or more wireless antennas for different communication protocols, such as a cellular antenna, a Bluetooth antenna, etc.). The network interface 1324 may be used to establish a wireless connection over the Internet to the cloud (e.g., to servers 1378 and/or other network devices), to other vehicles, and/or to computing devices (e.g., passenger client devices). ) to allow. To communicate with other vehicles, a direct connection between two vehicles and/or an indirect connection (e.g. via networks and the Internet) can be established. Direct connections can be made via a vehicle-to-vehicle communication link. The vehicle-to-vehicle communication link may provide the vehicle 1300 with information about vehicles in the vicinity of the vehicle 1300 (e.g., vehicles in front of, beside, and/or behind the vehicle 1300). This functionality may be part of a cooperative vehicle 1300 adaptive cruise control function.

Die Netzschnittstelle 1324 kann ein SoC umfassen, das Modulations- und Demodulationsfunktionalität bereitstellt und es Controllern 1336 ermöglicht, über drahtlose Netzwerke zu kommunizieren. Die Netzschnittstelle 1324 kann ein Hochfrequenz-Frontend für die Aufwärtskonvertierung von Basisband auf Hochfrequenz und die Abwärtskonvertierung von Hochfrequenz auf Basisband umfassen. Frequenzumwandlungen durch wohlbekannte Verfahren und/oder durch Super-Heterodyn-Verfahren erfolgen. In einigen Beispielen kann die Hochfrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt werden. Die Netzschnittstelle kann drahtlose Funktionalitäten für die Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle umfassen.Network interface 1324 may include an SoC that provides modulation and demodulation functionality and allows controllers 1336 to communicate over wireless networks. The network interface 1324 may include a radio frequency front end for baseband to radio frequency upconversion and radio frequency to baseband downconversion. Frequency conversions are done by well-known methods and/or by super-heterodyne methods. In some examples, the radio frequency front end functionality may be provided by a separate chip. The network interface can include wireless functionalities for communication via LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN and/or other wireless protocols.

Das Fahrzeug 1300 kann außerdem einen oder mehrere Datenspeicher 1328 umfassen, die auch Off-Chip-Speicher (z. B. Off-SoC(s) 1304) umfassen können. Datenspeicher 1328 können ein oder mehrere Speicherelemente einschließlich RAM, SRAM, DRAM VRAM Flash, Festplatten und/oder andere Komponenten und/oder Geräte umfassen, die mindestens ein Datenbit speichern können.The vehicle 1300 may also include one or more data stores 1328, which may also include off-chip memory (e.g., off-SoC(s) 1304). Data storage 1328 may include one or more storage elements including RAM, SRAM, DRAM VRAM Flash, hard drives, and/or other components and/or devices capable of storing at least one bit of data.

Das Fahrzeug 1300 kann außerdem GNSS-Sensor(en) 1358 umfassen. GNSS-Sensor(en) 1358 (z. B. GPS, unterstützte GPS-Sensoren, Differential-GPS (DGPS)-Sensoren usw.) umfassen, um die Kartierung, Perzeption, Erzeugung von Belegungsrastem und/oder Wegplanungsfunktionen zu unterstützen. Eine beliebige Anzahl von GNSS-Sensoren 1358 kann verwendet werden, z. B. und, darauf beschränkt zu sein, ein GPS, das einen USB-Anschluss mit einer Ethernet-zu-Seriell-Brücke (z. B. RS-232) verwendet.The vehicle 1300 may also include GNSS sensor(s) 1358 . GNSS sensor(s) 1358 (e.g., GPS, supported GPS sensors, differential GPS (DGPS) sensors, etc.) to support mapping, perception, occupancy grid generation, and/or path planning functions. Any number of GNSS sensors 1358 can be used, e.g. B. and, to be limited to this, a GPS using a USB port with an ethernet-to-serial (e.g. RS-232) bridge.

Das Fahrzeug 1300 kann außerdem RADAR-Sensor(en) 1360 umfassen. RADAR-Sensor(en) 1360 können vom Fahrzeug 1300 selbst bei Dunkelheit und/oder schlechten Wetterbedingungen zur Weitbereichs-Fahrzeugdetektion verwendet werden. Die funktionalen RADAR-Sicherheitsstufen können ASIL B sein. RADAR-Sensor(en) 1360 können den CAN und/oder Bus 1302 (z. B. zur Übertragung von Daten, die von RADAR-Sensor(en) 1360 erzeugt wurden) zur Steuerung und für den Zugriff auf Objektverfolgungsdaten verwenden, wobei der Zugriff auf Rohdaten in einigen Beispielen über Ethernet erfolgt. Eine Vielzahl von RADAR-Sensortypen kann verwendet werden. Zum Beispiel können RADAR-Sensor(en) 1360 zur Verwendung als Front-, Heck- und Seiten-RADAR geeignet sein. In einigen Beispielen werden Puls-Doppler-RADAR-Sensor(en) verwendet.The vehicle 1300 may also include RADAR sensor(s) 1360 . RADAR sensor(s) 1360 can be used by vehicle 1300 for long-range vehicle detection even in darkness and/or poor weather conditions. The RADAR functional safety levels can be ASIL B. RADAR sensor(s) 1360 may use CAN and/or bus 1302 (eg, to transmit data generated by RADAR sensor(s) 1360) for control and access to object tracking data, wherein access on raw data is done over Ethernet in some examples. A variety of RADAR sensor types can be used. For example, RADAR sensor(s) 1360 may be suitable for use as front, rear, and side RADAR. In some examples, pulse Doppler RADAR sensor(s) are used.

RADAR-Sensor(en) 1360 können verschiedene Konfigurationen aufweisen, z. B. mit langer Reichweite und engem Sichtfeld, mit kurzer Reichweite und breitem Sichtfeld, mit kurzer Reichweite und seitlicher Abdeckung usw. In einigen Beispielen kann RADAR mit großer Reichweite zur adaptiven Geschwindigkeitsregelung verwendet werden. RADAR-Systeme mit großer Reichweite können ein breites Sichtfeld bieten, das durch zwei oder mehr unabhängige Abtastungen z. B. innerhalb einer Reichweite von 250 m realisiert wird. RADAR-Sensor(en) 1360 können dazu beitragen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und können von ADAS-Systemen zur Notbremsunterstützung und Frontallkollisionswarnung verwendet werden. RADAR-Sensoren mit großer Reichweite können ein monostatisches multimodales RADAR mit mehreren (z. B. sechs oder mehr) festen RADAR-Antennen und eine Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle umfassen. In einem Beispiel mit sechs Antennen können die vier zentrale Antennen ein fokussiertes Strahlenmuster erzeugen, das dazu ausgelegt ist, die Umgebung des Fahrzeugs 1300 bei höheren Geschwindigkeiten mit minimaler Störung durch Verkehr in benachbarten Fahrspuren zu aufzuzeichnen. Die zwei anderen Antennen können das Sichtfeld erweitern, um die schnelle Erkennung von Fahrzeugen zu ermöglichen, die in die Fahrspur des Fahrzeugs 1300 einfahren oder diese verlassen.RADAR sensor(s) 1360 can have various configurations, e.g. long range and narrow field of view, short range and wide field of view, short range and side coverage, etc. In some examples, long range RADAR can be used for adaptive cruise control. Long range RADAR systems can provide a wide field of view, achieved by two or more independent scans e.g. B. is realized within a range of 250 m. RADAR sensor(s) 1360 can help distinguish between static and moving objects and can be used by ADAS systems for emergency braking and front collision warning. Long-range RADAR sensors may include monostatic multi-mode RADAR with multiple (e.g., six or more) fixed RADAR antennas and high-speed CAN and FlexRay interface. In a six antenna example, the four central antennas may produce a focused beam pattern configured to map the vehicle's 1300 environment at higher speeds with minimal interference from traffic in adjacent lanes. The other two antennas may expand the field of view to allow for quick detection of vehicles entering or exiting the vehicle 1300 lane.

RADAR-Systeme mit mittlerer Reichweite können zum Beispiel eine Reichweite von bis zu 1360 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 1350 Grad (hinten) aufweisen. ? RADAR-Systeme mit kurzer Reichweite können, ohne darauf beschränkt zu sein, RADAR-Sensoren umfassen, die dazu ausgelegt sind, an beiden Enden des Heckstoßfängers installiert zu werden. Wenn es an beiden Enden des Heckstoßfängers installiert ist, kann solch ein RADAR-Sensorsystem zwei Strahlen erzeugen, die den Totwinkel im hinteren Bereich und neben dem Fahrzeug konstant überwachen.For example, medium-range RADAR systems can have a range of up to 1360 m (front) or 80 m (rear) and a field of view of up to 42 degrees (front) or 1350 degrees (rear). ? Short-range RADAR systems may include, but are not limited to, RADAR sensors designed to be installed on both ends of the rear bumper. When installed at both ends of the rear bumper, such a RADAR sensor system can generate two beams that constantly monitor the blind spot at the rear and sides of the vehicle.

RADAR-Systeme mit kurzer Reichweite können im ADAS-System zur Totwinkelerkennung und/oder zur Spurwechselunterstützung verwendet werden. Short-range RADAR systems can be used in the ADAS system for blind spot detection and/or lane change assistance.

Das Fahrzeug 1300 kann außerdem Ultraschallsensor(en) 1362 umfassen. Ultraschallsensoren 1362, die vorne, hinten und/oder an den Seiten des Fahrzeugs 1300 angeordnet sein können, können zur Einparkhilfe und/oder zur Erzeugung und Aktualisierung eines Belegungsrasters verwendet werden. Eine große Vielfalt von Ultraschallsensoren 1362 kann verwendet werden, und verschiedene Ultraschallsensoren 1362 können für unterschiedliche Detektionsreichweiten (z. B. 2,5 m, 4 m) verwendet werden. Die Ultraschallsensor(en) 1362 können bei funktionalen Sicherheitsstufen von ASIL B arbeiten.The vehicle 1300 may also include ultrasonic sensor(s) 1362 . Ultrasonic sensors 1362, which may be located at the front, rear, and/or sides of the vehicle 1300, may be used for parking assistance and/or to generate and update an occupancy grid. A wide variety of ultrasonic sensors 1362 can be used, and different ultrasonic sensors 1362 can be used for different detection ranges (e.g., 2.5 m, 4 m). The ultrasonic sensor(s) 1362 can operate at functional safety levels of ASIL B.

Das Fahrzeug 1300 kann LIDAR-Sensor(en) 1364 umfassen. LIDAR-Sensor(en) 1364 können zur Objekt- und Fußgängererkennung, für Notbremsungen, zur Kollisionsvermeidung und/oder für andere Funktionen verwendet werden. Die LIDAR-Sensor(en) 1364 können bei funktionalen Sicherheitsstufen von ASIL B arbeiten. In einigen Beispielen kann das Fahrzeug 1300 mehrere LIDAR-Sensoren 1364 (z. B. zwei, vier, sechs usw.) umfassen, die Ethernet verwenden können (z. B., um einem Gigabit-Ethernet-Switch Daten bereitzustellen).Vehicle 1300 may include LIDAR sensor(s) 1364 . LIDAR sensor(s) 1364 may be used for object and pedestrian detection, emergency braking, collision avoidance, and/or other functions. The LIDAR sensor(s) 1364 can operate at functional safety levels of ASIL B. In some examples, the vehicle 1300 may include multiple LIDAR sensors 1364 (e.g., two, four, six, etc.) that may use Ethernet (e.g., to provide data to a Gigabit Ethernet switch).

In einigen Beispielen können LIDAR-Sensor(en) 1364 in der Lage sein, für ein 360-Grad-Sichtfeld eine Liste von Objekten und deren Entfernungen bereitzustellen. Kommerziell erhältliche LIDAR-Sensoren 1364 können zum Beispiel eine Reichweite von etwa 1300 m haben, mit einer Genauigkeit von 2 bis 3 cm und mit Unterstützung für eine 1300 Mbps-Ethemet-Verbindung. ? In einigen Beispielen können ein oder mehrere nicht vorspringende LIDAR-Sensoren 1364 verwendet werden. In solchen Beispielen können LIDAR-Sensor(en) 1364 als kleines Gerät implementiert sein, das in die Front, das Heck, die Seiten und/oder die Ecken des Fahrzeugs 1300 eingebettet sein kann. LIDAR-Sensoren 1364 können in solchen Beispielen selbst bei Objekten mit geringem Reflexionsvermögen ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200 m bieten. Frontmontierte LIDAR-Sensor(en) 1364 können für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.In some examples, LIDAR sensor(s) 1364 may be able to provide a list of objects and their distances for a 360 degree field of view. Commercially available LIDAR sensors 1364, for example, can have a range of approximately 1300 m, with an accuracy of 2 to 3 cm and support for a 1300 Mbps Ethernet connection. ? In some examples, one or more non-protruding LIDAR sensors 1364 may be used. In such examples, LIDAR sensor(s) 1364 may be implemented as a small device that may be embedded in the front, rear, sides, and/or corners of vehicle 1300 . LIDAR sensors 1364 in such examples can provide a horizontal field of view of up to 120 degrees and a vertical field of view of up to 35 degrees with a range of 200 m, even for objects with low reflectivity. Front-mount LIDAR sensor(s) 1364 can be configured for a horizontal field of view between 45 degrees and 135 degrees.

In einigen Beispielen können auch LIDAR-Technologien wie z. B. 3D Flash LIDAR verwendet werden. 3D Flash LIDAR verwendet einen Laserblitz als Sendequelle, um die Fahrzeugumgebung in bis zu etwa 200 m Entfernung zu beleuchten. Eine Flash LIDAR-Einheit umfasst einen Empfänger, der die Laufzeit des Laserpulses und das reflektierte Licht in jedem Pixel aufzeichnet, was wiederum dem Abstand vom Fahrzeug zu den Objekten entspricht. Flash LIDAR kann mit jedem Laserblitz die Erzeugung hochgenauer und verzerrungsfreier Bilder der Umgebung ermöglichen. In einigen Beispielen können vier Flash LIDAR-Sensoren eingesetzt werden, einer auf jeder Seite des Fahrzeugs 1300. Verfügbare 3D-Blitz-LIDAR-Systeme umfassen eine Festkörper-3D-Staring-Array-LIDAR-Kamera, die außer einem Lüfter keine beweglichen Teile aufweist (d. h., ein nicht abtastendes LIDAR-Gerät). Das Flash LIDAR-Gerät kann einen 5-Nanosekunden-Laserimpuls der Klasse I (augensicher) pro Einzelbild verwenden und das reflektierte Laserlicht in Form von Punktwolken im 3D-Bereich und mitregistrierten Intensitätsdaten erfassen. Durch Verwendung von Flash-LIDAR, und weil Flash-LIDAR ein Festkörperbauteil ohne bewegliche Teile ist, können LIDAR-Sensor(en) 1364 weniger anfällig für Bewegungsunschärfe, Vibration und/oder Stöße sein.In some examples, LIDAR technologies such as B. 3D Flash LIDAR can be used. 3D Flash LIDAR uses a laser flash as a transmission source to illuminate the vehicle's surroundings up to a distance of approximately 200 m. A Flash LIDAR unit includes a receiver that records the travel time of the laser pulse and the reflected light in each pixel, which in turn corresponds to the distance from the vehicle to objects. Flash LIDAR can enable the generation of highly accurate and distortion-free images of the environment with each laser flash. In some examples, four flash LIDAR sensors may be deployed, one on each side of the vehicle 1300. Available 3D flash LIDAR systems include a solid state 3D staring array LIDAR camera that has no moving parts other than a fan (i.e., a non-scanning LIDAR device). The Flash LIDAR device can use a 5 nanosecond Class I (eye safe) laser pulse per frame and capture the reflected laser light in the form of point clouds in 3D space and with registered intensity data. By using flash LIDAR, and because flash LIDAR is a solid state device with no moving parts, LIDAR sensor(s) 1364 may be less susceptible to motion blur, vibration, and/or shock.

Das Fahrzeug kann außerdem IMU-Sensor(en) 1366 umfassen. IMU-Sensor(en) 1366 können in einigen Beispielen in der Mitte der Hinterachse des Fahrzeugs 1300 angeordnet sein. IMU-Sensor(en) 1366 können zum Beispiel, ohne darauf beschränkt zu sein, Beschleunigungsmesser, Magnetometer, Gyroskop(e), Magnetkompass(e) und/oder andere Sensortypen umfassen. In einigen Beispielen, wie z. B. in sechsachsigen Anwendungen, können die IMU-Sensor(en) 1366 Beschleunigungsmesser und Gyroskope umfassen, während die IMU-Sensor(en) 1366 in neunachsigen Anwendungen Beschleunigungsmesser, Gyroskope und Magnetometer umfassen können.The vehicle may also include IMU sensor(s) 1366 . IMU sensor(s) 1366 may be located at the center of the rear axle of vehicle 1300 in some examples. IMU sensor(s) 1366 may include, for example but not limited to, accelerometers, magnetometers, gyroscope(s), magnetic compass(es), and/or other types of sensors. In some examples, such as For example, in six-axis applications, the IMU sensor(s) 1366 may include accelerometers and gyroscopes, while in nine-axis applications, the IMU sensor(s) 1366 may include accelerometers, gyroscopes, and magnetometers.

In einigen Ausführungsformen können IMU-Sensor(en) 1366 als miniaturisiertes, hochleistungsfähiges GPS-gestütztes Trägheitsnavigationssystem (GPS/INS) implementiert sein, das mikroelektromechanische Systeme (MEMS) mit Trägheitssensoren, einem hochempfindlichen GPS-Empfänger und erweiterten Kalman-Filteralgorithmen kombiniert, um Schätzungen der Position, Geschwindigkeit und Ausrichtung bereitzustellen. In einigen Beispielen können IMU-Sensor(en) 1366 es einem Fahrzeug 1300 ermöglichen, den Steuerkurs zu schätzen, ohne eine Eingabe von einem Magnetsensor zu erfordern, indem Geschwindigkeitsänderungen direkt vom GPS beobachtet und mit IMU-Sensor(en) 1366 korreliert werden. In einigen Beispielen können die IMU-Sensor(en) 1366 und die GNSS-Sensor(en) 1358 in einer einzigen integrierten Einheit kombiniert sein.In some embodiments, IMU sensor(s) 1366 may be implemented as a miniaturized, high-performance GPS-based inertial navigation system (GPS/INS) that combines microelectromechanical systems (MEMS) with inertial sensors, a highly sensitive GPS receiver, and advanced Kalman filter algorithms to generate estimates of position, speed and orientation. In some examples, IMU sensor(s) 1366 can allow a vehicle 1300 to estimate heading without requiring input from a magnetic sensor by observing speed changes directly from GPS and correlating with IMU sensor(s) 1366 . In some examples, the IMU sensor(s) 1366 and the GNSS sensor(s) 1358 may be combined into a single integrated unit.

Das Fahrzeug kann Mikrofon(e) 1396 umfassen, die im und/oder um das Fahrzeug 1300 herum angeordnet sind. Die Mikrofon(e) 1396 können, unter anderem, zur Detektion und Identifizierung von Noteinsatzfahrzeugen verwendet werden.The vehicle may include microphone(s) 1396 located in and/or around the vehicle 1300 . The microphone(s) 1396 may be used, among other things, to detect and identify emergency vehicles.

Das Fahrzeug kann außerdem eine beliebige Anzahl von Kameratypen umfassen, einschließlich Stereokamera(s) 1368, Weitwinkelkamera(s) 1370, Infrarotkamera(s) 1372, Surround-View-Kamera(s) 1374, Weitbereichs- und/oder Mittelbereichskamera(s) 1398 und/oder anderer Kameratypen. Die Kameras können verwendet werden, um Bilddaten um den gesamten Umfang des Fahrzeugs 1300 herum zu erfassen. Die verwendeten Kameratypen sind von den Ausführungsformen und Anforderungen für das Fahrzeug 1300 abhängig, und jede Kombination von Kameratypen kann verwendet werden, um die erforderliche Abdeckung rund um das Fahrzeug 1300 zu gewährleisten. Außerdem kann die Anzahl der Kameras je nach Ausführungsform unterschiedlich sein. Das Fahrzeug kann zum Beispiel sechs, sieben, zehn, zwölf und/oder eine andere Anzahl von Kameras umfassen. Die Kameras können zum Beispiel, ohne darauf beschränkt zu sein, Gigabit Multimedia Serial Link (GMSL) und/oder Gigabit Ethernet unterstützen. Jede der Kameras wird hier auf 13A und 13B Bezug nehmend ausführlicher beschrieben.The vehicle may also include any number of camera types, including stereo camera(s) 1368, wide-angle camera(s) 1370, infrared camera(s) 1372, surround-view camera(s) 1374, long-range and/or mid-range camera(s) 1398 and/or other camera types. The cameras can be used to capture image data around the entire perimeter of the vehicle 1300 . The types of cameras used are dependent on the vehicle 1300 embodiments and requirements, and any combination of camera types can be used to provide the required coverage around the vehicle 1300 . In addition, the number of cameras can vary depending on the embodiment. For example, the vehicle may include six, seven, ten, twelve, and/or other numbers of cameras. For example, but not limited to, the cameras may support Gigabit Multimedia Serial Link (GMSL) and/or Gigabit Ethernet. Each of the cameras is on here 13A and 13B Reference described in more detail.

Das Fahrzeug 1300 kann außerdem einen oder mehrere Vibrationssensoren 1342 umfassen. Vibrationssensor(en) 1342 können Vibrationen von Komponenten des Fahrzeugs wie z. B. der Achse(n) messen. Änderungen in Vibrationen können zum Beispiel auf eine Änderung in der Fahrbahnoberfläche hindeuten. In einem anderen Beispiel können, wenn zwei oder mehr Vibrationssensoren 1342 verwendet werden und Unterschiede zwischen Vibrationen verwendet werden, um die Reibung oder den Schlupf der Fahrbahnoberfläche zu bestimmen (z. B., wenn der Vibrationensunterschied zwischen einer angetriebenen Achse und einer frei rotierenden Achse besteht).The vehicle 1300 may also include one or more vibration sensors 1342 . Vibration sensor(s) 1342 can detect vibrations from components of the vehicle such as B. the axis (s) measure. For example, changes in vibration can indicate a change in the road surface. In another example, when two or more vibration sensors 1342 are used, differences between vibrations can be used to determine friction or slippage of the road surface (e.g., when the vibration difference is between a driven axle and a freely rotating axle ).

Das Fahrzeug 1300 kann ein ADAS-System 1338 umfassen. Das ADAS-System 1338 kann in einigen Beispielen ein SoC umfassen. Das ADAS-System 1338 kann ein autonomes/adaptives/automatisches Geschwindigkeitsregelungssystem (ACC), ein kooperierendes adaptives Geschwindigkeitsregelungssystem (CACC), ein Frontalaufprall-Warnsystem (FCW), ein automatisches Notbremssystem (AEB), ein Spurhalte-Warnsystem (LDW), einen Spurhalteassistenten (LKA), ein Totwinkel-Warnsystem (BSW), ein Warnsystem für den Querverkehr hinten (RCTW), ein Kollisionswarnsystem (CWS), ein Spurhaltesystem (LC) und/oder anderer Systeme, Merkmale und/oder Funktionen umfassen.The vehicle 1300 may include an ADAS system 1338 . ADAS system 1338 may include an SoC in some examples. ADAS system 1338 can include autonomous/adaptive/automatic cruise control (ACC), cooperating adaptive cruise control (CACC), frontal collision warning (FCW), automatic emergency braking (AEB), lane departure warning (LDW), lane departure warning (LKA), a blind spot warning system (BSW), a rear cross traffic warning system (RCTW), a collision warning system (CWS), a lane departure warning system (LC) and/or other systems, features and/or functions.

ACC-Systeme (Geschwindigkeitsregelungen) können RADAR-Sensor(en) 1360, LIDAR-Sensor(en) 1364 und/oder Kamera(s) verwenden. ACC-Systeme können eine Längs-ACC und/oder eine Quer-ACC umfassen. Die Längs-ACC überwacht und regelt den Abstand zum Fahrzeug unmittelbar vor dem Fahrzeug 1300 und passt die Geschwindigkeit automatisch an, um einen sicheren Abstand zum vorausfahrenden Fahrzeugen einzuhalten. Die Quer-ACC führt eine Abstandshaltung durch und weist das Fahrzeug 1300 an, die Spur zu wechseln, wenn dies erforderlich ist. Die Quer-ACC ist mit anderen ADAS-Anwendungen wie z. B. LCA und CWS verwandt.ACC (cruise control) systems may use RADAR sensor(s) 1360, LIDAR sensor(s) 1364, and/or camera(s). ACC systems may include longitudinal ACC and/or transverse ACC. Longitudinal ACC monitors and controls the distance to the vehicle immediately ahead of vehicle 1300 and automatically adjusts speed to maintain a safe distance from vehicles in front. The lateral ACC performs distance maintenance and instructs the vehicle 1300 to change lanes if necessary. Cross ACC is interoperable with other ADAS applications such as B. LCA and CWS related.

CACC verwendet Information von anderen Fahrzeugen, die über die Netzschnittstelle 1324 und/oder die Funkantenne(n) 1326 über eine drahtlose Verbindung von anderen Fahrzeugen oder indirekt über eine Netzwerkverbindung (z. B. über das Internet) empfangen werden können. Direkte Verbindungen können durch eine Fahrzeug-Fahrzeug-Kommunikationsverbindung (V2V) hergestellt werden, während indirekte Verbindungen durch eine Infrastruktur-Fahrzeug-Kommunikationsverbindung (12V) hergestellt werden können. Im Allgemeinen liefert das V2V-Kommunikationskonzept Information über unmittelbar vorausfahrende Fahrzeuge (z. B. Fahrzeuge unmittelbar vor und auf derselben Fahrspur wie das Fahrzeug 1300), während das I2V-Kommunikationskonzept Information über den weiter davor liegenden Verkehr liefert. CACC-Systeme können sowohl I2V- als auch V2V-Informationsquellen umfassen. Aufgrund der Information über Fahrzeuge vor dem Fahrzeug 1300 kann CACC zuverlässiger sein und hat das Potenzial, den Verkehrsfluss zu verbessern und Verkehrsstaus zu reduzieren.CACC uses information from other vehicles, which may be received via network interface 1324 and/or radio antenna(s) 1326 via a wireless connection from other vehicles or indirectly via a network connection (e.g., via the Internet). Direct connections can be made through a vehicle-to-vehicle (V2V) communication link, while indirect connections can be made through an infrastructure-to-vehicle (12V) communication link. In general, the V2V communication scheme provides information about vehicles immediately ahead (e.g., vehicles immediately ahead and in the same lane as vehicle 1300), while the I2V communication scheme provides information about traffic further ahead. CACC systems can include both I2V and V2V information sources. Because of the information about vehicles in front of the vehicle 1300, CACC can be more reliable and has the potential to improve traffic flow and reduce traffic congestion.

FCW-Systeme sind dazu ausgelegt, den Fahrer vor einer Gefahr zu warnen, damit der Fahrer Korrekturmaßnahmen ergreifen kann. FCW-Systeme verwenden eine nach vorne gerichtete Kamera und/oder RADAR-Sensor(en) 1360, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der mit einer Fahrer-Rückmeldung wie z. B. einem Display, einem Lautsprecher und/oder einer vibrierenden Komponente elektrisch gekoppelt ist. FCW-Systeme können eine Warnung z. B. in Form eines Tons, einer optischen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses ausgeben.FCW systems are designed to warn the driver of a hazard so the driver can take corrective action. FCW systems use a forward-looking camera and/or RADAR sensor(s) 1360 coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is coupled with driver feedback such as B. a display, a speaker and / or a vibrating component is electrically coupled. FCW systems can issue a warning e.g. B. in the form of a tone, a visual warning, a vibration and / or a quick braking impulse.

AEB-Systeme erkennen einen drohenden Aufprallunfall mit einem anderen Fahrzeug oder einem anderen Objekt und kann die Bremsen automatisch betätigen, wenn der Fahrer nicht innerhalb eines spezifizierten Zeit- oder Abstandsparameters korrigierend eingreift. AEB-Systeme können das AEB-System nach vorne gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1360 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn das AEB-System eine Gefahr erkennt, warnt es in der Regel zunächst den Fahrer, damit er korrigierend eingreift, um die Kollision zu vermeiden, und wenn der Fahrer nicht korrigierend eingreift, kann das AEB-System die Bremsen automatisch betätigen, um die Auswirkung der vorhergesagten Kollision zu verhindern oder wenigstens abzumildern. AEB-Systeme können Techniken wie eine dynamische Bremsunterstützung und/oder eine Bremsung bei einem bevorstehenden Aufprall (CIB) umfassen.AEB systems detect an imminent collision with another vehicle or object and can automatically apply the brakes if the driver does not take corrective action within a specified time or distance parameter. AEB systems may use the AEB system forward-looking camera(s) and/or RADAR sensor(s) 1360 coupled to a dedicated processor, DSP, FPGA, and/or ASIC. When the AEB system detects a hazard, it typically first alerts the driver to take corrective action to avoid the collision, and if the driver fails to take corrective action, the AEB system can automatically apply the brakes to mitigate the impact to prevent or at least mitigate the predicted collision. AEB systems may include techniques such as Dynamic Brake Assist and/or Imminent Impact Braking (CIB).

LDW-Systeme geben optische, akustische und/oder taktile Warnungen wie z. B. Lenkrad- oder Sitzvibrationen aus, um den Fahrer zu warnen, wenn das Fahrzeug 1300 Fahrbahnmarkierungen überquert. Ein LDW-System wird nicht aktiviert, wenn der Fahrer durch Betätigen des Blinkers ein beabsichtigtes Verlassen der Fahrspur anzeigt. LDW-Systeme können nach vorne gerichtete Kameras verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der mit einer Fahrer-Rückmeldung wie z. B. einem Display, einem Lautsprecher und/oder einer vibrierenden Komponente elektrisch gekoppelt ist.LDW systems give optical, acoustic and/or tactile warnings such as e.g. B. steering wheel or seat vibrations to warn the driver when the vehicle crosses 1300 lane markings. An LDW system will not activate if the driver indicates intention to leave the lane by using the turn signal. LDW systems may use forward-facing cameras coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is coupled with driver feedback such as B. a display, a speaker and / or a vibrating component is electrically coupled.

LKA-Systeme sind eine Variante von LDW-Systemen. LKA-Systeme korrigieren das Fahrzeug 1300 durch Lenkeingriffe oder Bremsen, wenn das Fahrzeug 1300 beginnt, die Fahrspur zu verlassen.LKA systems are a variant of LDW systems. LKA systems correct the vehicle 1300 through steering interventions or braking when the vehicle 1300 begins to leave the lane.

BSW-Systeme detektieren und warnen den Fahrer vor Fahrzeugen im toten Winkel eines Fahrzeugs. BSW-Systeme können eine optische, akustische und/oder taktile Warnung ausgeben, um darauf hinzuweisen, dass das Einordnen in oder das Wechseln von Fahrspuren unsicher ist. Das System kann eine zusätzliche Warnung ausgeben, wenn der Fahrer einen Blinker betätigt. BSW-Systeme können nach hinten gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1360 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der mit einer Fahrer-Rückmeldung wie z. B. einem Display, einem Lautsprecher und/oder einer vibrierenden Komponente elektrisch gekoppelt ist.BSW systems detect and warn the driver of vehicles in a vehicle's blind spot. BSW systems can issue a visual, audible and/or tactile warning to indicate that it is unsafe to merge into or change lanes. The system can issue an additional warning if the driver activates a turn signal. BSW systems may utilize rear-facing camera(s) and/or RADAR sensor(s) 1360 coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is coupled with driver feedback such as B. a display, a speaker and / or a vibrating component is electrically coupled.

RCTW-Systeme können eine optische, akustische und/oder taktile Meldung ausgeben, wenn beim Rückwärtsfahren des Fahrzeugs 1300 ein außerhalb der Reichweite der Heckkamera legendes Objekt detektiert wird. Einige RCTW-Systeme umfassen ein automatisches Notbremssystem (AEB), um sicherzustellten, dass Fahrzeugbremsen betätigt werden, um einen Unfall zu vermeiden. RCTW-Systeme können einen oder mehrere nach hinten gerichtete RADAR-Sensor(en) 1360 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der mit einer Fahrer-Rückmeldung wie z. B. einem Display, einem Lautsprecher und/oder einer vibrierenden Komponente elektrisch gekoppelt ist.RCTW systems can output a visual, audible, and/or tactile notification when an object is detected that is out of range of the rear view camera while reversing the vehicle 1300 . Some RCTW systems include an Automatic Emergency Braking (AEB) system to ensure vehicle brakes are applied to avoid an accident. RCTW systems may use one or more rear-facing RADAR sensors 1360 coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is coupled with driver feedback such as B. a display, a speaker and / or a vibrating component is electrically coupled.

Herkömmliche ADAS-Systeme können zu falsch positiven Ergebnissen neigen, die für den Fahrer zwar ärgerlich und ablenkend, in der Regel jedoch nicht katastrophal sind, da herkömmliche ADAS-Systeme den Fahrer warnen und ihm die Möglichkeit geben, zu entscheiden, ob eine Sicherheitsbedingung tatsächlich vorliegt, und entsprechend zu handeln. Doch bei einem autonomen Fahrzeug 1300 muss das Fahrzeug 1300 im Falle widersprüchlicher Ergebnisse selbst entscheiden, ob das Ergebnis eines Primärrechners oder eines Sekundärrechners (z. B. des ersten Controllers 1336 oder des zweiten Controllers 1336) zu beachten ist. In einigen Ausführungsformen kann das ADAS-System 1338 zum Beispiel ein Backup- und/oder Sekundärcomputer sein, der einem Backup-Computer-Rationalitätsmodul Perzeptionsinformation bereitstellt. Der Backup-Computer-Rationalitätsmonitor kann auf Hardware-Komponenten eine redundante diverse Software ausführen, um Fehler in der Perzeption und in dynamischen Fahraufgaben zu detektieren. Ausgaben des ADAS-Systems 1338 können an eine überwachende MCU weitergeleitet werden. Wenn Ausgaben vom Primärrechner und Sekundärrechner widersprüchlich sind, muss die überwachende MCU bestimmen, wie der Konflikt zu lösen ist, um einen sicheren Betrieb zu gewährleisten.Traditional ADAS systems can be prone to false positives which, while annoying and distracting to the driver, are typically not catastrophic because traditional ADAS systems warn the driver and allow the driver to decide if a safety condition actually exists , and act accordingly. However, in an autonomous vehicle 1300, in the event of conflicting results, the vehicle 1300 must decide for itself whether to consider the result of a primary processor or a secondary processor (e.g., the first controller 1336 or the second controller 1336). For example, in some embodiments, ADAS system 1338 may be a backup and/or secondary computer that provides perception information to a backup computer rationality module. The backup computer rationality monitor can run redundant diverse software on hardware components in order to detect errors in perception and in dynamic driving tasks. ADAS system 1338 outputs may be forwarded to a monitoring MCU. If there are conflicting outputs from the primary and secondary processors, the monitoring MCU must determine how to resolve the conflict to ensure safe operation.

In einigen Beispielen kann der Primärcomputer dazu konfiguriert sein, der überwachenden MCU einen Konfidenzwert bereitzustellen, der das Vertrauen des Primärcomputers in das gewählte Ergebnis angibt. Wenn der Konfidenzwert einen Schwellenwert übersteigt, kann die überwachende MCU unabhängig davon, ob der Sekundärcomputer ein widersprüchliches oder inkonsistentes Ergebnis ausgibt, der Anweisung des Primärcomputers folgen. Wenn der Konfidenzwert den Schwellenwert nicht erreicht und der Primär- und Sekundärcomputer unterschiedliche Ergebnisse angeben (z. B. bei einem Konflikt), kann die überwachende MCU zwischen den Computern arbitrieren, um das geeignete Ergebnis zu bestimmen.In some examples, the primary computer may be configured to provide the monitoring MCU with a confidence value indicative of the primary computer's confidence in the selected outcome. If the confidence value exceeds a threshold, the monitoring MCU can follow the direction of the primary computer, regardless of whether the secondary computer returns a conflicting or inconsistent result. If the confidence value does not meet the threshold and the primary and secondary computers report different results (e.g., in the event of a conflict), the monitoring MCU can arbitrate between the computers to determine the appropriate result.

Die überwachende MCU kann dazu konfiguriert sein, ein oder mehrere neuronale Netze auszuführen, die dazu trainiert und konfiguriert sind, auf der Basis der Ausgaben des Primärcomputers und des Sekundärcomputers Bedingungen zu bestimmen, unter welchen der Sekundärcomputer Fehlalarme ausgibt. Dadurch können neuronale Netze in der überwachenden MCU lernen, wann die Ausgabe des Sekundärcomputers vertrauenswürdig ist, und wann nicht. Wenn der Sekundärcomputer zum Beispiel ein RADAR-basiertes FCW-System ist, können neuronale Netze in der übergeordneten MCU lernen, wann das FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahr darstellen, wie z. B. ein Abflussgitter oder ein Gullydeckel, die einen Alarm auslösen. Wenn der Sekundärcomputer ein kamerabasiertes LDW-System ist, kann ein neuronales Netz dementsprechend in der überwachenden MCU lernen, das LDW-System zu übersteuern, wenn Radfahrer oder Fußgänger vorhanden sind und ein Verlassen der Fahrspur tatsächlich das sicherste Manöver ist. In Ausführungsformen, die neuronale Netze umfassen, die auf der überwachenden MCU laufen, kann die überwachende MCU mindestens einen DLA oder eine GPU mit zugehörigem Speicher umfassen, die zur Ausführung der neuronalen Netze geeignet sind. In bevorzugten Ausführungsformen kann die überwachende MCU eine Komponente der SoC(s) 1304 umfassen und/oder als solche enthalten sein.The monitoring MCU may be configured to execute one or more neural networks that are trained and configured to determine conditions under which the secondary computer will issue false alarms based on the outputs of the primary computer and the secondary computer. This allows neural networks in the monitoring MCU to learn when the secondary computer's output is trustworthy and when it is not. For example, if the secondary computer is a RADAR-based FCW system, neural networks in the higher-level MCU can learn when the FCW system identifies metallic objects that actually pose no threat, such as metal objects. B. a drain grate or a manhole cover, which trigger an alarm. Accordingly, if the secondary computer is a camera-based LDW system, a neural network in the monitoring MCU can learn to override the LDW system when cyclists or pedestrians are present and lane departure is indeed the safest manoeuvre. In embodiments that include neural networks running on the monitoring MCU, the monitoring MCU may include at least one DLA or GPU with associated memory capable of executing the neural networks. In preferred embodiments, the monitoring MCU may comprise and/or be included as a component of the SoC(s) 1304 .

In anderen Beispielen kann das ADAS-System 1338 einen Sekundärcomputer umfassen, der ADAS-Funktionalitäten mit herkömmlichen Regeln der Computer-Vision durchführt. Der Sekundärcomputer kann klassische Computer-Vision-Regeln (wenn-dann) verwenden, und das Vorhandensein von neuronalen Netzen in der überwachenden MCU kann die Zuverlässigkeit, Sicherheit und Leistung erhöhen. Zum Beispiel machen unterschiedliche Implementierung und die absichtliche Ungleichheit das Gesamtsystem fehlertoleranter insbesondere gegenüber Fehlern, die durch die Software (oder Software-Hardware-Schnittstellen)- Funktionalität verursacht werden. Wenn zum Beispiel in der auf dem Primärcomputer laufenden Software ein Softwarefehler auftritt und der nicht identische Softwarecode auf dem Sekundärcomputer dasselbe Gesamtergebnis liefert, kann die überwachende MCU mit größerer Sicherheit davon ausgehen, dass das Gesamtergebnis korrekt ist und der Fehler in der Software oder Hardware des Primärcomputers keinen wesentlichen Fehler verursacht.In other examples, ADAS system 1338 may include a secondary computer that performs ADAS functionalities using conventional computer vision rules. The secondary computer can use classic computer vision (if-then) rules, and the presence of neural networks in the monitoring MCU can increase reliability, safety and performance. For example, different implementation and the intentional disparity make the overall system more fault tolerant especially to faults caused by the software (or software-hardware interface) functionality. For example, if there is a software error in the software running on the primary computer and the non-identical software code on the secondary computer gives the same overall result, the monitoring MCU can be more confident that the overall result is correct and the error is in the primary computer's software or hardware did not cause any significant error.

In einigen Beispielen kann die Ausgabe des ADAS-Systems 1338 in den Perzeptionsblock des Primärrechners und/oder in den dynamische Fahraufgaben-Block des Primärrechners eingegeben werden. Wenn das ADAS-System 1338 zum Beispiel aufgrund eines unmittelbar vorausfahrenden Objekts eine Aufprallunfall-Warnung anzeigt, kann der Perzeptionsblock diese Information bei der Identifizierung von Objekten verwenden. In anderen Beispielen kann der Sekundärcomputer über ein eigenes neuronales Netz verfügen, das trainiert ist und daher das Risiko von falschen Positiven (Fehlalarmen), wie hier beschrieben, reduziert.In some examples, the output of the ADAS system 1338 may be input to the host processor's perception block and/or the host processor's dynamic driving task block. For example, if the ADAS system 1338 is displaying a collision accident warning due to an object immediately ahead, the perception block can use this information in identifying objects. In other examples, the secondary computer may have its own neural network that is trained and therefore reduces the risk of false positives (false alarms) as described herein.

Das Fahrzeug 1300 kann außerdem das Infotainment-SoC 1330 (z. B. ein bordeigenes Infotainment-System (IVI)) umfassen. Auch wenn es als SoC dargestellt und beschrieben wird, kann das Infotainment-System kein SoC sein und kann zwei oder mehr diskrete Komponenten umfassen. Das Infotainment-SoC 1330 kann eine Kombination aus Hardware und Software umfassen, die verwendet werden kann, um dem Fahrzeug 1300 Audio-(z. B. Musik, einen PDA, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. TV, Filme, Streaming usw.), Telefon- (z. B. Freisprecheinrichtung), Netzwerkkonnektivität (z. B. LTE, WiFi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Einparkhilfe, ein Datenfunksystem, fahrzeugbezogene Informationen wie z. B. Kraftstoffstand, zurückgelegte Gesamtstrecke, Bremsflüssigkeitsstand, Ölstand, Tür öffnen/schließen, Luftfilterinformationen usw.) bereitzustellen. Zum Beispiel kann das Infotainment-SoC 1330 Radios, CD-Player, Navigationssysteme, Videoplayer, USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, Wi-Fi, Lenkrad-Audiosteuerung, Freisprecheinrichtung, ein Heads-up-Display (HUD), ein HMI-Display 1334, ein Telematikgerät, ein Bedienfeld (z. B. zur Steuerung und/oder Interaktion mit verschiedenen Komponenten, Funktionen und/oder Systemen) und/oder andere Komponenten umfassen. Das Infotainment-SoC 1330 kann außerdem verwendet werden, um Benutzern des Fahrzeugs Information (z. B. optisch und/oder akustisch) wie z. B. Information vom ADAS-System 1338, autonome Fahrinformation wie z. B. geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformation (z. B. Kreuzungsinformation, Fahrzeuginformation, Straßeninformation usw.) und/oder andere Information bereitzustellen.The vehicle 1300 may also include the infotainment SoC 1330 (eg, an in-vehicle infotainment system (IVI)). Although illustrated and described as an SoC, the infotainment system may not be an SoC and may include two or more discrete components. The infotainment SoC 1330 can include a combination of hardware and software that can be used to provide the vehicle 1300 with audio (e.g., music, a PDA, navigation instructions, news, radio, etc.), video (e.g., TV, movies, streaming, etc.), telephone (e.g. hands-free kit), network connectivity (e.g. LTE, WiFi etc.) and/or information services (e.g. navigation systems, parking assistance, a data radio system, vehicle-related information such as E.g. fuel level, total distance travelled, brake fluid level, oil level, door open/close, air filter information etc.). For example, the 1330 infotainment SoC can power radios, CD players, navigation systems, video players, USB and Bluetooth connectivity, carputers, in-car entertainment, Wi-Fi, steering wheel audio controls, hands-free calling, a heads-up display ( HUD), an HMI display 1334, a telematics device, a control panel (e.g., for controlling and/or interacting with various components, functions, and/or systems), and/or other components. The infotainment SoC 1330 may also be used to provide users of the vehicle with information (e.g., visually and/or audibly) such as e.g. B. Information from the ADAS system 1338, autonomous driving information such. B. planned vehicle maneuvers, trajectories, environment information (z. B. intersection information, vehicle information, road information, etc.) and / or other information.

Das Infotainment-SoC 1330 kann GPU-Funktionalität umfassen. Das Infotainment-SoC 1330 kann über den Bus 1302 (z. B. CAN-Bus, Ethernet usw.) mit anderen Geräten, Systemen und/oder Komponenten des Fahrzeugs 1300 kommunizieren. In einigen Beispielen kann das Infotainment-SoC 1330 mit einer überwachenden MCU gekoppelt sein, sodass die GPU des Infotainment-Systems einige Selbstfahrfunktionen durchführen kann, falls Primärsteuereinheit(en) 1336 (z. B. der Primär- und/oder Backup-Computer des Fahrzeugs 1300) ausfallen. In solch einem Beispiel kann das Infotainment-SoC 1330 das Fahrzeug 1300 in einen Haltemodus versetzen, wie hier beschrieben.The infotainment SoC 1330 may include GPU functionality. The infotainment SoC 1330 can communicate with other devices, systems, and/or components of the vehicle 1300 via the bus 1302 (e.g., CAN bus, Ethernet, etc.). In some examples, the infotainment SoC 1330 may be coupled to a monitoring MCU such that the infotainment system's GPU may perform some self-driving functions if the primary control unit(s) 1336 (e.g., the vehicle's primary and/or backup computer 1300) fail. In such an example, the infotainment SoC 1330 may place the vehicle 1300 in a hold mode, as described herein.

Das Fahrzeug 1300 kann außerdem ein Kombi-Instrument 1332 (z. B. ein digitales Armaturenbrett, ein elektronisches Kombi-Instrument, eine digitale Instrumententafel usw.) umfassen. Das Kombi-Instrument 1332 kann einen Controller und/oder einen Supercomputer (z. B. einen diskreten Controller oder Supercomputer) umfassen. Das Kombi-Instrument 1332 kann eine beliebige Anzahl und Kombination von Instrumenten wie z. B. Tachometer, Kraftstoffstandsanzeige, Öldruckanzeige, Drehzahlmesser, Kilometerzähler, Blinker, Schaltstellungsanzeige, Sicherheitsgurtwarnleuchte(n), Parkbremswarnleuchte(n), Motorfehlfunktionsleuchte(n), Airbagsystem (SRS)-Information, Beleuchtungssteuerungen, Sicherheitssystemsteuerungen, Navigationsinformation usw. umfassen. In einigen Beispielen kann Information angezeigt und/oder zwischen dem Infotainment SoC 1330 und dem Kombi-Instrument 1332 ausgetauscht werden. Mit anderen Worten, das Kombi-Instrument 1332 kann Teil des Infotainment-SoC 1330 enthalten sein, oder umgekehrt.The vehicle 1300 may also include an instrument cluster 1332 (eg, a digital dashboard, an electronic instrument cluster, a digital instrument panel, etc.). The instrument cluster 1332 may include a controller and/or a supercomputer (eg, a discrete controller or supercomputer). The instrument cluster 1332 can include any number and combination of instruments such as B. Speedometer, fuel gauge, oil pressure gauge, tachometer, odometer, turn signals, shift position indicator, seat belt warning light(s), parking brake warning light(s), engine malfunction light(s), airbag system (SRS) information, lighting controls, security system controls, navigation information, etc. In some examples, information may be displayed and/or exchanged between the infotainment SoC 1330 and the instrument cluster 1332 . In other words, the instrument cluster 1332 may be included as part of the infotainment SoC 1330, or vice versa.

13D ist ein Systemdiagramm für die Kommunikation zwischen Cloudbasierten Servern und dem beispielhaften autonomen Fahrzeug 1300 von 13A gemäß Ausführungsformen der vorliegenden Erfindung. Das System 1376 kann Server 1378, Netzwerke 1390 und Fahrzeuge einschließlich des Fahrzeugs 1300 umfassen. Die Server 1378 können eine Vielzahl von GPUs 1384(A)-1384(H) (hier zusammenfassend als GPUs 1384 bezeichnet), PCIe-Switches 1382(A)-1382(D) (hier zusammenfassend als PCIe-Switches 1382 bezeichnet) und/oder CPUs 1380(A)-1380(B) (hier zusammenfassend als CPUs 1380 bezeichnet) umfassen. Die GPUs 1384, CPUs 1380 und PCIe-Switches können mit Hochgeschwindigkeitsverbindungen wie z. B., ohne darauf beschränkt zu sein, den von NVIDIA entwickelten NVLink-Schnittstellen 1388 und/oder PCIe-Verbindungen 1386 miteinander verbunden sein. In einigen Beispielen sind die GPUs 1384 über ein NVLink- und/oder NVSwitch-SoC verbunden, und die GPUs 1384 und die PCIe-Switches 1382 sind über PCIe-Verbindungen verbunden. Auch wenn acht GPUs 1384, zwei CPUs 1380 und zwei PCIe-Switches dargestellt sind, ist dies nicht einschränkend zu verstehen. Je nach Ausführungsform kann jeder der Server 1378 eine beliebige Anzahl von GPUs 1384, CPUs 1380 und/oder PCIe-Switches umfassen. Zum Beispiel können die Server 1378 acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1384 umfassen. 13D 13 is a system diagram for communication between cloud-based servers and the example autonomous vehicle 1300 of FIG 13A according to embodiments of the present invention. System 1376 may include servers 1378, networks 1390, and vehicles including vehicle 1300. Servers 1378 may include a variety of GPUs 1384(A)-1384(H) (collectively referred to herein as GPUs 1384), PCIe switches 1382(A)-1382(D) (collectively referred to herein as PCIe switches 1382), and/or or CPUs 1380(A)-1380(B) (collectively referred to herein as CPUs 1380). The 1384 GPUs, 1380 CPUs, and PCIe switches can be used with high-speed connections such as B., without being limited to the NVLink interfaces 1388 and/or PCIe connections 1386 developed by NVIDIA. In some examples, the GPUs 1384 are connected via an NVLink and/or NVSwitch SoC, and the GPUs 1384 and PCIe switches 1382 are connected via PCIe connections. Although eight GPUs 1384, two CPUs 1380, and two PCIe switches are shown, this is not intended to be limiting. Depending on the embodiment, each of the servers 1378 may include any number of GPUs 1384, CPUs 1380, and/or PCIe switches. For example, servers 1378 may include eight, sixteen, thirty-two, and/or more GPUs 1384.

Die Server 1378 können über Netzwerk(e) 1390 und von den Fahrzeugen Bilddaten empfangen, die unerwartete oder veränderte Straßenzustände wie z. B. kürzlich begonnene Straßenbauarbeiten zeigen. Die Server 1378 können über Netzwerk(e) 1390 und an die Fahrzeuge neuronale Netze 1392, aktualisierte neuronale Netze 1392 und/oder Karteninformationen 1394 übertragen, einschließlich Information über den Verkehr und die Straßenbedingungen. Die Aktualisierungen der Karteninformation 1394 können Aktualisierungen für eine HD-Karte 1322 wie z. B. Information über Baustellen, Schlaglöcher, Umleitungen, Überschwemmungen und/oder andere Hindernisse umfassen. In einigen Beispielen können neuronale Netze 1392, aktualisierte neuronale Netze 1392 und/oder Karteninformation 1394 aus neuem Training und/oder in Daten dargestellten Erfahrungen resultieren, die von einer beliebigen Anzahl von Fahrzeugen in der Umgebung empfangen wurden und/oder auf Training basieren, das in einem Datenzentrum (z. B. unter Verwendung der Server 1378 und/oder anderen Server) durchgeführt wurde.Servers 1378 may receive image data over network(s) 1390 and from the vehicles showing unexpected or changing road conditions, such as traffic jams. B. show recently started road works. Servers 1378 may transmit neural networks 1392, updated neural networks 1392, and/or map information 1394, including information about traffic and road conditions, over network(s) 1390 and to the vehicles. The map information 1394 updates may be updates for an HD map 1322 such as e.g. B. information about construction sites, potholes, detours, flooding and / or other obstacles. In some examples, neural networks 1392, updated neural networks 1392, and/or map information 1394 may result from new training and/or experiences represented in data received from any number of vehicles in the area and/or based on training performed in performed at a data center (e.g., using servers 1378 and/or other servers).

Die Server 1378 können verwendet werden, um Maschinenlernmodelle (z. B. neuronale Netze) auf der Basis von Trainingsdaten zu trainieren. Die Trainingsdaten können von den Fahrzeugen und/oder in einer Simulation (z. B. mit einer Spiel-Engine) erzeugt werden. In einigen Beispielen sind die Trainingsdaten markiert (z. B., wenn das zugehörige neuronale Netz vom überwachtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen, während in anderen Beispielen die Trainingsdaten nicht markiert und/oder vorverarbeitet sind (z. B. wenn das neuronale Netz kein überwachtes Lernen erfordert). Das Training kann einer oder mehreren Klassen von Maschinenlerntechniken entsprechend durchgeführt werden, einschließlich, ohne darauf beschränkt zu sein, Klassen wie z. B.: überwachtes Training, halbüberwachtes Training, unüberwachtes Training, Selbstlernen, bestärkendes Lernen, föderales Lernen, Transferlernen, Merkmalslemen (einschließlich Hauptkomponenten- und Clusteranalysen), multilineares Unterraumlemen, vielfältiges Lernen, Repräsentationslemen (einschließlich Sparse Dictionary Learning), regelbasiertes Maschinenlernen, Anomalieerkennung und jede Variante oder Kombination daraus. Sobald die Maschinenlernmodelle trainiert sind, können die Maschinenlernmodelle von den Fahrzeugen verwendet werden (z. B. über Netzwerk(e) 1390 zu den Fahrzeugen übertragen werden), und/oder Maschinenlernmodelle können von Server(n) 1378 zur Fernüberwachung von Fahrzeugen verwendet werden.The servers 1378 can be used to train machine learning models (e.g., neural networks) based on training data. The training data can be generated by the vehicles and/or in a simulation (e.g. with a game engine). In some examples, the training data is tagged (e.g., when the associated neural network benefits from supervised learning) and/or undergoes other preprocessing, while in other examples, the training data is untagged and/or preprocessed (e.g., when the neural network does not require supervised learning). The training may be performed according to one or more classes of machine learning techniques, including but not limited to classes such as B.: supervised training, semi-supervised training, unsupervised training, self-learning, reinforcement learning, federated learning, transfer learning, feature learning (including principal component and cluster analysis), multilinear subspace learning, diverse learning, representation learning (including sparse dictionary learning), rule-based machine learning, anomaly detection, and any variant or combination thereof. Once the machine learning models are trained, the machine learning models may be used by the vehicles (e.g., transmitted to the vehicles via network(s) 1390) and/or machine learning models may be used by server(s) 1378 to remotely monitor vehicles.

In einigen Beispielen können Server 1378 von Fahrzeugen Daten empfangen und die Daten für ein intelligentes Echtzeit-Inferencing in Echtzeit auf auf dem neusten Stand befindliche neuronale Netze anwenden. Die Server 1378 können Deep-Learning-Supercomputer und/oder GPU 1384-gestützte dedizierte KI-Computer umfassen, wie z. B. die von NVIDIA entwickelten DGX- und DGX Station-Maschinen. In einigen Beispielen können die Server 1378 jedoch eine Deep-Learning-Infrastruktur umfassen, die nur CPU-gestützte Rechenzentren verwendet.In some examples, servers 1378 may receive data from vehicles and apply the data to state-of-the-art neural networks in real-time for real-time intelligent inferencing. Servers 1378 may include deep learning supercomputers and/or GPU 1384 powered dedicated AI computers, such as B. the DGX and DGX Station machines developed by NVIDIA. However, in some examples, the servers 1378 may include a deep learning infrastructure using only CPU-backed data centers.

Die Deep-Leaming-Infrastruktur der Server 1378 kann in der Lage sein, das Inferencing schnell und in Echtzeit durchzuführen, und diese Fähigkeit nutzen, um den Zustand von Prozessoren, Software und/oder zugehöriger Hardware im Fahrzeug 1300 zu evaluieren und zu überprüfen. Zum Beispiel kann die Deep-Learning-Infrastruktur in mindestens einer Ausführungsform periodische Aktualisierungen vom Fahrzeug 1300 empfangen, wie z. B. eine Bilderfolge und/oder Objekte, die das Fahrzeug 1300 in dieser Bilderfolge lokalisiert hat (z. B. über Computer-Vision und/oder andere Maschinenlern-Objektklassifizierungstechniken). Die Deep-Learning-Infrastruktur kann ihr eigenes neuronales Netzwerk ausführen, um Objekte zu identifizieren und sie mit den vom Fahrzeug 1300 identifizierten Objekten zu vergleichen, und wenn die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI im Fahrzeug 1300 eine Fehlfunktion aufweist, kann der Server 1378 ein Signal zum Fahrzeug 1300 senden, das einen ausfallsicheren Computer des Fahrzeugs 1300 anweist, die Steuerung zu übernehmen, die Fahrzeuginsassen zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.The servers 1378 deep leasing infrastructure may be able to perform the inferencing quickly and in real-time and use this capability to evaluate and check the state of processors, software and/or associated hardware in the vehicle 1300 . For example, in at least one embodiment, the deep learning infrastructure may receive periodic updates from the vehicle 1300, such as: B. a sequence of images and/or objects that the vehicle 1300 located in this sequence of images (e.g., via computer vision and/or other machine learning object classification techniques). The deep learning infrastructure can run its own neural network to identify objects and compare them to the objects identified by the vehicle 1300, and if the results do not match and the deep learning infrastructure concludes that the AI If the vehicle 1300 is malfunctioning, the server 1378 may send a signal to the vehicle 1300 instructing a fail-safe computer of the vehicle 1300 to take control, notify vehicle occupants, and perform a safe parking maneuver.

Für das Inferencing können die Server 1378 GPU(s) 1384 und einen oder mehrere programmierbare Inferencing-Beschleuniger (z. B. TensorRT von NVIDIA) umfassen. Die Kombination von GPU-gestützten Servern und Inferencing-Beschleunigung kann ein Echtzeit-Antwortverhalten ermöglichen. In anderen Beispielen wie z. B., wenn die Leistung z. B. weniger kritisch ist, können für das Inferencing auch durch CPU-gestützte, FPGA-gestützte und durch andere Prozessoren gestützte Server verwendet werden.For inferencing, servers 1378 may include GPU(s) 1384 and one or more programmable inferencing accelerators (e.g., NVIDIA's TensorRT). The combination of GPU-assisted servers and inferencing acceleration can enable real-time responsiveness. In other examples such as B. if the performance z. B. is less critical, CPU-based, FPGA-based and other processor-based servers can also be used for inferencing.

BEISPIELHAFTE RECHENEINHEITEXEMPLARY UNIT OF COMPUTER

14 ist ein Blockdiagramm einer beispielhaften Recheneinheit 1400, die zur Verwendung in Ausführungsformen der vorliegenden Erfindung geeignet ist. Die Recheneinheit 1400 kann ein Verbindungssystem 1402 umfassen, das die folgenden Geräte direkt oder indirekt miteinander verbindet: Speicher 1404, eine oder mehrere Zentraleinheiten (CPUs) 1406, eine oder mehrere Grafikprozessoren (GPUs) 1408, eine Kommunikationsschnittstelle 1410, Ein-/Ausgabe (E/A)-Anschlüsse 1412, Ein-/Ausgabekomponenten 1414, eine Stromversorgung 1416, eine oder mehrere Darstellungskomponenten 1418 (z. B. Display(s)) und eine oder mehrere Logikeinheiten 1420. In mindestens einer Ausführungsform können Recheneinheit(en) 1400 eine oder mehrere virtuelle Maschinen (VMs) umfassen, und/oder jede ihrer Komponenten kann virtuelle Komponenten (z. B. virtuelle Hardwarekomponenten) umfassen. Als nicht einschränkende Beispiele können eine oder mehrere der GPUs 1408 eine oder mehrere vGPUs umfassen, eine oder mehrere der CPUs 1406 können eine oder mehrere vCPUs umfassen und/oder eine oder mehrere der Logikeinheiten 1420 können eine oder mehrere virtuelle Logikeinheiten umfassen. Als solche können Recheneinheiten 1400 diskrete Komponenten (z. B. eine volle GPU, die der Recheneinheit 1400 fest zugeordnet ist), virtuelle Komponenten (z. B. ein Teil einer GPU, die der Recheneinheit 1400 fest zugeordnet ist) oder eine Kombination daraus umfassen. 14 14 is a block diagram of an exemplary computing unit 1400 suitable for use in embodiments of the present invention. The computing unit 1400 may include an interconnection system 1402 that directly or indirectly connects the following devices: memory 1404, one or more central processing units (CPUs) 1406, one or more graphics processing units (GPUs) 1408, a communications interface 1410, input/output (E /A) ports 1412, input/output components 1414, a power supply 1416, one or more presentation components 1418 (e.g., display(s)), and one or more logic units 1420. In at least one embodiment, computing unit(s) 1400 may be a or multiple virtual machines (VMs), and/or each of their components may include virtual components (e.g., virtual hardware components). As non-limiting examples, one or more of the GPUs 1408 may include one or more vGPUs, one or more of the CPUs 1406 may include one or more vCPUs, and/or one or more of the logical units 1420 may include one or more virtual logical units. As such, compute units 1400 may include discrete components (e.g., a full GPU dedicated to compute unit 1400), virtual components (e.g., a portion of a GPU dedicated to compute unit 1400), or a combination thereof .

Obwohl die verschiedenen Blöcke in 14 als über das Verbindungssystem 1402 mit Leitungen verbunden dargestellt sind, ist dies nicht einschränkend zu verstehen und dient nur der Klarheit. In einigen Ausführungsformen kann beispielsweise eine Darstellungskomponente 1418 wie z. B. ein Anzeigegerät, als E/A-Komponente 1414 betrachtet werden (z. B., wenn die Anzeige ein Berührungsbildschirm ist). Als weiteres Beispiel können die CPUs 1406 und/oder GPUs 1408 Speicher enthalten (z. B. kann der Speicher 1404 ein Speichergerät zusätzlich zum Speicher der GPUs 1408, der CPUs 1406 und/oder anderer Komponenten darstellen). Mit anderen Worten, die Recheneinheit von 14 ist lediglich beispielhaft. Zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablett“, „Client-Gerät“, „mobiles Gerät“, „Handgerät“, „Spielkonsole“, „elektronische Steuereinheit (ECU)“, „Virtual-Reality-System“ und/oder anderen Geräte- oder Systemtypen wird nicht unterschieden, da sie alle als im Umfang der Recheneinheit von 14 liegend betrachtet werden.Although the various blocks in 14 are shown connected to leads via the connection system 1402, this is not meant to be limiting and is for clarity only. For example, in some embodiments, a presentation component 1418, such as a a display device, may be considered an I/O component 1414 (e.g., if the display is a touch screen). As another example, CPUs 1406 and/or GPUs 1408 may include memory (e.g., memory 1404 may represent a storage device in addition to memory of GPUs 1408, CPUs 1406, and/or other components). In other words, the unit of account of 14 is only an example. Between categories such as "workstation", "server", "laptop", "desktop", "tablet", "client device", "mobile device", "handheld device", "game console", "electronic control unit (ECU)", "Virtual reality system" and/or other types of devices or systems are not distinguished, since they are all considered within the scope of the computing unit of 14 be viewed lying down.

Das Verbindungssystem 1402 kann eine oder mehrere Verbindungen oder Busse darstellen, wie z. B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination daraus. Das Verbindungssystem 1402 kann einen oder mehrere Bus- oder Link-Typen umfassen, z. B. einen ISA-Bus (Industry Standard Architecture), einen EISA-Bus (Extended Industry Standard Architecture), einen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), einen PCIe-Bus (Peripheral Component Interconnect Express) und/oder einen anderen Bus- oder Link-Typ. In einigen Ausführungsformen bestehen zwischen Komponenten direkte Verbindungen. Zum Beispiel kann die CPU 1406 direkt mit dem Speicher 1404 verbunden sein. Außerdem kann die CPU 1406 direkt mit der GPU 1408 verbunden sein. Bei einer direkten oder Punkt-zu-Punkt-Verbindung zwischen Komponenten kann das Verbindungssystem 1402 einen PCIe-Link zur Herstellung der Verbindung enthalten. In diesen Beispielen muss in der Recheneinheit 1400 kein PCI-Bus enthalten sein.Connection system 1402 may represent one or more connections or buses, such as B. an address bus, a data bus, a control bus or a combination thereof. Connection system 1402 may include one or more bus or link types, e.g. an Industry Standard Architecture (ISA) bus, an Extended Industry Standard Architecture (EISA) bus, a Video Electronics Standards Association (VESA) bus, a Peripheral Component Interconnect (PCI) bus, a Peripheral Component Interconnect (PCIe) bus Component Interconnect Express) and/or another bus or link type. In some embodiments, there are direct connections between components. For example, the CPU 1406 can be directly connected to the memory 1404. In addition, the CPU 1406 can be connected to the GPU 1408 directly. In the case of a direct or point-to-point connection between components, the connection system 1402 may include a PCIe link to establish the connection. In these examples, the computing unit 1400 need not include a PCI bus.

Der Speicher 1404 kann verschiedene computerlesbare Medien umfassen. Computerlesbare Medien können jedes verfügbare Medium sein, auf welches die Recheneinheit 1400 zugreifen kann. Computerlesbare Medien können sowohl flüchtige als auch nichtflüchtige Medien sowie entnehmbare und nicht entnehmbare Datenträger einschließen. Als nicht einschränkendes Beispiel können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien umfassen.Memory 1404 may include various computer-readable media. Computer-readable media can be any available media that the computing device 1400 can access. Computer-readable media can include both volatile and non-volatile media, as well as removable and non-removable media. As a non-limiting example, the computer-readable media may include computer storage media and communications media.

Computer-Speichermedien können sowohl flüchtige als nicht flüchtige und/oder entnehmbare als auch nicht entnehmbare Datenträger einschließen, die in einem Verfahren oder einer Technologie zur Speicherung von Information wie z. B. computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Datentypen implementiert werden. Zum Beispiel kann der Speicher 1404 computerlesbare Anweisungen speichern (z. B. solche, die ein oder mehrere Programme und/oder ein oder mehrere Programmelemente darstellen, wie z. B. ein Betriebssystem). Computer-Speichermedien können, ohne darauf beschränkt zu sein, einen RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, eine CD-ROM, DVD oder einen anderen optischen Speicher, Magnetbandkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichergeräte oder jedes andere Medium einschließen, das verwendet werden kann, um die gewünschte Information zu speichern, und auf welches die Recheneinheit 1400 zugreifen kann. Wie hier verwendet, umfassen Computerspeichermedien keine Signale an sich.Computer storage media may include both volatile and non-volatile and/or removable and non-removable data carriers used in any method or technology for storing information such as. B. computer-readable instructions, data structures, program modules or other data types can be implemented. For example, memory 1404 may store computer-readable instructions (e.g., those representing one or more programs and/or one or more program elements, such as an operating system). Computer storage media may include, but is not limited to, RAM, ROM, EEPROM, flash memory or other storage technology, CD-ROM, DVD or other optical storage, magnetic tape cartridge, magnetic tape, magnetic disk storage or other magnetic storage device, or any other Include a medium that can be used to store the desired information and that the computing unit 1400 can access. As used herein, computer storage media does not include signals per se.

Die Computerspeichermedien können typischerweise computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Datentypen in einem modulierten Datensignal wie z. B. einer Trägerwelle oder einem anderen Transportmechanismus verkörpern und schließen jedes Informationsbereitstellungsmedium ein. Der Ausdruck „moduliertes Datensignal“ bedeutet ein Signal, das eine oder mehrere Eigenschaften aufweist, die eingestellt oder verändert werden, um Information in das Signal zu codieren. Zum Beispiel, ohne darauf beschränkt zu sein, können Computerspeichermedien drahtgebundene Medien wie z. B. ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung und drahtlose Medien wie z. B. akustische, HF-, Infrarot- und andere drahtlose Medien umfassen. Kombinationen aus den obigen Medien fallen ebenfalls in den Umfang computerlesbarer Medien.The computer storage media typically may contain computer-readable instructions, data structures, program modules, or other types of data in a modulated data signal such as a signal. B. a carrier shaft or other transport mechanism embody and include any information delivery medium. The term "modulated data signal" means a signal that has one or more properties that are adjusted or changed to encode information into the signal. For example, but not limited to, computer storage media may include wired media such as B. a wired network or a direct wired connection and wireless media such. B. include acoustic, RF, infrared and other wireless media. Combinations of the above media also fall within the scope of computer-readable media.

Die CPU(s) 1406 können dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen zur Steuerung einer oder mehrerer Komponente(n) der Recheneinheit 1400 auszuführen, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 1406 können jeweils einen oder mehrere Kerne (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) umfassen, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 1406 können jeden beliebigen Prozessortyp umfassen und je nach Art der implementierten Recheneinheit 1400 unterschiedliche Prozessortypen enthalten (z. B. Prozessoren mit weniger Kernen für mobile Geräte und Prozessoren mit mehr Kernen für Server). Je nach Art der Recheneinheit 1400 kann der Prozessor zum Beispiel ein Advanced RISC Machines (ARM)-Prozessor sein, der mit Reduced Instruction Set Computing (RISC) arbeitet, oder ein x86-Prozessor, der mit Complex Instruction Set Computing (CISC) arbeitet. Die Recheneinheit 1400 kann eine oder mehrere CPUs 1406 zusätzlich zu einem oder mehreren Mikroprozessoren) oder zusätzlichen Koprozessoren wie z. B. arithmetische Coprozessoren umfassen.The CPU(s) 1406 may be configured to execute at least some of the computer-readable instructions to control one or more components of the computing device 1400 to perform one or more of the methods and/or processes described herein. CPU(s) 1406 may each include one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of processing multiple software threads concurrently. CPU(s) 1406 may include any type of processor and may include different types of processors (e.g., processors with fewer cores for mobile devices and processors with more cores for servers) depending on the type of processing unit 1400 implemented. Depending on the type of computing unit 1400, the processor may be, for example, an Advanced RISC Machines (ARM) processor that uses Reduced Instruction Set Computing (RISC) or an x86 processor that uses Complex Instruction Set Computing (CISC). The computing unit 1400 may include one or more CPUs 1406 in addition to one or more microprocessors or additional co-processors such as e.g. B. include arithmetic coprocessors.

Zusätzlich zu oder alternativ zu CPU(s) 1406 können GPU(s) 1408 dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen zur Steuerung einer oder mehrerer Komponenten der Recheneinheit 1400 ausführen, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Eine oder mehrere GPU(s) 1408 können eine integrierte GPU sein (z. B. mit einer oder mehreren der CPU(s) 1406) und/oder eine oder mehrere GPU(s) 1408 können eine diskrete GPU sein. In Ausführungsformen können eine oder mehrere GPU(s) 1408 ein Koprozessor einer oder mehrerer CPU(s) 1406 sein. GPU(s) 1408 können von der Recheneinheit 1400 zur Grafikausgabe (z. B. 3D-Grafiken) oder zur Durchführung allgemeiner Berechnungen verwendet werden. GPU(s) 1408 können zum Beispiel für allgemeine Berechnungen in GPUs (GPGPU) verwendet werden. GPU(s) 1408 können Hunderte oder Tausende von Kernen umfassen, die in der Lage sind, Hunderte oder Tausende von Software-Threads gleichzeitig zu verarbeiten. GPU(s) 1408 können in Reaktion auf Rendering-Befehle (z. B. Rendering-Befehle von CPU(s) 1406, die über eine Host-Schnittstelle empfangen werden) Pixeldaten für Ausgabebilder erzeugen. GPU(s) 1408 können Grafikspeicher wie z. B. einen Anzeigespeicher zum Speichern von Pixeldaten oder anderen geeigneten Daten wie z. B. GPGPU-Daten umfassen. Der Anzeigespeicher kann als Teil des Speichers 1404 enthalten sein. GPU(s) 1408 können zwei oder mehr GPUs umfassen, die (z. B. über eine Link) parallel arbeiten. Der Link kann GPUs direkt (z. B. mit NVLINK) verbinden oder über einen Schalter (z. B. mit NVSwitch) verbinden. In Kombination miteinander kann jede GPU 1408 Pixeldaten oder jede GPGPU Daten für verschiedene Teile einer Ausgabe oder für verschiedene Ausgaben erzeugen (z. B. eine erste GPU für ein erstes Bild und eine zweite GPU für ein zweites Bild). Jede GPU kann ihren eigenen Speicher haben oder den Speicher gemeinsam mit anderen GPUs benutzen.In addition to or in the alternative to CPU(s) 1406, GPU(s) 1408 may be configured to execute at least some of the computer-readable instructions for controlling one or more components of computing unit 1400 to perform one or more of the methods and/or processes described herein. One or more GPU(s) 1408 may be an integrated GPU (e.g., with one or more of the CPU(s) 1406) and/or one or more GPU(s) 1408 may be a discrete GPU. In embodiments, one or more GPU(s) 1408 may be a co-processor of one or more CPU(s) 1406. GPU(s) 1408 may be used by computing unit 1400 for graphics output (e.g., 3D graphics) or for performing general computations. GPU(s) 1408 can be used for general purpose computations in GPUs (GPGPU), for example. GPU(s) 1408 may include hundreds or thousands of cores capable of processing hundreds or thousands of software threads simultaneously. GPU(s) 1408 may generate pixel data for output images in response to rendering commands (e.g., rendering commands from CPU(s) 1406 received via a host interface). GPU(s) 1408 may include graphics memory such as B. a display memory for storing pixel data or other suitable data such. B. GPGPU data include. Display memory may be included as part of memory 1404 . GPU(s) 1408 may include two or more GPUs operating in parallel (e.g., via a link). The link can connect GPUs directly (e.g. using NVLINK) or connect via a switch (e.g. using NVSwitch). In combination with each other, each GPU can generate 1408 pixel data or each GPGPU data for different parts of an output or for different outputs (e.g. a first GPU for a first image and a second GPU for a second image). Each GPU can have its own memory or share memory with other GPUs.

Zusätzlich zu oder alternativ zu CPU(s) 1406 und/oder GPU(s) 1408 können Logikeinheit(en) 1420 dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen zur Steuerung einer oder mehrerer Komponenten der Recheneinheit 1400 auszuführen, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. In Ausführungsformen können CPU(s) 1406, GPU(s) 1408 und/oder Logikeinheit(en) 1420 einzeln oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Teile davon durchführen. Eine oder mehrere der Logikeinheiten 1420 können in einer oder mehreren CPU(s) 1406 und/oder GPU(s) 1408 integriert sein und/oder eine oder mehrere der Logikeinheiten 1420 können Einzelkomponenten sein oder auf andere Weise außerhalb der CPU(s) 1406 und/oder der GPU(s) 1408 liegen. In Ausführungsformen können eine oder mehrere der Logikeinheiten 1420 ein Koprozessor einer oder mehrerer CPU(s) 1406 und/oder einer oder mehrerer GPU(s) 1408 sein.In addition to or in the alternative to CPU(s) 1406 and/or GPU(s) 1408, logic unit(s) 1420 may be configured to execute at least some of the computer-readable instructions for controlling one or more components of computing unit 1400 to perform one or more of the herein carry out the procedures and/or processes described. In embodiments, CPU(s) 1406, GPU(s) 1408, and/or logic unit(s) 1420 may individually or collectively perform any combination of the methods, processes, and/or portions thereof. One or more of the logic units 1420 may be integrated into one or more CPU(s) 1406 and/or GPU(s) 1408, and/or one or more of the logic units 1420 may be standalone components or otherwise external to the CPU(s) 1406 and /or the GPU(s) 1408. In embodiments, one or more of the logic units 1420 may be a co-processor of one or more CPU(s) 1406 and/or one or more GPU(s) 1408 .

Beispiele für Logikeinheit(en) 1420 schließen einen oder mehrere Rechenkerne und/oder Komponenten davon wie z. B. Datenverarbeitungseinheiten (DPUs), Tensor-Kerne (TCs), Tensor-Verarbeitungseinheiten (TPUs), Pixel Visual Cores (PVCs), Vision-Verarbeitungseinheiten (VPUs), Grafik-Verarbeitungscluster (GPCs), Textur-Verarbeitungscluster (TPCs), Streaming-Multiprocezessoren (SMs), Tree Traversal Units (TTUs), KI-Beschleuniger (AIAs), Deep Learning- Beschleuniger (DLAs), arithmetische Logikeinheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Fließkomma-Einheiten (FPUs), Eingabe-/Ausgabe (E/A)-Elemente, Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen ein.Examples of logic unit(s) 1420 include one or more computational cores and/or components thereof such as e.g. B. Data Processing Units (DPUs), Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming -Multiprocessors (SMs), Tree Traversal Units (TTUs), AI Accelerators (AIAs), Deep Learning Accelerators (DLAs), Arithmetic Logic Units (ALUs), Application Specific Integrated Circuits (ASICs), Floating Point Units (FPUs), Input- /Output (I/O) elements, Peripheral Component Interconnect (PCI) or Peripheral Component Interconnect Express (PCIe) elements, and/or the like.

Die Kommunikationsschnittstelle 1410 kann einen oder mehrere Empfänger, Sender und/oder Sender-Empfänger einschließen, die es der Recheneinheit 1400 ermöglichen, über ein elektronisches Kommunikationsnetzwerk einschließlich drahtgebundener und/oder drahtloser Kommunikation mit anderen Recheneinheiten zu kommunizieren. Die Kommunikationsschnittstelle 1410 kann Komponenten und Funktionen einschließen, die die Kommunikation über eine Anzahl verschiedener Netzwerke wie z. B. drahtlose Netzwerke (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netzwerke (z. B. Kommunikation über Ethernet oder InfiniBand), Low-Power-Weitverkehrsnetze (z. B. LoRaWAN, SigFox usw.) und/oder das Internet ermöglichen. In einer oder mehreren Ausführungsformen können Logikeinheit(en) 1420 und/oder die Kommunikationsschnittstelle 1410 eine oder mehrere Datenverarbeitungseinheiten (DPUs) umfassen, um über ein Netzwerk und/oder über das Verbindungssystem 1402 empfangene Daten direkt an eine oder mehrere GPU(s) 1408 (z. B. einen Speicher davon) zu übertragen.Communications interface 1410 may include one or more receivers, transmitters, and/or transceivers that enable computing device 1400 to communicate with other computing devices over an electronic communications network, including wired and/or wireless communications. The communication interface 1410 may include components and functions that enable communication over a number of different networks, such as. B. wireless networks (e.g. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee, etc.), wired networks (e.g. communication via Ethernet or InfiniBand), low-power wide area networks (e.g . LoRaWAN, SigFox, etc.) and/or the Internet. In one or more embodiments, logical unit(s) 1420 and/or communication interface 1410 may include one or more data processing units (DPUs) to transmit data received over a network and/or over connection system 1402 directly to one or more GPU(s) 1408 ( e.g. a memory thereof).

Die E/A-Anschlüsse 1412 ermöglichen es der Recheneinheit 1400, logisch mit anderen Geräten einschließlich E/A-Komponenten 1414, Darstellungskomponente(n) 1418 und/oder anderer Komponenten, von denen einige in der Recheneinheit 1400 eingebaut (z. B. darin integriert) sein können, gekoppelt zu werden. Beispielhafte E/A-Komponenten 1414 schließen ein Mikrofon, eine Maus, eine Tastatur, ein Joystick, ein Gamepad, einen Gamecontroller, eine Satellitenschüssel, ein Scanner, ein Drucker, ein drahtloses Gerät usw. ein. Die E/A-Komponenten 1414 können eine natürliche Benutzerschnittstelle (NUI) bereitstellen, die Luftgesten, Sprache oder andere physiologische Eingaben eines Benutzers verarbeitet. In manchen Fällen können die Eingaben zur Weiterverarbeitung an ein geeignetes Netzelement übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie weiter unten ausführlicher beschrieben) im Zusammenhang mit einer Anzeige der Recheneinheit 1400 implementieren. Die Recheneinheit 1400 kann Tiefenkameras wie z. B. stereoskopische Kamerasysteme, Infrarot-Kamerasysteme, RGB-Kamerasysteme, Touchscreen-Technologie und Kombinationen davon zur Gestendetektion und -erkennung und - steuerung. Zusätzlich kann die Recheneinheit 1400 Beschleunigungsmesser oder Gyroskope (z. B. als Teil einer Trägheitsmesseinheit (IMU)) einschließen, die die Detektion von Bewegungen ermöglichen. In manchen Beispielen kann die Ausgabe von Beschleunigungsmessern oder Gyroskopen von der Recheneinheit 1400 verwendet werden, um immersive erweiterte Realität oder virtuelle Realität zu rendern.I/O ports 1412 allow computing unit 1400 to logically communicate with other devices including I/O component 1414, presentation component(s) 1418, and/or other components, some of which may be incorporated into computing unit 1400 (e.g., integrated) can be to be coupled. Example I/O components 1414 include a microphone, mouse, keyboard, joystick, gamepad, game controller, satellite dish, scanner, printer, wireless device, and so on. The I/O components 1414 may provide a natural user interface (NUI) that processes a user's air gestures, speech, or other physiological input. In some cases, the inputs can be transmitted to an appropriate network element for further processing. A NUI may include any combination of speech recognition, pen recognition, face recognition, biometric recognition, both on-screen and off-screen gesture recognition, air gestures, head and eye tracking, and touch recognition (as described in more detail below) in the context of a display of the computing unit 1400 to implement. The computing unit 1400 may include depth cameras such as e.g. B. stereoscopic camera systems, infrared camera systems, RGB camera systems, touch screen technology and combinations thereof for gesture detection and recognition and - control. Additionally, computing unit 1400 may include accelerometers or gyroscopes (e.g., as part of an inertial measurement unit (IMU)) that enable detection of motion. In some examples, accelerometer or gyroscope output may be used by computing unit 1400 to render immersive augmented reality or virtual reality.

Die Stromversorgung 1416 kann eine fest verdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination daraus sein. Die Stromversorgung 1416 kann die Recheneinheit 1400 mit Strom versorgen, um den Betrieb der Komponenten der Recheneinheit 1400 zu ermöglichen.The power supply 1416 can be a hardwired power supply, a battery power supply, or a combination thereof. The power supply 1416 may provide power to the computing device 1400 to enable the components of the computing device 1400 to operate.

Die Darstellungskomponente(n) 1418 können eine Anzeige (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Head-up-Display (HUD), andere Arten von Anzeigen oder eine Kombination daraus), Lautsprecher und/oder andere Darstellungskomponenten umfassen. Die Darstellungskomponente(n) 1418 können Daten von anderen Komponenten (z. B. GPU(s) 1408, CPU(s) 1406, DPUs usw.) empfangen und die Daten (z. B. als Bild, Video, Ton usw.) ausgeben.The presentation component(s) 1418 can be a display (e.g., a monitor, a touch screen, a television screen, a head-up display (HUD), other types of displays, or a combination thereof), speakers and/or other display components. The rendering component(s) 1418 may receive data from other components (e.g., GPU(s) 1408, CPU(s) 1406, DPUs, etc.) and display the data (e.g., as an image, video, sound, etc.) output.

BEISPIELHAFTES DATENZENTRUMEXEMPLARY DATA CENTER

15 stellt ein beispielhaftes Datenzentrum 1500 dar, das in mindestens einer Ausführungsform der vorliegenden Erfindung verwendet werden kann. Das Datenzentrum 1500 kann eine Datenzentrumsinfrastrukturebene 1510, eine Framework-Ebene 1520, eine Softwareebene 1530 und/oder eine Anwendungsebene 1540 umfassen. 15 15 illustrates an exemplary data center 1500 that may be used in at least one embodiment of the present invention. The data center 1500 may include a data center infrastructure layer 1510, a framework layer 1520, a software layer 1530, and/or an application layer 1540.

Wie in 15 dargestellt, kann die Datenzentrumsinfrastrukturebene 1510 einen Ressourcen-Orchestrator (Ressourcenverwalter) 1512, gruppierte Rechenressourcen 1514 und Knoten-Rechenressourcen („Knoten-RR“) 1516(1)-1516(N), umfassen, wobei „N“ eine beliebige positive Ganzzahl darstellt. In mindestens einer Ausführungsform können die Knoten-RR 1516(1)-1516(N), ohne darauf beschränkt zu sein, eine beliebige Anzahl von Zentraleinheiten (CPUs) oder anderen Prozessoren (einschließlich DPUs, Beschleunigern, feldprogrammierbaren Gate-Arrays (FPGAs), Grafikprozessoren oder Grafikverarbeitungseinheiten (GPUs) usw.), Arbeitsspeicher (z. B., dynamischer Festwertspeicher), Speichergeräten (z. B. Festkörper- oder Plattenlaufwerke), Netzwerk-Eingabe-/Ausgabe (NW E/A)- Geräten, Netzwerk-Switches, virtuelle Maschinen (VMs), Stromversorgungsmodulen und/oder Kühlmodulen usw. umfassen. In manchen Ausführungsformen können eine oder mehrere Knoten-RR unter den Knoten-RR 1516(1)-1516(N) einem Server entsprechen, der eine oder mehrere der obigen Rechenressourcen aufweist. Darüber hinaus können die Knoten-RR 1516(1)-15161(N) in manchen Ausführungsformen eine oder mehrere virtuelle Komponenten wie z. B. vGPUs, vCPUs und/oder dergleichen umfassen, und/oder eine oder mehrere der Knoten-RR 1516(1)-1516(N) können einer virtuellen Maschine (VM) entsprechen.As in 15 As illustrated, the data center infrastructure layer 1510 may include a resource orchestrator (resource manager) 1512, clustered compute resources 1514, and node compute resources ("node RR") 1516(1)-1516(N), where "N" represents any positive integer . In at least one embodiment, node RRs 1516(1)-1516(N) may include, but are not limited to, any number of central processing units (CPUs) or other processors (including DPUs, accelerators, field programmable gate arrays (FPGAs), Graphics processors or graphics processing units (GPUs), etc.), memory (e.g., dynamic read-only memory), storage devices (e.g., solid state or disk drives), network input/output (NW I/O) devices, network switches, virtual machines (VMs), power supply modules and/or cooling modules, etc. In some embodiments, one or more node RRs among node RRs 1516(1)-1516(N) may correspond to a server having one or more of the above computing resources. Additionally, in some embodiments, node RRs 1516(1)-15161(N) may include one or more virtual components such as B. include vGPUs, vCPUs and/or the like, and/or one or more of the node RR 1516(1)-1516(N) may correspond to a virtual machine (VM).

In mindestens einer Ausführungsform können gruppierte Computerressourcen 1514 separate Gruppierungen von Knoten-RR 1516 umfassen, die in einem oder mehreren Racks (nicht dargestellt) oder zahlreichen Racks in Datenzentren an verschiedenen geografischen Standorten (ebenfalls nicht dargestellt) untergebracht sind. Separate Gruppierungen von Knoten-RR 1516 innerhalb gruppierter Rechenressourcen 1514 können gruppierte Rechen-, Netzwerk- oder Speicher-Ressourcen umfassen, die dazu konfiguriert oder vorgesehen sein können, eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-RR 1516, die CPUs, GPUs, DPUs und/oder andere Prozessoren umfassen, in einem oder mehreren Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. Das oder die Racks können auch eine beliebige Anzahl von Stromversorgungsmodulen, Kühlmodulen und/oder Netzwerk-Switches in beliebiger Kombination umfassen.In at least one embodiment, clustered computing resources 1514 may include separate clusters of node RRs 1516 housed in one or more racks (not shown) or numerous racks in data centers in different geographic locations (also not shown). Separate groupings of Node RRs 1516 within grouped compute resources 1514 may include grouped compute, network, or storage resources that may be configured or designated to support one or more workloads. In at least one embodiment, multiple Node RRs 1516, including CPUs, GPUs, DPUs, and/or other processors, may be grouped in one or more racks to provide compute resources to support one or more workloads. The rack(s) may also include any number of power supply modules, cooling modules, and/or network switches in any combination.

Der Ressourcen-Orchestrator 1512 kann einen oder mehrere Knoten-RR 1516(1)-1516(N) und/oder gruppierte Rechenressourcen 1514 konfigurieren oder auf andere Weise steuern. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1512 ein Verwaltungsorgan für die Software-Design-Infrastruktur (SDI) des Datenzentrums 1500 umfassen. Der Ressourcen-Orchestrator 1512 kann Hardware, Software oder einer Kombination daraus umfassen.The resource orchestrator 1512 may configure or otherwise control one or more node RRs 1516(1)-1516(N) and/or clustered computing resources 1514. In at least one embodiment, resource orchestrator 1512 may comprise a data center 1500 software design infrastructure (SDI) manager. The resource orchestrator 1512 may include hardware, software, or a combination thereof.

In mindestens einer Ausführungsform, wie in 15 gezeigt, kann die Framework-Ebene 1520 einen Job-Scheduler 1533, einen Konfigurationsmanager 1534, einen Ressourcenmanager 1536 und/oder ein verteiltes Dateisystem 1538 umfassen. Die Framework-Ebene 1520 kann ein System zur Unterstützung der Software 1532 der Softwareebene 1530 und/oder einer oder mehrerer Anwendung(en) 1542 der Anwendungsebene 1540 umfassen. Die Software 1532 oder die Anwendung(en) 1542 können webbasierte Dienstsoftware oder Anwendungen wie z. B. die umfassen, die Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. Die Framework-Ebene 1520 kann, ohne darauf beschränkt zu sein, ein freies und Open Source Software-Webapplikationsframework wie Apache SparkTM (im Folgenden „Spark“) sein, das zur Verarbeitung großer Datenmengen (z. B. „Big Data“) ein verteiltes Dateisystem 1538 verwenden kann. In mindestens einer Ausführungsform kann der Job Scheduler 1533 einen Spark-Treiber umfassen, um die Planung der Arbeitslasten, die von verschiedenen Ebenen des Datenzentrums 1500 unterstützt werden, zu erleichtern. Der Konfigurationsmanager 1534 kann in der Lage sein, verschiedene Ebenen wie die Softwareebene 1530 und die Framework-Ebene 1520 einschließlich Spark und des verteilten Dateisystems 1538 konfigurieren, um die Verarbeitung großer Datenmengen zu unterstützen. Der Ressourcenmanager 1536 kann in der Lage sein, gebündelte oder gruppierte Computerressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1538 und des Job Schedulers 1533 zugeordnet oder zugewiesen sind. In mindestens einer Ausführungsform können gebündelte oder gruppierte Computerressourcen gruppierte Computerressourcen 1514 auf der Infrastrukturebene 1510 des Datenzentrums umfassen. Der Ressourcenmanager 1536 kann sich mit dem Ressourcen-Orchestrator 1512 abstimmen, um diese zugeordneten oder zugewiesenen Computerressourcen zu verwalten.In at least one embodiment, as in 15 As shown, the framework layer 1520 may include a job scheduler 1533, a configuration manager 1534, a resource manager 1536, and/or a distributed file system 1538. The framework layer 1520 may include a system for supporting the software 1532 of the software layer 1530 and/or one or more application(s) 1542 of the application layer 1540. Software 1532 or application(s) 1542 may be web-based service software or applications such as B. include those provided by Amazon Web Services, Google Cloud and Microsoft Azure. The framework layer 1520 can be, but is not limited to, a free and open source software web application framework, such as Apache Spark™ (hereinafter "Spark"), which is designed to process large amounts of data (e.g., "Big Data") a distributed File system 1538 can use. In at least one embodiment, the job scheduler 1533 may include a Spark driver to facilitate scheduling of the workloads supported by different tiers of the data center 1500. The configuration manager 1534 may be able to configure various layers such as the software layer 1530 and the framework layer 1520 including Spark and the distributed file system 1538 to support processing of large amounts of data. The resource manager 1536 may be able to manage pooled or grouped computing resources allocated or allocated in support of the distributed file system 1538 and the job scheduler 1533 . In at least one embodiment, pooled or grouped computing resources may be grouped Computing resources 1514 at the infrastructure level 1510 of the data center. The resource manager 1536 can coordinate with the resource orchestrator 1512 to manage these allocated or assigned computing resources.

IIn mindestens einer Ausführungsform kann die in der Softwareebene 1530 enthaltene Software 1532 Software umfassen, die von mindestens einem Teil der Knoten-RR 1516(1)-1516(N), der gruppierten Rechenressourcen 1514 und/oder des verteilten Dateisystems 1538 der Framework-Ebene 1520 verwendet wird. Eine oder mehrere Arten von Software können, ohne darauf beschränkt zu sein, Suchsoftware für Internet-Webseiten-, Scansoftware für E-Mail-Viren, Datenbanksoftware und Streamingsoftware für Videoinhalte umfassen.In at least one embodiment, the software 1532 included in the software layer 1530 may include software generated by at least a portion of the node RRs 1516(1)-1516(N), the clustered computing resources 1514, and/or the distributed file system 1538 of the framework layer 1520 is used. One or more types of software may include, but are not limited to, Internet web site search software, e-mail virus scanning software, database software, and video content streaming software.

In mindestens einer Ausführungsform können die in der Anwendungsebene 1540 enthaltenen Anwendung(en) 1542 eine oder mehrere Anwendungstypen umfassen, die mindestens von einem Teil der Knoten-RR 1516(1)-1516(N), der gruppierten Rechenressourcen 1514 und/oder des verteilten Dateisystem 1538 der Framework-Ebene 1520 verwendet werden. Die Anwendungstypen können, ohne darauf beschränkt zu sein, eine beliebige Zahl von Anwendungen umfassen, wie z. B. eine Genomik-Anwendung, Cognitive Computing, und eine Maschinenlern-Anwendung, einschließlich Trainings- oder Inferencing-Software, Maschinenlern-Framework-Software (z. B. PyTorch, TensorFlow, Caffe usw.) und/oder andere Maschinenlern-Anwendungen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden.In at least one embodiment, the application(s) 1542 contained in the application layer 1540 may include one or more application types that are governed by at least a portion of the node RR 1516(1)-1516(N), the clustered computing resources 1514, and/or the distributed Framework level file system 1538 1520 can be used. Application types can include, but are not limited to, any number of applications such as: B. a genomics application, cognitive computing, and a machine learning application, including training or inferencing software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.), and/or other machine learning applications, used in connection with one or more embodiments.

In mindestens einer Ausführungsform können der Konfigurationsmanager 1534, der Ressourcenmanager 1536 und der Ressourcen-Orchestrator 1512 auf der Basis einer beliebigen Menge und Art von Daten, die auf jede technisch machbare Weise erfasst werden, eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren. Selbstmodifizierende Aktionen können einen Datenzentrumsbetreiber des Datenzentrums 1500 davon entbinden, möglicherweise schlechte Konfigurationsentscheidungen zu treffen, um nicht ausgelastete und/oder schlecht funktionierende Teile eines Datenzentrums zu vermeiden.In at least one embodiment, configuration manager 1534, resource manager 1536, and resource orchestrator 1512 may implement any number and type of self-modifying actions based on any amount and type of data collected in any technically feasible manner. Self-modifying actions can relieve a data center operator of the data center 1500 from potentially making bad configuration decisions to avoid underutilized and/or malfunctioning parts of a data center.

Das Datenzentrum 1500 kann Tools, Dienste, Software oder andere Ressourcen umfassen, um ein oder mehrere Maschinenlernmodelle zu trainieren oder Information unter Verwendung eines oder mehrerer Maschinenlernmodelle gemäß einer oder mehreren hier beschriebenen Ausführungsformen vorherzusagen oder zu inferieren. Zum Beispiel können ein oder mehrere Maschinenlernmodelle trainiert werden, indem unter Verwendung von Software und/oder Computerressourcen, die oben in Bezug auf das Datenzentrum 1500 beschrieben wurden, Gewichtungsparameter einer neuronalen Netzarchitektur berechnet werden. In mindestens einer Ausführungsform können trainierte oder eingesetzte Maschinenlernmodelle, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um unter Verwendung der oben in Bezug auf das Datenzentrum 1500 beschriebenen Ressourcen Information zu inferieren oder vorherzusagen, indem sie Gewichtungsparameter verwenden, die durch eine oder mehrere Trainingstechniken wie die hier beschriebenen berechnet wurden, ohne darauf beschränkt zu sein.The data center 1500 may include tools, services, software, or other resources to train one or more machine learning models or to predict or infer information using one or more machine learning models according to one or more embodiments described herein. For example, one or more machine learning models may be trained by calculating weight parameters of a neural network architecture using software and/or computing resources described above with respect to data center 1500 . In at least one embodiment, trained or deployed machine learning models corresponding to one or more neural networks may be used to infer or predict information using the resources described above with respect to data center 1500 using weighting parameters defined by one or more Training techniques such as, but not limited to, those described herein have been calculated.

In mindestens einer Ausführungsform kann das Datenzentrum 1500 CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs und/oder andere Hardware (oder entsprechende virtuelle Rechenressourcen) verwenden, um das Training und/oder Inferieren (Herleiten) unter Verwendung der oben beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardware-Ressourcen als Dienst konfiguriert sein, der es Benutzern ermöglicht, Information wie z. B. Bilderkennung, Spracherkennung oder andere KI-Dienste zu trainieren oder zu inferieren.In at least one embodiment, the data center 1500 may use CPUs, application specific integrated circuits (ASICs), GPUs, FPGAs, and/or other hardware (or equivalent virtual computing resources) to perform training and/or inferring (deriving) using the resources described above . Additionally, one or more of the software and/or hardware resources described above may be configured as a service that allows users to view information such as B. to train or infer image recognition, speech recognition or other AI services.

BEISPIELHAFTE NETZWERKUMGEBUNGENEXEMPLARY NETWORK ENVIRONMENTS

Netzwerkumgebungen, die zur Verwendung in der Implementierung von Ausführungsformen der Erfindung geeignet sind, können ein oder mehrere Client-Geräte, Server, Netzwerkspeicher (NAS), andere Backend-Geräte und/oder andere Gerätetypen umfassen. Client-Geräte, Server und/oder andere Gerätetypen (z. B. jedes Gerät) können in einer oder mehreren Instanzen der Recheneinheit(en) 1400 von 14 implementiert sein - z. B. kann jedes Gerät gleiche Komponenten, Merkmale und/oder Funktionalitäten der Recheneinheit(en) 1400 umfassen. Wenn Backend-Geräte (z. B. Server, NAS usw.) implementiert sind, können die Backend-Geräte außerdem Teil eines Datenzentrums 1500 sein, das hier Bezug nehmend auf 15 beispielhaft beschrieben wurde.Network environments suitable for use in implementing embodiments of the invention may include one or more client devices, servers, network attached storage (NAS), other backend devices, and/or other types of devices. Client devices, servers, and/or other device types (e.g., any device) may reside in one or more instances of the computing unit(s) 1400 of 14 be implemented - e.g. e.g., each device may include similar components, features, and/or functionality of the computing unit(s) 1400. Additionally, when backend devices (e.g., servers, NAS, etc.) are implemented, the backend devices may be part of a data center 1500 referred to herein 15 was described as an example.

Die Komponenten einer Netzwerkumgebung können über ein oder mehrere Netzwerk(e), die drahtgebunden, drahtlos oder beides sein können, miteinander kommunizieren. Das Netzwerk kann mehrere Netzwerke oder ein Netz von Netzwerken umfassen. Das Netzwerk kann beispielsweise ein oder mehrere Weitverkehrsnetze (WANs), ein oder mehrere lokale Netzwerke (LANs), ein oder mehrere öffentliche Netzwerke wie z. B. das Internet und/oder ein öffentliches Telefonnetz (PSTN) und/oder ein oder mehrere private Netzwerke umfassen. Wenn das Netzwerk ein drahtloses Telekommunikationsnetz umfasst, können Komponenten wie z. B. eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie andere Komponenten) drahtlose Konnektivität bereitstellen.The components of a network environment may communicate with one another over one or more networks, which may be wired, wireless, or both. The network can have multiple network works or a network of networks. For example, the network may be one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks such as the Internet and/or a public switched telephone network (PSTN) and/or one or more private networks. If the network comprises a wireless telecommunications network, components such as e.g. B. a base station, a communication tower or even access points (as well as other components) provide wireless connectivity.

Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer-Netzwerkumgebung(en) - in diesem Fall darf in einer Netzwerkumgebung kein Server enthalten sein - und eine oder mehrere Client-Server-Netzwerkumgebungen - in diesem Fall könnenin einer Netzwerkumgebung ein oder mehrere Server enthalten sein - umfassen. In Peer-to-Peer-Netzwerkumgebungen kann die Funktionalität, die hier in Bezug auf einen oder mehrere Server beschrieben wird, auf einer beliebigen Anzahl von Client-Geräten implementiert sein.Compatible network environments may include one or more peer-to-peer network environments - in which case a network environment may not contain a server - and one or more client-server network environments - in which case a network environment may contain one or more servers be - include. In peer-to-peer network environments, the functionality described herein in relation to one or more servers may be implemented on any number of client devices.

In mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Rechenumgebung, eine Kombination daraus usw. umfassen. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Ebene, einen Job-Scheduler, einen Ressourcen-Manager und ein verteiltes Dateisystem umfassen, die auf einen oder mehreren Servern implementiert sind, welche einen oder mehrere Kernnetzserver und/oder Edge-Server umfassen können. Eine Framework-Ebene kann ein System zur Unterstützung der Software einer Softwareebene und/oder einer oder mehrerer Anwendungen einer Anwendungsebene umfassen. Die Software oder Anwendung(en) können auch webbasierte Dienst-Software oder -Anwendungen umfassen. In Ausführungsformen können ein oder mehrere Client-Geräte webbasierte Dienst-Software oder - Anwendungen nutzen (z. B., indem über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs) auf Dienst-Software und/oder -Anwendungen zugegriffen wird). Die Framework-Ebene kann, ohne darauf beschränkt zu sein, eine Art freies freies und Open Source Software-Webapplikationsframework wie z. B. eines sein, das ein verteiltes Dateisystem zur Verarbeitung großer Datenmengen (z. B. „Big Data“) verwendet.In at least one embodiment, a network environment may include one or more cloud-based network environments, a distributed computing environment, a combination thereof, and so on. A cloud-based network environment may include a framework layer, a job scheduler, a resource manager, and a distributed file system implemented on one or more servers, which may include one or more core network servers and/or edge servers. A framework layer may include a system to support software of a software layer and/or one or more applications of an application layer. The software or application(s) may also include web-based service software or applications. In embodiments, one or more client devices may utilize web-based service software or applications (e.g., by accessing service software and/or applications through one or more application programming interfaces (APIs)). The framework layer can include, but is not limited to, some type of free and open source software web application framework such as For example, be one that uses a distributed file system to process large amounts of data (e.g., "big data").

Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicher bereitstellen, die eine beliebige Kombination der hier beschriebenen Rechen- und/oder Datenspeicherfunktionen (oder einen oder mehrere Teile davon) durchführen. Jede dieser verschiedenen Funktionen kann auf Zentral- oder Kernserver an mehreren Standorte verteilt sein (z. B. in eine, oder mehreren Datenzentren, die innerhalb eines Staats, einer Region, eines Lands, weltweit usw. verteilt sein können). Wenn eine Verbindung zu einem Benutzer (z. B. einem Client-Gerät) relativ nahe an Edge-Server(n) liegt, kann ein Kernserver einem Edge-Server mindestens einen Teil der Funktionalität zuweisen. Eine Cloud-basierte Netzwerkumgebung kann privat (z. B. auf eine einzelne Organisation beschränkt), öffentlich (z. B. für viele Organisationen verfügbar) und/oder eine Kombination daraus (z. B. eine hybride Cloud-Umgebung) sein.A cloud-based network environment may provide cloud computing and/or cloud storage that performs any combination of the computing and/or data storage functions (or one or more portions thereof) described herein. Each of these various functions may be distributed across central or core servers in multiple locations (e.g., in one or more data centers that may be distributed within a state, region, country, worldwide, etc.). When a connection to a user (e.g., a client device) is relatively close to edge server(s), a core server may assign at least some functionality to an edge server. A cloud-based network environment can be private (e.g., limited to a single organization), public (e.g., available to many organizations), and/or a combination thereof (e.g., a hybrid cloud environment).

Client-Gerät(e) können mindestens einige der Komponenten, Merkmale und Funktionalitäten der beispielhaften Recheneinheit(en) 1400 umfassen, die hier Bezug nehmend auf 14 beschrieben wurde. Ein Client-Gerät kann beispielsweise, ohne darauf beschränkt zu sein, als ein Personal Computer (PC), ein Laptop, ein mobiles Gerät, ein Smartphone, Tablet-Computer, eine intelligente Uhr, ein tragbarer Computer, ein Personal Digital Assistant (PDA), ein MP3-Player, ein Virtual-Reality-Headset, ein globales Positionsbestimmungssystem (GPS) oder GPS-Gerät, ein Videoplayer, eine Videokamera, ein Überwachungsgerät oder -system, ein Fahrzeug, ein Boot, ein fliegendes Wasserfahrzeug, eine virtuelle Maschine, eine Drohne, ein Roboter, ein tragbares Kommunikationsgerät, ein Klinikgerät, ein Spielgerät oder -system, ein Unterhaltungssystem, ein Fahrzeugcomputersystem, einen Embedded-System-Controller, eine Fernbedienung, ein Zubehör, ein Unterhaltungselektronikgerät, eine Arbeitsstation, ein Edge-Gerät und eine beliebige Kombination dieser beschriebenen Geräte oder jedes andere geeignete Gerät ausgeführt sein.Client device(s) may include at least some of the components, features, and functionality of the example computing unit(s) 1400 described herein with reference to FIG 14 was described. A client device can be, for example but not limited to, a personal computer (PC), laptop, mobile device, smartphone, tablet computer, smart watch, wearable computer, personal digital assistant (PDA) , an MP3 player, a virtual reality headset, a global positioning system (GPS) or GPS device, a video player, video camera, surveillance device or system, vehicle, boat, flying craft, virtual machine, a drone, a robot, a wearable communication device, a clinical device, a gaming device or system, an entertainment system, a vehicle computing system, an embedded system controller, a remote control, an accessory, a consumer electronic device, a workstation, an edge device, and a any combination of these devices described, or any other suitable device.

Die Erfindung kann im allgemeinen Kontext von Computercode oder maschinenlesbaren Anweisungen, einschließlich computerausführbarer Anweisungen wie z. B. Programmmodule beschrieben werden, die von einem Computer oder einer anderen Maschine wie z. B. einem Personal Data Assistant (PDA) oder einem anderen Handheld-Gerät ausgeführt werden. Generell beziehen sich Programmmodule, die Routinen, Programme, Objekte, Komponenten, Strukturen, usw. einschließen, auf einen Code, der bestimmte Aufgaben durchführt oder bestimmte abstrakte Datentypen implementiert. Die Erfindung kann in einer Vielzahl von Systemkonfigurationen einschließlich Handheld-Geräten, Unterhaltungselektronik, Universalcomputern, Spezialcomputern usw. umgesetzt werden. Die Erfindung kann auch in verteilten Rechenumgebungen realisiert werden, in denen Aufgaben durch Fernverarbeitungseinheiten durchgeführt werden, die durch ein Kommunikationsnetzwerk miteinander verbunden sind.The invention may be used in the general context of computer code or machine-readable instructions, including computer-executable instructions such as B. program modules are described, which of a computer or other machine such. B. a Personal Data Assistant (PDA) or other handheld device. Generally, program modules, including routines, programs, objects, components, structures, etc., refer to code that performs specific tasks or implements specific abstract data types. The invention can be implemented in a variety of system configurations including handheld devices, consumer electronics, general purpose computers, special purpose computers, and so forth. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing units that are linked through a communications network.

Wenn hier zwei oder mehr Elemente durch „und/oder“ verbunden sind, ist dies als nur ein Element oder eine Kombination von Elementen aufzufassen. Zum Beispiel kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder die Elemente A, B und C einschließen. Darüber hinaus kann „mindestens eines vom Element A oder vom Element B“ mindestens eines vom Element A, mindestens eines vom Element B oder mindestens eines vom Element A und mindestens eines vom Element B einschließen. Ferner kann „mindestens eines der Elemente A und vom Element B“ mindestens eines vom Element A, mindestens eines vom Element B oder mindestens eines vom Element A und mindestens eines vom Element B einschließen.Here, when two or more elements are connected by "and/or", this is to be construed as only one element or a combination of elements. For example, "Item A, Item B, and/or Item C" can include only Item A, only Item B, only Item C, Item A and Item B, Item A and Item C, Item B and Item C, or Items A, B and C include. Furthermore, "at least one of element A or element B" may include at least one of element A, at least one of element B, or at least one of element A and at least one of element B. Further, "at least one of element A and element B" may include at least one of element A, at least one of element B, or at least one of element A and at least one of element B.

Der Gegenstand der vorliegenden Erfindung wird hier auf spezifische Weise beschrieben, um die gesetzlichen Anforderungen zu erfüllen. Die Beschreibung soll den Umfang dieser Erfindung nicht einschränken. Vielmehr haben die Erfinder in Betracht gezogen, dass der beanspruchte Gegenstand auch auf andere Weise ausgeführt werden kann, um verschiedene Schritte oder Kombinationen von Schritten, die mit denen vergleichbar sind, die hier beschrieben wurden, in Verbindung mit anderen gegenwärtigen oder künftigen Technologien zu umfassen. Auch wenn hier die Begriffe „Schritt“ und/oder „Block“ verwendet wurden können, um verschiedene Elemente der verwendeten Verfahren zu bezeichnen, sind die Begriffe nicht so zu interpretieren, dass sie eine bestimmte Reihenfolge unter oder zwischen verschiedenen hier offenbarten Schritten implizieren, es sei denn, die Reihenfolge von einzelnen Schritten wird explizit beschrieben.The subject matter of the present invention is described herein in a specific manner in order to meet legal requirements. The description is not intended to limit the scope of this invention. Rather, the inventors contemplated that the claimed subject matter could be implemented in other ways to include various steps or combinations of steps comparable to those described herein in conjunction with other present or future technologies. Although the terms "step" and/or "block" may have been used herein to denote various elements of the methods used, the terms should not be construed to imply any particular order among or between various steps disclosed herein, es unless the order of individual steps is explicitly described.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent Literature Cited

  • US 16101232 [0131]US16101232 [0131]

Claims (20)

Verfahren, umfassend: Bestimmen verschobener Posen eines Posenkonfigurationsraums, der Posen einer Maschine in einer Umgebung darstellt, mindestens auf der Basis der Parallelverschiebung einer Menge der Posen, die Trajektorien im Posenkonfigurationsraum entsprechen, entlang mindestens einer Achse, um verschobene Trajektorien zu erzeugen, die die verschobenen Posen enthalten; Bestimmen eines Wegs von einer ersten Pose unter den Posen zu einer zweiten Pose unter den Posen mindestens auf der Basis auf der Bewertung einer Erreichbarkeit der verschobenen Posen von der ersten Pose aus durch Parallelverarbeitung der verschobenen Trajektorien; und Veranlassen einer oder mehrerer Operationen einer Maschine auf der Basis des bestimmten Wegs.Method comprising: determining translated poses of a pose configuration space representing poses of a machine in an environment based at least on the parallel translation of a set of the poses corresponding to trajectories in the pose configuration space along at least one axis to generate translated trajectories containing the translated poses; determining a path from a first pose among the poses to a second pose among the poses based at least on the evaluation of reachability of the shifted poses from the first pose by parallel processing the shifted trajectories; and Causing one or more operations of a machine based on the determined path. Verfahren nach Anspruch 1, wobei die verschobenen Trajektorien entlang der mindestens einen Achse parallel zueinander sind.procedure after claim 1 , wherein the shifted trajectories are parallel to each other along the at least one axis. Verfahren nach Anspruch 1 oder 2, wobei die mindestens eine Achse eine Achse umfasst, die eine Ausrichtung des Objekts in der Umgebung darstellt.procedure after claim 1 or 2 , wherein the at least one axis includes an axis representing an orientation of the object in the environment. Verfahren nach einem der vorherigen Ansprüche, wobei jede Trajektorie unter den Trajektorien eine Wendung umfasst, die über die gesamte Trajektorie hinweg einen festen Wendungsradius hat.A method according to any one of the preceding claims, wherein each trajectory among the trajectories comprises a turn having a fixed radius of turn throughout the trajectory. Verfahren nach einem der vorherigen Ansprüche, wobei die Parallelverarbeitung ein Bewerten einer ersten Teilmenge der verschobenen Posen einer verschobenen Trajektorie unter den verschobenen Trajektorien parallel zu einer zweiten Teilmenge der verschobenen Posen der verschobenen Trajektorie umfasst.A method according to any preceding claim, wherein the parallel processing comprises evaluating a first subset of the shifted poses of a shifted trajectory among the shifted trajectories in parallel with a second subset of the shifted poses of the shifted trajectory. Verfahren nach einem der vorherigen Ansprüche, wobei die Parallelverarbeitung ein Bewerten einer ersten Teilmenge der verschobenen Posen einer ersten verschobenen Trajektorie unter den verschobenen Trajektorien parallel zu einer zweiten Teilmenge der verschobenen Posen einer zweiten verschobenen Trajektorie unter den verschobenen Trajektorien umfasst.A method according to any preceding claim, wherein the parallel processing comprises evaluating a first subset of the shifted poses of a first shifted trajectory among the shifted trajectories in parallel with a second subset of the shifted poses of a second shifted trajectory among the shifted trajectories. Verfahren nach einem der vorherigen Ansprüche, wobei die Erreichbarkeit durch einen Thread eines Prozessors als Bitvektor verarbeitet wird und jedes Bit des Bitvektors einer Pose unter den verschobenen Posen und einer Trajektorie unter den verschobenen Trajektorien entspricht.A method according to any preceding claim, wherein the reachability is processed by a thread of a processor as a bit vector and each bit of the bit vector corresponds to a pose among the shifted poses and a trajectory among the shifted trajectories. Verfahren nach einem der vorherigen Ansprüche, wobei die Parallelverschiebung der Menge der Posen den Zugriff auf den Posenkonfigurationsraum unter Verwendung eines Zugriffsmusters umfasst, das mindestens während der Bewertung der Erreichbarkeit die verschobenen Posen definiert.A method according to any one of the preceding claims, wherein the parallel translation of the set of poses comprises accessing the pose configuration space using an access pattern that defines the translated poses at least during the reachability evaluation. Verfahren nach einem der vorherigen Ansprüche, wobei die Parallelverschiebung der Menge der Posen das Generieren, aus dem Posenkonfigurationsraum, eines transformierten Posenkonfigurationsraums, der die verschobenen Posen der verschobenen Trajektorien im Speicher enthält, und das Bewerten der Erreichbarkeit der verschobenen Posen unter Verwendung des transformierten Posenkonfigurationsraums im Speicher umfasst.Method according to one of the preceding claims, wherein the parallel translation of the set of poses generating, from the pose configuration space, a transformed pose configuration space containing the translated poses of the translated trajectories in memory, and evaluating the reachability of the translated poses using the transformed pose configuration space in memory included. System, umfassend: einen oder mehrere Prozessoren; und ein oder mehrere Speichergeräte, die Anweisungen speichern, die, wenn sie durch einem oder mehreren Prozessoren ausgeführt werden, den oder die Prozessor(en) dazu veranlassen, ein Verfahren auszuführen, umfassend: Parallelverschiebung von Trajektorien einer Maschine in einem Posenkonfigurationsraum zu verschobenen Trajektorien, wobei die verschobenen Trajektorien mindestens Abschnitte der Trajektorien der Maschine umfassen, die parallel zueinander und zu mindestens einer Achse des Posenkonfigurationsraums sind; Parallelverarbeitung mindestens von Abschnitten der entlang der mindestens einen Achse verschobenen Trajektorien, um Erreichbarkeitsindikatoren für die verschobenen Trajektorien zu berechnen; Bestimmen eines Wegs durch den Posenkonfigurationsraum mindestens auf der Basis der Erreichbarkeitsindikatoren; und Ausfiihren, auf der Basis des bestimmten Wegs, einer oder mehrerer Operationen, die einem Verhalten der Maschine entsprechen.System comprising: one or more processors; and one or more memory devices storing instructions that, when executed by one or more processors, cause the processor(s) to perform a method comprising: parallel translation of trajectories of a machine in a pose configuration space to translated trajectories, the translated trajectories comprising at least portions of the trajectories of the machine that are parallel to each other and to at least one axis of the pose configuration space; parallel processing of at least portions of the trajectories shifted along the at least one axis to calculate reachability indicators for the shifted trajectories; determining a path through the pose configuration space based at least on the reachability indicators; and Performing, based on the determined path, one or more operations corresponding to a behavior of the machine. System nach Anspruch 10, wobei der Posenkonfigurationsraum mindestens durch (x, y, θ) parametrisiert wird, wobei (x, y) eine Position des Objekts in einer zweidimensionalen (2D) Ebene darstellt und θ einen Steuerkurswinkel des Objekts an der Position darstellt.system after claim 10 , where the pose configuration space is parameterized at least by (x, y, θ), where (x, y) represents a position of the object in a two-dimensional (2D) plane and θ represents a heading angle of the object at the position. System nach Anspruch 10 oder 11, wobei die Erreichbarkeitsindikatoren Kosten umfassen, die in einem oder mehreren Kostenräumen gespeichert sind, die mindestens durch die Posen des Posenkonfigurationsraums parametrisiert sind, und das Bestimmen des Wegs die Rückverfolgung von einer ersten Pose des Wegs zu einer zweiten Pose des Wegs unter Verwendung des oder der Kostenräume umfasst.system after claim 10 or 11 , wherein the reachability indicators comprise costs stored in one or more cost spaces parameterized at least by the poses of the pose configuration space, and determining the path includes tracing back from a first pose of the path to a second pose of the path using the or the includes cost areas. System nach einem der Ansprüche 10 bis 12, außerdem umfassend: Bestimmen des Freiraums der Posen mindestens auf der Basis einer Kollisionsprüfung eines Körpers des Objekts, das die Posen einnimmt, gegen ein oder mehrere Hindernisse; und Speichern von Indikatoren des Freiraums in einem oder mehreren Belegungsräumen, die mindestens durch die Posen des Posenkonfigurationsraums parametrisiert sind, wobei die Erreichbarkeitsindikatoren mindestens auf der Bewertung der Indikatoren des Freiraums in dem oder den Belegungsräumen gegenüber den verschobenen Trajektorien basieren.system according to one of the Claims 10 until 12 , further comprising: determining the clearance of the poses based at least on a collision check of a body of the object taking the poses against one or more obstacles; and storing indicators of free space in one or more occupancy spaces parameterized at least by the poses of the pose configuration space, the reachability indicators being based at least on the evaluation of the indicators of free space in the or each occupancy space against the shifted trajectories. System nach einem der Ansprüche 10 bis 13, wobei das Bestimmen des Wegs außerdem umfasst: Berechnen eines ersten Satzes von Erreichbarkeitsindikatoren in einer ersten Iteration, die einem ersten Durchlauf der verschobenen Trajektorien entspricht; und Berechnen, aus dem ersten Satz von Erreichbarkeitsindikatoren, eines zweiten Satzes von Erreichbarkeitsindikatoren in einer zweiten Iteration, die einem zweiten Durchlauf der verschobenen Trajektorien entspricht.system according to one of the Claims 10 until 13 wherein determining the path further comprises: calculating a first set of reachability indicators in a first iteration corresponding to a first pass of the shifted trajectories; and calculating, from the first set of reachability indicators, a second set of reachability indicators in a second iteration corresponding to a second run of the shifted trajectories. System nach einem der Ansprüche 10 bis 14, wobei das System in mindestens einem enthalten ist von: einem Steuerungssystem für eine autonome oder halbautonome Maschine; einem Perzeptionssystem für eine autonome oder halbautonome Maschine; einem System zur Durchführung von Simulationsoperationen; einem System zur Durchführung von Deep-Learning-Operationen; einem System, das mit einem Edge-Gerät implementiert ist; einem System, das mit einem Roboter implementiert ist; einem System, das eine oder mehrere virtuelle Maschinen (VMs) integiert; einem System, das mindestens teilweise in einem Datenzentrum implementiert ist; oder einem System, das mindestens teilweise mit Cloud-Computing-Ressourcen implementiert ist.system according to one of the Claims 10 until 14 wherein the system is included in at least one of: a control system for an autonomous or semi-autonomous machine; a perception system for an autonomous or semi-autonomous machine; a system for performing simulation operations; a system for performing deep learning operations; a system implemented with an edge device; a system implemented with a robot; a system that integrates one or more virtual machines (VMs); a system implemented at least in part in a data center; or a system implemented at least in part with cloud computing resources. Prozessor umfassend: eine oder mehrere Schaltungen, um die Erreichbarkeit, durch ein Objekt, verschobener Posen einer verschobenen Trajektorie durch Parallelverarbeitung von Abschnitten der verschobenen Trajektorie mindestens auf der Basis der Parallelverschiebung von Posen eines Posenkonfigurationsraums, die einer Trajektorie entsprechen, entlang mindestens einer Achse zu bewerten, und um mindestens auf der Basis der Erreichbarkeit der verschobenen Posen der Trajektorien einen Weg des Objekts von einer ersten Pose im Posenkonfigurationsraum zu einer zweiten Pose im Posenkonfigurationsraum zu bestimmen.Processor comprising: one or more circuits for evaluating the reachability, by an object, of translated poses of a translated trajectory by parallel processing of sections of the translated trajectory based at least on the parallel translation of poses of a pose configuration space corresponding to a trajectory along at least one axis, and to determine a path of the object from a first pose in the pose configuration space to a second pose in the pose configuration space, at least based on the reachability of the shifted poses of the trajectories. Prozessor nach Anspruch 16, wobei die Parallelverarbeitung der Abschnitte umfasst: Berechnen, für einen ersten Abschnitt unter den Abschnitten, eines Erreichbarkeitsindikators beim Verlassen des ersten Abschnitts, wie er im ersten Abschnitt seinen Ursprung hat; Berechnen eines Erreichbarkeitsindikators beim Eintritt in einen zweiten Abschnitt unter den Abschnitten anhand des Erreichbarkeitsindikators beim Verlassen des ersten Abschnitts; und Berechnen eines Erreichbarkeitsindikators für eine oder mehrere der verschobenen Posen im ersten Abschnitt von der ersten Pose aus anhand des Erreichbarkeitsindikators beim Eintritt in den zweiten Abschnitt.processor after Claim 16 wherein the parallel processing of the sections comprises: calculating, for a first section among the sections, a reachability indicator upon exiting the first section as originating in the first section; calculating an availability indicator when entering a second section among the sections based on the availability indicator when exiting the first section; and calculating a reachability indicator for one or more of the displaced poses in the first section from the first pose based on the reachability indicator upon entering the second section. Prozessor nach Anspruch 16 oder 17, wobei der oder die Erreichbarkeitsindikator(en) für die verschobene(n) Pose(n) ein oder mehrere Kosten umfassen, die mit dem Erreichen der verschobenen Pose(n) durch das Objekt verbunden sind.processor after Claim 16 or 17 , wherein the reachability indicator(s) for the displaced pose(s) comprises one or more costs associated with the object reaching the displaced pose(s). Prozessor nach einem der Ansprüche 16 bis 18, wobei die Erreichbarkeit der verschobenen Posen in Bezug auf die erste Pose bewertet wird.Processor after one of Claims 16 until 18 , where the reachability of the shifted poses is evaluated with respect to the first pose. Prozessor nach einem der Ansprüche 16 bis 19, wobei die Trajektorie einen Kreis auf einer Grundfläche der Umgebung umfasst, der durch eine Wendung gebildet wird, die über die gesamte Trajektorie hinweg einen festen Wendungsradius hat.Processor after one of Claims 16 until 19 , where the trajectory comprises a circle on a base of the environment formed by a turn having a fixed radius of turn throughout the trajectory.
DE102022114521.2A 2021-06-21 2022-06-09 PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING Pending DE102022114521A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/352,777 2021-06-21
US17/352,777 US11860628B2 (en) 2021-06-21 2021-06-21 Parallel processing of vehicle path planning suitable for parking

Publications (1)

Publication Number Publication Date
DE102022114521A1 true DE102022114521A1 (en) 2022-12-22

Family

ID=84283563

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022114521.2A Pending DE102022114521A1 (en) 2021-06-21 2022-06-09 PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING

Country Status (4)

Country Link
US (2) US11860628B2 (en)
JP (1) JP2023001859A (en)
CN (1) CN115576311A (en)
DE (1) DE102022114521A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230169781A1 (en) * 2021-11-30 2023-06-01 Texas Instruments Incorporated Free space detection and park-able free space detection for occupancy grids using sensor measurements

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870303A (en) * 1987-11-20 1999-02-09 Philips Electronics North America Corporation Method and apparatus for controlling maneuvers of a vehicle
FR2995274A3 (en) * 2012-09-11 2014-03-14 Renault Sa Method for assisting automatic parking of vehicle i.e. car, in car park, involves positioning vehicle in free position or exit position, and allowing vehicle to move again from free position or exit position based on optimal trajectory
KR101906952B1 (en) * 2013-11-08 2018-10-11 한화지상방산 주식회사 Method for generating optimized parking path of manless driving vehicle, and manless driving vehicle adopting the method
KR102327345B1 (en) * 2015-07-14 2021-11-17 주식회사 만도모빌리티솔루션즈 Parking controlling system and method thereof
CN105857306B (en) * 2016-04-14 2018-07-10 中国科学院合肥物质科学研究院 A kind of vehicle autonomous parking paths planning method for a variety of scenes of parking
EP3339806B1 (en) * 2016-12-22 2019-05-22 Gestalt Systems GmbH Navigation for vehicle based on parallel processing to determine collision-free paths
US9969386B1 (en) * 2017-01-10 2018-05-15 Mitsubishi Electric Research Laboratories, Inc. Vehicle automated parking system and method
US10369988B2 (en) * 2017-01-13 2019-08-06 Ford Global Technologies, Llc Autonomous parking of vehicles inperpendicular parking spots
JP7002210B2 (en) * 2017-04-07 2022-01-20 フォルシアクラリオン・エレクトロニクス株式会社 Parking support device
KR102001916B1 (en) * 2017-05-30 2019-07-19 엘지전자 주식회사 Parking assistance system
US10836379B2 (en) * 2018-03-23 2020-11-17 Sf Motors, Inc. Multi-network-based path generation for vehicle parking
WO2019204296A1 (en) * 2018-04-16 2019-10-24 Ohio University Obstacle avoidance guidance for ground vehicles
US10885698B2 (en) 2018-08-10 2021-01-05 Nvidia Corporation Method for programmable timeouts of tree traversal mechanisms in hardware
JP7465726B2 (en) * 2020-05-28 2024-04-11 フォルシアクラリオン・エレクトロニクス株式会社 Parking assistance device and method for controlling parking assistance device

Also Published As

Publication number Publication date
CN115576311A (en) 2023-01-06
US11860628B2 (en) 2024-01-02
US20220404829A1 (en) 2022-12-22
JP2023001859A (en) 2023-01-06
US20240053749A1 (en) 2024-02-15

Similar Documents

Publication Publication Date Title
DE112021000135T5 (en) SENSOR FUSION FOR AUTONOMOUS MACHINE APPLICATIONS THROUGH MACHINE LEARNING
DE112020003043T5 (en) DETECTION AND CLASSIFICATION OF CROSSROADS REGIONS FOR AUTONOMOUS MACHINE APPLICATIONS
DE112020006410T5 (en) THREE-DIMENSIONAL INTERSECTION STRUCTURE PREDICTION FOR AUTONOMOUS DRIVING APPLICATIONS
DE112020006404T5 (en) PLANNING AND CONTROL OF LANE CHANGES IN AUTONOMOUS MACHINE APPLICATIONS
DE112020000413T5 (en) DETECTION OF ORIENTATION POINTS USING CURVE FITTING FOR APPLICATIONS FOR AUTONOMOUS DRIVING
DE112020001396T5 (en) FORM FUSION FOR IMAGE ANALYSIS
DE102021123159A1 (en) ADAPTIVE OBJECT TRACKING ALGORITHM FOR AUTONOMOUS MACHINE APPLICATIONS
DE102019113114A1 (en) BEHAVIOR-CONTROLLED ROUTE PLANNING IN AUTONOMOUS MACHINE APPLICATIONS
DE112020001400T5 (en) ITERATIVE GENERATION OF SPATIAL GRAPHS
DE102021126648A1 (en) IMITATION TRAINING USING SYNTHETIC DATA
DE112021001994T5 (en) MODEL-BASED REINFORCEMENT LEARNING FOR BEHAVIOR PREDICTION IN AUTONOMOUS SYSTEMS AND APPLICATIONS
DE102022121121A1 (en) Object tracking using LiDAR data for autonomous machine applications
DE112021000104T5 (en) PROJECTING IMAGES TAKEN WITH FISHEYE LENSES FOR FEATURE RECOGNITION IN AUTONOMOUS MACHINE APPLICATIONS
DE102022104026A1 (en) GENERATION OF GROUND TRUTH DATA FOR PERCEPTION BY DEEP NEURAL NETWORKS IN AUTONOMOUS DRIVING APPLICATIONS
DE102022118649A1 (en) Belief propagation for distance image mapping in autonomous machine applications
DE102022124361A1 (en) VISIBILITY ASSESSMENT USING DEEP LEARNING IN AUTONOMOUS MACHINE APPLICATIONS
DE102022114516A1 (en) MULTI-FREQUENCY VOLTAGE MONITORING FOR AUTONOMOUS MACHINE APPLICATIONS
DE102022119206A1 (en) Behavior planning for autonomous vehicles in priority scenarios
DE102021128559A1 (en) SECURITY DECOMPOSITION FOR PATH DETERMINATION IN AUTONOMOUS SYSTEMS
DE102020130749A1 (en) SYSTEM FOR MACHINE LEARNING FOR EYE DETERMINATION WITH ADAPTIVE WEIGHTING OF INPUTS
DE102022114521A1 (en) PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING
DE112022002829T5 (en) PERCEPTION-BASED SIGN CAPTURE AND INTERPRETATION FOR AUTONOMOUS MACHINE SYSTEMS AND APPLICATIONS
DE102022107848A1 (en) SYSTEM AND PROCEDURE FOR UPDATING HIGH RESOLUTION MAPS
DE112021004919T5 (en) Simulation of viewpoint transformations for sensor-independent scene understanding in autonomous systems
DE112020006730T5 (en) HYBRID SOLUTION FOR STEREO IMAGING

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G05D0001020000

Ipc: G05D0001430000