首页/文章/ 详情

esmini如何丝滑地接入自动驾驶算法?

1年前浏览875

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


本文还是继续研究如何用esmini做SIL规控测试。


前方预警:读懂此文,需要熟悉openSCENARIO、驾驶员模型Driver、及C++,Python等知识。


在文章《如何基于esmini做规控SIL测试》中,我简单提到了参考官方文件夹upd_driver下的案例,在openSCENARIO文件中使用UDPDriverController作为主车的驾驶员模型,进而可以让esmini在播放场景的时候可以接受外部的控制算法。文章中第3个视频里,我计算ttc进而决定是否制动就是一个简单的控制算法,当然我也演示了它的效果。数据从esmini到AEB算法再到esmini中,是实现了数据闭环的。但是可能大家都没发现,这个案例中还预留了一个很大的问题:用esmini启动场景时主车没有动。更确切地说,用esmini启动openSCENARIO场景时,主车并没有按照init标签中定义的初始速度行驶。


这里不得不贴出来openSCENARIO场景文件内容:

可以看出来,主车设置驾驶员模型为“UDPDriverController”,而且初始速度为20m/s。但运行的结果是:以esmini运行该文件时,目标车正常行驶,但主车未动


因此又简单做了几个测试。

测试1:
把主车的驾驶模型的设置删除(即ObjectController标签内的设置),再启动esmini,主车的行为又恢复正常。
查阅官方文档,可知不定义驾驶员模型时模型其实它会默认使用DefaultDriver(此时不支持接受外部控制输入)

测试2:

在以esmini启动openSCENARIO场景文件时,再打开一个终端尝试发送一个非常简单的UDPDriverController的“加速”控制指令,python脚本如下:

这时,主车动了,但是是以openSCENARIO场景文件中定义的初始速度20m/s为起点不断加速。


好了,通过上述测试,我们得出结论:主车用了UDPDriverController会导致初始行为<Init>失效,且需要给一个UDP指令让初始行为再度生效


我为什么如此纠结这个初始行为的生效与否?

自动驾驶仿真测试场景一般都是大规模跑的,每个场景都需要有两个基本特性:

特性一:场景文件其实就是一个剧本,能按照初始预设的行为讲好一个悲情的故事,比如碰撞。这个剧本用esmini播放,其实只是把剧本搬上了荧幕。

特性二:剧本播放过程中,能随时接受外界的控制,进而控制演员们的行为,阻止悲剧的发生,比如,AEB激活,避免碰撞。

那么现在的问题是,特性一是不满足的,因为主车,也即主角都没有动。故事没法演了。


为了实现“一个场景既能被单独正常播放,也能在必要的时候被算法控制”的效果,倒腾了很久,也问了很多人,直到最后找到两位大神(唐唐和小强),三人一起撸源码,才成功解决问题。以下记录下操作过程。


步骤1、下载官方源码

以版本2.31.3为例:

https://github.com/esmini/esmini/releases/tag/v2.31.3


步骤2、在本地编译

操作过程见官方教程:


步骤3、修改源码如下所示。

其实只是把源码中对输入的驾驶员模式判断给注释掉了。这样就能使场景既能受DefaultDriver控制,也能受UDPDriverController控制。

另外为了防止车辆初速度生效后会越来越慢,需要把一个阻力参数取消,修改如下源码即可:


步骤4、重新编译下源码,重新运行前文的场景

发现车辆初速度恢复正常了。然后,如果接入AEB算法控制,发现也是可以控制的。


至此,终于可以让自己以前搭建的几万个场景片段可以自己跑起来了。当然也可以接入规控算法进行测试。

完美。


最后,说一下自己对官方“UDPDriverController”的理解吧,我觉得它是为了纯自动驾驶(ADS)而设计的驾驶员模型,用它的话,整个过程都需要用算法来进行车辆控制。想要在必要的时候才能接入算法的话(ADAS),可以参考下我上面这个做法。当然也可以有别的办法,毕竟esmini官方还支持好几种控制模型,甚至还支持用户自己开发的控制模型。诸位道友可以自行感悟。


本文完。


往期相关:

相关文章,在仿真秀官网搜索:

自动驾驶仿真|如何基于esmini做规控SIL测试

esmini中的目标有哪些类型

自动驾驶仿真|esmini中如何使用传感器

介绍一款开源的自动驾驶仿真场景播放器:esmini


更多精彩,欢迎持续关注。

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