众所周知,处座是个老司机(呃……一般指大数据和人工智能领域)开了这么久的车,今天想和大家聊聊车和开车(神秘的围笑)。2017年11月9日,是值得人类铭记的一天:经过8年的研发,Waymo(谷歌母公司Alphabet旗下自动驾驶公司)放出大招,测试车上终于没了安全驾驶员,做到了“无人”驾驶。作为关心AI行业应用的产品经理,处座搜集到了该事件的高清视频供大家学习交流,窥探自动驾驶技术的现状和未来。请抓紧时间上车!
▲
Google自动驾驶车辆WayMo宣传视频
与此同时,有些人认为,自动驾驶带来一些负面后果:
▲
别开太快了,笨蛋,刹车!当心左边的自行车!
▲
自动驾驶技术干掉了公交、卡车、出租司机以及..个人隐私!
虽然上述漫画调侃了自动驾驶汽车的不足,但有专家预测,2030年前后,自动驾驶汽车将在美国公路上成为常态。
毫无疑问,自动驾驶汽车肯定是未来汽车演化的重要方向,而人工智能在其中又将扮演不可或缺的角色。那时候,汽车不仅仅是交通工具,它还是懂你的贴心机器人,为出行提供各种方便和乐趣。
一、自动驾驶技术的未来
在不远的将来,中国的城市街道和城市间高速公路上会充满成群的、紧密分布的自动驾驶汽车。像大海中的鱼群一样,自动驾驶汽车的车流会展现出惊人的防冲撞能力,在充满行人的城市街道上机智而快速的穿梭,在漫长而繁忙的高速公路上以经济低能耗的方式灵活停靠。有些车会携带几名乘客,还有些车则完全没有乘客,那是它们在送外卖或者去学校接小朋友放学。一些更美好或令人吃惊的未来事实如下:
1.1
卡车、乘客和安全
公路运输的卡车均为自动驾驶,横冲直撞的超载超速大货车销声匿迹,由于不用司机,公路货运物流成本大幅下跌。
送孩子、老人和视力障碍人士回家,并配有车内监控和语音服务。自动驾驶可能比坐陌生人开的车更让人安心。
高速公路管理局专门为自动驾驶卡车专门提供夜间行驶时间和车道。持续的补给、电池更换站和移动充电汽车使得自动驾驶的卡车得以在路上一直行驶。
2016年中国交通死亡人数高达6.3万人,因司机错误造成的事故超过一半以上。自动驾驶汽车将大幅减少司机的错误率使,使交通事故死亡率减少2/3以上,车险不再需要对驾驶员保险,改为担保汽车和汽车制造商,保险费用大幅下降。
1.2
工作、道路和环境
自驾成为一种轻松舒适的旅行方式,“卧铺车辆”成为一种新型、较便宜的短途旅行方式,乘短途飞机和火车旅行的人数将会减少。
随着自动驾驶车辆自动辨认车辆和交通状况,交叉路口的红绿灯变得不再那么必要。公路车道会根据车流多少确定车道宽窄。自动驾驶专属高速公路可允许更快的车速。汽车使用寿命更长,百公里能耗更低
自动驾驶车辆的燃料效率远高于手动驾驶车辆,通过更顺畅的加速、减速,不仅节省能源,而且降低了各种污染物的排放,自动驾驶汽车通常是共享使用,通过乘客拼车,减少了路上行驶的一人一车,空气质量也将大大改善。
因为车辆更加安全,汽车厂商无需再使用笨重的钢铁材料制造车身,使用更轻便的复合材料后,汽车能源消耗进一步降低,汽车制造消耗的资源也大幅减少。
那么,从目前全世界这么拥堵、危险、高污染,糟糕的交通状况达到上面描述的美好未来,自动驾驶技术是怎么一步步地实现的呢?在详解现代和未来自动驾驶技术前,我们先了解一下自动驾驶功能的分级。2013年,美国国家公路交通安全管理局(NHTSA)发布了汽车自动化的五级标准,将自动驾驶分为5个级别:0~4级,如下图所示:
目前Tesla在其车型上基本实现的是Level2:部分自动化。奥迪最新旗舰车型A8实现了L3阶段的自动驾驶
,
在自动驾驶技术方面,特斯拉和奥迪属于按部就班型,采取循序渐进的方式,先从L2级别的辅助驾驶做起。而谷歌恰恰相反,选择了一步到位直接研发L4级别完全自动驾驶技术。但无论是何种方式,其目的最终都是实现完全自动驾驶技术。
▲
谷歌自动驾驶汽车构造示意图
今天,就让处座带大家解读自动驾驶的种种细节,让你迅速掌握自动驾驶技术的现状和未来。
二、自动驾驶系统介绍
目前为止,各大公司自动驾驶汽车的具体配置可能千差万别,但大多数车型都会安装数个数码相机镜头、一个雷达传感器以及一台激光雷达来“看”车的位置;车载GPS和惯性测量单元IMU(Inertial measurement Unit)协同工作来弥补GPS的定位误差;一台车载电脑将传感器和GPS信息汇总后,传递到包含各个交叉道路和红绿灯信息的高精度数字地图上,形成名为Occupancy Grid的占据栅格数字模型来描述汽车外部世界。
整个系统也可以看作是三部分组成:算法软件端、客户端和云端。算法软件端包括面向传感、感知和决策等关键步骤的算法软件;客户端包括车辆机器人操作系统(ROS)和硬件平台;云端包括数据存储、模拟、高精度地图绘制以及深度学习模型训练。
▲
自动驾驶系统架构图
2.1
算法软件端
算法软件由三部分组成:一、传感,从传感器原始数据中提取面对的各类外部对象信息;二、感知,定位汽车所在位置及所处环境;三、决策,选择行驶方法和路线,安全高效抵达目的地。
▲
自动驾驶算法软件架构
1、传感
一台自动驾驶汽车上装备有不同类型的传感器,下面这个图基本上显示出了市面上常用的所有传感器,不过最常用的传感器还是GPS/IMU、激光雷达LIDAR、摄像头和电磁波雷达/声呐。
GPS/IMU是自动驾驶车辆的定位设备。GPS是一个相对准确的全球定位用传感器,但是它的更新频率太低,只有10Hz(每秒10次更新),对于高速行驶的汽车这个频率不足以提供实时的位置更新。所以引入更新频率高达200赫兹的IMU(惯性测量单元里程计、加速计、陀螺仪、指南针Inertial measurement unit),通过二者整合,可以提供准确又足够实时的位置更新。
激光雷达LIDAR(Light Detection and Ranging)可以用来进行三维点阵空间识别、定位与避障。激光雷达的准确率非常高,在自动驾驶汽车设计中如使用则作为主传感器使用。以Velodyne 64束激光雷达为例,它可以完成10赫兹旋转每秒读数130万次。它的缺点是成本过高,高达8000美元/台。
摄像头广泛用于物体识别与追踪等场景,在车道线检测、红绿灯侦测,人行道检测中都以摄像头为解决方案。摄像头成本低廉,
自动驾驶汽车
常在车周身边安装至少8个,同时工作时,将产生1.8GB/秒的巨额数据。
电磁波雷达与声呐把电磁波或超声波能量发射到空间中某一方向,通过物体的反射波获取该物体的有关信息,包括距离、速度、方位、高度等。电磁波雷达与声呐是避障的最后一道保障、产生的数据无需过多处理,可实现车辆转向、刹车、预张紧安全带等紧急功能。
获得传感信息后,数据被推送到感知子系统,以了解自动驾驶汽车的周边环境。感知子系统主要完成:定位、物体识别与跟踪功能。
非高精度定位可以由GPU和IMU协同完成。作为补充方案摄像头也被用于定位,可通过立体图像获得GPS/IMU在隧道等封闭环境中无法获得的位置信息。而借助大量粒子滤波的激光雷达LIDAR通常作为车辆定位的主传感器,可以在10厘米精度达到实施定位效果。由于激光雷达易受到降雨雾霾等天气因素影响,通常需要和其他传感融合使用,扬长避短,完成最终实时可靠精确的定位。
▲
定位中的多传感器融合
激光雷达LIDAR可以提供精准的深度信息,因此常被用于自动驾驶中执行物体识别与追踪的任务。而近年来逐渐成熟的深度学习技术可以达到显著的物体识别和追踪精度。卷积神经网络(CNN)是一类在物体识别中广泛应用的深度神经网络:1,卷积层用不同的过滤器从输入图像中提取特征;2,激活层决定是否启动神经元;3,汇聚层亚索特征映射图占用的空间以减少参数数目,降低运算量。一旦某物体被CNN识别出来,下一步将自动预测它的运行轨迹并追踪物体。
▲
物体识别与跟踪
物体追踪可用于追踪临近行驶的车辆和路上行人,以确保自动驾驶汽车在行驶途中不会与其他移动的物体发生碰撞。深度学习技术已展示出极大优势,离线的训练过程可以从辅助的自然图像中学习图像的共有属性,以避免视点和车辆位置变化造成的偏移,离线训练好的模型可以直接用在在线物体追踪中。
在决策阶段,行为预测、路径规划和避障机制三者结合起来实时地完成自动驾驶动作规划。
在车辆驾驶中考验的主要是司机如何应对其他行驶车辆或行人的可能行为,特别是在多车道或者红绿灯变灯时,司机的预测决定了下一秒行车的行为。因此在自动驾驶系统中,决策模块如何根据周边车辆的行驶状况决定下一秒行为尤为重要。为了预测其他车辆的行为,可以使用随机模型产生这些车辆的可达位置集合,并用概率分布的方法预测每个可达位置集的相关概率,如下图所示:
首先将多个传感器的输出信息转换到统一的坐标系下:选用原点固定于车头的右手坐标系,其中x方向沿着车辆行进方向。
自车坐标系:拿出你的右手,以大拇指 → 食指 → 中指 的顺序开始念 X、Y、Z,然后把手握成如下形状:把三个轴的交点(食指根部)放在汽车后轴中心,Z轴指向车顶,X轴指向车辆前进方向。
有了多个传感器的融合数据后,便可以做路径规划。规划包含纵向控制和横向控制。纵向控制即速度控制,表现为 什么时候加速,什么时候制动。横向控制即行为控制,表现为 什么时候换道,什么时候超车等。
自动驾驶至少使用2层级的避障机制:第一是基于交通状况预测的前瞻层。该层基于现有交通状况拥堵、车速等,估计碰撞发生时间和最短避障距离等参数,对本地路径重新规划;第二是实时反应层利用雷达数据,一旦侦测到路径前方障碍物,则立即执行避障操作。
2.2
用户端系统
我们以国内百度开源的Apollo2.0自动驾驶框架为例,
它的整个框架包括了基本如下的软件:
calibration:校准模块,使用前必须对系统进行校准和标定,包括激光雷达与摄像头、毫米波雷达与摄像头等;
canbus:管理CAN卡(CAN是工控机与汽车底盘的专门交互语言),把接受到的信号传递给相应模块,同时将Control模块的命令下发到车辆;
control:主控制模块,基于车道规划和车辆当前状态,输出转向、加速和制动控制信号到CAN卡;
data:收集、存储、处理收集到的各种数据;
drivers:此模块包含CAN卡、激光雷达、毫米波雷达、GPS以及摄像头等相关设备的驱动
e2e:端到端深度学习。将来源于传感器的原始数据输入到深度神经网络,直接生成车辆控制指令对车辆进行横向控制和纵向控制,中间没有人工参与的逻辑程序;
localization:车辆定位服务;map:地图;monitor:此模块用于监测硬件状态及整个系统的健康程度;
perception: 依靠摄像头数据以及激光雷达和毫米波雷达、高精度地图的数据,输出3D的障碍物信息,红绿灯等交通信号。将障碍物标注为机动车、非机动车、行人和其他;
planning:根据车辆位置和车辆状态、地图、障碍物、导航信息等计算具体的车道;
prediction:根据障碍物的位置、航向、速度、加速度计算障碍物的可能轨迹
routing:路径规划,根据地图和起点终点位置计算出具体的导航信息;
根据这些模块,可以大概看出整体流程了:首先,用户输入目的地,routing模块就可以根据终点位置计算出具体的导航信息。激光雷达、毫米波雷达和摄像头拍摄到的数据配合高精度地图由perception模块计算出3D的障碍物信息并识别交通标志及交通信号,这些数据进入prediction模块,计算出障碍物的可能轨迹,如此就可以结合以上信息并根据车辆定位模块localization提供的车辆位置由planning模块得到车辆应该走的具体车道。得到车道后车辆control模块结合车辆的当前状态计算加速、刹车和方向的操作信号,此信号进入CAN卡后输出到车内,如此实现了车辆的自动驾驶。整个流程中,monitor模块会及时监测硬件及系统的健康状况,出现问题肯定就会中止驾驶过程。对于驾驶中的信息,用户可以通过前端dreamview来查看,如下界面:
既然要做自动驾驶,汽车当然是必不可少的东西。从行业做自动驾驶的经验来看,做开发时,
能不选纯汽油车就别选
。一方面是整个自动驾驶系统所消耗的电量巨大,混动和纯电动在这方面具有明显优势。另一方面是是发动机的底层控制算法相比于电机复杂太多,与其花大量时间在标定和调试底层上,不如直接选用电动车研究更高层的算法。
▲
从控制器塞满后备箱的电动测试车辆到未来的产品化呆萌小车
在前期算法预研阶段,推荐使用
工控机(Industrial PC,IPC)
作为最直接的控制器解决方案。因为工控机相比于嵌入式设备更稳定、可靠,社区支持及配套的软件也更丰富。百度开源的Apollo 2.0推荐了一款包含GPU的工控机,
如下图。
当算法研究得较为成熟时,就可以将嵌入式系统作为控制器,比如Audi和TTTech共同研发的
zFAS
,目前已经应用在最新款Audi A8上量产车上了。
工控机与汽车底盘的交互必须通过专门的语言——CAN。从底盘获取当前车速及方向盘转角等信息,需要解析底盘发到CAN总线上的数据;工控机通过传感器的信息计算得到方向盘转角以及期望车速后,也要通过CAN卡将消息转码成底盘可以识别的信号,底盘进而做出响应。
全球定位系统(GPS)+惯性测量单元(IMU)+感知传感器
前面已经谈过各类车载传感器,这里就不再赘述了。
2.3
云平台