1.背景
近日分享如何高新转型到自动驾驶领域时,几位朋友不约而同的问到了我同一个问题:“L2~L4自动驾驶的岗位都有哪些?对应着具体的什么 工作内容?需要哪方面的技能?”今天就针对这个大家都很想了解的话题做个分享。
首先介绍下自动驾驶的系统框图(简化版)让大家对自动驾驶有个全局的概念
接下来,我们分为两大类进行介绍:算法工程师和非算法类工程师。算法工程师激光SLAM算法工程师视觉SLAM算法工程师多传感器融合算法工程师机器学习算法工程师计算机视觉算法工程师自然语言处理算法工程师决策算法工程师规划算法工程师控制算法工程师非算法类工程师软件平台开发工程师系统工程师功能安全工程师标定工程师仿真环境工程师测试工程师数据工程师UI开发工程师下面详细介绍每个岗位的工作职责和需要学习的内容
2.算法工程师
2.1.激光SLAM算法工程师
岗位介绍:采集激光传感器数据,根据点云数据对自动驾驶车辆的周围环境进行地图构建。负责实现基于激光传感器的SLAM算法设计和开发,能够覆盖各种复杂场景的高精度地图更新和制作。技能要求:使用c、c++编程;需要有滤波算法知识:ESKF、EKF、UKF等;同时需要学习G2O、ceres等用来优化非线性误差函数的c++框架。熟悉开源SLAM框架,如GLoam、kimera、VINS等优先;
2.2.视觉SLAM算法工程师
岗位介绍:以VSLAM为基础,研发机器人自主导航定位算法,包括基于激光雷达、陀螺仪、里程计、视觉等多信息融合,构建机器人运动模型技能要求:学习常用的VSLAM算法,如ORB-SLAM、SVO、DSO、MonoSLAM,VINS以及RGB-D等;ROS机器人操作系统;需要有滤波算法知识:ESKF、EKF、UKF等;同时需要学习G2O、ceres等用来优化非线性误差函数的c++框架。
2.3.多传感器融合算法工程师
岗位介绍:将相机、激光雷达、毫米波雷达等多传感器的信息处理和融合,提高自 主驾驶车的环境感知能力;负责基于多源信息融合的目标检测、跟踪、识别与定位;负责基于多源信息融合的环境特征抽取,为地图构建提供支持;为基于基于多源信息融合的导航定位提供支持。技能要求:掌握camera、毫米波雷达、激光雷达、惯性导航等相关数据解析融合算法;计算机信息科学、电子工程或数学相关专业本科及以上学历,具备扎实的计算机理论基础精度相机模型、多视觉几何、Bundle Adjustment 原理,有SfM、几何测距等项目经验精通C/C++,熟悉Matlab,良好的面向对象编程思想和编码习惯熟悉IMU、GPS、DR等惯导定位算法框架熟悉IMU、GPS、车身系统原理、硬件特性、标定算法
2.4.机器学习算法工程师
岗位介绍:该方向主要负责车辆行驶过程中产生的数据在工程上的应用,偏向于数据分析方向,如车辆行驶里程的影响分析、大数据分析建模等等。技能要求:Python,C/C++学习机器学习的基础理论算法,如 LR、GBDT、SVM、DNN等等;学习scikit-learn 等传统机器学习框架的模型训练;熟悉 PyTorch、TensorFlow等深度学习框架(偏神经网络部分)等等。
2.5.计算机视觉算法工程师
岗位介绍:该方向主要基于摄像头传感器,主要包括:车道线检测、车辆等障碍物检测、可行驶区域检测、红绿灯等交通信息检测等等。技能要求:C/C++,Python,OpenCV;需要机器学习的基本算法 ( 降维、分类、回归等 );需要学习深度学习,深度学习框架;学习计算机视觉和图像处理的常用方法 ( 物体检测、跟踪、分割、分类识别等 ) 。
2.6.自然语言处理算法工程师
岗位介绍:该方向主要负责车载场景下的语音识别,语音交互设计等等技能要求:学习机器学习算法、深度学习算法(RNN);自然语言处理基本任务(分词、词性标注、句法分析、关键字抽取)需要使用机器学习方法聚类、分类、回归、排序等模型解决文本业务问题;熟悉 PyTorch、TensorFlow等深度学习框架(偏RNN部分)等等。
2.7.决策算法工程师
岗位介绍:自动驾驶的决策是将感知模块传递的信息,转化成车辆的行为,达到驾驶的目标。例如,汽车加速、减速、左转、右转、换道、超车都是决策模块的输出。决策需要考虑到汽车的安全性和舒适性,保证乘客的安全的情况下,尽快到达目标地点。技能要求:c/c++/python,熟悉ROS系统;学习常用的决策算法,如决策状态机、决策树、马尔可夫决策过程,POMDP等;如果往深里学的话,需要熟悉机器学习算法(RNN、LSTM、RL),掌握至少一种深度学习框架(比如gym或者universe等深度强化学习平台);熟悉车辆运动学和动力学模型。
2.8.规划算法工程师
岗位介绍:规划包括路径规划和速度规划规划算法中,自动驾驶车辆首先通过路径规划确定车辆可行驶的路径,然后选择该路径确定可行驶的速度。技能要求:c/c++/python,ROS机器人操作系统;(有些公司是用Matlab/simulink开发的)学习常见路径规划算法,例如A、D、RRT等;学习一些曲线的表示方法,如:五次曲线、回旋线、三次样条曲线、B样条曲线等;如果往深里学的话;学习轨迹预测算法,如MDP、POMDP、Came Theory等;学习深度学习和强化学习技术也是加分项,例如RNN、LSTM、Deep Q-Learning等;有数学理论基础和背景,熟悉车辆运动学和动力学模型。
2.9.控制算法工程师
岗位介绍:一般是对车辆横纵向动力学建模,然后开发控制算法,实现车辆运动控制等;这个岗位跟车辆打交道较多,对于传统车厂转型到自动驾驶领域的伙伴来说,是个很好的切入机会。技能要求:C/C++、Matlab/Simulink学习自动控制理论基础,学习现代控制理论;学习PID、LQR、MPC算法;学习车辆运动学、动力学模型,对汽车的底盘有一定了解;学习CarSim等仿真软件;学习ACC、AEB、APA、LKA、LCC等辅助驾驶功能开发的是加分项;拥有实车调试经验也是加分项。
3.非算法类工程师
3.1.软件平台开发工程师
岗位介绍:设计和实现自动驾驶软件平台,包括内核修改/扩展、驱动程序实现/增强、中间件实现/增强、系统集成、性能/功耗优化、压力/稳定性/符合性测试;负责搭建系统架构、编写底层驱动程序;负责视觉相关算法在嵌入式处理器(GPU、DSP、ARM等平台)上的代码实现及性能优化、测试和维护;协助算法工程师完成算法在嵌入平台上的移植、集成、测试和优化。技能要求:C/C++编程技巧、Python;具有嵌入式操作系统和实时操作系统的内核或驱动开发经验,熟悉QNX、ROS;熟悉软件调试和debug工具;了解车辆ADAS ECU和传感器,如雷达、摄像头、超声波和激光雷达;熟悉通用诊断服务(UDS)、控制器局域网(CAN);熟悉通信协议(CAN、UDS、DoIP、SOME/IP、DDS、MQTT、REST等)是加分项。
3.2.系统工程师
岗位介绍:负责客户需求对接,以及与内部开发人员的需求释放;负责无人驾驶软件系统框架构建 ;负责模块化、可验证的系统软件架构设计和实时性能优化;与硬件、算法和测试团队合作,集成并优化自动驾驶系统。技能要求:拥有扎实的计算机基础理论知识(如:自动控制、模式识别、机器学习、计算机视觉、点云处理);具有嵌入式操作系统和实时操作系统的内核或驱动开发经验;具备很好的沟通表达能力和团队合作意识
3.3.功能安全工程师
岗位介绍:在产品全生命周期内对产品的功能安全进行支持负责无人/自动驾驶系统产品的功能安全系统设计,并对现有流程提出改进意见;负责无人/自动驾驶系统的危险分析(HARA, FMEAs, FMEDA, FTA);负责无人/自动驾驶系统的安全目标定义;负责无人/自动驾驶系统的安全需求定义;技能要求:精通ISO26262并有自动驾驶或者ADAS系统功能安全项目实施经验;(在传统车厂做功能安全想要转行的也可以考虑);了解FMEA,FMEDA,FMEA-MSR,FTA等相应的方法;
3.4标定工程师
岗位介绍:负责自动驾驶多传感器标定,包括GPS、IMU、LiDAR、Camera、Radar 和 USS 等;设计实现传感器内参外参标定算法,搭建多传感器标定系统;负责对标定参数进行相关车辆测试,给出测试报告。技能要求:C++编程, 熟悉 Linux及ROS系统;有传感器标定工作经历,熟悉视觉或激光 SLAM 算法;
3.5仿真环境工程师
岗位介绍:该方向需要参与自动驾驶相关仿真系统的搭建,包括车辆动力学相关仿真,各类虚拟传感器模型和虚拟场景的建模与仿真,根据测试案例搭建测试场景,执行自动驾驶算法仿真测试等等;负责搭建无人驾驶模拟系统,对汽车、传感器、环境进行软件模拟。模拟结果将与真实数据一同用于预测汽车在真实场景中的行为;配合驾驶决策、路径规划、仿真算法等模块,实现自动驾驶闭环仿真,并可视化相关调试信息。技能要求:MATLAB/simulink、Python/C++熟练操作一种常用车辆动力学或无人车相关仿真软件,比如Perscan、Carsim、Carmaker等;熟悉机器人操作系统ROS等;有的仿真岗位纯属于做仿真,但有的岗位需要做仿真环境的开发,这样的岗位对编程要求会更高一些。
3.6测试工程师
岗位介绍:该方向主要负责自动驾驶车辆的相关测试工作,测试自动驾驶系统功能各项指标的性能,评估其边界条件和失效模式;负责自动化测试(SIL、HIL)的设计实现及智能驾驶产品的相关验证;负责根据系统或产品的功能需求制定测试用例和测试计划;负责制定完整的系统或产品的测试计划并实施,最后撰写测试报告;收集和测试系统的边界样例,对智能驾驶系统的安全性进行评估,对技术提出合理的反馈。技能要求:熟悉Ubuntu/Linux操作系统,会写python脚本熟悉CAN总线;熟悉测试用例的编写方法和技巧;熟悉图像识别算法,熟悉深度学习,掌握spark等大数据相关工具者加分;熟悉激光雷达,毫米波雷达,超声波探头和摄像头的应用是加分项。
3.7大数据开发工程师
岗位介绍:数据包括后台数据架构和前台呈现。一辆自动驾驶车每天都要生成1个T的数据量。数据该怎样快速清洗、提炼、总结,比如怎样迅速找出一次路测中最重要的几次介入(disengagements)。从而更高效的帮助工程师测试。负责自动驾驶大数据平台系统的设计、开发和优化;负责自动驾驶数据标注与处理流程的可视化工具开发,自动化标注平台的设计与研发。技能要求:具备扎实的数据结构及算法功底;精通Java/Python/C++等至少一门高级编程语言;熟悉Linux开发环境;有基于SQL或No-SQL数据库的应用程序的设计、开发经验;熟悉REST服务及Web标准,熟悉一种主流前端开发框架,如React/AngularJS,能独立构建前端应用者加分;熟悉自动驾驶及相关的Lidar、Camera等传感器数据者加分。
3.8UI开发工程师
岗位介绍:每个公司都需要搭建内部工具,用于验证整车开发。也需要给远程控制中心做各种交互页面,通过一个UI远程控制自动驾驶车。同时也包括车厢内为乘客准备的UI。喜欢设计或者擅长前端的朋友可以考虑。技能要求:具有优秀的审美和丰富的视觉表现力;精通色彩、图形、信息和GUI设计原则及方法。
4.结尾
最后,国家政策正在大力推广新能源智能化汽车,希望越来越多的伙伴一起加入到自动驾驶行业。
原文链接:https://mp.weixin.qq.com/s/d41a5vytj4lvmp3go6in_g
以上就是全面介绍自动驾驶岗位——史上最全篇章的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1466937.html