掌桥专利:专业的专利平台
掌桥专利
首页

一种自动驾驶应用的图形化开发平台及其开发方法

文献发布时间:2024-04-18 19:59:31


一种自动驾驶应用的图形化开发平台及其开发方法

技术领域

本发明涉及自动驾驶技术领域,具体涉及一种自动驾驶应用的图形化开发平台及其开发方法。

背景技术

伴随着汽车E/E(Electron/Electrical appliance,电子、电器)架构的快速迭代进化升级和AD/ADAS(Auto Drive System/Advanced Driving Assistance System,自动驾驶系统/高级驾驶辅助驾驶)的由低阶向高阶技术的发展,汽车领域的测试也必须随之变化从而适应新的需求,汽车仿真软件平台对于AD/ADAS的功能测试验证的需求也随之也越来越复杂。

但是,当前自动驾驶算法应用开发中存在仿真测试方案较为复杂,准确性低的问题。

发明内容

有鉴于此,本发明提供了一种自动驾驶应用的图形化开发平台及其开发方法,以解决当前自动驾驶算法应用开发中存在仿真测试方案较为复杂,准确性低的问题。

第一方面,本发明提供了一种自动驾驶应用的图形化开发平台,包括:图形化开发器、自动驾驶仿真器和域控制器;图形化开发器分别与自动驾驶仿真器和域控制器连接,自动驾驶仿真器与域控制器连接;其中,

图形化开发器,用于获取待扫描算法代码,对待扫描算法代码进行预处理,生成自动驾驶算法,将自动驾驶算法传输给域控制器,并基于自动驾驶应用确定仿真测试环境,将仿真测试环境传输给自动驾驶仿真器;

自动驾驶仿真器,用于获取仿真测试环境对应的图像视频数据、传感器数据和车辆状态数据,并将图像视频数据、传感器数据和车辆状态数据传输给域控制器;

域控制器,用于基于图像视频数据、传感器数据和车辆状态数据,利用自动驾驶应用对应的规划控制算法生成自动驾驶控制指令,并将自动驾驶控制指令传输给自动驾驶仿真器;

自动驾驶仿真器,还用于接收自动驾驶控制指令,基于自动驾驶控制指令控制车辆进行仿真测试,生成自动驾驶算法的评测结果。

本实施例提供的一种自动驾驶应用的图形化开发平台,域控制器基于自动驾驶仿真器传输的图像视频数据、传感器数据和车辆状态数据,利用自动驾驶应用对应的规划控制算法生成自动驾驶控制指令,进而自动驾驶仿真器利用自动驾驶控制指令实现了对车辆的仿真测试,提高自动驾驶算法开发评测的灵活度,降低了自动驾驶仿真测试的复杂度,提高了仿真测试的准确性。

在一种可选的实施方式中,图形化开发器,具体用于对待扫描算法代码进行扫描,生成描述文件,并基于描述文件调用代码组件,将代码组件进行图形化显示,响应于拖拽操作,基于图形化显示的代码组件确定代码组件配置信息,基于代码组件配置信息生成自动驾驶算法。

在一种可选的实施方式中,自动驾驶仿真器,包括:

摄像头端口,用于获取图像视频数据,将图像视频数据传输给域控制器;

传感器端口,用于获取传感器数据,将传感器数据传输给域控制器;

默认端口,用于获取车辆状态数据,将车辆状态数据传输给域控制器,并接收域控制器发送的自动驾驶控制指令,基于自动驾驶控制指令控制车辆进行仿真测试,生成仿真测试结果。

本实施例提供的一种自动驾驶应用的图形化开发平台,自动驾驶仿真器通过获取图像视频数据、传感器数据和车辆状态数据,为域控制器进行规划控制计算提供了数据基础,并且,默认端口接收域控制器发送的自动驾驶控制指令,以进行车辆的仿真测试,使得仿真测试过程形成闭环,提高了仿真测试的效率。

在一种可选的实施方式中,域控制器,包括:仿真代理模块、感知模块、地图模块、规划模块、控制模块和通信中间件,仿真代理模块与自动驾驶仿真器连接,通信中间件分别与仿真代理模块、感知模块、地图模块、规划模块和控制模块连接;其中,

