首页/文章/ 详情

这个有点酷|多线程运行仿真测试-esmini

1年前浏览3750

作者:李慢慢
编辑:李慢慢
出品:车路慢慢·微 信公 众号
头图:esmini运行截图

大家好,我是李慢慢。
继续研究用esmini做自动驾驶仿真SIL测试。本文的研究方向是大规模测试,亦或者多并发测试,也就是同时跑很多个测试场景,以达到加速仿真测试的效果。
研究设备:虚拟机-Ubuntu20.04
研究软件:esmini-2.31.3
编程语言:python-3.8
基础概念:进程池

关于进程池,可以看看我此前的文章。
自动驾驶仿真测试的多并发测试-进程池

开搞前,我的设想是:
在电脑上打开多个窗口(可自定义,如2x3、3x3等),每个窗口运行一个仿真场景。仿真场景都是泛化出来的,比如一个车撞车的追尾场景(CCRs),简单泛化下主车的速度,生成一系列场景。场景运行过程中时刻接入AEB的规控算法,以测试算法的效果。每个窗口运行完成后,自动关闭,然后再度打开以运行下一个场景。直到所有场景测试完成。

编程思路:
创建一个进程池,进程池中可以运行多个进程,每个进程都是一个运行esmini的指令(这次就只启动esmini,下次再将算法也集成进来),但是每个进程都需要有些参数支持传递,比如运行哪个场景,比如窗口的位置。为了实现窗口的位置的记忆功能,我还用到了multiprocessing的Value类和Manager类。这两个类可以在进程之间通过共享内存进行信号交互。

代码和测试场景工程如下:
https://gitee.com/li_man_man/esmini_multiprocessing_simulation/tree/v1.0.0/

运行后的截图如下:
窗口:2x2


窗口:2x3

窗口:3x3

窗口:3x4

窗口:3x5



最后,如果不想打开窗口(适用于服务器上进行大规模测试),直接在后台运行esmini,可以用以“--headless”模式启动esmini。如:


../../bin/esmini --window 60 60 800 400 --osc ./CCRm.xosc --headless

本文完。
后言:整个openSIL的项目,从立项到现在将近大半年了。已经有了很多研究成果了哦,感兴趣的小伙伴可以后台搜索了看看。

来源:车路慢慢
python自动驾驶
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-22
最近编辑:1年前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 11粉丝 71文章 122课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