第82章 ,五大类
“Python我听过,Python就是你写应用软件算法用的”定剑说到。
“是的,算法主流用Python,深度学习框架用的是Python,还有一些工具也是Python,但这只是一小部分,深度学习推理引擎还是C++实现,加上一些比较重要的库,像opencv和libpcl都是C++。自动驾驶仿真2大主流引擎Unity是C#,unReal是C++”名曰。
“哈哈,那简单的说,自动驾驶程序用Python、C++语言写的呗”剑曰。
“对,可以这么说,主流是这样”名曰。
“Java不行吗?”剑曰。
“Java适合大型分布式系统,主要用在电商、大数据等领域,如果做无人驾驶调度系统,手机端APP是可以考虑使用Java。但这种跟硬件系统打交道,要求反应很及时迅速、需要高效率的活,一般都是用C和C++,Java是高级语言,没有中级语言跑得快”名曰。
“高级的语言不如中级语言的?”剑曰。
“相对而言,也不是绝对,跟应用场景有关系,高级语言易懂些,易开发些。Java的主战场不在无人驾驶。其实无人驾驶也需要Ul,目前的主流是基于Web的技术,很多辅助的标注系统、管理系统需要前端,开发平台用到nodeJs,也可以基于C#,或者其它技术”名曰。
“那你们的自动驾驶团队是怎样的?”剑曰。
“团队的话,按照感知-决策-控制来分,职能有五大类,分别是——平台类、算法类、架构类、管理类和测试类”名曰。
“那这五大类又各自包含什么成员”剑曰。
“平台类有嵌入式硬件工程师、嵌入式软件工程师、操作系统工程师、中间件工程师;算法类有感知算法工程师、多传感器融合算法工程师、决策规划算法工程师、定位与高精度地图算法工程师和控制算法工程师;架构类主要职位是系统架构工程师,就是应用软件的架构;管理类就是项目管理工程师;测试类有仿真测试工程师和测试工程师”阿名说到。
“好多工程师呀,哈哈,平台类的工程师就是你刚说的搞算力平台的”剑曰。
“对,就他们搞”名曰。
“感知算法工程师是干什么的”剑曰。
“研发环境感知算法,这岗位的工程师呢,要会一种或多种主流的深度学习框架,像Mxnet、Caffe、TF等,会使用pytorch、tensorflow等训练工具。要求的理论知识蛮多的,如:机器学习和神经网络、图像分类、检测、跟踪、分割、点云感知、视频分析、双目算法中的一种或多种”阿名说到。
“呵,挺多专业术语的”剑曰。
“这些你听不听得懂没关系,大概了解一下就行”阿名说到。
“那多传感器融合感知算法工程师,应该就是对超声波雷达、毫米波雷达、激光雷达等多传感器的信息处理和融合”剑曰。
“对,这你倒是说得上来啊”名曰。
“顾名思义嘛,哈哈”剑笑。
“多源信息融合的目标检测、跟踪、识别与定位、环境特征抽取,这些为导航地图构建和定位提供支持”名曰。
“那决策规划算法工程师,干的活就是研发自动驾驶中决策、规划等工作?”剑曰。
“对,这岗位主要的职能就决策规划模块的系统集成、调试,像我的岗位是规划算法师,决策算法师也有专门的岗位,可分可合,就看公司对人员要不要细分”名曰。
“定位与高精度地图算法工程师,就研发高精地图,负责地图生产,地图质量控制喽”
“嗯嗯,对的,这岗位职责为对地图应用以及高精定位的算法研发和工程化实现,以及高精度地图存储架构设计与可视化应用。要求不低,要会常用的滤波算法,背景分离和特征提取等算法,数据结构和算法能力等”名曰。
“哦,那控制算法工程师主要干嘛”剑曰。
“实现车辆自动驾驶的速度控制、转向控制,达到预期横纵向控制精度,车辆控制的PID、MPC车辆预测控制等算法设计、测试和验证,总之就是控制这台车作出的反应,那这岗位一般都要求车辆控制底层代码编写、现场车辆控制调试、验证车辆控制的精度和重复性精度等。还有比如:根据准确的导航定位信息,编写生成车辆行驶控制包,涵盖循迹规划、车辆操作规划——加速度、航向角、起、停、减速和制动等,还是挺考验能力的”名曰。
“哈哈,听得一知半解的”剑曰。
“正常,你毕竟是外行,懂点皮毛就可以”
“对了,你们这自动驾驶算法开发出来,怎么知道算法行不行,如何验证?”剑曰。
“这就需要仿真测试工程师了嘛,他们负责去测试算法,当然了,自动驾驶的算法仿真测试都是离线的,不可能说现场测试”名曰。
“那测试人员如何测试”剑曰。
“有专门的仿真软件给他们用”名曰。
“哦,这样啊”剑曰。
“测试的职责就是配合算法工程师设计各模块测试案例,搭建测试系统和测试工具。根据自动驾驶运行场景,使用3D建模工具搭建仿真场景,编写仿真脚本、测试场景脚本,建立仿真场景库,自动化仿真测试。记录、整理并保持测试数据及结果,离线分析测试数据,跟踪并定位错误的基本原因,提交测试报告”名曰。
“那也得懂很多”剑曰。
“自然,他们也要懂C/C++/Python等编程语音,掌握至少一种脚本语言,掌握Linux或类Linux系统常用命令,要求不低”名曰。
“互联网项目的管理系统,负责测试的人员就不用懂那么多吧,还要编程”剑曰。
“他们要求会低得多”名曰。
“测试用什么软件”剑曰。
“3D建模工具,如Sketchup、Blender等,车辆仿真软件,如CarSim、PreSCAN”
“呵,都没听过!”剑曰。
“有很多的算法工程师,他们开发的算法,一般都会基于系统架构工程师先构建好的无人驾驶软件系统框架,这岗位的职责就是自动驾驶系统各功能模块的设计和实现。模块化、可验证的系统软件架构设计和实时性能优化。与硬件、算法和测试团队合作,集成并优化自动驾驶系统,是应用软件基石”名曰。
“一般架构师都牛,哈哈”剑笑。
“架构师统筹全局,要懂的和深入的知识更多,比如像自动控制、模式识别、机器学习、计算机视觉、点云处理,还有嵌入式操作系统和实时操作系统的内核或驱动开发。 ROS、CUDA、OpenCL等异构计算的编程和优化,较强的 troubleshooting能力,即故障排除,实际调试和优化经验很丰富”名曰。
“一看就是大牛级的存在,那你现在到达什么样的级别了,能胜任架构师吗”剑曰。
“呃,我水平还行吧,不说特别牛,架构师的水平,也不说完全胜任不了,但这职位负责的东西比较多,挺繁琐的,小兵小卒有他们的乐趣,大将有自己的风采”名曰。
“哈哈,你们的团队有多少人员呐”剑曰。
“你是说整个自动驾驶所有的人员?”
“对,所有人员”剑曰。
“600个左右,据说还会增加”名曰。
“那人也挺多的嘛,人才济济,你们这个智能驾驶事业群组,之前还分L3智能汽车事业部和L4自动驾驶事业部,前阵子二者进行了合并,另外还新增了智能交通业务组”剑曰。
“对啊,早该合并,L3事业部包括高速自动驾驶、自主泊车解决方案和高精地图;L4事业部则提供自动驾驶出租车、无人小巴等解决方案。进行战略合并,挺好的”名曰。
“你们这么多人的团队,应该是分组来进行自动驾驶的开发吧?”剑曰。
“对啊,前面不是说了主要是五大类工程师嘛,分了好多组,像算法组、底层驱动组、线控底盘组、计算平台组、数据平台组、仿真平台组,这些组还能再细分小组,细化分工”