仿真代理模块,用于对图像视频数据进行解析封装,生成图像消息,将图像消息通过通信中间件传输给感知模块,并将传感器数据和车辆状态数据进行整合,生成车辆状态消息,将车辆状态信息传输给通信中间件进行存储和发布;

感知模块,用于基于图像消息,利用感知算法生成感知消息,并将感知消息通过通信中间件传输给控制模块;

地图模块,用于存储仿真环境地图数据,并基于仿真环境数据生成导航消息,并将导航消息通过通信中间件传输给规划模块;

规划模块,用于基于导航消息进行规划布局,生成轨迹规划消息,将轨迹规划消息通过通信中间件传输给控制模块;

控制模块,用于基于感知消息与轨迹规划消息,利用自动驾驶应用对应的规划控制算法生成自动驾驶控制指令,并将自动驾驶控制指令依次通过通信中间件和仿真代理模块传输给自动驾驶仿真器。

本实施例提供的一种自动驾驶应用的图形化开发平台,域控制器通过仿真代理模块负责与自动驾驶仿真器进行通信交互,避免了将规划模块和控制模块进行修改以适配仿真测试,减小了仿真环境和实车运行环境的差距;并且,感知模块、地图模块、规划模块和控制模块实现了对自动驾驶过程中不同功能的模拟测试,能够有效提高自动驾驶测试的可信度和运行效率。

在一种可选的实施方式中,域控制器,还包括:数据流适配层;

数据流适配层部署在通信中间件与仿真代理模块、感知模块、地图模块、规划模块和控制模块之间,用于提供统一通信接口;其中,统一通信接口适配通信中间件的接口。

本实施例提供的一种自动驾驶应用的图形化开发平台,数据流适配层规避了不同的消息通信中间件的接口不同的限制,统一了各模块之间的通信接口。

在一种可选的实施方式中,自动驾驶仿真器,还用于基于自动驾驶控制指令确定车辆横向控制信息与车辆纵向控制信息,基于车辆横向控制信息与车辆纵向控制信息生成车辆运行姿态,并将车辆运行姿态进行图形化显示。

本实施例提供的一种自动驾驶应用的图形化开发平台,将车辆运行姿态进行图形化显示,为车辆自动驾驶的仿真测试提供了参考,使得对车辆的控制更加可视化。

在一种可选的实施方式中,自动驾驶仿真器与域控制器之间通过tcp/ip网络连接。

第二方面,本发明提供了一种自动驾驶应用的图形化开发平台的开发方法,应用于上述一种自动驾驶应用的图形化开发平台,方法包括:

图形化开发器获取待扫描算法代码,对待扫描算法代码进行预处理,生成自动驾驶算法,将自动驾驶算法传输给域控制器,并基于自动驾驶应用确定仿真测试环境,将仿真测试环境传输给自动驾驶仿真器;

自动驾驶仿真器获取仿真测试环境对应的图像视频数据、传感器数据和车辆状态数据,并将图像视频数据、传感器数据和车辆状态数据传输给域控制器;

域控制器基于图像视频数据、传感器数据和车辆状态数据,利用自动驾驶应用对应的规划控制算法生成自动驾驶控制指令,并将自动驾驶控制指令传输给自动驾驶仿真器;

自动驾驶仿真器接收自动驾驶控制指令,基于自动驾驶控制指令控制车辆进行仿真测试,生成自动驾驶算法的评测结果。

第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第二方面的自动驾驶应用的图形化开发平台的开发方法。

第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第二方面的自动驾驶应用的图形化开发平台的开发方法。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的自动驾驶域控制器分层架构示意图;

图2是根据本发明实施例的一种自动驾驶应用的图形化开发平台的结构示意图;

图3是根据本发明实施例的数据流框架的结构示意图;

图4是根据本发明实施例的ADAS应用的仿真测试中数据流向的示意图;

图5是根据本发明实施例的一种自动驾驶应用的图形化开发平台的开发方法的流程示意图;

