Apollo进阶课程 ⑥ | 高精地图与自动驾驶的关系

目录

1)高精地图与自动驾驶

2)什么是高精地图

3)高精地图与导航地图

4)高精地图---无人驾驶的核心基础模块

5)高精地图与定位模块的关系

6)高精地图与感知模块的关系

7)高精地图与规划、预测、决策模块的关系

8)高精地图与安全模块

9)高精地图与仿真系统

10)高精地图的作用---静态的Perception

11)高精地图的作用---弥补系统性缺陷


原文链接:Apollo进阶课程 ⑥ | 高精地图与自动驾驶的关系

在上周,阿波君为大家具体介绍了百度「Apollo硬件开发平台」。

本期,阿波君将与大家分享百度Apollo L4级别自动驾驶系统在高精地图方面的进展和相关的内容。

话不多说,欢迎各位开发者一起进入进阶课程第6期。


1)高精地图与自动驾驶

                                                                                                SAE的自动驾驶分级

美国国家交通安全管理局将自动驾驶分为五个等级。SAE(SAE International, Society of Automotive Engineers 国际自动机工程师学会)将自动驾驶分成六个等级,国内广泛接受SAE的六等级分类方法。

在SAE的六等级分类方法中,L0级别是人类驾驶,L1到L3级别是辅助驾驶,L3以上是自动驾驶。

在L1—L3辅助驾驶级别,常见的很多车型都已经配备其中的一些功能,比如偏离预警、碰撞预警和自适应巡航等。

L3级别以上的自动驾驶研发是现在Apollo正在做的事情,百度内部本身分L3和L4。

L3级别基本上已达到一定程度上的自动驾驶,它不需要车辆驾驶员来关注环境,只需要在紧急情况下接管;L4级别则可在限定区域下完全做到自动驾驶。

L5级别可能是比较遥远的状态。现在有些厂商宣称L5级别自动驾驶可以做到完全没有人员操控,车辆能处理所有的情况。

但这需要依赖于技术能够发展到非常好的阶段,到时候所有的道路情况车辆才能理解和处理。

从分类等级里面可以看到,L3级别以下不需要高精地图,但在L3、L4级别,高精地图是标配。

发展到L5阶段是否需要高精地图?到目前为止还不确定在目前的情况下,如果没有高精地图,L3、L4级别的自动驾驶很难实现。


2)什么是高精地图

                                                                                                高精地图的定义

传统地图的技术不是不精确,而是尚未达到自动驾驶的需求。

用于L3、L4级别自动驾驶的高精地图,对整个道路的描述更加准确、清晰和全面。高精地图除了传统地图的道路级别,还有道路之间的连接关系,专业术语叫Link。

高精地图最主要的特征是需要描述车道、车道的边界线、道路上各种交通设施和人行横道

即它把所有东西、所有人能看到的影响交通驾驶行为的特性全部表述出来。

第二个特征是实时性实时性是非常关键的指标,因为自动驾驶完全依赖于车辆对于周围环境的处理,如果实时性达不到要求,可能在车辆行驶过程中会有各种各样的问题及危险。

高精地图更类似于自动驾驶的专题组,但国内可能为了称谓方便还是称它为高精地图。高精地图并不是特指精度,它在描述上更加的全面,对实时性的要求更高。


3)高精地图与导航地图

                                                                                                导航地图与高精地图的差别

左边是我们经常用到的一些电子导航地图,它的表述形式倾向“有向图”结构,把道路抽象成一条条的边,各边连通关系构成整体上的有向图。这类似百度地图、高德地图、谷歌地图的做法。

导航地图只是给驾驶员提方向性的引导。识别标志标牌、入口复杂情况、行人等都是由驾驶员来完成,地图只是引导作用。导航地图是根据人的行为习惯来设计的。

高精地图完全为机器设计的。因为对于道路的各种情况、人都能理解,但是对于车辆来说它完全不理解。

右边的图是比较典型的复杂路口,包括人行横道、红绿灯、限速标牌、车道左转右转类型。

我们可以看到图中的路口中间有虚拟的连接线。真实道路中不存在连接线。连接线是为了让车辆更好的去理解环境,并在高精地图上表示出来。通过这一步,在人类构建的交通设施环境下,自动驾驶车辆便能运行。


