谷歌智能车的难点在哪里?模式识别,还是分析、控制算法?
话说智能车的成本高,很大成本上是在激光扫描仪上,那就是说还是对道路环境的识别要求高,但是在复杂环境下的算法也很重要啊(某篇文章上好像说用机器学习分析了大量的数据),以后的突破点究竟在哪儿呢?让我们来一点点详解google car的难点,毕竟那是个50多人、10多个教授做出来的东西,具体内容可以参见后面提到的论文。
背景
无人驾驶技术取向成熟,源于2007年DAPRA的城市挑战赛。之前的比赛多是在沙漠举办,其主要目的是美军希望使用无人车运送物资,减少战时士兵的伤亡。
图中为2005年的冠军斯坦福大学的史坦利号(Stanley)
Boss
Junior
2007年比赛加入60公里城市道路,要求车辆在无人驾驶的同时,遵守交通规则。完赛的明星有通用汽车与卡内基梅隆大学合作的赛车“Boss”、2007DARPA城市挑战赛亚军——斯坦福大学的“Junior”。照片上的人叫Sebastian Thrun,他及部分团队成员随后被Google挖走,于是有了Google Car。
如果想了解他们的详细内容,可以在Field robotics上找到很多邀稿,是所有DAPRA获奖车辆的技术报告,也是这次的论文掀起无人驾驶的研究热潮。
CMU的技术报告: Autonomous driving in urban environments: Boss and the Urban Challenge
弗吉尼亚理工大学 Odin: Team VictorTango’s entry in the DARPA Urban Challenge
介绍完了背景,说说难点。
传感器技术
不得不承认现在无人车能出现很大程度上依赖传感器的进步。其实早在80年代美国就通过磁钉导航完成过很多无人驾驶的实验。他们在地下埋上磁钉,通过寻找磁钉的方式可以完成高速的巡航、并道、超车等一些列的实验。但是显然这种成本太高,只能作为实验。
到了2007年,传感器技术已经突飞猛进了,看看他们的传感器吧。
SICK公司激光雷达。用于检测周围障碍物,无人车需要能够感知周围环境,又不能像人一样单纯用眼睛完成,于是这玩意可以返回周围障碍物的距离,误差毫米级。
这张图上的无人车头顶的不是灯,而是5个SICK。一个SICK当时等价于一辆帕萨特。当然现在Google car的激光雷达用头上的小东西了。
这个小东西顶至少4个SICK,是360度多线激光雷达,今天价值3个帕萨特。这个小东西顶至少4个SICK,是360度多线激光雷达,今天价值3个帕萨特。剩下的东西没有这个壮观,就不上图了。
除了激光雷达(避障),还有有毫米波雷达(探测)、GPS(定位)、里程计(定位)、陀螺仪(定位)、视觉系统(检测、避障)、数传电台(监控)等等。就不说很多小细节的进步了,但是上述的传感器都是必须的,所以无人车的第一个难点是传感器。
定位
GPS的定位精度远达不到无人车的需求,GPS官方定位精度“<10m”,更高精度的GPS基本要依靠差分完成。
差分的原理很简单:设置一个固定基站,固定基站校准位置,再将信号传递给车载设备,车载设备在接收到基站信号和GPS信号后差分获得。但是每一个基站的有效范围也就30km,怎么大范围应用。
于是有很多技术要解决GPS精度不足的问题,如地图匹配。由用户评论提到了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。因此要尽可能约束累积误差,使其数量级很低,那么就要上光纤陀螺。因为电子级的陀螺通常达不到这个精度要求,不知道挠性陀螺行不行,但是估计挠性陀螺和光纤陀螺造价差不多。
避障
车辆前方有障碍,障碍物是运动的还是静止的,车是停下来还是绕过去。我没仔细研究过这部分的内容,知道的算法是人工势场法。
这部分主要的难度是从传感器识别障碍,在车辆运动的前提下,确定障碍的运动状态。也就是说你要在运动的坐标系下,计算另一个物体相对静坐标系的速度,并作出判断。
识别
下面得识别交通标识,如限速牌、红绿灯。这些通过视觉系统完成,难点主要在实时性和鲁棒性。要离线处理这些交通标志是很简单的,但是在无人车上需要能在有限的时间里识别出来,并且考虑道路中可能有的光线变化、遮挡等问题。
控制
你提到控制算法,除了上面的避障以外,其他外围机构的改造可能会存在一些改造上的问题。如何介入转向架、如何介入油门(以前还要考虑如何换挡)。这些工作如果有厂商帮忙还好,没有的话也会是问题,钱的问题。
其实控制的难度相对较小,传统PID足够,加上部分买的伺服机构,没有多大难度,就是活累。
规划与决策
既然是无人车,一定牵扯“去哪”。目的地由人决定,但是路线是车子计算出来的,这部分的算法可能你不会,但是你常用,就是百度地图、腾讯地图之类的东西,它们通过一定的算法计算出路径之后车辆会跟随这条路径。
当然运行过程中为了解决实际的一些问题,比如修路,也许要决策的机制。其实对于无人车的控制说小了较控制,说大了叫决策。也可以说,决策是频率比较慢的控制。
举个例子,我们对方向盘、车速的控制周期是多少呢?大约20ms,也就是1s中要控制50次左右。那么我们对车辆路线的决策周期呢?大约5s。
可以看出,控制是响应速度较快的部分,而决策是响应速度较慢的控制。决策,说白了就是对于一些可能遇到的问题给出的解决逻辑,俗称人性化。
无人车最关键点在于东西不一定复杂,但一定要可靠,所以当有人问Sebastian Thrun(前面Google Car的负责人),你们的车能否在雨雪天开出去的时候。他说,那些日子我们最好不动它。
至于你提到的机器学习,我认为这是趋势,可能在识别部分会有应用,但很难成为无人车的核心技术。
原因:
- 离线学习会导致算法有一定的局限性,你在北美弄好的系统在中国不一定能用。
- 在线学习成本太高,给车带个计算机,让它在车辆运行的同时还能逆向运算?
以后的突破口,可能要依赖廉价可靠的传感器和相应的识别算法。这些机构到底能做到多小,多便宜又多可靠。至于提取信息以后的控制,前面说了,80年代就有人做了。