编程用在自动驾驶仿真的哪些地方?
做仿真有些天了,哈哈,这里来絮叨絮叨。若有不妥,还请指正。关注【车路慢慢】的很多朋友,都是和李慢慢以前一样是CAE传统仿真出身的,这其中有一部分也有想往自动驾驶仿真方向转型的朋友,希望这篇文章对你们有所帮助。要做一个好厨师,也要会磨刀不是?仿真软件本就是一大堆代码,使用过程中修修补补也甚为常见,可到底用在哪些地方呢?首先仿真的本质是为了测试,测试什么呢?测试算法。比如控制与规划的算法,比如图像识别的算法,传感器融合的算法等等。所以算法工程师提供的算法,怎么接入仿真软件中呢?那就是接口开发。仿真工程师需要将仿真模拟的各种传感器的数据,输出给算法。这里我们将算法当作一个黑匣子,我们称呼它为【黑匣子.exe】吧,算法需要输入与输出。一般来讲,仿真输出的数据是不能直接给【黑匣子.exe】用的,【黑匣子.exe】处理后给出的指令也不能直接输出给仿真平台,这之间需要一个数据切换,比如格式的转换,比如坐标系的转换等等,这些就需要用到编程了,去批量地实时地处理数据的切换。这些为了实现算法和仿真之间的数据交换的开发,一般都被称为接口的开发。
一般仿真工程师都必须掌握至少一个核心仿真软件,比如PreScan、VTD、CarMaker、CarSim、SCANeR等,因为工作中很多内容比较繁琐且重复,为了提高工作效率,一般工程师可以基于软件提供的API和SDK进行二次开发,实现某些动作的自动化进行。比如提取仿真结果数据书写报告,也比如修改场景参数创建海量仿真场景,也比如将建模、运行、后处理串行起来实现流程自动化等等。这个需要提及场景的来源了,有些场景来自真实车队在道路上路跑后测得的海量数据,比如视频、图片、毫米波数据、激光数据等等,如何根据这些数据,批量大规模生成能直接在仿真场景中运行的虚拟场景,就需要编程来实现了。这是个大工程,可能分为很多步骤,将数据融合、给数据进行标注、然后提取场景、给场景进行分类等等。当然,有些场景的来源也可以是高精地图,一般是某种格式的文件(比如大名鼎鼎的OpenDrive),虽然很多仿真软件支持直接打开OpenDrive格式的地图,但总会有些小问题,而且能导入和能生成仿真场景之间,还隔着千山万水。怎么快速进行自动化转换甚至是场景建模,也是需要程序来帮忙的。场景一般分为静态场景和动态场景,静态场景其实好弄,都是死的,大不了一个一个手动搭建出来。但是动态场景就不同了,雨多大雪多大?路面有多湿?积雪有多厚?天光几分亮?路灯几分亮?行人跑多快往哪儿跑?车辆的临时行为咋控制?等等,都需要编写临时的代码来进行控制,并且随时更换代码参数进行切换。像这类代码,一般都会由软件自己提供API义工仿真工程师调用,调用方法需要遵从仿真软件自带的语法,也算是一种编程了。前面说的都是小打小闹,真正的仿真软件开发才是难点。当然这不是所有仿真工程师都需要会的,一般的仿真工程师只需要会使用仿真软件就行,这部分仿真工程师其实应该被称为仿真应用工程师。还有部分是专门开发仿真软件给别人用的,这类人被称为仿真开发工程师。需要很强的代码能力和专业基础。你说什么?仿真工程师也需要做算法?虽然大多数时候算法对于仿真工程师来说就是个【黑匣子.exe】,但我依然不建议仿真工程师主动回避相关的算法内容,工作总是个相辅相成的事情,更别提算法和仿真本就是业务上下游的关系,互相了解工作内容是很有必要的。再说,算法是整个自动驾驶最核心的东西了,懂他对你并没有什么坏处。我目前的想法是,你要是会算法,也会仿真,你的能力大概能形成一个闭环,你对整个自动驾驶技术开发的理解也会更深刻。难一点的用C语言直接开发算法你可能够呛,但是用Simulink做一个控制模型,和仿真软件联合进行仿真,你总该是应该学会的吧。反正我是这么自勉的。哈哈。好了,我暂时就了解到这么多,欢迎大家也来补充补充。下一次准备来讲讲,在仿真这领域常用到的编程语言有哪些。
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:1年前