4)高精地图---无人驾驶的核心基础模块

                                                                                                自动驾驶领域对功能模块的划分

高精地图可以作为自动驾驶的「大脑」。「大脑」里面最主要是地图、感知、定位、预测、规划、安全。综合处理成自动驾驶车辆能接受的外部信息,并统一运行在实时的操作系统上。

ROS是业界普遍接受的实时操作系统,百度内部也在研发自己的操作系统。

编者注:

在2019CES的Apollo 3.5发布会上,Apollo正式发布首个自动驾驶高性能开源计算框架Cyber RT。

Apollo Cyber RT系统是 Apollo 开源软件平台层的一部分,作为运行时计算框架,处于实时操作系统 (RTOS) 和应用模块之间。 

Apollo Cyber RT作为基础平台,支持流畅高效的运行所有应用模块。

车上配备的传感器类似于人的感知系统,用来感知外部环境;自动驾驶车辆会把感知的结果通过「大脑」处理后发送给控制系统。

HMI人机交互接口前期主要用于内部调试,后期当自动驾驶车辆量产后,需要用户输入目的地等信息。

因此,高精地图对于感知、定位、规划、决策、仿真和安全都是不可缺少的。

下面让我们来逐一了解高精地图模块与其他模块之间的关系。


5)高精地图与定位模块的关系

                                                                                               视觉与高精地图结合是比较典型的视觉定位方法

现在主流的自动驾驶的定位方案有两种:一种是基于点云,另一种是基于Camera其本身都是一种对周围环境的感知。

感知后是Feature提取,提取之后可以通过特征匹配最终得到精确结果。

自动驾驶车辆在路口“看”到建筑物,然后通过激光雷达能搜到点云的信息,通过点云的特征提取,然后通过复杂的组合变换、视角变换,最终通过跟周围环境的比对能得到比较准确的定位坐标。

目前主流Camera定位的视觉方案,会实时做Location Feature的提取。在HDMap里面也存储了对应的一些Location相关的特征。经过两个提取特征的比较后可以得到相对准确的定位位置信息

Camera下有GNSS,雷达也有。有初值之后可以减少搜索的范围,在工程上可以搜到更好的结果。

                                                                                                路边特征/车道线对比

左侧「路边的特征」图片是我们利用粒子滤波提取路边特征的演示。

车辆在初始位置时,Camera可以观测到在它左边有一棵树。这棵树可能是高精地图的Feature,通过Feature我们知道车辆可能的位置。

下一刻,Camera观测到它右边又有一棵树。通过这两个Feature的比对,再通过概率性叠加计算,几次迭代后就可以大概确定车辆所在道路的位置。

道路上的Feature是非常多的,除了树以外,也可能是车道线。

右侧「道路车道线」图片是基于车道线的匹配情况演示。通过Camera、Deep Learning和实时的检测模块,系统能够实时地检测到车道线。

从右图可以看出左边的车道线匹配情况不太好,右边的车道线匹配比较好,这时候能大概的确定我们在右边车道线对应的相关位置。

高精地图里面由定位提供的Feature有很多,例如电线杆、车道线、停止线和人行横道等都能提供很多的约束信息。


6)高精地图与感知模块的关系

                                                                                                超距离感知、障碍物感知与红绿灯感知

自动驾驶车辆搭载的传感器类型有很多。但64线激光雷达、Camera和Radar等传感器都有一定局限性。

64线激光雷达号称有一百米的检测距离。但实践中超过60米之后,点云本身已非常稀疏,60米外检测的可信度会继续下降。

自动驾驶车辆在行驶中如果遭遇洒水车,或者碰到雾霾天气,对激光雷达的检测可信度也会有很大影响。

Camera的局限更大,在夜间、逆光的情况下很难达到非常好的视觉效果。

Radar的穿透能力很强,但精度不高。

所以基于这些传感器本身的局限性,高精地图能够提供非常大的帮助。

开发者可以把高精地图看作是离线的传感器,在高精地图里,道路元素的位置都被标注好了。