图6是本发明实施例的计算机设备的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

车端ADAS域控制器(或者称为车载计算平台)作为AD/ADAS的功能和应用的实现,常见的分层架构如图1所示,其中,自动驾驶应用包括ACC(Adaptive Cruise Contro,自适应巡航控制)、LKS(Lane Keeping System,车道保持系统)、HWA(Highway Assist,高速智能辅助驾驶系统)、AVP(Automated Valet Parking,自动代客泊车)等;功能层软件和自动驾驶应用通常为自动驾驶算法,比如规划算法,控制算法,在感知融合算法的基础上,不同的规划算法结合控制算法,进而完成特定自动驾驶应用的功能;中间件包括消息中间件、管理中间件等;操作管理系统包括内存管理、进程管理、硬件驱动、基础库等;硬件层包括AI计算单元、通用计算单元、传感器等。

在ADAS域控制的操作性和应用软件层之间,通常会引入一个消息通信中间件的引入,使得自动驾驶的功能软件的各个节点间的通信和服务调用实现起来更简单,同时更容易实现上下层之间、以及自动驾驶的算法和应用节点间的解耦。

自动驾驶仿真软件领域,VTD(Virtual Test Drive,一套用于驾驶辅助系统,主动安全和自动驾驶的完整模块化仿真工具)用于在基于公路和铁路的模拟范围内创建、配置、演示和评估虚拟环境;VTD用于ADAS和自动驾驶系统的开发,也是训练模拟器的核心,涵盖了从三维内容的生成到复杂交通场景的模拟,最后到简化或物理驱动传感器的模拟的全过程,用于SiL、DiL、ViL和HiL应用程序,也可以作为协同模拟操作,包括第三方或自定义包,通过其开放和模块化的设计,可以将其集成到客户的系统中;VTD对外提供了基于网络通信基础上的控制的接口,包括两个协议:RDB(Runtime Databus)和SCP(simulation controlprotocol),并采用服务器客户端架构(C/S架构)。RDB有个2方向的数据:由VTD向控制端发送,主要包括模拟车辆的状态、环境对象的状态、传感器数据原始数据(比如摄像头或者激光雷达等);另一个方向由控制端发向VTD,比如控制当前车辆的运行状态(比如加速度,方向盘转向角等)。SCP协议消息,主要用于实现对仿真动作的控制,比如模块管理、场景导入,启动仿真等等。

但是,针对ADAS应用的仿真测试过程较为复杂,仿真测试结果的准确性较低。

本实施例中提供了一种自动驾驶应用的图形化开发平台,如图2所示,该平台包括:图形化开发器201、自动驾驶仿真器202和域控制器203;图形化开发器201分别与自动驾驶仿真器202和域控制器203连接,自动驾驶仿真器202与域控制器203连接;其中,

图形化开发器201,用于获取待扫描算法代码,对待扫描算法代码进行预处理,生成自动驾驶算法,将自动驾驶算法传输给域控制器203,并基于自动驾驶应用确定仿真测试环境,将仿真测试环境传输给自动驾驶仿真器202。

具体地,图形化开发器201,具体用于对待扫描算法代码进行扫描,生成描述文件,并基于描述文件调用代码组件,将代码组件进行图形化显示,响应于拖拽操作,基于图形化显示的代码组件确定代码组件配置信息,基于代码组件配置信息生成自动驾驶算法。

进一步地,描述文件的生成过程为:按照预设代码格式改写待扫描算法代码,生成代码文件;获取代码文件的扩展名,基于代码文件的扩展名确定文件类型;基于文件类型对代码文件进行解析,基于解析结果生成描述文件。

自动驾驶仿真器202,用于获取仿真测试环境对应的图像视频数据、传感器数据和车辆状态数据,并将图像视频数据、传感器数据和车辆状态数据传输给域控制器203。

域控制器203,用于基于图像视频数据、传感器数据和车辆状态数据,利用自动驾驶应用对应的规划控制算法生成自动驾驶控制指令,并将自动驾驶控制指令传输给自动驾驶仿真器202。

