全网首发,征服面试官的自动驾驶系统调优指南!
本文正在参与 #2023一起秋招吧# 征文活动,一起来聊聊校招的那些事吧,牛客周边和京东卡等你来领~
大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。
首先先介绍一下自己,阿Q是三年前下定决心由传统车辆转行自动驾驶的,软件,硬件,系统都有涉猎,现如今,互联网大厂不太景气,考公考编竞争日趋激烈,而自动驾驶这一赛道方兴未艾,然而,牛客上关于自动驾驶公司的讨论却不多,特别是大家都集中于感知控制的算法,事实上,在自动驾驶量产落地的路上,更需要专业的系统工程师,阿Q的新系列带你了解一下如何转型成为自动驾驶系统工程师。
今天为大家带来的,是阿Q在面试中遇到的一个经典问题——如何降低自动驾驶系统的延迟?相信这份回答不仅对自动驾驶系统开发有用,对于从事服务器和嵌入式的同学也能从中找到一些有益的启示。
首先我们必须承认:
系统延迟是不可避免的,通信、运算、执行都会带来一定的延迟。
但是从以下几点考虑,可以有效降低系统的延迟:
架构层面
在架构上主要实现系统信息流架构的优化,谁产生数据,谁就近处理编码数据,尽可能降低大量数据的跨域传输。
此外还需要考虑执行机构的延迟,如商用车的气压制动系统主阀本来由于空气的特性就存在一定的延迟,通过优化执行机构的结构,采用ABS阀来进行控制,就可以取得更加快速精准的调控,从而在架构上完成对系统层面的优化。
硬件层面
对于关键算法,如感知的神经网络等,可以采用特殊的硬件,如GPU、FPGA、Asic等方式来进行异构加速,从而提高系统的计算效率,而对于并行度较低(如规划控制)不能用异构加速的算法,可以采用提高计算频率增大内存,以及多核的处理器的方式来更好的优化。
系统层面
前面的一些方法都是计算资源的开源,但在开源的同时我们还要注重节流,什么是节流?就是尽量降低系统资源开销。
在操作系统层,进行资源调度的优化,通过避免全局大锁来减少线程之间竞争占用的资源消耗,采用优先级和内核绑定的机制,来使得系统的调度更加的顺畅,提高处理器的亲和性。
在中间件层,采用共享内存来避免频繁的内存拷贝,提高通信效率。
算法层面
最后到了算法层面,合理的设计模式,代码内存申请和释放的高效规范,再加上复杂度优化后的算法(决策树的剪枝、启发式搜索),会让系统的性能更上一层楼!
这里还有阿Q整理的技术资料总结,欢迎大家关注!
【岗位分析集合】
【面试经验集合】
#自动驾驶##操作系统##系统工程师##自动驾驶行业分析与上车指北##2023一起秋招吧#
没时间解释了,自动驾驶来了,速速上车