如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(1)

“无人驾驶车”听起来好像还离我们很远?很难想象有一天“老司机”会从此消失。但是这一切正在Google、特斯拉这些巨头的推动下,离我们越来越近。

其实徒手改造无人驾驶车这件事,早就有脑洞清奇的人做过了。你!也!可!以!

不过先来打个脸!

是的,想必你听说过,2015年,一位叫George Hotz的26岁少年号称用1000美元,2000行代码,6个摄像头在自己车库实现了无人驾驶。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(2)

当然,机智的探长早就发现了他是标题党。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(3)

仔细研究一下,他的整套设备约4万美元,而且代码量远超过2000行代码,并且调用了大量第三方的库,他也只实现了高速场景下车道保持、行人探测、碰撞警告等辅助驾驶的功能。

2.行为决策模块

行为决策是指无人驾驶汽车根据路网信息、获取的交通环境信息和自身行驶状态,产生遵守交通规则的驾驶决策的过程。

用人话说就是规划出一条精密的行驶轨迹,然后无人驾驶车就可以跟着这条轨迹走。

3.运动控制模块

运动控制模块是根据规划的行驶轨迹和速度以及当前的位置、姿态和速度,产生对油门、刹车、方向盘和变速杆的控制命令。

看起来是不是非常简单!? So Easy!

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(4)

友情提示:如果你到这里已经不想继续往下看,请直接跳到文末最后两段,速成秘籍等着你(蜜汁微笑)

无人驾驶两大派系:谷歌和特斯拉谁能笑到最后

无人驾驶的实现路径大概有两大派系,一派是以谷歌为主的互联网公司,一派以特斯拉为首的汽车制造商。

谷歌的蓝图是无人车完全取代人来驾驶,把无人车看成机器人,所以没有方向盘、油门和刹车。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(5)

谷歌无人车顶上是约8万美元的64线激光雷达(Lidar)。它在高速旋转时发射激光测量与周边物体的距离,再根据距离数据描绘出精细的 3D 地形图,并跟高分辨率地图数据相结合建模,帮计算机做决策。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(6)

由此可知,这条技术路线的关键是对周围环境的模拟和3D地图数据,而谷歌在这方面有深厚的积累。

而特斯拉的计划是从机器辅助驾驶进化到完全自动驾驶。所以技术上逐步实现自动刹车、定速巡航、自适应巡航等,最终完全自动驾驶。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(7)

特斯拉 Model S主要是靠摄像头结合计算机视觉,特斯拉辅助驾驶使用的硬件包括前置摄像头、前置雷达(相对廉价的毫米波雷达)、12个超声波传感器。

好吧,看懂了区别没有???意思就是,Google 比较直接,直接让老司机都能回家休息。特斯拉比较温和,先从帮助你开始慢慢解放你的双手……

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(8)

来点轻松的行业巨头八卦,作为课间休息:

Google投资了Uber并希望和Uber共同开展无人驾驶业务。而Otto的创始人 Anthony 是当初Google 无人驾驶车项目的技术主管,曾多次创业,被Google收购了3次!

而第N次离开Google后创立Otto,切入无人驾驶长途卡车市场,技艺惊人,这一次他又被收购了,不过不是被Google收购!而是Uber!

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(9)

紧接着,Uber宣布无人驾驶业务不再和Google合作,要独立发展,Google眼看着自己的两个旧爱勾搭在了一起,不带自己玩了。嗯,三角恋总是不稳定。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(10)

现在问题来了?Uber和Otto在一起,谁是攻谁是……咳咳。

好,接下来说一说无人驾驶实现方案:

硬件部分

我们用前面被打脸的那位少年George Hotz的硬件方案作为入门,教你构建一个无人车驾驶系统的硬件部分。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(11)

根据夹子(微信公众号Roboticists)的分析,George Hotz的主要的组件如下:

最棒的是这套方案都是世面上能够买到的,整套方案约4W美元。

