APP下载

基于网络连接的自动驾驶联合仿真方法

2023-10-24戴大力王俊平赵天坤

时代汽车 2023年19期
关键词:自动驾驶网络连接

戴大力 王俊平 赵天坤

摘 要:自动驾驶算法大规模应用离不开算法仿真测试,目前多使用场景仿真软件对动态场景和传感器信号进行模拟,而较为准确的车身动力学模拟多需要交给专门的车辆多体动力学仿真软件。得益于Matlab中Simulink产品广泛的适配性,目前使用场景仿真软件和车辆动力学仿真软件进行联合仿真的方法仍多通过Matlab进行中转连接,但不适用于非Matlab环境的算法测试。本文提出了一种基于TCP网络连接的场景仿真软件与车辆动力学仿真软件直接连接的联合仿真方法,能够达到应用仿真场景地图路面实时高程信息的效果,实现了车辆动力学仿真软件高频解算,与场景仿真软件频率相配合的效果。

关键词:网络连接 自动驾驶 仿真方法

1 引言

近年来,自动驾驶算法发展迅速,而为了保证安全性,自动驾驶算法在研发过程中,真正大规模应用之前,需要经历大量的道路测试。然而作为一门历史非常短的技术,自动驾驶系统的测试存在诸多困难:首先,自动驾驶算法需要保证安全性,但即使是想要达到人类驾驶员的水平,也需要积累海量的驾驶和环境数据来训练和测试算法,采集数据所耗费的时间和成本巨大。其次,极端交通条件和危险场景难以复现,而且人工测试存在安全隐患。同时,自动驾驶相应交通法规及保险理赔机制尚不完善,制约了自动驾驶汽车路测的大范围开展。此外,自动驾驶行业尚未就智能汽车测试的安全性等标准达成一致。最后,不同地区的道路环境差别巨大:如中国的城市道路中快递、外卖、行人混行的情况普遍存在,而且中国道路上交通标志、车道线标志设置不规范情况普遍存在。[1]

因此需要加大仿真测试在自动驾驶测试中的占比。目前自动驾驶算法测试大约 90% 通过仿真平台完成,9%在测试场完成,1% 通过实际路测完成。基于纯虚拟方法的自动驾驶仿真测试系统需要包含如下几方面主要功能:传感器仿真、车辆动力学仿真、道路场景仿真、交通流仿真、二次开发与自动化运行功能支持等。无论是商业软件还是开源领域,目前业界没有一款软件能够同时在以上各个功能领域都满足功能要求,因此多学科软件联合仿真是一种典型的测试方式。

国外的场景仿真软件如由VIRES公司的VTD、西门子公司的PreScan,以及国产软件51SimOne和PanoSim等,都能够做到覆盖道路环境建模、交通场景建模、天气和环境模拟、简单和物理真实的传感器仿真、场景仿真管理以及高精度的实时画面渲染等方面的功能。可以支持从软件在环到硬件在环和车辆在环的全周期开发流程,开放式的模块式框架可以方便的与第三方的工具和插件联合仿真。而像CarSim、CarMaker、Simpack等属于车辆动力学仿真软件,主要从整车角度进行仿真,各软件分别积累了丰富的经验参数,内建了相当数量的车辆模型,用户可以快速配置使用。[2]

因此场景仿真软件搭配车辆动力学仿真软件联合仿真是一种普遍使用的仿真方法,由专业软件进行车辆动力学仿真,将结果与场景仿真软件进行交互,由场景仿真软件负责构建虚拟仿真环境及场景、输出传感器信号等仿真其他部分。然而,现行的场景仿真软件和车辆动力学仿真软件之间的连接,主要通过Matlab软件实现:这主要是因为一些历史的原因,Matlab连同其旗下的Simulink产品在各个工程领域具有广泛的受众,与多领域的工具链都可适配,因此自动驾驶中的场景仿真软件和车辆动力学仿真软件在研制之初也优先考虑与Matlab的联通。Matlab软件一般运行在Windows平台,负责调用同样主要用在Windows平台的车辆动力学仿真软件,同时Matlab通过UDP等网络通讯方式与同在Windows平台或在其他如Linux平台的场景仿真软件进行连接。這样做的好处是:方便调试Matlab软件环境下编写的算法模型,Matlab调用车辆动力学仿真软件、Matlab通过UDP等与场景仿真软件进行通讯往往都有成熟方案。然而随着自动驾驶行业的发展,待测算法逐渐不局限于Simulink模型,如果待测试算法在Linux环境下编写,则该方案不便捷。目前业界还缺乏基于TCP网络通讯的直连车辆动力学仿真软件与场景仿真软件的解决方案。

本文将首先介绍基于TCP连接的车辆动力学仿真软件联合场景仿真软件解决方案的系统架构,再依次介绍车辆子系统设计和场景子系统设计,最后将介绍系统的实现情况并进行了测试。

2 仿真系统架构