由于物体的遮挡影响,自动驾驶车辆在某些地方看不到左下侧/比较远的红绿灯。

在高精地图里提前标注红绿灯的三维空间位置后,感知模块就可以提前做针对性的检测。

这样做不仅可以减少感知模块的工作量,而且可以解决Deep Learning 的部分缺陷。识别可能会有些误差,但先验之后可提高识别率。 


7)高精地图与规划、预测、决策模块的关系

                                                                                                高精地图可以帮助车辆做到先验信息/轨迹约束/预测选择

规划、预测和决策也是自动驾驶里非常重要的模块。

「规划模块」完成的工作主要有两个:第一是A点到B点的长距离规划第二个是短距离规划

自动驾驶车辆在行驶过程中面临动态环境。其中包括道路交通的参与者,比如其他车辆和行人。我们要根据障碍物的实时位置及时地做局部规划。

在Apollo源码里有Planning的模块,是用来专门研究规划的。

有了以上两个层面的规划之后,还需要预测。「预测模块」的作用是把其他道路参与者的可能行驶的路径轨迹和行动预测出来。

「决策模块」主要是根据规划和预测的结果决定自动驾驶车辆是跟车、超车还是在红绿灯灯前停下等决策。

「控制模块」是把决策结果分解为一系列的控制行动,然后分发给控制模块执行。

 从以上分析可以看到,规划、预测、决策和控制的每个步骤都与高精地图有密切的关系。

高精地图的规划是Lean级别的,传统导航只需知道点到点的信息。对于高精地图而言,规划需要知道从哪个Lean到哪个Lean,是一系列Lean的序列。

规划的第二个层次是Planning。

在轨迹约束中,经高精地图运算后,自动驾驶车辆避让时会清楚地知道目的地在哪/怎么选,并提供可行的解空间。

预测的体系比较复杂,但底层仍依赖于高精地图。

例如,自动驾驶车辆「看到」其他车辆在左转车道上,系统会预测此车辆很大概率上要左转;若是「看到」其他车辆在右转车道上,系统会预测此车辆很大概率上要右转;「看到」行人在人行横道上,这时候红绿灯是绿的,系统则预测行人要过马路。

以上便是高精地图给规划、预测和决策模块提供先验的知识,高精地图能够让车辆决策更加准确。


8)高精地图与安全模块

                                                                                                自动驾驶车辆联网后,遭受攻击无可避免

自动驾驶的主要目标是能够取代人类司机,能够取代的前提是自动驾驶车辆必须足够的安全。

安全的维度有很多。驾驶算法的稳定性和对场景的处理能力也属于安全范畴。

今天我们着重讲安全模块与高精地图的关系。

自动驾驶车辆有很多传感器,当自动驾驶车辆上路之后,会出现很多质疑的声音。

联网的自动驾驶车辆可能被攻击。因为所有的东西一旦联网,就存在各种各样的隐患。

自动驾驶车辆可能遭受4个维度的攻击:传感器、操作系统、控制系统和通信系统。

传感器是自动驾驶车辆辆上通用的模块,相当于IMU惯性测量单元,它对于磁场是非常敏感,如果我们在车辆周围放一些强磁场,会影响它测量的准确度。

轮速器也有风险。车轮变形和损坏都会影响测量精度。

激光雷达依赖于激光反射。如果我们在周围环境上加载人工的反射物或假的红绿灯,就会让我们的车直接停下。假的GPS信号和激光也会对系统造成干扰。

定位模块依赖于高精地图提供的信息来做运动学的约束;激光雷达依赖高精地图做一些三维点的扫描。

Apollo提供的定位方案基于激光雷达反射值。反射值不准确就会对定位精度有影响,红绿灯对规划决策控制也有很大的影响。

针对任何一种攻击,目前来说,还很难有全面有效的方法来防止问题发生。

高精地图能在这里面起什么作用?

高精地图能提供离线的标准信息。比如说,激光雷达在场景中扫描到物体,通过与高精地图中的信息进行对比匹配。如果结果不一致,我们可以大概率地认为此地有问题,这就是通过多传感器的融合来解决安全问题。


9)高精地图与仿真系统

                                                                                                仿真系统是自动驾驶非常重要的模块

