Apollo进阶课程[4]——百度Apollo高精度地图3

Apollo地图采集方案

Apollo进阶课程[4]——百度Apollo高精度地图3_第1张图片
硬件:
64线激光雷达平装,用于采集道路路面,16线激光雷达斜向上装,用于检测比较高处的红绿灯和标牌信息等。还有GPS(采用的是RTK)、IMU、长短焦相机。
进行采集数据前需要保证传感器可以工作而且传感器已被标定过。如相机内外参数不一致会导致采集的数据不准确。不同厂商的激光雷达地面点的反射值不一样。

RTK方案提供更高的精度。
原理:观测站(无遮挡情况)通过在某个位置长时间地进行定点观测计算,数据非常准确,静态站点。车辆(无遮挡情况)作为动态站点,通过载波信号的差分得到厘米级的定位效果。
GPS在传输过程中,可能会受到多径效应、电离层大气层、反射折射等影响。但设定一定范围内的不同基站,受到的影响相对一致。
Apollo进阶课程[4]——百度Apollo高精度地图3_第2张图片
采集流程:
首先检测传感器状态ok,正确标定。然后打开开关进行采集,采集过程中需要将双向车道全覆盖3-5遍(最好5遍),如果是采用16线需要更多次才能达到很好的效果。车速方面Apollo没有明确的要求,不要太快即可。早期大家使用Riegl放在路口中间静态扫描采集红绿灯,违反交通规则而且很危险。Apollo则不需要在路口可以停留/采集最终得到的是一个个的bag包,bag包包含所有信息,如点云、车辆标定参数、定位结果等。
Apollo进阶课程[4]——百度Apollo高精度地图3_第3张图片
采集完成后Apollo地图数据服务平台提供一系列制图服务,离线过程。
Apollo进阶课程[4]——百度Apollo高精度地图3_第4张图片

Apollo地图生产技术

生产流程:

  • 数据采集
  • 数据处理:数据可以分为两大类:点云和图像。L4级别以点云为主,会进行点云拼接(数据信号可能不稳定,所以需要借助其他技术,如SLAM等对Pose进行优化,优化后才能把完整的点云信息拼接起来)、底图生产(将三维点云压扁到一张反射地图上,在上面做标注,然后基于反射图做高清地图)
  • 元素识别:基于深度学习的元素识别、基于深度学习的点云分类。通过对收集到的图像等进行深度学习,即可提炼出道路相关元素放到高精地图中。数据采集、数据处理、元素识别三个流程是高精地图自动化过程。
  • 人工验证:车道线、路沿、信号灯、标志、虚拟道路、逻辑关系。自动化存在的问题有车无法处理没有车道线的情况,需要人在离线时人工设定。还有逻辑信息的处理,如车在某个路口应该看哪个灯,也需要人工将停止线和红绿灯关联起来。

通过64线激光雷达采集到的点云信息+定位信息,拼接得出一个完整的点云效果。

地图要素识别:基于深度学习网络,包含两个层面

  • 是否能基于点云,通过点云分割从点云中提取Feature,坐标准确。
  • 尝试从点云中提取红绿灯、车道线、灯杆(可用于做视觉定位的Feature)

Apollo进阶课程[4]——百度Apollo高精度地图3_第5张图片
Apollo所需要的地图:
定位地图类似于整齐排列的小格子,存储了坐标信息和反射强度信息等,用于点云定位。
高精地图是基于反射地图生产的。通过融合底图数据、图像数据、点云数据,整合生成高精地图数据,将可形成一份相对完整精确的自动驾驶地图数据。
路径规划地图主要用于车道级别规划。
仿真地图主要用于基于高精地图的仿真。
Apollo进阶课程[4]——百度Apollo高精度地图3_第6张图片

Apollo高精地图

数据元素:
Apollo进阶课程[4]——百度Apollo高精度地图3_第7张图片
道路级别:

  • 包括左边界右边界。它可分为两个层次,一是道路级别,一是Lane(车道)级别。
  • 每个Lane都有左边、右边界;道路也有道路边界,而且道路边界是强约束,即自动驾驶的时候,道路边界是永远不能压的。车道线理论上也是不能压的,但是如果在紧急情况下可以压车道线,比如说可以越过虚黄线进行借道超车。

路口级别:

  • 路口边界主要用于感知。
  • 可以通过路口的边界,对感知进行过滤。如果感知识别到的静态物体不在地图的路口边界之内,就可以暂时忽略它。虚拟车道主要是用来路口的行驶引导。