本文所述基于TCP连接的车辆动力学仿真方法所使用的仿真系统架构如图1所示。仿真系统首先包含了车辆动力学仿真软件和场景仿真软件,在车辆动力学仿真软件所在的Windows端还包含本文将要论述的车辆子系统,场景仿真软件选择运行在Linux系统下,以适应Linux下的被测算法。在场景仿真软件所在的Linux端将会包含本文所论述的场景子系统。

车辆子系统将会采用自动化调用车辆动力学仿真软件的解算器的方式,根据需求运行车辆动力学仿真软件的启停,以及控制解算器的单步运行和接收解算器的单步运行完成信号,同时,车辆子系统将会通过使用车辆动力学仿真软件自带的二次开发API建立输入输出通讯接口。子系统控制解算器运行一次单步仿真运算的前提,是已将通过网络TCP连接获取的路面信息和控制命令发送给解算器,作为车辆仿真模型运算的输入条件,待子系统接收到解算器单步运行完成的信号后,将模型运算的结果,即车辆位置速度以及车辆车轮触地点的位置坐标通过网络发送出去。

在本文所使用的仿真方法中,控制命令主要包含油门踏板、刹车踏板、方向盘角度以及挡位信息,作为车辆控制输入的基本信息;路面信息将会主要包括路面的高程信息、地面摩擦系数等。这些都是车辆动力学软件在进行动力学计算时,数学模型的必要输入。其中,车辆控制输入往往视被测算法的控制输出,或场景仿真软件的驾驶员模型控制输出而定;路面信息则视车辆动力学仿真软件的计算必要条件而定。

场景子系统将会通过使用场景仿真软件自带的二次开发API建立输入输出通讯接口,接受来自网络TCP连接的车辆位置速度信息,并将车辆位置速度信息转化为场景仿真软件数据通道能够识别的实时信息,场景仿真软件将根据该信息控制仿真场景中的车辆模型的位置速度。场景子系统同时接收来自网络的车辆实时车轮触地点位置信息,并调用场景仿真软件自带的地图处理接口程序,使用车轮触地点位置信息作为查询条件,查询仿真场景地图在触地点位置的地面高程等信息,返回给车辆子系统。如果使用的场景仿真软件没有解析地图的接口程序,则可以将该信息置为默认值,可以当作路面为平面无起伏;或再联合另外的第三方地图解析软件,通过触地点位置对路面信息进行查询。

场景子系统还将接收来自控制算法的车辆控制命令,通过网络连接发送给车辆子系统。

场景子系统与车辆子系统将通过网络进行连接,配置好ip地址及TCP端口号即可,见图1。

3 车辆子系统设计

本节将具体介绍Windows端的车辆子系统的设计。

如图2所示,车辆子系统包含主函数、接口模块、TCP Server模块等主要程序内容。主函数以本地Windows平台上的配置文件为输入,配置文件将指定解算器程序路径、记录仿真时间、数据记录项目、IO开放变量等信息。大多数车辆动力学仿真软件都有一个解算器作为程序内核。主函数负责对仿真解算器进行调用,对接口模块中的函数进行声明,并声明TCP Server以进行数据收发。主函数将以可配置的固定仿真步长运行,以达到期望的仿真频率:即主函数在接收到TCP传来的解算器所需输入后,触发仿真器运行固定仿真步长的单步仿真,待解算器发回已完成单步仿真的信号后,将解算器计算结果同步给场景仿真软件端。

接口模块将实时跟踪仿真解算器,获取将要输出的变量内容,如车辆位置速度等,写入IO数据区域,从IO数据区域获取要输入的内容,如车辆控制命令等,并传送给解算器。

TCP Server是负责建立TCP网络连接,并与外界进行数据交互的程序,将通过IP地址和TCP端口號与场景子系统进行连接。

4 场景子系统设计

本节将具体介绍Linux端的场景子系统设计。图3显示的是场景子系统的各个模块整体架构。

场景子系统的主函数负责管理整个子系统。主函数接收来自算法的控制命令,例如来自被测自动驾驶规划控制算法,或来自场景仿真软件自带的驾驶员模型输出的控制命令。

主函数负责建立3个TCP网络通讯通道,分别执行不同的任务。其中,remote TCP通道负责与跨平台的车辆子系统通讯,发送控制命令、地图高程等,接收车辆位置速度、车轮触地点位置等。地图查询TCP通道负责与场景仿真软件自带地图处理功能层程序进行通讯(场景仿真软件一般会对仿真使用的静态地图进行解析,如VTD软件的OdrGateway模块就是软件功能的一部分),发送车轮触地点位置,接收触地点高程等,地图处理功能层程序使用触地点位置查询正在运行的本次仿真中的地图相应位置的高程信息等。仿真任务控制TCP通道负责与场景仿真软件的任务控制流程进行通讯,将转译好的车辆位置速度实时信息发送给场景仿真软件,控制仿真环境中的车辆模型运动。在地图查询通道和仿真任务控制通道收发信息时,需要做相应的坐标转换,例如场景子系统接收到的车轮触地点坐标可能是车辆动力学仿真软件中车轮在车身坐标系下的坐标,需要结合这一时刻的车辆位姿转化成地图坐标系下的位置;车辆动力学仿真软件中的地图坐标系与场景仿真软件中的地图坐标系可能不一致,需要进行统一;或者车辆动力学仿真软件中的车身坐标系原点与场景仿真软件中的车身原点会不一致。以上这些都需要通过对不同软件间坐标系定义的对比,在场景子系统中做出相应的坐标转换。

