干货第一时间送达
目前车企正在经历着前所未有的改革,包括前两天奥迪的裁员计划:将在2025年裁员9500人节省成本,并加速企业进行电动化和智能化转型改革。目前自动驾驶(智能驾驶)是车企转型的目标方向之一,因此也是机械工程、车辆工程等传统专业人员转型的方向之一,本文针对自动驾驶未来就业的岗位,讲述如何入门自动驾驶技术,以及自动驾驶技术都有哪些方向,以便于读者在转型中做好职业规划。
以下从自动驾驶方向未来就业的角度,剖析转型人员都有哪些方向可以选择。
下图为自动驾驶方向的所有岗位,方向总共分为三大类:算法、仿真和测试方向。其中算法类方向占自动驾驶未来就业的大多数岗位(本人坑位:计算机视觉算法工程师)。
以下针对上述所有方向,一一进行介绍。
首先解释一下这个方向是干什么的,SLAM英文全名叫simultaneous localization and mapping,中文名叫同步定位与建图。可以看一下下面的百度百科的解释。
链接:https://baike.baidu.com/item/SLAM/7661974?fr=aladdin
SLAM算法属于感知—规划—控制中的感知类算法。该算法主要用于自动驾驶车辆的根据点云数据对车辆周围环境的地图构建。而其中的点云数据是由两种传感器来进行采集的,包括激光雷达和摄像头,所以SLAM算法其实又分了两大方向:
视觉SLAM算法(VSLAM)和激光SLAM算法(Lidar SLAM)。
所以又细分了下面的两个岗位(选择其中之一学习即可)。
关于激光SLAM的效果,可以看下面的视频,激光SLAM的传感器即为激光雷达,视频中花花绿绿的就是激光雷达的点云数据了,然后对周围环境进行地图构建:
♥激光SLAM所需要学习的知识
操作系统:Linux
编程:使用c、c++、matlab一种或多种语言(matlab不是很建议)
理论:需要学习很多滤波算法,如:ESKF、EKF、UKF等。同时需要学习G2O、ceres等用来优化非线性误差函数的c++框架。
关于视觉SLAM的效果,可以看下面的视频。视觉SLAM中的传感器即为摄像头,摄像头如果使用深度相机,可以直接获取障碍物的距离,生成点云数据。当然也有用单目、双目、鱼眼摄像机的 视觉SLAM ,这些摄像头需要用其他的方法才能间接的获取周围障碍物的距离。
♥视觉SLAM所需要学习的知识:
操作系统:Linux
编程:c、c++
理论:学习常用的vSLAM算法,如ORB-SLAM、SVO、DSO、MonoSLAM,VINS以及RGB-D等;ROS机器人操作系统;还需要学习很多滤波算法,如:ESKF、EKF、UKF等。同时需要学习G2O、ceres等用来优化非线性误差函数的c++框架。
♥视觉SLAM学习资料推荐
入门级神书《视觉SLAM十四讲》,同时书的作者在B站上直播过相关SLAM十四讲的课程,可以去搜索一下,如果想要B站直播课云盘的,云盘链接总是失效,在公众号后台回复【自动驾驶-SLAM】关键字获取吧。本书作者也有过培训课程,根据自己的需求可以去看看他的付费课程。
目前激光 SLAM 是比较成熟的定位导航方案,但其传感器价格昂贵,我们知道汽车是一个量产的东西,如果成本降不下来,其也会有很大的阻力,目前特斯拉等公司已经放弃了激光雷达的方案,采用纯视觉的自动驾驶方案。
在实际的自动驾驶车辆上,SLAM 其实是需要多个传感器进行融合的,取长补短,比如GPS、IMU(惯性导航)等传感器融合的方案,所以自动驾驶算法方向又出现了下面的一个新的岗位。
看一下该方向的行业要求:
掌握camera、毫米波雷达、激光雷达、惯性导航等相关数据解析融合算法;熟悉感知融合算法发展趋势,有神经网络等人工智能开发背景者优先。(来源:华为技术有限公司招聘信息)
很明显,数据融合要求更高,既包括前面激光SLAM和视觉SLAM,同时还需要掌握其他传感器的用法,所以这个方向难度不小,所涉及的知识非常多。
自动驾驶的决策是指给将知模块传递的信息,如何决策汽车的行为达到驾驶的目标。例如,汽车加速、减速、左转、右转、换道、超车都是决策模块的输出。决策需要考虑到汽车的安全性和舒适性,保证尽快到达目标地点,还需要在旁边的车辆恶意的情况下保证乘客的安全。
♥决策算法需要学习的知识:
操作系统:Linux
编程:c/c++/python
理论:学习常用的决策算法,如决策状态机、决策树、马尔可夫决策过程,POMDP等;如果往深里学的话,还需要学习深度学习,学习深度学习框架等。
其实决策和规划是经常要一起做的,我们继续往下看,看看规划方向的知识要求。
规划包括路径规划和速度规划,一般都是做路径规划的比较多。即自动驾驶路径规划工程师。
规划算法中,自动驾驶车辆首先通过路径规划确定车辆可行驶的路径,然后选择该路径确定可行驶的速度,路径规划视频视频如下。
♥路径规划算法需要学习的知识:
操作系统:Linux
编程:c/c++/python
理论:学习常见路径规划算法,例如A*、D*、RRT等;如果往深里学的话;学习轨迹预测算法,如MDP、POMDP、Came Theory等;学习ROS机器人操作系统;学习深度学习和强化学习技术也是加分项,例如RNN、LSTM、Deep Q-Learning等。
前面提到决策和规划其实要经常一起做的,所以经常会出现两者结合的方向:
看一下该方向的行业要求:
在上述熟悉如MDP、POMDP、Game Theory等轨迹预测算法;熟悉常见路径规划算法,例如A*、D*、RRT等;具备Linux环境下的C++开发;熟悉ROS开发环境;参加过机器人领域相关研发及竞赛;熟练掌握CarSim、CarMaker等汽车仿真软件使用方法;有强数学理论基础和背景。
(来源:百度自动驾驶部招聘信息)
控制算法方向偏向于传统方向,一般是对车辆横纵向动力学建模,然后开发控制算法,实现车辆运动控制等。
♥控制算法需要学习的知识:
操作系统:Windows
编程: C/C++、Matlab/Simulink
理论:学习自动控制理论基础;学习车辆动力学模型;学习CarSim等仿真软件;学习ACC、AEB、APA、LKA、LCC等辅助驾驶功能开发的是加分项。
以下是基于Carsim、Matlab/simulink开发的车辆控制演示:
视频链接:
https://www.bilibili.com/video/av50574168/?redirectFrom=h5
实际的工作中,有的时候规划和控制其实不是强烈的分开的,而是相互结合,所以也会见到这样的方向:自动驾驶控制规划算法工程师。
自动驾驶感知部分是自动驾驶目前最有挑战的部分,其目前的岗位包括:机器学习算法工程师、计算机视觉算法工程师和自然语言处理算法工程师。这三个方向也属于人工智能的三大方向。在自动驾驶车辆中,主要包括:车道线检测、车辆等障碍物检测、可行驶区域检测、红绿灯等交通信息检测、车内语音识别等等,前面讲的SLAM算法也属于感知部分。
3.10 机器学习算法工程师
该方向主要负责车辆行驶过程中产生的数据在工程上的应用,偏向于数据分析方向,如车辆行驶里程的影响分析、大数据分析建模等等。
♥机器学习算法需要学习的知识:
操作系统:Windows、Linux
编程: Python(主要) 、C/C++、
理论:学习机器学习的基础理论算法,如 LR、GBDT、SVM、DNN等等;学习scikit-learn 等传统机器学习框架的模型训练;熟悉 PyTorch、TensorFlow等深度学习框架(偏神经网络部分)等等。
3.11 计算机视觉算法工程师
该方向主要基于摄像头传感器,主要包括:车道线检测、车辆等障碍物检测、可行驶区域检测、红绿灯等交通信息检测等等。如下如下面视频演示所示。
视频链接:https://video.tudou.com/v/XMTczMDkzNTU4MA==.html
视频链接:
https://v.youku.com/v_show/id_XNDE4Nzk4MDgwNA==.html
♥视觉算法需要学习的知识:
操作系统:Linux
编程:C/C++,Python,opencv
理论:需要机器学习的基本算法 ( 降维、分类、回归等 );需要学习深度学习,深度学习框架;学习计算机视觉和图像处理的常用方法 ( 物体检测、跟踪、分割、分类识别等 ) 。
3.12 自然语言处理算法工程师
该方向主要负责车载场景下的语音识别,语音交互设计等等,下面为车载语音识别系统的演示视频。
视频链接:https://v.qq.com/x/cover/kdl3s0o0sw3gnk3/d0018fpciky.html
♥语音算法需要学习的知识:
操作系统:Linux
编程:C/C++,Python
理论:学习机器学习算法、深度学习算法(RNN),自然语言处理基本任务(分词、词性标注、句法分析、关键字抽取),需要使用机器学习方法聚类、分类、回归、排序等模型解决文本业务问题;熟悉 PyTorch、TensorFlow等深度学习框架(偏RNN部分)等等。
该方向需要参与自动驾驶相关仿真系统的搭建,包括车辆动力学相关仿真,各类虚拟传感器模型和虚拟场景的建模与仿真,根据测试案例搭建测试场景,执行自动驾驶算法仿真测试等等。以下为基于Carla仿真平台的自动驾驶仿真演示视频。
♥仿真方向需要学习的知识:
操作系统:Linux
编程:MATLAB/simulink、Python/C++
理论知识:熟练操作一种常用车辆动力学或无人车相关仿真软件,比如Perscan、Carsim、Carmaker等。熟悉机器人操作系统ROS等。有的仿真岗位纯属于做仿真,但有的岗位需要做仿真环境的开发,这样的岗位对编程要求会更高一些。
该方向主要负责自动驾驶车辆的相关测试工作,测试自动驾驶系统功能各项指标的性能,评估其边界条件和失效模式;根据研发人员对数据的需求,制作采集文档,完成数据采集等操作。其中包括软件、硬件等测试,也需要熟悉如Linux编程测试环境等等。
上述内容,如有侵犯版权,请联系作者,会自行删文。
交流群
欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉、深度学习、激光SLAM、VSLAM、三维重建、点云后处理、图像处理、手眼标定、自动驾驶、位姿估计等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。
▲长按加群
▲长按关注我们