自动驾驶车辆的成本很高。车辆的成本几十万,64线激光雷达的成本在8万美元。

实际情况中,开发者很难把所有的策略迭代都放在车上去测试,所以需要非常强大的仿真系统。

仿真的主要问题是「真实」,怎样做到「真实」?

Apollo的仿真系统主要是基于高精地图/真实场景来构建。仿真场景回放后,和真实上路的实际情况相比,可以基本保证Gap不会很大。

在实际测试的过程中,Apollo的测试人员也会录一些Bag,记录实测中遇到的一些问题,并放到仿真系统里去做测试。

高精地图为仿真地图提供了最底层的基础结构,能让仿真系统更好的去模拟真实道路的场景。

没有高精地图的高可靠性,L3/L4自动驾驶无法落地。


10)高精地图的作用---静态的Perception

                                                                                                高精地图可将人类经验赋予自动驾驶系统

上图是几个非常典型的、难理解的场景。

第一是在重庆的某地。路网非常复杂,我们目前的技术从算法层面无法理解如此复杂的交通场景。

第二个是雪天。雪天是非常难解的场景,雪天时路上的车道线全部被盖住了,不管是基于视觉还是雷达都无法正常运行。

2018年谷歌IO大会上提出了通过深度学习能够解决雪天的场景。在下雪过程中,激光雷达在扫描到雪花之后会误报出很多障碍物,通过深度学习能够把激光雷达上检测到的雪花障碍物过滤掉,最终得到跟没有下雪的场景一样,但是具体效果怎么样,并没有具体的数据披露。

第三个是复杂的红绿灯,这种红绿灯即使人看到也不知该如何处理。

高精地图是静态的Perception。机器理解不了,我们可以把人理解的经验赋予给驾驶系统,相当于把人的经验传授给它。


11)高精地图的作用---弥补系统性缺陷

                                                                                                高精地图可以弥补系统性缺陷

自动驾驶需要非常复杂的计算系统,4G的传输速度并不能满足现阶段自动驾驶的海量数据传输需求。

64线激光雷达、Camera和其他传感器,每时每刻都会产生巨量的数据,这些数据不能传回云端,就不能采用互联网的模式:通过云端计算把结果发送给终端。

5G是否能达到数据传输的要求还需要再验证。目前从5G的宣传层面来看,能够达到数据实时传输的效果,但是5G的普及还需要时间。所以我们现在把大量的数据都放在终端。

Apollo的自动驾驶车辆后面有非常大的计算单元。基于英特尔工控机,Apollo把所有的计算都放在车上,这会对计算速度和实时性有很大的影响。

我们希望Apollo的各模块都能达到实时级的响应,但是自动驾驶车辆的计算量太大,想要达到实时级的响应,仍需其他模块的辅助。

举个例子,高精地图告诉感知/控制模块,在你的双向通行的车道中有栅栏隔离,对向车道的车不可能过来,系统就可以放弃检测对向车道上的障碍物,有效地降低系统负担。

传感器有局限,但高精地图给自动驾驶提供了超视觉、超过传感器边界的远距离感知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【POJ - 1275】Cashier Employment(差分约束,建图)

题干: A supermarket in Tehran is open 24 hours a day every day and needs a number of cashiers to fit its need. The supermarket manager has hired you to help him, solve his problem. The problem is that the supermarket needs different number of c…

InfluxDB 简介、安装和简单使用

简介 InfluxDB是一个由InfluxData开发的开源时序型数据库。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据…

4)机器学习基石笔记 Lecture4:Feasibility of Learning

目录 1)Learning is Impossible 2)Probability to the Rescue 3)Connection to Learning 4)Connection to Real Learning 上节课我们主要介绍了机器学习问题的类型,主要是二元分类和回归问题。本节课,我…

Java注解全面解析

1.基本语法 注解定义看起来很像接口的定义。事实上,与其他任何接口一样,注解也将会编译成class文件。 Target(ElementType.Method)Retention(RetentionPolicy.RUNTIME)public interface Test {} 除了符号以外,Test的定义很像一个空的接口。…

ubuntu18.04下安装grafana6和简单使用

ubuntu18.04下安装grafana6 环境 ubuntu18.04 下载 sudo apt-get install -y adduser libfontconfig1 # 使用wget 下载会很慢 # 推荐百度网盘:链接:https://pan.baidu.com/s/1y2I4LwuslB5kHAZwV8RNxw 提取码:o19t # 或者csdn:[gr…

VMware虚拟机下安装Ubuntu16.04镜像完整教程

目录 1)安装前准备 2)安装Ubuntu 16.04镜像 3)One More Thing 1)安装前准备 PC电脑操作系统是WIN7,已正确安装虚拟机VMware 12。 2)安装Ubuntu 16.04镜像 下载Ubuntu镜像文件,下载链接为…

JAVA 注解的基本原理

以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高。 于是就有人提出来一种标记式高耦合的配置方式,『注解』…

查看ubuntu系统的版本信息

目录 1)查看linux内核、gcc版本、ubuntu版本 2)显示linux的内核版本和系统是多少位 1)查看linux内核、gcc版本、ubuntu版本 显示如下 Linux version 4.15.0-29-generic (builddlcy01-amd64-024) linux内核版本号 gcc version 5.4…

框架基础——全面解析Java注解

阅读目录 一、概念二、Java中的常见注解三、注解的分类四、自定义注解五、注解的项目实战六、注解总结 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答:1. 能够读懂别人写的代码,特别是框架相关的代码&…

CS231n Convolutional Neural Networks for Visual Recognition------Scipy and MatplotlibTutorial

源链接为:http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务!Python本身就是一种很棒的通用编程语言,但是在一些流行的库帮助下(numpy&…

Python之Numpy入门实战教程(1):基础篇

Numpy、Pandas、Matplotlib是Python的三个重要科学计算库,今天整理了Numpy的入门实战教程。NumPy是使用Python进行科学计算的基础库。 NumPy以强大的N维数组对象为中心,它还包含有用的线性代数,傅里叶变换和随机数函数。 强烈建议大家将本文中…

Go初识与问题

变量&常量 变量 命名 由字母、数字、下划线组成,首个字符不能是数字关键字、保留字不能作为变量名变量名字区分大小写驼峰命名声明 1. var : 全局变量var 变量名称 类型var 变量名称1,变量名称2 类型 (同一种类型)var (变量名称1 类型1变量名称2 类型…

1.3)深度学习笔记------浅层神经网络

目录 1)Neural Network Overview 2)Neural Network Representation 3)Computing a Neural Network’s Output(重点) 4)Vectorizing across multiple examples 5)Activation functions 6&a…

SpringMVC 的执行流程

SpringMVC 的执行流程 1)用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet捕获; 2)DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI&…

kafka初识

kafka中文文档 本文环境:ubuntu:18.04 kafka安装、配置与基本使用(单节点) 安装kafka 下载 0.10.0.1版本并解压缩 > tar -xzf kafka_2.11-0.10.0.1.tgz > cd kafka_2.11-0.10.0.1.tgzkafka简单配置 > vi config/server.properties主要注意三个地方&a…

1.4)深度学习笔记------深层神经网络

目录 1)Deep L-layer neural network 2)Forward Propagation in a Deep Network(重点) 3)Getting your matrix dimensions right 4)Building blocks of deep neural networks 5)Forward and Backward Propagation…

Struts1工作原理

Struts1工作原理图 1、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面…

【洛谷 - P1772 】[ZJOI2006]物流运输(dp)

题干: 题目描述 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在&am…

RabbitMQ初识

官方介绍 - 中文 本文环境:ubuntu:20.04 RabbitMQ安装、配置与基本使用 安装RabbitMQ # 简易脚本安装 curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh | sudo bash sudo apt-get install rabbitmq-server -y --f…

Apollo进阶课程 ⑦ | 高精地图的采集与生产

目录 1.高精地图采集过程中需要用到的传感器 1.1)GPS 1.2)IMU 1.3)轮速计 2.高精地图采集过程中的制图方案 2.1)方案一 激光雷达 2.2)Camera融合激光雷达 原文链接:Apollo进阶课程 ⑦ | 高精地图的采…