与车辆子系统中的触发-同步功能相对应,场景子系统中也需要实现这一个功能:接收到车辆位置速度等从车辆动力学仿真软件端发来的信息后,触发仿真执行一步固定时间步长的单步运算,待场景仿真的单步运算完成后,将车辆控制信号等作为同步信号发送给车辆子系统,让车辆子系统对车辆动力学仿真进行触发。两端仿真的复杂度可能不同,因此两端的仿真固定步长可以不同,以固定比例设置即可。例如,车辆动力学仿真软件的仿真步长设置为1ms,场景仿真软件的仿真步长设置为40ms时,需要让场景子系统每接收40次车辆子系统发送的信号触发一次场景仿真的单步运算。

Windows端的车辆动力学模型通常时间精度较高,会以较高频率运行(如1000Hz),部分场景仿真软件的地图处理功能层因为任务简单,也可以支持在此级别的频率下访问地图数据。而场景仿真软件的任务控制流程,因为要兼顾场景渲染、传感器数据生成等计算任务,一般没有这个级别的高频率,通常会以100Hz以下的频率触发仿真。因此需要在主函数中创建不同线程,线程1管理地图查询TCP,用以在高频率下访问地图处理功能层程序。线程2管理仿真任务控制TCP,用以和场景仿真软件进行通讯,更新车辆在仿真环境中的位置速度信息。于此同时,主函数线程管理remote TCP,用以为车辆动力学模型运算提供高频数据,控制命令如果不能以此频率变化,则发送重复数据即可。经过测试,某场景仿真软件地图处理功能层程序的查询过程耗时和与车辆动力学模型交互一次数据的耗时均在1ms以内[3],因此可以满足类似1000Hz的高频率运算。

由于在不同线程中都会访问到某些数据,如与remote TCP交互的车辆信息,因此需要对信息数据加互斥锁,以对数据读写进行保护。

5 系统实现与调试

本文所述系统选用CarSim作为车辆动力学仿真软件、VTD作为场景仿真软件进行实现。车辆子系统和场景子系统编制编译完成的情况下,CarSim软件和VTD软件仍需注意如下配置选项:在CarSim软件中,对车辆动力学模型进行参数配置,以符合期望的仿真测试车型;对CarSim中的仿真启停条件进行设置,选择无限长的仿真时间,以便由VTD软件控制仿真的进程启停;以及配置仿真步长、输入输出变量等。Linux端的VTD软件中,需要对OdrGateway程序进行TCP连接配置。

依照以上设置,配置VTD和CarSim,运行VTD软件和CarSim软件和以本论文方法开发的车辆子系统和场景子系统,最终实现了VTD通过TCP网络连接与CarSim软件直接连接通讯,使用CarSim车辆动力学模型控制VTD仿真环境中车辆模型的功能。应用本论文所述仿真方法,最终达到了以1000Hz访问地图数据并与CarSim软件进行交互,CarSim软件以1000Hz高频率仿真,VTD软件以25Hz进行仿真的效果。

6 结语

本文介绍了一种自动驾驶仿真场景下的基于TCP连接的车辆动力学仿真软件和场景仿真软件联合仿真方法。通过设计一个车辆子系统和一个场景子系统,管理了车辆动力学仿真软件自动化运行,且实时交互输入输出,通过TCP网络连接将场景仿真软件与车辆动力学仿真软件直接连接,且保证了车辆动力学仿真软件高频率1000Hz仿真,场景仿真软件25Hz频率仿真。

接下来的研究将进一步丰富车辆子系统与车辆动力学仿真软件实时交互的变量数目,如接入更多的车轮触地点信息应用,接入更多的控制信息等,更充分地利用车辆动力学模型的信息。

参考文献:

[1]2020中国自动驾驶仿真蓝皮书.

[2]自动驾驶仿真技术研究报告(2019).

[3]周波,张代远.TCP连接往返时延的被动测量算法实验验证[J].计算机技术与发展,2012.

猜你喜欢

自动驾驶网络连接
个性化设置 Win10 的网络连接信息
运动想象的大尺度动态功能网络连接
试论软交换技术在通信工程中的应用和发展前景
甲醛浓度检测系统软件的设计
“自动驾驶”热潮背后的担心和疑虑
汽车自动驾驶的发展
基于自动驾驶下的车道规划对交通拥堵的改善
LTE—V车路通信技术浅析与探讨
特斯拉默默更改了官网上“自动驾驶”的说明
特斯拉中国官网不再提“自动驾驶”