研究自动驾驶技术的算法需要哪些知识？
无人驾驶车 是一个完整的软硬件系统。硬件系统除了常规的汽车的配置还涉及到专用于无人驾驶技术的传感器，比如摄像头，雷达等。每个公司设计无人车的思想不尽相同，因此软件算法更是难以概括。 作为一个学生来讲，学习无人驾驶，数学知识和编程基础是必不可少的。 数学知识有大学数学基础基本就可以入门啦，学过大学数学代表你懂得求导，微积分，线性代数和概率论等知识。此外，有大学数学的素养，当你遇到新的数学问题时也能快速找到学习方法。 在编程基础中 Python 是非常友好的，Python 易于学习和使用，拥有大量的库，能够快速的把你的思路和想法实现。不过当你想把这些算法移植到硬件设备上或者涉及更低层的方法时你就不得不用 C/C++ 啦。 更多的专业知识比如机器学习，有时我们需要先定义这是一个分类问题还是回归问题，再设计解决问题的方法；如果我们设计了一个模型，我们也要用机器学习的方法来评估模型的稳健型等。另外还有计算机视觉，图像处理和深度学习。 硬件方面我们可能需要知道使用哪些传感器，如何采集传感器的数据，如何处理传感器数据，将传感器的信息进行融合。 当无人车意识到自己处于一个什么样的环境中时，它应当知道作出怎样的决策。你一定还需要控制理论和控制方法甚至车辆动力学的知识等。 在无人车涉及到的如此多的技术中，计算机视觉和图像处理是不可或缺的一部分。以优达学城无人驾驶车工程师（英文） 这门课程第一学期中涉及的到的算法来举例说明。 第一学期3个项目涉及到的算法都是较为基础的，无人车公司基本都会用到,并且这些技术也相对成熟。 在这个项目中，需要使用 Python 和 OpenCV 来检测图片中的道路线，涉及到的方法有颜色选择，切图（ROI, region of interest selection），灰度处理，高斯模糊，边缘检测和霍夫变换直线检测。如果能够识别一张图片中的道路线，那么对于行驶中的车辆上摄像头实时采集的图像也可以实时分析。   无人车也是要懂得交通规则的，所以识别交通标志并根据标志的指示执行不同指令也非常重要。这个识别交通标志的项目就需要使用深度学习（卷积神经网络）的方法来完成。 高级的道路线检测需要计算相机校准矩阵和失真系数对原始图像的失真进行校正；使用图像处理方法，将图像进行二值化处理；应用透视变换来纠正二值化图像（“鸟瞰视图”）；检测车道并查找确定车道的曲率和相对于中心的车辆位置；将检测到的车道边界扭曲回原始图像；可视化车道，输出车道曲率和车辆位置。 还有一个非常有意思的方法是行为克隆（Behavioral Cloning），你在游戏模拟器中开车，并收集道路图像和方向盘角度等信息，然后搭建一个模型，让它来学习你开车的方法。最后效果如何不仅取决于模型的质量还取决于你开车的技术，你能明显看到模型开车的方式中有自己的习惯，这里有一段我做的项目成果（https://www.bilibili.com/video/av7880273/）可以参考！ 此外，这门课后面的学习还会涉及到传感器融合，定位，路径规划和控制方法等不同的知识和技术方面。这些都将会在第二和第三个学期逐步开放。 所以，如果题主刚刚进入这个领域不如就从基础的方法开始不断探索吧！欢迎交流~ 感谢 Udacity 学生 @杨培文 投稿
泻药。。 前面 已经说了很多了，我也算关注自动驾驶已久，简单说说自己的看法吧。 自动驾驶是一个说小可小说大可大的topic，很久以前Stanford就已经拿mlp做end to end的自动驾驶了。当然那是个很粗糙的实现。近年也有不少end to end的工作，比如George Hotz的那套，NVIDIA那套，好像特斯拉也是吧。。。如果说要实现一个还“ok”的自动驾驶系统，学好cnn就够咯。 然而即使end to end的方法能够处理99％的情况，剩下的1%依然会造成大问题。Shashua在最近的几次报告里都说到目前自动驾驶还是有必要依照传统的perception-planning-controlling三步来，这三个subsystem应该就是题主想要的答案了。 再具体下去，perception部分SLAM算是一种解决办法，目前来看视觉辅助激光应该是短期内不会被替代的方案了，另外加上imu, 编码器, GPS等各种外部传感器的信息融合，感知部分基本上可以做到满足需求了。这里要学习的内容就包括计算机视觉，最优估计理论，以及各种传感器本身的特性。 planning部分，可以把它归结为一个搜索问题。就是在地图已知的情况下，可以把地图网格化，让机器人走格子。A*, D*, rrt这些都是常用的了。然而传统的方法在复杂的环境下依然解决的不是很好，解决思路可以参考deepmind最近玩游戏的几篇文章，目前这还属于未解决问题。这里要学习的内容主要常用的搜索算法，以及搜索规模难以控制之后的解决方法。 control部分我了解的不算多，经典的肯定当属PID了，而且在绝大多数情况下PID应该已经可以handle。更先进的方法肯定有，希望有懂的同学可以补充补充吧。按照我导师所说，控制应该算是已经解决的问题了，不需要太多的研究。 至于基础知识模电数电单片机，c语言数据结构算法，微积分线代概率论就必须要有概念了吧。。。不过术业有专攻，每一个方向深究下去还有很多很多需要学的，可以找一个感兴趣的方向深做下去。 还在学习中，欢迎多多交流。