具体地,自动驾驶仿真器202201和域控制器203之间通过tcp/ip(transmissioncontrol protocol/internet protocol,传输控制协议/网际协议)网络与连接。

进一步地,域控制器203依据车辆当前的状态(当前位置,速度,加速度,底盘信息,动力域的信息等),环境数据(感知算法依据摄像头数据、雷达数据等等获取到的车辆周边的信息,比如车道线、障碍物、红绿灯状态、限速标志等等),利用规划控制算法计算得到自动驾驶控制指令,比如车辆当前应该采取的加速度、油门踏板值、刹车值等等;自动驾驶控制指令被发送到自动驾驶仿真器202,即依据自动驾驶控制指令可以在图形界面上显示车辆正确的运行姿态,进而实现对车辆进行仿真测试;其中,规划控制算法可以采用PID(Proportion Integral Differential,比例、积分和微分算法)、LQR(Linear QuadraticRegulator,一种基于均方误差技术的连续时间线性参数控制算法)、MPC(ModelPredictive Control,模型预测控制算法)等算法。

进一步地,域控制器203依据车辆当前的状态(当前位置,速度,加速度,底盘信息,动力域的信息等),环境数据(感知算法依据摄像头数据、雷达数据等等获取到的车辆周边的信息,比如车道线、障碍物、红绿灯状态、限速标志等等),利用规划控制算法计算得到自动驾驶控制指令,比如车辆当前应该采取的加速度、油门踏板值、刹车值等等;自动驾驶控制指令被发送到自动驾驶仿真器202,即依据自动驾驶控制指令可以在图形界面上显示车辆正确的运行姿态,进而实现对车辆进行仿真测试;其中,规划控制算法可以采用PID(Proportion Integral Differential,比例、积分和微分算法)、LQR(Linear QuadraticRegulator,一种基于均方误差技术的连续时间线性参数控制算法)、MPC(ModelPredictive Control,模型预测控制算法)等算法。

自动驾驶仿真器202,还用于接收自动驾驶控制指令,基于自动驾驶控制指令控制车辆进行仿真测试,生成自动驾驶算法的评测结果。

具体地,自动驾驶仿真器202和域控制器203构成数据流适配框架,数据流适配框架提供各个模块对应的进程/任务的编排、调度、部署(多CPU活或者多核)和资源限制等功能;并且,数据流适配框架支持消息的同步机制:通过预先算法应用场景做出分析,定义出常用的消息处理机制,让算法应用无需再对消息做同步处理,减少算法开发的额外工作,专注算法本身,提高效率;其次,多个触发消息有任意一个到达即可触发用户回调;批次消息:多个触发消息必须全部到达才可触发用户回调;定时消息:根据用户设定的定时器周期触发用户回调。

本实施例提供的一种自动驾驶应用的图形化开发平台,域控制器基于自动驾驶仿真器传输的图像视频数据、传感器数据和车辆状态数据,利用规划控制算法生成自动驾驶控制指令,进而自动驾驶仿真器利用自动驾驶控制指令实现了对车辆的仿真测试,利用仿真代理模块负责与自动驾驶仿真器的数据通信,降低了自动驾驶仿真测试的复杂度,提高了仿真测试的准确性。

在一些可选的实施方式中,自动驾驶仿真器202,包括:

摄像头端口204,用于获取图像视频数据,将图像视频数据传输给域控制器203。

具体地,通过摄像头端口204将图像生成器(ImageGenerator)生成的图像、视频数据通过网络发送给域控制器203。

传感器端口205,用于获取传感器数据,将传感器数据传输给域控制器203。

具体地,传感器端口205可以将模拟的标准传感器数据发给域控制器203。

默认端口206,用于获取车辆状态数据,将车辆状态数据传输给域控制器203,并接收域控制器203发送的自动驾驶控制指令,基于自动驾驶控制指令控制车辆进行仿真测试,生成仿真测试结果。

具体地,车辆状态数据包括车辆信息和道路信息,其中,车辆信息包括转向角、转向力矩、加速度、电池状态等;道路信息包括道路ID(Identity Document,身份标识),所在车道的ID等。

