DE102022114521A1 - PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING - Google Patents
PARALLEL PROCESSING OF A VEHICLE PATH PLANNING SUITABLE FOR PARKING Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 122
- 238000013439 planning Methods 0.000 title description 8
- 239000013598 vector Substances 0.000 claims abstract description 30
- 238000013519 translation Methods 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 78
- 230000015654 memory Effects 0.000 claims description 75
- 238000013135 deep learning Methods 0.000 claims description 12
- 238000011156 evaluation Methods 0.000 claims description 7
- 230000008447 perception Effects 0.000 claims description 7
- 238000004088 simulation Methods 0.000 claims description 5
- 230000006399 behavior Effects 0.000 claims 1
- 230000009467 reduction Effects 0.000 abstract description 13
- 230000006870 function Effects 0.000 description 62
- 238000013528 artificial neural network Methods 0.000 description 42
- 238000013459 approach Methods 0.000 description 33
- 230000008569 process Effects 0.000 description 27
- 238000004891 communication Methods 0.000 description 26
- 238000001514 detection method Methods 0.000 description 25
- 238000003860 storage Methods 0.000 description 22
- 238000013527 convolutional neural network Methods 0.000 description 21
- 238000012544 monitoring process Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 14
- 238000010801 machine learning Methods 0.000 description 14
- 230000001133 acceleration Effects 0.000 description 13
- 238000007726 management method Methods 0.000 description 13
- 238000012549 training Methods 0.000 description 13
- 230000002441 reversible effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000009466 transformation Effects 0.000 description 10
- 230000007704 transition Effects 0.000 description 10
- 125000004122 cyclic group Chemical group 0.000 description 8
- 230000009471 action Effects 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 241000269400 Sirenidae Species 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 125000000914 phenoxymethylpenicillanyl group Chemical group CC1(S[C@H]2N([C@H]1C(=O)*)C([C@H]2NC(COC2=CC=CC=C2)=O)=O)C 0.000 description 3
- 229920002451 polyvinyl alcohol Polymers 0.000 description 3
- 235000019422 polyvinyl alcohol Nutrition 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000001815 facial effect Effects 0.000 description 2
- 239000000446 fuel Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000004043 responsiveness Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 241000083700 Ambystoma tigrinum virus Species 0.000 description 1
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 241001530812 Goupia glabra Species 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000004397 blinking Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007621 cluster analysis Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000010008 shearing Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0234—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using optical markers or beacons
- G05D1/0236—Control 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/0088—Control 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT 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/00—Purposes 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/18—Propelling the vehicle
- B60W30/18009—Propelling the vehicle related to particular drive situations
- B60W30/18145—Cornering
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT 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/00—Details 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/06—Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT 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/00—Drive control systems specially adapted for autonomous road vehicles
- B60W60/001—Planning or execution of driving tasks
- B60W60/0011—Planning or execution of driving tasks involving control alternatives for a single driving scenario, e.g. planning several paths to avoid obstacles
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT 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/00—Drive control systems specially adapted for autonomous road vehicles
- B60W60/001—Planning or execution of driving tasks
- B60W60/0015—Planning or execution of driving tasks specially adapted for safety
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
- G05D1/0214—Control 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
- G05D1/0221—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory involving a learning process
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0212—Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
- G05D1/0223—Control 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0238—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
- G05D1/024—Control 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0242—Control 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
- G05D1/0246—Control 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/0251—Control 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
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0255—Control of position or course in two dimensions specially adapted to land vehicles using acoustic signals, e.g. ultra-sonic singals
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0259—Control of position or course in two dimensions specially adapted to land vehicles using magnetic or electromagnetic means
- G05D1/0263—Control of position or course in two dimensions specially adapted to land vehicles using magnetic or electromagnetic means using magnetic strips
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D1/00—Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
- G05D1/02—Control of position or course in two dimensions
- G05D1/021—Control of position or course in two dimensions specially adapted to land vehicles
- G05D1/0276—Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
- G05D1/0278—Control 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/58—Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
- G06V20/58—Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
- G06V20/586—Recognition 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT 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/00—Purposes 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/06—Automatic manoeuvring for parking
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT 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/00—Purposes 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/08—Active safety systems predicting or avoiding probable or impending collision or attempting to minimise its consequences
- B60W30/09—Taking automatic action to avoid collision, e.g. braking and steering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30241—Trajectory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30248—Vehicle exterior or interior
- G06T2207/30252—Vehicle exterior; Vicinity of vehicle
- G06T2207/30261—Obstacle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, 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 von1A 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 von6A 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 von6B 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 einVerfahren 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 einVerfahren 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 von13A gemäß Ausführungsformen der vorliegenden Erfindung ist; -
13C ein Blockdiagramm einer beispielhaften Systemarchitektur für das beispielhafte autonome Fahrzeug von13A gemäß Ausführungsformen der vorliegenden Erfindung ist; -
13D ein Systemdiagramm für die Kommunikation zwischen Cloud-basierten Servern und dem beispielhaften autonomen Fahrzeug von13A 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.
-
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 FIG1A 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 from6A 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 FIG6B 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 amethod 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 amethod 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 FIG13A 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 FIG13A according to embodiments of the present invention; -
13D a system diagram for communication between cloud-based servers and the exemplary autonomous vehicle of FIG13A 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
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
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
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
Nun auf
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
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
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
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
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
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
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
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
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
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
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
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).
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:
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
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
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
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.
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
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:
Die transformierte Version der Wendungstrajektorien eines Wendungstyps kann durch Gleichung (4) definiert werden:
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:
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:
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:
Die bijektive Schertransformation kann dann durch Gleichung (8) definiert werden:
Nach dieser Transformation können die Trajektorien die Form von Gleichung (9) annehmen:
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:
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
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
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
Nun auf
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
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
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
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
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
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
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
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
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
Nun auf
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
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
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: 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: 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: 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:
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: 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:
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
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
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
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
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
Nun auf
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
Nun auf
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
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
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
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
BEISPIELHAFTES AUTONOMES FAHRZEUGEXEMPLARY AUTONOMOUS VEHICLE
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
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
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
Controller 1336, die, ohne darauf beschränkt zu sein, ein oder mehrere Ein-Chip-Systeme (SoCs) 1304 (
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.
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
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
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
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
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
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
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
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.
Alle Komponenten, Merkmale und Systeme des Fahrzeugs 1300 in
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
Das Fahrzeug 1300 kann einen oder mehrere Controller 1336 wie jene umfassen, die hier Bezug nehmend auf
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
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
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,
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
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
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
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
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).
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).
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.
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.
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.
Prozessoren 1310 können außerdem eine Echtzeit-Kamera-Engine umfassen, die ein spezielles Prozessor-Subsystem für das Echtzeit-Kamera-Management umfassen kann.
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.
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.
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
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
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
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
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
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
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.
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
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.
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
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
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
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
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
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).
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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,
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
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,
BEISPIELHAFTE RECHENEINHEITEXEMPLARY UNIT OF COMPUTER
Obwohl die verschiedenen Blöcke in
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.
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.
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,
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
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
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
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.
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/
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
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
Wie in
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
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
In mindestens einer Ausführungsform, wie in
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
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
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,
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
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
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
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
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)
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)
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)
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 |
-
2021
- 2021-06-21 US US17/352,777 patent/US11860628B2/en active Active
-
2022
- 2022-03-03 JP JP2022032253A patent/JP2023001859A/en active Pending
- 2022-05-23 CN CN202210564756.3A patent/CN115576311A/en active Pending
- 2022-06-09 DE DE102022114521.2A patent/DE102022114521A1/en active Pending
-
2023
- 2023-10-25 US US18/494,374 patent/US20240053749A1/en active Pending
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 |