交通信号灯:

  • 高精地图会为红绿灯提供一个三维空间位置,其次也会提供红绿灯跟车道之间的关联关系,即告知当前所在车道,应该看哪个灯。
  • 道路标志主要包括人行横道,停止线以及一些路上的文字信息。这些信息可以用于各个模块,例如感知、PNC等。

线上策略很复杂,需要将图像坐标系转到车辆坐标系,再转到全局的整体坐标系,整个过程都会存在一些误差,会导致红绿灯的框匹配不完美,还需要其他复杂的策略。

逻辑关系西表述:

  • 非常关键。当前,地图中各个元素之间的关系是使用overlap来表述,并没有嵌入到元素的表述中,通过一个额外的元素把两个元素关联起来。
    Apollo进阶课程[4]——百度Apollo高精度地图3_第8张图片
    left_sample:用于描述中心线到两个边界的距离
    left/right_road_sample:用于表述车道中心线到道路物理边界的距离
    Apollo进阶课程[4]——百度Apollo高精度地图3_第9张图片
    in_road、cross_road的由来:路口可以分为真实路口和十字路口。除了真实路口之外做车道线变化时需要去感知周围有没有车,这时候我们将他也作为路口处理,给感知提供一个约束。

UTM坐标系:UTM坐标系把全球分成60个区域带(Zone),每个Zone里面都是相当于Zone中心的一个局部坐标系。可以把全球每个位置描述的非常精确。
84坐标系:84坐标系是一套全球经纬度,也是高精地图里面使用的坐标系。在该坐标系中,把整个地球想象成是一个椭球,地面的高度是相对于椭球面的一个偏移。高由正数表示,低由负数表示。
Apollo进阶课程[4]——百度Apollo高精度地图3_第10张图片
Track坐标系:Track坐标系是基于st的,s是纵向,t是横向。这个坐标系用来表述一个元素跟Lane之间关系,描述它位于Lane的什么位置,相对于Lane起点的偏移量是多少。
Apollo进阶课程[4]——百度Apollo高精度地图3_第11张图片

Apollo openDRIVE规范:
Apollo进阶课程[4]——百度Apollo高精度地图3_第12张图片
把所有元素做了一个归类。类似于Road和Junction。路上的所有的地面标识都归属为Objects,所有的标牌都归属为Signal,并通过Overlap把它们关联起来。
Apollo的OpenDRIVE跟标准OpenDRIVE的区别:

  • 元素形状的表达方式不同:
    • Apollo采用绝对坐标点序列描述边界形状。
    • 标准OpenDRIVE是基于参考线加偏移,并采用方程来描述。采用方程方式的好处在于数据量非常小,通过三四个参数就可以描述一个非常长的线。
    • Apollo都是坐标点,没有采用方程的方式。采用坐标点的方式,数据量会稍微大一点。但是也有很多的好处。第一,用点表示对于下游的计算非常友好,不需要再重新通过线去做点的采样。
    • 在道路急于转弯的地方,标准OpenDRIVE把基于Reference Line的方式还原成点的方式,会导致道路上存在毛刺。这种处理方式对于无人驾驶来说非常危险。一旦道路出现毛刺,就会导致无人驾驶车猛打方向盘,可能直接冲到路边上去。
  • 元素类型的扩展
    • 新增了对禁停区、人行横道、减速带等元素的描述
  • 扩展了对于元素之间相互关系的描述
    • 比如新增了junction与junction之间元素的关联关系
  • 其他
    • 增加了车道中心线到真实道路边界的距离、停止线与红绿灯的关联关系

Overlap:
Overlap主要是用来描述两个元素的空间关系。空间上有重叠都会描述为Overlap
如,Lane和Junction在空间上有重叠,它们之间就会有Overlap。
Apollo进阶课程[4]——百度Apollo高精度地图3_第13张图片
HDMAP引擎
Apollo进阶课程[4]——百度Apollo高精度地图3_第14张图片
HDMAP引擎是Apollo里面用于从HDMAP里面提取相关元素给下游的一个模块。HDMAP 引擎可以通过ID去检索一个元素,也可以通过空间位置查找元素,比如给定一个点和半径,可以把这个范围之内所有的红绿灯都提出来。

高精地图在政策方面的挑战
采集地图,必须要经过国家测绘部门、安全部门的审批。
Apollo进阶课程[4]——百度Apollo高精度地图3_第15张图片

你可能感兴趣的:(Apolllo)