嗯,4万美元对于土豪的你来说当然是小case啦!(手动滑稽

讴歌ILX油门、刹车和转向都已电子化,但控制接口仍需要破解。而VLP-16为2015年最实惠的激光雷达LiDAR,拥有16线,测量范围100米,精度约3cm。而工业相机可以提供更加丰富的前方信息,具有全局快门和高动态范围的特性。

无人驾驶的ECU(发动机控制单元)是整个系统的核心,使用技嘉Brix NUC小型机作为ECU非常合适。下图左侧方盒子即为小型机,中间盒子为以太网交换机。绿色PCB板很可能是自制的惯性测量单元(IMU)模块。右侧蓝色盒子为激光雷达的转换盒。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(12)

还有2台发动机控制单元存在在这个系统中。其中一台为定位ECU,主要组成部分为差分全球定位系统(DGPS),最后1台可能是数据存储ECU。

至此,George Hotz的基础版无人驾驶车硬件方案的架构如下:

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(13)

(图片来源:公众号Roboticists)

软件问题

假设你已经构建了硬件,接下来就是软件了,市面上有不同的解决方式,比如参加DARPA夺冠的斯坦福Stanley车队基于开源的ROS (Robot Operating System)。

不过不管怎么样的软件系统,都要解决几个核心问题:

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(14)

嗯,该用小本记笔记了!

训练一个自动驾驶的决策模型

行为决策是指根据路网信息、获取的交通环境信息和自身行驶状态,产生遵守交通规则的驾驶决策的过程。这个解决方案可以是现在很火的深度学习,来实现模仿性学习(Behavioral Cloning)。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(15)

识别并跟踪障碍物

这个问题的解决方案是传感器融合算法,利用多个传感器所获取的关于环境全面的信息,通过融合算法来实现障碍物识别与跟踪,常用的算法包括卡尔曼滤波法等。

根据周边信息,在地图上定位车俩

在地图上定位汽车,这一块实现的差异很大。由于民用GPS误差过大,不能直接用于无人驾驶。

有一类通过差分定位仪(DGPS)来实现车辆定位。 “DGPS”即利用附近的已知参考坐标点(由其它方法所得,比如Google Map数据)来修正 GPS 的误差。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(16)

还有一类定位是通过激光雷达使周围物体和自车的距离的精度达到厘米级,配合三维地图数据可以将车辆定位至几厘米~ 十几厘米的程度

从相机中识别行人、车道识别、适应性巡航控制、让汽车在预定轨迹上运动

从相机中识别行人是一个计算机视觉问题,需要利用摄像机识别出物体(在这里是人),这里有单目,也有双目的方案,可以调用OpenCV的一些包来实现。车道识别也是计算机视觉问题,有成熟的道路检测算法( lane finding)。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(17)

车辆的自适应巡航控制(ACC)是在定速巡航控制的基础上,通过距离传感器实时测量本车与前车的距离和相对速度,计算出合适的油门或刹车的控制量,并进行自动调节,这一块有不少成熟的方案。

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(18)

让汽车在预定轨迹上运动是一个机器控制和规划问题,一个难点在于躲避突发障碍之后动态路线规划,一个可用的算法是D* 动态寻路算法。

什么?你说这些你都不会而且不知道从何下手开始学?又或者你会了也没有4万美元去购置硬件?

不要气馁,有个更便宜的方案!连4万美元的零头都不需要!

就在这周,世界上出现了第一门可以在线学习的无人驾驶车开发课程!刚看到的时候探长以为是在搞笑,结果发现,居然是由*真*老司机兼谷歌无人车之父Sebastian Thrun(塞巴斯蒂安·特龙)亲自授课!

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(19)

课程内容还有很多来自奔驰、NVIDIA、Otto(三角恋主角之一)等企业里的技术负责人,上课的地方就在Sebastian 离开Google 后创立的在线学习平台优达学城(Udacity)。

为了配合课程,优达学城还造了一批自家的无人驾驶车,给学生远程把玩……天了噜!壕无人性!

所以,真的可以用自己的程序让车子自己就跑起来!别人还在在线学习Java、PHP时,你已经可以用Python 让车子自己在硅谷跑圈圈!更要命的是,优达学城已经和滴滴、奔驰、NVIDIA等企业签订了协议,它们会优先为从这门课中毕业的学员在全球提供工作职位。

所以一不小心工作也找好了!!!

如何操作无人驾驶汽车(手把手教你造无人驾驶汽车)(20)

我写不下去了 我要去报名了!!!!

报名地址我也慷慨地分享一下吧:cn.udacity.com/drive,或者你们自己戳“阅读原文”直达吧。

更多文章,可到硅谷密探 寻求报道/请加微信guigumitan02,微博&官网@硅谷密探

,