个人虽然也喜欢车,但是懒得考驾照。我就等着无人驾驶了。
要实现无人驾驶就需要具备下面的能力,先简单介绍,这些内容博大精深,随着研究随着分享吧。这里简单说一下他们都是什么吧。
环境探测
只有熟悉了周围的环境才能帮助人工智能做出正确决定。
通过图像探测周围环境,尽可能多识别出道路上物体,行人、分机动车、机动车以及信号灯等。
首先说一下 mobileeye 这个没有景深的照相机通过图像进行计算来识别出周围物体。特斯拉好像在用这个,一些传统的制造业也在用。
是以色列一家生产协助驾驶员在驾驶过程中安全驾驶视觉系统的公司。已投身研发 12 年并收获了前所未有的技术知识。公司在单目视觉高级驾驶辅助系统 (ADAS) 的开发方面走在世界前列,提供芯片搭载系统和计算机视觉算法运行 DAS 客户端功能,例如车道偏离警告 (LDW)、基于雷达视觉融合的车辆探测、前部碰撞警告 (FCW)、车距监测 (HMW)、行人探测、智能前灯控制 (IHC)、交通标志识别 (TSR)、仅视觉自适应巡航控制 (ACC) 等。
Mobileye 描述了从 ADAS 到自动驾驶阶段的三个关键技术,sensing 感知,mapping 高精度地图和 driving policy 驾驶策略。
google 的无人驾驶做的彻底,车内没有驾驶员位置也没有方向盘。一切控制权都交个了计算机来处理。
最后再说一下google 是用他们无人驾驶车上的那个不停转的东西来通过激光扫描周围的环境。精度和还原度很高。不过一个价格和一台车价格差不多。
定位
定位系统会用 GPS,不过 GPS 是的精度还不满足对定位要求,我们需要更精确,google 是用激光一遍一遍扫描周围环境得到密集点形成三维全息图像通过对比来的确定自己位置。
决策
有了足够的信息,需要根据这些信息作出决定,是加速,左打轮还是右打轮。这也是深度学习能够发挥作用领域。现在的决策基本都是定义一些规则,比如红灯停,避让行人这些规则。所以这部分也是有很大发挥空间。
线控
要实现无人驾驶,我们就需要将驾驶,加速和制动以这些都可以通过线来控制,也就是汽车提供一套 API 供人工智能来驾驶汽车。供人工智能来控制车辆的行驶。
说一些题外话,回到今天正题就是找车道线。在开始在图像绘制出车道前,我们先介绍一些理论吧。
霍夫变换(Hough Transform)
从图中看这就是一个再简单不过函数 y = mx + b 一个简单表示线性方程的直线。
在下图中我们可以看到 y=mx+b 方程形状是由 m 和 b 决定的,所以根据 m 和 b 这两个决定方程的特征我们建立一个坐标系通过点表示出来就是霍夫空间。b 就是我们在初中时候就学到的方程的截距。
m 是表示方程的斜率,然后我们以点(坐标为 m 和 b) 将点表示出来。
在下图中 y = 3 + 2 可以在霍夫空间中表示为点(3,2) 在霍夫空间中一个点对应一个方程。
我们知道通过一点的直线会有很多,y = 2x + 8 通过一点,在霍夫空间反应为点(2,8)
同样 y = 5x+2 也通过这一点,然后我们在将这个方程表示在霍夫空间,依次类推大家可以自己动手尝试一下举出一些列通过一点方程,然后将他们对应表示在霍夫空间。
大家不难看出通过某一点的任意方程,看似没有什么规律不过在霍夫方程中我们似乎看出他们都在一条直线上。
同样我们可以再举一点,然后将通过这一点的直线描绘在霍夫空间表示出来,在让这些方程对应点在霍夫空间连接成线,我们发现这两直线有了一个交点。
其实在霍夫空间两条直线交点所对应方程就是通过这两个点的直线的表示的方程
依次类推
这样我们回到我们处理的道路图,说了这么多有关霍夫变换,就是为了通过多个点来找他们共享(也就是穿过这些点)的那条直线。
实际情况应该没有上面那么理想,我们无法找到一条直线精准地通过所有点,只能模糊地在一定范围内找到一条符合直线。所以我们可以将霍夫空间划分为一些小格子来扩大范围。