用于自主驾驶应用的地图创建和定位的制作方法

文档序号:30526338发布日期:2022-06-25 07:23阅读:151来源:国知局
用于自主驾驶应用的地图创建和定位的制作方法
用于自主驾驶应用的地图创建和定位


背景技术:

1.绘图和定位是自主驾驶功能的重要过程。高清(hd)地图、传感器感知或其组合通常用于相对于hd地图来定位车辆,以便做出规划和控制决定。通常,使用配备有高级、高精度传感器的调查车辆生成常规hd地图。然而,这些传感器对于在消费级车辆上实现而言过于昂贵。在典型的部署中,调查车辆能够在单个驾驶之后生成适合于定位的hd地图。不幸的是,由于具有这种高成本传感器的调查车辆的稀缺性,任何特定区域的hd地图的可用性可能集中在调查汽车操作的大都市或枢纽周围。对于更远的区域、较少行进的区域以及距这些活动枢纽较大距离的区域,可能已经从少至单个驾驶(即,如果数据完全可用)收集用于生成hd地图的数据。因此,在单个驾驶导致较低质量或较不适合此目的的传感器数据(例如,由于遮挡、动态对象、恶劣天气效应、碎片、构造伪像、暂时性硬件故障和/或可能损害所收集的传感器数据的质量的其他问题)的情况下,从传感器数据生成的hd地图可能不安全或可靠以用于定位。
2.为了补救这些质量问题,可能需要另一调查车辆在质量受损的位置处执行另一驾驶。然而,识别、部署、传感器数据生成和地图更新过程可能由于系统数据收集和地图创建过程而花费较长的时间段,使得hd地图不可用,直到进行更新为止。在道路状况或布局随时间频繁或急剧改变的情况下(例如,由于建造),该问题恶化,因为可能没有用于识别这些变化的机制,并且即使被识别,也没有办法在不部署另一调查车辆的情况下生成更新的数据。
3.此外,因为消费者车辆可能不配备有相同的高质量、高成本传感器,所以定位至hd地图(即使当可用时)不能使用许多传感器模态(例如,相机、lidar、radar等)执行,因为数据的质量和类型可能不与用于生成hd地图的数据对准。因此,定位仅依赖于全球导航卫星系统(gnss)数据,即使对于最昂贵且精确的传感器模型,其仍然仅在几米内实现精确度和/或在某些情况下具有可变的精确度。几米的不准确性可能将车辆放置在与当前行驶车道不同的车道上,或者放置在除了当前行驶的车道之外的道路一侧。照此,使用常规解决方案来生成hd地图可能导致不准确的地图,该不准确的地图在由于不准确的定位而合成时,对于实现安全且可靠的高度自主车辆(例如,3级、4级和5级)自主车辆存在显著障碍。


技术实现要素:

