一、理想汽车 CEO 李想发布全员信, 2023 年底落地端到端城市辅助驾驶,哪些信息值得关注?
本狐为知友们带来更多消息:
李想:2023年底落地端到端城市辅助驾驶
2023-01-29 17:01:57
《车市纵览》是车市物语旗下自媒体,始终关注海内外所有汽车企业。日前,理想汽车CEO李想致员工的内部信在网上曝光,其中提到城市NOA将会在2023年底开始落地。
李想表示,2023年软件2.0的技术产品落地将在中国正式开启。他所说的软件2.0,指的是机器学习人类(包含感知、决策、执行、反馈的闭环),云端训练算法,机器使用算法,机器服务人类。他还提到,在最重要的智能电动车领域,基于BEV感知和Transformer模型,实现端到端训练的城市NOA导航辅助驾驶(不依赖HDMAP)会在2023年底开始落地,这将是软件2.0对于物理世界改造的重要起点。
目前,理想L9、理想L8、理想L7均标配理想AD智能驾驶能力,其中导航辅助驾驶(NOA)基于高精度定位能力,可以实现自主超车、调速与出入匝道,目前该项功能主要应用在高速公路等相对封闭的道路上。而李想在内部信中所说的城市NOA导航辅助驾驶,将会面临更加复杂的路况条件和场景。
李想:2023年底落地端到端城市辅助驾驶二、理想汽车创始人李想呼吁统一自动驾驶中文名称,以避免误解,你怎么看?
1,L1~L5对应起什么中文名重要吗? 我觉得如同脱裤子放屁 。2,就用L1~L5这种数字量化不是更好?更容易让车主看到车企距离L5的差距,省得被忽悠。3,最重要的是销售告诉车主这个车是什么水平,自己的能力边界白纸黑字的写清楚,别整虚头巴脑的话术。4,按照销售圈定的能力边界,万一使用过程中发生事故,因为圈定的功能未达标导致的事故,车企负责所有的责任,即使走了车主的保险,车企也要补给车主。5,补给车主后,因为已经证明了能力不合格, 车企承诺把这部分“自动驾驶”对应的费用全额退给车主。
数字量化更清晰,不然为毛SAE整出L0~L5,现在何必又多此一举呢?除非是觉得L2距离L5看起来太遥远,还是想用文字来模糊能力边界。
三、秋招拿到中国重汽智能驾驶岗offer要不要?未来前景如何?以后想跳槽能去哪些企业?
看你自己背景,岗位不错,如果能去到智能驾驶是个机会的话就去吧,如果可以轻轻松松去到智能驾驶可以在考虑考虑其他的。
四、985车辆工程想往无人驾驶,智能车,车联网方向发展,大学期间应该具体自学哪些课程and知识?
我在北美读硕士期间开始零基础自学无人驾驶与深度学习,用了两年半的时间便拿到了北美奔驰自动驾驶Senior的职位,根据我自学的经验,我认为学习自动驾驶一定要先从大局出发,再找局部深入。这个问题下的有些回答都是让新手们一上来先学一堆工具,或者开始直接上手OpenCV, 抑或者直接开始硬啃autoware/apollo代码,个人认为是不可取的。因为自动驾驶很杂,很大,单车智能从算法层面一般包含着感知、定位、规划、控制几大模块,偏工程一些的岗位基本是仿真和特定的功能开发, 如果上升到多车则还涉及到V2X、协同驾驶等话题,每个模块都work自动驾驶才能玩得转。所以如果要做一个合格的自动驾驶工程师,首先要对整个系统有个大概的了解,同时对这些模块都有了一些理解后,你才能从其中选出一个最感兴趣的模块进行深入研究,成为该领域的专家。个人认为题主想要自学无人驾驶,可以大致分为三大阶段。注:本回答主要针对无人驾驶软件开发方向, 适用于大多数专业,以下提到的大部分课程本人都亲自上过一遍,质量可以保证。
第一阶段: 自动驾驶整体认知与基础知识储备
正如前文所讲,第一阶段首先是要对自动驾驶有个整体的认知,同时夯实自己的基础知识。所以这里我首先强烈推荐Udacity的一个课程(我在这里附上相关的课程代码) :
Become a Self-Driving Car EngineerGitHub - ndrplz/self-driving-car: Udacity Self-Driving Car Engineer Nanodegree projects.这个课程虽然略贵,但是把感知、传感器融合、定位、规划和控制系统都cover了,而且每一章节都有相应的编程作业,整体比较硬核,很适合作为开篇。不过这个课程也不是一点基础也不需要,至少对python, C++与线性代数有一定的了解,如果你对这些没有了解,建议并行学习一下相关基础课程,这里我也给出了推荐:
Python课程:
网上有很多各种各样的python课程,我个人认为无论是什么python课程,你都没有必要从头学到尾,只要有个大概的概念,懂得基本用法就好,以后在实战中慢慢提升自己的代码水准。这里推荐一个B站的教程:
求知讲堂2020python+人工智能 99天完整版 学完可就业_哔哩哔哩_bilibiliC++课程:
C++是一门你可能十年也没法真正“学完”的语言,它里面有各种各样花式的用法,入手难度是要大于Python的。所以,我认为在第一阶段懂得配置C++环境,大概了解Cmake机制,知道最基础的用法和一丁点高级用法足以。这里推荐Cousera上北大的课程,这门课讲的很清楚,也没有涉及过多复杂的东西,建议从头到尾上完。
https://www.coursera.org/learn/cpp-chengxu-sheji线性代数课程:
线性代数基础在自动驾驶里面是至关重要的,这里推荐家喻户晓的MIT老爷子的线性代数课程,强烈建议从头到尾上完。
麻省理工公开课 线性代数 MIT 18.06 Linear Algebra 中英双语字幕_哔哩哔哩_bilibili看到这里,可能会有小伙伴说,自己基础很差,上面提到的课程都要恶补,应该是什么顺序呢?首先python课程比较简单,基本一周(最多两周)就可以有大概理解了,接下来便可以Udacity的无人驾驶课程+线性代数并行学习,到了后面几章会涉及C++,那个时候可以再开始学习C++课程。
上述几门课程全都学完后,还有两门课程基本也是必学的,一个是深度学习基础,另外一个是ROS开发。自动驾驶许多模块都涉及到深度学习,所以理解深度学习基础知识,会使用基本框架很重要。同时但凡搞Robotics的,都必须会ROS(机器人操作系统),这里我也有推荐课程。
深度学习:
Deep LearningROS:
ROS本身只是一门工具,没有必要投入过多时间学习,可以后面通过实战提升,所以我认为在这一阶段把官方tutorial过一遍即可。
ROS/Tutorials - ROS Wiki第一阶段小结:
如果你的基础较差,这一阶段的学习尤为重要,如果没有这些基础知识的支撑,很难后面提升到一个较高的层次。一般来说这一阶段大概花费6-8个月的时间,但如果你的时间较为紧张,有一定的基础,压缩到4-6个月也是有可能的.
第二阶段: 实战训练+特定模块的进阶知识
到了这一阶段后,你对自动驾驶已经有了一个大概的认知,是时候选择一个特定的领域进行深入了。那么如何选择适合自己的领域呢?个人认为应该尽量抛开专业的限制,从兴趣+前景来选择。拿传统的车辆工程来说,一般课程设置十分广,但是都不深,大多数与自动驾驶最核心的软件开发无关,这个专业恐怕只有在控制方向相对有优势,但这样一来就限制很大了。
选好了你想深入的领域后,接下来就要做一些hands-on的项目,提高自己的实战水平。这一阶段找实战项目的方式有两个:第一个是找到相关领域的老师,在他的组下做项目。在老师底下做项目的好处是一般会有师兄师姐带,能有机会浏览大量的文献,写一定数量的代码,运气好的话还能发一两篇不错的论文,成为你以后拿面试的筹码。第二个是组队参加规模较大、较为正规的智能汽车相关的竞赛,这一种一般对你的工程能力的提升会有较大帮助。
在这一阶段除了多多实战外,还要同时注意增强你在你选择的领域的纵向知识。在这里我列了几个不同方向的优质网课,各位可以参考。
视觉感知方向
这一方向其实是属于计算机视觉的分支,所以对计算机视觉的基础知识要掌握牢固,这里有一个推荐课程讲的比较全,也有详细的编程作业:
https://www.udacity.com/course/introduction-to-computer-vision--ud810另外OpenCV也要玩的比较熟,推荐LearnOPENCV这个网站,里面有很多免费的OpenCV C++教程:
Getting Started with OpenCV如果想做3D Lidar,那对PCL库的使用也要较为熟悉。除此之外,做这一方向还需要大量阅读文献与开源代码,对yolo object detection, 经典的图像分割算法, 比较火的vision transformer等等都要有所了解。
定位建图方向
说到定位和建图,一本不得不读的神作就是高博的《SLAM十四讲》,虽然SLAM目前主要还是在室内场景用的较多,但是里面包含了许多任何定位方式都会用到的基础知识,包括基本的相机模型、状态估计、非线性优化、图像特征匹配、滤波器等等。其实无论任何方向,我都强烈刷一遍这本书:
GitHub - gaoxiang12/slambook另外Cousera有一门网课专门讲比较传统的状态估计与定位(例如GPS+IMU+KF做定位),也是值得一刷:
State Estimation and Localization for Self-Driving Cars决策规划方向
虽然学术界有很多fancy的文章来用深度学习做决策规划,但是在工业界这一块领域还是rule-based为主,若要走这一块可以上一下cousera的Motion Planning网课,然后多多关注多伦多大佬 Raquel Urtasun(一个长得超级帅的女老师)的文章,她有很多这个方向很前沿的文章。
Motion Planning for Self-Driving Cars控制系统方向
这个可能是四大模块中我唯一没有怎么涉猎的模块,所以不能给出太多的意见。不过如果做学术想走这块要谨慎,有很多大佬告诉过我,这一块其实已经做的比较成熟了。
仿真方向
有不少工业界的大公司其实都有自己的仿真开发软件,但也有许多公司是基于开源的仿真软件。最近一段时间最流行的一款是CARLA仿真器,它支持自动驾驶全栈系统的开发,有环境渲染、传感器仿真,还可以制造交通流。如果对仿真特别感兴趣的,厚着脸皮推荐一下自己的系列课程:
史上最全Carla教程 |(一)Carla的基本架构GitHub - DerrickXuNu/Learn-Carla如果想知道如何在CARLA里开发全栈系统,使用联合仿真,甚至开发多车协同,那么强烈推荐我自己刚刚开发的一套基于CARLA-SUMO联合仿真的软件架构——OpenCDA:
GitHub - ucla-mobility/OpenCDA: OpenCDA is a generalized framework for fast developing and testing cooperative driving automation applications as well as autonomous vehicle components under Co-simulation(CARLA-SUMO).OpenCDA里自带感知、定位、规划、控制、V2X、协同变道、车队行驶的算法以及十几个测试场景,可以说搞懂了OpenCDA就等于搞懂了如何在CARLA仿真器里做完整的自动驾驶系统开发与场景测试。
其他的数学课程
无论你选择了自动驾驶哪个领域作为你的主攻方向, 这几門数学都是强烈建议上一下的。一个是凸优化, 另一个是概率课程。
斯坦福 凸优化 (Stanford EE364, Convex Optimization)【英】_哔哩哔哩_bilibilihttps://www.coursera.org/specializations/probabilistic-graphical-models第二阶段小结
这一阶段的核心在于提高你的上手能力,增加你在自动驾驶某一特定领域的知识深度, 一般来说需要大概一年的时间来做项目。
第三阶段 分水岭——找工向(实习+刷题)vs 读博向(Paper+暑研)
到了这一阶段,你大概已经进入了大三时期,这个时候你已经掌握了基础知识,并且实际做了些项目,此时最好做出个选择,是毕业后直接进入工业界工作,还是去读博深造,因为两者将会决定你接下来的两年该怎么过。
如果你是找工向,那从现在开始就要准备申请实习,同时加强自己的代码能力。有一点要记住,无论你是什么专业,只要选择自动驾驶软件开发方向,你都要按照CS学生的标准要求自己,所以刷题准备面试很重要!在开始刷题之前,基础的算法与数据结构一定要上,另外很多公司爱问并行相关的内容,也一定要记得上一下,这里推荐两门相关课程:
https://www.coursera.org/specializations/data-structures-algorithmsUdacity CS344: Intro to Parallel ProgrammingLEETCODE怎么刷我只有一个建议:尽量用C++完成所有的题目,因为搞自动驾驶十分看重你C++的技能。其他的方面我就不给予建议了,网上有很多教程。在你刷题的同时也可以开始找实习了,优先找内推,其次海投。
如果你铁了心想去读博,那么要首先了解一个残酷的现实:现在自动驾驶方向博士申请十分惨烈,我在申请博士时已经有了三年大厂工作经验,6篇论文,本硕背景也比较正统,还有一定的connection, 依旧是有许多拒信。现在申请博士各方面指标的重要排序是:Connection >> Paper > >其他指标。所以针对这一点,你在这一阶段要尽最大的努力找到去大牛实验室做研究的机会,好好表现自己,争取发出论文,就算大牛不留你下来,也愿意给你写推荐信,这个真的是至关重要。
总结
总结一下,我个人认为想成为一个优秀的自动驾驶软件开发工程师,需要满足以下几点:
- 对自动驾驶的核心模块有全面的了解
- 拥有良好的编程能力(尤其是C++与python)
- 有着不错的数学基础
- 在自己的擅长领域(例如决策规划、感知)有深度研究与开发经历
- 保持一颗热爱学习、无畏直前的赤子之心
祝题主和各位想入行的小伙伴们一切顺利!