5G 时代自动驾驶有什么新机遇?需要学习哪些知识?

2019-12-10 16:25:37 浏览数 (1)

近日,腾讯无线网络与物联网技术负责人李秋香与高校科研教授、产业链、运营商等各行业的嘉宾一起参与了知乎「 科技共振之 5G 」活动,除了专业的5G探讨,也聊了不少和开发者们息息相关的问题。基于此,腾讯云开发者社区联手知乎科技,从知乎超过 10000 条 5G 相关问答中精选内容落地社区专题「 共探 5G 」。

本文为相关“ 5G 时代自动驾驶有什么新机遇?需要学习哪些知识?”的精华问答分享。

一、自动驾驶汽车涉及哪些技术?

陈光:Google从2009年开始做自动驾驶,到现在已有8个年头。8个年头的技术积累还无法将自动驾驶技术量产落地,可见自动驾驶技术并不简单。

自动驾驶是一个庞大而且复杂的工程,涉及的技术很多,大部分答主仅从软件方面进行了介绍,而且太过细致。我从硬件软件两方面谈一谈自动驾驶汽车所涉及的技术。

硬件

离开硬件谈自动驾驶都是耍流氓。

先看个图,下图基本包含了自动驾驶研究所需要的各种硬件。

图片出处:https://www.e-sciencecentral.org/articles/SC000011141

然而...

这么多传感器并不一定会同时出现在一辆车上。某种传感器存在与否,取决于这辆车需要完成什么样的任务。如果只需要完成高速公路的自动驾驶,类似Tesla 的 AutoPilot 功能,那根本不需要使用到激光传感器;如果你需要完成城区路段的自动驾驶,没有激光传感器,仅靠视觉是很困难的。

自动驾驶系统工程师要以任务为导向,进行硬件的选择和成本控制。

1.汽车

既然要做自动驾驶,汽车当然是必不可少的东西。

从我司做自动驾驶的经验来看,做开发时,能不选纯汽油车就别选

一方面是整个自动驾驶系统所消耗的电量巨大,混动和纯电动在这方面具有明显优势。另一方面是是发动机的底层控制算法相比于电机复杂太多,与其花大量时间在标定和调试底层上,不如直接选用电动车研究更高层的算法。

国内也有媒体专门就测试车辆的选择做过调研。为什么谷歌、苹果不约而同选择这款车?

2.控制器

在前期算法预研阶段,推荐使用工控机(Industrial PC,IPC)作为最直接的控制器解决方案。因为工控机相比于嵌入式设备更稳定、可靠,社区支持及配套的软件也更丰富。

百度开源的Apollo推荐了一款包含GPU的工控机,型号为 Nuvo-5095GC,如下图。

图片出处:Github ApolloAuto

当算法研究得较为成熟时,就可以将嵌入式系统作为控制器,比如Audi和TTTech共同研发的zFAS,目前已经应用在最新款Audi A8上量产车上了。

图片出处:奥迪在 CES 上做了什么?

3.CAN卡

工控机与汽车底盘的交互必须通过专门的语言——CAN。从底盘获取当前车速及方向盘转角等信息,需要解析底盘发到CAN总线上的数据;工控机通过传感器的信息计算得到方向盘转角以及期望车速后,也要通过 CAN卡 将消息转码成底盘可以识别的信号,底盘进而做出响应。CAN卡可以直接安装在工控机中,然后通过外部接口与CAN总线相连。

Apollo使用的CAN卡,型号为 ESD CAN-PCIe/402,如下图。

4.全球定位系统(GPS) 惯性测量单元(IMU)

人类开车,从A点到B点,需要知道A点到B点的地图,以及自己当前所处的位置,这样才能知道行驶到下一个路口是右转还是直行。

无人驾驶系统也一样,依靠GPS IMU就可以知道自己在哪(经纬度),在朝哪个方向开(航向),当然IMU还能提供诸如横摆角速度、角加速度等更丰富的信息,这些信息有助于自动驾驶汽车的定位和决策控制。

Apollo的GPS型号为NovAtel GPS-703-GGG-HV,IMU型号为NovAtel SPAN-IGM-A1

5.感知传感器

相信大家对车载传感器都耳熟能详了。

感知传感器分为很多种,包括视觉传感器、激光传感器、雷达传感器等。

视觉传感器就是摄像头,摄像头分为单目视觉,双目(立体)视觉。比较知名的视觉传感器提供商有以色列的Mobileye,加拿大的PointGrey,德国的Pike等。

激光传感器分为单线,多线一直到64线。每多一线,成本上涨1万RMB,当然相应的检测效果也更好。比较知名的激光传感器提供商有美国的VelodyneQuanergy,德国的Ibeo等。国内有速腾聚创禾赛科技

