自动驾驶基础软件架构(自动驾驶基础架构部)
今天给各位分享自动驾驶基础软件架构的知识,其中也会对自动驾驶基础架构部进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
全球自动驾驶汽车硬件和软件最新技术总结(2020)
进入到2020年,自动驾驶技术走到了需要规模商业化证明技术价值的时候。
不管是封闭或半封闭场景的矿区、港口和园区,还是公开道路的RoboTaxi、RoboTruck等,技术都是自动驾驶在不同场景商业化的基础。
本报告覆盖了自动驾驶汽车所需要的感知、定图与定位、传感器融合、机器学习方法、数据收集与处理、路径规划、自动驾驶架构、乘客体验、自动驾驶车辆与外界交互、自动驾驶对汽车部件的挑战(如功耗、尺寸、重量等)、通讯与连接(车路协同、云端管理平台)等技术领域的讨论,并且提供相应的各自动驾驶公司的实施案例。
本报告是由美国、中国、以色列、加拿大、英国等全球不同国家和地区的自动驾驶专家,针对自动驾驶技术的硬件和软件技术,进行的全面阐述,方便各位读者能够从技术角度,了解最新的技术动态,从而全面了解自动驾驶汽车。
本报告的案例大多数来自汽车领域,这也是目前自动驾驶行业最火热的应用场景,但是,服务个人出行的汽车并不是自动驾驶技术影响深远的行业,其他的行业,如公共交通、货运、农业、矿业等领域,也同样是自动驾驶技术应用的广泛天地。
各类传感器,用于自动驾驶汽车感知环境,如同人类的眼睛,自动驾驶汽车的基础部件;自动驾驶汽车的传感器主要有五种,包括了:1、Long range RADAR;2、Camera;3、LIDAR;4、Short/Medium range RADAR;5、Ultrasound;
这些不同的传感器,主要用于不同距离、不同类型的物体感知,为自动驾驶汽车判断周边环境,提供最重要的信息来源,另外,还有一个环境感知的信息来源是车路协同的来源,这点报告中也有阐述。
1、扫描范围,确定必须对被感测的对象做出反应的时间;
2、分辨率,确定传感器可以为自动驾驶车辆提供的环境细节;
3、视场或角度分辨率,确定要覆盖、要感知的区域需要传感器的数量;
4、刷新率,确定来自传感器的信息更新的频率;
5、感知对象数量,能够区分3D中的静态对象数量和动态对象数量,并且确定需要跟踪的对象数量;
6、可靠性和准确性,传感器在不同环境下的总体可靠性和准确性;
7、成本、大小和软件兼容性,这是量产的技术条件之一;
8、生成的数据量,这决定了车载计算单元的计算量,现在传感器偏向智能传感器,也就是,不仅仅是感知,还会分辨信息,把对车辆行驶影响最重要的数据传输给车载计算单元,从而减少其计算负荷;
下面是Waymo、Volvo-Uber、Tesla的传感器方案示意图:
1、Tesla的传感器,具有加热功能,可抵御霜冻和雾气;
2、Volvo的传感器配备有喷水清洁系统,用于清洁粉尘;
3、Waymo使用的Chrysler Pacifica的传感器有喷水系统和刮水器。
02 SLAM和传感器融合
SLAM是一个复杂的过程,因为本地化需要地图,并且映射需要良好的位置估计。尽管长期以来人们一直认为机器人要成为自主的基本“鸡或蛋”问题,但在1980年代和90年代中期的突破性研究从概念和理论上解决了SLAM。从那时起,已经开发了多种SLAM方法,其中大多数使用概率概念。
为了更准确地执行SLAM,传感器融合开始发挥作用。传感器融合是组合来自多个传感器和数据库的数据以获得改进信息的过程。它是一个多级过程,处理数据的关联,相关性和组合,与仅使用单个数据源相比,可以实现更便宜,更高质量或更多相关信息。
1、顺序地,将驱动过程分解为分层管道的组件,每个步骤(传感,定位,路径规划,运动控制)都由特定的软件元素处理,管道的每个组件都将数据馈送到下一个;
2、基于深度学习的端到端解决方案,负责所有这些功能。
端到端(e2e)学习作为一种解决方案,可以解决自动驾驶汽车复杂AI系统所面临的挑战,因此越来越受到人们的关注。端到端(e2e)学习将迭代学习应用于整个复杂系统,并已在深度学习的背景下得到普及。
03 三种机器深度学习方法
当前,不同类型的机器学习算法被用于自动驾驶汽车中的不同应用。本质上,机器学习根据提供的一组训练数据将一组输入映射到一组输出。1、卷积神经网络(CNN);2、递归神经网络(RNN);3、深度强化学习(DRL);是应用于自动驾驶的最常见的深度学习方法。
RNN——当处理诸如视频之类的时间信息时,RNN是强大的工具。在这些网络中,先前步骤的输出作为输入被馈送到网络中,从而使信息和知识能够持久存在于网络中并被上下文化。
DRL——将深度学习(DL)和强化学习相结合。DRL方法使软件定义的“代理”可以使用奖励功能,在虚拟环境中学习最佳行动,以实现其目标。这些面向目标的算法学习如何实现目标,或如何在多个步骤中沿特定维度最大化。尽管前景广阔,但DRL面临的挑战是设计用于驾驶车辆的正确奖励功能。在自动驾驶汽车中,深度强化学习被认为仍处于早期阶段。
这些方法不一定孤立地存在。例如,特斯拉(Tesla)等公司依靠混合形式,它们试图一起使用多种方法来提高准确性并减少计算需求。
一次在多个任务上训练网络是深度学习中的常见做法,通常称为多任务训练 或辅助任务训练。这是为了避免过度拟合,这是神经网络的常见问题。当机器学习算法针对特定任务进行训练时,它会变得非常专注于模仿它所训练的数据,从而在尝试进行内插或外推时其输出变得不切实际。
通过在多个任务上训练机器学习算法,网络的核心将专注于发现对所有目的都有用的常规功能,而不是仅仅专注于一项任务。这可以使输出对应用程序更加现实和有用。
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
自动驾驶技术基本知识介绍
自动驾驶车,是一种无须人工干预而能够感知其周边环境和导航的车辆。它利用了包括雷达、激光、超声波、GPS、里程计、计算机视觉等多种技术来感知其周边环境,通过先进的计算和控制系统,来识别障碍物和各种标识牌,规划合适的路径来控制车辆行驶。
美国汽车工程师协会(SAE,Society of Automotive Engineers),则将自动驾驶划分为 0~5 共六级。
Level 0:无自动化(No Automation)
没有任何自动驾驶功能或技术,人类驾驶员对汽车所有功能拥有绝对控制权。驾驶员需要负责转向、加速、制动和观察道路状况。任何驾驶辅助技术,例如现有的前向碰撞预警、车道偏离预警,以及自动雨刷和自动前灯控制等,虽然有一定的智能化,但是仍需要人来控制车辆,所以都仍属于 Level 0。
Level 1:驾驶辅助(Driver Assistance)
驾驶员仍然对行车安全负责,不过可以授权部分控制权给系统管理,某些功能可以自动进行,比如常见的自适应巡航(Adaptive Cruise Control,ACC)、应急刹车辅助(Emergency Brake Assist,EBA)和车道保持(Lane-Keep Support,LKS)。Level 1 的特点是只有单一功能,驾驶员无法做到手和脚同时不操控。
Level 2:部分自动化(Partial Automation)
人类驾驶员和汽车来分享控制权,驾驶员在某些预设环境下可以不操作汽车,即手脚同时离开控制,但驾驶员仍需要随时待命,对驾驶安全负责,并随时准备在短时间内接管汽车驾驶权。比如结合了 ACC 和 LKS 形成的跟车功能。Level 2 的核心不在于要有两个以上的功能,而在于驾驶员可以不再作为主要操作者。
Level 3:有条件自动化(Conditional Automation)
在有限情况下实现自动控制,比如在预设的路段(如高速和人流较少的城市路段),汽车自动驾驶可以完全负责整个车辆的操控,但是当遇到紧急情况,驾驶员仍需要在某些时候接管汽车,但有足够的预警时间,如即将进入修路的路段(Road work ahead)。Level 3 将解放驾驶员,即对行车安全不再负责,不必监视道路状况。
Level 4:高度自动化(High Automation)
自动驾驶在特定的道路条件下可以高度自动化,比如封闭的园区、高速公路、城市道路或固定的行车线路等,这这些受限的条件下,人类驾驶员可以全程不用干预。
Level 5:完全自动化(Full Automation)
对行车环境不加限制,可以自动地应对各种复杂的交通状况和道路环境等,在无须人协助的情况下由出发地驶向目的地,仅需起点和终点信息,汽车将全程负责行车安全,并完全不依赖驾驶员干涉,且不受特定道路的限制。
注释:DDT(Dynamic driving task):动态驾驶任务,指汽车在道路上行驶所需的所有实时操作和策略上的功能,不包括行程安排、目的地和途径地的选择等战略上的功能。
无人驾驶系统的核心可以概述为三个部分:感知(Perception),规划(Planning)和控制(Control),这些部分的交互以及其与车辆硬件、其他车辆的交互可以用下图表示:
感知是指无人驾驶系统从环境中收集信息并从中提取相关知识的能力。其中,环境感知(Environmental Perception)特指对于环境的场景理解能力,例如障碍物的位置,道路标志/标记的检测,行人车辆的检测等数据的语义分类。 一般来说,定位(Localization)也是感知的一部分,定位是无人车确定其相对于环境的位置的能力。
为了确保无人车对环境的理解和把握,无人驾驶系统的环境感知部分通常需要获取周围环境的大量信息,具体来说包括:障碍物的位置,速度以及可能的行为,可行驶的区域,交通规则等等。无人车通常是通过融合激光雷达(Lidar),相机(Camera),毫米波雷达(Millimeter Wave Radar)等多种传感器的数据来获取这些信息。
车载雷达传感器功能及优缺点各有不同,相关比较如下表所示:
激光雷达 是一类使用激光进行探测和测距的设备,它能够每秒钟向环境发送数百万光脉冲,它的内部是一种旋转的结构,这使得激光雷达能够实时的建立起周围环境的3维地图。
通常来说,激光雷达以10Hz左右的速度对周围环境进行旋转扫描,其扫描一次的结果为密集的点构成的3维图,每个点具备(x,y,z)信息,这个图被称为点云图(Point Cloud Graph),如下图所示,是使用Velodyne VLP-32c激光雷达建立的一个点云地图:
激光雷达因其可靠性目前仍是无人驾驶系统中最重要的传感器,然而,在现实使用中,激光雷达并不是完美的,往往存在点云过于稀疏,甚至丢失部分点的问题,对于不规则的物体表面,使用激光雷达很难辨别其模式,另一个比较大的挑战是一个比较大的挑战是激光雷达感知范围比较近,感知范围平均在 150m 左右,这取决于环境和障碍物的不同。激光雷达在角分辨度上也远远不及照相机。激光雷达对环境的敏感度也是比较大的,例如雨天中,车辆行驶中溅起来的水花,在激光雷达上都是有噪点的。
毫米波雷达 通过发射电磁波并通过检测回波来探测目标的有无、距离、速度和方位。由于毫米波雷达技术相对成熟,成本较低,并且在不良天气下表现良好,因此成为感知设备中重要的一环。但由于其分辨率较低,因此不能作为激光雷达的替代品,而是激光雷达的重要补充设备。
摄像机 根据镜头和布置方式的不同主要有以下四种:单目摄像机、双目摄像机、三目摄像机和环视摄像机。
单目摄像机 模组只包含一个摄像机和一个镜头。由于很多图像算法的研究都是基于单目摄像机开发的,因此相对于其他类别的摄像机,单目摄像机的算法成熟度更高。但是单目有着两个先天的缺陷。一是它的视野完全取决于镜头。焦距短的镜头,视野广,但缺失远处的信息。反之亦然。因此单目摄像机一般选用适中焦距的镜头。二是单目测距的精度较低。摄像机的成像图是透视图,即越远的物体成像越小。近处的物体,需要用几百甚至上千个像素点描述;而处于远处的同一物体,可能只需要几个像素点即可描述出来。这种特性会导致,越远的地方,一个像素点代表的距离越大,因此对单目来说物体越远,测距的精度越低。
双目摄像机 由于单目测距存在缺陷,双目摄像机应运而生。相近的两个摄像机拍摄物体时,会得到同一物体在摄像机的成像平面的像素偏移量。有了像素偏移量、相机焦距和两个摄像机的实际距离这些信息,根据数学换算即可得到物体的距离。虽然双目能得到较高精度的测距结果和提供图像分割的能力,但是它与单目一样,镜头的视野完全依赖于镜头。而且双目测距原理对两个镜头的安装位置和距离要求较多,这就会给相机的标定带来麻烦。
三目摄像机 由于单目和双目都存在某些缺陷,因此广泛应用于无人驾驶的摄像机方案为三目摄像机。三目摄像机其实就是三个不同焦距单目摄像机的组合。根据焦距不同,每个摄像机所感知的范围也不尽相同。对摄像机来说,感知的范围要么损失视野,要么损失距离。三目摄像机能较好地弥补感知范围的问题。因此在业界被广泛应用。正是由于三目摄像机每个相机的视野不同,因此近处的测距交给宽视野摄像头,中距离的测距交给主视野摄像头,更远的测距交给窄视野摄像头。这样一来每个摄像机都能发挥其最大优势。三目的缺点是需要同时标定三个摄像机,因而工作量更大。其次软件部分需要关联三个摄像机的数据,对算法要求也很高。
环视摄像机, 之前提到的三款摄像机它们所用的镜头都是非鱼眼的,环视摄像机的镜头是鱼眼镜头,而且安装位置是朝向地面的。某些高配车型上会有“360°全景显示”功能,所用到的就是环视摄像机。安装于车辆前方、车辆左右后视镜下和车辆后方的四个鱼眼镜头采集图像,鱼眼摄像机为了获取足够大的视野,代价是图像的畸变严重。环视摄像机的感知范围并不大,主要用于车身5~10米内的障碍物检测、自主泊车时的库位线识别等。
为了理解点云信息,通常来说,我们对点云数据进行两步操作:分割(Segmentation)和分类(Classification)。其中,分割是为了将点云图中离散的点聚类成若干个整体,而分类则是区分出这些整体属于哪一个类别(比如说行人,车辆以及障碍物)。分割算法可以被分类如下几类:
在完成了点云的目标分割以后,分割出来的目标需要被正确的分类,在这个环节,一般使用机器学习中的分类算法,如支持向量机(Support Vector Machine,SVM)对聚类的特征进行分类,最近几年由于深度学习的发展,业界开始使用特别设计的卷积神经网络(Convolutional Neural Network,CNN)对三维的点云聚类进行分类。
实践中不论是提取特征-SVM的方法还是原始点云-CNN的方法,由于激光雷达点云本身解析度低的原因,对于反射点稀疏的目标(比如说行人),基于点云的分类并不可靠,所以在实践中,我们往往融合雷达和相机传感器,利用相机的高分辨率来对目标进行分类,利用Lidar的可靠性对障碍物检测和测距,融合两者的优点完成环境感知。
无人驾驶系统中,我们通常使用图像视觉来完成道路的检测和道路上目标的检测。道路的检测包含对道路线的检测(Lane Detection),可行驶区域的检测(Drivable Area Detection);道路上路标的检测包含对其他车辆的检测(Vehicle Detection),行人检测(Pedestrian Detection),交通标志和信号的检测(Traffic Sign Detection)等所有交通参与者的检测和分类。
车道线的检测涉及两个方面: 第一是识别出车道线,对于弯曲的车道线,能够计算出其曲率,第二是确定车辆自身相对于车道线的偏移(即无人车自身在车道线的哪个位置) 。一种方法是抽取一些车道的特征,包括边缘特征(通常是求梯度,如索贝尔算子),车道线的颜色特征等,使用多项式拟合我们认为可能是车道线的像素,然后基于多项式以及当前相机在车上挂载的位置确定前方车道线的曲率和车辆相对于车道的偏离。
可行驶区域的检测目前的一种做法是采用深度神经网络直接对场景进行分割,即通过训练一个逐像素分类的深度神经网络,完成对图像中可行驶区域的切割。
交通参与者的检测和分类目前主要依赖于深度学习模型,常用的模型包括两类:
传感器层将数据以一帧帧、固定频率发送给下游,但下游是无法拿每帧的数据去进行决策或者融合的。因为传感器的状态不是100%有效的,如果仅根据某一帧的信号去判定前方是否有障碍物(有可能是传感器误检了),对下游决策来说是极不负责任的。因此上游需要对信息做预处理,以保证车辆前方的障得物在时间维度上是一直存在的, 而不是一闪而过。
这里就会使用到智能驾驶领域经常使用到的一个算法 卡尔曼滤波。
卡尔曼滤波(Kalman filter) 是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。卡尔曼滤波会根据各测量量在不同时间下的值,考虑各时间下的联合分布,再产生对未知变数的估计,因此会比只以单一测量量为基础的估计方式要准。
卡尔曼滤波在技术领域有许多的应用。常见的有飞机及太空船的导引、导航及控制。卡尔曼滤波也广为使用在时间序列的分析中,例如信号处理及计量经济学中。卡尔曼滤波也是机器人运动规划及控制的重要主题之一,有时也包括在轨迹最佳化。卡尔曼滤波也用在中轴神经系统运动控制的建模中。因为从给与运动命令到收到感觉神经的回授之间有时间差,使用卡尔曼滤波有助于建立符合实际的系统,估计运动系统的目前状态,并且更新命令。
信息融合是指把相同属性的信息进行多合一操作。
比如摄像机检测到了车辆正前方有一个障碍物,毫米波也检测到车辆前方有一个障碍物,激光雷达也检测到前方有一个障碍物,而实际上前方只有一个障碍物,所以我们要做的是把多传感器下这辆车的信息进行一次融合,以此告诉下游,前面有辆车,而不是三辆车。
坐标转换在自动驾驶领域十分重要。
传感器是安装在不同地方的比如超声波雷达(假如当车辆右方有一个障碍物,距离这个超声波雷达有3米,那么我们就认为这个障碍物距离车有3米吗?并不一定,因为决策控制层做车辆运动规划时,是在车体坐标系下做的(车体坐标系-般以后轴中心为O点)所以最终所有传感器的信息,都是需要转移到自车坐标系下的。因此感知层拿到3m的障碍物位置信息后,必须将该章碍物的位置信息转移到自车坐标系下,才能供规划决策使用。 同理,摄像机一般安装在挡风玻璃下面,拿到的数据也是基于摄像机坐标系的,给下游的数据,同样需要转换到自车坐标系下。
在无人车感知层面,定位的重要性不言而喻,无人车需要知道自己相对于环境的一个确切位置,这里的定位不能存在超过10cm的误差,试想一下,如果我们的无人车定位误差在30厘米,那么这将是一辆非常危险的无人车(无论是对行人还是乘客而言),因为无人驾驶的规划和执行层并不知道它存在30厘米的误差,它们仍然按照定位精准的前提来做出决策和控制,那么对某些情况作出的决策就是错的,从而造成事故。由此可见,无人车需要高精度的定位。
目前使用最广泛的无人车定位方法当属融合 全球定位系统(Global Positioning System,GPS)和惯性导航系统(Inertial Navigation System)定位方法 ,其中,GPS的定位精度在数十米到厘米级别之间,高精度的GPS传感器价格也就相对昂贵。融合GPS/IMU的定位方法在GPS信号缺失,微弱的情况下无法做到高精度定位,如地下停车场,周围均为高楼的市区等,因此只能适用于部分场景的无人驾驶任务。
地图辅助类定位算法是另一类广泛使用的无人车定位算法, 同步定位与地图构建(Simultaneous Localization And Mapping,SLAM) 是这类算法的代表,SLAM的目标即构建地图的同时使用该地图进行定位,SLAM通过利用已经观测到的环境特征确定当前车辆的位置以及当前观测特征的位置。这是一个利用以往的先验和当前的观测来估计当前位置的过程,实践上我们通常使用贝叶斯滤波器(Bayesian filter)来完成,具体来说包括卡尔曼滤波(Kalman Filter),扩展卡尔曼滤波(Extended Kalman Filter)以及粒子滤波(Particle Filter)。SLAM虽然是机器人定位领域的研究热点,但是在实际无人车开发过程中使用SLAM定位却存在问题,不同于机器人,无人车的运动是长距离的,大开放环境的。在长距离的运动中,随着距离的增大,SLAM定位的偏差也会逐渐增大,从而造成定位失败。
在实践中,一种有效的无人车定位方法是改变原来SLAM中的扫描匹配类算法,具体来说,我们不再在定位的同时制图,而是事先使用传感器如激光雷达对区域构建点云地图,通过程序和人工的处理将一部分“语义”添加到地图中(例如车道线的具体标注,路网,红绿灯的位置,当前路段的交通规则等等),这个包含了语义的地图就是我们无人驾驶车的 高精度地图(HD Map) 。实际定位的时候,使用当前激光雷达的扫描和事先构建的高精度地图进行点云匹配,确定我们的无人车在地图中的具体位置,这类方法被统称为扫描匹配方法(Scan Matching),扫描匹配方法最常见的是迭代最近点法(Iterative Closest Point ,ICP),该方法基于当前扫描和目标扫描的距离度量来完成点云配准。
除此以外, 正态分布变换(Normal Distributions Transform,NDT) 也是进行点云配准的常用方法,它基于点云特征直方图来实现配准。基于点云配准的定位方法也能实现10厘米以内的定位精度。虽然点云配准能够给出无人车相对于地图的全局定位,但是这类方法过于依赖事先构建的高精度地图,并且在开放的路段下仍然需要配合GPS定位使用,在场景相对单一的路段(如高速公路),使用GPS加点云匹配的方法相对来说成本过高。
拓展阅读: L4 自动驾驶中感知系统遇到的挑战及解决方案
浅析自动驾驶的重要一环:感知系统发展现状与方向
无人车的规划模块分为三层设计:任务规划,行为规划和动作规划,其中,任务规划通常也被称为路径规划或者路由规划(Route Planning),其负责相对顶层的路径规划,例如起点到终点的路径选择。 我们可以把我们当前的道路系统处理成有向网络图(Directed Graph Network),这个有向网络图能够表示道路和道路之间的连接情况,通行规则,道路的路宽等各种信息,其本质上就是我们前面的定位小节中提到的高精度地图的“语义”部分,这个有向网络图被称为路网图(Route Network Graph),如下图所示:
这样的路网图中的每一个有向边都是带权重的,那么,无人车的路径规划问题,就变成了在路网图中,为了让车辆达到某个目标(通常来说是从A地到B地),基于某种方法选取最优(即损失最小)的路径的过程,那么问题就变成了一个有向图搜索问题,传统的算法如迪科斯彻算法(Dijkstra’s Algorithm)和A 算法(A Algorithm)主要用于计算离散图的最优路径搜索,被用于搜索路网图中损失最小的路径。
行为规划有时也被称为决策制定(Decision Maker),主要的任务是按照任务规划的目标和当前的局部情况(其他的车辆和行人的位置和行为,当前的交通规则等),作出下一步无人车应该执行的决策,可以把这一层理解为车辆的副驾驶,他依据目标和当前的交通情况指挥驾驶员是跟车还是超车,是停车等行人通过还是绕过行人等等。
行为规划的一种方法是使用包含大量动作短语的复杂有限状态机(Finite State Machine,FSM)来实现,有限状态机从一个基础状态出发,将根据不同的驾驶场景跳转到不同的动作状态,将动作短语传递给下层的动作规划层,下图是一个简单的有限状态机:
如上图所示,每个状态都是对车辆动作的决策,状态和状态之间存在一定的跳转条件,某些状态可以自循环(比如上图中的循迹状态和等待状态)。虽然是目前无人车上采用的主流行为决策方法,有限状态机仍然存在着很大的局限性:首先,要实现复杂的行为决策,需要人工设计大量的状态;车辆有可能陷入有限状态机没有考虑过的状态;如果有限状态机没有设计死锁保护,车辆甚至可能陷入某种死锁。
通过规划一系列的动作以达到某种目的(比如说规避障碍物)的处理过程被称为动作规划。通常来说,考量动作规划算法的性能通常使用两个指标:计算效率(Computational Efficiency)和完整性(Completeness),所谓计算效率,即完成一次动作规划的处理效率,动作规划算法的计算效率在很大程度上取决于配置空间(Configuration Space),如果一个动作规划算法能够在问题有解的情况下在有限时间内返回一个解,并且能够在无解的情况下返回无解,那么我们称该动作规划算法是完整的。
配置空间:一个定义了机器人所有可能配置的集合,它定义了机器人所能够运动的维度,最简单的二维离散问题,那么配置空间就是[x, y],无人车的配置空间可以非常复杂,这取决于所使用的运动规划算法。
在引入了配置空间的概念以后,那么无人车的动作规划就变成了:在给定一个初始配置(Start Configuration),一个目标配置(Goal Configuration)以及若干的约束条件(Constraint)的情况下,在配置空间中找出一系列的动作到达目标配置,这些动作的执行结果就是将无人车从初始配置转移至目标配置,同时满足约束条件。在无人车这个应用场景中,初始配置通常是无人车的当前状态(当前的位置,速度和角速度等),目标配置则来源于动作规划的上一层——行为规划层,而约束条件则是车辆的运动限制(最大转角幅度,最大加速度等)。显然,在高维度的配置空间来动作规划的计算量是非常巨大的,为了确保规划算法的完整性,我们不得不搜索几乎所有的可能路径,这就形成了连续动作规划中的“维度灾难”问题。目前动作规划中解决该问题的核心理念是将连续空间模型转换成离散模型,具体的方法可以归纳为两类:组合规划方法(Combinatorial Planning)和基于采样的规划方法(Sampling-Based Planning)。
运动规划的组合方法通过连续的配置空间找到路径,而无需借助近似值。由于这个属性,它们可以被称为精确算法。组合方法通过对规划问题建立离散表示来找到完整的解,如在Darpa城市挑战赛(Darpa Urban Challenge)中,CMU的无人车BOSS所使用的动作规划算法,他们首先使用路径规划器生成备选的路径和目标点(这些路径和目标点事融合动力学可达的),然后通过优化算法选择最优的路径。另一种离散化的方法是网格分解方法(Grid Decomposition Approaches),在将配置空间网格化以后我们通常能够使用离散图搜索算法(如A*)找到一条优化路径。
基于采样的方法由于其概率完整性而被广泛使用,最常见的算法如PRM(Probabilistic Roadmaps),RRT(Rapidly-Exploring Random Tree),FMT(Fast-Marching Trees),在无人车的应用中,状态采样方法需要考虑两个状态的控制约束,同时还需要一个能够有效地查询采样状态和父状态是否可达的方法。
自动驾驶汽车的车辆控制技术旨在环境感知技术的基础之上,根据决策规划出目标轨迹,通过纵向和横向控制系统的配合使汽车能够按照跟踪目标轨迹准确稳定行驶,同时使汽车在行驶过程中能够实现车速调节、车距保持、换道、超车等基本操作。
互联网科技公司主要做软件,以工程机上层为主;而车厂其实以下层的组装为主,也就是OEM,也不是那么懂车。像制动、油门和转向等这些领域,话语权依然集中在博世、大陆这样的Tier 1身上。
自动驾驶控制的核心技术是车辆的纵向控制和横向控制技术。纵向控制,即车辆的驱动与制动控制;横向控制,即方向盘角度的调整以及轮胎力的控制。实现了纵向和横向自动控制,就可以按给定目标和约束自动控制车运行。所以,从车本身来说,自动驾驶就是综合纵向和横向控制。
车辆纵向控制是在行车速度方向上的控制,即车速以及本车与前后车或障碍物距离的自动控制。巡航控制和紧急制动控制都是典型的自动驾驶纵向控制案例。这类控制问题可归结为对电机驱动、发动机、传动和制动系统的控制。各种电机-发动机-传动模型、汽车运行模型和刹车过程模型与不同的控制器算法结合,构成了各种各样的纵向控制模式,典型结构如图所示。
此外,针对轮胎作用力的 滑移率控制 是纵向稳定控制中的关键部分。滑移率控制系统通过控制车轮滑移率调节车辆的纵向动力学特性来防止车辆发生过度驱动滑移或者制动抱死,从而提高车辆的稳定性和操纵性能。制动防抱死系统(antilock brake system)简称 ABS,在汽车制动时,自动控制制动器制动力的大小,使车轮不被抱死,处于边滚边滑(滑移率在 20%左右)的状态,以保证地面能够给车轮提供最大的制动作用力值。一些智能滑移率控制策略利用充足的环境感知信息设计了随道路环境变化的车轮最有滑移率调节器,从而提升轮胎力作用效果。
智能控制策略,如模糊控制、神经网络控制、滚动时域优化控制等,在纵向控制中也得到广泛研究和应用,并取得了较好的效果,被认为是最有效的方法。
而传统控制的方法, 如PID控制和前馈开环控制 ,一般是建立发动机和汽车运动过程的近似线形模型,在此基础上设计控制器,这种方法实现的控制,由于对模型依赖性大及模型误差较大,所以精度差、适应性差。从目前的论文和研究的项目看,寻求简单而准确的电机-发动机-传动、刹车过程和汽车运动模型,以及对随机扰动有鲁棒性和对汽车本身性能变化有适应性的控制器仍是研究的主要内容。
车辆横向控制指垂直于运动方向上的控制,对于汽车也就是转向控制。目标是控制汽车自动保持期望的行车路线,并在不同的车速、载荷、风阻、路况下有很好的乘坐舒适性和稳定性。
车辆横向控制主要有两种基本设计方法,一种是基于驾驶员模拟的方法;另一种是给予汽车横向运动力学模型的控制方法。基于驾驶员模拟的方法,一种策略是使用较简单的运动力学模型和驾驶员操纵规则设计控制器;另一策略是用驾驶员操纵过程的数据训练控制器获取控制算法。基于运动力学模型的方法要建立较精确的汽车横向运动模型。典型模型是所谓单轨模型,或称为自行车模型,也就是认为汽车左右两侧特性相同。横向控制系统基本结构如下图。控制目标一般是车中心与路中心线间的偏移量,同时受舒适性等指标约束。
自动驾驶使用的是什么技术
【太平洋汽车网】自动驾驶本身就是一项技术,而且自动驾驶分为好几个等级,每个等级的原理和所使用的技术又是不同的。自动驾驶需要通过以下四步才可以完成:信息收集、分析识别、行动决策、设备控制。
什么是WaymoRobotTaxi激光雷达方案Waymo在RobotTaxi上耕耘了很长一段时间,随着在美国向公众开放没有安全员的无人驾驶出租车服务,也是全球首次向公众开放完全无人驾驶出租车。Waymo的技术核心是围绕激光雷达的一整套系统套件。
图2Waymo的架构从技术层面来看,自动驾驶方面的关键技术不仅包含汽车本身的硬件/软件平台、系统安全平台、整车通信平台、核心算法等基础技术,也包括云控平台的系统架构和核心算法,最重要的核心器件是中央处理器、云端域控制器等。这里不仅包括面向自动驾驶配套的集成化的主干网加多域控制的新型电子电器架构作为基础。针对智能驾驶控制部分,L2级及以下采用基于MCU的多ECU分布式控制方式,而L3以上则必须采用基于高性能SOC(SystemonChip)构建的域控制器的集中控制策略。以环境感知数据、GPS信息、车辆实时数据和V2X交互数据等作为输入,基于环境感知定位、路径决策规划和车辆运动控制等核心控制算法,输出驱动、传动、转向和制动等执行控制指令,实现车辆的自动控制,并通过人机交互界面(如仪表)实现自动驾驶信息的人机交互。为了实现智能驾驶系统高性能和高安全性的控制需求,汇集了多项关键技术:包括基础硬件/软件平台技术、系统安全平台技术、整车通信平台技术、云计算平台技术、核心控制算法技术等。
图3自动驾驶相关的核心软件内核目前在自动驾驶领域,传统车企和科技企业合作是一个很有意思的趋势。例如在华为合作方面中,ARCFOX极狐的阿尔法S华为HI版是其首款落地的产品,也是围绕自动驾驶配置激光雷达的一款车型,是面向城市道路自动驾驶能力的设计的车型,覆盖多个场景如城区、高速、停车场的全场景点到点通行,从使用特性的设计方面,是尝试让用户可以拥有从小区车库到公司车库的连续自动驾驶体验的一款作品。
自动驾驶及关键技术难点
自动驾驶是汽车行业新一轮的技术革命,推动着传统汽车行业快速转型升级,是未来汽车的发展趋势。自动驾驶技术有利于改善汽车交通安全、提高交通运输效率、实现节能减排、促进产业转型等。《中国制造2025》规划中已将智能网联汽车列入未来十年国家智能制造发展的重点领域,明确指出到2020年要掌握智能辅助驾驶总体技术及各项关键技术,到2025年要掌握自动驾驶总体技术及各项关键技术。本文将介绍自动驾驶等级分类标准、自动驾驶软硬件架构图以及自动驾驶涉及到的关键技术等。
美国汽车工程师协会根据汽车智能化程度将自动驾驶分为L0-L5共6个等级:其中L0为无自动化(No Automation, NA),即传统汽车,驾驶员执行所有的操作任务,例如转向、制动、加速、减速或泊车等;L1为驾驶辅助(Driving Assistant, DA),即能为驾驶员提供驾驶预警或辅助等,例如对方向盘或加速减速中的一项操作提供支持,其余由驾驶员操作;L2为部分自动化(Partial Automation,PA),车辆对方向盘和加减速中的多项操作提供驾驶,驾驶员负责其他驾驶操作;L3为条件自动化(Conditional Automation,CA),即由自动驾驶系统完成大部分驾驶操作,驾驶员需要集中注意力以备不时之需;L4为高度自动化(High Automation,HA),由车辆完成所有驾驶操作,驾驶员不需要集中注意力,但限定道路和环境条件;L5为完全自动化(Full Automation, FA),在任何道路和环境条件下,由自动驾驶系统完成所有的驾驶操作,驾驶员不需要集中注意力。
自动驾驶汽车的软硬件架构如图2所示,主要分为环境认知层、决策规划层、控制层和执行层。环境认(感)知层主要通过激光雷达、毫米波雷达、超声波雷达、车载摄像头、夜视系统、GPS、陀螺仪等传感器获取车辆所处环境信息和车辆状态信息,具体来说包括:车道线检测、红绿灯识别、交通标识牌识别、行人检测、车辆检测、障碍物识别和车辆定位等;决策规划层则分为任务规划、行为规划和轨迹规划,根据设定的路线规划、所处的环境和车辆自身状态等规划下一步具体行驶任务(车道保持、换道、跟车、超车、避撞等)、行为(加速、减速、转弯、刹车等)和路径(行驶轨迹);控制层及执行层则基于车辆动力学系统模型对车辆驱动、制动、转向等进行控制,使车辆跟随所制定的行驶轨迹。
自动驾驶技术涉及较多的关键技术,本文主要介绍环境感知技术、高精度定位技术、决策与规划技术和控制与执行技术。
环境感知指对于环境的场景理解能力,例如障碍物的类型、道路标志及标线、行车车辆的检测、交通信息等数据的语言分类。定位是对感知结果的后处理,通过定位功能从而帮助车辆了解其相对于所处环境的位置。环境感知需要通过传感器获取大量的周围环境信息,确保对车辆周围环境的正确理解,并基于此做出相应的规划和决策。
自动驾驶车辆常用的环境感知传感器包括:摄像头、激光雷达、毫米波雷达、红外线和超声波雷达等。摄像头是自动驾驶车辆最常用、最简单且最接近人眼成像原理的环境感知传感器。通过实时拍摄车辆周围的环境,采用CV技术对所拍摄图像进行分析,实现车辆周围的车辆和行人检测以及交通标志识别等功能。摄像头的主要优点在于其分辨率高、成本低。但在夜晚、雨雪雾霾等恶劣天气下,摄像头的性能会迅速下降。此外摄像头所能观察的距离有限,不擅长于远距离观察。毫米波雷达也是自动驾驶车辆常用的一种传感器,毫米波雷达是指工作在毫米波段(波长1-10 mm ,频域30-300GHz)的雷达,其基于ToF技术(Time of Flight)对目标物体进行检测。毫米波雷达向外界连续发送毫米波信号,并接收目标返回的信号,根据信号发出与接收之间的时间差确定目标与车辆之间的距离。因此,毫米波雷达主要用于避免汽车与周围物体发生碰撞,如盲点检测、避障辅助、泊车辅助、自适应巡航等。毫米波雷达的抗干扰能力强,对降雨、沙尘、烟雾等离子的穿透能力要比激光和红外强很多,可全天候工作。但其也具有信号衰减大、容易受到建筑物、人体等的阻挡,传输距离较短,分辨率不高,难以成像等不足。激光雷达也是通过ToF技术来确定目标位置与距离的。激光雷达是通过发射激光束来实现对目标的探测,其探测精度和灵敏度更高,探测范围更广,但激光雷达更容易受到空气中雨雪雾霾等的干扰,其高成本也是制约其应用的主要原因。车载激光雷达按发射激光束的数量可分为单线、4线、8线、16线和64线激光雷达。可以通过下面这个表格(表1),对比主流传感器的优势与不足。
自动驾驶环境感知通常采用“弱感知+超强智能”和“强感知+强智能”两大技术路线。其中“弱感知+超强智能”技术是指主要依赖摄像头与深度学习技术实现环境感知,而不依赖于激光雷达。这种技术认为人类靠一双眼睛就可以开车,那么车也可以靠摄像头来看清周围环境。如果超强智能暂时难以达到,为实现无人驾驶,那就需要增强感知能力,这就是所谓的“强感知+强智能”技术路线。相比“弱感知+超强智能”技术路线,“强感知+强智能”技术路线的最大特征就是增加了激光雷达这个传感器,从而大幅提高感知能力。特斯拉采用“弱智能+超强智能”技术路线,而谷歌Waymo、百度Apollo、Uber、福特汽车等人工智能企业、出行公司、传统车企都采用“强感知+强智能”技术路线。
定位的目的是获取自动驾驶车辆相对于外界环境的精确位置,是自动驾驶车辆必备的基础。在复杂的地市道路行驶,定位精度要求误差不超过10 cm。例如:只有准确知道车辆与路口的距离,才能进行更精确的预判和准备;只有准确对车辆进行定位,才能判断车辆所处的车道。如果定位误差较高,严重时会造成交通完全事故。GPS是目前最广泛采用的定位方法,GPS精度越高,GPS传感器的价格也越昂贵。但目前商用GPS技术定位精度远远不够,其精度只有米级且容易受到隧道遮挡、信号延迟等因素的干扰。为了解决这个问题,Qualcomm开发了基于视觉增强的高精度定位(VEPP)技术,该技术通过融合GNSS全球导航卫星、摄像头、IMU惯性导航和轮速传感器等多个汽车部件的信息,通过各传感器之间的相互校准和数据融合,实现精确到车道线的全球实时定位。
决策规划是自动驾驶的关键部分之一,它首先是融合多传感器信息,然后根据驾驶需求进行任务决策,接着能够在避开存在的障碍物前提之下,通过一些特定的约束条件,规划出两点之间多条可以选择的安全路径,并在这些路径当中选择一条最优的路径,作为车辆行驶轨迹,那就是规划。按照划分的层面不同,可以分为全局规划和局部规划两种,全局规划是由获取到的地图信息,规划出一条在特定条件之下的无碰撞最优路径。例如,从上海到北京有很多条路,规划处一条作为行驶路线即为全局规划。如栅格法、可视图法、拓扑法、自由空间法、神经网络法等静态路径规划算法。局部规划的则是根据全局的规划,在一些局部环境信息的基础之上,能够避免碰撞一些未知的障碍物,最终达到目的目标点的过程。例如,在全局规划好的上海到北京的那条路线上会有其他车辆或者障碍物,想要避过这些障碍物或者车辆,需要转向调整车道,这就是局部路径规划。局部路径规划的方法包括:人工势场法、矢量域直方图法、虚拟力场法、遗传算法等动态路径规划算法等。
决策规划层是自主驾驶系统,智能性的直接体现,对车辆的行驶安全性和整车起到了决定性的作用,常见的决策规划体系结构,有分层递进式,反应式,以及二者混合式。
分层递进式体系结构,就是一个串联系统的结构,在该系统当中,智能驾驶系统的各模块之间次序分明,上一个模块的输出即为下一模块的输入,因此又称为感知规划行动结构。但这种结构可靠性并不高,一旦某个模块出现软件或者硬件故障,整个信息流就会受到影响,整个系统很有可能发生崩溃,甚至处于瘫痪状态。
反应式体系结构采用并联的结构,控制层都可以直接基于传感器的输入进行决策,因此它所产生的动作就是传感数据直接作用的一个结果,可以突出感知动作的特点,适用于完全陌生的环境。反应式体系结构中的许多行为主要涉及成为一个简单的特殊任务,所以感觉规划控制可以紧密的结合在一块,占用的储存空间并不大,因而可以产生快速的响应,实时性比较强,同时每一层只需要负责系统的某一个行为,整个系统可以方便灵活的实现低层次到高层次的一个过渡,而且如若其中一个模块出现了预料之外的故障,剩下的层次,仍然可以产生有意义的动作,系统的鲁棒性得到了很大的提高,难点在于,由于系统执行动作的灵活性,需要特定的协调机制来解决各个控制回路,同意执行机构争夺之间的冲突,以便得到有意义的结果。
分层递阶式系统的一个结构和反应式体系的结构,都各自有优劣,都难以单独的满足行驶环境复杂多变的使用要求,所以越来越多的行业人士开始研究混合式的体系结构,将两者的优点进行有效的结合,在全局规划的层次上生成面向目标定义的分层式递阶行为,在局部规划的层面上就生成面向目标搜索的反应式体系的行为。
自动驾驶的控制核心技术就是车辆的纵向控制,横向控制,纵向控制及车辆的驱动和制动控制,而横向控制的就是方向盘角度的调整以及轮胎力的控制,实现了纵向和横向自动控制,就可以按给定目标和约束自动控制车运行。
车辆按照纵向控制是在行车速度方向上的控制,即车速以及本车与前后车或障碍物距离的自动控制。巡航控制和紧急制动控制都是典型的自动驾驶纵向控制案例。这类控制问题可归结为对电机驱动、发动机、传动和制动系统的控制。各种电机-发动机-传动模型、汽车运行模型和刹车过程模型与不同的控制器算法结合,构成了各种各样的纵向控制模式。
车辆的横向控制就是指垂直于运动方向的控制,目标是控制汽车自动保持期望的行车路线,并在不同的车速、载荷、风阻、路况下有很好的乘坐舒适和稳定。车辆横向控制主要有两种基本设计方法,一种是基于驾驶员模拟的方法(一种是使用用较简单的动力学模型和驾驶员操纵规则设计控制器;另一种是用驾驶员操纵过程的数据训练控制器获取控制算法);另一种是给予汽车横向运动力学模型的控制方法(需要建立精确的汽车横向运动模型。典型模型如单轨模型,该模型认为汽车左右两侧特性相同)。
除上述介绍的环境感知、精准定位、决策规划和控制执行之外,自动驾驶汽车还涉及到高精度地图、V2X、自动驾驶汽车测试等关键技术。自动驾驶技术是人工智能、高性能芯片、通信技术、传感器技术、车辆控制技术、大数据技术等多领域技术的结合体,落地技术难度大。除此之外,自动驾驶技术落地,还要建立满足自动驾驶要求的基础交通设施,并考虑自动驾驶方面的法律法规等。
参考文献:
1. 张放. 极限工况下自动驾驶车辆的轨迹规划与运动控制 [博士]: 清华大学; 2018.
2. 陈文强. 基于复杂工况的高精准可预测自动驾驶环境认知方法 [博士]: 清华大学; 2018.
3. 张欣. 无人驾驶感知辅助系统的研究与仿真实现 [硕士]: 北京交通大学; 2019.
4. 陈延真. 无人驾驶环境感知系统及障碍物检测研究 [硕士]: 天津大学; 2018.
自动驾驶基础软件架构的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于自动驾驶基础架构部、自动驾驶基础软件架构的信息别忘了在本站进行查找喔。