当前位置: 华文问答 > 数码

研究自动驾驶技术的算法需要哪些知识?

2017-02-05数码

无人驾驶车 是一个完整的软硬件系统。硬件系统除了常规的汽车的配置还涉及到专用于无人驾驶技术的传感器,比如摄像头,雷达等。每个公司设计无人车的思想不尽相同,因此软件算法更是难以概括。

作为一个学生来讲,学习无人驾驶,数学知识和编程基础是必不可少的。

数学知识有大学数学基础基本就可以入门啦,学过大学数学代表你懂得求导,微积分,线性代数和概率论等知识。此外,有大学数学的素养,当你遇到新的数学问题时也能快速找到学习方法。

在编程基础中 Python 是非常友好的,Python 易于学习和使用,拥有大量的库,能够快速的把你的思路和想法实现。不过当你想把这些算法移植到硬件设备上或者涉及更低层的方法时你就不得不用 C/C++ 啦。

更多的专业知识比如机器学习,有时我们需要先定义这是一个分类问题还是回归问题,再设计解决问题的方法;如果我们设计了一个模型,我们也要用机器学习的方法来评估模型的稳健型等。另外还有计算机视觉,图像处理和深度学习。

硬件方面我们可能需要知道使用哪些传感器,如何采集传感器的数据,如何处理传感器数据,将传感器的信息进行融合。

当无人车意识到自己处于一个什么样的环境中时,它应当知道作出怎样的决策。你一定还需要控制理论和控制方法甚至车辆动力学的知识等。

在无人车涉及到的如此多的技术中,计算机视觉和图像处理是不可或缺的一部分。以优达学城无人驾驶车工程师(英文) 这门课程第一学期中涉及的到的算法来举例说明。

第一学期3个项目涉及到的算法都是较为基础的,无人车公司基本都会用到,并且这些技术也相对成熟。

1. Project1 道路线检测

在这个项目中,需要使用 Python 和 OpenCV 来检测图片中的道路线,涉及到的方法有颜色选择,切图(ROI, region of interest selection),灰度处理,高斯模糊,边缘检测和霍夫变换直线检测。如果能够识别一张图片中的道路线,那么对于行驶中的车辆上摄像头实时采集的图像也可以实时分析。

(项目成果:LaneLines)

2. Project 2 交通标志识别

无人车也是要懂得交通规则的,所以识别交通标志并根据标志的指示执行不同指令也非常重要。这个识别交通标志的项目就需要使用深度学习(卷积神经网络)的方法来完成。

3. Project 3 高级道路线检测和车辆检测

高级的道路线检测需要计算相机校准矩阵和失真系数对原始图像的失真进行校正;使用图像处理方法,将图像进行二值化处理;应用透视变换来纠正二值化图像(「鸟瞰视图」);检测车道并查找确定车道的曲率和相对于中心的车辆位置;将检测到的车道边界扭曲回原始图像;可视化车道,输出车道曲率和车辆位置。

还有一个非常有意思的方法是行为克隆(Behavioral Cloning),你在游戏模拟器中开车,并收集道路图像和方向盘角度等信息,然后搭建一个模型,让它来学习你开车的方法。最后效果如何不仅取决于模型的质量还取决于你开车的技术,你能明显看到模型开车的方式中有自己的习惯,这里有一段我做的项目成果(https://www. bilibili.com/video/av78 80273/ )可以参考!

此外,这门课后面的学习还会涉及到传感器融合,定位,路径规划和控制方法等不同的知识和技术方面。这些都将会在第二和第三个学期逐步开放。

所以,如果题主刚刚进入这个领域不如就从基础的方法开始不断探索吧!欢迎交流~

感谢 Udacity 学生 @杨培文 投稿