说到地图,我们从一个简单的问题开始。你最常用的导航地图是什么?可能是你的车载地图或手机地图。
只需输入我们想去的目的地,地图就会提供最佳的路径。但无人驾驶汽车需要更详细/精确的地图。百度的Apollo自动驾驶系统使用了高精度地图。下面我们进行详细介绍。
高精度地图 Vs 传统地图
在你开车时,你是否发现导航地图会向显示一条或几条推荐路线?有些地图甚至可能会显示这些路线是否拥堵,以及每条路线将花费多长时间。当你获得这些信息时,你必须根据地图提供的信息,来决定是直行、左转还是右转,以及你对周围驾驶环境的评估,可能还需要考虑交通管制。
无人驾驶汽车缺乏人类驾驶员固有的视觉和逻辑能力。例如,你可以利用所看到的东西和GPS,来确定自己的位置。你还可以轻松准确的识别障碍物、其他车辆、行人和交通信号灯。但这对无人驾驶来说是一项非常艰巨的任务。
正因如此,高精度地图是当前无人驾驶技术不可或缺的一部分。高精度地图包含大量的驾驶辅助信息。更重要的是,它还包含道路网的精确三维表征,例如交叉路口布局和路标位置。
此外,高精度地图还包含很多语义信息,地图可能会报告交通灯上不同颜色的含义,指示道路的速度限制以及左转车道开始的位置。
高精度地图最重要的特征之一是精度,手机上的导航地图只能达到米级精度。想象一下,两米有多远。现在假设你想把车停在路边。如果车辆偏离一两米,则可能会阻塞交通或人行道,并有可能发生碰撞。高精度地图能使车辆达到厘米级的精度,这对确保车辆的安全性至关重要。
地图与定位的关系
高精度地图是Apollo无人驾驶平台的核心,这是因为无人驾驶汽车的许多其他模块都依赖于高精度地图。有了高精度地图,我们就可以在该地图上进行自定位。这意味着,需要弄清楚我们在地图上的位置。可以将定位于拼图进行比较,如果同时为你提供地图和同一张地图的一小块,你能否找到这一小块的确切位置?
无人驾驶汽车需要知道它在地图上的确切位置。首先,车辆可能会寻找地标,我们可以使用从各类传感器收集的数据,如摄像机图像数据,以及激光雷达收集的三维点云数据来查找地标。
车辆将收集的数据与高精度地图上的已知地标进行比较,这一匹配过程是需要预处理、坐标转换和数据融合的复杂过程。预处理消除了不准确或质量差的数据;坐标变换将来自不同视角的数据转换为统一的坐标系;借用数据融合,可将来自各种车辆和传感器的数据合并。
一旦无人驾驶车辆高度精确地确定了其位置,定位任务也就完成了。整个定位过程取决于地图。正因为如此,车辆需要高精度地图以便知道它处于什么位置。
地图与感知的关系
无人驾驶汽车可以使用高精度地图来帮助感知,人有眼睛和耳朵,但都有距离限制,我们无法看到或听到太远的事物。
无人驾驶汽车的传感器也会受到类似限制,摄像机、激光雷达和雷达探测物体的能力,在超过一定距离后都会受到限制。在恶劣的天气条件下或在夜间,传感器识别障碍物的能力可能会受到进一步限制。
另外,当汽车遇到障碍物时,传感器无法透过障碍物来确定后面的物体。在这种情况下,高精度地图有很大帮助,即使传感器尚未检测到交通信号灯,它也可以将交通信号灯的位置提供给软件栈的其余部分。这可以帮助汽车做下一个决策。
另一个好处在于,地图可帮助传感器缩小检测范围。例如,高精度地图可能会告知我们,在特定位置寻找停车标志,传感器就可以集中在该位置检测停车标志,这被称为感兴趣区域或ROI。ROI可以帮助我们提高检测精度和速度,并节约计算资源。
地图与规划的关系
正如定位和感知依赖于高精度地图那样,规划软件也是如此。高精度地图可帮助车辆找到合适的行车空间,还可以帮助规划器选择不同的路线。此外,它还能帮助预测模块对道路上其他车辆在将来的位置进行预测。
高精度地图可以帮助车辆识别车道的确切中心线,这样车辆可以尽可能靠近中心行驶。在具有低速限制、人行横道或者减速带的区域,高精度地图使车辆能够提前查看并预先减速。更重要的是,如果前方有障碍物,车辆可能需要变道,高精度地图可帮助车辆缩小选择范围,以便选择最佳方案。
Apollo高精度地图
Apollo地图专为无人驾驶汽车设计,其包含道路定义、交叉路口、交通信号、车道规则以及用于汽车导航的其他元素。
高精度地图可在许多方面为无人驾驶汽车提供帮助。例如,高精度地图通常会记录交通信号灯的精确位置和高度,从而大大减低了感知难度。
高精度地图不仅可以减少计算需求,还可以通过提供有关驾驶环境的详细信息来确保无人驾驶汽车的安全。保持这些地图的更新是一项重大任务,调查车队需要不断地对高精度地图进行验证和更新。此外,这些地图可能达到几厘米的精度,这是水准最高的制图技术。
在中国,百度的Apollo拥有丰富的高精度地图数据。Apollo已绘制了每条中国高速公路的地图,到2020年将涵盖中国的所有国道以及许多其他高等级公路。
高精度地图有很多格式,不同的格式可能导致系统不兼容。Apollo高精度地图采用了OpenDRIVE格式,这是一种行业制图标准。OpenDRIVE就像一个API,每个人都能轻松读取相同的地图数据,进而产生了Apollo OpenDRIVE标准,这些改进使该格式更适合无人驾驶汽车。
百度开发了一套完善的地图绘制系统,从而使90%的地图绘制流程实现了自动化。接下来,我们将重点关注Apollo高精度地图的构建。
高精度地图的构建
高精度地图的构建由五个过程组成:数据采集、数据处理、对象检测、手工验证和地图发布。
数据采集是一项庞大的密集型任务,近300辆调查车辆负责收集用于制作地图的源数据。调查车辆不仅有助于地图构建,而且对于地图的维护更新也非常重要。道路在不断变化,建筑也在变化,公共事业工作人员经常对道路进行拆除和重新铺设。然而无人驾驶汽车需要其地图始终保持最新状态。大量的调查车辆可以保证每次车辆发生变化时,地图均会得到快速更新。
调查车辆使用了多种传感器,如GPS、惯性测量单元、激光雷达和摄像机。Apollo定义了一个硬件框架,将这些传感器集成到单个自主系统中。通过支持多种传感器,Apollo可以收集各类数据,最终生成高精度地图。
数据处理是指Apollo如何对收集到的数据进行整理、分类和清洗以获得没有任何语义信息或注释的初始地图模板。例如,下面的点云图像,是在北京中关村收集的数据融合而成的。
对于对象检测,Apollo团队使用人工智能来检测静态对象,并对其进行分类。其中包括车道线、交通标志,甚至是电线杆。
手动验证可确保自动地图创建过程正确并及时发现问题。Apollo软件使手动验证团队能够高效标记和编辑地图。
完成以上过程后,地图即可发布了。Apollo还发布了采用自上而下视图的形影定位地图以及三维点云地图。
在构建和更新地图的过程中,Apollo使用了众包。众包意味着Apollo向公众发布其数据采集工具,以便任何都可参与制作高精度地图的任务。高精度地图众包可通过智能手机、智能信息娱乐系统甚至是其他无人驾驶汽车来实现。众包加快了高精度地图制作和维护过程。
本内容来自Udacity X Apollo 无人驾驶课程。 链接: http://apollo.auto/devcenter/courselist_cn.html?target=2