史上超全自动驾驶岗位介绍

本文经自动驾驶之心公众号授权转载,转载请联系出处。

1.背景

近日分享如何高新转型到自动驾驶领域时,几位朋友不约而同的问到了我同一个问题:“L2~L4自动驾驶的岗位都有哪些?对应着具体的什么 工作内容?需要哪方面的技能?”今天就针对这个大家都很想了解的话题做个分享。

首先介绍下自动驾驶的系统框图(简化版)让大家对自动驾驶有个全局的概念

史上超全自动驾驶岗位介绍插图1

  • 接下来,我们分为两大类进行介绍:算法工程师和非算法类工程师。
  • 算法工程师
  1. 激光SLAM算法工程师
  2. 视觉SLAM算法工程师
  3. 多传感器融合算法工程师
  4. 机器学习算法工程师
  5. 计算机视觉算法工程师
  6. 自然语言处理算法工程师
  7. 决策算法工程师
  8. 规划算法工程师
  9. 控制算法工程师
  • 非算法类工程师
  1. 软件平台开发工程师
  2. 系统工程师
  3. 功能安全工程师
  4. 标定工程师
  5. 仿真环境工程师
  6. 测试工程师
  7. 数据工程师
  8. UI开发工程师
  • 下面详细介绍每个岗位的工作职责和需要学习的内容

2.算法工程师

2.1.激光SLAM算法工程师

史上超全自动驾驶岗位介绍插图3

  • 岗位介绍:
  • 采集激光传感器数据,根据点云数据对自动驾驶车辆的周围环境进行地图构建。
  • 负责实现基于激光传感器的SLAM算法设计和开发,能够覆盖各种复杂场景的高精度地图更新和制作。
  • 技能要求:
  • 使用c、c++编程;
  • 需要有滤波算法知识:ESKF、EKF、UKF等;
  • 同时需要学习G2O、ceres等用来优化非线性误差函数的c++框架。
  • 熟悉开源SLAM框架,如GLoam、kimera、VINS等优先;

2.2.视觉SLAM算法工程师

史上超全自动驾驶岗位介绍插图5

  • 岗位介绍:
  • 以VSLAM为基础,研发机器人自主导航定位算法,包括基于激光雷达、陀螺仪、里程计、视觉等多信息融合,构建机器人运动模型
  • 技能要求:
  • 学习常用的VSLAM算法,如ORB-SLAM、SVO、DSO、MonoSLAM,VINS以及RGB-D等;
  • ROS机器人操作系统;
  • 需要有滤波算法知识:ESKF、EKF、UKF等;
  • 同时需要学习G2O、ceres等用来优化非线性误差函数的c++框架。

2.3.多传感器融合算法工程师

史上超全自动驾驶岗位介绍插图7

  • 岗位介绍:
  • 将相机、激光雷达、毫米波雷达等多传感器的信息处理和融合,提高自 主驾驶车的环境感知能力;
  • 负责基于多源信息融合的目标检测、跟踪、识别与定位;
  • 负责基于多源信息融合的环境特征抽取,为地图构建提供支持;为基于基于多源信息融合的导航定位提供支持。
  • 技能要求:
  • 掌握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.计算机视觉算法工程师

史上超全自动驾驶岗位介绍插图9

  • 岗位介绍:
  • 该方向主要基于摄像头传感器,主要包括:车道线检测、车辆等障碍物检测、可行驶区域检测、红绿灯等交通信息检测等等。
  • 技能要求:
  • C/C++,Python,OpenCV;
  • 需要机器学习的基本算法 ( 降维、分类、回归等 );
  • 需要学习深度学习,深度学习框架;
  • 学习计算机视觉和图像处理的常用方法 ( 物体检测、跟踪、分割、分类识别等 ) 。

2.6.自然语言处理算法工程师

  • 岗位介绍:
  • 该方向主要负责车载场景下的语音识别,语音交互设计等等
  • 技能要求:
  • 学习机器学习算法、深度学习算法(RNN);
  • 自然语言处理基本任务(分词、词性标注、句法分析、关键字抽取)
  • 需要使用机器学习方法聚类、分类、回归、排序等模型解决文本业务问题;
  • 熟悉 PyTorch、TensorFlow等深度学习框架(偏RNN部分)等等。

2.7.决策算法工程师

史上超全自动驾驶岗位介绍插图11

  • 岗位介绍:
  • 自动驾驶的决策是将感知模块传递的信息,转化成车辆的行为,达到驾驶的目标。例如,汽车加速、减速、左转、右转、换道、超车都是决策模块的输出。决策需要考虑到汽车的安全性和舒适性,保证乘客的安全的情况下,尽快到达目标地点。
  • 技能要求:
  • c/c++/python,熟悉ROS系统;
  • 学习常用的决策算法,如决策状态机、决策树、马尔可夫决策过程,POMDP等;
  • 如果往深里学的话,需要熟悉机器学习算法(RNN、LSTM、RL),掌握至少一种深度学习框架(比如gym或者universe等深度强化学习平台);
  • 熟悉车辆运动学和动力学模型。

2.8.规划算法工程师

史上超全自动驾驶岗位介绍插图13

史上超全自动驾驶岗位介绍插图15

  • 岗位介绍:
  • 规划包括路径规划和速度规划
  • 规划算法中,自动驾驶车辆首先通过路径规划确定车辆可行驶的路径,然后选择该路径确定可行驶的速度。
  • 技能要求:
  • c/c++/python,ROS机器人操作系统;(有些公司是用Matlab/simulink开发的)
  • 学习常见路径规划算法,例如A、D、RRT等;
  • 学习一些曲线的表示方法,如:五次曲线、回旋线、三次样条曲线、B样条曲线等;
  • 如果往深里学的话;学习轨迹预测算法,如MDP、POMDP、Came Theory等;
  • 学习深度学习和强化学习技术也是加分项,例如RNN、LSTM、Deep Q-Learning等;
  • 有数学理论基础和背景,熟悉车辆运动学和动力学模型。

2.9.控制算法工程师

史上超全自动驾驶岗位介绍插图17

  • 岗位介绍:
  • 一般是对车辆横纵向动力学建模,然后开发控制算法,实现车辆运动控制等;
  • 这个岗位跟车辆打交道较多,对于传统车厂转型到自动驾驶领域的伙伴来说,是个很好的切入机会。
  • 技能要求:
  • 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仿真环境工程师

史上超全自动驾驶岗位介绍插图19

  • 岗位介绍:
  • 该方向需要参与自动驾驶相关仿真系统的搭建,包括车辆动力学相关仿真,各类虚拟传感器模型和虚拟场景的建模与仿真,根据测试案例搭建测试场景,执行自动驾驶算法仿真测试等等;
  • 负责搭建无人驾驶模拟系统,对汽车、传感器、环境进行软件模拟。模拟结果将与真实数据一同用于预测汽车在真实场景中的行为;
  • 配合驾驶决策、路径规划、仿真算法等模块,实现自动驾驶闭环仿真,并可视化相关调试信息。
  • 技能要求:
  • 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.结尾

最后,国家政策正在大力推广新能源智能化汽车,希望越来越多的伙伴一起加入到自动驾驶行业。

史上超全自动驾驶岗位介绍插图21

原文链接:https://mp.weixin.qq.com/s/d41a5VYtJ4lvMP3GO6In_g

文章来源:51cto

联系邮箱:idea2003@foxmail.com

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注