首页/文章/ 详情

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

1年前浏览817

作者:李慢慢
编辑:李慢慢
出品:车路慢慢·微 信公 众号
头图: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粉丝 62文章 122课程 0
    点赞
    收藏
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