这个有点酷|多线程运行仿真测试-esmini
继续研究用esmini做自动驾驶仿真SIL测试。本文的研究方向是大规模测试,亦或者多并发测试,也就是同时跑很多个测试场景,以达到加速仿真测试的效果。在电脑上打开多个窗口(可自定义,如2x3、3x3等),每个窗口运行一个仿真场景。仿真场景都是泛化出来的,比如一个车撞车的追尾场景(CCRs),简单泛化下主车的速度,生成一系列场景。场景运行过程中时刻接入AEB的规控算法,以测试算法的效果。每个窗口运行完成后,自动关闭,然后再度打开以运行下一个场景。直到所有场景测试完成。
创建一个进程池,进程池中可以运行多个进程,每个进程都是一个运行esmini的指令(这次就只启动esmini,下次再将算法也集成进来),但是每个进程都需要有些参数支持传递,比如运行哪个场景,比如窗口的位置。为了实现窗口的位置的记忆功能,我还用到了multiprocessing的Value类和Manager类。这两个类可以在进程之间通过共享内存进行信号交互。
最后,如果不想打开窗口(适用于服务器上进行大规模测试),直接在后台运行esmini,可以用以“--headless”模式启动esmini。如:
../../bin/esmini --window 60 60 800 400 --osc ./CCRm.xosc --headless
后言:整个openSIL的项目,从立项到现在将近大半年了。已经有了很多研究成果了哦,感兴趣的小伙伴可以后台搜索了看看。