超级解密:无人驾驶是如何炼成的
转载 2020-08-01 17:06 木羊同学 来源:华章计算机导读:说到人工智能,有一个不能不提的话题,那就是自动驾驶。市面上号称人工智能的产品很多,但目前最符合我们心中对人工智能印象的,具体来说,就是能够模仿人类甚至替代人类,去完成一些过去只有人类才能完成的工作的技术,也许就是这个自动驾驶。
作者:木羊同学
来源:华章计算机(hzbook_jsj)
和很多新产品也一样,大家对自动驾驶的态度也是两极化,分为过于信任和太不信任。有些人过于信任自动驾驶,打开自动驾驶自己就敢玩手机或者睡觉,这已经出了几次人命事故。有些人又太不信任自动驾驶,觉得都是商家的噱头,买了新车连自动泊车入位功能也不太敢尝试。
01 那自动驾驶到底能干什么呢?
这就要从自动驾驶的“天梯”说起了。对新兴技术或者对汽车感兴趣的朋友,一定都看过这么一条新闻,说特斯拉的Autopilot已经具备Level 2,也有称为L2级的自动驾驶能力。如果不了解自动驾驶的天梯,可能很难完全读明白这条新闻。
美国汽车工程学会(SAE)给自动驾驶按水平不同分了六个等级,等级越高自动驾驶的水平越高,最低是Level 0,表示完全没有自动驾驶的能力,最高是Level 5,表示有完全的自动驾驶能力,司机可以坐在驾驶位上安心看书,或者干脆就不再需要驾驶位了。
现在市场上售卖的无人驾驶功能都到了Level 几的水平了呢?前些年业界一度很乐观,关注点已经发散到取消驾驶座以后,应该改成麻将桌还是火锅台了。
但现实很骨感——经过一段时间的实践以后,特别是无人驾驶出现了几次翻车(是字面意义上的“翻车”)以后,大家的头脑逐渐冷静了下来,目前各个无人驾驶的巨头也基本达成了一个共识,认为Level 5实现难度非常高,要真正达到还需要很长的时间,可以肯定最近几年是不可能用无人驾驶代替考驾照了。
当然了,事情也并非两个极端,虽然无人驾驶距离能够让司机下岗还有很长的路要走,但当前也并非只是噱头毫无进展。研发能够适应各种复杂路况的无人驾驶当然很难,但也做数学难题一样,可以先加一点背景限制条件来简化问题。
现在一些具体的应用场景中,无人驾驶确实已经能够达到让司机“放开双手”的水平,譬如现在已经推出了能够在厂区、园区内行驶的无人驾驶公交车,以及能够在特定路段行驶的无人驾驶出租车等等。
按照SAE对无人驾驶的分级,目前市面的各类无人驾驶,包括名气很大的特斯拉的Autopilot,基本还处于Level 2和Level 3的水平,也就是部分自动驾驶和有条件自动驾驶,读起来很拗口,用大白话来说就是能够帮助司机,但不能够替代司机的意思。
我国三部委颁布的《智能网联汽车道路测试管理规范(试行)》也作出要求,测试驾驶人应始终处于测试车辆的驾驶座位上、始终监控车辆运行状态及周围环境,随时准备接管车辆。
前面提到的这些已经上路的无人驾驶公交和无人驾驶出租车,在实际运行中通常都还要配备一到两名安全员,可能和大家想象中“驾驶座上没有人,只有方向盘在空转”的场景略有出入。
有些智能驾驶系统还担心司机过于迷信“无人驾驶”而分心走神,还专门设置了一系列检查司机有没有专心开车的机制,包括检测司机的双手是不是放在方向盘上,以及检测司机的眼睛究竟是盯着行车前方还是在看其他地方。
无人驾驶当前可以说是冰火两重天,每每新产品让人眼前一亮,感觉成功就在眼前,而新事故又让人忧心忡忡,甚至怀疑这条路到底能不能走通。总的来说,无人驾驶作为人工智能技术的典型代表,同样也和很多已经尝试落地的人工智能产品一样,是希望与挑战并存。
我还清楚记得第一次搭乘无人驾驶汽车,虽然分别列坐驾驶座和副驾驶的两位彪形大汉破坏了一点科幻感,但是看着无人操控的方向盘自己旋转,遇到红灯自己刹车,突然出现了行人车辆还懂得自己避让,我仍然像体验了一场大型魔术一样,产生了难以形容的震撼,迫不及待想掀开魔术幕布一窥背后的奥秘。
02 那无人驾驶是怎么实现的呢?
无人驾驶是个非常前沿的研究方向,新闻不少,但系统性介绍这门技术的书并不多,而且寥寥数本当中,大部分还都是科普性质的,缺乏理论知识层面的介绍,难以深入了解背后原理。有这方面需要的同学,我推荐《智能驾驶技术:路径规划与导航控制》。
这是一本硬核的书,读完这本书,你会对无人驾驶的完整流程能够有一个清晰的了解。以下内容是我读完《智能驾驶技术:路径规划与导航控制》以后,自己的理解归纳:
要实现无人驾驶,需要准备三件宝物,高精度地图、传感器和车辆控制系统。
地图一这项好理解,无人驾驶也好,有人驾驶也好,最终都是把车子从起始地开到目的地,关键就是要“认路”。过程我们都很熟悉了,需要借助地图导航。无人驾驶也同样需要地图导航,但是,无人驾驶使用的地图和我们普通的导航地图不太一样,是高精度地图。
有什么不同呢,回想一下,我们的导航地图主要是标识了各种地点,也就是地理信息,但是对于行车相关的信息,譬如交通灯、交叉路、车道规则和道路水平等等,大多是缺乏的。
高精度地图一方面对准确性要求更高,通常需要结合GPS、遥感影像等等测量仪器的结果绘制。另一方面是补充了这些行车信息,甚至对于特殊的车道还做了细致的划分,譬如路口转弯、匝道、小路,都作了分别的标识。
高精度地图需要包含这么多信息,制作成本当然很高,但无人驾驶有了高精度地图,认路就容易的多了,实时计算要求也一下下降很多。
无人驾驶的第二件宝物就是传感器。传感器应该无人驾驶在外形上的标志,现在无人驾驶的车辆,一般都会戴一顶高高的“帽子”,这顶“帽子”就是一种传感器。人类开车需要眼观六路耳听八方,无人驾驶想开车同样也需要耳目,传感器就是无人驾驶的耳目。
有人可能会不太理解,为什么有了高精度雷达还需要传感器呢?在真实环境中开车和游戏里不一样,是不能够“背板”的,行车路上会出现各种意想不到的障碍物需要实时观察,这里的障碍物不仅指狭义的路障,还包括前方出现的行人,和后方突然加速的车辆等等。
哪怕是最简单的红绿灯,我知道这里有红绿灯,那现在究竟是红灯还是绿灯,我该继续行车还是赶紧刹车呢,这都需要通过传感器观察情况。新手司机上路应该都有一个感觉,就是忙乱,要观察的东西太多,人尤如此,更遑论无人驾驶。
为了准确捕捉各种环境信息,无人驾驶使用了多种的传感器来捕捉各类环境信息,包括高清摄像头、红外传感器、激光雷达、毫米波雷达等等,能够捕捉的光信号不仅限于可见光,而且具备360度环视视觉。应该说,在环境信息捕捉方面,无人驾驶所具备的能力已经超过了人类。
最后一项是最核心的一项,也是最难的一项,就是这个车辆驾驶系统。
准确来说,车辆驾驶系统分为软件和硬件两个部分,无人驾驶的车辆首先需要对车辆进行硬件改造,这应该很好理解,你必须得让无人驾驶系统能够控制油门、刹车和方向盘,然后才能谈无人驾驶对吧。这是硬件层面的车辆驾驶系统,在软件层面,就是无人驾驶的“大脑”了。
大脑是关键,前面的地图、耳目再厉害,也得需要有个厉害的大脑才能真正用起来。具体来说就是各种各样的算法,这一部分涉及到很多具体的专业知识,可以细读《智能驾驶技术:路径规划与导航控制》,这里只提一提其中有两个的问题我觉得十分有趣。
第一个问题就是如何训练。无人驾驶依赖人工智能技术,会从各种机器学习、深度学习、深度强化学习的模型中挑选。要使用这些模型,都有一个必经环节,那就是训练,而训练是需要试错的。
读过我写的那本《机器学习算法的数学解析与Python实现》的同学都知道,训练的过程就是不断减少错误的过程,这在别的地方没有问题,但是在无人驾驶这里问题就复杂了,应该没谁希望哪天街上会突然出现一辆发了疯一样的无人驾驶汽车,就算你告诉我模型训练都有这么个过程也不行。
那这个问题是怎么解决的呢?用仿真环境,无人驾驶是在仿真环境中不断学习进化,等训练成了真正意义上的“老司机”才能真正开车上路。
第二个问题叫乘坐体验,这是个很有意思的问题。我们都知道,开车不仅仅要考虑开车,还要考虑乘车。有一种车技烂,不是把车开到河里去,而是开车能把自己给开晕车了,不过,这个问题归为驾驶问题当然可以,不归为驾驶问题当然也可以。
无人驾驶是把这个问题纳入了考虑,首先就需要考虑另一个问题:如何形式化的问题。乘坐体验是一种感受,非常主观,但要使用数学工具解决这个问题,首先就必须要将问题形式化。这个问题简单来说,就是我们人的主观体验,真的可以用莫得感情的数学公式来表达吗?
无人驾驶的研究者回答是:可以的。譬如说刹车,遇到突发情况当然要刹车,但如果刹车太硬太急,乘客又会很容易觉得恶心。这是一对矛盾,而这对矛盾完全可以用数学公式来描述,再进而找到最优解。
具体的内容还有很多,相关数学公式和介绍可以阅读《智能驾驶技术:路径规划与导航控制》的“基于车辆约束的最优轨迹”。
关于作者:莫凡,网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。