进一步地,默认端口206接收来自仿真代理模块207发送的自动驾驶控制指令,比如方向盘转向大小、方向转向速度、油门踏板比例、刹车踏板比例、目标加速度、目标曲率大小和转向力矩大小等,可以选择其中的多个不同的字段来组合控制车辆的运动状态。

本实施例提供的一种自动驾驶应用的图形化开发平台,自动驾驶仿真器通过获取图像视频数据、传感器数据和车辆状态数据,为域控制器进行规划控制计算提供了数据基础,并且,默认端口接收域控制器发送的自动驾驶控制指令,以进行车辆的房车测试,使得仿真测试过程形成闭环,提高了仿真测试的效率。

在一些可选的实施方式中,如图3所示,域控制器203,包括:仿真代理模块207、感知模块208、地图模块209、规划模块210、控制模块211和通信中间件212,仿真代理模块207与自动驾驶仿真器202连接,通信中间件212分别与仿真代理模块207、感知模块208、地图模块209、规划模块210和控制模块211连接;其中,

仿真代理模块207,用于对图像视频数据进行解析封装,生成图像消息,将图像消息通过通信中间件212传输给感知模块208,并将传感器数据和车辆状态数据进行整合,生成车辆状态消息,将车辆状态信息传输给通信中间件212进行存储和发布。

具体地,仿真代理模块207作为域控制器203和自动驾驶仿真器202之间的网关,两者之间的通信都经由其统一完成,即仿真代理模块207作负责与自动驾驶仿真器202的各个端口建立tcp/ip网络连接,同时仿真代理模块207作为数据流适配框架的一个节点(即vtd代理节点),接受数据流框架层的部署和调度,数据流框架层中的通信中间件212和其他节点实现相互通信。

进一步地,仿真代理模块207接收到图像视频数据,对图像视频数据对应的报文进行解析后获取到其载荷也就是真正的图像信息,然后将图像信息按照数据框架的消息格式定义封装,生成图像消息,并将图像消息发布到通信中间件212中的“图像数据topic”中;其中,数据框架的消息格式如下表所示:

表1:

上述表1中,Header_length表示消息头长度,Version表示版本,Common_services表示扩展服务字段,Data_length表示数据长度,User_data表示消息的playload(原样),即真正要传输的数据。

进一步地,仿真代理模块207接收到的多种类型的车辆状态数据与传感器数据后,保存到共享的缓存区内,将各类消息的内容进行整合,融合生成车辆状态消息需要的各个字段,即车辆状态消息,然后将车辆状态消息定时任务发布到通信中间件212中的“车辆状态topic”中,上述方法满足了和实车传感器一样的消息发布机制;其中,消息内容整合主要有以下几个方面:

①自动驾驶仿真器202发送的车辆状态数据与传感器数据中包括很多个消息类型,比如当前车辆的速度,位置,底盘信息等,ADAS应用的规划控制算法需要接收的消息只有一个类型,因此需要将自动驾驶仿真器202发来的多个消息整合成一个消息中,由于消息的字段的单位有可能不一致,因此需要将车辆状态数据与传感器数据进行单位换算。

②自动驾驶仿真器202发送的车辆状态数据与传感器数据,在时间上发送频率也是不一致的,因此,在仿真代理模块207将传感器数据和车辆状态数据进行整合之前,需要对不同时间接收的车辆状态数据与传感器数据进行缓存。

进一步地,由于域控制器203的计算资源有限,仿真代理模块207需要支持灵活的部署策略,即,仿真代理模块207可以部署在域控制器203,或VTD仿真平台运行的计算机(即自动驾驶仿真器202),或独立计算机,将仿真代理模块按照实际模拟仿真测试环境进行部署,使得仿真代理模块的位置更加具有灵活性,当仿真代理模块部署在独立计算机时,隔离了仿真代理模块与域控制器中各个模块之间的运行,可以更好的对域控制器中各个模块的性能进行评估。

