CN115039129A - 用于自主机器应用的表面轮廓估计和***检测 - Google Patents
用于自主机器应用的表面轮廓估计和***检测 Download PDFInfo
- Publication number
- CN115039129A CN115039129A CN202080095468.7A CN202080095468A CN115039129A CN 115039129 A CN115039129 A CN 115039129A CN 202080095468 A CN202080095468 A CN 202080095468A CN 115039129 A CN115039129 A CN 115039129A
- Authority
- CN
- China
- Prior art keywords
- point cloud
- vehicle
- boundary
- data
- sensors
- 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
Images
Classifications
-
- 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
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/579—Depth or shape recovery from multiple images from motion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- 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/588—Recognition of the road, e.g. of lane markings; Recognition of the vehicle driving pattern in relation to the road
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S15/00—Systems using the reflection or reradiation of acoustic waves, e.g. sonar systems
- G01S15/88—Sonar systems specially adapted for specific applications
- G01S15/89—Sonar systems specially adapted for specific applications for mapping or imaging
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S15/00—Systems using the reflection or reradiation of acoustic waves, e.g. sonar systems
- G01S15/88—Sonar systems specially adapted for specific applications
- G01S15/93—Sonar systems specially adapted for specific applications for anti-collision purposes
- G01S15/931—Sonar systems specially adapted for specific applications for anti-collision purposes of land vehicles
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S17/00—Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
- G01S17/88—Lidar systems specially adapted for specific applications
- G01S17/89—Lidar systems specially adapted for specific applications for mapping or imaging
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S17/00—Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
- G01S17/88—Lidar systems specially adapted for specific applications
- G01S17/93—Lidar systems specially adapted for specific applications for anti-collision purposes
- G01S17/931—Lidar systems specially adapted for specific applications for anti-collision purposes of land vehicles
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S13/00—Systems using the reflection or reradiation of radio waves, e.g. radar systems; Analogous systems using reflection or reradiation of waves whose nature or wavelength is irrelevant or unspecified
- G01S13/88—Radar or analogous systems specially adapted for specific applications
- G01S13/93—Radar or analogous systems specially adapted for specific applications for anti-collision purposes
- G01S13/931—Radar or analogous systems specially adapted for specific applications for anti-collision purposes of land vehicles
- G01S2013/9323—Alternative operation using light waves
-
- 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/10016—Video; Image sequence
-
- 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/10016—Video; Image sequence
- G06T2207/10021—Stereoscopic video; Stereoscopic image sequence
-
- 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/20—Special algorithmic details
- G06T2207/20076—Probabilistic image processing
-
- 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/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- 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/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- 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/30196—Human being; Person
- G06T2207/30201—Face
-
- 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/30256—Lane; Road marking
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Traffic Control Systems (AREA)
- Image Analysis (AREA)
Abstract
在各种示例中,基于三维(3D)点云可以执行表面轮廓估计和***检测。鉴于包括可行驶自由空间的环境的一部分并且在阈值高度内,3D点云可以被过滤,以排除除行驶表面和其上的突起以外的其他对象或障碍物。3D点云可以被分析‑‑例如,使用沿纵向或其他航向的边界形状的滑动窗口‑‑以确定对应于沿行驶表面的高度的一维(1D)信号轮廓。轮廓本身可由车辆‑‑例如,自主或半自主车辆—使用以帮助导航环境,和/或轮廓可用于检测沿行驶表面的***、圆形***和/或其他突起,以及其位置、方向和几何形状。
Description
背景技术
在导航环境时,车辆--如自主车辆、半自主车辆、非自主车辆等--可能会沿运动的表面遇到扰动(如***、圆形***或其他突起,或凹陷、孔或其他空洞),如果不加以考虑,其可能会导致乘客的不舒适体验并可能导致车辆本身的磨损。例如,如果车辆在穿越行驶表面上的突起之前没有减速或进行悬架调整,则可能会对车辆的部件--如底盘、悬架、车轴、胎面、接头和/或类似部件—施加过大的力。因此,对行驶表面上的***、凹陷或其他扰动的早期检测可以有助于乘客的乘坐平稳,并延长车辆及其部件的寿命。
一些传统的***检测方法依赖于对突起的先前检测,并将这些先前检测与位置信息相关联--例如,与地图,如高清(HD)地图。然而,依赖先前的检测会带来一些挑战:扰动可能是新的,或者在其他方面可能以前没有被考虑过;扰动必须被实际检测到,这意味着不安全的条件可能存在于未映射的位置;并且位置信息的准确性问题可以导致先前检测的扰动被不准确地识别,从而导致扰动被过早或过晚地考虑。
其他传统的方法依赖经训练的预测行驶表面中的***的发生和位置的深度神经网络(DNN)。然而,DNN不仅需要大量的相关训练数据以收敛到一个可接受的准确度,而且还需要适当的标签和真值信息来做到这一点。此外,DNN必须严重依赖正在处理的数据--例如图像—以确定环境中***的发生和位置。因此,并且由于行驶表面中的扰动经常与行驶表面混合在一起,或以其他方式难以从视觉上区分(例如,减速带可能与周围行驶表面的颜色相同或相似,由于缺乏背景或对比等,使用应用于DNN的单一二维(2D)图像可能难以确定扰动的曲率),训练DNN以准确和持续地预测扰动的发生和位置--除了其几何形状和方向以外--是一项困难的任务。例如,由于扰动的几何形状和方向可能难以使用基于图像的DNN来预测,因此确定对车辆进行必要的调整(例如,减速、放松悬架等)以考虑扰动可能证明是具有挑战性的,从而导致与那些***检测类似的问题的任务是减轻--例如,乘客的不舒适体验以及对车辆及其部件的损坏。
发明内容
本公开的实施例涉及自主机器应用的表面轮廓估计和***检测。公开的***和方法分析了三维(3D)点云,以确定表面轮廓,以及确定沿环境中的表面的扰动的发生、位置、方向和/或几何形状。例如,通过准确识别、定位和确定表面的***、圆形***、凹陷、孔和/或其他扰动的几何形状,车辆--如自主或半自主车辆(例如,采用一个或更多个高级驾驶辅助***(ADAS)--可以通过减速和/或调整悬架***的参数来考虑扰动。此外,使用确定的表面轮廓,车辆可以通过考虑视觉完整性的差距来更安全、更谨慎地在环境中导航--例如,在道路从斜坡急剧弯曲到下降,从而在顶点之外产生一个盲区的情况下,可以决定让车辆减速,直到顶点之外的视觉表面变得可见。
与传统***(如上述那些***)相比,本公开的***和方法使用来自车辆的一个或更多个传感器的传感器数据生成三维点云。例如,来自图像传感器--例如单目相机的--的图像序列可以使用运动结构(SfM)技术进行分析,以生成3D点云。3D点云可用于在距行驾驶表面的阈值高度内确定表面轮廓。在一些实施例中,为了提高准确度并降低计算成本,可以使用补充数据(例如与行驶表面相对应的车道轮廓、与行驶表面相对应的地平面的估计位置和/或可驾驶自由空间信息)过滤掉或忽略3D点云中的至少一些点。一旦3D点云中的剩余点被确定,边界形状的滑动窗口就可以沿纵向或表面轮廓的其他方向(例如使用车道轮廓或道路曲率信息确定的方向)以增量迭代,以生成对应于表面轮廓的一维(1D)信号。因此,这些1D信号可用于确定行驶表面的轮廓和/或识别***、圆形***或其他扰动。例如,沿1D信号的局部最大值可以被识别并与阈值高度值相比较,以确定扰动的发生,并且3D点云、1D信号和/或其他生成的信息可以被用于确定扰动的位置、方向和/或几何形状,以供车辆在执行一个或更多个操作时使用。
由于使用3D点云--在实施例中使用SfM生成--可以更准确地预测行驶表面上扰动的几何形状和方向,因为可以分析具有不同扰动角度的多个图像以考虑到计算中。因此,与依赖基于单个图像的DNN的传统方法相比,可以确定更多的对比度和上下文--导致更有效地检测和考虑行驶表面上的***、圆形***、凹陷、孔和其他扰动。此外,由于该过程适用于实时或接近实时的部署,因此避免了一些传统***的事先检测和映射的要求,从而允许车辆在以前没有映射的位置行驶,同时仍然考虑表面轮廓。
附图说明
下面参照附图详细描述用于自主机器应用的表面轮廓估计和***检测的本***和方法,其中:
图1是根据本公开的一些实施例的用于表面轮廓估计和表面扰动检测的过程的数据流图;
图2是根据本公开的一些实施例的使用三维(3D)点云来估计表面轮廓和检测表面扰动的示例可视化;
图3A是根据本公开的一些实施例的3D点云和从其产生的地平面估计的示例图示;
图3B是根据本公开的一些实施例的对应于从3D点云确定的高度的热图的示例图示;
图3C是根据本公开的一些实施例的一维(1D)表面轮廓的示例图示;
图3D是根据本公开的一些实施例的检测区域内的点高度的示例柱状图;
图4-5是根据本公开的一些实施例的显示用于表面轮廓估计和表面扰动检测的方法的流程图;
图6A是根据本公开的一些实施例的示例性自主车辆的图示;
图6B是根据本公开的一些实施例的图6A的示例性自主车辆的相机位置和视野示例;
图6C是根据本公开的一些实施例的图6A的示例性自主车辆的示例***架构的框图;
图6D是根据本公开的一些实施例的一个或更多个基于云的服务器与图6A的示例性自主车辆之间通信的***图;
图7是适合用于实施本公开的一些实施例的示例计算设备的框图;以及
图8是适合用于实施本公开的一些实施例的示例数据中心的框图。
具体实施方式
公开了与自主机器应用的表面轮廓估计和表面扰动检测有关的***和方法。尽管本公开可以关于示例性自主车辆600(或者在本文中称为"车辆600"、"自我车辆600"或"自我车辆600",关于图6A-6D描述了其示例)进行描述,这并不旨在限制性的。例如,本文描述的***和方法可用于但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶辅助***(ADAS)中)、机器人、仓库车辆、越野车、飞行船、船、穿梭机、应急车辆、摩托车、电动或机动自行车、飞机、建筑车辆、水下飞船、无人机和/或其他车辆类型。此外,尽管本公开可以关于自主驾驶或ADAS***进行描述,但这并不旨在是限制性的。例如,本文描述的***和方法可用于模拟环境(例如,在模拟世界中测试转向、加速/减速、悬架调整或其他操作),用于有人驾驶或无人驾驶的机器人和机器人平台、航空***、船艇***和/或其他技术领域,例如用于感知、世界模型管理、路径规划、避障和/或其他过程。
现在参考图1,图1是根据本公开的一些实施例的用于表面轮廓估计和表面扰动检测的过程100的数据流图。为了举例和说明的目的,图1可以在本文中就图2和3A-3D进行描述;然而,这并不意味着是限制性的。作为非限制性的实施例,该过程100可以使用自主车辆--如本文所述的自主车辆600--来实现。在一些实施例中,该过程100的部分或全部可以使用计算设备和/或其部件来实现,该计算设备和/或部件可以类似于本文所述的示例计算设备700的那些。例如,在不限制的情况下,自由空间过滤器106、点云生成器104、点云增密器108和/或过程100内的其他部件或模块可以使用本文关于自主车辆600和/或示例计算设备700所述的一个或更多个部件、特征或功能来执行。在一些实施例中,并且在不偏离本公开的范围的情况下,为了执行过程100,可以使用除本文针对自主车辆600和/或示例计算设备700描述的那些之外的附加和/或替代部件、特征和/或功能。
过程100可以包括从一个或更多个传感器--例如车辆600的传感器--生成和/或接收传感器数据102。传感器数据102可由车辆600或另一***使用以生成点云,该点云可用于预测表面轮廓--例如包括一个或更多个扰动的道路表面轮廓--和/或预测扰动的位置、几何形状和/或方向。在一些实施例中,传感器数据102可以包括但不限于来自车辆600(和/或其他车辆、机器或物体,在一些示例中,例如机器人设备、水船、飞机、火车、建筑设备、VR***、AR***等)的任何传感器的传感器数据102。对于一个非限制性示例,例如在生成传感器数据102的传感器被布置在车辆上或以其他方式与车辆相关联的情况下,传感器数据102可以包括由但不限于由全球导航卫星***(GNSS)传感器658(例如,全球定位***传感器)、雷达传感器660、超声波传感器662、激光雷达传感器664、惯性测量单元(IMU)传感器666(例如,加速计、陀螺仪、磁罗盘、磁力计等)、麦克风696、立体相机668、广角相机670(例如,鱼眼相机)、红外相机672、环绕相机674(例如,360度相机),远程和/或中程相机698,速度传感器644(例如,用于测量车辆600的速度),和/或其他传感器类型生成的数据。尽管本文主要参考了与用于运动结构(SfM)计算的图像数据和/或其他传感器数据对应的传感器数据102,但这并不意味着是限制性的,并且传感器数据102可以替代地或额外地由车辆600、另一车辆和/或另一***(例如,模拟环境中的虚拟车辆、机器人***、无人机***等)的任何传感器生成。
在一些示例中,传感器数据102可以包括由一个或更多个前置传感器、侧视传感器和/或后视传感器生成的传感器数据。该传感器数据102可用于确定表面轮廓和/或用于识别、检测、分类和/或确定沿表面的扰动(例如,***、圆形***、凹陷、孔、碎片等)的几何形状和/或方向。在实施例中,可以使用任何数量的传感器以包含多个视场(例如,图6B的远程相机698、前置立体相机668和/或前置广视角相机670的视场)和/或(例如,激光雷达传感器664、雷达传感器660等的)传感场。然而,在一些非限制性的实施例中,传感器数据102可以由单个单目相机捕获作为随时间变化的图像序列。例如,当车辆600沿着行驶表面行驶时,单个单目相机可以捕获可由传感器数据102表示的图像序列,并且该图像序列可以由点云生成器104(例如,使用SfM算法)使用以生成点云。
在一些实施例中,传感器数据102也可由自由空间过滤器106使用,以过滤掉传感器数据102和/或由其生成的点云的部分。自由空间过滤器106可以包括计算机视觉算法、对象检测算法和/或深度神经网络(DNN)。例如,在一些非限制性的实施例中,自由空间过滤器106可以使用类似于2019年3月15日提交的美国专利申请第16/355,328号中所描述的***、方法、特征和/或功能,并在此通过引用将其全文并入。自由空间过滤器106可用于过滤掉图像中的对应于图像所代表的环境中的非行驶或不可穿越的空间的部分,和/或从点云中过滤掉对应于非行驶或不可穿越的空间的部分或点的子集。作为一个示例,并且就车辆600而言,自由空间过滤器106可以过滤掉或以其他方式使***忽略环境中车辆600非行驶或不可穿越的的部分。例如,人行道、建筑物、其他车辆、行人、自行车手、动物、树木和/或环境的其他部分可以通过***使用自由空间过滤器106被过滤掉或忽略,而行驶表面--例如,道路、车道、停车场、行驶道等--可以保留,以便进一步分析行驶表面轮廓和/或行驶表面上的扰动。
作为一个示例,并就图2的可视化200而言,车辆600可以使用一个或更多个传感器--例如单个单目前置相机—来捕捉车辆600穿越行驶表面202时的环境图像。在实施例中除了其他传感器数据102以外,还可以使用这些图像来过滤掉图像和/或点云204中不对应于行驶表面202的部分。自由空间过滤器106可以计算相对于每个图像(例如,在二维(2D)图像空间)和/或其中表示的环境(例如,在3D世界空间中)的自由空间边界212的位置。例如,在可视化200中表示的自由空间边界212可以沿着行驶表面202延伸,并将行驶表面202与人行道214、车辆210、树木216、山脉218、开放区域220、天空222等分开。然后,自由空间边界212可用于过滤掉图像空间中自由空间边界212以外的图像的像素(然后可将点云204生成仅裁剪或聚焦在自由空间边界212内的图像的部分上),和/或过滤掉世界空间和/或相对2D图像空间中自由空间边界212以外的点云204的点(例如,3D点云位置可相对2D图像空间进行转换)。在任一示例中,自由空间过滤器106最终可用于生成仅在车辆600的可行驶自由空间内的点云204。
再次参考图1,点云生成器104可以生成点云--例如,3D点云--以表示空间中的对象位置。在实施例中,点云生成器104可以使用SfM算法以从传感器数据102生成点云。然而,这并不意味着是限制性的,并且在其他实施例中,点云可以从激光雷达传感器、雷达传感器、超声波传感器和/或其他传感器或其组合使用其他点云生成算法生成。
在使用SfM的实施例中,传感器数据102可以包括由一个或更多个图像传感器生成和/或从其接收的图像数据。例如,一个或更多个相机可用于从不同的角度捕捉环境--以及其中的特定对象--的图像,以便使用SfM准确地生成点云。在一些实施例中,这可能包括具有不同视点或视野的多个相机--例如车辆600、另一车辆、机器人、另一移动对象、静止对象等的两个或更多个相机。在至少一个实施例中,可以使用单一的单目相机--如图6B中示出的车辆600的广角相机670--其中不同的视点和视角可以通过相机捕获的图像序列来捕获,因为与相机相关联的对象在空间中移动。在这样的实施例中,通过使用单一相机,可以节省计算、带宽和硬件资源,同时仍然产生准确和可靠的结果,因为与单一相机相关的对象的运动提供了足够的对象视角的多样性,以便能够进行准确的SfM计算。例如,如果没有专门的设备--如立体相机--SfM可以使用来自单一相机的多张图像,这些图像描述了具有高度重叠的区域或对象,以生成点云。
SfM算法可用于从一系列2D图像或2D图像序列中生成3D点云--或场景的结构。SfM可以使用多个图像--由传感器数据102表示--来识别图像中的匹配特征或点。这些特征可以包括图像中的角、边缘、线段、点和/或其他独特的特征。例如,可以在每张图像或第一张图像中识别特征,然后在其他图像中搜索以确定匹配。匹配的特征可以跨系列或序列内的图像被追踪,以生成对相机位置、方向和特征坐标的估计。例如,可以计算和/或确定相机位置(例如,从其他传感器数据102),以及3D点位置,使得相应的观察光线相交。最终结果是一个点云,其中每个点代表一个3D坐标(x,y,z)。3D点云可以在相对的2D图像空间坐标系中表示或生成,也可以生成或与3D世界空间坐标系对齐--例如,使用地面控制点(GCP)或地理参考图像。
例如,并参考图2的可视化200,当车辆600沿行驶表面202移动时,车辆600可以从一个或更多个相机捕获图像,并且可以使用SfM分析这些图像以生成点云204。点云204可以包括对应于行驶表面202和/或其上的一个或更多个***224(例如,***224A和224B,其可以是减速带、起伏、道路中的不完善等)的点。虽然在图2中没有示出,但点云204可以延伸到环境的其余部分--例如,延伸到车辆210、人行道214等--在用于生成点云204的图像和/或点云204本身没有使用自由空间过滤器106过滤的实施例中。在其他实施例中,如本文所述,点云204可以使用另一种技术生成,例如使用从激光雷达传感器生成的点云。
作为另一个示例,并参考图3A,图300表示3D空间中的点云302。当图300表示行驶表面的图像时--如图2的行驶表面202--点云302中的点可以对应于行驶表面和其上的突起(和/或车辆、行人或环境中的其他对象和特征)。环绕区域304可以对应于点云302中的一个位置,其中3D点的高度指示突起(例如,相对于估计的地平面306)。
再次参考图1,点云增密器108可以对由点云生成器104生成的点云执行增密。例如,由于点云可能包括稀疏点,所以点云增密器108可以使用增密函数来增加由点云生成器104生成的稀疏点云的密度。对于一个非限制性的示例,点云增密器108可将最小二乘模板匹配(LSTM)用于增密过程。点云增密器108可以接收或使用传感器数据102作为输入来执行增密,并且输出可以由点云生成器104使用来生成点云。
平面拟合器110可以使用3D点云来确定估计的平面--例如,地平面。例如,当识别表面上的突起时,将地平面作为参考平面可有助于这种识别。例如,对于沿道路或其他行驶表面行驶的车辆--如车辆600--来说,估计与行驶表面的平面相对应的地平面可有助于作为用于确定点云点相对于地平面的高度的参考(例如,z方向或高度原点(例如,(x,y,0))。在这样的示例中,在点云点高于阈值的情况下--以及在实施例中低于阈值的情况下--点云点可被确定为对应于沿着行驶表面的突起。在一些示例中,平面拟合器110可以使用一个或更多个函数来确定使用点云数据的平面位置和方向。例如,可以使用随机样本共识(RANSAC)来确定平面。作为一个示例,并再次参考图3A,点云302可以被分析,以计算或确定2D图像空间和/或3D世界空间中的地平面306。
在一些非限制性的实施例中,除了或替代地生成地平面,可以确定表面--例如,行驶表面。例如,在一些实施例中,由平面拟合器110确定的平面可以作为行驶表面。在其他实施例中,可以使用传感器数据102(例如,来自速度传感器644、IMU传感器666等)跟踪对象(例如车辆600)的运动,并且可以从该数据确定相对于对象的表面的位置。在这样的示例中,之后为表面轮廓计算的高度或其他尺寸可以相对于行驶表面计算。在一些实施例中,地图--如GPS地图、HD地图等--可用于确定对象的表面的位置。例如,在HD地图中,表面位置可以是已知的,因此这个信息可以被用于计算表面轮廓--在地图中对对象进行定位后。在任何示例中,平面、对象的运动、地图和/或关于表面的另一个信息源可用于确定在哪里定位边界形状(例如,确定边界形状沿表面的底部边缘的位置),用于确定表面位置以计算相对于和/或用于与轮廓生成有关的其他目的的高度。
热图可视化器112可用于生成相对于参考的点云的可视化。例如,参考可以是使用平面拟合器110确定的平面,也可以是另一个参考--如对象、区域等。作为一个示例,并且关于图3A-3B,鉴于点相对于平面(如地平面306)的高度,可使用点云来生成热图310。例如,如果热图310被叠加到图2的行驶表面202上,区域312A和312B可以分别对应于***224A和224B。在这样的示例中,地平面306可以对应于行驶表面202的对应于***224A和224B的区域之外的行驶表面。在一个示例中,热图310可以提供点云的可视化,以帮助理解或可视化关于点云的所需特征或方面--在这个示例中,突起的位置。
1D信号搜索器114可以使用点云计算或确定1D信号。在一些实施例中,1D信号可以表示点云中的对应于表面的点的高度--例如,沿z方向。例如,1D信号可以表示表面的表面轮廓,其可以包括表面突起和/或空腔。为了生成1D信号,在实施例中,边界形状(例如,框、正方形、圆形、矩形、三角形、球体、立方体、椭圆、多边形等)的滑动窗口可以被应用于点云--例如,整个点云或已使用自由空间过滤器106过滤或截断的点云。参照表面,边界形状的滑动窗口可沿对象的行进方向、对象的航向和/或沿由道路轮廓(如车道轮廓)确定的纵向方向分量而被应用。在使用道路轮廓或车道轮廓的情况下,车道通知器122可以生成轮廓和/或提供轮廓给1D信号搜索器114,以确定边界形状在滑动窗口内沿点云的位置。例如,车道通知器122可以参考GNSS***、GPS***、高清(HD)地图和/或另一个源来确定车道或表面的其他离散部分的位置、数量和/或几何形状。在任何实施例中,一旦确定了边界形状的滑动窗口的位置和方向性,滑动窗口就可以被应用于点云以生成1D表面轮廓。
沿着横向方向--例如,沿着行驶表面从左到右--多个滑动窗口可以以一定的间隔(例如,每十厘米(cm)、每二十cm、每五十cm等)隔开,并且沿着每个滑动窗口,边界形状可以以一定的间隔(例如,每五cm、每二十cm、每五十cm等)隔开。在一些实施例中,相邻滑动窗口的边界形状可以重叠,而在其他实施例中,边界形状可以不重叠。参照行驶表面的车道或其他离散部分,在每个车道或其他离散部分内可以应用一个或更多个滑动窗口。对于一个非限制性的示例,如果滑动窗口与质心或相应的边界形状间隔50厘米,那么一个两米的车道可以包括四个滑动窗口。在类似的示例中,如果滑动窗口相对于相应边界形状的质心间隔两米,那么同一车道可能只包括单个边界形状。在一些示例中,滑动窗口可能只在可行驶的自由空间内被应用--这可能是点云已经使用自由空间过滤器106进行过滤或截断的结果,或者可能是自由空间过滤器106用于通知滑动窗口沿点云的位置的结果。
边界形状的尺寸、滑动窗口内边界形状的间隔以及滑动窗口的间隔可以是1D信号搜索器114的可定制参数。例如,边界形状的宽度、高度和/或深度可以根据1D信号搜索器114正在用于的环境的对象或特征进行调整。在正在确定表面轮廓--例如道路表面轮廓--的示例中,边界形状可以有一个高度,该高度是在突起类型(例如,减速带、起伏、由树根引起的圆形***等)的最大确定高度附近。在一个或更多个实施例中,该高度可以是考虑其他表面扰动类型(如凹陷、孔洞等)的绝对高度。因此,点云中高于阈值高度的点可能不会被考虑在内,从而将其他对象如车辆、动物、人等从1D轮廓中移除。类似地,边界形状的宽度可以考虑整个表面的变化而被调整。例如,在表面有更恒定变化的情况下,边界形状沿横向的宽度可以更小,并且滑动窗口的数量和间距可以增加(例如,每条车道有三到六个滑动窗口实例)。作为另一个示例,在表面具有较少恒定变化(例如,水泥道路)的情况下,边界形状的宽度可以更大,并且滑动窗口的数量和间距可以减少(例如,每条车道有一至三个滑动窗口实例)。可以对室内环境(例如,走廊、开放空间等)或越野环境(例如,人行道、草地/泥土区域等)进行类似的确定。
作为一个示例,并再次参考图2,边界形状206的滑动窗口可以沿行驶表面202应用于点云204。滑动窗口的方向(例如,第一滑动窗口可以包括边界形状206A-1到206A-N,其中N是给定滑动窗口的边界形状的数量,第二滑动窗口可以包括边界形状206B-1到206B-N,等等)可以相对于车辆600的航向或行驶方向和/或可以相对于行驶表面202的道路轮廓--例如车道226(例如,图2的可视化中的车道226A-226D)的已知轮廓(例如几何形状、位置等)。例如,如图2所示,边界形状的滑动窗口可以沿每条车道延伸。虽然相对于每条车道226仅示出了一个边界形状的滑动窗口,但这并不旨在是限制性的,并且如本文所述,任何数量的滑动窗口可以与每条车道(或表面或环境的其他离散部分)相关联。
可以分析点云的沿每个滑动窗口在每个边界形状内的点,以确定相对于边界形状的值。在一些示例中,该值可以是高度值,尽管这并不旨在是限制性的。鉴于要获得的值,可以对每个边界形状内的点进行分析。分析可以包括对这些点应用聚类算法。例如,RANSAC聚类算法可被用来确定每个边界形状内的值。在高度值是要确定的值的情况下,可以执行相对于边界形状内的点的高度分析(平均数、均值、最大值等),以得出要用于关于边界形状的1D信号的值。一旦为沿滑动窗口的每个边界形状确定了值,对应于每个边界形状的值就可用于--例如,组合--以形成1D轮廓。如本文所述,1D轮廓可以表示沿表面的高度轮廓--如行驶表面。在一些示例中,每个边界形状的1D值可以被表示为一个点,并且每个边界形状的点可以共同形成多点,这些多点可以被连接以形成表示1D轮廓的折线。因此,在一些实施例中,多点之间的连接可以是直线连接,而在其他实施例中,可以使用曲线拟合算法来形成点之间的折线连接,该折线连接可以是线性的或弯曲的。
再次参考图2,关于滑动窗口中的每个边界形状206的计算结果可以是对应于行驶表面202的高度轮廓的表面轮廓208(例如,表面轮廓208A-208D--在实施例中,相对于地平面。因此,如图2所示,边界形状206的单个滑动窗口可与每个车道226相关联,并且作为结果,可为每条车道生成单个表面轮廓208。然而,这并不旨在是限制性的,并且表面轮廓208E和208F示出了可为单个车道226A生成的附加表面轮廓208。在这样的示例中,每个表面轮廓208E和208F还可以包括边界形状(未示出)的相应滑动窗口以生成表面轮廓208。
再次参考图1,***检测器116可用于检测沿1D表面轮廓的***、凹陷或其他突起或空腔。例如,1D轮廓的形状或轮廓的变化可以与***轮廓相比较,和/或区域的高度可以与阈值高度相比较,以确定是否存在***(或其他道路表面扰动)。关于图3D,沿1D表面轮廓的***区域的***轮廓由直方图表示。沿着直方图的每个增量可以表示与边界形状的滑动窗口内的边界形状相对应的确定高度值--例如,直方图包括十个增量,这十个增量可能与来自十个边界形状的值有关。在一些示例中,一旦检测到***区域,并且类似于上述对表面轮廓生成的描述,***轮廓可以使用曲线拟合算法或用于创建更可能表示实际突起的更平滑曲线的另一种算法来生成。在一些示例中,***区域内的局部最大值(或最小值)可用于生成***轮廓,使得局部最大值(或最小值)可定义***轮廓的绝对峰/谷或顶点/最低点。
作为一个示例,并关于图3C,边界形状324的滑动窗口(例如,滑动窗口324A-324G)可用于生成对应于表面--例如行驶表面--表面轮廓326(例如,326A-326G)。表面轮廓单独和组合地可包括指示行驶表面中的某种突起的***区域328(例如,***区域328A-328B)。
再次参考图1,几何形状估计器可用于估计沿表面的***、凹陷或其他突起和道路表面扰动的几何形状。例如,如上文关于***检测器116和/或1D信号搜索器114的描述,可以线性地和/或使用曲线拟合算法生成折线,以定义沿纵向的***轮廓。一旦为每个单独的1D信号确定了***轮廓,两个或更多个的1D信号可以结合使用以确定***的方向、长度和/或其他几何特征。例如,再次参考图3C,可以分析每个表面轮廓326的***区域328A和328B,以确定它们是否与类似或不同的***有关。在图3C的示例中,可以确定每个表面轮廓326A-326G的***区域328A与相同的***有关,并且类似地用于***区域328B。因此,由于表面轮廓326的横向和纵向位置是已知的(例如,从SfM计算和/或用于生成传感器数据102的传感器的传感器参数),所以可以确定由***区域328A和328B定义的***的方向和位置。在图3C的图示中,沿***区域328的虚线可以指示***或其他突起相对于对象(如车辆600)的航向的方向。除了方向之外,可以使用从点云中生成的***轮廓来估计几何形状。
几何形状估计器118和/或1D信号搜索器114的输出可以被传送、发送或以其他方式提供给对象的控制部件120,例如车辆600、另一车辆、机器人、模拟车辆等。例如,表面轮廓和/或***位置、方向和/或几何形状可能对对象在环境中导航有用。对于车辆--例如车辆600--表面轮廓和/或***信息可用于更新世界模型,规划沿行驶表面的路径,为车辆生成用于转向、加速、制动、调整悬架等的控制信号,用于致动控制以基于控制信号执行控制,用于避免障碍物或碰撞,和/或用于执行关于车辆的一个或更多个操作。例如,在已知表面轮廓的情况下,可以确定行驶表面轮廓的急剧变化(例如在山的顶点上能见度较低的起伏山丘),并且车辆可以因此减速,以考虑轮廓以外的任何看不见的环境条件。作为另一个示例,在已知***轮廓、位置、方向和/或其他信息是***、凹陷或其他表面扰动的情况下,车辆可以减速和/或调整悬架以减少对乘客的干扰和/或减少对车辆部件的磨损。在知道了方向的情况下,车辆可以调整航向以正面穿过扰动,或以期望的角度等等。此外,方向可能有助于确定要减速多少,以什么速度穿过扰动和/或应将悬架调整到什么程度。
作为一个示例,并就图2而言,车辆600可以接收表面轮廓208和/或与***224A相对应的***/凹陷信息。通过了解表面轮廓和***轮廓,车辆600可以确定减速,调整悬架,和/或在车厢内提供触觉、视觉和/或听觉信号,以指示***或凹陷正在到来和/或表面轮廓已经导致车辆降速。通过执行这些操作中的一个或更多个,车辆600中的乘客可以体验到更平稳的体验,并且可以被提醒到(例如)***和/或表面轮廓,以便为穿越它们做准备--例如,通过抓紧或密切监视开口的液体容器,保护儿童或动物等。
图4-5是显示了根据本公开的一些实施例的用于表面轮廓估计和表面扰动检测的方法的流程图。
现在参考图4-5,本文描述的方法400和500的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各种功能可以通过处理器执行存储在存储器中的指令来执行。方法400和500也可以体现为存储在计算机存储介质上的计算机可使用指令。方法400和500可以由独立的应用程序、服务或托管服务(独立的或与另一托管服务的组合)或另一产品的插件提供,仅举几例。此外,方法400和500是以示例的方式,针对图1的过程100而描述的。然而,这些方法可以另外或替代性地由任何一个***,在任何一个过程中,或***和过程的任何组合来执行,包括但不限于本文所述的那些。
现在参考图4,图4是显示根据本公开的一些实施例的用于表面轮廓估计和表面扰动检测的方法400的流程图。在方框B402,方法400包括至少部分地基于由一个或更多个传感器生成的传感器数据来生成3D点云。例如,点云生成器104可以使用传感器数据102生成3D点云。
在方框B404,方法400包括通过从3D点云中过滤掉位于自由空间边界之外的点的子集来确定3D点云的经过滤的点子集。例如,可以使用自由空间过滤器来过滤掉3D点云中位于自由空间边界之外的点--要么通过过滤掉这些点本身,要么通过在生成自由空间边界时忽略传感器数据102自由空间边界之外的部分。
在方框B406,方法400包括确定表面的表面信息。例如,使用平面拟合器110、对象的运动(例如,车辆600的运动)、地图和/或另一种方法,可以确定诸如行驶表面的高度、位置、曲率等的表面信息。
在方框B408,方法400包括沿3D点云的经过滤子集以间隔的方式应用边界形状的迭代。例如,1D信号搜索器114可以沿3D点云应用边界形状的滑动窗口,并且可以使用表面信息来确定在哪里定位边界形状。
在方框B410,方法400包括,对于边界形状的每次迭代,确定相对于表面的高度。例如,对于沿着滑动窗口的每次边界框迭代,可以相对于表面确定高度值--例如,相对于由平面拟合器110确定的平面--如使用表面信息确定的。
在方框B412,方法400包括生成1D表面轮廓。例如,来自沿滑动窗口的边界形状的迭代的(例如,绝对的)高度可被用于确定1D表面轮廓。
在方框B414,方法400包括至少部分地基于1D表面轮廓执行一个或更多个操作。例如,使用1D表面轮廓,可以确定突起的位置、方向和/或几何形状,可以作出控制决定,和/或可以执行其他操作。
现在参考图5,图5是显示了根据本公开的一些实施例的用于表面轮廓估计和表面扰动检测的方法500的流程图。在方框B502,方法500包括接收表示由车辆的单目相机捕获的图像序列的图像数据。例如,图像数据--例如,传感器数据102--可以由车辆的单目相机--例如车辆600的单个单目相机--捕获。
在方框B504,方法500包括确定对应于可行驶自由空间的图像数据的部分。例如,自由空间过滤器106可用于确定对应于可行驶自由空间和非可行驶空间的图像数据的部分。
在方框B506,方法500包括至少部分地基于图像数据,使用运动结构(SfM)算法生成3D点云。例如,点云生成器104可以使用SfM算法以从传感器数据102(在实施例中,其可以表示图像序列或一系列图像)生成3D点云。
在方框B508,方法500包括确定对应于行驶表面的行驶表面信息。例如,使用平面拟合器110、对象的运动(例如,车辆600的运动)、地图和/或另一种方法,可以确定诸如行驶表面的高度、位置、曲率等的表面信息。
在方框B510,方法500包括确定沿行驶表面的纵向方向分量。例如,车辆的航向、车辆的方向和/或来自车道通知器122的车道轮廓可被用于确定沿该表面的方向分量。
在方框B512,方法500包括沿纵向方向分量应用边界形状的滑动窗口。例如,边界形状的滑动窗口可以由1D信号搜索器沿纵向方向分量应用--该分量可以是直线、曲线或其组合,取决于实施例和用于确定纵向方向分量的信息。
在方框B514,方法500包括对于每次迭代,计算相对于行驶表面的至少一个高度值。例如,对于沿滑动窗口的每个边界形状,可以使用3D点云计算高度值,其中高度可以是相对于行驶表面的绝对高度,如使用平面拟合器110、地图、车辆600的运动和/或另一种方法确定的。
在方框B516,方法500包括至少部分地基于来自滑动窗口的每次迭代的至少一个高度值来生成表面轮廓。例如,表面轮廓可以由1D信号搜索器生成。
在方框B518处,方法500包括由车辆至少部分地基于表面轮廓而执行一个或更多个操作。例如,使用表面轮廓,可以确定突起的位置、方向和/或几何形状,可以做出控制决定(例如,减速、避免***、调整悬架等),和/或可以执行其他操作。
自主车辆的示例
图6A是根据本发明的一些实施例的示例性自主车辆600的图示。自动驾驶车辆600(或者在本文中称为“车辆600”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、第一响应车辆、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、施工车辆,水下航行器、无人机和/或其他类型的交通工具(例如,无人驾驶和/或容纳一名或更多名乘客的交通工具)。自动驾驶车辆通常按照自动化水平进行描述,由美国交通部下属的国家公路交通安全管理局(NHTSA)定义,以及美国汽车工程师学会(SAE)“道路机动车辆驾驶自动化***相关术语的分类和定义”(标准编号:J3016-201806,于2018年6月15日发布,标准编号:J3016-201609,于2016年9月30日发布,以及本标准的先前和未来版本)。车辆600可以根据自动驾驶级别的3级至5级中的一个或更多个实现功能。例如,根据实施例,车辆600可以具有条件自动化(级别3)、高自动化(级别4)和/或全自动化(级别5)。
车辆600可包括底盘、车身、车轮(例如,2、4、6、8、18等)、轮胎、车轴和车辆的其他部件。车辆600可包括推进***650,例如内燃机、混合动力发电厂、全电动发动机和/或其他推进***类型。推进***650可连接至车辆600的传动系,该传动系可包括变速器,以实现车辆600的推进。推进***650可响应于接收来自节流阀/加速器652的信号进行控制。
当推进***650运行时(例如,当车辆运动时),可使用包括方向盘的转向***654来引导车辆600(例如,沿着所需路径或路线)。转向***654可以接收来自转向致动器656的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器***646可用来响应于从制动致动器648和/或制动传感器接收到的信号而操作车辆制动器。
一个或更多个控制器636可包括一个或更多个片上***(SoC)604(图6C)和/或一个或更多个GPU,可向车辆600的一个或更多个部件和/或***提供信号(例如,代表命令)。例如,一个或更多个控制器可通过一个或更多个制动致动器648发送信号以操作车辆制动器,通过一个或更多个转向致动器656操作转向***654,通过一个或更多个油门/加速器652操作推进***650。一个或更多个控制器636可包括一个或更多个车载(例如,集成)计算设备(例如,超级计算机),其处理传感器信号,并输出操作命令(例如,表示命令的信号),以启用自动驾驶和/或协助人类驾驶员驾驶车辆600。一个或更多个控制器636可包括用于自动驾驶功能的第一控制器636、用于功能安全功能的第二控制器636、用于人工智能功能的第三控制器636(例如,计算机视觉),用于信息娱乐功能的第四控制器636,用于紧急情况下冗余的第五控制器636,和/或其他控制器。在一些示例中,单个控制器636可处理上述功能中的两个或更多个,两个或更多个控制器636可处理单个功能和/或其任何组合。
一个或更多个控制器636可提供用于控制车辆600的一个或更多个部件和/或***的信号,以响应从一个或更多个传感器接收的传感器数据(例如,传感器输入)。传感器数据可从例如但不限于一个或更多个全球导航卫星***传感器658(例如,一个或更多个全球定位***传感器)、一个或更多个雷达传感器660、一个或更多个超声波传感器662、一个或更多个激光雷达传感器664、一个或更多个惯性测量单元(IMU)传感器666(例如,一个或更多个加速计、一个或更多个陀螺仪、一个或更多个磁罗盘)接收,磁强计等)、一个或更多个麦克风696、一个或更多个立体相机668、一个或更多个广角相机670(如鱼眼相机)、一个或更多个红外相机672、一个或更多个环绕相机674(如360度相机)、一个或更多个远程和/或中频相机698、一个或更多个速度传感器644(如用于测量车辆600的速度)、一个或更多个振动传感器642、一个或更多个转向传感器640、一个或更多个制动传感器(例如,作为制动传感器***646的一部分)和/或其他传感器类型。
控制器636中的一个或更多个可以从车辆600的仪表组632接收输入(例如,由输入数据表示),并通过人机接口(HMI)显示器634、音频信号器、扬声器等和/或通过车辆600的其他部件提供输出(例如,由输出数据表示、显示数据等)。输出可包括诸如车辆速度、速率、时间、地图数据(例如,图6C的HD地图622)、位置数据(例如,车辆600的位置,例如地图上的位置)、方向、其他车辆的位置(例如,占用网格)等信息,一个或更多个控制器636感知到的关于对象和对象状态的信息等。例如,HMI显示器634可以显示关于一个或更多个对象存在的信息(例如,街道标志、警告标志、交通灯改变等),和/或关于车辆已进行、正在进行、或将进行的驾驶操作的信息(例如,现在换车道,两英里后从34B出口驶出等)。
车辆600还包括网络接口624,其可使用一个或更多个无线天线626和/或调制解调器通过一个或更多个网络进行通信。例如,网络接口624可以能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等进行通信。一个或更多个无线天线626还可以使用一个或更多个局域网(例如蓝牙、蓝牙LE、Z波、ZigBee等和/或低功耗广域网(LPWAN),如LoRaWAN、SigFox等)在环境中的对象(例如,车辆、移动设备等)之间实现通信。
图6B是根据本发明的一些实施例的图6A的示例性自主车辆600的相机位置和视野示例。相机和各自的视野是一个示例实施例,并不旨在限制。例如,可包括额外和/或替代的相机和/或相机可位于车辆600上的不同位置。
相机的相机类型可包括但不限于数字相机,该相机可适用于车辆600的部件和/或***。一个或更多个相机可在汽车安全完整性等级(ASIL)B和/或其他ASIL下运行。根据实施例,相机类型可以具有任何图像捕获速率,例如每秒60帧(fps)、120帧、240帧等。相机可以使用卷帘式快门、全局快门、另一种类型的快门或其组合。在一些示例中,滤色器阵列可包括红色透明(RCCC)滤色器阵列、红色透明蓝色(RCCB)滤色器阵列、红蓝绿色透明(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列、和/或其他类型的滤色器阵列。在一些实施例中,可以使用清晰像素相机,例如具有RCCC、RCCB和/或RBGC滤色器阵列的相机,以努力提高光灵敏度。
在一些示例中,一个或更多个摄像头可用于执行高级驾驶员辅助***(ADAS)功能(例如,作为冗余或故障安全设计的一部分)。例如,可安装多功能单摄像头,以提供车道偏离警告、交通标志辅助和智能前照灯控制等功能。一个或更多个相机(例如,所有相机)可以同时记录和提供图像数据(例如,视频)。
一个或更多个摄像头可安装在安装组件中,如定制设计(3D打印)组件,以切断可能干扰摄像头图像数据捕获能力的杂散光和车内反射(例如,挡风玻璃后视镜反射的仪表板反射)。关于翼镜安装组件,翼镜组件可定制3D打印,以便摄像头安装板与翼镜形状匹配。在一些示例中,一个或更多个相机可以集成到机翼后视镜中。对于侧视图相机,一个或更多个相机也可以集成在驾驶室每个拐角的四根立柱内。
具有包括车辆600前方环境部分的视野的相机(例如,前置相机)可用于环绕视图,以帮助识别前向路径和障碍物,以及在一个或更多个控制器636和/或控制SOC的帮助下,辅助提供对生成占用网格和/或确定首选车辆路径至关重要的信息。前置相机可用于执行许多与激光雷达相同的ADAS功能,包括紧急制动、行人检测和防撞。前向摄像头也可用于ADAS功能和***,包括车道偏离警告(“LDW”)、自动巡航控制(“ACC”)和/或其他功能,如交通标志识别。
各种相机可用于前置配置,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪的单目相机平台。另一个示例可以是可用于感知从***进入视野的对象(例如,行人、交叉交通或自行车)的广角相机670。尽管图6B中仅示出了一个广角相机,但车辆600上可能有任意数量的广角相机670。此外,一个或更多个远程相机698(例如,长角立体相机对)可用于基于深度的对象检测,特别是对于尚未训练神经网络的对象。一个或更多个远程相机698还可用于对象检测和分类以及基本目标跟踪。
一个或更多个立体相机668也可包括在前置配置中。一个或更多个立体相机668可以包括集成控制单元,该集成控制单元包括可扩展处理单元,该可扩展处理单元可以在单个芯片上提供可编程逻辑(FPGA)和具有集成CAN或以太网接口的多核微处理器。该单元可用于生成车辆环境的三维地图,包括图像中所有点的距离估计。一个或更多个可替代的立体相机668可包括紧凑型立体视觉传感器,该传感器可包括两个相机镜头(左右各一个)和图像处理芯片,该图像处理芯片可测量从车辆到目标对象的距离并使用生成的信息(例如,元数据)以激活自动紧急制动和车道偏离警告功能。除了本文所述的立体相机之外,或者可选地,可以使用其他类型的立体相机668。
具有包括车辆600侧面环境部分的视野的相机(例如,侧视相机)可用于环绕视图,提供用于创建和更新占用网格以及生成侧面碰撞警告的信息。例如,一个或更多个环绕相机674(例如,如图6B所示的四个环绕相机674)可定位在车辆600上。一个或更多个环绕相机674可包括一个或更多个广角相机670、一个或更多个鱼眼相机、一个或更多个360度相机等。例如,四个鱼眼相机可位于车辆的前部、后部和侧面。在替代布置中,车辆可使用三个环绕摄像头674(例如,左、右和后),并可利用一个或更多个其他摄像头(例如,前置相机)作为第四个环绕视图相机。
具有包括车辆600后部环境部分的视野的相机(例如,后视相机)可用于泊车辅助、环绕视野、追尾警告以及创建和更新占用网格。可以使用多种相机,包括但不限于也适合作为前置相机的相机(例如,一个或更多个远程和/或中程相机698、一个或更多个立体相机668、一个或更多个红外相机672等),如本文所述。
图6C是根据本发明的一些实施例的图6A的示例性自主车辆600的示例性***架构的框图。应理解,本文所述的此布置和其它布置仅作为示例阐述。除了所示的布置和元件之外,还可以使用其他布置和元件(例如,机器、接口、功能、顺序、功能分组等),或者可以使用其他布置和元件代替所示布置和元件,并且可以完全省略一些元件。此外,本文所描述的许多元件是功能实体,其可以作为离散或分布式组件实现,或者与其他组件结合实现,并且可以以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以通过硬件、固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。
图6C中车辆600的每个部件、特征和***均通过总线602连接。总线602可包括控制器局域网(CAN)数据接口(在本文中也可称为“CAN总线”)。CAN可以是车辆600内的网络,用于帮助控制车辆600的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刮器等的驱动。CAN总线可以配置为具有数十个甚至数百个节点,每个节点具有其自己的唯一标识符(例如,CAN ID)。可以读取CAN总线以查找方向盘角度、地速(ground speed,)、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示灯。CAN总线可以符合ASIL B标准。
尽管总线602在本文中被描述为CAN总线,但这并非旨在限制。例如,除了CAN总线之外,或者从CAN总线,还可以使用FlexRay和/或以太网。此外,尽管使用单线表示总线602,但这并旨在限制性的。例如,可以存在任意数量的总线602,其可以包括一个或更多个CAN总线、一个或更多个FlexRay总线、一个或更多个以太网总线和/或使用不同协议的一个或更多个其他类型的总线。在一些示例中,两个或更多个总线602可用于执行不同的功能,和/或可用于冗余。例如,第一总线602可用于碰撞避免功能,第二总线602可用于驱动控制。在任何示例中,每条总线602可与车辆600的任何部件通信,且两条或更多条总线602可与相同部件通信。在一些示例中,车辆内的每个SoC 604、每个控制器636和/或每个计算机可以访问相同的输入数据(例如,来自车辆600的传感器的输入),并且可以连接到公共总线,例如CAN总线。
车辆600可包括一个或更多个控制器636,如本文关于图6A所述的控制器。控制器636可用于各种功能。一个或更多个控制器636可以耦合到车辆600的各种其他组件和***中的任何一个,并且可以用于控制车辆600、车辆600的人工智能、车辆600的信息娱乐等。
车辆600可包括一个或更多个片上***(SoC)604。SoC 604可包括一个或更多个CPU 606、一个或更多个GPU 608、一个或更多个处理器610、一个或更多个高速缓存612、一个或更多个加速器614、一个或更多个数据存储616和/或未示出的其他组件和特征。一个或更多个SoC 604可用于控制各种平台和***中的车辆600。例如,一个或更多个SoC 604可以与HD地图622组合在***(例如,车辆600的***)中,HD地图622可以经由网络接口624从一个或更多个服务器(例如,图6D的服务器678)获得地图刷新和/或更新。
一个或更多个CPU 606可以包括CPU集群或CPU复合体(或者在本文中称为“CCPLEX”)。一个或更多个CPU 606可以包括多个核心和/或二级高速缓存。例如,在一些实施例中,一个或更多个CPU 606可以包括相干多处理器配置中的八个核。在一些实施例中,一个或更多个CPU 606可包括四个双核集群,其中每个集群具有专用二级缓存(例如,2MB二级高速缓存)。一个或更多个CPU 606(例如,CCPLEX)可被配置为支持同时集群操作,使得CPU 606的集群的任何组合在任何给定时间处于活动状态。
一个或更多个CPU 606可实现包括以下一个或更多个特征的功率管理能力:单个硬件块可在空闲时自动时钟选通以节省动态功率;当内核由于执行WFI/WFE指令而未主动地执行指令时,可以对每个内核时钟进行选通;每个核心可以独立地进行功率选通;当所有核心都被时钟选通或电源选通时,每个核心集群可以独立地进行时钟选通;和/或当所有核心都是功率选通时,每个核心集群可以独立地功率选通。一个或更多个CPU 606可以进一步实现用于管理功率状态的增强算法,其中指定了允许的功率状态和预期唤醒时间,并且硬件/微码确定为核心、集群和CCPLEX进入的最佳电源状态。处理核心可支持软件中简化的电源状态输入序列,并将工作卸载到微码。
一个或更多个GPU 608可以包括集成的GPU(或者在本文中称为“iGPU”)。GPU 608可以是可编程的,并且可以对并行工作负载是高效的。在一些示例中,一个或更多个GPU608可以使用增强的张量指令集。一个或更多个GPU 608可以包括一个或更多个流微处理器,其中每个流微处理器可以包括一级高速缓存(例如,具有至少96KB存储容量的一级高速缓存),并且两个或更多个流微处理器可以共享二级高速缓存(例如,具有512KB存储容量的二级高速缓存)。在一些实施例中,一个或更多个GPU 608可包括至少八个流式微处理器。一个或更多个GPU 608可以使用一个或更多个计算应用程序编程接口(API)。此外,一个或更多个GPU 608可以使用一个或更多个并行计算平台和/或编程模型(例如,NVIDIA的CUDA)。
一个或更多个GPU 608可进行功率优化,以在汽车和嵌入式用例中获得最佳性能。例如,一个或更多个GPU 608可在鳍型场效应晶体管(FinFET)上制造。然而,这并非旨在限制,并且可以使用其他半导体制造工艺来制造一个或更多个GPU 608。每个流式微处理器可合并多个分割成多个块的混合精度处理核心。例如,但不限于,64个PF32核和32个PF64核可被划分为四个处理块。在这样的示例中,可以为每个处理块分配16个FP32核、8个FP64核、16个INT32核、两个用于深度学习矩阵算法的混合精度NVIDIA张量核、L0指令高速缓存、线程束调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可包括独立的并行整数和浮点数据路径,以通过混合计算和寻址计算来提供工作负载的有效执行。流式微处理器可以包括独立的线程调度能力,以实现并行线程之间更细粒度的同步和协作。流式微处理器可以包括组合的一级数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
一个或更多个GPU 608可包括高带宽存储器(HBM)和/或16GB HBM2存储器子***,以在一些示例中提供约900GB/秒峰值存储器带宽。在一些示例中,除了HBM存储器之外,或者可选地从HBM存储器使用同步图形随机存取存储器(SGRAM),例如第五代图形双数据速率同步随机存取存储器(GDDR5)。
第五代GPU 608可包括统一内存技术,其包括访问计数器,以允许更准确地将内存页迁移到最频繁访问它们的处理器,从而提高处理器之间共享内存范围的效率。在一些示例中,地址转换服务(ATS)支持可用于允许一个或更多个GPU 608直接访问一个或更多个CPU 606页表。在这样的示例中,当一个或更多个GPU 608存储器管理单元(MMU)经历未命中时,地址转换请求可被发送到一个或更多个CPU 606。作为响应,一个或更多个CPU 606可在其页表中查找地址的虚拟到物理映射,并将转换发送回一个或更多个GPU 608。因此,统一存储器技术可允许一个或更多个CPU 606和一个或更多个GPU 608两者的存储器的单个统一虚拟地址空间,从而简化一个或更多个GPU 608编程和将应用程序移植到一个或更多个GPU 608。
此外,一个或更多个GPU 608可包括访问计数器,其可跟踪一个或更多个GPU 608对其他处理器的存储器的访问频率。访问计数器可帮助确保将内存页移动到访问页面最频繁的处理器的物理内存中。
一个或更多个SoC 604可包括任意数量的高速缓存612,包括本文所述的高速缓存612。例如,一个或更多个高速缓存612可以包括对一个或更多个CPU 606和一个或更多个GPU 608(例如,连接一个或更多个CPU 606和一个或更多个GPU 608两者)都可用的L3高速缓存。高速缓存612可包括可跟踪线的状态的回写高速缓存,例如通过使用高速缓存一致性协议(例如,MEI、MESI、MSI等)。尽管可以使用较小的缓存大小,但根据实施例,L3缓存可以包括4MB或更多。
一个或更多个SoC 604可包括一个或更多个算术逻辑单元(ALU),该算术逻辑单元可用于执行与车辆600的各种任务或操作相关的处理,例如处理DNN。此外,一个或更多个SoC 604可包括用于在***内执行数学运算的一个或更多个浮点单元(FPU)或其他数学协处理器或数字协处理器类型。例如,一个或更多个SoC 104可以包括集成为CPU 606和/或GPU 608内的执行单元的一个或更多个FPU。
一个或更多个SoC 604可包括一个或更多个加速器614(例如,硬件加速器、软件加速器或其组合)。例如,一个或更多个SoC 604可以包括硬件加速集群,该硬件加速集群可以包括优化的硬件加速器和/或大型片上存储器。大型片上存储器(例如4MB的SRAM)可以使硬件加速集群加速神经网络和其他计算。硬件加速集群可用于补充一个或更多个GPU 608并卸载一个或更多个GPU 608的一些任务(例如,释放一个或更多个GPU 608的更多周期以执行其他任务)。例如,一个或更多个加速器614可用于足够稳定以适于加速的目标工作负载(例如,感知、卷积神经网络(CNN)等)。本文使用的术语“CNN”可包括所有类型的CNN,包括基于区域或区域卷积神经网络(RCNN)和快速RCNN(例如,用于目标检测)。
一个或更多个加速器614(例如,硬件加速集群)可包括一个或更多个深度学习加速器(DLA)。一个或更多个DLA可包括一个或更多个张量处理单元(TPU),其可被配置为每秒为深度学习应用和推理提供额外的10万亿操作。TPU可以是配置为执行图像处理功能(例如,用于CNN、RCNN等)并针对其进行优化的加速器。一个或更多个DLA还可以针对特定的神经网络类型和浮点运算以及推理进行优化。一个或更多个DLA的设计可以提供比通用GPU更高的每毫米性能,并且大大超过CPU的性能。一个或更多个TPU可以执行多个功能,包括单实例卷积功能,例如,支持特征和权重的INT8、INT16和FP16数据类型,以及后处理器功能。
一个或更多个DLA可针对各种功能中的任何一种,在处理或未处理的数据上快速有效地执行神经网络,尤其是CNN,包括但不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;利用相机传感器的数据进行距离估计的CNN;用于紧急车辆检测和识别并使用麦克风数据进行检测的CNN;用于使用来自摄像头传感器的数据来进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
一个或更多个DLA可以执行一个或更多个GPU 608的任何功能,例如,通过使用推理加速器,设计者可以针对一个或更多个DLA或一个或更多个GPU 608执行任何功能。例如,设计者可以将CNN和浮点操作的处理集中在一个或更多个DLA上,并将其他功能留给一个或更多个GPU 608和/或一个或更多个其他加速器614。
一个或更多个加速器614(例如,硬件加速集群)可包括可编程视觉加速器(PVA),其在本文中也可称为计算机视觉加速器。一个或更多个PVA可设计和配置为加速用于高级驾驶员辅助***(ADAS)、自动驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。一个或更多个PVA可在性能和灵活性之间提供平衡。例如,每个PVA可包括例如但不限于任何数量的精简指令集计算机(RISC)内核、直接存储器访问(DMA)和/或任何数量的向量处理器。
RISC内核可与图像传感器(例如,本文所述的任何相机的图像传感器)、一个或更多个图像信号处理器等交互。每个RISC核可以包括任意数量的存储器。RISC核心可以使用多种协议中的任何一种,具体取决于实施例。在一些示例中,RISC内核可以执行实时操作***(RTOS)。RISC核心可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储器设备来实现。例如,RISC内核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可使PVA组件独立于一个或更多个CPU 606访问***内存。DMA可支持用于优化PVA的任何功能,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可支持多达六个或更多维度的寻址,其可包括块宽度、块高度、块深度、水平块步进、垂直块步进和/或深度步进。
矢量处理器可以是可编程处理器,其设计可以高效灵活地执行计算机视觉算法的编程,并提供信号处理能力。在一些示例中,PVA可包括PVA核心和两个向量处理子***分区。PVA核心可包括处理器子***、一个或更多个DMA引擎(例如,两个DMA引擎)和/或其他***设备。向量处理子***可以作为PVA的主处理引擎运行,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量存储器(例如VMEM)。VPU核心可以包括数字信号处理器,例如,单指令、多数据(SIMD),超长指令字(VLIW)数字信号处理器。SIMD和VLIW的结合可以提高吞吐量和速度。
每个向量处理器可包括指令高速缓存,并可耦合至专用存储器。结果,在一些示例中,每个向量处理器可被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可被配置为采用数据并行。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以在图像的不同区域上执行相同的计算机视觉算法。在其他示例中,包括在特定PVA中的向量处理器可以在同一图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或图像的部分上执行不同的算法。除其他事项外,任何数量的PVA可以包括在硬件加速集群中,并且任何数量的向量处理器可以包括在每个PVA中。此外,PVA可包括额外的纠错码(ECC)存储器,以增强整体***安全性。
一个或更多个加速器614(例如,硬件加速集群)可包括计算机视觉网络片上和SRAM,用于为一个或更多个加速器614提供高带宽、低延迟SRAM。在一些示例中,片上存储器可包括至少4MB SRAM,包括但不限于,八个现场可配置内存块,可由PVA和DLA访问。每对存储器块可以包括高级***总线(APB)接口、配置电路、控制器和多路复用器。可以使用任何类型的存储器。PVA和DLA可通过为PVA和DLA提供高速内存访问的主干线访问内存。主干可包括将PVA和DLA互连至存储器(例如,使用APB)的片上计算机视觉网络。
片上计算机视觉网络可包括一个接口,该接口在传输任何控制信号/地址/数据之前,确定PVA和DLA均提供就绪且有效的信号。这种接口可以提供用于传输控制信号/地址/数据的独立相位和独立信道,以及用于连续数据传输的突发式通信。此类接口可符合ISO26262或IEC 61508标准,但也可使用其他标准和协议。
在一些示例中,一个或更多个SoC 604可包括实时光线跟踪硬件加速器,如2018年8月10日提交的第16/101232号美国专利申请中所述。实时光线跟踪硬件加速器可用于快速有效地确定对象的位置和范围(例如,在世界模型内),生成实时可视化模拟,用于雷达信号解释、声音传播合成和/或分析、声纳***模拟、一般波传播模拟、与激光雷达数据进行比较,以用于定位和/或其他功能和/或其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可用于执行一个或更多个射线跟踪相关操作。
一个或更多个加速器614(例如,硬件加速器集群)在自动驾驶方面有着广泛的用途。PVA可能是一种可编程视觉加速器,可用于ADA和自动驾驶车辆的关键加工阶段。PVA的能力非常适合需要以功耗低且延迟低进行可预测处理的算法域。换句话说,PVA在半密集或常规密集计算上表现良好,即使在小数据集上也是如此,这些数据集需要低延迟和低功耗的可预测运行时间。因此,在自主车辆平台的背景下,PVA被设计为运行经典的计算机视觉算法,因为它们在目标检测和整数数学运算方面非常有效。
例如,根据本技术的一个实施例,PVA用于执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,尽管这不是为了限制。3-5级自主驾驶的许多应用需要即时运动估计/立体匹配(例如,运动结构、行人识别、车道检测等)。PVA可对来自两个单目相机的输入执行计算机立体视觉功能。
在一些示例中,PVA可用于执行密集光流。根据处理原始雷达数据(例如,使用4D快速傅里叶变换)提供处理后的雷达。在其他示例中,PVA用于飞行时间深度处理,例如,通过处理原始飞行时间数据来提供处理后的飞行时间数据。
DLA可用于运行任何类型的网络,以增强控制和驾驶安全性,例如,包括为每个目标检测输出置信度测量值的神经网络。这样的置信值可以解释为概率,或者提供每个检测相对于其他检测的相对“权重”。该置信值使***能够进一步决定哪些检测应被视为真阳性检测而不是假阳性检测。例如,***可以设置置信度的阈值,并且仅考虑超过阈值的检测作为真阳性检测。在自动紧急制动(AEB)***中,假阳性检测将导致车辆自动执行紧急制动,这显然是不希望的。因此,只有最可靠的检测才应被视为AEB的触发因素。DLA可以运行神经网络来回归置信值。神经网络可将至少一些参数子集作为其输入,例如边界框尺寸、获得的地平面估计(例如,从另一子***)、与车辆600方位、距离相关的惯性测量单元(IMU)传感器666输出,从神经网络和/或其他传感器(例如,激光雷达传感器664或雷达传感器660)等获得的对象的三维位置估计。
一个或更多个SoC 604可包括一个或更多个数据存储616(例如存储器)。数据存储616可以是SoC 604的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,数据存储616的容量可以足够大,以存储用于冗余和安全的多个神经网络实例。数据存储612可包括二级或三级高速缓存612。如本文所述,对一个或更多个数据存储616的引用可包括对与PVA、DLA和/或一个或更多个其他加速器614相关联的存储器的引用。
一个或更多个SoC 604可包括一个或更多个处理器610(例如嵌入式处理器)。处理器610可以包括引导和电源管理处理器,该处理器可以是专用处理器和子***,用于处理引导电源和管理功能以及相关安全实施。引导和电源管理处理器可以是一个或更多个SoC604引导序列的一部分,并且可以提供运行时电源管理服务。引导电源和管理处理器可提供时钟和电压编程、***低电源状态转换协助、SoC 604热传感器和温度传感器的管理和/或SoC 604电源状态的管理。每个温度传感器可实现为输出频率与温度成比例的环形振荡器,并且一个或更多个SoC 604可使用环形振荡器检测一个或更多个CPU 606、一个或更多个GPU 608和/或一个或更多个加速器614的温度。如果确定温度超过阈值,引导和电源管理处理器可进入温度故障例行程序,并将一个或更多个SoC 604置于低功率状态和/或将车辆600置于司机安全停车模式(例如,使车辆600安全停车)。
一个或更多个处理器610还可包括一组可作为音频处理引擎的嵌入式处理器。音频处理引擎可以是音频子***,该音频子***能够通过多个接口和广泛且灵活的音频I/O接口实现对多通道音频的完全硬件支持。在一些示例中,音频处理引擎是具有专用RAM的数字信号处理器的专用处理器核心。
一个或更多个处理器610还可包括常开处理器引擎,该引擎可提供必要的硬件功能,以支持低功耗传感器管理和唤醒用例。常开处理器引擎可以包括处理器核心、紧密耦合的RAM、支持***设备(例如定时器和中断控制器)、各种I/O控制器***设备和路由逻辑。
一个或更多个处理器610还可包括安全集群引擎,该引擎包括专用处理器子***,用于处理汽车应用的安全管理。安全集群引擎可以包括两个或更多个处理器核心、紧密耦合的RAM、支持***设备(例如定时器、中断控制器等)和/或路由逻辑。在安全模式下,两个或多个内核可在锁步模式下运行,并作为具有比较逻辑的单个内核运行,以检测其操作之间的任何差异。
一个或更多个处理器610还可包括实时相机引擎,该引擎可包括用于处理实时相机管理的专用处理器子***。
一个或更多个处理器610还可以包括高动态范围信号处理器,该处理器可以包括图像信号处理器,该图像信号处理器是作为相机处理管道一部分的硬件引擎。
一个或更多个处理器610可包括视频图像合成器,该视频图像合成器可为处理块(例如,在微处理器上实现),其实现视频回放应用程序所需的视频后处理功能,以生成播放器窗口的最终图像。视频图像合成器可在一个或更多个广角相机670、一个或更多个环绕相机674和/或驾驶舱内监控相机传感器上执行镜头失真校正。驾驶舱内监控相机传感器优选地由运行在高级SoC的另一实例上的神经网络监控,该神经网络被配置为识别舱内事件并相应地响应。驾驶舱内***可执行唇读,以激活蜂窝服务和拨打电话、口述电子邮件、更改车辆目的地、激活或更改车辆的信息娱乐***和设置,或提供语音激活的网络冲浪。某些功能仅在车辆以自动模式运行时才可供驾驶员使用,否则将禁用。
视频图像合成器可包括用于空间和时间降噪的增强的时间降噪。例如,在视频中发生运动的情况下,噪声降低适当地加权空间信息,从而减小由相邻帧提供的信息的权重。在图像或图像的一部分不包括运动的情况下,由视频图像合成器执行的时间噪声降低可以使用来自前一图像的信息来降低当前图像中的噪声。
视频图像合成器也可配置为对输入立体镜头帧执行立体校正。当操作***桌面正在使用时,视频图像合成器还可用于用户界面合成,并且不需要GPU 608连续渲染新表面。即使当一个或更多个GPU 608上电并且在进行3D渲染时处于活动状态,视频图像合成器也可用于卸载一个或更多个GPU 608以改进性能和响应性。
一个或更多个SoC 604还可包括用于接收来自相机的视频和输入的移动工业处理器接口(MIPI)相机串行接口、高速接口和/或可用于相机和相关像素输入功能的视频输入块。一个或更多个SoC 604还可以包括一个或更多个输入/输出控制器,其可以由软件控制,并且可以用于接收未指定特定角色的I/O信号。
一个或更多个SoC 604还可包括广泛的***接口,以实现与***设备、音频编解码器、电源管理和/或其他设备的通信。一个或更多个SoC 604可用于处理来自相机(例如,通过千兆多媒体串行链路和以太网连接)、传感器(例如,可通过以太网连接的一个或更多个激光雷达传感器664、一个或更多个雷达传感器660等)、来自总线602的数据(例如,车辆600的速度、方向盘位置等)、来自一个或更多个GNSS传感器658的数据(例如,通过以太网或CAN总线连接)。一个或更多个SoC 604还可以包括专用的高性能大容量存储控制器,该控制器可以包括其自己的DMA引擎,并且可以用于将一个或更多个CPU 606从常规数据管理任务中解放出来。
一个或更多个SoC 604可以是一个端到端平台,具有灵活的体系架构,跨越自动化水平3-5,从而提供一个全面的功能安全体系架构,该体系架构利用并有效利用计算机视觉和ADAS技术实现多样性和冗余,为灵活可靠的驱动软件堆栈以及深度学***台。与传统***相比,一个或更多个SoC604可以更快、更可靠、甚至更节能和节省空间。例如,当一个或更多个加速器614与一个或更多个CPU 606、一个或更多个GPU 608和一个或更多个数据存储616组合时,可为3-5级自主车辆提供快速、高效的平台。
因此,该技术提供了传统***无法实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,CPU可以使用高级编程语言(例如C编程语言)来配置,以在各种各样的视觉数据上执行各种各样的处理算法。然而,CPU通常无法满足许多计算机视觉应用程序的性能要求,例如与执行时间和功耗相关的应用程序。特别是,许多CPU无法实时执行复杂的目标检测算法,这是车载ADAS应用的要求,也是实际3-5级自主车辆的要求。
与传统***相比,通过提供CPU复合体、GPU复合体和硬件加速集群,本文描述的技术允许同时和/或顺序执行多个神经网络,并允许将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如,一个或更多个GPU 620)上执行的CNN可以包括文本和字识别,从而允许超级计算机读取和理解交通标志,包括神经网络尚未针对其专门训练的标志。DLA还可以包括能够识别、解释和提供符号的语义理解的神经网络,并将该语义理解传递给CPU复合体上运行的路径规划模块。
另一个例子是,可以同时运行多个神经网络,如3级、4级或5级驾驶所需。例如,由“警告:闪烁的灯光指示结冰情况”和电灯组成的警告标志可以由多个神经网络独立或共同解释。标志本身可通过第一个部署的神经网络(例如,经过训练的神经网络)识别为交通标志,文本“闪光灯指示结冰条件”可由第二个部署的神经网络解释,当检测到闪光灯时,通知车辆路径规划软件(优选地在CPU复合体上执行)存在结冰情况。可通过在多个帧上操作第三个部署的神经网络来识别闪光灯,通知车辆路径规划软件是否存在闪光灯。所有三个神经网络可同时运行,例如在DLA内和/或在一个或更多个GPU 608上。
在一些示例中,用于面部识别和车主识别的CNN可使用相机传感器的数据来识别经授权的驾驶员和/或车辆600的所有者的存在。当所有者靠近驾驶员车门并打开车灯时,可使用常开传感器处理引擎解锁车辆,以及,在安全模式下,当所有者离开车辆时禁用车辆。通过这种方式,一个或更多个SoC 604提供了防盗和/或劫车保护。
在另一个示例中,用于紧急车辆检测和识别的CNN可使用来自麦克风696的数据来检测和识别紧急车辆警报器。与使用通用分类器检测警报器和手动提取特征的传统***不同,一个或更多个SoC(s)604使用CNN对环境和城市声音进行分类,以及对视觉数据进行分类。在优选实施例中,对DLA上运行的CNN进行训练以识别紧急车辆的相对关闭速度(例如,通过使用多普勒效应)。CNN还可接受训练,以识别特定于车辆运行区域的应急车辆,如一个或更多个GNSS传感器658所识别。因此,例如,当在欧洲运行时,CNN将寻求检测欧洲警报,当在美国时,CNN将寻求仅识别北美警报。一旦检测到紧急车辆,可使用控制程序在超声波传感器662的帮助下执行紧急车辆安全例行程序,使车辆减速、靠边停车、停车和/或使车辆怠速,直到一个或更多个紧急车辆通过。
车辆可包括一个或更多个CPU 618(例如,一个或更多个离散CPU或一个或更多个dCPU),其可通过高速互连(例如PCIE)耦合至一个或更多个SoC 604。例如,一个或更多个CPU 618可以包括X86处理器。CPU 618可用于执行各种功能中的任何一种,包括仲裁ADAS传感器和SoC 604之间可能不一致的结果,和/或监测一个或更多个控制器636和/或信息娱乐SoC 630的状态和健康状况。
车辆600可包括一个或更多个GPU 620(例如,一个或更多个离散GPU或一个或更多个dGPU),其可通过高速互连(例如,NVIDIA的NVLINK)耦合至SoC 604。一个或更多个GPU620可以提供额外的人工智能功能,例如通过执行冗余和/或不同的神经网络,并且可以用于基于来自车辆600的传感器的输入(例如,传感器数据)训练和/或更新神经网络。
车辆600还可以包括网络接口624,网络接口624可以包括一个或更多个无线天线626(例如,用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等)。网络接口624可用于通过互联网实现与云(例如,与一个或更多个服务器678和/或其他网络设备)、与其他车辆和/或与计算设备(例如,乘客的客户端设备)的无线连接。为了与其他车辆通信,可在两辆车辆之间建立直接链路和/或建立间接链路(例如,通过网络和互联网)。可使用车对车通信链路提供直接链路。车辆到车辆通信链路可向车辆600提供关于车辆600附近车辆的信息(例如,车辆600前面、侧面和/或后面的车辆)。该功能可能是车辆600的协作自适应巡航控制功能的一部分。
网络接口624可包括提供调制和解调功能并使一个或更多个控制器636能够通过无线网络通信的SoC。网络接口624可以包括用于从基带到射频的上转换和从射频到基带的下转换的射频前端。频率转换可以通过众所周知的过程来执行,和/或可以使用超外差过程来执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN和/或其他无线协议进行通信的无线功能。
车辆600可进一步包括一个或更多个数据存储628,其可包括片外(例如,SoC外)。数据存储628可包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可存储至少一位数据的其他组件和/或设备。
车辆600还可包括一个或更多个GNSS传感器658。一个或更多个GNSS传感器658(例如,GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于协助测绘、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器658,包括例如但不限于使用具有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆600还可包括一个或更多个雷达传感器660。即使在黑暗和/或恶劣天气条件下,车辆600也可使用一个或更多个雷达传感器660进行远程车辆检测。雷达功能安全等级可以为ASIL B。一个或更多个雷达传感器660可以使用CAN和/或总线602(例如,传输由一个或更多个雷达传感器660生成的数据)进行控制和访问目标跟踪数据,在一些示例中,通过访问以太网访问原始数据。可使用多种雷达传感器类型。例如,但不限于,一个或更多个雷达传感器660可适用于前、后和侧面雷达使用。在一些示例中,使用脉冲多普勒雷达传感器。
一个或更多个雷达传感器660可包括不同的配置,例如窄视场的远程、宽视场的短程、短距离侧面覆盖等。在一些示例中,远程雷达可用于自适应巡航控制功能。远程雷达***可提供通过两次或两次以上独立扫描实现的广阔视野,例如在250米范围内。一个或更多个雷达传感器660可帮助区分静态和移动对象,并可由ADAS***用于紧急制动辅助和前向碰撞警告。远程雷达传感器可能包括具有多个(例如,六个或更多)固定雷达天线和高速CAN和FlexRay接口的单基地多模雷达。在具有六个天线的示例中,中央四个天线可创建聚焦波束图案,设计用于以较高速度记录车辆周围的600个环境,且相邻车道的交通干扰最小。另外两个天线可以扩大视野,使其能够快速检测进入或离开车辆600车道的车辆。
例如,中程雷达***可包括高达660米(前)或80米(后)的范围,以及高达42度(前)或650度(后)的视野。短程雷达***可能包括但不限于设计安装在后保险杠两端的雷达传感器。当安装在后保险杠两端时,此类雷达传感器***可能会产生两束光束,持续监测车辆后部和旁边的盲点。
ADAS***中可使用近程雷达***进行盲点检测和/或车道变换辅助。
车辆600还可包括一个或更多个超声波传感器662。一个或更多个超声波传感器662可位于车辆600的前部、后部和/或侧面,可用于泊车辅助和/或创建和更新占用网格。可使用多种超声波传感器662,不同的超声波传感器662可用于不同的检测范围(例如,2.5m、4m)。一个或更多个超声波传感器662可在ASIL B的功能安全水平下工作。
车辆600可包括一个或更多个激光雷达传感器664。一个或更多个激光雷达传感器664可用于对象和行人检测、紧急制动、防撞和/或其他功能。一个或更多个激光雷达传感器664的功能安全等级可以为ASIL B。在一些示例中,车辆600可包括可使用以太网(例如,向千兆以太网交换机提供数据)的多个激光雷达传感器664(例如,两个、四个、六个等)。
在一些示例中,一个或更多个激光雷达传感器664可以能够提供360度视野中的对象及其距离列表。一个或更多个商用激光雷达传感器664的广告范围约为600m,准确度为2cm-3cm,并支持例如600Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的激光雷达传感器664。在此类示例中,一个或更多个激光雷达传感器664可作为小型设备实施,该小型设备可嵌入车辆600的前部、后部、侧面和/或角落。在此类示例中,一个或更多个激光雷达传感器664可提供高达120度的水平和35度的垂直视野,即使对于低反射率对象,其范围也为200m。前安装的一个或更多个激光雷达传感器664可配置为45度到135度之间的水平视野。
在一些示例中,也可以使用激光雷达技术,如3D闪光激光雷达。3D闪光激光雷达使用激光闪光作为传输源,照亮车辆周围约200米。闪光激光雷达装置包括一个接收器,该接收器记录激光脉冲传输时间和每个像素上的反射光,而每个像素又对应于从车辆到对象的范围。闪光激光雷达可以利用每一次激光闪光生成高准确度、无失真的环境图像。在一些示例中,可部署四个闪光激光雷达传感器,一个位于车辆600的每侧。可用的3D闪光激光雷达***包括固态3D凝视阵列激光雷达相机,除风扇(例如,非扫描激光雷达设备)外,无任何运动部件。闪光激光雷达设备每帧可使用5纳秒I类(眼睛安全)激光脉冲,并可捕获3D距离点云和共同寄存的强度数据形式的反射激光。通过使用闪光激光雷达,并且因为闪光激光雷达是没有运动部件的固态设备,所以一个或更多个激光雷达传感器664可以不易受到运动模糊、振动和/或冲击的影响。
车辆可能还包括一个或更多个IMU传感器666。在一些示例中,一个或更多个IMU传感器666可位于车辆600后轴的中心。一个或更多个IMU传感器666可以包括例如但不限于一个或更多个加速计、一个或更多个磁强计、一个或更多个陀螺仪、一个或更多个磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,一个或更多个IMU传感器666可包括加速计和陀螺仪,而在九轴应用中,一个或更多个IMU传感器666可包括加速计、陀螺仪和磁强计。
在一些实施例中,一个或更多个IMU传感器666可实现为微型、高性能GPS辅助惯性导航***(GPS/INS),该***结合了微电子机械***(MEMS)惯性传感器、高灵敏度GPS接收机和先进的卡尔曼滤波算法,以提供位置、速度、姿态的估计。因此,在一些示例中,一个或更多个IMU传感器666可通过直接观察和关联从GPS到一个或更多个IMU传感器666的速度变化,使车辆600能够估计航向,而无需来自磁性传感器的输入。在一些示例中,一个或更多个IMU传感器666和一个或更多个GNSS传感器658可组合在单个集成单元中。
车辆可能包括放置在车辆600内和/或周围的一个或更多个麦克风696。一个或更多个麦克风696可用于紧急车辆检测和识别等。
车辆还可包括任意数量的相机类型,包括一个或更多个立体相机668、一个或更多个广角相机670、一个或更多个红外相机672、一个或更多个环绕相机674、一个或更多个远程和/或中程相机698和/或其他相机类型。相机可用于捕获车辆600整个***的图像数据。使用的相机类型取决于车辆600的实施例和要求,相机类型的任何组合可用于提供车辆600周围的必要覆盖范围。此外,根据实施例,相机的数量可以不同。例如,车辆可包括六个相机、七个相机、十个相机、十二个相机和/或其他数量的相机。作为示例,相机可支持但不限于千兆多媒体串行链路(GMSL)和/或千兆以太网。本文将参照图6A和图6B更详细地描述每个照相机。
车辆600还可包括一个或更多个振动传感器642。一个或更多个振动传感器642可测量车辆部件(如车轴)的振动。例如,振动的变化可能表明路面的变化。在另一个示例中,当使用两个或多个振动传感器642时,振动之间的差异可用于确定路面的摩擦或滑动(例如,当振动差异在动力驱动轴和自由旋转轴之间时)。
车辆600可包括ADAS***638。在一些示例中,ADAS***638可包括SoC。ADAS***638可包括自动/自适应/自动巡航控制(ACC)、协同自适应巡航控制(CACC)、前向碰撞警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后交叉交通警告(RCTW)、碰撞警告***(CWS),车道对中(LC)和/或其他特征和功能。
ACC***可使用一个或更多个雷达传感器660、一个或更多个激光雷达传感器664和/或一个或更多个相机。ACC***可包括纵向ACC和/或横向ACC。纵向ACC监测和控制与车辆600正前方车辆的距离,并自动调整车速,以保持与前方车辆的安全距离。横向ACC执行距离保持,并建议车辆600在必要时改变车道。侧向ACC与其他ADAS应用相关,如LCA和CWS。
CACC使用来自其他车辆的信息,这些信息可通过网络接口624和/或一个或更多个无线天线626,通过无线链路,或通过网络连接(例如,通过互联网)间接从其他车辆接收。直接链路可以由车辆到车辆(V2V)通信链路提供,而间接链路可以是基础设施到车辆(I2V)通信链路。一般来说,V2V通信概念提供了关于前面车辆的信息(例如,车辆600正前方和同一车道上的车辆),而I2V通信概念提供了关于前方交通的信息。CACC***可包括I2V和V2V信息源之一或两者。考虑到车辆600前方的车辆信息,CACC可能更可靠,并且有可能改善交通流的平稳性并减少道路上的拥堵。
FCW***被设计为提醒驾驶员注意危险,以便驾驶员采取纠正措施。FCW***使用耦合到专用处理器、DSP、FPGA和/或ASIC的前向摄像头和/或一个或更多个雷达传感器660,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。FCW***可提供警告,例如声音、视觉警告、振动和/或快速制动脉冲。
AEB***检测到与其他车辆或其他对象即将发生的前向碰撞,如果驾驶员未在规定的时间或距离参数内采取纠正措施,AEB***可能会自动应用制动器。AEB***可使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个前置相机和/或一个或更多个雷达传感器660。当AEB***检测到危险时,通常首先提醒驾驶员采取纠正措施以避免碰撞,如果驾驶员未采取纠正措施,AEB***可自动应用制动器以防止或至少减轻预计碰撞的影响。AEB***可包括动态制动支撑和/或碰撞迫近制动等技术。
LDW***提供视觉、听觉和/或触觉警告,如方向盘或座椅振动,以在车辆600穿过车道标记时提醒驾驶员。当驾驶员通过激活转向信号指示有意偏离车道时,LDW***不会激活。LDW***可使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
LKA***是LDW***的一种变体。如果车辆600开始驶出车道,LKA***提供转向输入或制动以纠正车辆600。
BSW***检测并警告汽车盲点内的车辆驾驶员。BSW***可提供视觉、听觉和/或触觉警报,以指示合流或变道不安全。当驾驶员使用转向信号时,***可能会提供附加警告。BSW***可使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或雷达传感器660,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
当车辆600倒车时检测到后摄像头范围外的对象时,RCTW***可提供视觉、听觉和/或触觉通知。一些RCTW***包括AEB,以确保应用车辆制动器以避免碰撞。RCTW***可以使用一个或更多个一个或更多个后向雷达传感器660,该传感器耦合到专用处理器、DSP、FPGA和/或ASIC,该专用处理器、DSP、FPGA和/或ASIC电耦合到驱动器反馈,例如显示器、扬声器和/或振动组件。
传统的ADAS***可能容易出现假阳性结果,这可能会使驾驶员感到恼火和分心,但通常不会造成灾难性后果,因为ADAS***会提醒驾驶员,并允许驾驶员决定是否确实存在安全状况,并采取相应的行动。然而,在自主式车辆600中,在结果冲突的情况下,车辆600自身必须决定是听取来自主计算机还是辅助计算机(例如,第一控制器636或第二控制器636)的结果。例如,在一些实施例中,ADAS***638可以是用于向备份计算机模块提供感知信息的备份和/或辅助计算机。备用计算机合理性监视器可以在硬件组件上运行冗余的不同软件,以检测感知和动态驾驶任务中的故障。来自ADAS***638的输出可以提供给监控MCU。如果主计算机和辅助计算机的输出冲突,监控MCU必须确定如何协调冲突,以确保安全运行。
在一些示例中,主计算机可配置为向监控MCU提供置信分数,指示主计算机对所选结果的置信度。如果置信度得分超过阈值,则监控MCU可遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。如果置信度得分不符合阈值,并且主计算机和辅助计算机指示不同的结果(例如,冲突),则监控MCU可以在计算机之间进行仲裁,以确定适当的结果。
监控MCU可配置为运行经过训练和配置的一个或更多个神经网络,以根据主计算机和辅助计算机的输出确定辅助计算机提供假警报的条件。因此,监控MCU中的一个或更多个神经网络可以学习辅助计算机的输出何时可信,何时不可信。例如,当辅助计算机是基于雷达的FCW***时,监控MCU中的一个或更多个神经网络可以学习FCW***何时识别事实上不是危险的金属对象,例如触发警报的排水格栅或人孔盖。类似地,当辅助计算机是基于相机的LDW***时,监控MCU中的神经网络可以学习在自行车或行人在场且车道偏离实际上是最安全的操纵时覆盖LDW。在包括在监控MCU上运行的一个或更多个神经网络的实施例中,监控MCU可包括适于运行具有相关联的存储器的一个或更多个神经网络的DLA或GPU中的至少一个。在优选实施例中,监控MCU可包括和/或包括为SoC 604的组件。
在其他示例中,ADAS***638可包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。因此,辅助计算机可以使用经典的计算机视觉规则(if-then),并且在监控MCU中存在一个或更多个神经网络可以提高可靠性、安全性和性能。例如,多样化的实现和有意的非标识使整个***更具容错性,特别是对由软件(或软硬件接口)功能引起的故障。例如,如果在主计算机上运行的软件中存在软件缺陷或错误,并且在辅助计算机上运行的不相同的软件代码提供相同的总体结果,则监控MCU可对总体结果的正确性有更大的信心,主计算机上的软件或硬件缺陷并没有导致重大错误。
在一些示例中,ADAS***638的输出可馈入主计算机的感知块和/或主计算机的动态驱动任务块。例如,如果ADAS***638指示由于正前方对象引起的前向碰撞警告,则感知块可在识别对象时使用该信息。在其他示例中,如本文所述,二级计算机可以具有其自己的经过训练的神经网络,从而降低假阳性的风险。
车辆600还可包括信息娱乐SoC 630(例如,车内信息娱乐***(IVI))。尽管示出并描述为SoC,但信息娱乐***可以不是SoC,并且可以包括两个或多个分立组件。信息娱乐SoC 630可包括可用于提供音频(例如,音乐、个人数字助理、导航指令、新闻、无线电等)、视频(例如,电视、电影、流媒体等)、电话(例如,免提通话)、网络连接(例如,LTE、Wi-Fi等)的硬件和软件的组合,和/或向车辆600提供信息服务(例如,导航***、后驻车辅助、无线电数据***、车辆相关信息,如燃油油位、行驶总距离、制动燃油油位、机油油位、车门打开/关闭、空气滤清器信息等)。例如,信息娱乐SoC 630可以是收音机、磁盘播放器,导航***、视频播放器、USB和蓝牙连接、车载电脑、车内娱乐、Wi-Fi、方向盘音频控制、免提语音控制、抬头显示器(HUD)、HMI显示器634、远程通信设备、控制面板(例如,用于控制和/或与各种组件、特征和/或***交互),和/或其他组件。信息娱乐SoC 630还可用于向车辆用户提供信息(例如,视觉和/或听觉),例如来自ADAS***638的信息、自主驾驶信息,例如计划车辆机动、轨迹、周围环境信息(例如,交叉口信息、车辆信息,道路信息等)和/或其他信息。
信息娱乐SoC 630可包括GPU功能。信息娱乐SoC 630可通过总线602(例如,CAN总线、以太网等)与车辆600的其他设备、***和/或部件进行通信。在一些示例中,信息娱乐SoC 630可以耦合到监控MCU,使得信息娱乐***的GPU可以在一个或更多个主控制器636(例如,车辆600的主计算机和/或备用计算机)发生故障的情况下执行一些自驱动功能。在这样的示例中,信息娱乐SoC 630可将车辆600置于司机至安全停车模式,如本文所述。
车辆600还可包括仪表组632(例如,数字仪表板、电子仪表组、数字仪表板等)。仪表组632可包括控制器和/或超级计算机(例如,离散控制器或超级计算机)。仪表组632可包括一组仪表,如车速表、燃油油位、机油压力、转速表、里程表、转向指示灯、换档位置指示灯、一个或更多个安全带警告灯、一个或更多个驻车制动警告灯、一个或更多个发动机故障灯、安全气囊(SRS)***信息、照明控制、安全***控制、,导航信息等。在一些示例中,信息可在信息娱乐SoC 630和仪表组632之间显示和/或共享。换句话说,仪表组632可作为信息娱乐SoC 630的一部分包括在内,反之亦然。
图6D是根据本公开的一些实施例的一个或更多个基于云的服务器与图6A的示例性自主车辆600之间通信的***图。***676可包括一个或更多个服务器678、一个或更多个网络690和车辆,包括车辆600。一个或更多个服务器678可包括多个GPU 684(a)-684(H)(统称为GPU 684)、PCIe交换机682(a)-682(H)(统称为PCIe交换机682),和/或CPU 680(A)-680(B)(本文统称为CPU 680)。GPU 684、CPU 680和PCIe交换机可通过高速互连互连,例如但不限于NVIDIA开发的NVLink接口688和/或PCIE连接686。在一些示例中,GPU 684通过NVLink和/或NV交换机SoC连接,GPU 684和PCIe交换机682通过PCIe互连连接。尽管图示了八个GPU684、两个CPU 680和两个PCIe交换机,但这并不是为了限制。根据实施例,一个或更多个服务器678中的每一个可以包括任意数量的GPU 684、CPU 680和/或PCIe交换机。例如,一个或更多个服务器678可各自包括八个、十六个、三十二个和/或更多gpu 684。
一个或更多个服务器678可通过一个或更多个网络690从车辆接收代表图像的图像数据,该图像显示意外或变化的路况,例如最近开始的道路作业。一个或更多个服务器678可以通过一个或更多个网络690向车辆发送神经网络692、更新的神经网络692和/或地图信息694,包括关于交通和路况的信息。对地图信息694的更新可以包括对HD地图622的更新,例如关于建筑场地、坑洞、绕道、洪水和/或其他障碍物的信息。在一些示例中,神经网络692、更新后的神经网络692和/或地图信息694可源于从环境中的任意数量的车辆接收的数据中表示的新的训练和/或经验,和/或基于在数据中心执行的训练(例如,使用一个或更多个服务器678和/或其他服务器)。
一个或更多个服务器678可用于基于训练数据训练机器学习模型(例如,神经网络)。训练数据可由车辆生成,和/或可在模拟中生成(例如,使用游戏引擎)。在一些示例中,训练数据被标记(例如,神经网络受益于监督学习)和/或经历其他预处理,而在其他示例中,训练数据未被标记和/或预处理(例如,神经网络不需要监督学习)。训练可根据任何一类或更多类机器学习技术执行,包括但不限于:监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主成分和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测以及任何变体或组合。一旦机器学习模型被训练,机器学习模型可被车辆使用(例如,通过一个或更多个网络传输到车辆690,和/或机器学习模型可被一个或更多个服务器678用于远程监控车辆)。
在一些示例中,一个或更多个服务器678可以从车辆接收数据,并将数据应用到最新的实时神经网络,以进行实时智能推理。一个或更多个服务器678可包括深度学习超级计算机和/或由GPU 684供电的专用AI计算机,例如由NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,一个或更多个服务器678可包括仅使用CPU供电的数据中心的深度学习基础设施。
一个或更多个服务器678的深度学习基础设施可以快速实时推理,并可以使用该能力评估和查证车辆600中处理器、软件和/或相关联的硬件的健康状况。例如,深度学习基础设施可以从车辆600接收定期更新,例如,车辆600在该图像序列中定位的图像和/或对象序列(例如,通过计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可运行其自身的神经网络来识别对象,并将其与车辆600识别的对象进行比较,如果结果不匹配且基础设施得出结论,车辆600中的AI出现故障,一个或更多个服务器678可向车辆600发送信号,指示车辆600的故障安全计算机承担控制、通知乘客并完成安全停车操作。
对于推理,一个或更多个服务器678可包括一个或更多个GPU 684和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的结合可能使实时响应成为可能。在其他示例中,例如性能不太关键的地方,可以使用由CPU、FPGA和其他处理器供电的服务器进行推断。
示例计算设备
图7是适用于实施本公开的一些实施例的示例计算设备700的框图。计算设备700可包括直接或间接耦合以下设备的互连***702:存储器704、一个或更多个中央处理单元(CPU)706、一个或更多个图形处理单元(GPU)708、通信接口710、输入/输出(I/O)端口712、输入/输出组件714、电源716、一个或更多个呈现组件718(例如,显示器)和一个或更多个逻辑单元720。在至少一个实施例中,一个或更多个计算设备700可包括一个或更多个虚拟机(VM),和/或其任何组件可包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个GPU 708可以包括一个或更多个vGPU,一个或更多个CPU706可以包括一个或更多个vCPU,和/或一个或更多个逻辑单元720可以包括一个或更多个虚拟逻辑单元。因此,一个或更多个计算设备700可包括离散组件(例如,专用于计算设备700的完整GPU)、虚拟组件(例如,专用于计算设备700的GPU的一部分)或其组合。
尽管图7中的各个模块显示为通过互连***702与线路连接,但这并非旨在限制,仅为清楚起见。例如,在一些实施例中,诸如显示设备的呈现组件718可以被视为I/O组件714(例如,如果显示器是触摸屏)。作为另一示例,CPU 706和/或GPU 708可以包括存储器(例如,除了GPU 708、CPU706和/或其他组件的存储器之外,存储器704还可以代表存储设备)。换句话说,图7的计算设备仅仅是说明性的。不区分“工作站”、“服务器”、“笔记本电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实***”和/或其他设备或***类型,正如在图7的计算设备的范围内所设想的那样。
互连***702可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。互连***702可包括一个或更多个总线或链路类型,例如工业标准体系结构(ISA)总线、扩展工业标准体系结构(EISA)总线、视频电子标准协会(VESA)总线、***组件互连(PCI)总线、***组件互连直通(PCIE)总线,和/或其他类型的总线或链路。在一些实施例中,组件之间存在直接连接。例如,CPU 706可以直接连接到存储器704。此外,CPU 706可以直接连接到GPU 708。在组件之间存在直接连接或点对点连接的情况下,互连***702可以包括用于执行连接的PCIe链路。在这些示例中,计算设备700中不需要包括PCI总线。
存储器704可包括各种计算机可读介质中的任何一种。计算机可读介质可以是可由计算设备700访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或以任何方法或技术实现的可移除和不可移除介质,用于存储信息,例如计算机可读指令、数据结构、程序模块和/或其他数据类型。例如,存储器704可以存储计算机可读指令(例如,表示一个或更多个程序和/或一个或更多个程序元素的指令),例如操作***。计算机存储介质可包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备,或可用于存储所需信息且可由计算设备700访问的任何其他介质。如本文所使用的,计算机存储介质本身不包括信号。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或包含在调制数据信号(例如载波或其他传输机制)中的其他数据类型,并包括任何信息传递介质。术语“调制数据信号”可指以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可以包括有线介质,例如有线网络或直接有线连接,以及无线介质,例如声学、RF、红外和其他无线介质。上述任何组合也应包括在计算机可读介质的范围内。
一个或更多个CPU 706可被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件,以执行本文所述的一个或更多个方法和/或过程。一个或更多个CPU 706可各自包括一个或更多个能够同时处理多个软件线程的核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。一个或更多个CPU 706可以包括任何类型的处理器,并且可以根据所实现的计算设备700的类型包括不同类型的处理器(例如,对于移动设备具有较少内核的处理器和对于服务器具有较多内核的处理器)。例如,根据计算设备700的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(例如数学协处理器)之外,计算设备700还可以包括一个或更多个cpu 706。
除了一个或更多个CPU 706之外,或者从一个或更多个CPU 706选择,一个或更多个GPU 708可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件来执行本文所述的一个或更多个方法和/或过程。一个或更多个GPU 708可以是集成GPU(例如,具有一个或更多个CPU 706和/或一个或更多个GPU 708可以是离散GPU)。在实施例中,一个或更多个GPU 708可以是一个或更多个CPU 706的协处理器。计算设备700可以使用一个或更多个GPU 708来渲染图形(例如,3D图形)或执行通用计算。例如,一个或更多个GPU 708可用于GPU(GPGPU)上的通用计算。一个或更多个GPU 708可以包括数百个或数千个内核,这些内核能够同时处理数百个或数千个软件线程。一个或更多个GPU 708可响应于渲染命令(例如,经由主机接口接收的来自一个或更多个CPU 706的渲染命令)生成用于输出图像的像素数据。一个或更多个GPU 708可以包括图形存储器,例如显示器存储器,用于存储像素数据或任何其他合适的数据,例如GPGPU数据。显示器存储器可以包括作为存储器704的一部分。一个或更多个GPU 708可以包括两个或更多个并行操作的GPU(例如,通过链路)。链路可直接连接GPU(例如,使用NVLINK)或通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每个GPU 708可为输出的不同部分或不同输出(例如,第一GPU用于第一图像,第二GPU用于第二图像)生成像素数据或GPGPU数据。每个GPU可以包括自己的内存,也可以与其他GPU共享内存。
除了一个或更多个CPU 706和/或一个或更多个GPU 708之外,或者从一个或更多个CPU 706和/或一个或更多个GPU 708选择,一个或更多个逻辑单元720可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件执行本文所述的一个或更多个方法和/或过程。在实施例中,一个或更多个CPU 706、一个或更多个GPU 708和/或一个或更多个逻辑单元720可以离散地或联合地执行方法、过程和/或其部分的任意组合。逻辑单元720中的一个或更多个可以是CPU 706和/或GPU 708中的一个或更多个的一部分和/或集成在其中,和/或逻辑单元720中的一个或更多个可以是分立组件,或以其他方式位于一个或更多个CPU 706和/或一个或更多个GPU 708外部,一个或更多个逻辑单元720可以是一个或更多个CPU 706和/或一个或更多个GPU 708的协处理器。
一个或更多个逻辑单元720的示例包括一个或更多个处理核心和/或其组件,例如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM),树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、***组件互连(PCI)或***组件互连直通(PCIe)元件,和/或诸如此类。
通信接口710可以包括一个或更多个接收器、发射器和/或收发器,这些接收器、发射器和/或收发器使计算设备700能够通过包括有线和/或无线通信的电子通信网络与其他计算设备通信。通信接口710可以包括组件和功能,以支持通过多个不同网络中的任何一个进行通信,例如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或InfiniBand进行通信)、低功耗广域网(例如,LoRaWAN、SigFox,等)和/或互联网。
I/O端口712可使计算设备700与其他设备逻辑耦合,包括I/O组件714、一个或更多个呈现组件718和/或其他组件,其中一些组件可内置(例如,集成在)计算设备700中。说明性I/O组件714包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、卫星天线、扫描仪、打印机、无线设备等。I/O组件714可以提供自然用户界面(NUI),该自然用户界面处理由用户生成的空中手势、语音或其他生理输入。在一些情况下,可以将输入传输到适当的网络元件以进行进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪的任意组合,以及与计算设备700的显示器相关联的触摸识别(如下更详细地描述)。计算设备700可以包括深度相机,例如立体相机***、红外相机***、RGB相机***、触摸屏技术,以及这些的组合,用于手势检测和识别。此外,计算设备700可包括能够检测运动的加速计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,加速度计或陀螺仪的输出可由计算设备700用于渲染沉浸式增强现实或虚拟现实。
电源716可包括硬接线电源、电池电源或其组合。电源716可以向计算设备700供电,以使计算设备700的组件能够工作。
一个或更多个呈现组件718可包括显示器(例如显示器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示类型或其组合)、扬声器和/或其他演示组件。一个或更多个呈现组件718可以从其他组件(例如,一个或更多个GPU 708、一个或更多个CPU 706等)接收数据,并输出数据(例如,作为图像、视频、声音等)。
示例数据中心
图8示出了可在本公开的至少一个实施例中使用的示例数据中心800。数据中心800可以包括数据中心基础设施层810、框架层820、软件层830和/或应用层840。
如图8所示,数据中心基础设施层810可包括资源协调器812、分组计算资源814和节点计算资源(“节点C.R.s”)816(1)-816(N),其中“N”表示任何整数。在至少一个实施例中,节点C.R.s 816(1)-816(N)可包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等)、存储设备(例如,动态只读存储器),在一些实施例中,贮存设备(例如固态或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网络交换机、虚拟机(“VM”)、电源模块和/或冷却模块等,节点C.R.s 816(1)-816(N)中的一个或更多个节点C.R.s可对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点C.R.s 816(1)-8161(N)可以包括一个或更多个虚拟组件,例如vGPU、vCPU和/或类似组件,和/或节点C.R.s 816(1)-816(N)中的一个或更多个可以对应于虚拟机(VM)。
在至少一个实施例中,分组计算资源814可包括位于一个或更多个机架(未示出)内的节点C.R.s 816的单独分组,或位于不同地理位置(也未示出)的数据中心内的多个机架。分组计算资源814内的节点C.R.s 816的单独分组可包括分组计算、网络、内存或存储资源,其可被配置或分配以支持一个或更多个工作负载。在至少一个实施例中,包括CPU、GPU和/或其他处理器的多个节点C.R.s 816可分组在一个或更多个机架内,以提供计算资源以支持一个或更多个工作负载。一个或更多个机架还可以包括任意组合的任意数量的电源模块、冷却模块和/或网络交换机。
资源协调器822可配置或以其他方式控制一个或更多个节点C.R.s 816(1)-816(N)和/或分组计算资源814。在至少一个实施例中,资源协调器822可包括用于数据中心800的软件设计基础设施(“SDI”)管理实体。资源协调器822可包括硬件、软件或其一些组合。
在至少一个实施例中,如图8所示,框架层820可包括作业调度器832、配置管理器834、资源管理器836,和/或分布式文件***838。框架层820可包括支持软件层830的软件832和/或应用层840的一个或更多个应用842的框架。软件832或一个或更多个应用842可分别包括基于网页的服务软件或应用,例如亚马逊网络服务、谷歌云和微软Azure提供的服务。框架层820可以是,但不限于,一种自由的开源软件网页应用框架,例如Apache SparkTM(以下简称“Spark”),它可以利用分布式文件***838进行大规模数据处理(例如,“大数据”)。在至少一个实施例中,作业调度器832可以包括Spark驱动器,以促进数据中心800的各个层所支持的工作负载的调度。配置管理器834可以配置不同的层,例如软件层830和框架层820,包括Spark和分布式文件***838,以支持大规模数据处理。资源管理器836可以能够管理映射到或分配用于支持分布式文件***838和作业调度器832的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可包括数据中心基础设施层810处的分组计算资源814。资源管理器1036可与资源协调器812协调以管理这些映射或分配的计算资源。
在至少一个实施例中,包括在软件层830中的软件832可包括由节点C.R.s 816(1)-816(N)、分组计算资源814和/或框架层820的分布式文件***838的至少部分使用的软件。一种或多种软件可包括但不限于互联网网页搜索软件,电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,包括在应用层840中的应用842可以包括由节点C.R.s 816(1)-816(N)、分组计算资源814和/或框架层820的分布式文件***838的至少部分使用的一种或多种类型的应用,但不限于任何数量的基因组学应用、感知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
在至少一个实施例中,配置管理器834、资源管理器836和资源协调器812中的任何一个都可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实施任何数量和类型的自修改动作。自修改动作可使数据中心800的数据中心操作员免于做出可能错误的配置决策,并可能避免数据中心未充分利用和/或性能不佳的部分。
根据本文所述的一个或更多个实施例,数据中心800可包括用于训练一个或更多个机器学习模型或使用一个或更多个机器学习模型预测或推理信息的工具、服务、软件或其他资源。例如,一个或更多个机器学习模型可通过使用上述关于数据中心800的软件和/或计算资源,根据神经网络架构计算权重参数来训练。在至少一个实施例中,与一个或更多个神经网络相对应的经过训练或部署的机器学习模型可用于通过使用通过一个或更多个训练技术(例如但不限于本文所述的训练技术)计算的权重参数,使用上述关于数据中心800的资源来推理或预测信息。
在至少一个实施例中,数据中心800可以使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或相应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上述一个或更多个软件和/或硬件资源可配置为服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适用于实施本发明实施例的网络环境可包括一个或更多个客户端设备、服务器、网络附接存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图7的一个或更多个计算设备700的一个或更多个实例上实现——例如,每个设备可以包括计算设备700的类似组件、特征和/或功能。另外,后端设备(服务器,NAS等)可被包括为数据中心800的一部分,其示例在本文中参照图8更详细地描述。
网络环境的组件可通过有线、无线或两者兼有的一个或更多个网络相互通信。该网络可以包括多个网络,或者网络的网络。举例来说,该网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(例如互联网和/或公共交换电话网(PSTN))和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点的组件(以及其他组件)可以提供无线连接。
兼容的网络环境可能包括一个或更多个对等网络环境——在这种情况下,服务器可能不包括在网络环境中——以及一个或更多个客户机-服务器网络环境——在这种情况下,一个或更多个服务器可能包括在网络环境中。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境及其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器,以及在一个或更多个服务器上实现的分布式文件***,其可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或一个或更多个应用程序可分别包括基于网页的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网页的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是,但不限于,一种免费的开源软件网页应用框架,例如,可以使用分布式文件***进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可提供执行本文所述计算和/或数据存储功能(或其中一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一种都可以从中央或核心服务器(例如,一个或更多个数据中心的服务器)分布到多个位置,这些数据中心可以分布在一个州、一个地区、一个国家、全球等地。如果与用户(例如,客户端设备)的连接相对靠近一个或更多个边缘服务器,则一个或更多个核心服务器可将功能的至少一部分指定给一个或更多个边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
一个或更多个客户端设备可包括本文关于图7所述的一个或更多个示例计算设备700的至少一些组件、特征和功能。作为示例而非限制,客户端设备可体现为个人计算机(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 (23)
1.一种处理器,包括:一个或更多个电路,用于基于对应于表面的一维(1D)表面轮廓执行一个或更多个操作,所述1D表面轮廓使用自由空间区域内的对象的三维(3D)点云而被生成并且与至少一个边界形状的高度相对应,所述至少一个边界形状对应于对象的所述3D点云中的至少一个对象。
2.根据权利要求1所述的处理器,其中使用运动结构(SfM)算法来生成所述3D点云。
3.根据权利要求1所述的处理器,其中所述一个或更多个操作包括使用鉴于所述1D表面轮廓的一个或更多个高度阈值来检测沿所述表面的至少一个表面扰动。
4.根据权利要求1所述的处理器,其中所述一个或更多个操作进一步包括:至少部分地基于所述1D表面轮廓,确定对应于所述至少一个表面扰动的几何形状。
5.根据权利要求1所述的处理器,其中所述处理器在以下的至少一个内实现:用于自主或半自主机器的控制***;用于自主或半自主机器的感知***;用于执行模拟操作的***;用于执行深度学习操作的***;使用边缘设备实现的***;包含一个或更多个虚拟机(VM)的***;使用机器人实现的***;至少部分地在数据中心实现的***;或至少部分地使用云计算资源实现的***。
6.一种方法,包括:至少部分地基于由一个或更多个传感器生成的传感器数据生成三维(3D)点云;通过过滤掉位于自由空间边界之外的所述3D点云中的点子集,确定所述3D点云的经过滤的点子集;沿着所述3D点云的经过滤子集,以一个或更多个间隔应用边界形状的一次或更多次迭代;对于所述边界形状的至少一次迭代,至少部分地基于所述边界形状的所述迭代内的所述经过滤的点子集中的点,确定相对于所述表面的高度;在所述边界形状的所述至少一次迭代中,生成对应于所述表面的一维(1D)表面轮廓;以及至少部分地基于所述1D表面轮廓执行一个或更多个操作。
7.根据权利要求6所述的方法,其中使用运动结构(SfM)算法生成所述3D点云,并且所述传感器数据表示由一个或更多个图像传感器捕获的多个图像。
8.根据权利要求7所述的方法,其中所述一个或更多个图像传感器包括单目相机的单个图像传感器,并且所述多个图像包括当所述单目相机设置在其上的对象沿所述表面移动时由所述单目相机捕获的图像序列。
9.根据权利要求6所述的方法,进一步包括使用点云增密算法从所述3D点云生成增密的3D点云,其中所述经过滤子集是所述增密的3D点云。
10.根据权利要求6所述的方法,进一步包括从所述3D点云生成估计的地平面,其中在所述边界形状的每次迭代中确定所述高度是相对于所述估计的地平面。
11.根据权利要求6所述的方法,其中所述一个或更多个操作包括使用鉴于所述1D表面轮廓的一个或更多个高度阈值,检测沿所述表面的至少一个表面扰动。
12.根据权利要求6所述的方法,其中所述一个或更多个操作进一步包括至少部分地基于所述1D表面轮廓,确定对应于所述至少一个表面扰动的几何形状。
13.根据权利要求6所述的方法,其中沿所述3D点云的经过滤子集以所述间隔应用所述边界形状的迭代是以下的至少之一:沿对象在所述表面的航向;或沿所述表面的轮廓。
14.根据权利要求6所述的方法,其中所述表面的轮廓是与沿行驶表面的一个或更多个车道的形状、数量或位置中的至少一个相对应的车道轮廓。
15.根据权利要求6所述的方法,其中所述边界形状的边界形状高度被确定,使得所述3D点云中高于相对于所述表面的所述边界形状高度的点被过滤掉。
16.根据权利要求6所述的方法,其中确定3D点云的所述经过滤子集包括:接收表示所述自由空间边界的现实世界位置的数据;确定所述3D点云内不在所述自由空间边界内的所述点子集;以及过滤掉或忽略所述3D点云中的所述点子集。
17.一种方法,包括:接收表示由车辆的相机捕获的包括行驶表面的环境的图像序列的图像数据;确定所述图像数据中的对应于所述环境内的可行驶自由空间的部分;使用运动结构(SfM)算法生成对应于所述图像数据的所述部分的三维(3D)点云;确定沿所述行驶表面的纵向方向分量;沿着所述纵向方向分量应用边界形状的滑动窗口;对于所述滑动窗口的每次迭代,计算至少一个高度值;至少部分地基于所述滑动窗口的每次迭代的所述至少一个高度值,生成所述行驶表面的表面轮廓;以及至少部分地基于所述表面轮廓,由所述车辆执行一个或更多个操作。
18.根据权利要求17所述的方法,其中确定沿所述行驶表面的所述纵向方向分量包括:接收表示所述行驶表面的至少一条车道的车道轮廓的数据;以及使用根据所述车道轮廓的所述至少一条车道的方向作为所述纵向方向分量。
19.根据权利要求17所述的方法,其中所述滑动窗口的每次迭代与每个前面的迭代和每个随后的迭代以预定的间隔间隔开。
20.根据权利要求17所述的方法,其中所述边界形状的滑动窗口用于第一实例,并且所述边界形状的滑动窗口的多个额外实例沿所述行驶表面以横向间隔应用。
21.根据权利要求17所述的方法,其中生成对应于所述图像数据的所述部分的所述3D点云包括:过滤掉所述3D点云中位于定义所述可行驶自由空间的自由空间边界之外的点。
22.根据权利要求17所述的方法,进一步包括确定对应于所述行驶表面的估计的地平面,其中在每次迭代的所述至少一个高度值是相对于所述估计的地平面的。
23.根据权利要求22所述的方法,其中确定所述估计的地平面包括使用关于所述3D点云的随机样本共识(RANSAC)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962946689P | 2019-12-11 | 2019-12-11 | |
US62/946,689 | 2019-12-11 | ||
PCT/US2020/062091 WO2021118809A1 (en) | 2019-12-11 | 2020-11-24 | Surface profile estimation and bump detection for autonomous machine applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115039129A true CN115039129A (zh) | 2022-09-09 |
Family
ID=76318173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080095468.7A Pending CN115039129A (zh) | 2019-12-11 | 2020-11-24 | 用于自主机器应用的表面轮廓估计和***检测 |
Country Status (3)
Country | Link |
---|---|
US (3) | US11657532B2 (zh) |
CN (1) | CN115039129A (zh) |
WO (1) | WO2021118809A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020168313A1 (en) * | 2019-02-15 | 2020-08-20 | Arizona Board Of Regents On Behalf Of The University Of Arizona | Mobile 3d imaging system and method |
US20200348143A1 (en) * | 2019-05-03 | 2020-11-05 | Apple Inc. | Adjusting heading sensor output based on image data |
US11657532B2 (en) * | 2019-12-11 | 2023-05-23 | Nvidia Corporation | Surface profile estimation and bump detection for autonomous machine applications |
DE112021002696T5 (de) * | 2020-05-11 | 2023-02-23 | Cognex Corporation | Verfahren und apparate zum extrahieren von profilen aus dreidimensionalen bildern |
US11708066B2 (en) * | 2021-01-21 | 2023-07-25 | Motional Ad Llc | Road surface condition guided decision making and prediction |
US11312300B1 (en) * | 2021-01-29 | 2022-04-26 | Toyota Motor Engineering & Manufacturing North America, Inc. | Object notification systems for identifying and notifying vehicles of relevant objects |
KR20220128787A (ko) * | 2021-03-15 | 2022-09-22 | 현대자동차주식회사 | 라이다 센서를 이용한 객체 추적 방법 및 장치와, 이 방법을 실행하기 위한 프로그램을 기록한 기록 매체 |
KR20230000626A (ko) * | 2021-06-25 | 2023-01-03 | 현대자동차주식회사 | 스티어링 휠의 경고 진동 생성 장치 및 방법 |
US12008788B1 (en) * | 2021-10-14 | 2024-06-11 | Amazon Technologies, Inc. | Evaluating spatial relationships using vision transformers |
US12039663B2 (en) | 2021-10-28 | 2024-07-16 | Nvidia Corporation | 3D surface structure estimation using neural networks for autonomous systems and applications |
US20230135234A1 (en) * | 2021-10-28 | 2023-05-04 | Nvidia Corporation | Using neural networks for 3d surface structure estimation based on real-world data for autonomous systems and applications |
WO2023091104A1 (en) * | 2021-11-19 | 2023-05-25 | Oyak Renault Otomobi̇l Fabri̇kalari Anoni̇m Şi̇rketi̇ | A method for energy efficient control of active and semi-active suspension systems |
CN114261408B (zh) * | 2022-01-10 | 2024-05-03 | 武汉路特斯汽车有限公司 | 一种可识别路况的自动驾驶方法、***及车辆 |
CN114355378B (zh) * | 2022-03-08 | 2022-06-07 | 天津云圣智能科技有限责任公司 | 无人机的自主导航方法、装置、无人机及存储介质 |
DE102022208646A1 (de) * | 2022-08-22 | 2024-02-22 | Zf Friedrichshafen Ag | Verfahren zur Hinderniserkennung auf unebenem Untergrund |
US20240092322A1 (en) * | 2022-09-18 | 2024-03-21 | Honda Motor Co., Ltd. | Control device for automatic stop of vehicle |
CN118269997A (zh) * | 2022-12-30 | 2024-07-02 | 华为技术有限公司 | 一种路面检测方法及相关装置 |
CN117826843B (zh) * | 2024-03-04 | 2024-05-03 | 湖北华中电力科技开发有限责任公司 | 基于三维点云的无人机智能避障方法及*** |
CN118244299A (zh) * | 2024-05-23 | 2024-06-25 | 江苏智能无人装备产业创新中心有限公司 | 基于行驶路径的越野环境负障碍物预测***、方法及车辆 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5065618A (en) * | 1990-11-14 | 1991-11-19 | Hodges Transportation Inc. | Method and apparatus for determining terrain surface profiles |
US8521486B2 (en) * | 2009-08-06 | 2013-08-27 | Paul B. Morton | Methods for searching for arrangements of shapes subject to boundary distance constraints among those shapes |
US8569700B2 (en) * | 2012-03-06 | 2013-10-29 | Omnivision Technologies, Inc. | Image sensor for two-dimensional and three-dimensional image capture |
DE102012112164A1 (de) | 2012-12-12 | 2014-06-12 | Continental Teves Ag & Co. Ohg | Videobasierte erkennung von hindernissen auf einer fahrbahn |
GB2526342A (en) * | 2014-05-22 | 2015-11-25 | Nokia Technologies Oy | Point cloud matching method |
CN105184852B (zh) * | 2015-08-04 | 2018-01-30 | 百度在线网络技术(北京)有限公司 | 一种基于激光点云的城市道路识别方法及装置 |
DE102015121537A1 (de) * | 2015-12-10 | 2017-06-14 | Elektronische Fahrwerksysteme GmbH | Verfahren zur Einstellung von Fahrwerksparametern sowie ein Fahrzeug |
US11043042B2 (en) * | 2016-05-16 | 2021-06-22 | Hewlett-Packard Development Company, L.P. | Generating a shape profile for a 3D object |
US10346723B2 (en) * | 2016-11-01 | 2019-07-09 | Snap Inc. | Neural network for object detection in images |
US11379688B2 (en) * | 2017-03-16 | 2022-07-05 | Packsize Llc | Systems and methods for keypoint detection with convolutional neural networks |
SG11201909082TA (en) * | 2017-03-31 | 2019-10-30 | Agency Science Tech & Res | Systems and methods that improve alignment of a robotic arm to an object |
US10745005B2 (en) * | 2018-01-24 | 2020-08-18 | Ford Global Technologies, Llc | Inter-vehicle cooperation for vehicle self height estimation |
DE112019000065T5 (de) * | 2018-02-02 | 2020-03-05 | Nvidia Corporation | Sicherheitsprozeduranalyse zur hindernisvermeidung in einem autonomen fahrzeug |
WO2019178548A1 (en) * | 2018-03-15 | 2019-09-19 | Nvidia Corporation | Determining drivable free-space for autonomous vehicles |
US10885698B2 (en) * | 2018-08-10 | 2021-01-05 | Nvidia Corporation | Method for programmable timeouts of tree traversal mechanisms in hardware |
US11762061B2 (en) * | 2019-07-26 | 2023-09-19 | Deka Products Limited Partnership | System and method for free space estimation |
US11733353B2 (en) * | 2019-11-14 | 2023-08-22 | Nio Technology (Anhui) Co., Ltd. | Object detection using local (ground-aware) adaptive region proposals on point clouds |
US11657532B2 (en) * | 2019-12-11 | 2023-05-23 | Nvidia Corporation | Surface profile estimation and bump detection for autonomous machine applications |
US11669820B2 (en) * | 2021-01-08 | 2023-06-06 | The Toronto-Dominion Bank | Initiating split data transfers at a terminal |
-
2020
- 2020-11-24 US US17/103,680 patent/US11657532B2/en active Active
- 2020-11-24 CN CN202080095468.7A patent/CN115039129A/zh active Pending
- 2020-11-24 WO PCT/US2020/062091 patent/WO2021118809A1/en active Application Filing
-
2023
- 2023-02-27 US US18/174,770 patent/US11900629B2/en active Active
- 2023-11-08 US US18/504,916 patent/US20240078695A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11657532B2 (en) | 2023-05-23 |
WO2021118809A1 (en) | 2021-06-17 |
US20240078695A1 (en) | 2024-03-07 |
US20210183093A1 (en) | 2021-06-17 |
US20230230273A1 (en) | 2023-07-20 |
US11900629B2 (en) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11900629B2 (en) | Surface profile estimation and bump detection for autonomous machine | |
US11884294B2 (en) | Lane change planning and control in autonomous machine applications | |
US11966838B2 (en) | Behavior-guided path planning in autonomous machine applications | |
JP2021089723A (ja) | LiDAR知覚のためのマルチビュー・ディープ・ニューラル・ネットワーク | |
WO2021262603A1 (en) | Sensor fusion for autonomous machine applications using machine learning | |
CN114155272A (zh) | 自主机器应用中的自适应目标跟踪算法 | |
CN115315709A (zh) | 自主***中用于行为预测的基于模型的增强学习及应用 | |
US20230054759A1 (en) | Object tracking using lidar data for autonomous machine applications | |
US20230110713A1 (en) | Training configuration-agnostic machine learning models using synthetic data for autonomous machine applications | |
US11926346B2 (en) | Behavior planning for autonomous vehicles in yield scenarios | |
US20240059295A1 (en) | Multi-view geometry-based hazard detection for autonomous systems and applications | |
US20230406315A1 (en) | Encoding junction information in map data | |
US20220301186A1 (en) | Motion-based object detection for autonomous systems and applications | |
CN116106934A (zh) | 用于自主机器应用的基于粒子的危险检测 | |
CN115701623A (zh) | 自主机器应用中范围图像映射的置信传播 | |
CN115398477A (zh) | 立体成像的混合解决方案 | |
CN117581117A (zh) | 自主机器***和应用中使用LiDAR数据的动态对象检测 | |
CN116772874A (zh) | 用于自主***和应用的使用占用网格进行危险检测 | |
CN116106905A (zh) | 基于雷达的变道安全*** | |
CN117396926A (zh) | 用于自主机器***和应用的基于感知的标志检测和解释 | |
US20230351769A1 (en) | Detecting hazards based on disparity maps using machine learning for autonomous machine systems and applications | |
US20230351638A1 (en) | Detecting hazards based on disparity maps using computer vision for autonomous machine systems and applications | |
US20240255307A1 (en) | Intersection detection for mapping in autonomous systems and applications | |
US20240028041A1 (en) | Ground surface estimation using depth information for autonomous systems and applications | |
US20240043040A1 (en) | Lane biasing for navigating in autonomous systems and applications |
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 |