雷达传感器是车厂Tier1的强项,因为雷达传感器已经在汽车上得到了广泛使用。知名的供应商当然是博世、德尔福、电装等。

6.硬件部分总结

组装一套可以完成某项功能的自动驾驶系统需要及其丰富的经验,并且要对各传感器的性能边界及控制器计算能力了如指掌。优秀的系统工程师能在满足功能的要求下将成本控制在最低,使其量产、落地的可能性更大。

软件

大部分答主已对软件进行了阐述,我也从我的角度介绍以下软件的开发。

软件部分的内容已在我的回答:无人驾驶,个人如何研究? 中进行了介绍。

以下内容前半段为搬运。

软件包含四层:感知、融合、决策、控制。

各个层级之间都需要编写代码,去实现信息的转化,更细化的分类如下。

1.采集

传感器跟我们的PC或者嵌入式模块通信时,会有不同的传输方式。

比如我们采集来自摄像机的图像信息,有的是通过千兆网卡实现的通信,也有的是直接通过视频线进行通信的。再比如某些毫米波雷达是通过CAN总线给下游发送信息的,因此我们必须编写解析CAN信息的代码。

不同的传输介质,需要使用不同的协议去解析这些信息,这就是上文提到的“驱动层”

通俗地讲就是把传感器采集到的信息全部拿到,并且编码成团队可以使用的数据。

2.预处理

传感器的信息拿到后会发现不是所有信息都是有用的。

传感器层将数据以一帧一帧、固定频率发送给下游,但下游是无法拿每一帧的数据去进行决策或者融合的。为什么?

因为传感器的状态不是100%有效的,如果仅根据某一帧的信号去判定前方是否有障碍物(有可能是传感器误检了),对下游决策来说是极不负责任的。因此上游需要对信息做预处理,以保证车辆前方的障碍物在时间维度上是一直存在的,而不是一闪而过。

这里就会使用到智能驾驶领域经常使用到的一个算法——卡尔曼滤波。

3.坐标转换

坐标转换在智能驾驶领域十分重要。

传感器是安装在不同地方的,比如超声波雷达(上图中橘黄色小区域)是布置在车辆周围的;当车辆右方有一个障碍物,距离这个超声波雷达有3米,那么我们就认为这个障碍物距离车有3米吗?

并不一定!因为决策控制层做车辆运动规划时,是在车体坐标系下做的(车体坐标系一般以后轴中心为O点),所以最终所有传感器的信息,都是需要转移到自车坐标系下的。

因此感知层拿到3m的障碍物位置信息后,必须将该障碍物的位置信息转移到自车坐标系下,才能供规划决策使用。

同理,摄像机一般安装在挡风玻璃下面,拿到的数据也是基于摄像机坐标系的,给下游的数据,同样需要转换到自车坐标系下。

什么是自车坐标系?

请拿出你的右手,以大拇指 → 食指 → 中指 的顺序开始念 X、Y、Z。

然后把手握成如下形状:

把三个轴的交点(食指根部)放在自车坐标系后轴中心,Z轴指向车顶,X轴指向车辆前进方向。

各个团队可能定义的坐标系方向不一致,只要开发团队内部统一即可。

4.信息融合

信息融合是指把相同属性的信息进行多合一操作。

比如摄像机检测到了车辆正前方有一个障碍物,毫米波也检测到车辆前方有一个障碍物,激光雷达也检测到前方有一个障碍物,而实际上前方只有一个障碍物,所以我们要做的是把多传感器下这辆车的信息进行一次融合,以此告诉下游,前面有一辆车,而不是三辆车。

5.决策规划

这一层次主要设计的是拿到融合数据后,如何正确做规划。

规划包含纵向控制和横向控制。

纵向控制即速度控制,表现为 什么时候加速,什么时候制动。

横向控制即行为控制,表现为 什么时候换道,什么时候超车等

6.软件长什么样子?

自动驾驶系统中的部分软件看起来和下面类似。

软件的名字反映了该软件的实际作用

app_driver_camera 摄像机驱动

app_driver_hdmap 高精度地图驱动

app_driver_ins 惯导驱动

app_driver_lidar 激光传感器驱动

app_driver_mwr 毫米波传感器驱动

app_fusion_freespace 自由行驶区域融合

app_fusion_lane 车道线融合

app_fusion_obstacle 障碍物融合

app_planning&decision 规划决策

然而实际上攻城狮们会编写一些其他软件用于自己的调试工作,比如记录数据和回放数据的工具。

还有用于传感器信息显示的可视化程序,类似下图的效果。

