首页/文章/ 详情

案例-如何用CICD来触发自动驾驶仿真?

1年前浏览5772
大家好呀,我是李慢慢。
当自动驾驶开发工程师将开发好的代码上传到代码仓库后,怎么样才能自动触发自动驾驶仿真进行代码的功能测试呢?
本文想要简单研究下这条路的技术栈,并通过案例来实际演练。

先交待一下环境:
操作系统:Ubuntu20.04(虚拟机)
代码仓库:gitlab(远程) + git(本地)
仿真软件:esmini
测试对象:AEB控制算法
测试场景:追尾场景(OpenScenaro+OpenDrive)
编程语言:python+shell
历史文章:见文末

仿真运行代码:
相关代码放到了gitlab上,链接如下:
https://gitlab.com/auto_sim/lmm_test_cicd
简单解释下:start_simulation.py是用来启动esmini和aeb算法的,Cases里存放的是运行场景,真正的aeb示例代码我放到了
my_AEB_Controller里。

把上述仓库里的东西clone到本地后,可以通过以下方式直接开启自动驾驶仿真测试。



  
git clone git@gitlab.com:auto_sim/lmm_test_cicd.gitcd lmm_test_cicdpython start_simulation.py  

运行效果大概如下:

上图中,左边是仿真测试的可视化界面,右边是运行的代码。代码运行完成后,输出物是在target文件夹里创建一个report.csv文件,文件里写入aeb触发时刻的ttc(文件及文件内容完全由使用者自己决定)。这个文件将作为后续CICD测试的工件artifact。

CICD gitlab-runner配置项:
解释:CICD检测到cicd_validation这个分支发生更新,即触发运行特定代码:python start_simulation.py,并在该任务成功运行完成后,返回工件artifact,我这里把他当作仿真测试运行完成后的结果文件,这个结果文件以"任务+分支"来命令,文件内容是运行工程下target文件夹里的东西进行压缩打包。打包的东西是什么取决于我在target文件夹里放了什么,此案例中我只放了了report.csv文件,这个文件里我是用aeb程序激活后写入的ttc时刻。

CICD触发和结果
假如我是一名开发工程师,我今天更新了自动驾驶某个算法,然后我把它提交到了仓库某个分支下,过了一会儿,我就能下载并查看新算法的仿真测试结果。嗯,真香。



采用CICD流程的有效收益:
1、算法工程师可以快速进行大批量仿真测试,验证算法逻辑功能;
2、仿真工程师可以专心开发测试场景,以更高场景覆盖度测试代码逻辑,提前发现算法的问题,或者定位算法工作边界;

来源:车路慢慢
python自动驾驶控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-25
最近编辑:1年前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 11粉丝 70文章 122课程 0
点赞
收藏
未登录
1条评论
superJiang
签名征集中
11月前
您好, 请问源码如何访问,gitlab貌似没有访问权限了,盼复
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