进一步地,仿真代理模块207启动时,检查其配置,若将仿真代理模块207部署在域控制器203中,则将数据发向数据流框架,如果仿真代理模块207部署在其他位置(即自动驾驶仿真器202或独立计算机),则可以通过DDS(Data Distribution Service,一种以数据为中心的分布式通信协议)协议,发向域控制器203的数据流。

感知模块208,用于基于图像消息,利用感知算法生成感知消息,并将感知消息通过通信中间件212传输给控制模块211。

地图模块209,用于存储仿真环境地图数据,并基于仿真环境数据生成导航消息,并将导航消息通过通信中间件212传输给规划模块210。

规划模块210,用于基于导航消息进行规划布局,生成轨迹规划消息,将轨迹规划消息通过通信中间件212传输给控制模块211。

控制模块211,用于基于感知消息与轨迹规划消息,利用规划控制算法生成自动驾驶控制指令,并将自动驾驶控制指令依次通过通信中间件212和仿真代理模块207传输给自动驾驶仿真器202。

具体地,仿真代理模块207订阅控制模块211在通信中间件212发布的“控制指令topic”,并解析自动驾驶控制指令字段的内容,将其重新封装到RDB(Redis DataBase,一个基于内存的数据库)控制消息中,并通过网络发送给自动驾驶仿真器202,实现对车辆的控制。

进一步地,域控制器203中的感知模块208、地图模块209、规划模块210和控制模块211作为数据流适配框架中的节点,不需要参与自动驾驶仿真器202与域控制器203之间的交互,感知模块208、地图模块209、规划模块210和控制模块211之间通过通信中间件212通信,发布和订阅预定义的各个数据topic,并完成感知、规划、控制等算法的计算,最终由控制模块211发出控车指令。

本实施例提供的一种自动驾驶应用的图形化开发平台,域控制器通过仿真代理模块负责与自动驾驶仿真器进行通信交互,避免了将规划模块和控制模块进行修改以适配仿真测试,减小了仿真环境和实车运行环境的差距;并且,感知模块、地图模块、规划模块和控制模块实现了对自动驾驶过程中不同功能的模拟测试,能够有效提高自动驾驶测试的可信度和运行效率。

在一些可选的实施方式中,域控制器203,还包括:数据流适配层213;

数据流适配层213部署在通信中间件212与仿真代理模块207、感知模块208、地图模块209、规划模块210和控制模块211之间,用于提供统一通信接口;其中,统一通信接口适配通信中间件212的接口。

具体地,由于域控制器203可以选用不同的通信中间件212,例如软件路由器ros和ros2、AP Autosar(Adaptive Platform Automotive Open System Architecture,汽车开放系统架构的自适应平台)、iceoryx(用于各种操作系统的进程间通信中间件212)、DDS(Data Distribution Service,数据分发服务),不同的通信中间件212导致域控制器203中的多个模块需要发送接收数据时调用相应的API接口,因此,采用数据流适配层213屏蔽不同的通信中间件212的接口,对外提供统一的subscribe(订阅消息)接口、publish(发布消息)接口,和service call(服务调用)接口。

本实施例提供的一种自动驾驶应用的图形化开发平台,数据流适配层规避了不同的消息通信中间件的接口不同的限制,统一了各模块之间的通信接口。

在一些可选的实施方式中,自动驾驶仿真器202,还用于基于自动驾驶控制指令确定车辆横向控制信息与车辆纵向控制信息,基于车辆横向控制信息与车辆纵向控制信息生成车辆运行姿态,并将车辆运行姿态进行图形化显示。

本实施例提供的一种自动驾驶应用的图形化开发平台,将车辆运行姿态进行图形化显示,为车辆自动驾驶的仿真测试提供了参考,使得对车辆的控制更加可视化。

下面通过一个具体实施例来说明一种自动驾驶应用的图形化开发平台的工作过程的。

实施例1:

