技术贴:谷歌自动驾驶车的难点在哪里?

· May 18, 2015

不好意思,我们又当 知乎的搬运工 了。原问题为《谷歌智能车的难点在哪里?模式识别,还是分析、控制算法?》,讨论的是谷歌的自动驾驶和无人驾驶技术。本文来源于这个问题里点赞最多用户 康费 以及 吕朝阳 的回答,比较长,非常技术流,但是干货也非常多,值得一看。 康费的回答: 1. 传感器技术 不得不承认现在无人车能出现很大程度上依赖传感器的进步。其实早在 80 年代美国就通过磁钉导航完成过很多无人驾驶的实验。他们在地下埋上磁钉,通过寻找磁钉的方式可以完成高速的巡航、并道、超车等一些列的实验。但是显然这种成本太高,只能作为实验。 到了 2007 年,传感器技术已经突飞猛进了。看看他们的传感器吧。 SICK 公司激光雷达。用于检测周围障碍物,无人车需要能够感知周围环境,又不能像人一样单纯用眼睛完成,于是这玩意可以返回周围障碍物的距离,误差毫米级。 这张图上的无人车头顶的不是灯,而是 5 个 SICK。一个 SICK 当时等价于一辆帕萨特。当然现在 Google car 的激光雷达用头上的小东西了。 这个小东西顶至少 4 个 SICK,是 360 度多线激光雷达,今天价值 3 个帕萨特。 剩下的东西没有这个壮观,就不上图了。 除了激光雷达(避障),还有有毫米波雷达(探测)、GPS(定位)、里程计(定位)、陀螺仪(定位)、视觉系统(检测、避障)、数传电台(监控)等等。就不说很多小细节的进步了,但是上述的传感器都是必须的,所以无人车的第一个难点是传感器。 2. 定位 GPS 的定位精度远达不到无人车的需求,GPS 官方定位精度「<10m」,更高精度的 GPS 基本要依靠差分完成。差分的原理很简单:设置一个固定基站,固定基站校准位置,再将信号传递给车载设备,车载设备在接收到基站信号和 GPS 信号后差分获得。但是每一个基站的有效范围也就 30km,怎么大范围应用。于是有很多技术要解决 GPS 精度不足的问题,如地图匹配。 以前 GPS 中会加入干扰,那时候民用 GPS 的精度只有 100m。这个干扰叫 SA,Select Availability,已经于 2006 年取消。SA 依然会在战时开启,那时只有美军自己的 GPS 能有效定位,而其他的 GPS 都将失效(所以我国要研发北斗)。传统 gps 的协议是 0183 格式,这种格式允许小数点后 4 位。军用级别的 gps 在此基础上又加了两位,至于多出来的几位是否真能提高精度就不知道了,得用个绝对位置教一下。 如果是「<1 米」 的精度对于车辆定位基本上够用,但是 GPS 一定要在空旷的场地上才能得到这种级别的定位精度。 除此之外,没有 GPS 呢? 在树荫下、楼宇间、隧道内 GPS 信号无法到达,这时就需要里程计+陀螺仪,俗称惯性导航单元。这套系统的原理就是:花钱越多,有效时间越久。如果要能在没有 GPS 的情况下坚持 20 分钟,呵呵,3 个帕萨特。 原因是里程计、陀螺仪都存在累积误差。注意误差是累计的,也就是说上一时刻是 0.5m 的误差,下一时刻指定大于 0.5m。因此要尽可能约束累积误差,使其数量级很低,那么就要上光纤陀螺。因为电子级的陀螺通常达不到这个精度要求,不知道挠性陀螺行不行,但是估计挠性陀螺和光纤陀螺造价差不多。 3. 避障 车辆前方有障碍,障碍物是运动的还是静止的,车是停下来还是绕过去。我没仔细研究过这部分的内容,知道的算法是人工势场法。这部分主要的难度是从传感器识别障碍,在车辆运动的前提下,确定障碍的运动状态。也就是说你要在运动的坐标系下,计算另一个物体相对静坐标系的速度,并作出判断。 4. 识别 下面得识别交通标识,如限速牌、红绿灯。这些通过视觉系统完成,难点主要在实时性和鲁棒性。要离线处理这些交通标志是很简单的,但是在无人车上需要能在有限的时间里识别出来,并且考虑道路中可能有的光线变化、遮挡等问题。 5. 控制 你提到控制算法,除了上面的避障以外,其他外围机构的改造可能会存在一些改造上的问题。如何介入转向架、如何介入油门(以前还要考虑如何换挡)。这些工作如果有厂商帮忙还好,没有的话也会是问题,钱的问题。其实控制的难度相对较小,传统 PID 足够,加上部分买的伺服机构,没有多大难度,就是活累。 6. 规划与决策 既然是无人车,一定牵扯「 去哪」。目的地由人决定,但是路线是车子计算出来的,这部分的算法可能你不会,但是你常用,就是百度地图、腾讯地图之类的东西,它们通过一定的算法计算出路径之后车辆会跟随这条路径。当然运行过程中为了解决实际的一些问题,比如修路,也许要决策的机制。 其实对于无人车的控制说小了较控制,说大了叫决策。也可以说,决策是频率比较慢的控制。举个例子,我们对方向盘、车速的控制周期是多少呢?大约 20ms,也就是 1s 中要控制 50 次左右。那么我们对车辆路线的决策周期呢?大约 5s。可以看出,控制是响应速度较快的部分,而决策是响应速度较慢的控制。决策,说白了就是对于一些可能遇到的问题给出的解决逻辑,俗称人性化。这部分我能力有限,希望懂的人可以给些意见。 我觉得,无人车最关键点在于东西不一定复杂,但一定要可靠,所以当有人问 Sebastian Thrun(前面 Google Car 的负责人),你们的车能否在雨雪天开出去的时候。他说,那些日子我们最好不动它。至于你提到的机器学习,我认为这是趋势,可能在识别部分会有应用,但很难成为无人车的核心技术。原因:1)离线学习会导致算法有一定的局限性,你在北美弄好的系统在中国不一定能用。2)在线学习成本太高,给车带个计算机,让它在车辆运行的同时还能逆向运算? 至于以后的突破口,我觉得是廉价可靠的传感器和相应的识别算法。这些机构到底能做到多小,多便宜又多可靠。至于提取信息以后的控制,前面说了,80 年代就有人做了,还做得不错。 吕朝阳的回答: 我从智能汽车作为一个机器人系统,涉及到的几方面技术,在理论方面的难点做一个解释和补充。 首先,智能汽车作为一个机器人系统,所涉及到的机器人技术主要有 控制(control), 感知(perception)和路径规划(planning)三大块内容。作为一个独立的机器人系统,其自身的计算机系统以及安全性也是一个很重要的方面。关于这几块目前的研究以及工业界达到的成就,和技术难点,我正在写一篇综述给感兴趣的朋友加以介绍。下面就从者三个大方面来看看都还有哪些棘手的问题。 关于控制方面, 自动巡航系统(cruise control),自动刹车系统(auto braking),自动停车系统(auto … 继续阅读