自动驾驶仿真工程师是一个要求很高的职位,不只需要会用一些相关的软件。从招聘需求里,想成为一个足够优秀的仿真工程师,需要的技能包有哪些。
自动驾驶仿真是自动驾驶测试的重要一部分,也可归属到安全或者产品的概念范畴里。随着自动驾驶技术的成熟,产品落地开始逐渐提上日程,这个过程离不开自动驾驶测试。正规的测试(包括功能测试和产品验证)其中90%来自仿真测试,9%来自封闭测试场测试,1%来自开放道路实车测试。这个比例不一定准确但是可以看出仿真测试的重要地位,现阶段的开发大部分来自实车测试,特别是对于没办法构建仿真平台的初创公司,行业中的巨头已经早早进入仿真阶段,从而快速完成迭代升级。
现阶段大规模的实车测试很不现实。一次实车测试,场地、人力、实验设备等投入,大部分公司是承担不起的。另外,实车测试非常低效周期长,测试里程什么时候才能达到10^9数量级?实车测试安全性也不能保证,构造一个边缘场景,原型车、人撞了怎么办?实车测试的数据也比较难利用,系统在处理某个场景出现bug时,工程师能得到的只是bag数据,对于高交互的复杂场景,重播是受限制的。
随着软件工程的发展,传感器仿真、动力学仿真等建模技术的成熟,仿真平台这几年隐隐约约有井喷之势。当下对于开源的自动驾驶仿真平台,我比较看好的是Carla和Airsim,商业仿真平台,Carmaker、Prescan和VTD也都不错,可以多关注这几个工具。
如果想成为一个合格的真正的自动驾驶仿真工程师,会用几个软件是远远不够的,而且天花板也不高。面向自动驾驶的测试往往已不再是黑箱测试,而是基于知识的白箱测试。仿真工程师需要懂偏开发知识,即掌握自动驾驶系统/产品的主要系统架构、各类传感器的基本原理、动力学仿真的基本知识、规划算法的基础原理、一些深度学习技术等。也要掌握测试的知识,如各种在环系统的构建方法,测试场景生成,测试用例编写,测试自动化技术开发等等。
以下列举一些典型大厂对自动驾驶仿真工程师的招聘需求:
负责自动驾驶系统仿真平台和相关工具链的构建
设计仿真测试场景和功能模块,如交通环境、多车交通流、天气路况等
为感知、规划、预测、控制等模块开发仿真测试接口
开发基于仿真测试的自动化数据分析平台
构建可扩展的框架,以在集群环境中运行大量模拟
开发自动驾驶系统的自动化回归测试框架。
计算机、自动化、数学等相关专业,硕士及以上学历
熟悉C++/C或Python或nodejs,扎实的算法和数据结构知识
具备扎实的数学能力,熟悉几何、计算机图形学、动态系统建模等理论和方法
具背复杂软件架构和设计的能力
能够熟练使用可视化和建模工具
有自动驾驶系统仿真、ADAS系统仿真、游戏引擎开发经验
有交通流模型设计经验
有图像生成、点云处理、三维重建、地图创建、规划控制等项目经验
有大规模集群环境中开发分布式系统以及大型后端系统开发经验
分析国内外智能驾驶主流测试策略,规划并实现业界领先的智能驾驶验证体系
研究先进的场景仿真技术,构建强大的自动驾驶仿真场景库与测试评价系统
根据智能驾驶系统和功能需求,设计产品的仿真测试方案
研究先进的道路数据采集技术,运用大数据技术重构仿真场景,并指导路测数据的再利用
负责搭建自动驾驶虚拟场景,完善仿真测试框架
配合驾驶决策、路径规划、仿真算法等模块,实现自动驾驶闭环仿真, 并可视化相关调试信息
通过物理引擎对自动驾驶仿真结果进行评估
理解各种仿真引擎优缺点,根据项目阶段搭建并部署相应系统
本科及以上学历,机器人、计算机、游戏开发等相关专业
熟悉unity、unreal等游戏引擎
熟悉至少一种3D建模工具,如Sketchup,Blender等
熟悉掌握游戏物理引擎的应用
有自动驾驶仿真工具搭建者优先
有汽车类游戏开发经验者优先
有使用CarSim、PreScan搭建车辆运动仿真平台者优先
有两年以上测试经验,有搭建车辆在环仿真测试场景经验者优先
有多年python等脚本语言开发经验优先
多年的C++的开发经验,1~3年的实际项目工作经验
熟练掌握Linux或类Linux系统,并掌握常用Linux命令
善于团队协作完成既定任务。
深入理解软件开发周期、软件质量需求,扎实等测试知识及执行力
按照需求进行仿真系统相关功能的设计和开发工作
对仿真前沿技术进行跟踪与研究
通过需求调研和需求分析,完成业务建模、系统建模
计算机相关专业本科以上学历
有扎实的计算机基础知识,熟练掌握C/C++编程语言
熟悉软件开发流程,有良好的编程风格和文档习惯
熟悉Linux、Unix等操作系统,并在此系统上有开发经验的优先
良好的沟通能力和执行能力; 正直、务实、敬业、善于思考、良好的团队合作精神
有ROS开发经验优先
掌握仿真相关原理和算法优先
具有车辆主动安全和自动驾驶系统开发经验优先
掌握一种以上通用或专用仿真工具软件,有业务模拟仿真或仿真平台的开发经验优先
设计和实现基于插件式的分布式仿真系统底层架构,替换ROS系统,并可满足车辆量产的要求;
实现仿真系统三维渲染引擎,对动态和静态场景渲染和模拟以及交互性,预期要达到次世代游戏的水平;
实现物理引擎以及AI脚本引擎的优化及实现。
计算机相关专业,硕士及以上学历;
深入理解机器人地图和自动驾驶数据,熟悉ROS以及Linux ,了解SLAM相关算法,C++架构能力强,有车厂或图商相关研发优先;
具备地图/GIS相关数据可视化开发经验 或者 商业渲染引擎、游戏引擎优化以研发经验;
深入理解OpenGL基本原理及相关计算几何,熟悉数据可视化相关基础算法。
设计和构建无人车仿真平台,实现各类算法的快速验证
重建真实场景和传感器模型,持续提升感知模拟的精准度
跟踪和研究仿真前沿技术
熟练掌握C++、Python,了解Linux
熟悉传感器模拟、点云处理、三维重建等技术【计算机图形学】
了解Gazebo、Prescan等至少一种仿真软件【部分模拟器】
良好的沟通表达和团队协作能力
有3D赛车游戏开发经验优先
有3D引擎如UE4、Unity开发经验优先
有仿真系统开发经验优先
负责搭建无人驾驶模拟系统,对汽车、传感器、环境进行软件模拟。模拟结果将与真实数据一同用于预测汽车在真实场景中的行为。
熟悉汽车系统和仿真软件(carsim, carmaker, v-rep)
熟悉C++/Python等开发语言,有Linux开发经验
了解汽车动力学模型,3D图像引擎工作原理
具有一定模拟系统或3D游戏开发经验,具有无人驾驶、汽车、机器人领域模拟系统开发经验者优先
负责自动驾驶软件(虚拟驾驶场景、交通流、高精地图)集成测试、硬件(摄像头、激光雷达、毫米波雷达、GPS/IMU、ECU)在环台架测试、以及驾驶员在环测试;
搭建自动驾驶硬件在环平台,包括软硬件架构、各接口定义等;
设计并搭建自动驾驶仿真场景,并编写测试用例,撰写测试报告;
配合算法工程师调试并测试控制算法;
负责集成调试自动驾驶嵌入式实时计算平台;
负责集成调试自动驾驶HMI。
硕士及以上学历,汽车类、电子类、自动化、计算机类等相关专业;
精通嵌入式开发,熟悉C++,精通Linux环境,具有丰富的软硬件动手实践经验;
熟悉车载CAN、以太网总线、TCP/IP, UDP, serialization等通讯协议;
良好的沟通能力,自主学习能力,富有高度的责任心及团队合作精神;
有ACC、AEB、APA、LKA等ADAS功能仿真与开发经验者优先;
熟悉NVidia Drive PX2或者Jetson TX2嵌入式平台优先;
熟悉超声波雷达/毫米波雷达/激光雷达/摄像头/ECU等产品优先;
熟悉实时仿真系统者优先。