4.本公开的实施例涉及用于自主驾驶应用的地图创建和定位的方法。具体地,本公开的实施例包括用于数据生成、使用所生成的数据的地图创建、以及定位到所创建的地图的端对端系统,该系统可与商用车辆中的通用消费者级传感器一起使用。例如,在数据生成过程期间,采用消费者质量传感器的数据收集车辆和/或消费车辆可以用于生成传感器数据。所产生的数据可以对应于地图流——其可以包括传感器数据流、来自深度神经网络(dnn)的感知输出和/或相对轨迹(例如,旋转和平移)数据——与任何数量的车辆的任何数量的驾驶相对应。照此,与常规系统的系统数据收集努力相反,当前系统可使用许多车辆和许多驾驶的众包数据生成。为了减少系统的带宽和存储器要求,来自地图流的数据可以被最小化(例如,通过滤波出动态对象、执行lidar平面切片或lidar点减少、将基于感知或相
机的输出转换成3d位置信息、仅针对特定数据类型执行活动等)和/或被压缩(例如,使用增量压缩技术)。作为使用消费级传感器生成地图流数据的结果,传感器数据——一旦被转换为用于定位的地图形式——可以直接用于定位,而不是仅依赖于gnss数据。此外,因为跟踪与每个驾驶相对应的相对的轨迹信息,所以该信息可用于生成可定位的各个道路片段(例如,25米、50米等尺寸的道路片段),从而允许在厘米范围内的定位精度。
5.在地图创建期间,地图流可以用于生成地图数据——以及最终生成融合的hd地图——其表示通过多个驾驶生成的数据。此外,当生成新地图流时,这些附加驾驶可以与现有地图流数据合并、组合或集成,并且用于进一步增加hd地图的鲁棒性。例如,每个地图流可以被转换成相应的地图,并且来自任何数量的地图(或相应的地图流)的任何数量的驾驶片段可以用于生成特定驾驶片段的融合hd地图表示。驾驶片段对可相对于彼此几何配准,以确定表示驾驶对的姿态(或帧)之间的旋转和平移的姿态链路。表示姿态链路的帧图可被分成道路片段——例如,用于相对定位的道路片段——并且对应于每个道路片段的姿态可经历优化。在每个片段内产生的最终姿态可以用于融合各个传感器数据和/或感知输出以用于生成最终的融合hd地图。作为结果,并且由于地图数据对应于消费者质量传感器,除在实施例中使用gnss数据之外,来自hd地图的传感器数据和/或感知结果(例如,地标位置)可以直接用于定位(例如,通过将当前实时传感器数据和/或感知与对应的地图信息进行比较)。
6.例如,当定位到融合的hd地图时,可以基于传感器数据和/或来自传感器模态的感知输出与对应于相同传感器模态的地图数据的比较来生成个体定位结果。例如,可以使用对应于传感器模态的数据在每个帧处采样成本空间,可以使用多个个体的成本空间来生成聚合成本空间,并且可以使用滤波(例如,使用卡尔曼滤波器)来最终确定特定传感器模态的定位结果。可以针对任何数量的传感器模态(例如,lidar、radar、相机等)重复此过程,并且可以将结果融合在一起以确定当前帧的最终融合定位结果。然后,可以将融合定位结果推进至下一帧,并且用于确定下一帧的融合定位,等等。由于hd地图包括用于定位的各个道路片段,并且每个道路片段具有相应的全局位置,所以随着车辆定位到与道路片段对应的局部或相对坐标系,也可以实现全局定位结果。
附图说明
7.下面参考附图详细描述用于自主驾驶应用的地图创建和定位的本系统和方法,其中:
8.图1描绘了根据本公开的一些实施例的地图创建和定位系统的过程的数据流程图;
9.图2描绘了根据本公开的一些实施例的用于地图流生成的过程的数据流程图;
10.图3是示出了根据本公开的一些实施例的用于地图流生成的方法的流程图;
11.图4描绘了根据本公开的一些实施例的用于地图创建过程的数据流程图;
12.图5a至图5b描绘了根据本公开的一些实施例的用于将地图流转换成用于配准的地图的过程的数据流程图;
13.图5c描绘了根据本公开的一些实施例的确定片段以及用于配准的片段之间的成对连接的示意图;
14.图5d描绘了根据本公开的一些实施例的用于使用不同方法对不同数量的区段进行配准的成对连接的数量的表格;
15.图5e至图5f描绘了根据本公开的一些实施例使用面向前的相机和面向后的相机配准两个基础层地图片段的示例可视化;
16.图6a描绘了根据本公开的一些实施例在配准多个驾驶的片段之后生成的示例帧图;
17.图6b描绘了根据本公开的一些实施例的使用图6a的帧图的道路片段生成;
18.图6c描绘了根据本公开的一些实施例的与图6b的帧图的所确定的道路片段相对应的片段图;
19.图6d描绘了根据本公开的一些实施例的用于道路片段的姿态的示例姿态链路误差计算;
20.图6e-6g描绘了根据本公开的一些实施例的示例姿态图和相应的优化算法;
21.图6h描绘了根据本公开的一些实施例的从图6g的姿态图确定的最终化的道路片段;
22.图6i描绘了根据本公开的一些实施例的片段图的道路片段的原点之间的变换;
23.图7是示出了根据本公开的一些实施例的用于地图创建的方法的流程图;
24.图8a描绘了根据本公开的一些实施例的定位过程的数据流程图;
25.图8b描绘了根据本公开的一些实施例的车辆原点、道路片段原点以及用于定位的全局原点之间的关系;
26.图9a描绘了根据本公开的一些实施例的与在定位期间生成的帧相对应的采样成本空间;
27.图9b描绘了根据本公开的一些实施例的与在定位期间生成的多个帧的采样成本空间相对应的聚合成本空间;
28.图9c描绘了根据本公开的一些实施例的在定位期间生成的滤波的聚合成本空间;
29.图10a-10c描绘了根据本公开的一些实施例用于对基于相机的定位的采样的成本空间的姿态进行采样的示例可视化;
30.图11a-11b描绘了根据本公开的一些实施例的用于对基于radar的定位的采样的成本空间的姿态进行采样的示例可视化;
31.图12a-12d描绘了根据本公开的一些实施例的用于对基于lidar的定位的采样成本空间的姿态进行采样的示例可视化;
32.图13描绘了根据本公开的一些实施例的融合多个定位结果以生成最终定位结果的示例;
33.图14是示出了根据本公开的一些实施例的用于定位的方法的流程图;
34.图15a是根据本公开的一些实施例的示例自主车辆的图示;
35.图15b是根据本公开的一些实施例的图15a的示例自主车辆的相机位置和视野的示例;
36.图15c是根据本公开的一些实施例的图15a的示例自主车辆的示例系统架构的框图;
37.图15d是根据本公开的一些实施例的用于在一个或更多个基于云的服务器与图
15a的示例自主车辆之间通信的系统图;
38.图16是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
39.图17是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
40.公开了涉及用于自主驾驶应用的地图创建和定位的系统和方法。虽然本公开可相对于示例自主车辆1500(或者,在本文中称为“车辆1500”或“本车1500”,在本文中相对于图15a至图15d描述了其示例)进行描述,但是这并非旨在进行限制。例如,本文所述的系统和方法可由非自主车辆、半自主车辆(例如,在一个或更多个高级驾驶员辅助系统(adas)中)、机器人、仓库车辆、越野车辆、飞行船、船和/或其他车辆类型使用。此外,尽管本公开可关于自主驾驶进行描述,但这不旨在是限制性的。例如,本文中描述的系统和方法可用于机器人(例如,用于机器人的地图和定位)、空中系统(例如,用于无人机或其他飞行器的地图和定位)、划船系统(例如,用于船只的地图和定位)、模拟环境(例如,用于在虚拟模拟环境内地图和定位虚拟车辆)和/或其他技术领域,诸如用于数据生成和监管、地图创建和/或定位。
41.参考图1,图1描绘了根据本公开的一些实施例的地图创建和定位系统的过程100的数据流程图。应当理解,本文所述的这种和其他布置仅作为示例进行阐述。除了或代替所示的布置和元件,可使用其他布置和元件(例如,机器、接口、功能、次序、功能分组等),并且可完全省略一些元件。进一步,本文描述的许多元件是可以被实现为分立或分布式组件或与其他组件结合、以及以任何合适的组合和位置的功能实体。本文描述为由实体执行的各个功能可由硬件、固件和/或软件执行。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。
42.在一些实施例中,车辆1500可包括本文关于图15a-15d描述的车辆1500的类似组件、特征、和/或功能性。此外,在各实施例中,地图创建106可以在一个或更多个数据中心中执行,并且可以使用如本文相对于示例计算设备1600和/或示例数据中心1700所描述的类似组件、特征和/或功能来执行。在一些实施例中,可在单个车辆1500内执行图1的整个端到端过程100。虽然在图1中仅示出了单个车辆1500,但是这并非旨在是限制性的。例如,任何数量的车辆1500可以用于生成用于地图流生成104的传感器数据102,并且任何数量的(不同的)车辆1500可以用于生成用于定位110的传感器数据102。此外,对于在地图流生成104、地图创建106和/或定位110过程中使用的每个车辆1500,除了传感器配置和/或其他车辆属性之外,车辆制作、型号、年份和/或类型可以是相同的、相似的和/或不同的。
43.过程100可以包括用于地图流生成104、地图创建106和定位110的操作。例如,过程100可以被执行为端到端系统的一部分,所述端到端系统依赖于使用来自任意数量的驾驶上的多个车辆1500中的任意的车辆的传感器数据102生成的地图流、使用从车辆1500接收的地图流数据的地图创建106、以及定位110到使用地图创建106过程生成的地图(例如,高清(hd)地图)。在一些非限制性实施例中,由地图数据108表示的地图可以包括针对或由从不同传感器模态收集的数据或针对个体传感器模态的个体传感器生成的地图。例如,地图数据108可以表示与基于图像的定位相对应的第一地图(或地图层)、与基于lidar的定位相对应的第二地图(或地图层)、与基于radar的定位相对应的第三地图(或地图层)等等。在一些实施例中,基于图像的定位例如可使用对应于前向相机的第一地图(或地图层)和对应于
后向相机的第二地图(其可对应于或不对应于同一地图层)等来执行。因此,根据接收地图数据108并且对其执行定位110的车辆1500的传感器配置,仅将地图数据108的必要部分发送至车辆1500。作为非限制性示例,在第一车辆1500包括一个或更多个相机和一个或更多个radar传感器而不是一个或更多个lidar传感器的情况下,相机地图层和radar地图层可以被传输至车辆1500并且lidar地图层可以不被传输至车辆1500。因此,车辆1500上的存储器使用量减少并且带宽被保留,因为lidar地图层可能不被传输和/或存储在车辆1500上。
44.此外,当车辆1500使用地图数据108导航环境以用于定位110时,可以执行正常检查112以确保考虑到改变的道路状况、道路结构、建筑等,一个或更多个地图是最新的或准确的。照此,当确定地图的一部分或片段低于期望质量时——例如,由于定位至地图的困难——地图流生成104可以被执行并且用于经由地图创建106更新对应于片段的特定部分的一个或更多个地图。因此,端到端系统不仅可以用于生成用于定位110的地图,而且还可以确保地图随时间保持最新以用于准确的定位。本文中更详细地描述了地图流生成104、地图创建106和定位116过程中的每一个。
45.地图流生成
46.为了生成地图流,任何数量的车辆1500(例如,消费者车辆、数据收集车辆、其组合)可以执行任何数量的驾驶。例如,每个车辆1500可从城镇、城市、州、国家、大陆、和/或世界周围的位置驾驶通过各个道路片段,并且在驾驶期间可使用任何数量的传感器(例如,lidar传感器1564、radar传感器1560、相机1568、1570、1572、1574、1598等、惯性测量单元(imu)传感器1566、超声波传感器1562、麦克风1596、速度传感器1544、转向传感器1540、全球导航卫星系统(gnss)传感器1558等)生成传感器数据102。每个个体车辆1500可以生成传感器数据102可以使用传感器数据102用于对应于车辆1500的特定驾驶的地图流生成104。被生成为对应于来自单个车辆1500的不同驾驶和来自任何数量的其他车辆1500的驾驶的地图流可以用于地图创建106,如本文中更详细描述的。
47.由于使用多个地图流来生成针对任何特定道路片段的地图数据108,来自每个驾驶的个体地图流不需要像在常规系统中那样高精确度或高保真度。例如,常规系统使用配备有传感器类型的调查车辆,所述传感器类型非常昂贵并且因此对于安装在消费者车辆中是不希望的(例如,因为车辆的成本将大幅增加)。然而,这些调查车辆上的传感器可生成即使在单个驾驶之后也可足够可靠的传感器数据。然而,不利的是,在特定驾驶包括大量动态或暂态因素(诸如但不限于交通、建筑伪像、碎片、遮挡、恶劣天气影响、暂态硬件故障、或传感器数据质量问题的其他源)的情况下,单个驾驶可能不产生适于生成用于定位的准确地图的数据。此外,随着道路状况改变,并且由于可用调查车辆的数量少,地图可能不被快速更新——例如,地图直到另一调查车辆穿越相同路线才被更新。相反,利用本公开内容的系统,通过利用具有较低成本大众市场传感器的消费者车辆,来自任意数量的驾驶的任意数量的地图流可以用于更快速且更频繁地生成地图数据108。因此,来自存在遮挡或其他质量问题的驾驶的个体地图流可以在较小程度上被依赖,并且来自较高质量传感器数据的地图流可以更严重地被依赖。此外,随着道路结构、布局、状况、周围环境和/或其他信息改变,可以执行正常检查112以更快地(例如,实时或基本上实时)更新地图数据108。该过程的结果是用于地图流生成的更众包的方法,而不是常规方法的系统数据收集努力。
48.现在参见图2,图2描绘了根据本公开的一些实施例的用于地图流生成的过程104
的数据流程图。例如,过程104可以对应于由车辆1500从单个驾驶生成地图流。该过程104可以由任何数量的车辆1500在任何数量的驾驶上重复。如本文中所描述的,传感器数据102可以对应于来自任何数量的不同传感器模态和/或单个模态的任何数量的传感器的传感器数据102。例如,传感器数据102可以对应于本文关于图15a-15d的车辆1500所描述的任何传感器类型,诸如一个或更多个gnss传感器1558(例如,一个或更多个全球定位系统传感器),一个或更多个radar传感器1560、一个或更多个超声波传感器1562、一个或更多个lidar传感器1564、超声波传感器、一个或更多个imu传感器1566(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等),一个或更多个麦克风1576、一个或更多个立体相机1568、一个或更多个广角相机1570(例如,鱼眼相机)、一个或更多个红外相机1572、一个或更多个环绕相机1574(例如,360度相机)、一个或更多个长程和/或中程相机1598,速度传感器1544(例如,用于测量车辆1500的速度)和/或其他传感器类型。在一些实施例中,传感器数据102可以直接包括在地图流210中——例如,在使用或不使用数据压缩器208进行压缩的情况下。例如,对于lidar数据和/或radar数据,由传感器数据102表示的检测可以在三维(3d)坐标空间(例如,世界空间)中,并且lidar点和/或radar点(或检测)可以直接用于分别生成lidar图层和/或radar图层。在一些实施例中,可以例如使用数据转换器206将传感器数据102从二维(2d)坐标空间(例如,图像空间)转换到3d坐标空间,并且然后包括在地图流210中(例如,在实施例中,在使用数据压缩器208进行压缩之后)。
49.在一些实施例中,可以在lidar数据(例如,在使用原始lidar数据生成的点云上)上执行lidar切割,以将lidar数据切割成不同的高度范围。lidar数据可以被切成任意数量的高度范围。在一些实施例中,可相对于车辆1500的原点或装备限定lidar高度范围。作为非限制性示例,lidar数据可被切成地上切片(例如,相对于车辆1500的原点从5米到300米)、giraffe平面切片(例如,相对于车辆1500的原点从2.5米到5米)和/或地平面切片(例如,相对于车辆1500的原点从-2.5米到0.5米)。在执行lidar切片的情况下,不同的切片可以作为单独的lidar层存储在地图流210中和/或可以用于在地图创建106期间生成用于定位110的单独的lidar地图层。在一些实施例中,对应于某些片段的数据可以被滤波出或去除,使得较少的数据被编码至地图流210并且较少的数据被传输至云以用于地图创建106。例如,以上接地切片可能不如giraffe平面切片或接地平面切片那样有价值,因为远离接地平面的检测可能不如对于定位可用、准确和/或足够精确。在此示例中,可滤除以上接地切片(例如,从5米到300米)。
50.传感器数据102可以包括例如由一个或更多个imu传感器1566、gnss传感器1558、一个或更多个速度传感器1544、相机传感器、lidar传感器1564、和/或其他传感器类型生成的数据,所述数据可以用于跟踪车辆1500的绝对位置和/或车辆1500的局部或相对位置。例如,在从任何数量的传感器模态生成的传感器数据102的每个帧处,可以记录针对该传感器数据102的帧的全局位置——例如,使用gnss传感器1558。这个全局位置(例如,在wgs84参考系中)可以用于总体上将车辆1500放置在全局坐标系内。然而,在将hd地图用于自主驾驶操作时,全局规模的定位精度不像给定道路片段上的定位精度那样有价值。例如,当在加州圣克拉拉市的公路101上行驶时,车辆1500相对于波士顿市的州际公路95的位置不如车辆在公路101前方相对于50米、100米、1英里等的位置那么关键。此外,gnss传感器(甚至具有
最高质量)在多于五米或十米内可能不准确,因此,全局定位可能较不准确和/或可能具有受卫星相对定位影响的可变精度。这仍可能是这种情况——例如,全局定位可能偏离五米或十米——但与当前道路片段的相对定位可能精确到五厘米或十厘米内。在自主驾驶时,为了确保安全性,定位到相对局部布局或其道路片段提供了比仅全局方法更大的准确性和精确性。因此,如本文中更详细描述的,当执行定位时,本公开的系统可以使用gnss坐标来确定车辆1500当前在哪一个或更多个道路片段上行驶,并且然后可以使用所确定的一个或更多个道路片段的局部或相对坐标系来更精确地定位车辆1500(例如,在实施例中,不需要对消费者车辆实现不切实际的高成本gnss传感器类型)。因此,一旦车辆1500被定位至给定道路片段,gnss坐标可能不需要用于准确和精确的定位,因为当车辆1500行驶时车辆1500可将其自身从道路片段定位至道路片段。在一些非限制性实施例中,如本文所描述的,每个道路片段可以是25米、50米、80米、100米和/或另一距离。
51.为了生成用于可以用于生成用于准确和精确的局部或相对定位的hd地图的地图流210的数据,可以使用传感器数据102imu传感器1566、一个或更多个gnss传感器1558、一个或更多个速度传感器1544、一个或更多个车轮传感器(例如,对车辆1500的车轮记号进行计数)、一个或更多个感知传感器(例如,相机、lidar、radar等)和/或其他传感器类型来跟踪车辆1500在每个帧或时间步长处的移动(例如,旋转和平移)。车辆1500的轨迹或自身运动可以用于生成地图流210的轨迹层。对于非限制性实例,可以追踪一个或更多个感知传感器的移动以确定车辆1500的相应移动-例如,称为视觉里程表。一个或更多个imu传感器1566可用于跟踪车辆1500的旋转或姿态,并且一个或更多个速度传感器1544和/或一个或更多个车轮传感器可用于跟踪车辆1500行进的距离。照此,在第一帧处,可使用传感器数据102来确定装备或车辆1500的原点的第一姿态(例如,沿x、y和z轴的角度)和第一位置(例如,(x、y、z))。在第二帧处,可使用传感器数据等来确定装备或车辆1500的原点的第二姿态和第二位置(例如,相对于第一位置)。因此,可利用点(对应于帧)生成轨迹,其中,每个点可编码对应于车辆1500相对于先前点的相对位置的信息。此外,在这些点或帧中的每一个处捕捉的一个或更多个dnn 202的传感器数据102和/或输出204可以与这些点或帧相关联。照此,当创建hd地图(例如,图1的地图数据108)时,一个或更多个dnn 202的传感器数据102和/或输出204可以具有相对于车辆1500的原点或装备的已知位置,并且由于车辆1500的原点或装备可以具有全局坐标系上的对应位置,一个或更多个dnn 202的传感器数据102和/或输出204也可以具有全局坐标系上的位置。
52.通过使用车辆1500从帧到帧的相对运动,即使在隧道、城市和/或gnss信号可能较弱或丢失的另一环境中时,也可保持精确度。然而,即使针对每个帧或时间步长使用相对运动和添加向量(例如,表示帧之间的平移和旋转),相对位置也可能在一段时间或行进的距离之后漂移。因此,以预定义间隔,当检测到漂移时,和/或基于一些其他准则,可重置或重新校准相对运动。例如,在全局坐标系中可存在可具有已知位置的锚点,且所述锚点可用以在一帧处重新校准或重新设定相对运动。
53.在一些实施例中,传感器数据102被应用于被训练成计算各种不同输出204的一个或更多个深度神经网络(dnn)202。在应用或输入到一个或更多个dnn 202之前,传感器数据102可经历预处理,诸如转换、裁剪、放大、缩小、放大、旋转和/或以其他方式修改传感器数据102。例如,在传感器数据102对应于相机图像数据的情况下,图像数据可被裁剪、缩减、放
大、翻转、旋转和/或以其他方式调整到相应一个或更多个dnn 202的合适输入格式。在一些实施例中,传感器数据102可包括表示一个或更多个图像的图像数据、表示视频的图像数据(例如,视频的快照)和/或表示传感器的传感场的表示的传感器数据(例如,lidar传感器的深度图、超声传感器的值图等)。例如,可以使用任何类型的图像数据格式,例如但不限于,压缩图像(如联合图像专家组(jpeg)或亮度/色度(yuv)格式)、压缩图像(如源于压缩视频格式(如h.264/高级视频编码(avc)或h.265/高效视频编码(hevc))的帧)、原始图像(如源于红色清晰蓝(rccb)、红色清晰(rccc)或其他类型的成像传感器)和/或其他格式。此外,在一些示例中,传感器数据102可以在没有任何预处理的情况下使用(例如,以原始或捕获的格式),而在其他示例中,传感器数据102可以经历预处理(例如,噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,如使用传感器数据预处理器(未示出))。
54.在传感器数据102对应于lidar数据的情况下,例如,可以累积、自我运动补偿和/或以其他方式调整原始lidar数据,和/或可以将原始lidar数据转换成另一表示,诸如3d点云表示(例如,从俯视图、传感器透视图等)、2d投影图像表示(例如,lidar范围图像)和/或另一表示。类似地,对于radar和/或其他传感器模态,传感器数据102可被转换成合适的表示以供输入到相应的一个或更多个dnn 202。在一些实施例中,一个或更多个dnn202可以处理来自任何数量的传感器模态的两个或更多个不同的传感器数据输入以生成输出204。照此,如本文所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据、或其组合。
55.虽然本文关于使用一个或更多个dnn 202描述了示例,但是这不旨在是限制性的。例如但不限于,一个或更多个dnn 202可包括任何类型的机器学习模型或算法,诸如使用线性回归、逻辑回归、决策树、支持向量机(svm)、朴素贝叶斯、k最近邻算法(knn)、k均值聚类、随机森林、维度减少算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期存储器/lstm、霍普菲尔德、玻尔兹曼、深度信念、解卷积、生成的对手、液态机器等)、兴趣领域检测算法、计算机视觉算法和/或其他类型的算法或机器学习模型的一个或更多个机器学习模型。
56.作为示例,dnn 202可以处理传感器数据102以生成车道标志、道路边界、标志、杆、树、静态物体、车辆和/或其他动态物体、等待条件、交叉口、距离、深度、物体的尺寸等的检测。例如,检测可对应于位置(例如,2d图像空间中、3d空间中等)、几何形状、姿态、语义信息和/或关于检测的其他信息。照此,对于车道线,车道线的位置和/或车道线的类型(例如,虚线、实线、黄色、白色、十字路口、自行车车道等)可由处理传感器数据102的一个或更多个dnn 202来检测。关于标志,标志的位置或其他等待条件信息和/或其类型(例如,屈服、停止、人行横道、交通灯、屈服灯、建筑、速度限制、退出等)可使用一个或更多个dnn 202来检测。对于检测到的车辆、摩托车骑手、和/或其他动态参与者或道路使用者,动态参与者的位置和/或类型可以被识别和/或跟踪,和/或可以用于确定场景中的等待条件(例如,其中车辆相对于交叉口以某种方式表现,如通过到达停止,交叉口或对应于其的等待条件可以被检测为具有停止标志或交通灯的交叉口)。
57.在各实施例中,一个或更多个dnn 202的输出204可以诸如通过将原始输出转换成有用输出来经历后处理——例如,在原始输出对应于点或像素对应于特定对象类型的每个点(例如,在lidar、radar等中)或像素(例如,对于相机图像)的置信度的情况下,可以执行
后处理以确定对应于对象类型的单个实例的点或像素中的每个点或像素。该后处理可以包括时域滤波、加权、异常值移除(例如,移除被确定为异常值的像素或点)、放大(例如,可以以比输入传感器数据实例更低的分辨率预测输出,并且输出可以被放大回到输入分辨率)、缩小、曲线拟合、和/或其他后处理技术。在实施方式中,在后处理之后,输出204可以在2d坐标空间(例如,图像空间、lidar范围图像空间等)中和/或可以在3d坐标系中。在输出在2d坐标空间中和/或在除3d世界空间之外的3d坐标空间中的实施例中,数据转换器206可将输出204转换为3d世界空间。
58.在一些非限制性示例中,一个或更多个dnn 202和/或输出204可以类似于提交于2019年2月26日的美国非临时专利申请号16/286,329,提交于2019年3月15日的美国非临时专利申请号16/355,328,提交于2019年3月18日的美国非临时专利申请号16/356,439,提交于2019年4月16日的美国非临时专利申请号16/385,921,提交于2019年8月8日的美国非临时专利申请号535,440,提交于2019年12月27日的美国非临时专利申请号16/728,595,提交于2019年12月27日的美国非临时专利申请号16/728,598,提交于2020年3月9日的美国非临时专利申请号16/813,306,提交于2020年4月14日的美国非临时专利申请号16/848,102,提交于2020年3月10日的美国非临时专利申请号16/814,351,提交于2020年6月24日的美国非临时专利申请号16/911,007,和/或提交于2019年7月17日的美国非临时专利申请号16/514,230中所描述的dnn和/或输出,其各自的全部内容通过引用并入本文。
59.在实施例中,数据转换器206可以将所有输出204和/或传感器数据102转换为以车辆1500的装备为原点(例如,(0,0,0))的3d世界空间坐标系。车辆1500的原点可以是沿车辆1500的轮轴在车辆1500上的最前方或最后方点,和/或在车辆或相对于车辆1500的任何位置处。在一些非限制性实施例中,原点可对应于车辆1500的后轴的中心。例如,在给定帧或时间步长处,可产生传感器数据102。作为非限制性示例,传感器数据102的第一子集可以在相对于原点的3d世界空间中生成,并且可以直接使用(例如,在由数据压缩器208压缩之后)以生成地图流210。传感器数据102的第二子集可以在3d世界空间中生成,但不相对于车辆1500的原点生成。因此,数据转换器206可以(例如,使用相应的一个或更多个传感器的内在和/或外在参数)转换传感器数据102,使得传感器数据102的3d世界空间位置相对于车辆1500的原点。传感器数据102的第三子集可以在2d空间中生成。数据转换器206可以例如使用相应一个或更多个传感器的固有和/或外在参数转换该传感器数据102,使得传感器数据102的2d空间位置在3d空间中并且相对于车辆1500的原点。
60.在实现一个或更多个dnn 202的实施例中,输出204(例如,在后处理之前或之后)可在2d空间和/或3d空间中(相对于原点或不相对于原点)生成。类似于本文中关于将位置从传感器数据102直接转换成相对于车辆1500的原点的3d世界空间的描述,2d和/或3d输出204(不是相对于原点的)可由数据转换器206转换成相对于车辆1500的原点的3d空间。照此,并且如本文所描述的,因为车辆1500的原点具有相对于道路的当前道路片段或者在地图流帧序列内的已知相对位置,并且当前道路片段具有在全局坐标系(例如,wgs84参考系)中的相对位置,所以来自一个或更多个dnn 202的传感器数据102和/或输出204的位置也可以具有相对于当前道路片段和全局坐标系的相对位置。
61.相对于检测到的道路边界和车道线(例如,使用处理传感器数据102的一个或更多个dnn 202检测到的),可以执行地标滤波器来缝合和/或平滑检测到的道路边界线和/或车
道线。例如,车道线和/或道路边界的3d位置可包括检测中的间隙,可包括噪声,和/或可能不如最佳或期望的那样准确、精确或无伪像。因此,可以执行地标滤波以将帧内和/或跨帧的检测拼接在一起,从而生成虚拟连续车道分隔器和道路边界线。这些连续的车道分隔器和/或道路边界线可类似于用于限定行驶表面上的多个车道、车道的位置和/或道路边界的位置的车道图。在一些实施例中,可以对所生成的连续线执行平滑以更准确地反映车道线和道路边界的已知几何信息。例如,在针对帧的车道线的检测相对于先前和/或后续检测偏斜的情况下,可以对车道线的偏斜部分进行平滑,以更精确地符合车道线的已知模式。照此,除了将每次检测编码到地图流210中之外或者作为其替代,地图流210中的编码信息可以对应于这些连续的车道线和/或道路边界。
62.在一些实施例中,传感器数据102和输出204可以在所有时间和针对每个帧而生成,并且所有数据可以作为地图流210被传输至地图创建云或服务器。然而,在一些实施例中,传感器数据102和/或输出204可以不在每个帧处生成,所有数据可以不在地图流210中传送,或其组合。例如,可以实施地图流活动,所述地图流活动标识和引导收集什么类型和数量的数据、收集数据的地点、收集数据的频率、和/或其他信息。这些活动可以允许有针对性地或选择性地生成某些类型和/或在某些位置处的数据,以便填充缺口、提供附加数据以提高准确度、当检测到道路变化时(例如,经由正常检查112)更新地图、和/或出于其他原因。作为示例,可以执行地图流活动,该地图流活动标识在特定位置处的车辆1500,并且指示车辆1500生成(或优先生成)某些数据类型-例如,在位置处开始并且在某个距离之上的lidar数据和radar数据-以便减少计算(例如,当生成地图流210时车辆1500和在处理地图流数据时在地图创建106期间车辆1500)和带宽(例如,用于将地图流210传输至云)。在这样的示例中,通过道路的一个或更多个特定部分的一些数量的驾驶可能已经遇到了很多遮挡,或执行驾驶的车辆1500未配备有某些传感器模态。照此,地图流活动可以指示车辆1500收集与先前被遮挡的数据相对应的数据和/或生成缺失模态的数据。作为另一示例,可以生成地图流活动以更准确地识别车道标志、标志、交通灯和/或其他信息,并且到车辆1500的指令可以是生成可以用于用该信息生成或更新hd地图的传感器数据102和/或输出204。照此,计算关于通道标记、标志、交通灯等的信息的一个或更多个dnn 202可使用相应的传感器数据类型来执行,并且输出204(例如,在后处理、数据转换、压缩等之后)可经由地图流210被传输到云以供地图创建。
63.在一些实施例中,地图流活动可以是地图正常检查112的一部分——例如,在hd地图被生成并且被用于定位之后。例如,在当前传感器数据或dnn检测与由地图数据108表示的hd地图之间检测到不一致的情况下,正常检查器可以触发一个或更多个车辆1500生成和/或上传针对该位置的新地图流数据。例如,在一些实施例中,车辆1500可以生成用于地图流210的数据并且不上传地图流210,而在其他实施例中,车辆1500可以仅在被触发时生成和上传地图流数据。照此,在对地图的定位导致较差的计划和/或控制操作的情况下,可以将地图流210上传至云以通过地图创建过程来更新地图信息。因此,地图可以不被不断地更新,而是仅在检测到定位误差、计划误差和/或控制误差时被更新。
64.在一些示例中,系统可以最小化在地图流210中生成和/或包括轨迹点或帧的频率。例如,代替在地图流210中包括每个帧,距离阈值、时间阈值或者其组合可以用于确定在地图流210中包括哪些帧。照此,如果车辆1500已经行进了某个距离(例如,半米、一米、两
米、五米、十米等)和/或已经经过了某个时间量(例如,半秒、一秒、两秒等),则在地图流中可以包括轨迹点或帧。这个距离或时间阈值可以基于首先满足哪个或最后满足哪个来使用。例如,第一帧可以包括在地图流210中,然后可以满足距离阈值并且在距离阈值处的第二帧可以包括在地图流210中。一旦第二帧被包括,距离和时间阈值可以被重置,并且然后时间阈值可以被满足并且第三帧可以被包括在地图流210中,等等。因此,在地图流210中可以包括较少的重复数据。
65.例如,当车辆1500在交通灯处持续30秒时,时间阈值为1秒,并且帧速率为每秒30帧(fps),代替在地图流210中包括900(例如,30*30)帧,在地图流210中可以仅包括30帧。在一些实施例中,一旦车辆1500空闲达阈值时间量(例如,两秒、四秒等),则可以暂停地图流210中的帧生成和/或帧包括(例如,直到检测到移动)。作为另一个非限制性示例,当车辆1500以一米/秒(或者每小时2.24英里)的速度行驶,距离阈值是两米,并且帧速率是30fps时,代替在两米距离期间在地图流210中包括60(例如,30*2)帧,可以在地图流210中仅包括单个帧。因此,减少了从车辆1500传输到用于地图创建106的云的数据量,而不影响地图创建过程的准确度,例如,因为至少一些数据可以是重复的或仅递增地不同的,并且因此对于准确的地图创建是不必要的。
66.除了在地图流210中发送更少数据(例如,最小化数据量)之外或者作为其替代,在实施例中可以压缩数据-例如,以减少带宽和减少运行时间。在一些实施例中,外插和/或内插可以用于确定点或帧,使得在地图流210中需要发送较少的点或帧(例如,点或帧的旋转/平移信息),并且外插和/或内插可以用于生成附加帧或点。例如,因为旋转和平移信息可以是数据密集型的——例如,需要大量位来完全编码(x,y,z)位置信息和x轴、y轴和z轴旋转信息——沿着轨迹的需要向其编码的旋转和/或平移信息的点更少,所以需要发送的数据更少。照此,轨迹的历史可用以外插轨迹中的未来点。作为另一实例,可使用内插来产生帧之间的额外帧。作为示例,在轨迹对应于以基本恒定的速度直线行驶的车辆1500的情况下,则序列的第一帧和最后帧可以包括在地图流210中并且其间的帧可以从帧序列的第一帧和最后帧插入。然而,在速度改变的情况下,可能需要在地图流210中编码更多帧,以便在车辆1500处于特定时间点的地方更准确地线性内插。在这样的示例中,系统可以仍然不使用所有的帧,但是可以使用比直线驾驶恒速示例中更多的帧。在一些实施例中,三次内插或三次多项式内插可以用于编码导数,该导数可以用于确定速度变化率,并且因此用于确定或内插沿着轨迹的其他点,而不必直接将它们编码到地图流210中。照此,代替编码每一帧处的旋转、平移、位置和/或姿态,经编码内插和/或外插信息可替代地用以重新创建额外帧。在一些实施例中,与在数据减少时已知的正确姿态相比,可以自适应地更新轨迹数据生成的频率,以实现地图创建106中使用的姿态的准确度的最大误差,该最大误差内插在两个其他帧或时间步长之间。
67.作为另一示例,增量压缩可用于编码车辆1500的当前位置(例如,姿态和位置)和车辆1500的先前位置之间的差或增量。例如,64位可以用于编码车辆1500在帧处的纬度、经度和高度或x、y和z坐标中的每一个,总共192位。然而,随着车辆1500移动,这些值从帧到帧可能变化不大。因此,帧的编码值可替代地对应于与先前帧的差(其可编码成较少位),而非针对每一帧处的纬度、经度和高度中的每一者使用全64位。例如,在实施例中,可以使用12位或更少位来编码差异,由此为系统产生大量存储器和带宽节省。增量压缩编码可用于局
部布局的相对坐标和/或全局坐标。
68.除了压缩位置、姿态、旋转和/或平移信息之外或者作为其替代,传感器数据102和/或输出204可以被压缩以用于包括在地图流210中。例如,对于关于车道、车道标记、车道分隔器、标志、交通灯、等待条件、静态和/或动态对象和/或其他输出204的位置、姿态、尺寸和/或其他信息,数据可以被增量编码、外插、内插和/或以其他方式压缩以便减少包括在地图流210中的数据量。关于诸如lidar数据、radar数据、超声数据等的传感器数据102,由数据表示的点可被体素化,使得重复的点被移除,而体积由数据表示。这可以允许在地图流210中编码较低密度的点,同时仍然包括用于准确和详细的地图创建106的足够信息。radar数据例如可以使用八进制编码。此外,可执行radar点和/或来自其他传感器模态的点的量化以最小化用于编码radar信息的比特数。例如,由于radar点可具有x和y位置,除x和y位置之外,还可使用线分隔器、标记和/或其他信息的几何形状使用较少的比特对radar点进行编码。
69.在一些实施例中,可以使用缓冲区或其他数据结构来将地图流数据编码为串行化结构化数据。因此,代替具有描述一些信息量的数据结构的单个字段,可执行比特打包成字节阵列,例如,使得缓冲区中的数据仅包括数字,而不包括字段名称,以便与在数据中包括字段名称的系统相比,提供带宽和/或存储保存。结果,可使用整数来标识每个字段来将该模式定义为将数据类型与字段名称相关联。例如,接口描述语言可以用于描述数据的结构,并且程序可以用于从接口描述语言生成源代码以用于生成或解析表示结构化数据的字节流。照此,编译器可以接收文件并产生指示系统如何消费来自以该特定方式编码的pin文件的信息的应用编程接口(api)(例如,capi、python api等)。可以通过将数据分块为更小(例如,10000字节)的块、将数据转换成字节阵列、并且然后传输或上传至云以用于地图创建106来实现附加压缩。
70.在一些实施例中,动态障碍物移除可用lidar数据、radar数据和/或来自其他传感器类型的数据执行以移除或滤波掉对应于动态对象(例如,车辆、动物、行人等)的传感器数据102。例如,可比较传感器数据102的不同帧(例如,在自运动补偿之后)以确定跨帧不一致的点。在这样的示例中,例如,在鸟可能飞过lidar传感器的传感场的情况下,在一个或更多个帧处对应于检测到的鸟的点可能不存在于一个或更多个先前或后续帧中。因此,可以滤波出或去除对应于检测到的鸟的这些点,使得在地图创建106期间,在hd地图的最终lidar层的生成期间不使用这些点。
71.照此,传感器数据102可由系统处理以产生对应于图像数据、lidar数据、radar数据和/或轨迹数据的输出,且这些输出中的一个或更多个可经历后处理(例如,感知输出可经历融合以产生经融合感知输出,lidar数据可经历动态障碍物滤波以产生经滤波lidar数据等)。可以对所产生的数据进行聚合、合并、编辑(例如,轨迹完成、内插、外插等)、滤波(例如,用于创建连续车道线和/或道路边界线的地标滤波)、和/或以其他方式处理以生成表示从任何数量的不同传感器和/或传感器模态生成的此数据的地图流210。
72.现在参考图3,本文描述的方法300的每个框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。方法300还可以体现为存储在计算机存储介质上的计算机可用指令。方法300可由独立应用、服务或托管服务(独立或与其他托管服务组合)或插件提供给另一产品,仅举几例。
此外,参照图2的过程104,通过实例,描述方法300。然而,该方法300可以附加地或替代地在任何一个进程内通过任何一个系统或者进程和系统的任何组合来执行,包括但不限于本文描述的那些。
73.图3是示出了根据本公开内容的一些实施例的用于地图流生成的方法300的流程图。在框b302处,方法300包括使用车辆的传感器生成传感器数据。例如,可产生传感器数据102。
74.在框b304处,方法300包括将传感器数据的至少第一子集应用于一个或更多个dnn。例如,传感器数据102可被应用于一个或更多个dnn 202。
75.在框b306处,方法300包括使用一个或更多个dnn来计算输出。例如,一个或更多个dnn 202可以计算一个或更多个输出204,并且在一个或更多个实施例中,输出可以包括但不限于车道分隔器信息、道路边界信息、静态对象信息、动态对象信息、等待条件信息、交叉口信息、标志、杆或交通灯信息、和/或对应于车辆1500的环境中的对象(静态和/或动态)的其他信息。
76.在框b308处,方法300包括将输出的至少第一子集转换为以车辆为原点的3d坐标系以生成转换的输出。例如,数据转换器206可以将一个或更多个输出204转换为以车辆1500原点作为原点的3d坐标系。
77.在框b310处,方法300包括将传感器数据的至少第二子集转换为3d坐标系以生成转换的传感器数据。例如,传感器数据102中的至少一些可以直接在地图流210中使用,但是可以不在相对于车辆1500的原点的3d坐标系中生成。因此,传感器数据102可以转换成以车辆1500为原点的3d坐标空间。
78.在框b312处,方法300包括压缩和/或最小化传感器数据、转换的传感器数据、转换的输出和/或输出的第二子集以生成压缩的数据。例如,可以压缩和/或最小化传感器数据102和/或输出(例如,在没有转换的情况下或在转换之后在相对于车辆1500的3d坐标空间中未生成)。可以使用任何已知的技术来执行压缩和/或最小化,这些技术包括但不限于本文描述的那些技术。
79.在框b314处,方法300包括对压缩的数据、传感器数据、转换的传感器数据、转换的输出和/或输出的第二子集进行编码以生成地图流。例如,可以对传感器数据102(有或者没有转换)和/或输出204(有或者没有转换)(例如,在通过数据压缩器208进行压缩之后)进行编码以生成地图流210。然后可以将地图流210传输至云以用于地图创建106。
80.可以针对任意数量的车辆1500针对任意数量的驾驶或其区段重复关于图3描述的过程。来自每个地图流210的信息然后可以用于地图创建106。
81.地图创建
82.参考图4,图4描绘了根据本公开的一些实施例的地图创建的过程106的数据流程图。在一些实施例中,可以使用一个或更多个数据中心(诸如图17的示例数据中心1700)的计算设备(例如,类似于图16的示例计算设备1600)在云中执行过程106。在一些实施例中,可以使用一个或更多个虚拟机、一个或更多个分立的计算设备(例如,服务器)或其组合来执行过程106。例如,虚拟图形处理单元(gpu)、虚拟中央处理单元(cpu)和/或其他虚拟组件可用于执行过程106。在一些实施例中,关于过程106描述的一个或更多个过程步骤可以使用一个或更多个并行处理单元来并行执行。例如,片段对的配准402(例如,成本空间采样、
聚集等)可并行执行(例如,第一对可与另一对并行配准)。另外,在单个配准内,被采样用于更新成本空间的点的成本的姿态可与一个或更多个其他姿态并行地执行。此外,因为与个体地图的层相对应的地图数据可以作为纹理存储在gpu上,所以可以执行纹理查找以快速地确定成本空间的成本值——从而导致每个成本空间分析的运行时间减少。
83.地图创建过程106可以包括从对应于任何数量的驾驶的一个或更多个车辆1500接收地图流210。如本文所描述的,每个地图流210可以包括使用各种不同方法生成的各种数据层——诸如通过跟踪自我运动(例如,相对和全局)、传感器数据102生成和处理、使用一个或更多个dnn 202的感知等。地图流210的每层可以与一系列帧相对应,该一系列帧对应于以可变帧速率记录的传感器事件。例如,地图流210层可以对应于一个或更多个相机层、一个或更多个lidar层(例如,针对每个不同切片的层)、一个或更多个radar层、一个或更多个轨迹(或自运动)层和/或其他层。相机层可包含通过对2d相机图像的流执行感知(例如,经由dnn 202)并将dnn 202的(2d和/或3d)检测或输出204转换成3d地标和路径(例如,通过组合车道标记以定义车道线和道路边界位置)而获得的信息。lidar和/或radar层(或其他传感器模态层)可分别对应于使用lidar传感器1564和/或radar传感器1560收集的点云信息。如本文所描述的,在地图流生成过程104期间,可以对lidar数据和/或radar数据执行预处理,诸如数据减少、自我运动补偿和/或动态障碍物移除。轨迹层可包含与车辆1500的原点或装备的绝对位置以及在某个时间帧上的相对自我运动对应的信息。
84.参考图5a,对于每个地图流210(1)-210(n),地图创建过程106可以包括:经由转换502(1)-502(n)将地图流210转换成地图504(1)-504(n)(例如,将地图流转换成driveworks地图格式),其中n对应于用于特定配准过程的地图流210的数量。例如,参考图5b,对于单个地图流210(1),转换502(1)可以包括基础转换506、radar转换508、lidar高度切片510、lidar转换512、radar地图图像创建514、lidar地图图像创建516和/或使用lidar体素化器518的lidar体素化。基础转换506可对应于如使用经由一个或更多个dnn 202的感知所确定的地标(例如,车道线、道路边界线、标志、杆、树、其他垂直结构或对象、人行道等)。例如,3d地标位置可以使用基础转换506转换成地图格式以生成地图504(1)的基础层520(或“相机层”或“感知层”)。除了地标位置之外,基础层520还可以表示生成地图流210(1)的车辆1500的轨迹或路径(例如,全局的或相对的)。当生成基础层520时,可以维持地图流210(1)的聚合输入帧与输出基础层520地图道路片段之间的1:1地图。
85.来自地图流210(1)的radar数据
‑‑
例如,当以原始格式接收或访问时——可以经由radar转换508被转换为radar点云层522。在一些实施例中,来自radar点云层522的radar点云可用于经由radar地图图像创建514来生成radar地图图像层524。例如,radar点云可从一个或更多个不同视角(例如,自上而下、传感器视角等)转换成radar点云的一个或更多个图像。例如,具有俯视视野的虚拟相机可被用来将radar点云投影到虚拟相机的帧中以生成radar地图图像层524的radar地图图像。
86.来自地图流210(1)的lidar数据——例如,当以原始格式接收或访问时——可以经由lidar转换512转换成lidar点云层526。在一些实施例中,如本文所述,可在切片(例如,地上切片(例如,相对于车辆1500的原点从5米到300米))、giraffe平面切片(例如,相对于车辆1500的原点从2.5米到5米)、地平面切片(例如,相对于车辆1500的原点从-2.5米到0.5米)等中生成lidar数据。作为地图流生成过程104中的lidar高度切片的补充或替代,可以
在转换502(1)期间执行lidar高度切片510以确定lidar数据的单独切片以用于生成一个或更多个lidar点云层526。例如,对应于特定切片(例如,giraffe切片)的lidar数据可用于生成地图504(1)的lidar点云层526。在一些实施例中,来自lidar点云层526的lidar点云可用于经由lidar地图图像创建516来生成lidar地图图像层528。例如,lidar点云(例如,对应于特定切片)可从一个或更多个不同视角(例如,自上而下、传感器视角等)转换成lidar点云的一个或更多个图像。例如,具有俯视视野的虚拟相机可以用于将lidar点云投影到虚拟相机的帧中以生成用于lidar地图图像层528的lidar地图图像。lidar地图图像层528可包括用从点云确定的高度值编码的lidar地图图像(例如,自上而下的深度图)、用从点云确定的强度值编码的lidar地图图像和/或其他lidar地图图像类型。在一些实施例中,可以例如通过lidar体素化器518使用lidar点云层526来生成地图504(1)的lidar体素地图层530。lidar体素地图层530可以表示lidar点云的体素化表示。体素地图层530可以用于编辑个体地图504中和/或融合hd地图(如本文更详细描述的)中的lidar数据,例如以滤除动态对象。
87.再次参见图5a,可以针对每个地图流210(1)-210(n)执行关于地图流210(1)描述的过程以生成地图504(1)-504(n)。地图504(1)-504(n)或其子集随后可用于配准402。照此,一旦已经针对将在当前配准过程中使用的每个地图流210生成了地图504,就可以执行配准402以生成对应于多个地图流210的聚合地图。聚合地图可以包括聚合层——例如,聚合相机或基础层、聚合lidar层、聚合radar层等。为了确定哪些地图流210(并且因此地图504)应当被一起配准,可以确定地图流210或其片段的位置。例如,参考图5c,第一地图流片段540(例如,表示生成地图流210(1)的车辆1500的轨迹)可以对应于第一地图流210(1),第二地图流片段542可以对应于第二地图流210(2),并且第三地图流片段544可以对应于第三地图流210(3)。为了确定这些地图流210(1)-210(3)对应于类似的位置或道路片段,可以使用位置或轨迹信息——例如,gnss数据。例如,来自地图流210和/或地图504的gnss坐标可以用于确定地图流210或其区段在空间中是否足够靠近足够长距离以彼此配准。一旦使用gnss坐标来定位,来自地图流210(1)-210(3)的相对坐标可以用于确定地图流片段有多接近(例如,车辆1500的轨迹有多接近)。该过程可以产生要被配准的地图流区段的最终列表。例如,可以使用gnss坐标和/或来自地图流210和/或地图504的相对坐标来确定地图流片段540、542和544在相同道路上
‑‑
或者至少具有在分界550a和550b之间重叠的部分。
88.在一些示例中,个体地图流210或驾驶——例如对应于地图流片段540的地图流210(1)——可以包括循环。例如,在地图流生成过程104期间,车辆1500可以已经经过相同的道路片段两次或更多次不同的时间。因此,可以经由去重复将地图流片段540拆分成两个单独的片段552a和552b,并且将其视为用于配准402的个体地图流片段。去重复过程可以作为预处理步骤来执行,该预处理步骤标识车辆1500(或与其相对应的地图流210)何时以循环或环路行驶。一旦识别出循环,驾驶或地图流210可以被分成两个或更多个区段以确保每个物理位置仅被表示一次。
89.可以生成包括被确定为彼此在某个空间阈值内的地图流片段的所有地图流片段的布局。例如,图5c可以表示地图流片段540、542和544的布局的示例可视化。在图5c的示例中,对于配准402,可使用例如分界550a和550b之间的重叠部分552a-552d。该布局随后可用于确定要一起配准重叠部分552a-552d的哪些对。在一些实施例中,可以使用最小生成树算法来确定要配准在一起的最小数量的部分552以在部分552的每一个之间具有连接(例如,
如果部分552a和部分552b配准在一起,并且部分552b和552c配准在一起,则部分552a和552c具有经由部分552b的连接)。最小生成树算法可以包括随机选择一对部分552,然后随机选择另一对部分,直到最小生成树完成。在一些实施例中,除了最小生成树算法之外,为了鲁棒性和准确性,误差裕度可以用于包括另外的对。
90.作为示例,关于图5d,表560示出了使用各种不同技术的在地图流或地图流段之间的不同数量的连接或对。片段的数量m可以对应于可用于特定片段(例如,图5c的部分552a-552d)的配准402的地图流或地图流区段的总数。如果对片段之间的每一对的可能连接执行配准,那么所有连接可对应于将配准的对的数目。作为示例,为了计算所有连接,可使用以下等式(1):
91.所有连接=m*(m-1)/2
ꢀꢀꢀꢀꢀꢀꢀ
(1)
92.作为另一个示例,为了计算最小生成树连接,可以使用以下等式(2):
93.最小生成树连接=m-1
ꢀꢀꢀꢀꢀꢀꢀ
(2)
94.作为进一步的示例,为了计算安全裕度连接——例如,最小生成树连接加上安全裕度——可以使用以下等式(3):
95.安全裕度连接=min[(最小生成树连接*2),所有连接]
ꢀꢀꢀꢀ
(3)
[0096]
因此,还参考图5c,使用关于部分552a-552d的等式(3),可以确定连接554a-554f。例如,因为存在要配准的四个部分或片段,安全裕度将导致在分界550a和550b之间的地图流区段的四个部分或区段之间进行六个连接。
[0097]
在一些实施例中,为了确定要使用哪些区段和/或确定更频繁地使用哪些区段(例如,当一些部分被配准到超过一次时),可以分析这些区段的质量。例如,质量可以对应于在地图流区段中表示的传感器模态的数量。照此,在一个区段包括相机、轨迹、radar和lidar,而另一个区段仅包括相机、轨迹和radar的情况下,具有lidar的区段可被加权或有利,使得该区段更可能被包括在更多配准402中。此外,在一些实施例中,当确定待配准在一起的区段时,几何距离可用作准则。例如,可以在几何距离区段上选择几何上更近的两个区段,例如,因为更近定位的区段可以对应于同一行驶车道,与可以对应于不同的行驶车道或道路的相对侧的更远的区段相反。
[0098]
再次参见图4和图5a,各对区段随后可彼此配准以生成它们之间的姿态链路,这可用于姿态优化404。可以执行配准402以确定在驾驶或地图流210重叠的许多不同位置(例如,图5c的部分552a-552d)中对应于多极驾驶或地图流210的多极驾驶或地图流210之间的几何关系。配准过程的输出可以包括不同地图流中的帧或区段对之间的相对姿态链路(例如,第一地图流帧或区段的姿态和第二地图流帧或区段的姿态之间的旋转和平移)。除了相对姿态之外,姿态链路可进一步表示表示相应姿态链路中的置信度的协变量。相对姿态链路然后被用于对齐对应于地图流210中的每一个的地图504,使得地标和其他特征——例如,点云、lidar图像地图、radar图像地图等——在最终的聚合hd地图中被对齐。因此,通过将该对的一个地图504或其部分定位至另一个地图504或其部分来执行配准过程。配准402可以针对每个传感器模态和/或针对与不同传感器模态相对应的每个地图层来执行。例如,基于照相机的配准、基于lidar的配准、基于radar的配准和/或其他配准可以单独执行。结果可以包括hd地图的聚集基础层、hd地图的聚集lidar点云层、hd地图的聚集radar点云层和hd地图的聚集lidar地图图像层等。
[0099]
如本文更详细描述的,用于将一个区段定位到另一区段用于配准的定位过程可类似于在实况感知中使用的定位过程110来执行。例如,可以针对单个帧或姿态对成本空间进行采样,可以在帧或姿态上累积聚合成本空间,并且可以在聚合成本空间上使用卡尔曼滤波器来将一个区段相对于另一个区段进行定位。如此,来自第一区段的轨迹的姿态可以是已知的,并且来自第二区段的轨迹的姿态可以使用定位相对于第一区段进行采样,以便一旦实现地标之间的对准,确定两者之间的相对姿态。可以针对区段的姿态中的每一个重复该过程,使得生成姿态之间的姿态链路。
[0100]
例如,关于地图504的基础层或感知层,在配准402期间,地标的3d世界空间位置可被投影到虚拟相机的虚拟视场中以生成对应于虚拟图像内的地标的2d图像空间位置的图像。在一些实施例中,3d世界空间地标位置可被投影到视野或多于一个虚拟相机中以从不同视角生成图像。例如,前向虚拟相机和后向虚拟相机可被用于生成两个分开的图像以供配准过程中的定位。使用两个或更多个图像可增加配准过程的稳健性和准确性。为了配准到图像,可以将来自经历配准402的两个区段的地标的虚拟图像空间位置彼此比较(例如,使用基于相机的定位技术)以对表示区段之间一致的位置的成本空间进行采样。例如,来自第一区段的检测可以被转换成距离函数图像(例如,如本文相对于定位110所描述的),并且来自第二区段的检测可以与距离函数图像进行比较以生成成本空间。除了比较几何形状之外,还可以(例如,同时或在单独的投影中)比较语义信息以计算成本。例如,在语义信息(例如,车道线类型、杆、符号类型等)不匹配一个或更多个特定点的情况下,该一个或更多个特定点的成本可被设置为最大成本。几何成本和语义成本可接着一起使用以确定每一姿态的最终成本。可以在任何数量的帧上执行该过程以确定比任何单独的成本空间更精细调谐的聚合成本空间,并且可以在聚合成本空间上执行卡尔曼滤波器(或其他滤波器类型)以确定两个片段之间的姿态和姿态链路。
[0101]
参考图5e和5f,图5e和5f示出根据本公开的一些实施例的基于相机或基础层的配准的示例。例如,图5e的可视化570a可以对应于面向前的虚拟相机配准,并且图5f的可视化570b可以对应于面向后的虚拟相机。来自第一地图504的基础层的3d地标位置可以被投影到面向前的虚拟相机和面向后的虚拟相机的2d图像空间中。然后,2d投影可以被转换成距离函数——在可视化570a和570b中被示为点状图案——其中,每个点状片段572a-572k的中心线可以对应于零成本,并且随着点移动远离该部分的中心线,成本增加,直到可以对应于最大成本的白色区域。虚线段572可以对应于地标的距离函数等同物。例如,虚线段572a-572c和572j-572k可以对应于车道线和/或道路边界,并且虚线段572d-572i可以对应于杆、标志和/或其他静态对象或结构。
[0102]
然后可以将距离函数与来自第二地图504的基础层的2d投影的3d地标信息进行比较。例如,实黑片段574(例如,包括线和/或点)可表示第二地图504的3d地标在采样姿态576处的2d投影。照此,2d投影与第一地图504的距离函数投影的这种比较可以对应于成本空间上与姿态576对应的单个位置,并且还可以对任何数量的其他姿态进行采样以填满成本空间。因此,例如,沿着实黑片段574a的每个点可具有相对低的成本,因为许多点与沿着虚线部分572a的点匹配。相反,沿着实心黑色区段574j的每个点可能具有高成本,因为许多点不与沿着虚线区段572j的点匹配。最终,对于姿态576,可以例如使用平均值来计算与纯黑片段574a-574k的点中的每个点对应的成本,并且可以更新与姿态576对应的成本空间中的点
以反映所计算的成本。可以针对任意数量的姿态(例如,每个可能的姿态)重复该过程,直到针对特定的时间步骤或帧确定第二地图504的基础层相对于第一地图504的基础层的最可能的相对姿态。然后可针对配准在一起的一对区段的每个时间步长或帧(例如,参考图5c、针对来自部分552a和552b的每个相应的时间步长或帧、针对来自部分552c和552d的每个相应的时间步长或帧等)重复该过程。
[0103]
作为另一实例,关于地图504的lidar点云层,在配准402期间,来自第一区段的lidar点云可被转换成距离函数点云并且与第二区段的lidar点云相比较,以生成成本空间。例如,可在第二区段相对于对应于第一区段的距离函数图像的每一可能姿态处采样成本。可类似地关于lidar强度图图像、lidar高度图图像和/或其他lidar图像类型执行该过程。类似地,对于radar,配准402可以这种方式执行。
[0104]
任何片段对之间的配准402的结果是定义各区段的姿态之间的旋转、平移和/或协方差的姿态链路。针对从连接(例如,图5c的安全余量连接554a-554f)确定的对中的每一对执行该配准过程。使用配准过程的输出,可生成表示不同驾驶或区段的基于时间戳的相对位置的姿态链路或其姿态的姿态图。
[0105]
再次参见图4和5a,在完成配准处理402并且在配准对的帧或姿态之间已生成姿态链路之后,可执行姿态优化404以使姿态链路平滑,将来自各种不同驾驶的姿态的分组分割成与用于最终聚合hd地图中的相对定位的道路片段对应的段。姿态优化404可以被执行以基于来自地图流210的输入绝对姿态、在配准402期间生成的相对姿态链路、以及使用自我运动生成的每个单独驾驶的相对轨迹姿态链路而获得子地图或层的更合意或最优的几何对准。在姿态优化之前,姿态图可被生成以表示绝对姿态和相对姿态。在一些实施例中,可以执行滤波过程以移除具有低置信度的姿态——例如,使用如在配准过程402期间所确定的协方差。(滤波的)帧或姿态可聚集成可与单独输入地图504的段不同的道路片段,例如,因为相同的区域仅需要由单个道路片段而不是多个重叠的道路片段来表示。在姿态优化过程400期间,每个输出道路片段可与绝对姿态或原点相关联。给定初始姿态图布局,可执行优化以使绝对姿态相对于所观察的相对姿态和输入绝对姿态的姿态误差最小化,同时考虑与每个观察相关联的不确定性信息(例如,最大似然优化)。优化可通过随机采样一致性(ransac)过程的方式来初始化以找到经由跨姿态图内的循环的循环一致性检查测量的最大一致姿态链路的子集。一旦被优化,可以将每个道路片段与所耦合的道路片段进行比较以确定道路片段之间的相对变换,使得在定位110期间,可以使用变换将成本函数计算从道路片段转换成道路片段,使得可以计算准确的累积成本空间。
[0106]
例如,图6a至图6i示出了对应于来自相同和/或不同地图504的四个驾驶或片段的示例姿态优化处理404。在一些实施例中,可针对地图504的不同传感器数据模态或层单独地执行姿态优化过程404。例如,任何数量的地图504的基础层可被配准在一起并随后被姿态优化,任何数量的地图504的lidar点云层可被配准在一起并随后独立于基础层的姿态优化而被姿态优化,等等。在其他实施例中,地图504的不同层的配准过程的结果可以用于生成聚集姿态和姿态链路,并且姿态配准过程可以聚集地执行。
[0107]
参考图6a,在帧图600a中示出了来自四个不同驾驶602a-602d的配准片段。帧图600a是较大帧图的一部分的示例,其中,较大帧图可以对应于道路结构或布局的任何部分或所有部分。四个驾驶602a-602d可能已经配准在一起以生成姿态604或不同驾驶602的位
置之间的姿态链路608(例如,姿态链路608a-608c)。单个驾驶602的每个姿态604或位置可以由链路606表示。例如,链路606可表示从一个姿态604到下一姿态604的平移、旋转和/或协方差。照此,链路606a(6)可表示链路606a(5)连接的驾驶602a的姿态604之间的旋转、平移和/或协方差。姿态链路608a可对应于配准过程402的输出,并且可编码不同驾驶602的姿态604之间的平移、旋转和/或协方差。例如,姿态链路608a可以编码姿态之间的六个自由度变换——例如,驾驶602a的姿态604a(1)与驾驶602b的姿态604b(2)之间的平移(例如,(x,y,z)位置的差)、旋转(例如,x、y和z轴角度的差)和/或协方差(例如,对应于姿态链路的值的置信度)。
[0108]
图6b示出了道路片段生成,由此来自任何数量的驾驶602的姿态组可被组合成单个道路片段。所得道路片段可包含在用于局部或相对定位的最终聚合hd地图中。此外,所产生的道路片段可具有原点,并且该原点可具有在全局坐标系(诸如,wgs84坐标系)中的相对位置。帧图600b(其可对应于帧图600a但具有道路片段标识)示出了帧图可如何被分离成不同的道路片段610a-610d。例如,具有水平条纹填充的姿态可对应于第一道路片段610a,具有垂直条纹填充的姿态可对应于第二道路片段610b,具有虚线填充的姿态可对应于第三道路片段610c,以及具有阴影填充的姿态可对应于第四道路片段610d。为了确定在每个道路片段中要包括哪些姿态604或帧,可以选择第一随机姿态604-诸如姿态604a(6)。一旦选择了随机姿态604,链路606和/或姿态链路608就可从姿态604开始迭代到姿态604,开始于随机选择的姿态604,直到达到对应于道路片段610的最大距离的最大距离(例如,25米、50米等),或者确定已经被编码到道路片段610的姿态604或帧。一旦道路片段610被完全编码,则可选择另一随机的未编码姿态604并且可重复该过程。这可重复,直到姿态604中的每一者经编码到道路片段610或包含在道路片段610中。由于这个过程的随机性质,可产生一些非常小的道路片段610。照此,可执行后处理算法来分析道路片段大小,并将低于某一大小阈值的道路片段合并到相邻道路片段中。
[0109]
图6c示出了在道路片段编码或生成处理之后的道路片段610a至610d的片段图620。例如,用610a到610d标记的每一块可对应于对应于相应道路片段610的所有姿态604的折叠表示。一旦确定了道路片段610,就可以确定每个道路片段的原点或种子位置。原点或种子位置可对应于道路片段610的中心(例如,在道路片段为50米乘50米长的情况下,原点可为(25m,25m))。在一些实施例中,原点可对应于道路片段610内的姿态604中的每一者的平均或中间位置。例如,可平均对应于每一姿态604的(x,y,z)坐标,且可选择结果作为原点。在其他实施例中,可以使用不同的方法来选择来源。
[0110]
图6d示出了姿态链路纠错处理。例如,可以不保证帧图的姿态之间的姿态链路变换在彼此之间是一致的。因此,在采取三个姿态604的情况下(如在图6d中),可能存在姿态链路错误612。为了最小化道路片段内的姿态链路误差612,可确定具有最低姿态链路误差612的道路片段610内的姿态的布置。在一个或更多个实施例中,在姿态优化404期间确定的姿态的布局可以不是全局一致的,但可以被优化,使得该布局在相同道路片段610和相邻道路片段610内是一致的。例如,姿态链路614a和614b应大致相同,且姿态链路614c应大致等于姿态链路614a和614b的组合。然而,在实践中,由于一些误差(例如,配准402期间的定位误差),可能存在姿态604之间显现的一些增量或姿态链路误差612。因此,姿态优化404可用于移动或偏移姿态604或帧,使得在对应道路片段610内实现最佳拟合。相对于姿态链路
614a和614b,姿态604可被移位以分布所有姿态链路614之间的误差,而不是使姿态链路误差612主要表现在姿态链路614c中。
[0111]
图6e示出可表示图6b的帧图600b的姿态图630,但是将道路片段610a-610d连接到外部道路片段610的姿态链路被省略。图6f示出了在姿态图630上执行的ransac操作。可基于对姿态之间的链路606的精度比姿态链路608更准确的依赖来执行该过程。例如,可以对保持所有节点或姿态604连接的姿态图630中的姿态链路608的最小集合或最小生成树进行采样。一旦最小集合被选择,姿态链路608的剩余部分可被采样以查看检测到多少姿态链路错误612。这可对应于一次迭代,并且在下一次迭代处,姿态链路608的另一随机最小集合可被选择,并且随后姿态链路608的所有剩余部分可针对姿态链路误差612被采样,以此类推,用于某一数量的迭代(例如,100、1000、2000等)。一旦完成迭代次数,可以使用具有最大一致性的布局。例如,关于图6f,可以针对除了最小采样之外的姿态链路608中的每个姿态链路计算误差的成本——例如,根据以下等式(4):
[0112][0113]
其中u=log(err),u∈se3,err∈se3,err是根据当前评估的道路片段610的布局,姿态链路变换和由姿态链路连接的姿态之间的变换之间的差,并且si是姿态链路变换的第i分量的标准偏差(例如,变换置信度)。照此,成本可根据标准偏差的数量来表达姿态链路误差612。ransac采样可以在迭代次数上重复,并且在每次迭代时,可以对拟合在n个标准偏差内的布局的姿态链路的数量进行计数。满足该条件且包括在计数中的姿态链路可被称作内点。
[0114]
参考图6g,图6g示出了在ransac处理完成之后的更新的姿态图650——例如,姿态图650示出具有最大内点的姿态布置。图6g的姿态图650可经历优化过程,诸如非线性优化过程(例如,束(bundle)调整过程),其目标是例如使用本文关于图6f所描述的计算出的成本函数来最小化内点的成本平方和。在束调整之后,姿态图650可被固定,并且道路片段610a-610d可被固定,使得姿态604可处于它们针对道路片段610的最终固定位置
‑‑
例如,如图6h中的示例道路片段610c所示。如本文所描述的,最终道路片段610可具有相对原点(例如,用于相对于局部或相对坐标系统进行定位)。照此,并且由于相对原点具有在全局坐标系中的位置,然后定位到局部坐标系也可定位到全局坐标系。例如,关于图6h,道路片段610c可以具有原点652c(如图所示)。尽管未示出,但其他道路片段610a、610b和610d也可具有相应的原点652。
[0115]
参考图6i,每个道路片段610可具有针对每个直接邻近道路片段610计算的相对变换。在图6i的图示中,道路片段610c可以具有在道路片段610c和道路片段610a之间确定的相对变换(例如,变换,t610c
610a
),在道路片段610c和道路片段610b之间确定的相对变换(例如,变换,t610c
610b
),以及在道路片段610c和道路片段610d之间确定的相对变换(例如,变换,t610c
610d
)。在定位110期间可以使用相对变换
‑‑
例如,更具体地当生成聚合成本函数时和/或当生成用于定位的局部地图布局时
‑‑
因为聚合成本空间可以包括当关于例如道路片段610a定位时产生的一个或更多个成本空间并且可以包括当关于例如道路片段610c定位时产生的成本空间。因此,当从道路片段610a进入道路片段610c时,可以更新或变换成本空间——例如,使用变换t610c
610a
——以更新成本空间,使得每个聚合成本空间参考相同
的原点(例如,道路片段610c的原点652c)。相对变换可表示六个自由度,例如旋转(例如,x、y和z轴旋转角之间的差)和平移(例如,(x、y、z)坐标之间的差)。
[0116]
再次参见图4,在配准402和姿态优化404之后,更新的姿态图(例如,姿态图650)可以是固定的,并且作为结果,多个驾驶602的相对姿态可以是固定的。这样,来自每个驾驶602的地图504(其输出现在当前对准)(例如,由于配准402和姿态优化404)可以用于将单独地图504的地图层融合(例如,经由融合406)在一起以形成聚合hd地图。聚合hd地图可包括与个体地图504相同的单独层,但是聚合hd地图可包括聚合层-例如,聚合基础层、聚合lidar点云层、聚合radar点云层和聚合radar地图图像层等。融合过程604可以用于相对于任何单个驾驶中存在的数据来改进地图数据的数据质量——例如,融合地图可以比来自单个驾驶的地图流210的单个地图504更准确或可靠。例如,可以去除地图504之间的不一致性,可以提高地图内容的精度,并且可以实现世界的更完整的表示——例如,通过组合两个不同地图层或子地图的地理范围,或者组合关于跨多个驾驶通过相同交叉口的等待条件的观察。一旦通过姿态图(例如,姿态图650)确定不同驾驶602的姿态604的最终(例如,更优化或期望的)几何布局,来自多个地图504和/或与其相对应的地图流210的信息可以容易地被转换成与每个道路片段610相关联的相同的输出坐标系或姿态。
[0117]
作为示例,关于基础层中表示的3d地标位置,来自多个地图504的3d地标位置可以被融合在一起以生成每条车道线、每条道路边界、每条标志、每条柱等等的最终表示。类似地,对于lidar强度图、lidar高度图、lidar距离函数图像、radar距离函数图像和/或地图504的其他层,可以融合个体地图层以生成聚合地图层。因此,在第一地图层包括在某个阈值相似度内与另一地图层的数据向上匹配的数据的情况下,可以使用(例如,平均)匹配数据来生成最终表示。例如,关于基础层,在数据对应于标志的情况下,可以比较第一地图504中的标志的第一表示和第二地图504中的标志的第二表示。在第一标记和第二标记在彼此的阈值距离内和/或具有相同语义类别的情况下,标记的最终(例如,平均)表示可以包括在聚合hd地图中。可以针对车道分隔器、道路边界、等待条件和/或其他地图信息执行该相同的处理。相反,在来自地图504的地图层的数据与来自其他地图的其他地图层的数据不匹配的情况下,该数据可被滤除。例如,在第一地图504包括用于位置处的车道分隔器和语义类别的数据,并且一个或更多个其他地图504不共享该信息的情况下,来自第一地图504的车道分隔器可以从针对聚合hd地图的考虑中移除或滤波掉。
[0118]
如本文所描述的,融合过程406可以对于地图504的不同地图层(或其中所表示的不同特征)是不同的。例如,对于车道图融合(例如,车道分隔器、道路边界等的融合),来自多个地图504的多个基本地图层的单独观察的车道、路径和/或轨迹可以在聚合hd地图中融合成单车道图。各个地图504的车道边界和/或车道分隔器不仅可以针对车道图(例如,作为车辆1500可以行驶的车道的边界的分隔器)融合,而且可以针对作为3d地标或从3d地标生成的2d地标(例如,作为稳定的语义地标的集合)的基于相机的定位融合。除了车道边界或分隔器之外,还可以从地图流210中收集其他路标并且将其包括在地图504中以用于融合过程604。例如,停止线、道路文本、拼条区域和/或其他标记可以融合在一起,以用作用于定位和/或用于更新等待条件信息的语义地标。关于基础层中的等待条件,来自多个地图504的等待条件可以被融合以生成等待条件的最终表示。还可以从地图504的多个基础层融合杆、标志和/或其他静态对象以生成其聚合表示。杆、标志和/或其他(垂直)静态对象可用于定
位。
[0119]
在一些实施例中,车道分隔器、车道中心(例如,轨道)和/或道路边界可能不能从感知中清晰地标识在基础层中。在这种实施例中,来自基础层和/或地图流210的轨迹信息可以用于推断轨道和/或通道分隔器。例如,在束调整之后,可从俯视图查看姿态图650以确定轨迹模式。被确定为在同一车道中的轨迹可以用于生成特定车道的车道分隔器和/或轨道。然而,为了确定两个或更多轨迹来自相同的行驶车道,可以使用启发法。例如,为了确定将两个轨迹聚类在一起作为属于同一车道,可以比较当前姿态或帧。在两个轨迹的当前帧或姿态看起来与同一行驶车道匹配(例如,基于某个距离启发法)的情况下,也可以分析在当前姿态之前某个距离(例如,25米)的姿态和在两个轨迹的当前姿态之后某个距离(例如,25米)的姿态。在当前姿态、先前姿态和前向姿态都指示同一行进车道的情况下,当前姿态可被聚集在一起以确定车道分隔器、车道轨和/或道路边界位置。因此,当对应于车辆1500的一个轨迹改变车道而另一车辆1500在车道中保持稳定时,这两个轨迹的组合将导致实际车道分隔器、车道轨道、和/或道路边界的不准确表示。在一些实施例中,除了分析轨迹的姿态之间的距离,或作为另外一种选择,可分析轨迹之间形成的角度。例如,在角度差大于某一阈值(例如,15度、40度等)的情况下,两个轨迹可视为不来自相同车道且可不群集在一起。
[0120]
关于lidar和/或radar地图层,来自多个地图504的lidar和radar点的融合可确保融合的或聚集的地图包含比任何个体地图504更完全的点云(例如,由于遮挡、动态对象等)。融合处理604还可以通过去除冗余以减少存储和/或传输聚合hd地图的点云信息所需的数据量来减少点云覆盖中的冗余。例如,在一个或更多个驾驶的点云点不与来自另一驾驶的点云点对齐的情况下,来自不匹配驾驶的点可以被移除-例如,经由动态对象移除。lidar的所得聚集图层可包括聚合切片(例如,地平面切片、giraffe平面切片等)一个或更多个点云层、存储每个像素的平均高度的lidar高度图图像层和/或存储每个像素的平均强度值的地面反射率或强度图图像层。对于radar,得到的聚合地图层可以包括radar横截面(rcs)地图图像层和/或radar点云层(其可以是或可以不是切片的)。在各实施例中,所有lidar和radar地图图像层的存储器中表示可使用浮点表示。对于仰角模型、地面反射率模型和/或rcs,没有任何有效数据的像素可以由非数字(nan)数据类型编码。关于地面反射率和高度地图图像层,地图图像生成器可以搜索每个点的高度分布中的峰值密度。仅这些点可被认为是地面检测,并且噪声测量可被滤除(例如,对应于障碍物的测量)。在一些实施例中,可以应用中值滤波器来填充在缺失测量,否则将存在间隙。
[0121]
关于lidar,可以实施基于体素的融合策略。例如,在体素仅由许多驾驶中的少数观察到的情况下,体素可被确定为噪声检测。在实施方式中,可以针对每个道路片段610执行该lidar融合。在非限制性实施例中,可根据以下过程来执行lidar融合:(1)找到lidar点的紧密3d边界框;(2)给定预设体素分辨率和3d点,(x,y,z),计算3d点的索引;(3)使用3d体积的稀疏表示而不是密集表示以用于存储器使用减少;(4)保存观察到体素的驾驶或地图流210的id和体素数据中的平均颜色;以及(5)在利用驾驶中的所有点更新体素体积之后,对每个体素中的驾驶数量进行阈值处理,使得仅保持驾驶数量大于阈值的体素(例如,阈值可以被设置为道路片段610中的总驾驶602的一半)。除了去除有噪声的3d点之外,lidar融合可以生成并保存giraffe平面和地平面切片中的点云。相应平面或切片中的3d点随后可
用于生成用于lidar定位的不同种类的lidar地图图像。例如,giraffe平面可以包括z=[a1,b1]范围内的点,接地平面点可以在z=[a2,b2]范围内,其中a1,b1,a2,b2可以是预设参数。因此,基于点在其框架坐标系中的z坐标(高度)选择点。注意,滤波过程是基于框架坐标而不是基于道路片段坐标完成的,因此,在将点变换到道路片段坐标系之后,可以不基于它们的z坐标对点进行滤波。为了解决该问题,可以注意到在转换点之前点属于giraffe平面或地平面,并且该信息可以保存在与体素相关联的数据结构内部。如果体素通过噪声滤波处理,并且也属于这两个平面之一,则可以将该体素保存到对应的点云文件中。可针对radar数据执行类似的过程。
[0122]
在一些实施例中,诸如在正常检查112期间执行融合过程406的情况下,与更近的数据相比,更过时的lidar数据、radar数据和/或地图数据可被更负地加权。照此,当在较新的地图504和较旧的地图504之间确定不一致时,来自较旧的地图504的数据可被滤波掉,并且来自较新的地图504的数据可被保留。这可以是改变路况、构造等的结果,并且更近的或当前的数据可能对于道路片段610的导航更有用。
[0123]
在融合处理406之后,可能已经生成了地图数据108(例如,表示包括聚合层的聚合hd地图)。地图数据108然后可以用于定位110,如本文更详细描述的。
[0124]
现在参考图7,本文描述的方法700的每个方框包括可以使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可以通过处理器执行存储在存储器中的指令来实现。方法700还可以体现为存储在计算机存储媒质上的计算机可用指令。方法700可由独立应用、服务或托管服务(独立或与其他托管服务组合)或插件提供给另一产品,仅举几例。此外,举例来说,关于图4的过程106描述方法700。然而,方法700可附加地或替换地在任何一个过程内由任何一个系统或过程和系统的任何组合执行,包括但不限于本文描述的那些。
[0125]
图7是示出了根据本公开的一些实施例的用于地图创建的方法700的流程图。在框b702处,方法700包括从多个车辆接收表示与多个驾驶相对应的多个地图流的数据。例如,可以针对地图创建106过程接收地图流210,其中地图流210可以对应于来自任何数量的车辆1500的任何数量的驾驶。
[0126]
在框b704处,方法700包括将每个地图流转换成包括多个层的相应地图以生成多个个体地图。例如,每个接收的地图流210可以经历转换502以生成地图504,使得生成多个地图504(例如,地图504(1)-504(n))。每个地图504可以包括多个层,诸如但不限于关于图5b所描述的层。
[0127]
在框b706处,方法700包括在几何上配准来自两个或更多个个体地图的片段对,以生成表示片段对的姿态之间的姿态链路的帧图。例如,可以例如使用指示接近度的轨迹信息和gnss数据来确定不同地图流210和/或地图504的片段(例如,部分552a-552d),并且可以将片段彼此配准(例如,在实施例中,使用最小生成树加上安全裕度)以生成姿态图(例如,图6a的帧图600a)。姿态图可以包括不同驾驶602的姿态或帧之间的姿态链路。在一些实施例中,可以针对不同的地图层和/或传感器模态执行不同的配准过程——例如,因为不同传感器的帧速率可以不同,所以车辆1500在每个帧处的姿态可以针对不同的传感器模态并且因此还针对不同的地图层是不同的。
[0128]
在框b708处,方法700包括将来自帧图的姿态群指派给道路片段以生成包括与道
路片段相对应的姿态的姿态图。例如,可执行本文中关于图6b描述的过程以确定来自对应于单个道路片段610的不同驾驶602的姿态604。一旦确定道路片段610c,则可生成包括来自道路片段610c和每个相邻道路片段(例如,610a、610b和610d)的姿态604的姿态图,以生成姿态图630——例如,类似于较大框架图600a,但没有省略外部姿态连接(例如,至道路片段610a-610d外部的姿态604的姿态连接)。
[0129]
在框b710处,方法700包括对姿态图执行一个或更多个姿态优化算法来生成经更新的姿态图。例如,ransac操作(例如,图6f)、姿态图优化(例如,图6g)和/或其他优化算法可被执行以生成经更新的姿态图650。
[0130]
在框b712处,方法700包括基于来自经更新的姿态图的经更新的姿态来融合来自多个个体地图的地图层以生成经融合地图。例如,一旦地图层的帧中的每一个的相对姿态604是已知的,来自地图层的数据可以被融合以生成聚合或融合的hd地图层。例如,来自相应地图504的两个或更多个基础层的3d地标位置可以根据其姿态对准的平均位置来融合。照此,在第一地图504的第一基础层中的杆具有位置(x1,y1,z1)并且另一地图504的第二基础层中的杆具有位置(x2,y2,z2)的情况下,杆在hd地图的融合基础层中可具有单个最终位置,如((x1+x2)/2,(y1+y2)/2,(z1+z2)/2)。此外,因为杆对应的道路片段610的原点652可以是已知的,所以可以相对于道路片段的原点652确定最终杆位置。可针对基础层中的所有3d地标重复此过程,且可针对地图504的每一其他层类型(例如,radar层、lidar层等)重复此过程。
[0131]
在方框b714处,方法700包括将表示经融合地图的数据发送到一个或更多个车辆以供在执行一个或更多个操作中使用。例如,可以将表示最终融合hd地图的地图数据108发送到一个或更多个车辆1500,用于定位、路径规划、控制决定和/或其他操作。例如,一旦定位到融合的hd地图,就可以获得来自自主驾驶栈的计划和控制层的信息-诸如车道图、等待状况、静态障碍物等-并且可以将此信息提供给自主车辆1500的计划和控制子系统。在一些实施例中,可以基于车辆1500的配置将融合hd地图的选择层传输到相应的车辆1500。例如,在车辆1500不具有lidar传感器的情况下,可以不将融合地图的lidar层传输至车辆1500用于存储和/或使用。作为该定制方法的结果,可以减少用于传输地图数据108的带宽要求和/或用于存储地图数据108的车辆1500的存储要求。
[0132]
定位
[0133]
参考图8a,图8a描绘了根据本公开的一些实施例的定位过程110的数据流程图。在一些实施例中,可以使用车辆1500执行过程110。在一些实施例中,关于过程110描述的一个或更多个过程可使用一个或更多个并行处理单元来并行执行。例如,使用不同地图层的定位可以与一个或更多个其他地图层并行地执行。在单个地图层内,可以并行执行成本空间采样802、成本空间聚合804和/或滤波806。例如,在成本空间采样802期间可以并行采样不同的姿态,以更有效地生成用于当前帧或时间步长的成本空间。此外,因为与地图层相对应的地图数据可以作为纹理存储在gpu上,所以可以执行纹理查找以快速确定成本空间的成本值——从而导致每个成本空间分析的运行时间减少。此外,如本文中描述的,可以在地图创建过程106中的配准402期间执行定位过程110-例如,成本空间采样802、成本空间聚合804和/或滤波806。例如,定位过程110可以用于在几何上配准来自多对片段的姿态,并且成本空间采样802、成本空间聚合804和/或滤波806可以用于将来自一个片段的地图层与另一
个片段的地图层对准。
[0134]
定位过程110的目标可以是相对于由地图数据108表示的融合hd地图的道路片段610的局部原点652定位车辆1500的原点820。例如,可以使用定位过程110在特定时间步骤或帧为车辆1500确定与融合定位1308(在本文中相对于图9a-图9c更详细地描述)对应的椭球。车辆1500的原点820可对应于车辆1500的参考点或原点,诸如车辆1500的后轴的中心。车辆1500可相对于道路片段610的原点652定位,并且道路片段610可具有在全局坐标系中的对应位置824。这样,一旦车辆1500被定位到hd地图的道路片段610,车辆1500也可以被全局地定位。在一些实施例中,可以针对每个单独的传感器模态(例如,lidar定位、相机定位、radar定位等)确定椭球体910,并且可以经由定位融合810融合每个定位技术的输出。可以生成最终原点位置——例如,车辆1500的原点820——并且在当前帧或时间步长处用作车辆1500的定位结果。
[0135]
在驾驶开始时,可以确定车辆1500的当前道路片段610。在一些实施例中,当前道路片段610可从最后驾驶已知——例如,当车辆1500关闭时,可存储车辆1500所定位的最后已知道路片段。在其他实施例中,可以确定当前道路片段610。为了确定当前道路片段610,gnss数据可用于全局地定位车辆1500,并且然后确定对应于全局定位结果的一个或更多个道路片段610。在结果返回两个或更多道路片段610的情况下,具有最接近车辆1500的原点的原点652的道路片段610可被确定为当前道路片段610。一旦确定了当前道路片段610,就可以将道路片段610确定为用于广度优先搜索的种子道路片段。可以执行广度优先搜索以生成在第一层级处与当前道路片段610相邻的道路片段610的局部布局,然后生成从第一层级处与道路片段610相邻的第二层级道路片段610的局部布局,等等。理解与当前道路片段610相邻的道路片段610对于定位过程110可以是有用的,因为当车辆1500从一个道路片段610移动到另一道路片段610时,道路片段610之间的相对变换可以用于更新针对先前道路片段610生成的采样成本空间,这些采样成本空间在用于定位的聚合成本空间中使用。一旦车辆1500从种子道路片段移动到相邻道路片段,就可以对新道路片段执行另一广度优先搜索以生成更新的局部布局,并且当车辆1500从道路片段到道路片段穿越地图时,可以重复该过程。此外,如本文所描述的,当车辆1500从一个道路片段610移动到另一道路片段610时,先前计算的成本空间(例如,缓冲区中的某个数量的先前成本空间,诸如50、100等)可以被更新以反映相同的成本空间,但是相对于新道路片段610的原点652。因此,所计算的成本空间可以通过道路片段携带,以经由成本空间聚合804生成聚合成本空间。
[0136]
定位过程110可以使用传感器数据102(例如,由车辆1500生成的实时传感器数据102)、地图数据108和/或输出204在每个时间步长或帧处定位车辆1500。例如,传感器数据102、输出204和地图数据108可以用于执行成本空间采样802。成本空间采样802可以针对对应于不同地图层的不同传感器模态而不同。例如,可以针对lidar地图层(例如,lidar点云层、lidar地图图像层和/或lidar体素地图层)、radar地图层(例如,radar点云层和/或radar地图图像层)和/或针对基础层(例如,针对地标或基于相机的地图层)单独地执行成本空间采样802。在每一传感器模态内,可使用一种或更多种不同技术来执行成本取样,且可加权不同技术之上的成本以产生经取样姿态的最终成本。可针对成本空间中的每一姿态重复此过程以产生帧在定位期间的最终成本空间。例如,可以计算lidar强度成本、lidar高度成本和lidar(切片)点云成本(例如,使用距离函数),然后求平均值或以其他方式加权,
并且用于成本空间上的姿态或点的最终成本。类似地,对于基于相机或地标的成本空间采样,语义成本可以被计算,并且几何成本(例如,使用距离函数)可以被计算,然后被平均或以其他方式加权,并且用于成本空间上的姿态或点的最终成本。作为另一示例,radar点云成本(例如,使用距离函数)可被计算并用于成本空间上的姿态或点的最终成本。照此,可执行成本空间采样802以对成本空间内的每一不同姿态的成本进行采样。成本空间可以对应于地图中可能仅包括当前道路片段610的一部分、整个当前道路片段610、当前道路片段610和一个或更多个邻接道路片段610的一些区域,和/或整个融合hd地图的一些其他区域。照此,成本空间的大小可以是系统的可编程参数。
[0137]
对于任何单独的传感器模态,成本空间采样802的结果可以是表示车辆1500可相对于每个特定姿态定位的几何匹配或可能性的成本空间。例如,成本空间中的点可具有相对于当前道路片段610的对应相对位置,且成本空间可指示车辆1500当前处于每一特定姿态(例如,相对于道路片段610的原点的(x,y,z)位置以及围绕x、y和z轴中的每一者的轴角)的可能性或可能性。
[0138]
参考图9a,成本空间902可以表示传感器模态的成本空间——例如,根据图10a至图10c生成的基于相机的成本空间。例如,成本空间902可表示车辆1500在当前帧当前处于多个姿态中的每一个(例如,由成本空间902的点表示)的可能性。虽然在图9a中以2d表示,但是成本空间902可以对应于3d成本空间(例如,具有x、y和z轴中的每个的(x、y、z)位置和/或轴角度)。照此,对于多个姿态中的每个姿态,可以将传感器数据102(例如,在预处理之前或之后)和/或输出204(例如,2d图像空间和/或3d图像空间中的地标位置的检测)与地图数据108进行比较。在姿态与地图数据108不能很好地匹配的情况下,成本可能较高,并且与姿态对应的成本空间中的点可表示为,例如,以红色表示,或者相对于图9a,以非虚线或白色部分表示。在姿态与地图数据108匹配良好的情况下,成本可以较低,并且对应于姿态的成本空间中的点可以这样表示——例如,以绿色表示,或者相对于图9a,由虚点表示。例如,参考图9a,在成本空间902对应于图10a的可视化1002的情况下,虚线部分908可对应于沿对角线的姿态的低成本,其中符号1010可与dnn 202的预测或输出204良好地匹配。例如,在成本空间的虚线部分的左下部的姿态处,符号的预测可以与来自地图数据108的符号1010很好地对齐,并且类似地,在虚线部分的右上部,来自相应姿态的符号的预测也可以与符号1010很好地对齐。照此,这些点可以低成局部表示。然而,由于噪声和大量低成本姿态,单个成本空间902可能不准确用于定位-例如,车辆1500不能位于由虚线部分908表示的每个姿态处。如此,可以经由成本空间聚合804来生成聚合成本空间904,如本文所描述的。
[0139]
成本空间采样802可以针对不同的传感器模态单独地执行,如本文所描述的。例如,关于图10a-10d,可以使用在成本空间的每个姿态下的几何成本和/或语义成本分析来生成基于相机或地标的成本空间(例如,对应于融合hd地图的基础层)。例如,在给定时间步长或帧处,输出204——例如,车道分隔器的地标位置、道路边界、标志、杆等——可以相对于一个或更多个图像(诸如可视化1002中表示的图像)来计算。来自地图数据108的3d地标信息可以被投影到2d图像空间中,以对应于2d图像空间中的3d地标相对于车辆1500在成本空间中采样的当前姿态的当前预测的位置。例如,符号1010可对应于来自地图数据的2d投影,并且符号1012可对应于来自一个或更多个dnn 202的当前预测或输出204。类似地,分道器1014可对应于来自地图数据108的2d投影,并且分道器1016可对应于来自一个或更多个
dnn 202的当前预测或输出204。为了计算当前姿态的成本(例如,由姿态指示符1018所表示的),来自dnn 202的当前输出204可被转换成与可视化1004中所表示的预测的几何结构相对应的距离函数(例如,其中预测被划分成多个点,并且每个点在其中心处具有零成本,并且成本从中心向外移动直到达到最大成本,如可视化1004的白色区域所表示的),并且当前输出204可以被单独地转换成用于可视化1006中表示的预测的语义标签。另外,可以将3d地标的2d投影投影到图像空间中,并且可以将来自2d投影的每个点与投影点着陆在其上的距离函数表示的部分进行比较以确定相关联的成本。照此,虚线部分可对应于一个或更多个dnn 202的当前预测的距离函数表示,并且暗实线或点可表示来自地图数据108的2d投影。可以针对2d投影的每个点计算成本,并且可以使用来自每个点的相对成本来确定平均成本。例如,点1020a处的成本可能高或最大,并且点1020b处的成本可能低-例如,因为点1020b处的成本与车道分隔器的距离函数表示的中心对齐。此成本可对应于当前帧的当前姿态的几何成本。类似地,如图10c所示,可以将对应于来自地图数据108的2d投影点的语义标签与投影的语义信息进行比较。照此,在点在语义上不匹配的情况下,成本可被设置为最大,而在点匹配的情况下,成本可被设置为最小。可以对这些值求平均值或以其他方式加权以确定最终语义成本。可以对最终语义成本和最终几何成本加权以确定用于更新成本空间(例如,成本空间902)的最终总成本。例如,对于每一点,语义成本可能对于具有投票的对应几何成本来说必须较低。照此,在语义信息不匹配的情况下,该特定点的成本可被设置为最大。在语义信息匹配的情况下,对于语义成本,可以将成本设置为最小值或0,并且该点的最终成本可以表示几何成本。最终,可更新成本空间中对应于当前姿态的点以反映所有2d投影点的最终成本。
[0140]
作为另一示例,关于图11a-11b,可使用与地图数据108相对应的距离函数(例如,radar点云的自顶向下投影,其中每个点被转换成距离函数表示)来生成基于radar的成本空间(例如,对应于经融合的hd地图的radar层)。例如,在给定时间步长或帧处,对应于radar点云(如可视化1102中表示的)的地图数据108可被转换为距离函数(如可视化1104中表示的),例如其中每个radar点在其中心处可具有零成本,成本随着距中心的距离的增加以增加到最大成本。例如,关于可视化1104,可视化1102的白色部分可以对应于最大成本。为了计算当前姿态(例如,由姿态指示符1106表示)的成本,来自传感器数据102的radar数据可被转换为radar点云,并与radar点云的距离函数表示(例如,如可视化1104中表示的)进行比较。可视化1102和1104中的中空圆可以对应于车辆1500的当前radar点云预测。照此,对于每个当前radar点,可通过将每个当前radar点与当前radar点对应于或着陆在其上的距离函数radar值进行比较来确定成本。照此,当前radar点1108a可具有最大成本,而当前radar点1108b可具有低成本——例如,因为点1108b靠近地图数据108中来自radar点云的点的中心着陆。最终,来自当前radar点的成本中的每一个的平均或其他加权可被计算,并且最终成本值可被用于更新当前采样的姿态的成本空间。
[0141]
作为另一示例,相对于图12a至图12d,可使用(切片)lidar点云、lidar强度图和/或lidar仰角图上的距离函数来生成基于lidar的成本空间(例如,对应于融合hd地图的lidar层)。例如,对于如由姿态指示符1210所指示的给定姿态,可以生成当前或实时lidar数据(例如,对应于传感器数据102)并将其转换成用于与从地图数据108生成的强度图进行比较的值(例如,如可视化1202中示出的),转换成用于与从地图数据108生成的高度图进行
比较的值(例如,如可视化1204中所示),并且地图数据108的lidar点云(例如,如可视化1206中所示)可被转换成其距离函数表示(例如,如可视化1208中所示)用于与对应于传感器数据102的当前lidar点云进行比较。在实施例中,lidar点云可对应于lidar点云的切片,并且一个或更多个单独的切片可转换成距离函数表示并且用于计算成本。来自高度比较、强度比较和距离函数比较的成本可被平均或以其他方式加权,以在基于lidar的成本图上确定对应于当前姿态的最终成本。
[0142]
例如,相对于图12a,由地图数据108表示的融合hd地图的lidar层可包括lidar强度(或反射率)图像(例如,来自融合lidar数据的强度值的自顶向下投影)。例如,涂漆表面(诸如,车道标记)可具有更高的反射率,并且可捕捉该反射强度并将其用于将地图数据108与当前lidar传感器数据进行比较。可以将来自车辆1500的当前lidar传感器数据转换成lidar强度表示1212a,并且与来自在当前姿态下的地图数据108的lidar强度图像进行比较。对于具有与来自地图数据108的点相似或匹配的强度值的当前lidar强度表示1212a的点,成本可能较低,并且在强度值不匹配的情况下,成本可能较高。例如,点的强度的零差异可对应于零成本,阈值差异及以上可对应于最大成本,且在零差异与阈值差异之间,成本可从零成本增加到最大成本。当前lidar强度表示1212a的每个点的成本可以与每个其他点平均或以其他方式加权以确定lidar强度比较的成本。
[0143]
作为另一实例,相对于图12b,由地图数据108表示的融合hd地图的lidar层可包括lidar高度图像(例如,高度值的自顶向下投影,得到自顶向下深度图)。可以将来自车辆1500的当前lidar传感器数据转换成lidar高度表示1212b,并且与在当前姿态下从地图数据108生成的lidar高度图像进行比较。对于具有与来自地图数据108的点相似或匹配的高度值的当前lidar高度表示1212b的点,成本可能较低,并且在高度值不匹配的情况下,成本可能较高。例如,点的高度中的零差异可对应于零成本,阈值差异及以上可对应于最大成本,且在零差异与阈值差异之间,成本可从零成本增加到最大成本。当前lidar高度表示1212b的每个点的成本可以与每个其他点平均或以其他方式加权以确定lidar高度比较的成本。
[0144]
在一些实施例中,因为可以相对于当前道路片段610的原点652确定来自地图数据108的高度值,并且来自当前lidar高度表示1212b的高度值可以对应于车辆1500的原点820或参考点,所以可以执行变换以将来自lidar高度表示1212b的值与来自地图数据108的lidar高度图像进行比较。例如,在来自lidar高度表示1212b的点具有1.0米(例如,距车辆1500的原点1.0米高)的高度值的情况下,地图数据108的对应于来自表示1212b的点的点具有1.5米的值,并且车辆1500的原点820与道路片段610的原点652之间的高度差为0.5米(例如,道路片段的原点652比车辆1500的原点820高0.5米),来自地图数据108的点与表示1212b之间的实际差值可以是0.0米(例如,1.5米-0.5米=1米作为来自地图数据108的点相对于车辆1500的原点820的最终值)。根据该实施例,地图数据108或表示1212b的值之间的变换可以对应于从道路片段原点652到车辆原点820、从车辆原点820到道路片段原点652、或其组合的变换。
[0145]
作为另一示例,关于图12c-12d,由地图数据108表示的融合hd地图的lidar层可包括切片的lidar点云(例如,对应于接地平面切片、giraffe平面切片、另一定义的切片,诸如从接地平面延伸2米到3米的1米厚的切片等)。在一些实施例中,点云可以不被切片,并且可
以替代地表示整个点云。可以将切片的lidar点云(例如,如可视化1206中所示)转换成其距离函数表示(例如,如可视化1208中所示)。例如,可以转换来自lidar点云的每个点,使得点的中心具有零成本,并且随着离点的中心越远成本增加直至某个最大成本(例如,如由可视化1208的白色区域所表示的)。为了计算当前姿态(例如,由姿态指示符1210表示)的成本,来自传感器数据102的lidar数据可被转换成lidar点云(或其对应切片)并与lidar点云的距离函数表示(例如,如可视化1208中所表示)进行比较。可视化1206和1208中的中空圆可以对应于车辆1500的当前lidar点云预测。因此,对于每个当前lidar点,可以通过将每个当前lidar点与当前lidar点对应于或着陆在其上的距离函数lidar值进行比较来确定成本。因此,例如,因为点1214b靠近来自地图数据108中的lidar点云的点的中心着陆,所以当前lidar点1214a可具有最大成本,而当前lidar点1214b可具有低成本。最终,可以计算来自当前lidar点的每个成本的平均或其他加权,并且除了来自高度和强度比较的成本值之外,还可以使用最终成本值来更新当前采样的姿态的成本空间。
[0146]
在一些实施例中,基于lidar的成本空间采样802、成本空间聚合804和/或滤波806中的至少一个可以在gpu(例如,离散gpu、虚拟gpu等)上和/或使用一个或更多个并行处理单元执行。例如,对于基于相机的成本空间(例如,关于图10a-10c所描述的),检测信息和地图数据108投影可以作为纹理存储在gpu上的存储器中或gpu可访问的存储器中,并且比较可以对应于使用gpu执行的纹理查找。类似地,相对于lidar和/或radar,该比较可以对应于纹理查找。此外,在一些实施例中,并行处理可以用于并行执行两个或更多个成本空间——例如,可以使用不同的gpu和/或并行处理单元资源并行地生成对应于lidar的第一成本空间和对应于radar的第二成本空间。例如,可以并行计算个体定位808,以便减少用于融合定位的系统的运行时间。结果,这些处理可以比在cpu单独执行时更高效地执行。
[0147]
再次参考图8a,在对于单个帧或时间步长和对于任何数量的传感器模态执行成本空间采样802之后,可以执行成本空间聚合804。可以针对每个传感器模态单独地执行成本空间聚合804——例如,基于lidar的成本空间聚合、基于radar的成本空间聚合、基于相机的成本空间聚合等。例如,成本空间聚合804可以聚合为任意数量的帧(例如,25帧、80帧、100帧、300帧等)计算的成本空间。为了聚合成本空间,可以对已经计算的每个先前成本空间进行自我运动补偿以与当前帧相对应。例如,可以确定车辆1500相对于车辆1500的当前姿态的旋转和/或平移以及来自包括在聚合中的每个先前帧的旋转和/或平移,并且使用所述旋转和/或平移来运送来自先前帧的成本空间值。除了基于自身运动来变换先前的成本空间之外,还可以例如使用从一个道路片段到下一个道路片段的变换来变换成本空间,诸如相对于图6i描述的那些,使得每个成本空间对应于融合hd地图的当前道路片段610的原点652。例如,当车辆1500相对于第一道路片段610定位时,可能已产生待聚合的一些数量的成本空间,并且当车辆1500相对于第二道路片段610定位时,可能已产生待聚合的一些其他数量的成本空间。因此,来自第一道路片段或先前道路片段610的成本空间可被变换,使得成本空间值相对于第二道路片段或当前道路片段610。一旦在与当前帧和当前道路片段610相对应的同一参考帧中,就可以聚合成本空间。因此,并且参考图9b,车辆1500随着时间的自我运动可帮助消除单独成本空间的歧义,使得可生成总计成本空间904。
[0148]
然后,聚合成本空间904可以经历滤波806(例如,使用卡尔曼滤波器或另一滤波器类型)以确定对应于车辆1500相对于当前道路片段610的计算位置的椭球910。类似于以上
关于用于聚合成本空间904的变换的描述,经滤波成本空间906还可经历变换以补偿自身运动和道路片段切换。椭球910可指示相对于车辆1500的当前道路片段610的当前位置,并且可在每个新帧重复该过程。结果可以是基于为椭球910计算的传感器模态的单独定位,并且可以在每个帧处计算多个椭球910,例如,每个传感器模态一个椭球。
[0149]
然后,可在个体定位808上执行定位融合810以生成最终定位结果。例如,参考图13,个体定位808可以对应于基于lidar的定位1302(例如,由可视化1300中的椭圆体和原点表示)、基于radar的定位1304、基于相机的定位1306、其他传感器模态定位(未示出)和/或融合定位1308。虽然在本文中仅描述了每个传感器模态的单个定位,但是这不旨在是限制性的。在一些实施例中,可存在针对不同传感器模态的一个以上定位结果。例如,车辆1500可相对于第一照相机(例如,面向前的照相机)定位并且可单独地相对于第二照相机(例如,面向后的照相机)定位。在此实例中,个体定位808可包含基于相机的第一定位和基于相机的第二定位。在一些实施例中,融合定位1308可以对应于个体定位808在当前帧处的融合和/或可以对应于来自向前携带(例如,基于自我运动)至当前帧的一个或更多个先前帧的一个或更多个先前融合定位结果。照此,在各实施例中,当前帧的融合定位1308可考虑个体定位808和先前融合定位结果以使当前定位状态前进通过帧。
[0150]
为了计算当前帧的融合定位1308,可以对个体定位808执行一致/不一致分析。例如,在一些实施例中,距离阈值可以用于确定个体定位的群集808,并且可以选择具有最小内群集协方差的群集用于融合。然后可以对所选择的集群内的个体定位808进行平均或以其他方式加权以确定当前帧的融合定位1308。在一些实施例中,滤波器(如卡尔曼滤波器)可以用于针对当前帧生成经聚类的单独定位808的融合定位1308。例如,在使用卡尔曼滤波器的情况下,卡尔曼滤波器可能不能很好地处理异常值,因此严重的异常值可能对最终结果具有不期望的影响。照此,群集方法可帮助滤除或移除异常值,使得基于卡尔曼滤波器的融合更准确。在一些实施例中,诸如在先前融合结果作为个体定位808被携带至当前帧的情况下,来自先前帧的融合结果可以漂移。例如,一旦当前个体定位808与融合结果足够不同(例如,其中可将融合结果滤波出群集),便可针对当前帧重新初始化融合结果,且接着可将重新初始化的融合结果运送到后续帧,直到再次检测到一定量的漂移为止。
[0151]
在一些实施例中,融合定位1308可以通过在个体定位808中的每个中分解因素来确定。例如,代替将结果分组成集群,可以基于距离评估对每个个体定位808进行加权。例如,可以为个体定位808计算协方差,并且可以较少地加权具有最高协方差(例如,对应于最大异常值)的个体定位808以确定融合定位1308。这可以使用鲁棒均值来执行,从而使得异常值对融合定位1308不具有不期望的影响。例如,可以计算每个个体定位808到鲁棒均值的距离,并且距离越大,个体定位808在确定融合定位1308时可以具有的权重越小。
[0152]
当前帧的融合定位1308然后可以用于相对于融合hd地图(由地图数据108表示)的道路片段610和/或相对于全局坐标系来定位车辆1500。例如,因为道路片段610可具有已知的全局位置,所以车辆1500到道路片段610的定位可具有相应的全局定位结果。此外,因为对道路片段610的局部或相对定位比单独的全局或gnss定位结果更准确,所以车辆1500的计划和控制可比单独的基于gnss的定位系统更可靠且更安全。
[0153]
现在参考图14,本文描述的方法1400的每个框包括可使用硬件、固件和/或软件的任何组合执行的计算过程。例如,不同功能可以通过处理器执行存储在存储器中的指令来
driving automation systems for on-road motor vehicles”(2018年6月15日发布的标准no.j3016-201806,2016年9月30日发布的标准no.j3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1500可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1500可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
[0162]
车辆1500可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1500可以包括推进系统1550,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统1550可以连接到可以包括变速器的车辆1500的传动系以便实现车辆1500的推进。可以响应于接收到来自油门/加速器1552的信号而控制推进系统1550。
[0163]
可以包括方向盘的转向(steering)系统1554可以用来在推进系统1550操作时(例如在车辆运动时)使车辆1500转向(例如沿着希望的路径或路线)。转向系统1554可以接收来自转向致动器1556的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
[0164]
制动传感器系统1546可以用来响应于接收到来自制动致动器1548和/或制动传感器的信号而操作车辆制动器。
[0165]
可以包括一个或更多个片上系统(soc)1504(图15c)和/或一个或更多个gpu的一个或更多个控制器1536可以向车辆1500的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1548操作车辆制动器、经由一个或更多个转向致动器1556操作转向系统1554、经由一个或更多个油门/加速器1552操作推进系统1550的信号。一个或更多个控制器1536可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1500。一个或更多个控制器1536可以包括用于自主驾驶功能的第一控制器1536、用于功能性安全功能的第二控制器1536、用于人工智能功能(例如计算机视觉)的第三控制器1536、用于信息娱乐功能的第四控制器1536、用于紧急情况下的冗余的第五控制器1536和/或其他控制器。在一些示例中,单个控制器1536可以处理上述功能中的两个或更多,两个或更多控制器1536可以处理单个功能,和/或其任意组合。
[0166]
一个或更多个控制器1536可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1500的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器1558(例如全球定位系统传感器)、radar传感器1560、超声传感器1562、lidar传感器1564、惯性测量单元(imu)传感器1566(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1596、立体相机1568、广角相机1570(例如鱼眼相机)、红外相机1572、环绕相机1574(例如360度相机)、远程和/或中程相机1598、速度传感器1544(例如用于测量车辆1500的速率)、振动传感器1542、转向传感器1540、制动传感器(例如作为制动传感器系统1546的部分)和/或其他传感器类型。
[0167]
控制器1536中的一个或更多个可以接收来自车辆1500的仪表组1532的输入(例如由输入数据表示),并且经由人机接口(hmi)显示器1534、听觉信号器、扬声器和/或经由车辆1500的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图15c的hd地图1522)、位置数据(例如,车辆1500例如
在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1536所感知的关于对象和对象状态的信息等等。例如,hmi显示器1534可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34b,等等)。
[0168]
车辆1500还包括网络接口1524,其可以使用一个或更多个无线天线1526和/或调制解调器通过一个或更多个网络通信。例如,网络接口1524可能够通过lte、wcdma、umts、gsm、cdma2000等通信。一个或更多个无线天线1526也可以使用诸如蓝牙、蓝牙le、z波、zigbee等等之类的一个或更多个局域网和/或诸如lorawan、sigfox等等之类的一个或更多个低功率广域网(lpwan)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
[0169]
图15b为根据本公开一些实施例的用于图15a的示例自主车辆1500的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1500上的不同位置。
[0170]
用于相机的相机类型可以包括但不限于可以适于与车辆1500的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(asil)b下和/或在另一个asil下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(rccc)滤色器阵列、红白白蓝(rccb)滤色器阵列、红蓝绿白(rbgc)滤色器阵列、foveon x3滤色器阵列、拜耳传感器(rggb)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有rccc、rccb和/或rbgc滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
[0171]
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(adas)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
[0172]
所述相机中的一个或更多个可以安装在诸如定制设计的(3-d打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-d打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
[0173]
具有包括车辆1500前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1536和/或控制soc的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与lidar相同的adas功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于adas功能和系统,包括车道偏离警告(“ldw”)、自主巡航控制(“acc”),和/或诸如交通指示牌识别之类的其他功能。
[0174]
各种各样的相机可以用于前置配置中,包括例如包括cmos(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1570,其可以用来感知从周边进入视场的对象(例如行人、十字路口交通或者自行车)。尽管图15b中图示出仅仅一个
广角相机,但是在车辆1500上可以存在任意数量的广角相机1570。此外,远程相机1598(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1598也可以用于对象检测和分类以及基本的对象追踪。
[0175]
一个或更多个立体相机1568也可以包括在前置配置中。立体相机1568可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的can或以太网接口的多核微处理器和可编程逻辑(fpga)。这样的单元可以用来生成车辆环境的3-d地图,包括针对图像中的所有点的距离估计。可替代的立体相机1568可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1568。
[0176]
具有包括车辆1500的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1574(例如如图15b中所示的四个环绕相机1574)可以置于车辆1500上。环绕相机1574可以包括广角相机1570、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1574(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
[0177]
具有包括车辆1500的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1598、立体相机1568、红外相机1572等等)的相机。
[0178]
图15c为根据本公开一些实施例的用于图15a的示例自主车辆1500的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
[0179]
图15c中车辆1500的部件、特征和系统中的每一个被图示为经由总线1502连接。总线1502可以包括控制器区域网络(can)数据接口(可替代地,本文称为“can总线”)。can可以是车辆1500内部的网络,用来辅助控制车辆1500的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。can总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如can id)。可以读取can总线以找到方向盘角度、地速、每分钟发动机转速(rpm)、按钮位置和/或其他车辆状态指示符。can总线可以是asil b兼容的。
[0180]
尽管这里将总线1502描述为can总线,但是这并不意图是限制性的。例如,除了can总线之外或者可替代地,可以使用flexray和/或以太网。此外,尽管用单条线来表示总线1502,但是这并不意图是限制性的。例如,可以存在任意数量的总线1502,其可以包括一条或更多条can总线、一条或更多条flexray总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1502可以用来执行不
同的功能,和/或可以用于冗余。例如,第一总线1502可以用于碰撞避免功能,并且第二总线1502可以用于驱动控制。在任何示例中,每条总线1502可以与车辆1500的任何部件通信,并且两条或更多总线1502可以与相同的部件通信。在一些示例中,车辆内的每个soc 1504、每个控制器1536和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1500的传感器的输入),并且可以连接到诸如can总线之类的公共总线。
[0181]
车辆1500可以包括一个或更多个控制器1536,例如本文关于图15a所描述的那些控制器。控制器1536可以用于各种各样的功能。控制器1536可以耦合到车辆1500的任何其他不同的部件和系统,并且可以用于车辆1500的控制、车辆1500的人工智能、用于车辆1500的信息娱乐和/或类似物。
[0182]
车辆1500可以包括一个或更多个片上系统(soc)1504。soc 1504可以包括cpu 1506、gpu 1508、处理器1510、高速缓存1512、加速器1514、数据存储1516和/或未图示出的其他部件和特征。在各种各样的平台和系统中,soc 1504可以用来控制车辆1500。例如,一个或更多个soc 1504可以在系统(例如车辆1500的系统)中与hd地图1522结合,所述hd地图可以经由网络接口1524从一个或更多个服务器(例如图15d的一个或更多个服务器1578)获得地图刷新和/或更新。
[0183]
cpu 1506可以包括cpu簇或者cpu复合体(可替代地,本文称为“ccplex”)。cpu 1506可以包括多个核和/或l2高速缓存。例如,在一些实施例中,cpu 1506在一致性多处理器配置中可以包括八个核。在一些实施例中,cpu 1506可以包括四个双核簇,其中每个簇具有专用的l2高速缓存(例如2mb l2高速缓存)。cpu 1506(例如ccplex)可以被配置为支持同时簇操作,使得cpu 1506的簇的任意组合能够在任何给定时间是活动的。
[0184]
cpu 1506可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于wfi/wfe指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。cpu 1506可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和ccplex确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
[0185]
gpu 1508可以包括集成的gpu(可替代地,本文称为“igpu”)。gpu 1508可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,gpu 1508可以使用增强张量指令集。gpu 1508可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括l1高速缓存(例如具有至少96kb存储能力的l1高速缓存),并且这些流式微处理器中的两个或更多可以共享l2高速缓存(例如具有512kb存储能力的l2高速缓存)。在一些实施例中,gpu 1508可以包括至少八个流式微处理器。gpu 1508可以使用计算应用编程接口(api)。此外,gpu 1508可以使用一个或更多个并行计算平台和/或编程模型(例如nvidia的cuda)。
[0186]
在汽车和嵌入式使用的情况下,可以对gpu 1508进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(finfet)上制造gpu 1508。然而,这并不意图是限制性的,并且gpu 1508可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个pf32核和32个pf64核划分成
四个处理块。在这样的示例中,每个处理块可以分配16个fp32核、8个fp64核、16个int32核、用于深层学习矩阵算术的两个混合精度nvidia张量核、l0指令高速缓存、线程束(warp)调度器、分派单元和/或64kb寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的l1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
[0187]
gpu 1508可以包括在一些示例中提供大约900gb/s的峰值内存带宽的高带宽内存(hbm)和/或16gb hbm2内存子系统。在一些示例中,除了hbm内存之外或者可替代地,可以使用同步图形随机存取存储器(sgram),例如第五代图形双倍数据速率同步随机存取存储器(gddr5)。
[0188]
gpu 1508可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ats)支持可以用来允许gpu 1508直接访问cpu 1506页表。在这样的示例中,当gpu 1508内存管理单元(mmu)经历遗漏时,可以将地址转换请求传输至cpu 1506。作为响应,cpu 1506可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回gpu 1508。这样,统一内存技术可以允许单个统一虚拟地址空间用于cpu 1506和gpu 1508二者的内存,从而简化了gpu 1508编程和将应用程序移(port)到gpu 1508。
[0189]
此外,gpu 1508可以包括访问计数器,其可以追踪gpu 1508访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
[0190]
soc 1504可以包括任意数量的高速缓存1512,包括本文描述的那些高速缓存。例如,高速缓存1512可以包括cpu 1506和gpu 1508二者可用的l3高速缓存(例如,其连接到cpu 1506和gpu 1508二者)。高速缓存1512可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如mei、mesi、msi等)追踪行的状态。取决于实施例,l3高速缓存可以包括4mb或者更多,但是也可以使用更小的高速缓存大小。
[0191]
soc 1504可以包括算术逻辑单元(alu),所述算术逻辑单元可以在执行关于车辆1500的各种任务或操作中的任何任务或操作(如处理dnn)的处理中被利用。此外,soc 1504可以包括用于在系统内执行数学运算的浮点单元(fpu)(或其他数学协处理器或数字协处理器类型)。例如,soc104可以包括集成为cpu 1506和/或gpu 1508内的执行单元的一个或更多个fpu。
[0192]
soc 1504可以包括一个或更多个加速器1514(例如硬件加速器、软件加速器或者其组合)。例如,soc 1504可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4mb sram)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来补充gpu 1508,并且卸载gpu 1508的一些任务(例如释放gpu 1508的更多周期以用于执行其他任务)。作为一个示例,加速器1514可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(cnn)等等)。当在本文中使用时,术语“cnn”可以包括所有类型的cnn,包括基于区域的或者区域卷积神经网络(rcnn)和快速rcnn(例如用于对象检测)。
[0193]
加速器1514(例如硬件加速器簇)可以包括深度学习加速器(dla)。dla可以包括可
以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(tpu)。tpu可以是被配置为执行图像处理功能(例如用于cnn、rcnn等)且针对执行图像处理功能而优化的加速器。dla可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。dla的设计可以比通用gpu提供每毫米更高的性能,并且远远超过cpu的性能。tpu可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的int8、int16和fp16数据类型,以及后处理器功能。
[0194]
dla可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是cnn,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的cnn;用于使用来自相机传感器的数据进行距离估计的cnn;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的cnn;用于使用来自相机传感器的数据进行面部识别和车主识别的cnn;和/或用于安全和/或安全相关事件的cnn。
[0195]
dla可以执行gpu 1508的任何功能,并且通过使用推理加速器,例如,设计者可以使dla或gpu 1508针对任何功能。例如,设计者可以将cnn的处理和浮点运算聚焦在dla上,并且将其他功能留给gpu 1508和/或其他加速器1514。
[0196]
加速器1514(例如硬件加速器簇)可以包括可编程视觉加速器(pva),其在本文中可以可替代地称为计算机视觉加速器。pva可以被设计和配置为加速用于高级驾驶员辅助系统(adas)、自主驾驶和/或增强现实(ar)和/或虚拟现实(vr)应用的计算机视觉算法。pva可以提供性能与灵活性之间的平衡。例如,每个pva可以包括例如且不限于任意数量的精简指令集计算机(risc)核、直接内存访问(dma)和/或任意数量的向量处理器。
[0197]
risc核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些risc核中的每一个可以包括任意数量的内存。取决于实施例,risc核可以使用若干协议中的任何协议。在一些示例中,risc核可以执行实时操作系统(rtos)。risc核可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储设备实现。例如,risc核可以包括指令高速缓存和/或紧密耦合的ram。
[0198]
dma可以使得pva的部件能够独立于cpu 1506访问系统内存。dma可以支持用来向pva提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,dma可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
[0199]
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,pva可以包括pva核和两个向量处理子系统分区。pva核可以包括处理器子系统、一个或更多个dma引擎(例如两个dma引擎)和/或其他外围设备。向量处理子系统可以作为pva的主处理引擎而操作,并且可以包括向量处理单元(vpu)、指令高速缓存和/或向量内存(例如vmem)。vpu核可以包括数字信号处理器,诸如例如单指令多数据(simd)、超长指令字(vliw)数字信号处理器。simd和vliw的组合可以增强吞吐量和速率。
[0200]
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定pva中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个pva中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的
不同区域上执行。在其他示例中,包括在特定pva中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的pva可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些pva中的每一个中。此外,pva可以包括附加的纠错码(ecc)内存,以增强总体系统安全性。
[0201]
加速器1514(例如硬件加速器簇)可以包括片上计算机视觉网络和sram,以提供用于加速器1514的高带宽、低延迟sram。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4mb sram,其可以由pva和dla二者访问。每对内存块可以包括高级外围总线(apb)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。pva和dla可以经由向pva和dla提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用apb)将pva和dla互连到内存的片上计算机视觉网络。
[0202]
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定pva和dla二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合iso 26262或者iec 61508标准,但是也可以使用其他标准和协议。
[0203]
在一些示例中,soc 1504可以包括例如在2018年8月10日提交的美国专利申请no.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于radar信号解释、用于声音传播合成和/或分析、用于sonar系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与lidar数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可以用于执行一个或更多个光线跟踪相关操作。
[0204]
加速器1514(例如硬件加速器簇)具有广泛的自主驾驶用途。pva可以是可编程视觉加速器,其可以用于adas和自主车辆中的关键处理阶段。pva的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,pva在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,pva被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
[0205]
例如,根据该技术的一个实施例,pva用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。pva可以在来自两个单目相机的输入上执行计算机立体视觉功能。
[0206]
在一些示例中,pva可以用来执行密集的光流。根据过程原始radar数据(例如使用4d快速傅立叶变换)以提供经处理的radar。在其他示例中,pva用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
[0207]
dla可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(aeb)系统中,假阳性检
测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是aeb的触发因素。dla可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆1500取向、距离相关的惯性测量单元(imu)传感器1566输出,从神经网络和/或其他传感器(例如lidar传感器1564或radar传感器1560)获得的对象的3d位置估计等。
[0208]
soc 1504可以包括一个或更多个数据存储1516(例如内存)。数据存储1516可以是soc 1504的片上内存,其可以存储要在gpu和/或dla上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1516可以容量足够大以存储神经网络的多个实例。数据存储1512可以包括l2或l3高速缓存1512。对数据存储1516的引用可以包括对与如本文所描述的pva、dla和/或其他加速器1514关联的内存的引用。
[0209]
soc 1504可以包括一个或更多个处理器1510(例如嵌入式处理器)。处理器1510可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是soc 1504启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、soc 1504热和温度传感器管理和/或soc 1504功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且soc 1504可以使用环形振荡器检测cpu 1506、gpu 1508和/或加速器1514的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将soc 1504置于较低功率状态和/或将车辆1500置于司机安全停车模式(例如使车辆1500安全停车)。
[0210]
处理器1510可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频i/o接口。在一些示例中,音频处理引擎是具有带有专用ram的数字信号处理器的专用处理器核。
[0211]
处理器1510可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的ram、支持外围设备(例如定时器和中断控制器)、各种i/o控制器外围设备和路由逻辑。
[0212]
处理器1510可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的ram、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
[0213]
处理器1510可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
[0214]
处理器1510可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
[0215]
处理器1510可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1570、环绕相机1574和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级soc的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以
激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
[0216]
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
[0217]
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且gpu 1508无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在gpu 1508上电并且激活,进行3d渲染时,视频图像复合器可以用来减轻gpu 1508的负担以提高性能和响应能力。
[0218]
soc 1504可以还包括用于从相机接收视频和输入的移动行业处理器接口(mipi)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。soc 1504可以还包括可以由软件控制并且可以用于接收未提交到特定角色的i/o信号的输入/输出控制器。
[0219]
soc 1504可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。soc 1504可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的lidar传感器1564、radar传感器1560等等)的数据,来自总线1502的数据(例如车辆1500的速率、方向盘位置等等),来自(通过以太网或can总线连接的)gnss传感器1558的数据。soc 1504可以还包括专用高性能大容量存储控制器,其可以包括它们自己的dma引擎,并且其可以用来从日常数据管理任务中释放cpu 1506。
[0220]
soc 1504可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和adas技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。soc 1504可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与cpu 1506、gpu 1508和数据存储1516结合时,加速器1514可以提供用于3-5级自主车辆的快速高效平台。
[0221]
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在cpu上执行,这些cpu可以使用诸如c编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,cpu常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多cpu不能实时地执行复杂的对象检测算法,这是车载adas应用的要求和实用3-5级自主车辆的要求。
[0222]
与常规系统形成对比的是,通过提供cpu复合体、gpu复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在dla或dgpu(例如gpu 1520)上执行的cnn可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。dla可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在cpu复合体上的路径规划模块的神经网络。
[0223]
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由
heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过lte、wcdma、umts、gsm、cdma2000、蓝牙、蓝牙le、wi-fi、z波、zigbee、lorawan和/或其他无线协议通信的无线功能。
[0230]
车辆1500可以还包括可包括片外(例如soc 1504外)存储装置的数据存储1528。数据存储1528可以包括一个或更多个存储元件,包括ram、sram、dram、vram、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
[0231]
车辆1500可以还包括gnss传感器1558。gnss传感器1558(例如gps、辅助gps传感器、差分gps(dgps)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的gnss传感器1558,包括例如且不限于使用带有以太网到串行(rs-232)网桥的usb连接器的gps。
[0232]
车辆1500可以还包括radar传感器1560。radar传感器1560可以甚至在黑暗和/或恶劣天气条件下也由车辆1500用于远程车辆检测。radar功能安全级别可以是asil b。radar传感器1560可以使用can和/或总线1502(例如以传输radar传感器1560生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的radar传感器类型。例如且非限制性地,radar传感器1560可以适合前面、后面和侧面radar使用。在一些示例中,使用脉冲多普勒radar传感器。
[0233]
radar传感器1560可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程radar可以用于自适应巡航控制功能。远程radar系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。radar传感器1560可以帮助区分静态对象和运动对象,并且可以由adas系统用于紧急制动辅助和前方碰撞警告。远程radar传感器可以包括具有多根(例如六根或更多)固定radar天线以及高速can和flexray接口的单站多模radar。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1500的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1500的车道的车辆成为可能。
[0234]
作为一个示例,中程radar系统可以包括高达1560m(前面)或80m(后面)的范围以及高达42度(前面)或1550度(后面)的视场。短程radar系统可以包括但不限于被设计为安装在后保险杠两端的radar传感器。当安装在后保险杠两端时,这样的radar传感器系统可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
[0235]
短程radar系统可以在adas系统中用于视盲点检测和/或变道辅助。
[0236]
车辆1500可以还包括超声传感器1562。可以置于车辆1500的前面、后面和/或侧面的超声传感器1562可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1562,并且不同的超声传感器1562可以用于不同的检测范围(例如2.5m、4m)。超声传感器1562可以操作于功能安全级别的asil b。
[0237]
车辆1500可以包括lidar传感器1564。lidar传感器1564可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。lidar传感器1564可以为功能安全级别的asil b。在一些示例中,车辆1500可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个lidar传感器1564(例如两个、四个、六个等等)。
[0238]
在一些示例中,lidar传感器1564可能够对360度视场提供对象列表及其距离。商
业上可用的lidar传感器1564可以具有例如近似1500m的广告范围,精度为2cm-3cm,支持1500mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的lidar传感器1564。在这样的示例中,lidar传感器1564可以实现为可以嵌入到车辆1500的前面、后面、侧面和/或拐角的小设备。在这样的示例中,lidar传感器1564可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的lidar传感器1564可以被配置用于45度与135度之间的水平视场。
[0239]
在一些示例中,也可以使用诸如3d闪光lidar之类的lidar技术。3d闪光lidar使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光lidar单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光lidar可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光lidar传感器,车辆1500的每一侧一个。可用的3d闪光lidar系统包括没有风扇以外的运动部件(moving part)的固态3d凝视阵列lidar相机(例如非扫描lidar设备)。闪光lidar设备可以使用每帧5纳秒i类(眼睛安全)激光脉冲,并且可以以3d范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光lidar,并且因为闪光lidar是没有运动部件的固态设备,lidar传感器1564可以不太容易受到运动模糊、振动和/或震动的影响。
[0240]
该车辆可以还包括imu传感器1566。在一些示例中,imu传感器1566可以位于车辆1500的后轴的中心。imu传感器1566可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,imu传感器1566可以包括加速度计和陀螺仪,而在九轴应用中,imu传感器1566可以包括加速度计、陀螺仪和磁力计。
[0241]
在一些实施例中,imu传感器1566可以实现为微型高性能gps辅助惯性导航系统(gps/ins),其结合微机电系统(mems)惯性传感器、高灵敏度gps接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,imu传感器1566可以使得车辆1500能够在无需来自磁传感器的输入的情况下通过直接观察从gps到imu传感器1566的速度变化并且将其相关来估计方向(heading)。在一些示例中,imu传感器1566和gnss传感器1558可以结合到单个集成单元中。
[0242]
该车辆可以包括置于车辆1500中和/或车辆1500周围的麦克风1596。除别的以外,麦克风1596可以用于应急车辆检测和识别。
[0243]
该车辆可以还包括任意数量的相机类型,包括立体相机1568、广角相机1570、红外相机1572、环绕相机1574、远程和/或中程相机1598和/或其他相机类型。这些相机可以用来捕获车辆1500整个外围周围的图像数据。使用的相机类型取决于实施例和车辆1500的要求,并且相机类型的任意组合可以用来提供车辆1500周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(gmsl)和/或千兆以太网。所述相机中的每一个在本文关于图15a和图15b更详细地进行了描述。
[0244]
车辆1500可以还包括振动传感器1542。振动传感器1542可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1542时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例
如当动力驱动轴与自由旋转轴之间存在振动差异时)。
[0245]
车辆1500可以包括adas系统1538。在一些示例中,adas系统1538可以包括soc。adas系统1538可以包括自主/自适应/自动巡航控制(acc)、协作自适应巡航控制(cacc)、前方撞车警告(fcw)、自动紧急制动(aeb)、车道偏离警告(ldw)、车道保持辅助(lka)、视盲点警告(bsw)、后方穿越交通警告(rctw)、碰撞警告系统(cws)、车道居中(lc)和/或其他特征和功能。
[0246]
acc系统可以使用radar传感器1560、lidar传感器1564和/或相机。acc系统可以包括纵向acc和/或横向acc。纵向acc监控并控制到紧接在车辆1500前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向acc执行距离保持,并且在必要时建议车辆1500改变车道。横向acc与诸如lca和cws之类的其他adas应用程序有关。
[0247]
cacc使用来自其他车辆的信息,该信息可以经由网络接口1524和/或无线天线1526经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链路可以由车对车(v2v)通信链路提供,而间接链路可以是基础设施到车辆(i2v)的通信链路。通常,v2v通信概念提供关于紧接在前的车辆(例如紧接在车辆1500前方且与其处于相同车道的车辆)的信息,而i2v通信概念提供关于前方更远处的交通的信息。cacc系统可以包括i2v和v2v信息源中的任一个或者二者。给定车辆1500前方车辆的信息,cacc可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
[0248]
fcw系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。fcw系统使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器1560,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。fcw系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
[0249]
aeb系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。aeb系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器1560。当aeb系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么aeb系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。aeb系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
[0250]
ldw系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1500穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活ldw系统。ldw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前侧朝向相机,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
[0251]
lka系统是ldw系统的变型。如果车辆1500开始离开车道,那么lka系统提供纠正车辆1500的转向输入或制动。
[0252]
bsw系统检测并向驾驶员警告汽车视盲点中的车辆。bsw系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。bsw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的后侧朝向相机和/或radar传感器1560,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
[0253]
rctw系统可以在车辆1500倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些rctw系统包括aeb以确保应用车辆制动器以避免撞车。rctw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的一个或更多个后置radar传感器1560,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
[0254]
常规的adas系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为adas系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1500中,在冲突结果的情况下,车辆1500本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1536或第二控制器1536)的结果。例如,在一些实施例中,adas系统1538可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自adas系统1538的输出可以提供给监督mcu。如果来自主计算机和辅助计算机的输出冲突,那么监督mcu必须确定如何协调该冲突以确保安全操作。
[0255]
在一些示例中,主计算机可以被配置为向监督mcu提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督mcu可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督mcu可以在这些计算机之间进行仲裁以确定适当的结果。
[0256]
监督mcu可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督mcu中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于radar的fcw系统时,监督mcu中的神经网络可以了解fcw系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的ldw系统时,监督mcu中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该ldw。在包括运行在监督mcu上的神经网络的实施例中,监督mcu可以包括适合于利用关联的内存运行神经网络的dla或gpu中的至少一个。在优选的实施例中,监督mcu可以包括soc 1504的部件和/或作为soc1504的部件而被包括。
[0257]
在其他示例中,adas系统1538可以包括使用传统计算机视觉规则执行adas功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督mcu中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督mcu可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
[0258]
在一些示例中,adas系统1538的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果adas系统1538由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
[0259]
车辆1500可以还包括信息娱乐soc 1530(例如车载信息娱乐系统(ivi))。尽管被图示和描述为soc,但是信息娱乐系统可以不是soc,并且可以包括两个或更多分立的部件。信息娱乐soc 1530可以包括可以用来向车辆1500提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如tv、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如lte、wifi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气滤波器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐soc 1530可以包括收音机、盘播放器、导航系统、视频播放器、usb和蓝牙连接、车载电脑、车载娱乐、wifi、方向盘音频控件、免提语音控件、平视显示器(hud)、hmi显示器1534、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐soc 1530可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自adas系统1538的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
[0260]
信息娱乐soc 1530可以包括gpu功能。信息娱乐soc 1530可以通过总线1502(例如can总线、以太网等)与车辆1500的其他设备、系统和/或部件通信。在一些示例中,信息娱乐soc 1530可以耦合至监督mcu,使得在主控制器1536(例如车辆1500的主和/或备用计算机)出现故障的情况下,信息娱乐系统的gpu可以执行一些自驾驶功能。在这样的示例中,信息娱乐soc 1530可以如本文所描述的将车辆1500置于司机安全停车模式。
[0261]
车辆1500可以还包括仪表组1532(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组1532可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组1532可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(srs)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐soc 1530和仪表组1532之间共享。换言之,仪表组1532可以作为信息娱乐soc 1530的部分而被包括,或者反之亦然。
[0262]
图15d为根据本公开一些实施例的基于云的服务器与图15a的示例自主车辆1500之间的通信的系统示意图。系统1576可以包括服务器1578、网络1590以及包括车辆1500在内的车辆。服务器1578可以包括多个gpu 1584(a)-1284(h)(这里统称为gpu 1584)、pcie交换机1582(a)-1582(h)(这里统称为pcie交换机1582)和/或cpu 1580(a)-1580(b)(这里统称为cpu 1580)。gpu 1584、cpu 1580和pcie交换机可以与诸如例如且不限于nvidia开发的nvlink接口1588之类的高速互连和/或pcie连接1586互连。在一些示例中,gpu 1584经由nvlink和/或nvswitch soc连接,并且gpu 1584和pcie交换机1582经由pcie互连连接。尽管图示出八个gpu 1584、两个cpu 1580和两个pcie交换机,但是这并不意图是限制性的。取决于实施例,服务器1578中的每一个可以包括任意数量的gpu 1584、cpu 1580和/或pcie交换机。例如,服务器1578中的每一个可以包括八个、十六个、三十二个和/或更多gpu 1584。
[0263]
服务器1578可以通过网络1590并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1578可以通过网络1590并且向车辆传输神经网络1592、更新的神经网络1592和/或地图信息1594,包括关于交通和道路状况的信息。对地图信息1594的更新可以包括对于hd地图1522的更新,例如关于
建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1592、更新的神经网络1592和/或地图信息1594可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1578和/或其他服务器)的经验产生。
[0264]
服务器1578可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类或更多类别的机器学习技术来执行训练,包括但不限于诸如以下类别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1590传输至车辆),和/或机器学习模型可以由服务器1578用来远程地监控车辆。
[0265]
在一些示例中,服务器1578可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1578可以包括由gpu 1584供电的深度学习超级计算机和/或专用ai计算机,例如nvidia开发的dgx和dgx站机器。然而,在一些示例中,服务器1578可以包括仅使用cpu供电的数据中心的深度学习基础设施。
[0266]
服务器1578的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1500中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1500的定期更新,例如图像序列和/或车辆1500已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1500识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1500中的ai发生故障的结论,那么服务器1578可以向车辆1500传输信号,指示车辆1500的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
[0267]
为了推理,服务器1578可以包括gpu 1584和一个或更多个可编程推理加速器(例如nvidia的tensorrt)。gpu供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,cpu、fpga和其他处理器供电的服务器可以用于推理。
[0268]
示例计算设备
[0269]
图16是适合用于实现本公开的一些实施例的示例计算设备1600的框图。计算设备1600可以包括直接或间接耦合以下设备的互连系统1602:存储器1604、一个或更多个中央处理单元(cpu)1606、一个或更多个图形处理单元(gpu)1608、通信接口1610、输入/输出(i/o)端口1616、输入/输出组件1614、电源1616,一个或更多个呈现组件1618(例如,(一个或更多个)显示器)和一个或更多个逻辑单元1620。在至少一个实施例中,(一个或更多个)计算设备1600可以包括一个或更多个虚拟机(vm),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,gpu1608中的一个或更多个可以包括一个或更多个vgpu,cpu1606中的一个或更多个可以包括一个或更多个vcpu,和/或逻辑单元1620中的一
个或更多个可以包括一个或更多个虚拟逻辑单元。这样,(一个或更多个)计算设备1600可以包括分立组件(例如,专用于计算设备1600的全gpu)、虚拟组件(例如,专用于计算设备1600的gpu的一部分)、或其组合。
[0270]
尽管图16的各个方框被示出为利用线路经由互连系统1602连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1618(诸如显示设备)可被认为是i/o组件1614(例如,如果显示器是触摸屏)。作为另一个示例,cpu1606和/或gpu1608可以包括存储器(例如,存储器1604可以表示除了gpu1608的存储器、cpu1606和/或其他组件之外的存储设备)。换言之,图16的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型的此类类别之间不做区分,因为所有都被考虑在图16的计算设备的范围内。
[0271]
互连系统1602可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连系统1602可以包括一个或更多个总线或链路类型,诸如工业标准架构(isa)总线、扩展工业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、快速外围组件互连(pcie)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu1606可直接连接到存储器1604。进一步,cpu1606可直接连接到gpu1608。在组件之间存在直接或点对点连接的情况下,互连系统1602可包括pcie链路以执行连接。在这些示例中,pci总线不需要被包括在计算设备1600中。
[0272]
存储器1604可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备1600访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
[0273]
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1604可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术,cd-rom、数字通用盘(dvd)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备1600存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
[0274]
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、rf、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
[0275]
cpu1606可经配置以执行计算机可读指令中的至少一些以控制计算设备1600的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。cpu1606可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。cpu1606可包含任何类型的处理器,且可取决于所实施的计算设备1600的
类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1600的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备1600还可包括一个或更多个cpu1606。
[0276]
除(一个或更多个)cpu1606以外或替代(一个或更多个)cpu 1606,(一个或更多个)gpu1608可被配置成执行计算机可读指令中的至少一些以控制计算设备1600的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。gpu1608中的一个或更多个可为集成gpu(例如,有cpu1606中的一个或更多个)和/或gpu1608中的一个或更多个可为离散gpu。在实施例中,gpu1608中的一个或更多个可以是cpu1606中的一个或更多个的协处理器。gpu1608可由计算设备1600使用以渲染图形(例如,3d图形)或执行通用计算。例如,gpu1608可用于gpu上的通用计算(gpgpu)。gpu1608可包含能够同时处置数百或数千软件线程的数百或数千核心。gpu1608可响应于渲染命令(例如,经由主机接口从cpu1606接收的渲染命令)而产生输出图像的像素数据。gpu1608可包含用于存储像素数据或任何其他合适数据(例如,gpgpu数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1604的一部分被包括。gpu1608可包含并行操作(例如,经由链路)的两个或两个以上gpu。链路可以直接连接gpu(例如,使用nvlink)或可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每一gpu1608可产生用于输出的不同部分或用于不同输出的像素数据或gpgpu数据(例如,用于第一图像的第一gpu和用于第二图像的第二gpu)。每一gpu可包含其自己的存储器,或可与其他gpu共享存储器。
[0277]
除cpu1606和/或gpu1608之外或替代cpu1606和/或gpu1608,逻辑单元1620可经配置以执行计算机可读指令中的至少一些以控制计算设备1600的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)cpu 1606、(一个或更多个)gpu 1608、和/或(一个或更多个)逻辑单元1620可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1620中的一个或更多个可为cpu1606和/或gpu1608中的一个或更多个中的一部分和/或集成于cpu1606和/或gpu1608中的一个或更多个和/或逻辑单元1620中的一个或更多个可为离散组件或以其他方式在cpu1606和/或gpu1608外部。在实施例中,逻辑单元1620中的一个或更多个可以是cpu1606中的一个或更多个和/或gpu1608中的一个或更多个的协处理器。
[0278]
逻辑单元1620的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理群集(gpc)、纹理处理群集(tpc)、流多处理器(sm)、树横向单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或快速外围组件互连(pcie)元件等。
[0279]
通信接口1610可以包括使计算设备1600能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口1610可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,wi-fi、z-wave、蓝牙、蓝牙le、zigbee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,lorawan、sigfox等)和/或互联网。
[0280]
i/o端口1612可以使得计算设备1600能够逻辑地耦合到包括i/o组件1614、(一个或更多个)呈现组件1618和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备1600中。说明性i/o组件1614包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。i/o组件1614可以提供处理空中姿态、语音或由用户生成的其他生理输入的自然用户界面(nui)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。nui可实现与计算设备1600的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿态识别、空中姿态、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1600可以包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、rgb相机系统、触摸屏技术和这些的组合。另外,计算设备1600可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(imu)的部分)。在一些示例中,计算设备1600可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
[0281]
电源1616可包括硬连线电源、电池电源或其组合。电源1616可向计算设备1600提供电力以使得计算设备1600的组件能够操作。
[0282]
呈现组件1618可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件1618可从其他组件(例如,gpu1608、cpu1606等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
[0283]
示例数据中心
[0284]
图17示出了可在本公开的至少一个实施例中使用的示例数据中心1700。数据中心1700可包括数据中心基础设施层1710、框架层1720、软件层1730和/或应用层1740。
[0285]
如图17所示,数据中心基础设施层1710可以包括资源协调器1712、分组的计算资源1714和节点计算资源(“节点c.r.s”)1716(1)-1716(n),其中“n”表示任何完整的正整数。在至少一个实施例中,节点c.r.s 1716(1)-1716(n)可包括,但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动),网络输入/输出(“nw i/o”)装置、网络交换机、虚拟机(“vm”)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点c.r.s 1716(1)-1716(n)中的一个或更多个节点c.r.s可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点c.r.s 1716(1)-17161(n)可包括一个或更多个虚拟组件,诸如vgpu、vcpu等,和/或节点c.r.s 1716(1)-1716(n)中的一个或更多个可对应于虚拟机(vm)。
[0286]
在至少一个实施例中,分组的计算资源1714可包括容纳在一个或更多个机架(未示出)内的节点c.r.s 1716的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源1714内的节点c.r.s 1716的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括cpu、gpu和/或其他处理器的若干节点c.r.s 1716可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
[0287]
资源协调器1722可配置或以其他方式控制一个或更多个节点c.r.s1716(1)-1716(n)和/或分组的计算资源1714。在至少一个实施例中,资源协调器1722可以包括用于数据
中心1700的软件设计基础设施(“sdi”)管理实体。资源协调器1722可以包括硬件、软件或其某种组合。
[0288]
在至少一个实施例中,如图17所示,框架层1720可以包括作业调度器1732、配置管理器1734、资源管理器1736和/或分布式文件系统1738。框架层1720可以包括支持软件层1730的软件1732和/或应用层1740的一个或更多个应用1742的框架。软件1732或应用1742可分别包含基于网络的服务软件或应用,例如由amazon(亚马逊)网络服务、googlecloud(谷歌云)和microsoftazure提供的那些。框架层1720可以是但不限于可以利用分布式文件系统1738进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如apache spark
tm
(下文称为“spark”))的类型。在至少一个实施例中,作业调度器1732可以包括spark驱动以促进调度由数据中心1700的不同层支持的工作负荷。配置管理器1734可以能够配置不同层,诸如软件层1730和框架层1720(其包括用于支持大规模数据处理的spark和分布式文件系统1738)。资源管理器1736可以能够管理被映射到分布式文件系统1738和作业调度器1732或被分配用于支持分布式文件系统1738和作业调度器1732的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层1710的分组的计算资源1714。资源管理器1036可与资源协调器1712协调以管理这些被映射或分配的计算资源。
[0289]
在至少一个实施例中,在软件层1730中包括的软件1732可包括由节点c.r.s 1716(1)-1716(n)、分组的计算资源1714和/或框架层1720的分布式文件系统1738中的至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
[0290]
在至少一个实施例中,在应用层1740中包括的应用1742可包括由节点c.r.s 1716(1)-1716(n)、分组的计算资源1714和/或框架层1720的分布式文件系统1738中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,pytorch、tensorflow、caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
[0291]
在至少一个实施例中,配置管理器1734、资源管理器1736和资源协调器1712中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和类型的自修改动作。自修改动作可使数据中心1700的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
[0292]
根据本文描述的一个或更多个实施例,数据中心1700可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,可以通过使用以上相对于数据中心1700描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或更多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心1700描述的资源来推断或预测信息。
[0293]
在至少一个实施例中,数据中心1700可使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上文所描述的一或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推
断的服务,例如图像识别、语音识别或其他人工智能服务。
[0294]
示例网络环境
[0295]
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图16的(一个或更多个)计算设备1600的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备1600的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、nas等)的情况下,后端设备可被包括作为数据中心1700的一部分,数据中心1700的示例在本文中关于图17更详细地描述。
[0296]
网络环境的组件可经由网络彼此通信,所述网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(pstn))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
[0297]
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
[0298]
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(api)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
[0299]
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
[0300]
(一个或更多个)客户端设备可以包括本文关于图16所描述的(一个或更多个)示例计算设备1600的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(pc),膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实耳机、全球定位系统(gps)或设备、视频播放器、摄像机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描绘的设备的任何组合或任何其他合适的设备。
[0301]
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机
器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链路的远程处理设备执行的分布式计算环境中实践。
[0302]
如在本文中使用的,“和/或”关于两个或更多元件的叙述应当解释为仅指一个元件或者元件组合。例如,“元件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中的至少一个。
[0303]
这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本公开人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元件,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
[0304]
示例条款
[0305]
在一个或更多个实施例中,一种方法包括,对于对应于车辆行驶的多个帧中的至少两个帧:使用车辆的一个或更多个传感器生成传感器数据;使用一个或更多个神经网络(nn)并至少部分基于传感器数据计算指示地标位置的输出;将位置转换为相对于车辆原点的三维(3d)世界空间位置;对3d世界空间位置进行编码,以生成对应于帧的编码数据;以及将编码数据传输到服务器以使服务器生成包括地标的地图。
[0306]
在一个或更多个实施例中,传感器数据包括表示图像的图像数据;在二维(2d)图像空间中计算一个或更多个输出;并且转换位置包括至少部分地基于与生成图像数据的相机相对应的内在相机参数或外在相机参数中的至少一个,将2d图像空间位置转换为3d世界空间位置。
[0307]
在一个或更多个实施例中,地标包括以下中的一个或更多个:车道分隔线;道路边界;标志;杆;等待条件;垂直结构;其他道路使用者;静态对象;或动态对象。
[0308]
在一个或更多个实施例中,输出进一步表示地标的姿态或地标的几何形状中的至少一种。
[0309]
在一个或更多个实施例中,输出进一步表示对应于地标的语义信息。
[0310]
在一个或更多个实施例中,地标包括车道分隔线,并且该方法还包括:对于至少两个车道分隔线,组合至少两个车道分隔线中的每一个的检测以生成连续的车道分隔线表示。
[0311]
在一个或更多个实施例中,该方法还包括,对于至少两个帧中的每个帧:至少部分地基于传感器数据,确定车辆相对于帧的前一帧的平移和旋转,其中,编码还包括对旋转和平移进行编码。
[0312]
在一个或更多个实施例中,该方法还包括:使用增量压缩算法压缩表示旋转和平
移的数据以生成增量压缩数据,其中编码旋转和平移还包括编码增量压缩数据。
[0313]
在一个或更多个实施例中,传感器数据包括全球导航卫星系统(gnss)数据,并且该方法还包括对于至少两个帧中的每个帧:至少部分地基于gnss数据确定车辆的全局位置,其中编码进一步包括编码全局位置。
[0314]
在一个或更多个实施例中,传感器数据包括lidar数据,并且该方法还包括:从lidar数据中过滤掉动态对象以生成过滤后的lidar数据,其中编码数据进一步表示过滤后的lidar数据。
[0315]
在一个或更多个实施例中,编码数据还表示传感器数据,传感器数据包括以下一项或更多项:lidar数据;radar数据;超声数据;超声波数据;gnss数据;图像数据;或惯性测量单元(imu)数据。
[0316]
在一个或更多个实施例中,该方法进一步包括:从服务器接收表示对地标位置的请求的数据,其中至少部分地基于该请求传输编码数据。
[0317]
在一个或更多个实施例中,该方法还包括:至少部分地基于满足时间阈值或满足距离阈值中的一个或更多个来确定生成至少两个帧中的每个帧。
[0318]
在一个或更多个实施例中,使用协议缓冲器将编码数据编码为序列化结构化数据。
[0319]
在一个或更多个实施例中,服务器包括以下至少之一:数据中心服务器;云服务器;或边缘服务器。
[0320]
在一个或更多个实施例中,一种方法包括,对于对应于车辆行驶的多个帧中的至少两个帧:使用车辆的一个或更多个传感器生成一个或更多个lidar数据或radar数据;过滤出对应于lidar数据或radar数据中的一个或更多个的点,生成过滤数据;确定车辆相对于前一帧的姿态;对过滤后的数据和姿态进行编码,生成编码数据;以及将编码数据传输到云服务器,以使云服务器使用姿态生成地图的lidar层或地图的radar层中的至少一个。
[0321]
在一个或更多个实施例中,过滤掉包括动态对象过滤或去重中的至少一种。
[0322]
在一个或更多个实施例中,该方法还包括:使用车辆的一个或更多个传感器生成传感器数据;使用一个或更多个神经网络(nn)并至少部分地基于传感器数据来计算指示地标位置的输出,其中传输进一步包括传输表示地标位置的数据。
[0323]
在一个或更多个实施例中,对过滤后的数据进行编码包括使用八叉树对过滤后的数据进行编码。
[0324]
在一个或更多个实施例中,该方法还包括使用量化来压缩过滤后的数据。
[0325]
在一个或更多个实施例中,一种系统包括:一个或更多个传感器;一个或更多个处理器;以及在其上存储指令的一个或更多个存储器设备,当由一个或更多个处理器执行时,使一个或更多个处理器执行包括以下操作,包括:在当前帧,使用一个或更多个传感器生成传感器数据;使用一个或更多个神经网络(nn)并至少部分基于传感器数据计算指示地标位置的输出;将位置转换为相对于车辆原点的三维(3d)世界空间位置;确定当前帧相对于前一帧的前一姿态的姿态;对3d世界空间位置和姿态进行编码,以生成对应于当前帧的编码数据;并传输编码数据。
[0326]
在一个或更多个实施例中,该系统包括在以下至少之一中:用于自主或半自主机器的控制系统;自主或半自主机器的感知系统;用于执行模拟操作的系统;用于执行深度学
习操作的系统;使用边缘设备实现的系统;使用机器人实现的系统;包含一个或更多个虚拟机(vm)的系统;至少部分在数据中心实施的系统;或至少部分使用云计算资源实现的系统。
[0327]
在一个或更多个实施例中,一种方法包括:使用一个或更多个神经网络(nn)并至少部分基于由车辆的一个或更多个传感器生成的传感器数据,计算指示对应于检测到的地标的二维(2d)图像空间中位置的输出;至少部分地基于位置生成检测到的地标的距离函数表示;对于成本空间中表示的车辆的多个姿态中的至少两个姿态,生成成本空间:将对应于地图的地图地标投影到2d图像空间中以生成投影的地图地标;将投影地图地标与距离函数表示进行比较;至少部分基于比较计算成本;至少部分地基于成本更新与至少两个姿态中的每个姿态对应的成本空间的点;以及至少部分地基于成本空间将车辆定位到地图上。
[0328]
在一个或更多个实施例中,定位到地图的多个道路片段的原点,并且该方法还包括至少部分地基于将车辆定位到道路片段的原点将车辆定位到全局坐标系。
[0329]
在一个或更多个实施例中,成本空间对应于当前帧,并且该方法还包括:生成对应于多个先前帧的多个附加成本空间;生成与成本空间和多个附加成本空间相对应的聚合成本空间,生成聚合成本空间包括使用相对于当前帧的自我运动补偿;以及将滤波器应用到聚合成本空间以确定当前帧的车辆的位置表示,其中定位进一步至少部分地基于位置表示。
[0330]
在一个或更多个实施例中,滤波器包括卡尔曼滤波器。
[0331]
在一个或更多个实施例中,位置表示包括椭球。
[0332]
在一个或更多个实施例中,至少部分地基于至少部分地基于对应于多个帧中的相应帧的相应传感器数据计算的相应输出来生成多个成本空间中的每一个。
[0333]
在一个或更多个实施例中,生成多个附加成本空间中的一个或更多个以对应于第一道路片段,并且生成聚合成本空间包括变换一个或更多个附加成本空间以对应于与当前帧的成本空间相对应的第二道路片段。
[0334]
在一个或更多个实施例中,变换包括平移变换和旋转变换。
[0335]
在一个或更多个实施例中,定位对应于一种定位模态,并且该方法还包括:使用一种或更多种附加定位模态来定位车辆;以及将定位模态与一种或更多种附加定位模态融合以确定最终定位结果。
[0336]
在一个或更多个实施例中,一种或更多种附加的定位模态包括lidar模态、radar模态或融合模态。
[0337]
在一个或更多个实施例中,定位模态对应于相机模态。
[0338]
在一个或更多个实施例中,融合包括将卡尔曼滤波器应用于来自定位模态和附加定位模态的定位结果。
[0339]
在一个或更多个实施例中,地图地标或检测到的地标中的一个或更多个对应于以下至少之一:车道分隔线、道路边界、标志、杆、垂直结构、等待条件、静态对象或动态参与者。
[0340]
在一个或更多个实施例中,生成成本空间进一步为,对于在成本空间中表示的车辆的多个姿态中的至少两个姿态:将对应于地图的地图地标投影到另一个2d图像空间中以生成附加的投影地图地标;将附加投影地图地标的地图语义信息与检测到的地标的检测语义信息进行比较;以及至少部分地基于将地图语义信息与检测到的语义信息进行比较来计
算另一成本。
[0341]
在一个或更多个实施例中,一种方法包括:使用车辆的一个或更多个lidar传感器生成lidar数据;对于成本空间中表示的车辆的多个姿态中的至少两个姿态,由以下生成成本空间:将lidar数据对应的点投影到地图的lidar层对应的lidar点云的距离函数表示中;将点与距离函数表示进行比较;至少部分基于比较计算成本;以及至少部分地基于成本更新与至少两个姿态中的每个姿态对应的成本空间的点;以及至少部分地基于成本空间将车辆定位到地图上。
[0342]
在一个或更多个实施例中,该方法进一步包括:从由lidar数据表示的更大的一组点中,至少部分地基于对应于在高度范围内的点的高度值来确定这些点,其中lidar点云对应于高度范围。
[0343]
在一个或更多个实施例中,对于在成本空间中表示的车辆的至少两个姿态中的每个姿态,生成成本空间进一步通过:将对应于lidar数据的高度表示投影到对应于地图的lidar层的地图高度表示中;将高度表示与地图高度表示进行比较;以及至少部分地基于将高度表示与地图高度表示进行比较来计算另一成本。
[0344]
在一个或更多个实施例中,将高度表示与地图高度表示进行比较包括至少部分地基于车辆的车辆原点或地图高度表示对应的道路片段之间的差异来调整高度表示或地图高度表示中的至少一个。
[0345]
在一个或更多个实施例中,对于在成本空间中表示的车辆的至少两个姿态中的每个姿态,生成成本空间进一步通过:将对应于lidar数据的强度表示投影到对应于地图的lidar层的地图强度表示中;将强度表示与地图强度表示进行比较;以及至少部分地基于将强度表示与地图强度表示进行比较来计算另一成本。
[0346]
在一个或更多个实施例中,定位到地图的多个路段的路段的原点,并且该方法还包括至少部分地基于将车辆定位到路段的原点来定位到全局坐标系。
[0347]
在一个或更多个实施例中,成本空间对应于当前帧,并且该方法还包括:生成对应于多个先前帧的多个附加成本空间;生成与成本空间和多个附加成本空间相对应的聚合成本空间,生成聚合成本空间包括使用相对于当前帧的自我运动补偿;以及将滤波器应用到聚合成本空间以确定当前帧的车辆的位置表示,其中定位进一步至少部分地基于位置表示。
[0348]
在一个或更多个实施例中,滤波器包括卡尔曼滤波器。
[0349]
在一个或更多个实施例中,位置表示包括椭球。
[0350]
在一个或更多个实施例中,生成多个附加成本空间中的一个或更多个以对应于第一道路片段,并且生成聚合成本空间包括变换一个或更多个附加成本空间以对应于与当前帧的成本空间相对应的第二道路片段。
[0351]
在一个或更多个实施例中,定位对应于一种定位模态,并且该方法还包括:使用一种或更多种附加定位模态来定位车辆;以及将定位模态与一种或更多种附加定位模态融合以确定最终定位结果。
[0352]
在一个或更多个实施例中,定位模态包括lidar模态,并且一种或多个附加定位模态包括radar模态、图像模态或融合模态。
[0353]
在一个或更多个实施例中,一种系统包括:一个或更多个传感器;一个或更多个处
理器;以及一个或更多个存储器设备,其上存储指令,当由一个或更多个处理器执行时,使一个或更多个处理器执行以下操作,包括:使用一个或更多个传感器生成传感器数据;对于成本空间中表示的多个姿态中的至少两个姿态,生成成本空间通过:将传感器数据对应的点投影到地图对应的点云的距离函数表示中;将点与距离函数表示进行比较;至少部分基于比较计算成本;以及至少部分地基于成本更新与至少两个姿态中的每个姿态对应的成本空间的点;以及至少部分地基于成本空间将车辆定位到地图上。
[0354]
在一个或更多个实施例中,该系统包括在以下至少之一中:用于自主或半自主机器的控制系统;自主或半自主机器的感知系统;用于执行模拟操作的系统;用于执行深度学习操作的系统;使用边缘设备实现的系统;包含一个或更多个虚拟机(vm)的系统;使用机器人实现的系统;至少部分在数据中心实施的系统;或至少部分使用云计算资源实现的系统。
[0355]
在一个或更多个实施例中,定位到地图的多个路段的路段的原点,并且该方法还包括至少部分地基于将车辆定位到路段的原点来定位到全局坐标系。
[0356]
在一个或更多个实施例中,成本空间对应于当前帧,并且该方法还包括:生成对应于多个先前帧的多个附加成本空间;生成与成本空间和多个附加成本空间相对应的聚合成本空间,生成聚合成本空间包括使用相对于当前帧的自我运动补偿;以及将滤波器应用到聚合成本空间以确定当前帧的车辆的位置表示,其中定位进一步至少部分地基于位置表示。
[0357]
在一种或更多种实施方式中,传感器数据对应于lidar数据或radar数据中的一种或更多种,并且该一种或更多种传感器包括lidar传感器或radar传感器中的一种或更多种。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1