要实现ADAS应用的仿真测试,VTD端需要其仿真环境中的传感器数据(包括摄像头--Camera、惯性测量单元--IMU等等),当前车辆(egocar,即仿真的目标车辆)状态(包括速度、加速度、航向角、档位、刹车力矩等等)发给域控制器上的相应的功能软件节点(比如感知节点、控制节点、预测规划节点等);另一方面,域控制器上的功能软件节点需要将控制信息和规划信息发送给VTD,实现对当前车辆的运动学控制。

其中,如图4所示,VTD仿真提供3个端口,分别是:

(1)默认端口,将车辆状态发送给感知控制节点,主要就是当前车辆的如下信息:比如转向角、转向力矩、加速度、电池状态等;道路信息:比如道路ID,所在车道的ID等。在域控制器上的控制算法节点,需要连接该端口接收这些信息作为控制算法的输入;另一个方面,默认端口接收来自控制端对车辆控制指令消息,比如方向盘转向大小、方向转向速度、油门踏板比例、刹车踏板比例、目标加速度、目标曲率大小、转向力矩大小,可以选择其中的多个不同的字段来组合控制车辆的运动状态。

(2)摄像头端口,通过该端口将图像生成器(ImageGenerator)生成的图像、视频数据通过网络发送给域控制器上的感知节点。

(3)传感器端口,该端口可以将模拟的完美传感器数据发给控制节点和规划节点,作为算法的输入,完成规划、控制结果的计算,域控制器计算出控制的参数后,如(1)默认端口的,将控制指令发回给VTD。

域控制器上,感知、规划、控制等算法计算节点接收。来自VTD通过网络传输的数据作为算法模型的输入,节点进程间则是通过通信中间件进行通信,最终控制算法节点输出当前车辆的横向和纵向的控制信息(比如加速踏板的位置、方向转向角度等等),通过VTD的控制端口消息输入给VTD,完成当前车辆的运动学控制。

如图3所示,智驾域控制器上的各个节点都需要作为客户端向VTD建立tcp(ransmission control protocol,传输控制协议)连接,用于接收数据和发送控车指令,上述方案的问题有如下几个方面:

1.每一个算法进程节点的都需要建立连接,而且每一个节点都需要解析VTD的消息,程序代码实现这样会有重复的工作,而且不易于统一管理;

2.域控制器上的各个节点的本职工作是为了完成相关算法的计算,并与其他的节点进程进行通信,完成ADAS应用的实现,为了完成仿真测试,在各个节点都增加和VTD交互数据的功能,这一部分功能本来不属于各个算法节点的工作,导致的结果是仿真测试用的代码和ADAS功能发布的代码是不一致的;

2.在实车应用中,对于ADAS算法的输入比如感知数据和传感器的数据都是通过subscribe(订阅)消息获取到的,但是仿真测试的时候通过网络从VTD仿真平台获取,导致仿真测试时的算法的数据源和实车运行场景不一致,仿真的效果不够完美。

为解决上述问题,本申请提供的一种自动驾驶应用的图形化开发平台在上述框架的基础上(即将VTD仿真作为自动驾驶仿真器,将域控制器中的节点作为模块),引入一个仿真代理模块作为VTD代理节点到域控制器,由其专职负责与自动驾驶仿真器的通信,域控制器中的各算法模块与仿真代理模块通过通信中间件通信,仿真代理模块实现与实车运行环境相同的传感器、执行器的功能;同时在软件架构上,在通信中间件和算法应用层之间增加一层数据流适配层,用以适配不同的通信中间件。

一种自动驾驶应用的图形化开发平台的工作过程如下所示:

(一)数据流适配层:

1.引入数据流适配框架,由于域控制器操作系统可以选用不同的消息通信中间件(常见的有ros、ros2、AP Autosar、iceoryx、DDS),这样算法节点需要发送接收数据时调用相应的API接口,数据流适配层的作用之一是屏蔽不同的通信中间的接口,对外提供统一的subscribe,publish,和service call(即订阅消息、发布消息和服务调用)接口;

2.数据流适配框架同时提供各个节点对应的进程/任务的编排、调度、部署(多cpu活或者多核)和资源限制等功能

