CN116795091A - 自主系统和应用程序的环境重建和路径规划 - Google Patents
自主系统和应用程序的环境重建和路径规划 Download PDFInfo
- Publication number
- CN116795091A CN116795091A CN202210934243.7A CN202210934243A CN116795091A CN 116795091 A CN116795091 A CN 116795091A CN 202210934243 A CN202210934243 A CN 202210934243A CN 116795091 A CN116795091 A CN 116795091A
- Authority
- CN
- China
- Prior art keywords
- map
- data
- vehicle
- machine
- elements
- 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
- 238000013439 planning Methods 0.000 title claims abstract description 47
- 230000006870 function Effects 0.000 claims abstract description 170
- 238000000034 method Methods 0.000 claims abstract description 92
- 238000012800 visualization Methods 0.000 claims abstract description 35
- 238000012545 processing Methods 0.000 claims description 87
- 238000010801 machine learning Methods 0.000 claims description 17
- 238000013135 deep learning Methods 0.000 claims description 14
- 238000004088 simulation Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000001902 propagating effect Effects 0.000 claims description 5
- 239000002131 composite material Substances 0.000 claims description 3
- 230000003287 optical effect Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 abstract description 79
- 230000010354 integration Effects 0.000 description 47
- 238000013528 artificial neural network Methods 0.000 description 42
- 230000008569 process Effects 0.000 description 41
- 238000004891 communication Methods 0.000 description 27
- 238000001514 detection method Methods 0.000 description 25
- 238000013527 convolutional neural network Methods 0.000 description 21
- 238000004422 calculation algorithm Methods 0.000 description 20
- 238000003860 storage Methods 0.000 description 19
- 238000007726 management method Methods 0.000 description 15
- 230000000007 visual effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000012549 training Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000004044 response Effects 0.000 description 11
- 230000000670 limiting effect Effects 0.000 description 10
- 239000003550 marker Substances 0.000 description 10
- 230000003044 adaptive effect Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 8
- 238000005259 measurement Methods 0.000 description 8
- 230000008447 perception Effects 0.000 description 8
- 230000009467 reduction Effects 0.000 description 7
- 230000008093 supporting effect Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 6
- 230000007613 environmental effect Effects 0.000 description 6
- 238000009877 rendering Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 5
- 235000019800 disodium phosphate Nutrition 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 230000004807 localization Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 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 2
- 229920002451 polyvinyl alcohol Polymers 0.000 description 2
- 235000019422 polyvinyl alcohol Nutrition 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 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
- 206010034960 Photophobia Diseases 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- -1 cans Substances 0.000 description 1
- 230000001413 cellular effect Effects 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
- 230000000295 complement effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 208000013469 light sensitivity Diseases 0.000 description 1
- 238000011551 log transformation method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 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
- 238000002620 method output Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920003023 plastic Polymers 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010926 purge Methods 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
- 230000001953 sensory effect Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000010396 two-hybrid screening Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- 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
-
- 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
-
- 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
-
- 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/20—Control system inputs
- G05D1/24—Arrangements for determining position or orientation
- G05D1/242—Means based on the reflection of waves generated by 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/20—Control system inputs
- G05D1/24—Arrangements for determining position or orientation
- G05D1/246—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
- G05D1/2464—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM] using an occupancy grid
-
- 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/20—Control system inputs
- G05D1/24—Arrangements for determining position or orientation
- G05D1/246—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
- G05D1/2465—Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM] using a 3D model of the environment
-
- 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/60—Intended control result
- G05D1/617—Safety or protection, e.g. defining protection zones around obstacles or avoiding hazards
- G05D1/622—Obstacle avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- 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
-
- 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
- B60W2420/00—Indexing codes relating to the type of sensors based on the principle of their operation
- B60W2420/40—Photo, light or radio wave sensitive means, e.g. infrared sensors
- B60W2420/403—Image sensing, e.g. optical camera
-
- 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
- B60W2420/00—Indexing codes relating to the type of sensors based on the principle of their operation
- B60W2420/40—Photo, light or radio wave sensitive means, e.g. infrared sensors
- B60W2420/408—Radar; Laser, e.g. lidar
-
- 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
- B60W2552/00—Input parameters relating to infrastructure
- B60W2552/05—Type of road, e.g. motorways, local streets, paved or unpaved roads
-
- 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
- B60W2554/00—Input parameters relating to objects
- B60W2554/20—Static objects
-
- 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
- B60W2556/00—Input parameters relating to data
- B60W2556/40—High definition maps
-
- 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/0231—Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
-
- 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/10—Simultaneous control of position or course in three dimensions
- G05D1/101—Simultaneous control of position or course in three dimensions specially adapted for aircraft
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05D—SYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
- G05D2111/00—Details of signals used for control of position, course, altitude or attitude of land, water, air or space vehicles
- G05D2111/10—Optical signals
- G05D2111/17—Coherent light, e.g. laser signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/08—Indexing scheme for image data processing or generation, in general involving all processing steps from image acquisition to 3D model generation
-
- 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/10—Image acquisition modality
- G06T2207/10024—Color image
-
- 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/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- 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/30244—Camera pose
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/12—Shadow map, environment map
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Automation & Control Theory (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Geometry (AREA)
- Mechanical Engineering (AREA)
- Transportation (AREA)
- Radar, Positioning & Navigation (AREA)
- Aviation & Aerospace Engineering (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Image Processing (AREA)
Abstract
本发明公开了自主系统和应用程序的环境重建和路径规划。描述了用于自主机器系统和应用程序的环境重建和路径规划的方法。用于自我机器的迭代体积映射功能可以计算距离场,并且从距离场导出表示自我机器周围物理环境的体积重建的成本图。成本图可用于避免碰撞和路径规划。迭代体积映射功能还可以可选地从距离场计算颜色集成图和可视化网格,其可用于可视化自我机器周围的物理环境的可视化。成本图可以计算为欧几里得有符号距离场(ESDF),并且计算成本图的距离场可以包括截断有符号距离场(TSDF)。距离场、成本图、颜色集成图和可视化网格可以各自作为多个地图层的图存储在存储器中。
Description
背景技术
自主或半自主操作的机器预期通过绕过障碍物或在到达障碍物之前停止来检测和避开障碍物。因此,安全识别和规划路径以绕过障碍物的能力是任何自主或半自主驾驶自我机器的相关任务。例如,充分的基于感知的路径规划系统预计对检测不同类型的障碍物具有鲁棒性,并包括以足够的准确度和速度检测障碍物位置的能力,从而使机器有足够的时间避免碰撞。
为了在复杂、频繁变化的环境中提供移动性和灵活性,已经开发了基于传感器的技术以与自主或半自主操作的机器一起使用,这些机器创建自我机器周围环境的表示,以便潜在的导航规划可以测试潜在的碰撞。2DLiDAR技术通常与物流自主移动机器人(AMR)一起使用,AMR可能是指一种能够理解并自主在其环境中移动的机器人。目前,AMR的自主性受到限制,大多数仅限于遵循由磁条标记的预定路线,并使用LiDAR传感器处理来执行安全停车。3D LiDAR比2D LiDAR更准确地测量场景几何,并且可以通过观察更远距离的对象来发挥作用。这使得3D LiDAR成为自主操作和/或导航的首选传感器,其中准确感知远距离障碍物的能力对系统的安全性有重大影响。然而,LiDAR传感器,尤其是3D LiDAR传感器,目前的组件成本非常昂贵,以至于为大型自主和半自主机器(例如AMR)配备3D LiDAR技术的成本高得令人望而却步。
相机通常比LiDAR传感器便宜得多,并且虽然它们通常提供的几何信息不如3DLiDAR精确,但相机提供了大量的语义相关数据,可用于进一步改进导航(例如,动态障碍物分类和跟踪)。然而,使用相机捕获的图像进行基于视觉的感知提出了一项重大挑战,部分原因是所涉及算法的复杂性,部分原因是运行它们所需的计算。例如,使用RGB-D传感器的现有解决方案-一种还捕获RGB(红色、绿色和蓝色)图像帧的深度感应设备-可以大致分为两类解决方案:(1)用于仅表面重建的那些,以及(2)在强大的基于中央处理单元(CPU)的系统上运行的那些。第一类解决方案可以使用在图形处理单元(GPU)上执行的过程从深度相机数据中生成高度准确的表面重建。然而,虽然它们产生了视觉上吸引人的重建(那些表示表面的重建),但其并非是已经观察到没有障碍物的空间体积区域。因为为机器人自我机器创建地图的一个重要目的可能是捕捉自我机器可以移动的自由空间,所以表面重建可能在路径规划的有用性方面受到限制。第二类解决方案可以构建适合自我机器路径规划的体积重建,但计算成本高,这会限制对动态或安全关键环境的响应。此外,这类解决方案使用在强大(因此也很昂贵)CPU上运行的算法,这些算法对于大量自我机器来说可能过于昂贵而无法大规模实施。
发明内容
本公开的实施例涉及用于自主系统和应用的环境重建和路径规划。公开了可用于辅助自主或半自主机器(例如,在本公开的一个或更多个实施例中实现的“自我机器”)检测障碍物以便规划其行进路径的系统和方法。
与现有的环境重建技术相比,本公开中提出的系统和方法可以使用由线程执行的并行计算(例如在图形处理单元(GPU)和/或一个或更多个并行处理单元(PPU)上)计算适合自我机器路径规划的成本图。在一些实施例中,迭代体积映射功能可以计算距离场,并且从距离场导出表示自我机器周围物理环境的体积重建的成本图。成本图可用于避免碰撞和路径规划。在一些实施例中,迭代体积映射功能还可以可选地从距离场计算颜色集成图和可视化网格,其可用于自我机器周围的物理环境的可视化。在一些实施例中,成本图被计算为欧几里得有符号距离场(ESDF),并且计算成本图的距离场包括截断有符号距离场(TSDF)。距离场、成本图、颜色集成图和可视化网格都可以分别作为多个地图层中的一个或更多个层的集合或子集存储在存储器中。除了在距离场和成本图中捕获的环境特征外,地图层还可用于存储以3D网格形式在空间上变化的其他感兴趣的数量。
用于计算距离场的输入数据可以包括深度图像、姿势数据和基于光栅的图像的流,例如由一个或更多个图像捕捉传感器捕捉,例如但不限于RGB-D传感器。姿势数据可以从各种来源生成,例如但不限于来自视觉同时定位和映射(VSLAM)处理的立体图像对的数据,和/或来自在自我机器之外处理的外部传感器数据。
在一些实施例中,迭代体积映射功能识别对包括距离场的第一地图的更新以确定如何更新包括成本图的第二地图。根据第一地图的3D元素如何从一个处理迭代变化到下一个处理迭代,可以清除或更新第二个地图的3D元素,而无需重建整个地图,从而保持处理能力。在一些实施例中,迭代体积映射功能使用波前过程来迭代地传播属于3D元素块的体素的清除或更新,这些3D元素块是更新块的相邻块,直到没有剩余块具有要清除或更新的3D元素。
附图说明
下面参照附图详细描述本发明的用于自主系统和应用程序的环境重建和路径规划的系统和方法,其中:
图1是根据本公开的一些实施例的自我机器的环境映射系统的示例流程图的图示;
图2是说明根据本公开的一些实施例的用于自我机器的示例迭代体积映射功能的框图;
图3是根据本公开的一些实施例的如由自我机器的迭代体积映射功能执行的用于计算成本图的示例流程图的图示;
图4是根据本公开的一些实施例的体素的投影距离和欧几里得距离的特性的图示;
图5A是示出根据本公开的一些实施例的示例可视化网格的图示;
图5B是示出根据本公开的一些实施例的示例成本图的图示;
图6是根据本公开的一些实施例的用于基于更新的距离场来构建对成本图的更新的示例的图示;
图7是示出根据本公开的一些实施例的用于自我机器的体积映射的方法的流程图;
图8A是根据本公开的一些实施例的示例自主车辆的图示;
图8B是根据本公开的一些实施例的图8A的示例自主车辆的相机位置和视场的示例;
图8C是根据本公开的一些实施例的图8A的示例自主车辆的示例系统架构的框图;
图8D是根据本公开的一些实施例的用于在基于云的服务器与图8A的示例自主车辆之间通信的系统图;
图9是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
图10是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
公开了与自主系统和应用程序的环境重建和路径规划有关的系统和方法。尽管本公开可以针对示例自主车辆800(在本文中也称为“车辆800”或“自我车辆800”,其示例针对图8A-8D进行描述)进行描述,但是这并非旨在限制。例如,本文描述的系统和方法可以由但不限于非自主车辆、半自主车辆(例如,在一个或更多个高级驾驶员辅助系统(ADAS)中)、驾驶和非驾驶机器人或机器人使用平台、仓库车辆、越野车辆、耦合到一个或更多个拖车的车辆、飞行器、船、穿梭车、应急响应车辆、摩托车、电动或机动自行车、飞机、工程车辆、水下航行器、无人机和/或其他车辆类型。此外,虽然本公开可针对自我机器路径规划进行描述,但这并非旨在限制,并且本文描述的系统和方法可用于增强现实、虚拟现实、混合现实、机器人、合成数据生成、内容创建、模拟、安全和监视、自主或半自主机器应用程序,和/或可以使用自我机器路径规划的任何其他技术空间。
本公开涉及用于路径规划和可视化的自我机器周围空间的体积映射。本公开中呈现的系统和方法可以帮助自我机器创建其环境的体积重建。体积映射功能可用于生成成本图,路径规划器可使用该成本图导航自我机器通过其环境,同时避免与障碍物碰撞。自我机器有望通过绕过障碍物或在到达障碍物之前停止来检测和避开障碍物。因此,安全识别和规划绕过障碍物的路径的能力是任何自主或半自主导航自我机器的相关任务。例如,一个充分的基于感知的路径规划系统预计对检测不同类型的障碍物具有鲁棒性,并包括以足够的准确度和速度检测障碍物位置的能力,从而使自我车辆有足够的时间避免碰撞并计划替代路径,以避免或尽量减少由于路径障碍物导致的不当延误。
本公开中呈现的系统和方法可以使用由图形处理单元(GPU)和/或一个或更多个并行处理单元(PPU)或加速器上的线程执行的并行化计算来计算适用于自我机器路径规划的基于欧几里得有符号距离场(ESDF)的成本图。例如,公开了一种迭代体积映射功能,其中多个内核可以接收由一个或更多个传感器生成的输入数据。迭代体积映射功能可以计算表示自我机器周围物理环境的体积重建的距离功能(或成本图)。成本图可用于避免碰撞和路径规划。在一些实施例中,迭代体积映射功能还可以可选地计算可视化网格,该可视化网格可用于自我机器周围的物理环境的可视化。
输入数据可以包括深度图像、姿势数据和基于光栅的图像的流,例如,由诸如但不限于RGB-D传感器的一个或更多个图像捕获传感器捕获。在一些实施例中,其他输入数据源可以包括来自立体相机、LiDAR传感器、RADAR传感器、超声波或其他SONAR传感器、红外相机、单目相机、环绕相机、广角相机、鱼眼相机,远程相机或中程相机的数据。基于光栅的图像数据可以包括图像流,该图像流包括颜色和/或亮度(灰度)图像信息。姿势数据可以从各种来源生成,例如但不限于来自同时定位和映射(SLAM)处理的板载传感器数据的数据,和/或来自在自我机器之外处理的外部传感器数据的数据。
成本图可以由一个或更多个下游导航组件使用,该组件用于路径规划、对象回避、定位和/或用于在自我机器行进通过环境时控制自我机器的其他操作。可视化网格可用于自我机器周围物理环境的可视化和/或对象检测和/或分类。虽然对于路径规划并不重要,但可渲染的表面表示对于可视化自我机器感知的世界很有用,例如,可以让远程操作员更好地了解自我机器的环境。在一些实施例中,可视化网格可以由操作员或其他系统通过无线网络接口远程访问。
在一些实施例中,使用在GPU和/或一个或更多个其他并行处理单元(PPU)上执行的多个线程以并行化方式执行迭代体积映射功能。从输入数据产生的地图中的3D元素(例如体素和/或其他3D元素)被组织成块,并且这些块由线程并行处理以进行更新。在一些实施例中,当检测到体素状态更新时,增量地处理图的子部分,从而不重新计算未变化子部分中的体素。
迭代体积映射功能可以生成截断有符号距离场(TSDF)或其他形式的地图表示,其将输入深度图像融合为表示为3D元素网格上的样本的3DTSDF(距离场)。从TSDF,迭代体积映射功能生成欧几里德有符号距离场(ESDF)作为路径规划功能可以使用的成本图(或其他形式的成本图)。
投影距离场图表示(例如,TSDF)中给定3D元素(例如,体素)的距离测量可以包括沿着从传感器中心通过3D元素(例如,传感器和对象之间)延伸的射线到物理对象的表面的距离。但是,TSDF可能会被截断为仅具有表面附近的体素的值(例如,在2到4个体素内或在另一个阈值距离内)。相比之下,成本图(例如ESDF成本图)的欧几里得距离场图表示中给定3D元素的距离测量可能对应于到物理对象最近表面的欧几里德距离(即,到被认为在对象表面上的最近体素的欧几里得距离)。
在一些实施例中,迭代体积映射功能包括生成第一地图的TSDF集成,该第一地图包括表示为3D体素网格上的第一多个样本的TSDF。可以至少部分地基于输入数据来计算TSDF,包括深度图像(或更一般地深度和图像数据)和姿势数据。TSDF可以作为地图存储在GPU存储器的TSDF层中。迭代体积映射功能还可以包括ESDF集成,其生成表示为3D体素网格上的第二多个样本的ESDF。ESDF可以至少部分地基于对第一地图的一个或更多个体素块的更新来计算,并且作为ESDF层中的地图存储到GPU存储器。在一些实施例中,GPU的存储器可以被构造成多个地图层,其中一个或更多个TSDF层和一个或更多个ESDF层是该结构的层。由多个地图层中的一个或更多个在地图中表示的体素可以存储为块,其中每个块可以由索引独立地引用。
在一些实施例中,迭代体积映射功能还可以包括颜色集成,其生成颜色集成图,该颜色集成图包括至少部分地基于姿势数据以及至少基于来自输入数据的光栅图像数据的颜色集成而对TSD至合成深度图像的重新投影。迭代体积映射功能还可以进一步包括生成可视化图的网格集成,该可视化图包括TSDF的多边形网格表示。在一些实施例中,可视化图至少部分地使用颜色集成图生成。在一些实施例中,颜色集成图可以存储为GPU存储器的颜色层中的图,以及GPU存储器的网状层中的可视化图。
在一些实施例中,迭代体积映射功能执行可称为“标记位点”内核的内核,该内核接收来自TSDF集成的更新块的列表作为输入,指示TSDF的块已被更新。标记位点内核根据TSDF层中所示的体素状态和ESDF层中所示的体素状态评估体素的当前状态。当标记站点内核找到具有至少一个先前与对象表面相关联的体素(称为“站点”体素)但现在已与对象表面无关联的块时,标记站点内核将它们指派给第一组更新的块(称为“要清除的块”)。
在一个或更多个实施例中,可以将该第一组的块应用于升高波前过程以清除存储在ESDF层中的地图中的一个或更多个体素,其对应于要清除的块中的那些。升高波前过程还可以迭代地传播属于作为第一组更新块的相邻块的ESDF块的体素的清除,直到没有具有要清除的体素的ESDF的剩余块。
相反,当标记位点内核找到具有至少一个体素的块时,该体素以前不与对象的表面相关联,但现在已与对象的表面相关联,标记位点内核可以指派它们到第二组更新的块(称为“带站点的块”)。第二组的块可以应用于较低的波前过程,以更新存储在对应于具有站点的那些块的ESDF层中地图中的一个或更多个体素。降低波前过程还可以迭代地传播属于作为第二组更新块的相邻块的ESDF块的体素的更新,直到没有具有要更新的体素的ESDF的剩余块。在一些实施例中,迭代体积映射功能可以在继续应用降低波前过程之前完成升高波前过程。
除了在TSDF层、颜色层、网状层(mesh layer)和ESDF层中捕获的环境特征之外,可能存在几个额外的感兴趣的量,这些量在空间上是变化的并且希望在GPU的存储器中表示(例如,以3D网格的形式)。例如,自我机器可以包括清洁机器人,用于将碎屑远离地板,并且附加量可以对应于地板上碎屑的类型。在各种实施例中,当人在场时,自我机器具体辨别可能很重要。因此,迭代体积映射功能还可以将由线程在3D网格上生成的其他各种数据类型存储为地图层。这样,地图层可以包括附加层的堆叠,其中每一层的网格被并置和/或相关。在一些实施例中,可以使用GPU库来实现地图层,该库包括用于将GPU内核生成的数据存储到地图层中以便快速访问的算法和功能,以及提供用于与地图层的各个层进行交互的工具(例如但不限于保存和检索数据)。
自我机器行进的路径不限于任何一种类型的路径或表面,并且可以包括路径诸如但不限于地面空间、环境的划定部分、门厅、走廊、铺砌的道路、未铺砌的道路、高速公路、车道、停车场的一部分、小径、轨道、步行路径、飞行路径、跑道或其他空闲空间。
迭代体积映射功能生成的输出可以包括成本图和可视化网格,用于规划自我机器的路径和/或向自我机器的操作员或观察者显示障碍物的位置,或以其他方式由自我机器的一个或更多个下游组件使用。在一些实施例中,迭代体积映射功能和自我机器的这种下游组件之间的通信是通过应用程序接口(API)实现的。
迭代体积映射功能和相应的方法可以至少部分地在至少一个图形处理单元上执行,该图形处理单元可以与耦合到存储器的中央处理单元上执行的软件结合操作。图形处理单元可被编程以执行内核以实现迭代体积映射功能的一个或更多个特征和功能,以计算成本图、可视化网格、截断有符号距离场、欧几里德有符号距离场、颜色集成图和本文描述的其他功能。虽然在一些实施例中,所有处理都在自我机器上执行,但在其他实施例中,迭代体积映射功能的一些特征和功能可以由板载处理器和云计算资源的组合来分发和执行,从板载处理器获得的传感器数据增加了从数据中心或其他服务器或传感器获得的补充数据。在这样的实施方式中,自我机器还包括至少一个无线通信接口,用于将迭代体积映射功能耦合到无线通信网络。
尽管针对本文所呈现的一些实施例讨论了图形处理单元(GPU)的使用,但在其他实施例中,迭代体积映射功能和相应的方法可以至少部分地作为线程在一个或更多个硬件加速器(包括但不限于数据处理单元(DPU)、矢量处理单元或视觉处理单元(VPU)、张量核心或张量处理单元(TPU)、深度学习加速器(DLA)或可编程视觉加速器(PVA)或其他并行处理单元(PPU)等)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)上来执行。也就是说,不排除以不使用并行处理的迭代方法执行迭代体积映射功能和相应的方法,因此对于本文讨论的任何实施例,迭代体积映射功能可以由非并行处理单元执行。
在3D计算机图形学领域中,术语“体素”可以指表示在3D空间中网格上的值的一种类型的3D元素。应当理解,在本公开中使用术语“体素”是为了说明性目的而不是为了限制的目的,并且可以用其他形式的3D元素来代替本文讨论的实施例中的体素。类似地,本文提出的截断有符号距离场和欧几里德有符号距离场用作产生距离的地图表示的示例场,而不是排除其他场的使用。
本文所述的系统和方法可以由但不限于非自主驾驶车辆、半自主驾驶车辆(例如,在一个或更多个自适应驾驶员辅助系统(ADAS)中)、有人驾驶和无人驾驶机器人或机器人使用平台、仓库车辆、越野车辆、耦合到一个或更多个拖车的车辆、飞行器、船、穿梭车、应急响应车辆、摩托车、电动或机动自行车、飞机、工程车辆、水下航行器、无人机和/或其他车辆类型使用。此外,本文描述的系统和方法可用于多种目的,例如但不限于,用于机器控制、机器运动、机器驾驶、合成数据生成、模型训练、感知、增强现实、虚拟现实、混合现实、机器人技术、安全和监控、自主或半自主机器应用、深度学习、环境模拟、数据中心处理、对话式人工智能、光传输模拟(例如,光线追踪、路径追踪等)、协作内容创建用于3D资产、云计算和/或任何其他合适的应用程序。
公开的实施例可以包括在各种不同的系统中,例如汽车系统(例如,用于自主或半自主机器的控制系统、用于自主或半自主机器的感知系统)、使用机器人实现的系统、航空系统、医疗系统、划船系统、智能区域监控系统、用于执行深度学习操作的系统、用于执行模拟操作的系统、使用边缘设备实现的系统、包含一个或更多个虚拟机(VM)的系统、用于执行的系统合成数据生成操作的系统、至少部分在数据中心实现的系统、用于执行会话AI操作的系统、用于执行光传输模拟的系统、用于为3D资产执行协作内容创建的系统、至少部分使用云计算资源实现的系统,以及/或其他类型的系统。
参考图1,图1是示例性数据流程图,其在100处示出了根据本公开的一些实施例的用于自我机器(例如下文关于图8A讨论的自主机器800)的环境映射系统的组件互连和信息或数据流。应当理解,本文描述的这种和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元素(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元素。此外,本文描述的许多元素是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,本文描述的系统、方法和过程可以使用与图8A-8D的示例性自主机器800、图9的示例计算设备900和/或图10的示例数据中心1000的组件、特征和/或功能类似的组件、特征和/或功能来执行。
如图1所示,执行过程100的环境映射系统包括迭代体积映射功能102,其接收输入数据112并计算表示自我机器周围的物理环境的距离函数(其可以是成本图的形式)104。成本图104可以从迭代体积映射函数102输出并且用于避免碰撞和路径规划。在一些实施例中,迭代体积映射函数102还可以可选地计算可视化网格106,其可以用于自我机器周围的物理环境的可视化。
在至少一个实施例中,输入数据112可以包括图像数据和/或传感器数据。例如,在输入数据112包括图像数据的情况下,图像数据可以表示一个或更多个图像,一个或更多个图像描绘了自我机器行进通过的环境中的对象的一个或更多个部分。如图所示,输入数据112可以包括深度图像和姿势数据流以及基于光栅的图像,迭代体积映射功能102从这些图像生成场景重建、碰撞场和网格,如下所述。
在至少一个实施例中,输入数据112可以包括使用自我机器的一个或更多个传感器110(例如一个或更多个车载相机)和/或自我机器外部的传感器110(例如机器人的一个或更多个相机和/或另一移动或一个或更多个固定机器或一个或更多个设备)生成的图像数据。例如,迭代体积映射功能102可以耦合到无线网络接口118,通过无线网络接口118它可以接收由设备外传感器捕获的附加输入数据。输入数据112可以包括表示一个或更多个相机的视场的图像的数据,例如一个或更多个立体相机、一个或更多个广角相机(例如鱼眼相机)、一个或更多个红外相机、一个或更多个环绕相机机(例如,360度相机机)、一个或更多个远程和/或中程相机和/或其他相机类型。在一些实施例中,输入数据112可以附加地或替代地包括其他类型的传感器数据,例如来自一个或更多个LIDAR传感器的LIDAR数据、来自一个或更多个RADAR传感器的RADAR数据等。
图像数据可以表示包括颜色和/或亮度(灰度)图像信息的基于光栅的图像流(例如,像素)。在一些实施例中,图像数据还可以表示与图像的像素对应的深度信息。作为示例而非限制,可以使用一个或更多个RGB-D图像来捕获深度和光栅图像。在各种示例中,深度信息可以与光栅图像分开提供。例如,传感器110可以包括RGB-D相机(其包括至少两个红外(IR)传感器,从该传感器计算一个或更多个像素的深度)和RGB相机,以产生包括深度和彩色图像流的输入数据112。作为进一步的示例,传感器110可以包括一对RGB相机,它们被布置和同步以作为立体对操作。在那种情况下,可以使用立体匹配算法从立体对的输出计算深度图像,并且可以将RGB图像用作光栅图像。
在一些示例中,可以以一种格式(例如,RCCB、RCCC、RBGC等)捕获图像数据,然后将其转换为另一种格式(例如,通过图像处理器)。在示例中,可以将图像数据作为输入提供给图像数据预处理器以生成预处理的图像数据。可以使用多种类型的图像或格式;例如,联合图像专家组(JPEG)、红绿蓝(RGB)或亮度/色度(YUV)格式的压缩图像,压缩图像作为源自压缩视频格式(H.264/高级视频编码(AVC)、H.265/高效视频编码(HEVC)、VP8、VP9、开放媒体视频联盟1(AV1)、多功能视频编码(VVC)或任何其他视频压缩标准)的帧、原始图像(例如如源自红色透明蓝色(RCCB)、红色透明(RCCC)或其他类型的成像传感器)。在一些示例中,可以使用与推理不同的格式和/或分辨率来训练一个或更多个机器学习模型(例如,在一个或更多个机器学习模型的部署期间)。
在一些实施例中,图像数据预处理器可以采用预处理图像管线来处理由一个或更多个传感器(例如,一个或更多个相机)获取的一个或更多个原始图像并包括在图像数据中以产生预处理的图像数据,该数据可以表示一个或更多个机器学习模型的一个或更多个输入层(例如,一个或更多个特征提取器层)的一个或更多个输入图像。一个合适的预处理图像管线的示例可以使用来自传感器的原始RCCB Bayer(例如,1通道)类型的图像,并将该图像转换为存储在固定精度(Fixed Precision)(例如,每通道16位)格式中的RCB(例如,3通道)平面图像。预处理图像管线可以包括一个或更多个处理操作,例如但不限于去压缩、降噪、去马赛克、白平衡、直方图计算和/或自适应全局色调映射(例如,以该顺序或以替代顺序)。
在图像数据预处理器采用降噪的情况下,它可以包括拜耳(Bayer)域中的双边去噪。在图像数据预处理器采用去马赛克的情况下,它可以包括双线性内插。在图像数据预处理器采用直方图计算的情况下,它可能涉及计算C通道的直方图,并且在一些示例中可能与解压缩或降噪合并。在图像数据预处理器采用自适应全局色调映射的情况下,它可以包括执行自适应伽马对数变换。这可以包括计算直方图、获得中间色调水平和/或用中间色调水平估计最大亮度。
关于姿势数据,该数据指示自我机器和/或一个或更多个传感器相对于一个或更多个旋转角和平移参数(例如偏航、滚动、俯仰和/或自我机器姿势的其他方面)的姿势。应该理解,描述自我机器的姿势的姿势数据可以从多种来源中的任何一种产生和/或接收。例如,在一些实施例中,立体图像对由传感器110捕获并馈送到VSLAM(视觉同时定位和映射)姿势估计器114,其计算输入数据112的姿势数据分量。作为进一步的示例,姿势数据可以基于来自视觉里程计、LIDAR SLAM、全球卫星导航接收器的数据和/或从可以查看和确定自我机器的至少一部分姿态的外部源(例如移动或静态静止地放置的传感器)接收的数据来计算。在一些实施例中,从外部传感器数据生成的姿势数据可以在自我机器之外计算(并且例如存储在寄存器或服务器中)并且由迭代体积映射功能102经由无线网络接口加载,使得不需要使用自我机器的板载资源来计算姿势数据。
迭代体积映射功能102处理输入数据112以计算距离函数(成本图)104和可视化网格106之一或两者。
成本图104可以由自我机器的一个或更多个下游导航组件124使用,例如下面讨论的一个或更多个控制器836。例如,下游导航组件124可以实现对象回避导航功能和/或世界模型管理器、路径规划器、控制组件、定位组件、避障组件、致动组件等,执行通过环境控制自我机器的操作。
对于一些实施例,下游导航组件124可以包括至少一个或更多个路径规划功能126(例如本文关于自我机器800讨论的路径规划功能)以及致动和控制128(例如转向或中断此处关于自我机器800讨论的致动器或其他控制器)。
例如,路径规划功能126可以包括配置空间管理器、自由空间管理器、可达性管理器和路径评估器。配置空间管理器可以管理姿势配置空间,其表示姿势,包括自我机器在其环境中的位置和方位。自由空间管理器和可达性管理器可以处理姿势配置空间以至少部分地基于从迭代体积映射功能102输出的成本图104确定用于在姿势配置空间中从当前姿势操纵到目标姿势的一条或更多条路径。路径评估器可以至少基于可达性管理器的评估来识别车辆的一条或更多条建议或潜在路径。
可视化网格106可用于基于输入数据观察到的自我机器周围的物理环境的可视化。虽然对于路径规划并不重要,但可渲染的表面表示对于可视化自我机器感知的世界很有用。表面网格是这种表示的一个示例。例如,从可视化网格106产生并显示在包括显示器的人机界面(HMI)120上的可渲染表面表示将允许远程操作自我机器和/或简单地给予操作者对自我机器的环境的更好的理解。在一些实施例中,可视化网格106可以由操作员或其他系统经由无线网络接口118远程访问。例如,在一些实施例中,可视化网格106可以增量地传输到远程系统。
现在参考图2,图2是说明用于至少一个实施例的示例迭代体积映射功能102的框图。如图2所示,可以使用在图形处理单元(GPU)200上执行的多个内核202以并行化方式执行迭代体积映射功能102。GPU可以包括具有例如集成变换、照明、三角形设置/裁剪矩阵操作和/或用于并行处理大块数据的渲染引擎的多核处理器(用于将复杂的问题分解为数千或数百万个单独的任务并立即解决它们)。标记为更新的体素可以在计算迭代或循环内并行处理。此外,当检测到迭代变化时,地图的子部分会被增量处理,因此无需重新计算未变化子部分中的体素。如上所述,在其他实施例中,迭代体积映射功能102可以使用PPU代替GPU来执行,或者使用非并行处理单元来执行。
如图2所示,迭代体积映射功能102使用包括距离场集成210、颜色集成212、网格集成214和成本图集成216的多个内核202在GPU 200上执行。在一些实施例中,VSLAM姿势估计器114可以另外由在GPU 200上执行的一个或更多个内核202使用一个或更多个线程来实现,和/或可以由另一处理器使用一个或更多个线程来实现。还如图2所示,GPU存储器204可以被构造为一系列地图层220。在这个实施例中,地图层220包括距离场层222、颜色层224、网状层226和成本图层228。
迭代体积映射功能102接受深度图像、光栅图像和自我机器姿势的流,并生成成本图104和可视化网格106。在一些实施例中,迭代体积映射功能102融合输入深度图像到3DTSDF中,表示为3D体素网格上的样本。为了实现实时感知路径规划的高帧率,迭代体积映射功能102可以利用该操作的并行特性,以通过在GPU 200上执行的内核202执行TSDF融合。此外,可以使用体素散列以稀疏地分配对应于观察到的场景部分的存储器204,并明确地跟踪对自由空间的观察。通常,路径规划器,例如路径规划功能126,通过测试许多潜在的碰撞路径并执行“最佳”路径来操作。迭代体积映射功能102生成成本图104——其可以是ESDF的形式——被路径规划功能126用于此目的。如下所述,ESDF可以表示从采样的3D元素的位置到对象表面的最短距离。
首先参考距离场集成210,迭代体积映射功能102管线的这个阶段是将输入深度和姿态信息集成到可以存储在具有固定大小的体素的密集体素网格中的距离场(例如,TSDF)中。网格包含具有两个值的体素:距离和权重。距离可以表示沿投影射线到最近表面的距离和符号(+在表面前面,-在表面后面),截断到表面周围非常小的半径(在2到4个体素内,或例如在另一个阈值距离内)。权重可以衡量距离的可信度——通常权重是每个体素被观察到的次数的功能。在一些实施例中,距离场集成210使用GPU 200上的并行化TSDF集成方案来实现。TSDF是快速计算的,它可以是使用零交叉隐式计算表面位置的灵活距离场图表示。
TSDF可以表示自我机器周围环境的重建。可以至少基于将环境视为空间体积而不是仅仅作为表面的集合来确定TSDF,并且通过处理深度图像并将它们投影到三维(3D)网格中来生成作为体积的虚拟重建。对于TSDF网格中表示的每个3D体素,每个体素要么位于表面前面,要么位于表面后面。参考图4在400处,图4示出了体素的投影距离场(例如,TSDF)表示的特性。给定体素(在405处示出)的投影距离测量包括沿着从传感器402(例如,从传感器的中心)通过体素405到表面412上的一点延伸的射线406的射线方向到物理对象414的表面412的距离410。TSDF被截断以仅具有非常靠近表面412的体素的值,从而允许更大的压缩。如图2所示,距离场集成210的输出被存储到地图层220的距离场层222中,其中为距离场中表示的每个体素(在表面412的前面或后面)存储投影距离。
参考颜色集成212,如果存在这样的颜色信息,则迭代体积映射功能102管线的该阶段可用于集成来自输入数据112的光栅图像的颜色信息。在一些实施例中,TSDF的当前状态是从距离场层222获得的,并且使用来自输入数据112的姿势数据和光栅图像数据,颜色集成212将TSDF的当前状态重新投影到来自彩色相机姿势的合成深度图像。然后颜色集成212可以执行与为计算TSDF所执行的类似的集成,但是使用集成颜色(RGB)和权重而不是距离。如为计算TSDF所做的那样,颜色集成可限于对表面412周围的细带(例如,2-4个体素)进行颜色集成。来自颜色集成212的输出包括对应于TSDF的颜色集成图,其被存储到地图层220的颜色层224。
参考网格集成214,迭代体积映射功能102管线的这个阶段可用于使用来自距离场层222的当前TSDF和来自颜色层224的颜色集成图作为输入计算TSDF的多边形网格(例如三角形网格)表示。在一些实施例中,网格集成214在TSDF体素网格上应用Marching Cubes算法(或用于从三维离散标量场提取等值面的多边形网格的算法)以重建由TSDF体积表示的三角形网格的最佳猜测。在一些实施例中,可以省略来自颜色层224的输入,例如在输入数据112不包括颜色信息的情况下。网格集成214的输出作为可视化网格106被存储到网状层226。虽然对于路径规划不是关键的,但是可视化网格106可用于其他目的,例如可视化由自我机器感知的世界,可用于自我机器周围环境的可视化以及自我机器的远程操作。
参考成本图集成216,迭代体积映射功能102管线的这个阶段可用于计算存储在具有固定大小体素的密集体素网格中的成本图(例如,ESDF)。再次参考图4,在400,图4还示出了体素405的ESDF表示的特性。成本图(ESDF)中体素405的距离测量可以包括从体素405到物理对象414的表面412的欧几里得距离420。成本图,对于图中的每个自由体素,可以表示到最近占据的体素425的欧几里得距离,例如,对象414的表面412至少部分占据的最近体素。如图2所示,成本图集成216的输出被存储到地图层220的成本图层228中,其中为成本图中表示的每个体素(在表面412的前面或后面)存储欧几里得距离。
存储到成本图层228的成本图集成216的输出包括对于每个体素的信息,例如:到表面412上的站点的距离(本文中的术语“站点”可以指体素相信或确定位于表面上),是否已观察到该体素,以及该体素本身是否是一个站点。存储到成本图层228的更新更新了可用于路径规划的成本图104。
参考图3进一步描述由成本图集成216执行的用于计算成本图的过程。在一些实施例中,每个地图层220中的体素被存储为块(例如,在8×8×8体素的块中)。这些块被分配并且可以通过它们在3D网格中的位置来引用。例如,网格的原点位于(0,0,0)块内,上面的块将具有索引(0,0,1)。在一些实施例中,地图层220也可以以持久的方式存储,使得当自我机器重新启动时,它可以将块加载回GPU存储器204,它们之前所在的位置。因此,只需要更新地图层220的内容以反映在自我机器离线期间发生了什么变化。在一些实施例中,块也可以被序列化并保存到磁盘。
成本图集成216可以将来自距离场集成210的初始“更新块”列表305作为输入。更新块列表305识别距离场的所有块(例如,TSDF),即该距离场集成210已经计算了在距离场集成210执行的最后处理迭代期间的更新值。更新的块列表305由标记站点功能310接收,该功能由GPU 200(例如,作为一个内核)使用一个或更多个线程实现。在一些实施例中,对于更新的块列表中包括的每个块,标记站点功能310并行处理每个体素,对照距离场层222和成本图层228中指示的状态检查体素的当前状态。如前所述,“站点”一词可指预测位于对象表面边界上的体素。在3D情况下,标记站点功能310将每个距离场体素与其对应的成本图体素进行比较。存储在成本图层228中的每个体素由标记站点功能310基于它是否被认为是“观察到的”体素(即,具有大于0的权重)以及它是否被认为是“站点”体素(对于例如,投影距离小于或等于1个体素大小)来更新。因此可能有四种潜在结果:1)成本图体素以前未被观察到,现在被观察到,2)成本图体素以前不是一个站点,现在是一个站点,3)成本图体素以前是一个站点,并且现在不再是站点,以及4)“是站点”状态未因更新而变化。对于情况1,其中标记站点功能310确定成本图体素先前未被观察到并且现在被观察到,来自距离场层222的现有距离场值被复制以用于计算成本图。对于其中体素是站点并且仍然是站点的情况4,不需要进一步处理体素。对于情况2,其中块包括先前不是站点但已变为站点的体素,包含该体素的块被添加到“具有站点的块”列表(在312处显示)。这将确保该块在随后的更新/降低波前处理340中被处理。对于情况3,其中块包括曾经是站点但不再是站点的体素,指向它作为其父站点的每个体素(也就是说,测量距离的体素)的距离无效。这在清除/升高波前过程330中执行。这些体素将它们的距离值重置为最大距离并输入到块中以清除列表314。
应当注意,成本图集成216可以以全3D(如上所述)或考虑到自我机器的全高使用2D切片来处理更新的块。为了处理2D切片,标记点功能310首先累积落在自我机器高度内的整个垂直条带上的最小距离测量值(即,在对应于自我机器高度的选定的最小z轴值和对应的最大z轴值之间)。如果条带内的任何体素是观察到的体素,则标记位点功能310将2D切片的体素分类为观察到的。其他处理与3D处理相同,只是省略了处理z轴。
关于升高波前330和降低波前340,尽管它们在结构上相似,但它们计算的实际操作和比较可能大不相同。升高波前330将块输入要清除的314列表作为要处理的块的初始列表。在332处应用块内体素的清除,一次一个轴地传播清除波(例如,到x轴,然后是y轴,然后是z轴)。邻居表由升高波前过程330构建,该过程为在清除体素332功能处处理的每个块识别相邻块,并且针对这些相邻块的体素的体素存储在GPU存储器204中的位置。清除邻居334功能下一阶段是通过查找两个相邻的体素来清除块边界上的邻居,每个体素都在其各自块的边界上。如果可以清除该体素,则将整个块添加到新的清除列表336,该新清除列表336被反向传播至清除体素332功能。重复清除体素332和清除邻居334功能之间的过程,清除块内的邻居,然后检查是否可以清除相邻块,直到没有更多的邻居可以被清除(即,直到新的清除列表336为空).
降低波前340输入具有站点312列表的块作为要处理的块的初始列表。在342处应用块内的体素更新,一次一个轴地传播更新波(例如,到x轴,然后是y轴,然后是z轴)。邻居表由降低波前处理340构建,为在更新体素342功能处处理的每个块识别相邻块,以及这些相邻块的体素的体素存储在GPU存储器204中的位置。更新邻居344功能是下一个阶段,可用于通过查找两个相邻体素来更新块边界上的邻居,每个体素都在其各自块的边界上。如果可以更新该体素,则将整个块添加到新的更新列表346,该更新列表346被反向传播至更新体素342功能。相邻体素的更新基于距离的比较。也就是说,如果更新体素的父站点可以降低其距离,则更新相邻体素。重复更新体素342和更新邻居344功能之间的过程,更新块内的邻居,然后检查是否可以更新相邻块,直到不能更新更多邻居(即,直到新的更新列表346为空).
应该注意升高波前330和降低波前340之间的以下差异。在升高波前330中,传播清除的体素(即,其父站点已被重置的体素)。当体素被清除时,升高波前330检查其体素邻居,并且如果那些邻居的父方向指向清除的体素,则邻居体素也被清除。成本图集成216首先执行升高波前330过程。一旦不能清除更多块,则成本图集成216执行降低波前340过程。一旦不再有块可以被更新(新的更新列表为空),由于存储在成本图层228中的成本图104是最新的,因此可以终止该GPU执行迭代的成本图集成216的执行。
在至少一个实施例中,除了与前进方向相关的数据之外,传感器110还可以从围绕自我机器的一个或更多个方向收集输入数据112。在那种情况下,距离场集成210可以应用于一个或更多个不同方向的每组输入数据112,并且成本图104由再次对由距离场集成210产生的更新块列表305上指示的块执行的成本图集成216更新。
路径规划功能126使用成本图104来规划避免与障碍物碰撞的自我机器的行进路径,并且更具体地使用成本图104来找到成本最低的路径。例如,成本图104指示的成本增加可能对应于撞击障碍物的可能性增加,其中自我机器越接近障碍物,成本图104指示的成本就越高。在一些实施例中,路径规划功能126可以结合其他因素使用成本图104来规划路径,例如避免通过人或其他自我机器正在操作的繁忙区域的路径。在一些实施例中,可以通过在自我机器上执行的其他过程将这些因素作为附加成本添加到成本图104。具有由迭代体积映射功能102生成的成本图104(例如,ESDF)的一个明显优势是它减轻了路径规划功能126的计算负担。也就是说,不仅仅输出关于障碍物在哪里的2D或3D基于感知的视图,并且迫使路径规划功能126基于到对象的感知距离来计算碰撞成本,成本图104向路径规划功能126提供指示对象在哪里的布局以及指示沿着自我机器接近那些对象的潜在计划路径发生碰撞概率的信息。
关于由地图层220提供的数据结构,典型的体积映射系统将空间离散化为3D网格。该网格的每个体素都驻留在存储器中并存储映射数量的单个值。例如,在TSDF重建的情况下,距离场中元素的这个值是到最近投影表面的有符号距离。例如,距离场位置(x,y,z)=(1.0m,2.0m,3.0m)的体素可能存储值sdf=0.5m,表示体素向前1.0m,向左=2.0m,以及向上3.0m的投影距离其附近的表面为0.5m。对于重建管线(例如,用于计算机图形系统而不是机器人映射系统的管线),TSDF值就足够了,因为单独的TSDF值可以促进提取表示为例如三角形网格的真实世界表面。这种表面模型可以成为感兴趣的对象,用于进一步的任务,例如在查看器中渲染或带入更大的虚拟3D世界(数字孪生结构)。因此,在重建管线中,体积表示的构建在计算TSDF时停止,进一步的任务使用从TSDF计算的表面模型。对于自我机器路径规划,仅计算TSDF可能是不够的。
与TSDF一样,ESDF存储在体素的3D网格中,并且该网格可以与TSDF网格并置。ESDF是基于体积数据的成本图的一个示例,它为自我机器路径规划提供了独特的效用。也就是说,可能存在几个额外的感兴趣数量,这些数量在空间上是变化的,并且希望在存储器中表示为3D网格。例如,自我机器可以包括清洁机器人,用于使碎屑离开地板。可能希望这样的机器人能够将不同类型的可回收材料(例如,罐头、纸板、塑料)相互区分开来,并与不可回收的材料区分开来,并存储每个体素中表示的已识别的可回收材料类别。在其他实施例中,对于自我机器来说,具体辨别人何时出现在每个体素处可能是重要的。
迭代体积映射功能102因此可以将由各种GPU内核202在GPU存储器204中的3D网格上生成的各种数据类型存储为地图层220。地图层220包括层的堆叠(例如距离场层222、颜色层224、网状层226、成本图层228和/或其他数据类型的其他附加层),其中每一层的网格彼此并置。在一些实施例中,地图层220由GPU库(其在本文中可称为“nvblox”库)实现,包括用于将内核202生成的数据存储到地图层220中以便快速访问的算法和函数,以及提供用于与地图层220的各个层交互的工具(例如但不限于保存和检索数据)。nvblox库及其实现的地图层220可能不指定存储在每个层中的数据类型,并且可能不知道存储在每个层中的数据类型。例如,使用nvblox库的开发者可以有自由度来指定要在每个体素处存储什么类型的数据,并且可以在编译时生成用于地图层220的那个层的代码。与现有的、以重建为目标的TSDF库相比,这种灵活性对于自我机器类型的机器人可能特别有利。
在一些实施例中,GPU内核202可以与在作为迭代体积映射功能102和自我机器的其他硬件和/或软件元素之间的接口的CPU(例如任何控制器836)上执行的一个或更多个软件应用程序结合操作。例如,迭代体积映射功能102可以通过CPU执行的应用程序和/或功能被提供输入数据112,并且通过CPU执行的应用程序和/或功能向自我机器的其他组件提供成本图104和/或可视化网格106。
图5A和5B示出了由路径规划功能126在可视化网格106的上下文中规划的示例路径以及由迭代体积映射功能102计算的成本图104。参考图5A,可视化网格506描绘了存在于自我机器500的环境中的对象510的表面结构、纹理和颜色。图5B在可视化网格的上下文中进一步示出了由迭代体积映射功能102计算并存储在成本图层228中的成本图530(例如,ESDF)。成本图530中的那些远离对象510(例如在536处)的体素在成本图530中可能具有很少或没有指派给它们的成本值。然而,如在538处所示,成本图530可以包括具有成本值的体素带,其成本值随着它们与对象510表面的距离减少而增加。自我机器500越接近对象,根据成本图530占据该位置的成本可能越高,如从成本图104确定的。路径规划功能126可以因此输入成本图104,该成本图104包括成本图530,并为自我机器500规划路径540,该路径寻求最小化成本,以避免自我机器500和对象510之间的碰撞。
图6在600处示出了根据一个实施例的示例,该示例基于更新的距离场(TSDF)构建对成本图(ESDF)的更新,例如由上面讨论的成本图集成216执行。在图6中,一个或更多个传感器110捕获输入数据112,该输入数据112表示关于自我机器环境中的对象622的表面620的信息。基于一个或更多个传感器110捕获的深度和姿态输入数据112,TSDF距离场集成210可以将点云610射线投射到距离场的网格上(在612处示出)。沿着每条射线614的路径发生变化的那些体素被更新(例如,基于距离的加权平均)到表面620前面和后面的截断距离。
具有更新体素的块被包括在由距离场集成210提供给成本图集成216的更新块列表305中以更新成本图的网格(在624处示出)。在一些实施例中,基于更新的距离场层222中指示的新距离,由标记站点功能310将块指派给要清除314列表的块或具有站点312列表的块。例如,给定更新块列表305上的块包括更新的距离场体素(在626处示出),成本图集成216可以应用升高波前330或降低波前340来更新成本图网格624中的对应体素626,并将变化(清除或更新)传播到相邻块(由630示出)。一旦升高波前330过程清除了无效的体素值,降低波前340过程检查是否可以降低相邻体素的距离,并且该波前传播直到没有进一步的相邻体素需要更新。
图7是示出根据本公开的一些实施例的用于自我机器的体积映射的方法700的流程图。本文描述的方法700的每个块包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器(例如GPU、PPU和/或CPU)来执行。方法700也可以体现为存储在计算机存储介质上的计算机可用指令。方法700可以由独立应用程序、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件提供,仅举几例。
此外,作为示例,关于包括在图1的过程100中的迭代体积映射功能102来描述方法700。然而,该方法700可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。因此应当理解,本文关于图7的方法700描述的特征和元件可以与本文讨论的任何其他实施例的任何其他实施例的元件结合、组合或替代使用,反之亦然。此外,应当理解,图7中描述的实施例的元件的功能、结构和其他描述可以应用于本文描述的任何附图和/或实施例中的相似或类似命名或描述的元件,反之亦然。
方法700涉及自我机器路径规划。通常,方法700包括至少基于对应于对象表面的第一距离场生成成本图,至少基于对对应于到对象距离的第二距离场的一个或更多个元素的一个或更多个更新计算第一距离场,至少基于来自机器的一个或更多个传感器的输入数据计算第二距离场。在一些实施例中,用于确定自我机器的行进路径的成本图基于至少部分地基于对截断有符号距离场(TSDF)的一个或更多个体素块的更新而计算的欧几里得有符号距离场(ESDF)。可以至少部分地基于来自自我机器的一个或更多个传感器的输入数据来计算TSDF。在一些实施例中,方法700可以可选地进一步包括至少部分地基于使用至少部分地基于来自自我机器的一个或多个传感器的输入数据计算的颜色集成图,在图形处理单元上生成TSDF的多边形网格表示。
方法700包括,在B710,至少基于使用环境中的自我机器的一个或更多个传感器生成的第一深度数据,生成表示一个或更多个传感器与环境中的一个或更多个对象之间的距离的第一地图,一个或更多个对象使用三维(3D)空间中的一组元素来表示。在一些实施例中,第一地图包括表示为3D体素网格上的第一多个样本的TSDF,并且可以至少部分地基于使用自我机器的一个或更多个传感器生成的输入数据(例如,深度图像和姿势数据)来计算。
方法700在B712包括至少基于使用一个或更多个传感器生成的第二深度数据更新第一地图的元素集,并且在B714包括识别对应于由更新引起的一组元素的一个或更多个变化的元素集中的一个或更多个元素。例如,在一些实施例中,该方法识别第一地图的距离场自上次处理迭代以来具有更新值的所有块。在一些实施例中,对于每个更新块,该方法并行处理每个体素,对照距离场层和成本图层中指示的状态检查体素的更新状态。
在B716,方法700包括至少基于被识别为对应于一个或更多个变化的一个或更多个元素来更新第二地图,第二地图表示该组元素到该一个或更多个对象的表面的距离。在一些实施例中,第二地图包括表示为3D体素网格上的第二多个样本的ESDF,并且可以至少部分地基于被识别为对应于一个或多个变化(例如,对第一映射的一个或多个体素块的更新)的元素来计算第二地图。在一些实施例中,对第二地图的更新至少部分地通过基于被识别为对应于一个或更多个变化的一个或更多个元素的更新状态迭代地传播对第二地图的更新来执行。
在B718,方法700包括至少基于第二地图的距离来执行用于使用第二地图来控制自我机器的一个或更多个操作。在一些实施例中,该方法基于第二地图输出至少一个成本图,其中至少一个成本图指示体素与自我机器的环境中的一个或更多个障碍物之间的距离。成本图可由自我机器的一个或更多个下游导航组件使用,例如下文讨论的一个或更多个控制器836。例如,下游导航组件可以实现对象回避导航功能和/或世界模型管理器、路径规划器、控制组件、定位组件、避障组件、致动组件等,以执行控制自我机器通过环境的操作。
在一些实施例中,该方法可以进一步生成包括第一地图的多边形网格表示的第三地图,并且基于多边形网格表示输出至少一个可视化网格。通过该方法产生的每个地图可以作为多个地图层中的一个或更多个层存储在存储器中。在一些实施例中,使用地图序列化将多个地图层中的一个或更多个中的元素存储为块,其中每个块由索引独立引用。
示例自主自我机器
图8A是根据本公开的一些实施例的示例自主自我机器800的图示。自主自我机器800(可替代地,在本文称为“车辆800”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、施工车辆、水下船只、飞机、无人机、飞行船只、有人驾驶和无人驾驶的机器人或机器人平台、仓库车辆、越野车辆、与拖车相连的车辆和/或另一类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)。
自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related to DrivingAutomation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆800可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。车辆800可以能够根据自动驾驶级别的级别1-级别5中的一个或多个来发挥功能。例如,取决于实施例,车辆800可能够实现驾驶员辅助(1级),部分自动化(2级)、条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。如本文所用,术语“自主”可包括车辆800或其他机器的任何和/或所有类型的自主,例如完全自主、高度自主、有条件自主、部分自主、提供辅助自主、半自助的、主要是自主的或其他名称。
车辆800可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆800可以包括推进系统850,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统850可以连接到可以包括变速器的车辆800的传动系以便实现车辆800的推进。可以响应于接收到来自油门/加速器852的信号而控制推进系统850。
可以包括方向盘的转向(steering)系统854可以用来在推进系统850操作时(例如在车辆运动时)使车辆800转向(例如沿着希望的路径或路线)。转向系统854可以接收来自转向致动器856的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统846可以用来响应于接收到来自制动致动器848和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)804(图8C)和/或一个或更多个GPU的一个或更多个控制器836可以向车辆800的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器848操作车辆制动器、经由一个或更多个转向致动器856操作转向系统854、经由一个或更多个油门/加速器852操作推进系统850的信号。一个或更多个控制器836可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆800。一个或更多个控制器836可以包括用于自主驾驶功能的第一控制器836、用于功能性安全功能的第二控制器836、用于人工智能功能(例如计算机视觉)的第三控制器836、用于信息娱乐功能的第四控制器836、用于紧急情况下的冗余的第五控制器836和/或其他控制器。在一些示例中,单个控制器836可以处理上述功能中的两个或更多,两个或更多控制器836可以处理单个功能,和/或其任意组合。在一些实施例中,迭代体积映射功能102可以至少部分地由控制器836中的一个或更多个来实现。
一个或更多个控制器836可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆800的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器858(例如全球定位系统传感器)、RADAR传感器860、超声传感器862、LIDAR传感器864、惯性测量单元(IMU)传感器866(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风896、立体相机868、广角相机870(例如鱼眼相机)、红外相机872、环绕相机874(例如360度相机)、远程和/或中程相机898、速度传感器844(例如用于测量车辆800的速率)、振动传感器842、转向传感器840、制动传感器(例如作为制动传感器系统846的部分)和/或其他传感器类型。
控制器836中的一个或更多个可以接收来自车辆800的仪表组832的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器834、听觉信号器、扬声器和/或经由车辆800的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图8C的HD地图822)、位置数据(例如,车辆800例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器836所感知的关于对象和对象状态的信息等等。例如,HMI显示器834可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。在一些实施例中,HMI显示器834可以显示可视化网格106的视觉呈现。
车辆800还包括网络接口824,其可以使用一个或更多个无线天线826和/或调制解调器通过一个或更多个网络通信。例如,网络接口824可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线826也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图8B为根据本公开一些实施例的用于图8A的示例自主车辆800的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆800上的不同位置。在一些实施例中,向迭代体积映射功能102提供输入数据112的一个或更多个传感器110可以包括图8B所示的一个或更多个相机。
用于相机的相机类型可以包括但不限于可以适于与车辆800的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆800前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器836和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(LDW)、自主巡航控制(ACC),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机870,其可以用来感知从周边进入视场的对象(例如行人、十字路口交通或者自行车)。尽管图8B中图示出仅仅一个广角相机,但是在车辆800上可以存在任意数量的广角相机870。此外,远程相机898(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机898也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机868也可以包括在前置配置中。立体相机868可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机868可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机868。
具有包括车辆800的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机874(例如如图8B中所示的四个环绕相机874)可以置于车辆800上。环绕相机874可以包括广角相机870、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机874(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆800的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机898、立体相机868、红外相机872等等)的相机。
图8C为根据本公开一些实施例的用于图8A的示例自主车辆800的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图8C中车辆800的部件、特征和系统中的每一个被图示为经由总线802连接。总线802可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆800内部的网络,用来辅助控制车辆800的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线802描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线802,但是这并不意图是限制性的。例如,可以存在任意数量的总线802,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线802可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线802可以用于碰撞避免功能,并且第二总线802可以用于驱动控制。在任何示例中,每条总线802可以与车辆800的任何部件通信,并且两条或更多总线802可以与相同的部件通信。在一些示例中,车辆内的每个SoC 804、每个控制器836和/或每个计算机可以有权访问相同的输入数据(例如来自车辆800的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆800可以包括一个或更多个控制器836,例如本文关于图8A所描述的那些控制器。控制器836可以用于各种各样的功能。控制器836可以耦合到车辆800的任何其他不同的部件和系统,并且可以用于车辆800的控制、车辆800的人工智能、用于车辆800的信息娱乐和/或类似物。
车辆800可以包括一个或更多个片上系统(SoC)804。SoC 804可以包括CPU 806、GPU 808、处理器810、高速缓存812、加速器814、数据存储816和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 804可以用来控制车辆800。例如,一个或更多个SoC804可以在系统(例如车辆800的系统)中与HD地图822结合,所述HD地图可以经由网络接口824从一个或更多个服务器(例如图8D的一个或更多个服务器878)获得地图刷新和/或更新。
CPU 806可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU 806可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 806在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 806可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 806(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 806的簇的任意组合能够在任何给定时间是活动的。
CPU 806可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 806可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 808可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU808可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 808可以使用增强张量指令集。GPU 808可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU 808可以包括至少八个流式微处理器。GPU 808可以使用计算应用编程接口(API)。此外,GPU808可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 808进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 808。然而,这并不意图是限制性的,并且GPU 808可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合准确度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合准确度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 808可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 808可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 808直接访问CPU 806页表。在这样的示例中,当GPU 808内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 806。作为响应,CPU 806可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU808。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 806和GPU 808二者的内存,从而简化了GPU 808编程和将应用程序移(port)到GPU 808。
此外,GPU 808可以包括访问计数器,其可以追踪GPU 808访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 804可以包括任意数量的高速缓存812,包括本文描述的那些高速缓存。例如,高速缓存812可以包括CPU 806和GPU 808二者可用的L3高速缓存(例如,其连接到CPU 806和GPU 808二者)。高速缓存812可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 804可以包括算术逻辑单元(ALU),所述算术逻辑单元可以在执行关于车辆800的各种任务或操作中的任何任务或操作(如处理DNN)的处理中被利用。此外,SoC 804可以包括用于在系统内执行数学运算的浮点单元(FPU)(或其他数学协处理器或数字协处理器类型)。例如,SoC104可以包括集成为CPU 806和/或GPU 808内的执行单元的一个或更多个FPU。
SoC 804可以包括一个或更多个加速器814(例如硬件加速器、软件加速器或者其组合)。例如,SoC 804可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来补充GPU 808,并且卸载GPU 808的一些任务(例如释放GPU808的更多周期以用于执行其他任务)。作为一个示例,加速器814可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器814(例如硬件加速器簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 808的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 808针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 808和/或其他加速器814。
加速器814(例如硬件加速器簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 806访问系统内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体系统安全性。
加速器814(例如硬件加速器簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器814的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 804可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线跟踪相关操作。
加速器814(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆800取向、距离相关的惯性测量单元(IMU)传感器866输出,从神经网络和/或其他传感器(例如LIDAR传感器864或RADAR传感器860)获得的对象的3D位置估计等。
SoC 804可以包括一个或更多个数据存储816(例如内存)。数据存储816可以是SoC804的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储816可以容量足够大以存储神经网络的多个实例。数据存储812可以包括L2或L3高速缓存812。对数据存储816的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器814关联的内存的引用。
SoC 804可以包括一个或更多个处理器810(例如嵌入式处理器)。处理器810可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 804启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 804热和温度传感器管理和/或SoC 804功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC804可以使用环形振荡器检测CPU 806、GPU 808和/或加速器814的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 804置于较低功率状态和/或将车辆800置于司机安全停车模式(例如使车辆800安全停车)。
处理器810可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器810可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器810可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器810可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器810可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器810可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机870、环绕相机874和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 808无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 808上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 808的负担以提高性能和响应能力。
SoC 804可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 804可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 804可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC 804可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器864、RADAR传感器860等等)的数据,来自总线802的数据(例如车辆800的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器858的数据。SoC 804可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU806。
SoC 804可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 804可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 806、GPU 808和数据存储816结合时,加速器814可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 820)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 808上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆800的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 804提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风896的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 804使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器858所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器862的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 804的CPU818(例如分立的CPU或dCPU)。CPU 818可以包括例如X86处理器。CPU818可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 804之间潜在地不一致的结果,和/或监控控制器836和/或信息娱乐SoC 830的状态和健康状况。
车辆800可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 804的GPU820(例如分立的GPU或dGPU)。GPU 820可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆800的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆800可以还包括网络接口824,该网络接口可以包括一个或更多个无线天线826(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口824可以用来使能通过因特网与云(例如与服务器878和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆800提供关于接近车辆800的车辆(例如车辆800前面、侧面和/或后面的车辆)的信息。该功能可以是车辆800的协作自适应巡航控制功能的部分。在一些实施例中,无线网络接口118对应于网络接口824,使得迭代体积映射功能102可以通过网络接口824接收由设备外传感器捕获的附加输入数据或其他数据。
网络接口824可以包括提供调制和解调功能并且使得控制器836能够通过无线网络通信的SoC。网络接口824可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆800可以还包括可包括片外(例如SoC 804外)存储装置的数据存储828。数据存储828可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆800可以还包括GNSS传感器858。GNSS传感器858(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能(例如路径规划功能126)。可以使用任意数量的GNSS传感器858,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆800可以还包括RADAR传感器860。RADAR传感器860可以甚至在黑暗和/或恶劣天气条件下也由车辆800用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器860可以使用CAN和/或总线802(例如以传输RADAR传感器860生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器860可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器860可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器860可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆800的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆800的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达860m(前面)或80m(后面)的范围以及高达42度(前面)或850度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于视盲点检测和/或变道辅助。
车辆800可以还包括超声传感器862。可以置于车辆800的前面、后面和/或侧面的超声传感器862可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器862,并且不同的超声传感器862可以用于不同的检测范围(例如2.5m、4m)。超声传感器862可以操作于功能安全级别的ASIL B。
车辆800可以包括LIDAR传感器864。LIDAR传感器864可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器864可以为功能安全级别的ASIL B。在一些示例中,车辆800可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器864(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器864可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器864可以具有例如近似800m的广告范围,准确度为2cm-3cm,支持800Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器864。在这样的示例中,LIDAR传感器864可以实现为可以嵌入到车辆800的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器864可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器864可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆800的每一侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器864可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器866。在一些示例中,IMU传感器866可以位于车辆800的后轴的中心。IMU传感器866可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器866可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器866可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器866可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器866可以使得车辆800能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器866的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器866和GNSS传感器858可以结合到单个集成单元中。
该车辆可以包括置于车辆800中和/或车辆800周围的麦克风896。除别的以外,麦克风896可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机868、广角相机870、红外相机872、环绕相机874、远程和/或中程相机898和/或其他相机类型。这些相机可以用来捕获车辆800整个外围周围的图像数据。使用的相机类型取决于实施例和车辆800的要求,并且相机类型的任意组合可以用来提供车辆800周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图8A和图8B更详细地进行了描述。
车辆800可以还包括振动传感器842。振动传感器842可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器842时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
在一些实施例中,向迭代体积映射功能102提供输入数据112的一个或更多个传感器110可以包括关于图8C讨论的一个或更多个相机或传感器。
车辆800可以包括ADAS系统838。在一些示例中,ADAS系统838可以包括SoC。ADAS系统838可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器860、LIDAR传感器864和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆800前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆800改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口824和/或无线天线826经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆800前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆800前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器860。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆800穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆800开始离开车道,那么LKA系统提供纠正车辆800的转向输入或制动。
BSW系统检测并向驾驶员警告汽车视盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆800倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆800中,在冲突结果的情况下,车辆800本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器836或第二控制器836)的结果。例如,在一些实施例中,ADAS系统838可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统838的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 804的部件和/或作为SoC 804的部件而被包括。
在其他示例中,ADAS系统838可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统838的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统838由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆800可以还包括信息娱乐SoC 830(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 830可以包括可以用来向车辆800提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 830可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器834、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 830可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统838的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 830可以包括GPU功能。信息娱乐SoC 830可以通过总线802(例如CAN总线、以太网等)与车辆800的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC830可以耦合至监督MCU,使得在主控制器836(例如车辆800的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC830可以如本文所描述的将车辆800置于司机安全停车模式。
车辆800可以还包括仪表组832(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组832可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组832可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 830和仪表组832之间共享。换言之,仪表组832可以作为信息娱乐SoC 830的部分而被包括,或者反之亦然。
图8D为根据本公开一些实施例的基于云的服务器与图8A的示例自主车辆800之间的通信的系统示意图。系统876可以包括服务器878、网络890以及包括车辆800在内的车辆。服务器878可以包括多个GPU884(A)-884(H)(这里统称为GPU 884)、PCIe交换机882(A)-882(H)(这里统称为PCIe交换机882)和/或CPU 880(A)-880(B)(这里统称为CPU 880)。GPU884、CPU 880和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口888之类的高速互连和/或PCIe连接886互连。在一些示例中,GPU 884经由NVLink和/或NVSwitch SoC连接,并且GPU 884和PCIe交换机882经由PCIe互连连接。尽管图示出八个GPU 884、两个CPU880和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器878中的每一个可以包括任意数量的GPU 884、CPU 880和/或PCIe交换机。例如,服务器878中的每一个可以包括八个、十六个、三十二个和/或更多GPU 884。
服务器878可以通过网络890并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器878可以通过网络890并且向车辆传输神经网络892、更新的神经网络892和/或地图信息894,包括关于交通和道路状况的信息。对地图信息894的更新可以包括对于HD地图822的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络892、更新的神经网络892和/或地图信息894可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器878和/或其他服务器)的经验产生。
服务器878可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中综合生成(例如使用游戏引擎),和/或作为用于异构内容创建应用程序的协作内容创建平台的多维(例如,2D或3D)资产。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类或更多类别的机器学习技术来执行训练,包括但不限于诸如以下类别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络890传输至车辆),和/或机器学习模型可以由服务器878用来远程地监控车辆。
在一些示例中,服务器878可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器878可以包括由GPU 884供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器878可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器878的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆800中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆800的定期更新,例如图像序列和/或车辆800已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆800识别的对象相比较,如果结果不匹配并且该基础设施得出车辆800中的AI发生故障的结论,那么服务器878可以向车辆800传输信号,指示车辆800的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器878可以包括GPU 884和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图9是适合用于实现本公开的一些实施例的示例计算设备900的框图。计算设备900可以包括直接或间接耦合以下设备的互连系统902:存储器904、一个或更多个中央处理单元(CPU)906、一个或更多个图形处理单元(GPU)908、通信接口910、输入/输出(I/O)端口912、输入/输出组件914、电源916,一个或更多个呈现组件918(例如,(一个或更多个)显示器)和一个或更多个逻辑单元920。在至少一个实施例中,(一个或更多个)计算设备900可以包括一个或更多个虚拟机(VM),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,GPU 908中的一个或更多个可以包括一个或更多个vGPU,CPU 906中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元920中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,(一个或更多个)计算设备900可以包括分立组件(例如,专用于计算设备900的全GPU)、虚拟组件(例如,专用于计算设备900的GPU的一部分)、或其组合。在一些实施例中,迭代体积映射功能102可以至少部分地由一个或更多个GPU 908、一个或更多个CPU 906和/或它们的组合来执行。
尽管图9的各个方框被示出为利用线路经由互连系统902连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件918(诸如显示设备)可被认为是I/O组件914(例如,如果显示器是触摸屏)。作为另一个示例,CPU 906和/或GPU 908可以包括存储器(例如,存储器904可以表示除了GPU 908的存储器、CPU 906和/或其他组件之外的存储设备)。换言之,图9的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型的此类类别之间不做区分,因为所有都被考虑在图9的计算设备的范围内。
互连系统902可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连系统902可以包括一个或更多个总线或链路类型,诸如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、快速外围组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 906可直接连接到存储器904。进一步,CPU 906可直接连接到GPU 908。在组件之间存在直接或点对点连接的情况下,互连系统902可包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在计算设备900中。
存储器904可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备900访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。在一些实施例中,存储器904可以包括一个或更多个地图层220。
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器904可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备900存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
CPU 906可经配置以执行计算机可读指令中的至少一些以控制计算设备900的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。CPU 906可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。CPU906可包含任何类型的处理器,且可取决于所实施的计算设备900的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备900的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备900还可包括一个或更多个CPU 906。
除(一个或更多个)CPU 906以外或替代(一个或更多个)CPU 906,(一个或更多个)GPU 908可被配置成执行计算机可读指令中的至少一些以控制计算设备900的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。GPU 908中的一个或更多个可为集成GPU(例如,有CPU 906中的一个或更多个)和/或GPU 908中的一个或更多个可为离散GPU。在实施例中,GPU 908中的一个或更多个可以是CPU 906中的一个或更多个的协处理器。GPU 908可由计算设备900使用以渲染图形(例如,3D图形)或执行通用计算。例如,GPU908可用于GPU上的通用计算(GPGPU)。GPU 908可包含能够同时处置数百或数千软件线程的数百或数千核心。GPU 908可响应于渲染命令(例如,经由主机接口从CPU 906接收的渲染命令)而产生输出图像的像素数据。GPU 908可包含用于存储像素数据或任何其他合适数据(例如,GPGPU数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器904的一部分被包括。GPU 908可包含并行操作(例如,经由链路)的两个或两个以上GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每一GPU 908可产生用于输出的不同部分或用于不同输出的像素数据或GPGPU数据(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)。每一GPU可包含其自己的存储器,或可与其他GPU共享存储器。
除CPU 906和/或GPU 908之外或替代CPU 906和/或GPU 908,逻辑单元920可经配置以执行计算机可读指令中的至少一些以控制计算设备900的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)CPU 906、(一个或更多个)GPU 908、和/或(一个或更多个)逻辑单元920可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元920中的一个或更多个可为CPU 906和/或GPU 908中的一个或更多个中的一部分和/或集成于CPU 906和/或GPU 908中的一个或更多个和/或逻辑单元920中的一个或更多个可为离散组件或以其他方式在CPU 906和/或GPU 908外部。在实施例中,逻辑单元920中的一个或更多个可以是CPU 906中的一个或更多个和/或GPU908中的一个或更多个的协处理器。
逻辑单元920的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、数据处理单元(DPU)、图形处理群集(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树横向单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或快速外围组件互连(PCIe)元件等。
通信接口910可以包括使计算设备900能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口910可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。在一个或更多个实施例中,一个或更多个逻辑单元920和/或通信接口910可以包括一个或更多个数据处理单元(DPU)以将通过网络和/或通过互连系统902接收的数据直接传输到(例如,存储器)一个或更多个GPU 908。
I/O端口912可以使得计算设备900能够逻辑地耦合到包括I/O组件914、(一个或更多个)呈现组件918和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备900中。说明性I/O组件914包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。I/O组件914可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。NUI可实现与计算设备900的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备900可以包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术和这些的组合。另外,计算设备900可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的部分)。在一些示例中,计算设备900可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
电源916可包括硬连线电源、电池电源或其组合。电源916可向计算设备900提供电力以使得计算设备900的组件能够操作。
呈现组件918可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件918可从其他组件(例如,GPU908、CPU906、DPU等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
示例数据中心
图10示出了可在本公开的至少一个实施例中使用的示例数据中心1000。数据中心1000可包括数据中心基础设施层1010、框架层1020、软件层1030和/或应用层1040。
如图10所示,数据中心基础设施层1010可以包括资源协调器1012、分组的计算资源1014和节点计算资源(“节点C.R.s”)1016(1)-1016(N),其中“N”表示任何完整的正整数。在至少一个实施例中,节点C.R.s 1016(1)-1016(N)可包括,但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括DPU、加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动器),网络输入/输出(“NW I/O”)装置、网络交换机、虚拟机(“VM”)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点C.R.s 1016(1)-1016(N)中的一个或更多个节点C.R.s可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点C.R.s 1016(1)-10161(N)可包括一个或更多个虚拟组件,诸如vGPU、vCPU等,和/或节点C.R.s 1016(1)-1016(N)中的一个或更多个可对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源1014可包括容纳在一个或更多个机架(未示出)内的节点C.R.s 1016的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源1014内的节点C.R.s 1016的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括CPU、GPU、DPU和/或其他处理器的若干节点C.R.s 1016可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
资源协调器1012可配置或以其他方式控制一个或更多个节点C.R.s1016(1)-1016(N)和/或分组的计算资源1014。在至少一个实施例中,资源协调器1012可以包括用于数据中心1000的软件设计基础设施(“SDI”)管理实体。资源协调器1012可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图10所示,框架层1020可以包括作业调度器1032、配置管理器1034、资源管理器1036和/或分布式文件系统1038。框架层1020可以包括支持软件层1030的软件1032和/或应用层1040的一个或更多个应用1042的框架。软件1032或应用1042可分别包含基于网络的服务软件或应用,例如由Amazon(亚马逊)网络服务、Google Cloud(谷歌云)和Microsoft Azure提供的那些。框架层1020可以是但不限于可以利用分布式文件系统1038进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如Apache SparkTM(下文称为“Spark”))的类型。在至少一个实施例中,作业调度器1032可以包括Spark驱动器以促进调度由数据中心1000的不同层支持的工作负荷。配置管理器1034可以能够配置不同层,诸如软件层1030和框架层1020(其包括用于支持大规模数据处理的Spark和分布式文件系统1038)。资源管理器1036可以能够管理被映射到分布式文件系统1038和作业调度器1032或被分配用于支持分布式文件系统1038和作业调度器1032的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层1010的分组的计算资源1014。资源管理器1036可与资源协调器1012协调以管理这些被映射或分配的计算资源。
在至少一个实施例中,在软件层1030中包括的软件1032可包括由节点C.R.s 1016(1)-1016(N)、分组的计算资源1014和/或框架层1020的分布式文件系统1038中的至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,在应用层1040中包括的应用1042可包括由节点C.R.s 1016(1)-1016(N)、分组的计算资源1014和/或框架层1020的分布式文件系统1038中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
在至少一个实施例中,配置管理器1034、资源管理器1036和资源协调器1012中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和类型的自修改动作。自修改动作可使数据中心1000的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
根据本文描述的一个或更多个实施例,数据中心1000可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,可以通过使用以上相对于数据中心1000描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心1000描述的资源来推断或预测信息。
在至少一个实施例中,数据中心1000可使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上文所描述的一或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推断的服务,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图9的(一个或更多个)计算设备900的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备900的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可被包括作为数据中心1000的一部分,数据中心1000的示例在本文中关于图10更详细地描述。
网络环境的组件可经由网络彼此通信,所述网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(PSTN))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
(一个或更多个)客户端设备可以包括本文关于图9所描述的(一个或更多个)示例计算设备900的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(PC),膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或设备、视频播放器、摄像机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元件的叙述应当解释为仅指一个元件或者元件组合。例如,“元件A、元件B和/或元件C”可以包括仅仅元件A,仅仅元件B,仅仅元件C,元件A和元件B,元件A和元件C,元件B和元件C,或者元件A、B和C。此外,“元件A或元件B中的至少一个”可以包括元件A中的至少一个,元件B中的至少一个,或者元件A中的至少一个和元件B中的至少一个。进一步,“元件A和元件B中的至少一个”可以包括元件A中的至少一个,元件B中的至少一个,或者元件A中的至少一个和元件B中的至少一个。
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本公开人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元件,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
Claims (24)
1.一种处理器,包括:
一个或更多个电路,用于:
至少基于使用环境中的自我机器的一个或更多个传感器生成的第一深度数据,生成表示所述环境中的所述一个或更多个传感器与一个或更多个对象之间的距离的第一地图,所述一个或更多个对象使用三维(3D)空间中的元素集来表示;
至少基于使用所述一个或更多个传感器生成的第二深度数据更新所述第一地图的所述元素集;
识别对应于由所述更新引起的所述元素集的一个或更多个变化的所述元素集的一个或更多个元素;
至少基于被识别为对应于所述一个或更多个变化的所述一个或更多个元素更新第二地图,所述第二地图表示所述元素集到所述一个或更多个对象的表面的距离;以及
至少基于所述第二地图的所述距离,使用所述第二地图执行用于控制所述自我机器的一个或更多个操作。
2.根据权利要求1所述的处理器,其中所述一个或更多个电路进一步用于:
将所述第一地图作为多个地图层中的第一一个或更多个层存储在存储器中;以及
将所述第二地图作为所述多个地图层中的第二一个或更多个层存储在所述存储器中。
3.根据权利要求2所述的处理器,其中所述多个地图层的一个或更多个中的一个或更多个元素被存储为一个或更多个块,其中所述一个或更多个块中的至少一个块是使用索引独立引用的。
4.根据权利要求1所述的处理器,其中所述一个或更多个电路进一步用于:
生成包括所述第一地图的多边形网格表示的第三地图;以及
至少基于所述多边形网格表示输出至少一个可视化网格。
5.根据权利要求4所述的处理器,其中所述一个或更多个电路进一步用于:
生成颜色集成图,所述颜色集成图包括所述第一地图在合成深度图像上的重新投影;以及
至少部分地基于使用所述颜色集成图来生成包括所述第一地图的所述多边形网格表示的所述第三地图。
6.根据权利要求5所述的处理器,其中所述一个或更多个电路进一步用于:
将所述第一地图作为多个地图层中的一个或更多个层的第一子集存储在存储器中;
将所述第二地图作为所述多个地图层中的一个或更多个层的第二子集存储在所述存储器中;
将所述第三地图作为所述多个地图层中的一个或更多个层的第三子集存储在所述存储器中;以及
将所述颜色集成图作为所述多个地图层中的一个或更多个层的第四子集存储在所述存储器中。
7.根据权利要求1所述的处理器,其中所述一个或更多个传感器包括立体相机、RGB-D相机、LiDAR传感器、单目相机、环绕相机、广角相机、鱼眼相机、远程相机、中程相机或广角相机的至少一个。
8.根据权利要求1所述的处理器,其中所述第一地图是使用包括深度图像数据和姿势数据的输入数据来计算的。
9.根据权利要求1所述的处理器,其中所述一个或更多个电路进一步用于:
执行将识别为对应于所述一个或更多个变化的所述一个或更多个元素作为输入的内核,并根据所述第一地图中指示的状态和所述第二地图中指示的状态评估被识别为对应于所述一个或更多个变化的所述一个或更多个元素的更新状态。
10.根据权利要求9所述的处理器,其中所述一个或更多个电路进一步用于:
至少部分地通过基于被识别为对应于所述一个或更多个变化的所述一个或多个元素的所述更新状态迭代地传播对所述第二地图的更新来更新所述元素集到所述一个或更多个对象的表面的距离的所述第二地图。
11.根据权利要求1所述的处理器,其中所述一个或更多个电路用于至少基于所述元素集到所述表面的所述距离计算所述自我机器避免与障碍物碰撞所行进的路径,并且所述一个或更多个操作至少基于计算的路径。
12.根据权利要求11所述的处理器,其中所述计算的路径包括通过以下至少之一的路径:
楼面空间;
环境的划定部分;
门厅;
走廊;
铺砌的道路;
未铺砌的道路;
高速公路;
车道;
停车场的一部分;
小径;
轨道;
步行道;
飞行路径;或者
跑道。
13.根据权利要求1所述的处理器,其中所述处理器包括在以下至少一项中:
自主或半自主机器的控制系统;
自主或半自主机器的感知系统;
执行模拟操作的系统;
使用机器学习生成合成数据的系统;
使用协作内容创建平台生成多维资产的系统;
执行光传输模拟的系统;
为3D资产执行协作内容创建的系统;
执行深度学习操作的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
执行对话式AI操作的系统;
生成合成数据的系统;
包含一个或更多个虚拟机(VM)的系统;
至少部分在数据中心实现的系统;或者
至少部分使用云计算资源实现的系统。
14.根据权利要求1所述的处理器,其中所述第一地图包括至少一个截断的有符号距离场(TSDF),并且所述第二地图包括至少一个欧几里得有符号距离场(ESDF)。
15.一种系统,包括:
一个或更多个处理单元,包括处理电路,用于:
至少基于使用环境中的一个或更多个传感器生成的深度数据更新第一地图的元素集,所述第一地图表示所述环境中的所述一个或更多个传感器到一个或更多个对象之间的距离,所述一个或更多个对象使用三维(3D)空间中的所述元素集表示;
至少基于一个或更多个元素被识别为对应于由所述更新引起的所述第一地图的一个或更多个变化,更新表示所述元素集与所述一个或更多个对象的一个或更多个表面之间的距离的第二地图;以及
至少基于所述第二地图的所述距离,使用所述第二地图执行用于控制所述环境中的机器的一个或更多个操作。
16.根据权利要求15所述的系统,其中所述处理电路用于执行包括姿势估计器的内核以计算姿势数据,其中对所述第一地图的所述元素集的所述更新至少部分地根据所述姿势数据来计算。
17.根据权利要求15所述的系统,其中所述第一地图包括至少一个截断的有符号距离场(TSDF),并且所述第二地图包括至少一个欧几里得有符号距离场(ESDF)。
18.根据权利要求15所述的系统,其中所述处理电路进一步用于:
将所述第一地图作为多个地图层中的一个或更多个层的第一集合存储在存储器中;以及
将所述第二地图作为所述多个地图层中的一个或更多个层的第二集合存储在所述存储器中。
19.根据权利要求15所述的系统,其中所述多个地图层中的一个或更多个地图层中的一个或更多个元素被存储为一个或更多个块,其中所述一个或更多个块中的至少一个块是使用索引独立引用的。
20.根据权利要求15所述的系统,其中所述一个或更多个处理单元包括一个或更多个图形处理单元(GPU)。
21.根据权利要求15所述的系统,其中所述一个或更多个处理单元进一步执行路径规划功能,所述路径规划功能至少基于所述元素集与所述一个或更多个表面之间的距离计算避免与障碍物碰撞的自我机器的行进路径。
22.根据权利要求15所述的系统,其中所述处理电路进一步用于至少部分地通过基于被识别为对应于所述一个或更多个变化的所述一个或更多个元素的更新状态迭代地传播对所述第二地图的更新来更新所述第二地图。
23.一种方法,包括:
使用一个或更多个并行处理单元PPU至少基于对应于一个或更多个对象的一个或多个表面的第一距离场生成成本图,所述第一距离场至少部分地基于对对应于自我机器和所述对象之间的距离的第二距离场的一个或更多个元素的一个或更多个更新来计算,所述第二距离场至少部分地基于来自所述自我机器的一个或更多个传感器的输入数据来计算。
24.根据权利要求23所述的方法,还包括至少部分地使用颜色集成图,使用所述一个或更多个PPU来生成所述第二距离场的多边形网格表示,所述颜色集成图至少部分地基于使用所述自我机器的所述一个或更多个传感器生成的传感器数据所计算的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/654,930 | 2022-03-15 | ||
US17/654,930 US20230298268A1 (en) | 2022-03-15 | 2022-03-15 | Environment reconstruction and path planning for autonomous systems and applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116795091A true CN116795091A (zh) | 2023-09-22 |
Family
ID=88035154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210934243.7A Pending CN116795091A (zh) | 2022-03-15 | 2022-08-04 | 自主系统和应用程序的环境重建和路径规划 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230298268A1 (zh) |
CN (1) | CN116795091A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117870653B (zh) * | 2024-03-13 | 2024-05-14 | 中国科学技术大学 | 一种二维差分欧几里得符号距离场地图的建立与更新方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9972125B2 (en) * | 2015-12-16 | 2018-05-15 | Google Inc. | Split tile map rendering |
WO2018126215A1 (en) * | 2016-12-30 | 2018-07-05 | DeepMap Inc. | High definition map updates |
US11127203B2 (en) * | 2018-05-16 | 2021-09-21 | Samsung Electronics Co., Ltd. | Leveraging crowdsourced data for localization and mapping within an environment |
US11573574B2 (en) * | 2018-08-30 | 2023-02-07 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, information processing system, and storage medium |
US11233937B1 (en) * | 2019-09-26 | 2022-01-25 | Amazon Technologies, Inc. | Autonomously motile device with image capture |
-
2022
- 2022-03-15 US US17/654,930 patent/US20230298268A1/en active Pending
- 2022-08-04 CN CN202210934243.7A patent/CN116795091A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230298268A1 (en) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113811886B (zh) | 自主机器应用中的路口检测和分类 | |
US11928822B2 (en) | Intersection region detection and classification for autonomous machine applications | |
US11688181B2 (en) | Sensor fusion for autonomous machine applications using machine learning | |
CN113168505B (zh) | 用于自主驾驶机器的基于回归的线检测 | |
US20230012645A1 (en) | Deep neural network processing for sensor blindness detection in autonomous machine applications | |
US20210201145A1 (en) | Three-dimensional intersection structure prediction for autonomous driving applications | |
US20230214654A1 (en) | Landmark detection using curve fitting for autonomous driving applications | |
CN113632095A (zh) | 使用适合停车位检测的倾斜多边形进行对象检测 | |
CN114155272A (zh) | 自主机器应用中的自适应目标跟踪算法 | |
CN116767245A (zh) | 使用自主系统和应用的神经网络的地图信息对象数据管理 | |
CN116051779A (zh) | 用于自主系统和应用的使用深度神经网络利用点云致密化的3d表面重建 | |
CN116048060A (zh) | 用于自主系统和应用的使用神经网络基于真实世界数据的3d表面结构估计 | |
CN116051780A (zh) | 用于自主系统和应用的使用人工智能利用点云致密化的3d表面重建 | |
US20230213945A1 (en) | Obstacle to path assignment for autonomous systems and applications | |
US20230298268A1 (en) | Environment reconstruction and path planning for autonomous systems and applications | |
CN117581117A (zh) | 自主机器系统和应用中使用LiDAR数据的动态对象检测 | |
CN116263688A (zh) | 在自主系统和应用程序中使用特征描述符绘图进行单个和跨传感器对象追踪 | |
CN116263944A (zh) | 针对自主系统和应用程序使用图像对比度分析的眩光减轻 | |
CN112970029B (zh) | 用于自主机器应用中传感器视盲检测的深度神经网络处理 | |
US20240176018A1 (en) | Sensor fusion using ultrasonic sensors for autonomous systems and applications | |
CN117516565A (zh) | 用于在自主系统和应用中导航的车道偏置 | |
CN118119981A (zh) | 用于自主系统和应用的使用机器学习的自由空间检测 | |
CN117011329A (zh) | 用于自主系统和应用的对象追踪和碰撞时间估计 | |
CN117034024A (zh) | 使用神经网络用于自主系统和应用的区域的地理空间集群 | |
CN116500619A (zh) | 用于汽车雷达感知的雷达信号采样 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |