智慧交通与自动驾驶

自动驾驶技术小结

2020-01-08  本文已影响0人  springzzj

自动驾驶概述

自动驾驶技术不需要人为操作,仅仅通过GPS、惯导、雷达等感知设备即可达到自动导航及行驶的目标。自动驾驶技术分为5个级别:

目前大部分的自动驾驶技术是通过GPS定位+高精地图定位车的位置,同时使用普通雷达、激光雷达、摄像头等感知周围的环境,并随后做出决策,最终到达目的地。百度的apollo2.0的技术框架如下:


image

按模块划分的话,主要分为定位模块、路径规划模块、感知模块、控制模块,以下将分别介绍每个模块的技术。

定位技术

自动驾驶中最重要的是先知道车的位置,需要具有车道级别的定位精度。普通的GPS定位在这里是不能胜任的,因为普通GPS大概有10m的误差。为了更精准的定位一般需要用到高精地图,高精地图相对于普通的电子地图来说,它的精度更高,也是需要到车道级别。

差分GPS

对于普通的gps定位来说,存在卫星本身误差、轨道误差、天气原因导致的误差、手机设备等因素导致得到定位精度仍然存在误差。差分gps是在此基础,根据手机附近基准站(基站准确位置已知)的gps误差来修正手机的误差,分为三种技术:位置差分、伪距差分、相位差分。一般来说差分GPS可以得到厘米级的定位精度,但是差分GPS的基准站并不能覆盖所有区域,特别是隧道或者有GPS遮挡的区域,这时候是没办法用GPS准确定位的。

惯导系统

为了解决GPS遮挡的问题,惯导系统是利用陀螺仪+加速度计得到每一刻的加速度和角速度,通过时间积分,得到速度和角度,再通过空间累加,就可以推算出实时的位置。但是惯导系统存在累积误差的问题。

环境匹配

为了解决上述的问题,自动驾驶定位中一般还是用环境匹配的方法来修正位置。而环境匹配的方式有高精地图、激光雷达点云图、3D地图等。

环境匹配定位一般和惯导一起做卡尔曼滤波来提升定位效果。

高精地图

高精度地图是自动驾驶的基础,制作一张高精度地图可以大概分为3个过程:采集、加工、转换。该小节内容转载https://zhuanlan.zhihu.com/p/57958859

采集

我们需要需要一些传感器来获取数据,下面是需要的传感器列表:lidar、摄像头、gps定位、惯导等。lidar主要是来采集点云数据,因为激光雷达可以精确的反应出位置信息,所以激光雷达可以知道路面的宽度,红绿灯的高度,以及一些其他的信息,当然现在也有厂家基于视觉SLAM(纯摄像头测距)来制作地图的,有兴趣的也可以看下相关介绍。
摄像头主要是来采集一些路面的标志,车道线等,因为图像的像素信息更多,而位置信息不太精确,所以采用摄像头来识别车道线,路面的一些标志等。

gnss记录了车辆的位置信息,记录了当前采集点的坐标。惯导用来捕获车辆的角度和加速度信息,用来校正车辆的位置和角度。有了定位信息和点云图中的位置信息就可以计算出来每个扫描物的准确位置。

加工

首先需要生成一张原始的地图,这里我们采用点云生成原始的地图,因为点云的距离位置信息比较准确,因为点云数据是0.1s采集一帧,下面我们可以做一个计算。如果车速是100km/h,对应27.8m/s。即0.1s车行驶的距离是2.78m,而激光雷达的扫描距离大概是150m,所以前后2帧大部分地方是重合的。因为数据是一帧一帧的,我们需要把上面的说的每一帧进行合并,生成一张完整的地图,有点类似全景照片拼接,这样我们就可以得到一张原始的采集路段的地图。这里用到了点云的配准技术,有2种算法ICP和NDT,基于上面的算法,可以把点云的姿态进行变换并且融合。

点云拼接好了之后,我们就需要在道路上标出路沿,车道线,红绿灯,路口,一些交通标识等。大部分的工作都可以用深度学习结合图像的方法去解决,查找出上面的一些信息并且标识出来,目前有些场景还是需要人工标识出来,比如路口停止线和红绿灯的关系,如果一些特殊场景的车道线等,需要人工去做一些校正。

点云地图校准 -> 地图标注加工 -> 高精度地图
这样就生成了一张高精度地图,当然加工过程中首要的目标是提高效率和质量,尽量的采用算法自动化处理会很大的提高效率,这可能是后面地图厂家的核心竞争力。因为地图需要实时更新,谁的效率更高,谁的图就越新,用的人越多,之后的数据也越完善。

转换

将高精地图的格式转换为opendrive通用格式。

感知模块

感知模块主要是识别周边的环境,包括街道范围、红绿灯、标识牌、护栏、绿化带、其他车辆、人、障碍物等,利用计算机视觉技术和多传感器信息融合技术来提升感知的准确度。这里具体一般是使用机器学习的方法做图像检测和识别。通常的传感器包括摄像头、毫米波雷达、激光雷达。它们在不同的情况下有不同的优点,比如激光雷达在环境恶劣时候表现不好,而这时候毫米波雷达会好一些。所以自动驾驶目前会融合多传感器的数据,综合做出判断。具体来说感知模块需要去做如下工作:车道线检测、红绿灯识别、交通标识牌识别、行人检测、车辆的检测等。

车道线检测

车道线检测的两大主流方法是基于视觉的车道线检测和基于雷达的车道线检测。

红绿灯识别

一种是基于V2X,即智能网联技术。另一种方式是基于人工智能的视觉算法,它也是目前业界使用最广泛的一种方法

交通标识牌识别

交通标识牌识别的方式与红绿灯检测类似,可以直接使用深度神经网络对原始图像进行交通标识牌检测。也可以结合高精度地图,将交通标志信息存放在高精度地图中,在车辆行驶的过程中,直接根据车辆的位置从高精度地图中获取交通标志信息。

行人车辆识别

行人、车辆的检测常用的方式有两种。一种是直接使用激光雷达的数据进行目标检测。另一种是融合激光雷达和相机进行目标检测。激光雷达能够提供精确的位置和大小信息,基于图像的深度学习更擅长目标类别的识别。

进一步,需要判断出来行人和车辆的动态位置、速度、方向,根据一些预判来决定驾驶行为。

规划模块

规划模块主要分为三个功能:

Route Planning

RoutePlanning是道路级路径规划,也就是普通导航。它一般使用A*算法来计算起点到终点的路径规划。

Behavior Planning

宏观行为预测,根据感知模块扫描到的周围环境预测行为:超车、跟车、避让、停止。这里可以使用强化学习、神经网络、贝叶斯网络、模糊推理等技术手段来实现。

Motion Planning

局部路径规划,比如从一条车道行驶到另外一条车道上,得到从一条车道行驶到另外一条车道的轨迹点,同时获得所有轨迹点的速度、加速度、角度。具体使用的技术包括强化学习,A*算法,遗传算法、动态路径规划算法、人工势场法等

控制模块

根据Motion Planning的结果控制汽车横向和纵向速度移动,完成任务。控制车身横向转弯和纵向加速度,完成规划好的路线行驶。具体使用的技术包括:滑膜控制、模糊控制、神经网络控制、最优控制、自适应控制和纯跟踪控制等技术

自动驾驶问题

达到99%的精确度是容易的,但是想达到99.999%的精确度就太难了。目前自动驾驶的问题是在复杂路况下仍然存在小概率的判断错误,但是又很难模拟所有的复杂路况情况。所以自动驾驶公司一般都会有仿真系统,让自动驾驶系统在仿真系统中学习各种复杂路况。

上一篇下一篇

猜你喜欢

热点阅读