3.数据流适配框架支持消息的同步机制:通过预先算法应用场景做出分析,定义出常用的消息处理机制,让算法应用无需再对消息做同步处理,减少算法开发的额外工作,专注算法本身,提高效率。策略包括最新消息:多个触发消息有任意一个到达即可触发用户回调;批次消息:多个触发消息必须全部到达才可触发用户回调;定时消息:根据用户设定的定时器周期触发用户回调。

(二)仿真代理模块:

1.仿真代理模块充当域控制器和VTD仿真工具的网关(gateway),两者之间的通信都经由其统一完成:负责与VTD的各个端口建立tcp网络连接,同时作为数据流适配框架的一个节点,接受数据流框架层的部署和调度,其通信中间件和其他节点实现相互通信。

2.数据处理方案:

(1)图像视频数据:vtd代理节点收到图像视频数据,对其报文继续解析后获取到其载荷也就是真正的图像信息,然后将其按照数据框架的消息格式定义封装,并发布到“图像数据topic”中;

(2)传感器数据和车辆状态数据:vtd节点收到的多种类型的车辆状态数据与传感器数据后,保存到共享的缓存区内,将各类消息的内容进行整合,融合生成车辆状态消息需要的各个字段,然后由定时任务发布到“车辆状态topic”中,这样的实现满足了和实车传感器一样的消息发布机制。

(4)控车指令:vtd节点订阅控制节点发布的“控制指令topic”,并解析消息字段的内容,将其重新封装到RDB控制消息中,通过网络发送给VTD仿真软件,实现对当前车辆的控制;

(5)其他节点:这些节点,就是ADAS算法节点的原始状态,不需要参与VTD仿真的交互,各节点通过通信中间通信,发布和订阅预定义的各个数据topic,并完成感知、规划、控制等算法的计算,最终由控制算法节点发出控车指令。

3.Vtd节点的部署方案:由于域控制器的计算资源有限,vtd代理节点需要支持灵活的部署策略可以部署在域控制器,或者仿真平台运行的计算机或者单独的计算机。需要增加相应的配置,标明部署的位置,vtd仿真节点启动时,检查配置,如果是在域控制器部署,则将数据发向数据流框架,如果是部署在其他的位置,则可以通过DDS协议,发向域控制器的数据流。

本发明实施例还提供了一种自动驾驶应用的图形化开发平台的开发方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本发明实施例还提供一种自动驾驶应用的图形化开发平台的开发方法,可用于上述的一种自动驾驶应用的图形化开发平台,图5是根据本发明实施例的一种自动驾驶应用的图形化开发平台的开发方法的流程图,如图5所示,该流程包括如下步骤:

步骤S501,图形化开发器获取待扫描算法代码,对待扫描算法代码进行预处理,生成自动驾驶算法,将自动驾驶算法传输给域控制器,并基于自动驾驶应用确定仿真测试环境,将仿真测试环境传输给自动驾驶仿真器。

步骤S502,自动驾驶仿真器获取仿真测试环境对应的图像视频数据、传感器数据和车辆状态数据,并将图像视频数据、传感器数据和车辆状态数据传输给域控制器。

步骤S503,域控制器基于图像视频数据、传感器数据和车辆状态数据,利用自动驾驶应用对应的规划控制算法生成自动驾驶控制指令,并将自动驾驶控制指令传输给自动驾驶仿真器。

步骤S504,自动驾驶仿真器接收自动驾驶控制指令,基于自动驾驶控制指令控制车辆进行仿真测试,生成自动驾驶算法的评测结果。

可以理解的是,本实施例方法的作用和有益效果与图2所示实施例中一种自动驾驶应用的图形化开发平台的作用和有益效果相对应,此处不再赘述。

本发明实施例还提供一种计算机设备,具有上述图2所示的一种自动驾驶应用的图形化开发平台。

请参阅图6,图6是本发明可选实施例提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器10为例。

处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。

其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。

存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。

该计算机设备还包括输入装置30和输出装置40。处理器10、存储器20、输入装置30和输出装置40可以通过总线或者其他方式连接,图6中以通过总线连接为例。

输入装置30可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置40可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。

本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。

虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

技术分类

06120116522869