图片出处:http://open.163.com/movie/2015/10/U/U/MB1G83TR9_MB1GMCRUU.html

作者:陈光 链接:https://www.zhihu.com/question/24506695/answer/223085931 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、研究自动驾驶技术的算法需要哪些知识?

大胖灰:自动驾驶现阶段主要还是以计算机方面,尤其是算法类的研究为主,如计算机视觉,数据融合,地理信息和定位导航,广域和局部的路径规划,基于深度学习等方面的控制方法,车辆行驶行为决策等等。这些都是偏向计算机领域的研究,而且由于研究成本比较低(最大的成本在测试上,而仿真模拟只需要一台高性能PC),在各个高校里也是非常火热的。现在的问题是,算法越来越复杂,而实地的可行性依然存在缺陷,而且,算法的研究也基本上到了瓶颈了(这里不包含新的横向细分领域)。

但是纵然各大公司都如火如荼地开展研究到各城开展测试与商业落地的探索等,依然不免出现大大小小的问题需要人工驾驶员去干预,甚至来不及干预而引发交通事故。这些问题基本都来自于现在交通情况的不确定性,比如说突然出现的猫猫狗狗,或者行踪恍惚的行人,抑或风雪天气等。

个人有一些想法,来自于现有落地的自动驾驶商品,如百度阿波龙,图森未来和奥迪A8上的功能。这些产品的自动驾驶都是有条件自动驾驶,一个是固定园区内的观光车或者限定区域内的物流车,一个是限定商用运输路段上,另一个是限定场景中,除了场景还是需要人力驾驶。

因此,个人认为,安全系数100%的自动驾驶,必然是受到约束的,那么不如从自动驾驶需要什么样的约束,以及如何实现这个约束进行着手,也许更利于全面实现L4+级别的自动驾驶。

第一个是标准化的车,这里不是说所有的车都一样,而是,既然要自动驾驶,那么这个车肯定要符合某些规章,合乎一些制度,以保证人的安全。这些规章制度如何设定,需要车辆工程专业领域的企业和研究人员进行探索,而且,需要和其他各方进行多边交流以达成共识。这方面,设想可能容易,但至少在现有车辆淘汰之前,落地还是比较困难的。

第二个是标准化的路,既然现有技术已经达到了瓶颈,无法进一步适应交通环境,不如去探索怎么样去改造交通环境,使其适应自动驾驶的技术需求。这个需要交通规划和管理领域的研究人员去探索,由于基建耗资巨大,而且使用寿命比较长,这个可能需要几十年才能落地。

第三个就是现在最火热的通信和计算机领域了,需要增加一些新的功能,交通调度和管理方面的,能精确到具体的某个车,通过宏观调度和车辆自身的微观调控,使路上的车都能相安无事,安全地行驶,以及能够管理并迅速解决常见的紧急情况,如汽车抛锚,开锅等。就算法领域而言,能进行精确管理的调度方法,或者算法是一个可能的方向。

回到正题,题目中文的是研究自动驾驶相关算法需要的知识基础。自动驾驶目前的主要研究领域包括感知,决策和控制。

感知方面呢,最热的领域一个是计算机视觉,一个是多传感器融合。归根结底,还是对数据的处理。这里不介绍本科的工科数学必修课了,深入研究的话,数学方面包括矩阵分析,数值分析和应用数理统计。本科有一个基础课叫数字图像处理,这个也很重要。计算机应用技能的话,那就是各种编程语言,至少需要精通一种吧,推荐Python,然后是数据结构,算法(一门计算机专业课)。

决策或者规划方面,一般是针对某种场景进行行为决策,路线的规划,或者是对全局进行调度管理。这方面需要学的基础知识包括最优化理论,运筹学,博弈论等等。

控制方面就不用多说了,自动化的大部分课程都可能用得到。最基本的是数学建模,第二个就是控制理论,然后就需要学各种类型的控制方法,比较复杂的方法自己就能写半本书,难度还是有的。

最后呢,是一些近几年比较火热,也认为是比较先进的工具,比如说各种神经网络,迭代类的智能算法,模糊理论和专家系统等等。如果想进行深入研究的话,可以做的还是很多的,缺点就是,不能保证你的idea别人没做过。

个人感觉,在不久的将来,一定会有一些全新的设想出现,而且一定不是某种具体的产品,比如说某个车或者某个软件。而这些也会引发交通领域学术界和工业界的爆发式增长。

个人才疏学浅,考虑情况也多有不周,擅自将不属于算法领域的回答也放在这里,权当是抛砖引玉了,还请各位知友,不吝赐教。

作者:大胖灰

链接:https://www.zhihu.com/question/46575222/answer/907385481

来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

0 人点赞