一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于CAN报文周期监测的自动驾驶测试方法和系统与流程

2022-04-30 08:38:16 来源:中国专利 TAG:

基于can报文周期监测的自动驾驶测试方法和系统
技术领域
1.本发明涉及自动驾驶技术领域,尤其涉及一种基于can报文周期监测的自动驾驶测试方法和系统。


背景技术:

2.can(controller area network,控制器域网)报文是指发送单元向接受单元传送数据的帧。通常而言,车辆系统中的can报文是在can线(内部can、整车can、充电can)上利用ecu和can卡接收到的十六进制报文。
3.自动驾驶测试过程中,可以利用can报文作为测试结果的验证依据。然而,自动驾驶域控制器具有软件开发迭代周期短,版本更新快的特点,并且相比传统控制器,自动驾驶域控制器需要与多个控制器形成系统来对车辆进行控制,因此针对自动驾驶域控制器的can报文监测需要具有高效,快速,测试报告可读性高的要求。
4.现有技术中can报文监测通常是基于商用can报文解析工具进行的,由于主流商用can报文解析工具的输出形式不同,使得不同工具间的兼容性较差;同时,测试工程师根据can报文解析工具的输出分析出具测试报告的过程也存在着分析效率低的问题。
5.因此,如何提供一种更为高效、快速的自动驾驶测试方法和系统,成为了业内亟需解决的技术问题。


技术实现要素:

6.本发明提供一种基于can报文周期监测的自动驾驶测试方法和系统,用以解决现有技术中不同工具间的兼容性较差、分析效率低的缺陷,实现高效、快速的自动驾驶测试。
7.本发明提供一种基于can报文周期监测的自动驾驶测试方法,包括:
8.根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
9.在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;
10.确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
11.根据本发明提供的一种基于can报文周期监测的自动驾驶测试方法,所述根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文的步骤包括:
12.基于pandas函数库处理所述测试的需求数据can matrix,得到dataframe格式的测试参数集合;
13.通过自动驾驶测试车辆获取ascii格式的原始can报文;
14.基于pandas函数库处理所述原始can报文,得到dataframe格式的测试can报文。
15.根据本发明提供的一种基于can报文周期监测的自动驾驶测试方法,所述基于pandas函数库处理所述测试的需求数据can matrix,得到dataframe格式的测试参数集合的步骤包括:
16.通过pandas函数库读取所述测试的需求数据can matrix,解析索引后得到按列分离的、dataframe格式的第一数据段;
17.排除满足第一条件的第一数据段,得到测试参数集合;
18.所述第一条件是指所述第一数据段是can信号信息。
19.根据本发明提供的一种基于can报文周期监测的自动驾驶测试方法,所述基于pandas函数库处理所述原始can报文,得到dataframe格式的测试can报文的步骤包括:
20.通过pandas函数库读取所述原始can报文,得到按列分离的、dataframe格式的第二数据段;
21.提取满足第二条件的第二数据段,得到测试can报文;
22.所述第二条件是指所述第二数据段是时间戳、通道号、报文标识符、收发方向或者数据段字节。
23.根据本发明提供的一种基于can报文周期监测的自动驾驶测试方法,所述在所述测试can报文中检查所述测试参数,得到第一结果的步骤包括:
24.确定第一报文标识符集合中不存在参数组标号,则进行判断:
25.若第二报文标识符存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为周期型,则得到第一结果:所述测试参数对应的报文存在,且为周期型非j1939can报文;
26.若第二报文标识符存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为事件型,则得到第一结果:所述测试参数对应的报文存在,且为事件型非j1939can报文;
27.若第二报文标识符不存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为周期型,则得到第一结果:所述测试参数对应的报文不存在,且为周期型非j1939can报文;
28.若第二报文标识符不存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为事件型,则得到第一结果:所述测试参数对应的报文不存在,且为事件型非j1939can报文;
29.所述第一报文标识符是所述测试can报文中的报文标识符;所述第二报文标识符是与所述测试参数一一对应的报文标识符。
30.根据本发明提供的一种基于can报文周期监测的自动驾驶测试方法,所述在所述测试can报文中检查所述测试参数,得到第一结果的步骤包括:
31.确定第一报文标识符集合中存在参数组标号,则进行判断:
32.若第二参数组标号存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为周期型,则得到第一结果为所述测试参数对应的报文存在,且为周期型j1939can报文;
33.若第二参数组标号存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为事件型,则得到第一结果为所述测试参数对应的报文存在,且为事件型
j1939can报文;
34.若第二参数组标号不存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为周期型,则得到第一结果为所述测试参数对应的报文不存在,且为周期型j1939can报文;
35.若第二参数组标号不存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为事件型,则得到第一结果为所述测试参数对应的报文不存在,且为事件型j1939can报文;
36.所述第一参数组标号是第一报文标识符中的参数组标号,所述第一报文标识符是所述测试can报文中的报文标识符;所述第二参数组标号是第二报文标识符中的参数组标号,所述第二报文标识符是与所述测试参数一一对应的报文标识符。
37.本发明还提供一种基于can报文周期监测的自动驾驶测试系统,包括:
38.获取模块,用于根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
39.检查模块,用于在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;
40.周期模块,用于确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
41.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于can报文周期监测的自动驾驶测试方法的步骤。
42.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于can报文周期监测的自动驾驶测试方法的步骤。
43.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于can报文周期监测的自动驾驶测试方法的步骤。
44.本发明提供的基于can报文周期监测的自动驾驶测试方法和系统,通过测试can报文和根据自动驾驶测试的需求确定的测试参数,快速定位测试参数,并对应输出测试参数在测试can报文中的监测结果,有效提升了自动驾驶测试,尤其是固定can路中集中测试的效率;同时,通过引入周期型报文的计算,能够给出自动驾驶测试中常用的参数周期结果,进一步地简化了can报文分析流程,为测试报告的高效、快速出具提供了良好的基础。
附图说明
45.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1是本发明提供的基于can报文周期监测的自动驾驶测试方法的流程示意图;
47.图2是本发明实施例提供的can报文id检测原理示意图;
48.图3是本发明实施例提供的非j1939 can报文解析流程示意图;
49.图4是本发明实施例提供的j1939 can报文解析流程示意图;
50.图5是本发明实施例提供的测试报告示意图;
51.图6是本发明提供的电子设备的结构示意图;
52.图7是本发明提供的基于can报文周期监测的自动驾驶测试系统的结构示意图。
53.附图标记:
54.1:获取模块;
ꢀꢀꢀꢀꢀꢀꢀ
2:检查模块;
ꢀꢀꢀꢀꢀꢀꢀ
3:周期模块;
55.610:处理器;
ꢀꢀꢀꢀꢀꢀꢀ
620:通信接口;
ꢀꢀꢀꢀꢀ
630:存储器;
56.640:通信总线。
具体实施方式
57.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
58.下面结合图1-图5描述本发明的基于can报文周期监测的自动驾驶测试方法。
59.如图1所示,本发明实施例提供一种基于can报文周期监测的自动驾驶测试方法,包括:
60.步骤102,根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
61.步骤104,在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;
62.步骤106,确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
63.本实施例步骤104中,若在所述测试can报文中检查所述测试参数得到的结果为所述测试参数不存在,则所述第一结果为所述测试参数在所述测试can报文中不存在。
64.步骤106的执行是针对周期型报文进行的,对于非周期型的事件型报文的处理将在后续实施例中体现。
65.在一个优选的实施方式中,步骤106的执行前提为所述测试can报文为j1939can报文。
66.本实施例的有益效果在于:
67.通过测试can报文和根据自动驾驶测试的需求确定的测试参数,快速定位测试参数,并对应输出测试参数在测试can报文中的监测结果,有效提升了自动驾驶测试,尤其是固定can路中集中测试的效率;
68.同时,通过引入周期型报文的计算,能够给出自动驾驶测试中常用的参数周期结果,进一步地简化了can报文分析流程,为测试报告的高效、快速出具提供了良好的基础。
69.根据上述实施例,在本实施例中:
70.所述根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获
取测试can报文的步骤包括:
71.基于pandas函数库处理所述测试的需求数据can matrix,得到dataframe格式的测试参数集合;
72.在一个优选的实施方式中,dataframe格式的测试参数集合是经过数据清洗和重构后得到的。
73.通过自动驾驶测试车辆获取ascii格式的原始can报文;
74.基于pandas函数库处理所述原始can报文,得到dataframe格式的测试can报文。
75.在一个优选的实施方式中,dataframe格式的测试can报文是经过数据清洗和重构后得到的。
76.所述基于pandas函数库处理所述测试的需求数据can matrix,得到dataframe格式的测试参数集合的步骤包括:
77.通过pandas函数库读取所述测试的需求数据can matrix,解析索引后得到按列分离的、dataframe格式的第一数据段;
78.排除满足第一条件的第一数据段,得到测试参数集合;
79.所述第一条件是指所述第一数据段是can信号信息。
80.在一个优选的实施方式中,还需针对第一数据段去除无效信息、规范字符串书写格式、处理异常值。
81.在一个优选的实施方式中,所述can信号信息是指非can报文信息,即所述测试的需求数据can matrix由can信号信息和can报文信息组成。
82.所述基于pandas函数库处理所述原始can报文,得到dataframe格式的测试can报文的步骤包括:
83.通过pandas函数库读取所述原始can报文,得到按列分离的、dataframe格式的第二数据段;
84.提取满足第二条件的第二数据段,得到测试can报文;
85.所述第二条件是指所述第二数据段是时间戳、通道号、报文标识符、收发方向或者数据段字节。
86.在一个优选的实施方式中,还需针对第二数据段去除无效信息、规范字符串书写格式、处理异常值。
87.本实施例的有益效果在于:
88.通过pandas函数库(例如,python语言中带有的pandas函数库)对can报文和can matrix进行处理,相比matlab、labview等其它can报文处理工具,具有更高的解析效率。
89.值得说明的是,现有技术中can报文的解析往往是基于商用工具执行的,在提供通用的can报文解析方法的基础上,能够发现can报文解析效率的差异本身,就需要本领域技术人员付出创造性劳动,也就是说,本实施例是在提供通用的can报文解析方法的基础上,进一步考虑了解析效率的问题给出的。
90.根据上述任一实施例,在本实施例中:
91.所述在所述测试can报文中检查所述测试参数,得到第一结果的步骤包括针对非j1939can报文(即普通can报文)的检查子步骤,具体地:
92.确定第一报文标识符集合中不存在参数组标号,则进行判断:
93.若第二报文标识符存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为周期型,则得到第一结果:所述测试参数对应的报文存在,且为周期型非j1939can报文;
94.若第二报文标识符存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为事件型,则得到第一结果:所述测试参数对应的报文存在,且为事件型非j1939can报文;
95.若第二报文标识符不存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为周期型,则得到第一结果:所述测试参数对应的报文不存在,且为周期型非j1939can报文;
96.若第二报文标识符不存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为事件型,则得到第一结果:所述测试参数对应的报文不存在,且为事件型非j1939can报文;
97.所述第一报文标识符是所述测试can报文中的报文标识符;所述第二报文标识符是与所述测试参数一一对应的报文标识符。
98.特别地,对于周期型报文,可以执行判断以确定所述can报文是否为只发送一次的异常帧,对于异常帧,直接输出异常帧结果即可;对于非异常帧,则继续进行后续的周期计算的(即得到第二结果的)步骤。
99.所述在所述测试can报文中检查所述测试参数,得到第一结果的步骤还包括针对j1939can报文的检查子步骤。
100.特别地,对于j1939can报文,即长帧can报文,还需考虑j1939can报文中是否为长帧格式的单帧报文,因此,若j1939can报文的长度小于等于8(通常而言,单帧报文的长度等于8,因此可以对长度小于8的报文做清洗处理,不在执行后续流程),则确定j1939can报文为长帧格式的单帧报文,第一结果的输出可以参考上述针对非j1939can报文的判断流程;若j1939can报文的长度大于8,则:
101.确定第一报文标识符集合中存在参数组标号,则进行判断:
102.若第二参数组标号存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为周期型,则得到第一结果为所述测试参数对应的报文存在,且为周期型j1939can报文;
103.若第二参数组标号存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为事件型,则得到第一结果为所述测试参数对应的报文存在,且为事件型j1939can报文;
104.若第二参数组标号不存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为周期型,则得到第一结果为所述测试参数对应的报文不存在,且为周期型j1939can报文;
105.若第二参数组标号不存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为事件型,则得到第一结果为所述测试参数对应的报文不存在,且为事件型j1939can报文;
106.所述第一参数组标号是第一报文标识符中的参数组标号,所述第一报文标识符是所述测试can报文中的报文标识符;所述第二参数组标号是第二报文标识符中的参数组标
号,所述第二报文标识符是与所述测试参数一一对应的报文标识符。
107.本实施例的有益效果在于:
108.类似于上一实施例,本实施例在提供通用的can报文解析方法的基础上,进一步考虑到了自动驾驶车辆的can报文具有发送通道多,j1939can报文与普通can报文混合发送,单帧报文与多帧报文共存等特点,由于以上问题,针对自动驾驶车辆的整车can报文测试具有复杂性高,数量大,不同报文的判据不一致等难点,能够发现这些问题本身,就需要本领域技术人员付出创造性的劳动。
109.本实施例就上述问题给出了区分j1939can报文与普通can报文,以便进行不同处理的解决方案,避免了人工检测中效率低,误判率高等缺点,使测试时分析效率更高。
110.根据上述任一实施例,在本实施例中:
111.首先对本实施例的相关背景进行说明。
112.装备自动驾驶域控制器的卡车与传统车辆相比,具有复杂程度高,设计can报文收发节点多,存在多种can格式(j1939与普通can)的特点,由于这些问题的存在,使得对于自动驾驶卡车的can网络测试存在测试效率低,测试项复杂,人工测试无法准确获得can周期误差结果等问题。
113.自动驾驶卡车的can信号由于传递出自动驾驶系统中各个ecu的关键信息,测试人员在进行数据分析时,往往需要对信号进行图表绘制,按照dbc文件或者can matrix文件检查特定id报文是否出现。
114.当前市场上主流can报文检测工具都具有将can信号保存为ascii格式的功能,但是传统计算机语言如c,c 无法高效率对ascii文件进行数据处理。
115.目前主流can报文解析工具没有针对can报文整车点检的功能,即检测所有can报文是否在can路上出现;针对can周期的检测也无法快速提示使用者是否存在丢帧现象;在使用者离线分析数据时,也无法快速定位问题,需要人工识别与计算周期误差,效率较低。
116.测试工程师在完成点检测试后需要出具相应测试的测试报告,以反映测试项的问题,针对can报文点检测试,测试报告中的问题类型可以被分为固定类型,由于这种特点,can报文点检测试报告可以采取自动化生成的方式。
117.在人工计算得出结果后,需要将结果转化成excel或者word版本的报告,通过工程师自己编写报告有效率低,容易出错,覆盖率低等问题。
118.而现有技术中存在如下两种常见的解决方案:
119.1、通过市面上主流can检测工具记录整车can路上的所有报文,再通过人工计算的方式得出关键id是否出现,通过can工具自带的图表绘制功能观察报文周期是否超过规定限制。
120.2、通过excel等软件对于关键信号进行计算,得出的结果再编写入测试报告中。
121.而本实施例采用了如下区别手段:
122.1、can报文输入文件为ascii,目前主流can解析工具均支持该格式,突破工具限制,支持多种工具记录的can报文数据。
123.2、用python语言中pandas库函数,可以有效处理庞大数据量的can信号(对比不使用pandas的python程序,处理速度提高10倍)。
124.3、可以支持自动化的报告生成,格式为excel,附带can报文的发送类型(周期性,
事件型),can报文在ascii中出现的平均周期,最大周期,并根据客户指定的误差判据决定报文周期是否不符合预期。
125.4、支持多路can报文检查,支持多种格式can报文(j1939,普通can)。
126.故本实施例具有如下有益效果:
127.1、针对现场诊断工程师的测试需求,实现了快速高效的can报文检测;
128.2、针对多路can的自动监测,减少软件配置时间,方便在固定can路中的集中测试;
129.3、针对can报文发送中存在的错误生成可读性高的测试报告,附带对应can信号的平均周期误差,最大周期误差等信息,方便测试工程师判断报文周期是否存在错误;
130.4、支持周期型,事件型;普通can报文,j1939多帧报文的检测,并附带对应说明,方便使用者阅读。
131.也就是说,本实施例涉及can报文自动监测与周期计算以及报文发送周期的评估,是车辆控制器测试中的重要内容之一。本实施例创新地使用了python语言处理大量can报文原始数据,提高了处理效率,使得使用者摆脱传统can报文解析工具的限制,并且针对can报文测试的关键信息做出特殊处理,如平均误差和最大误差的计算,使得使用传统can工具无法快速判断的can报文发送错误,例如丢帧,重复发送等问题,做出标注;本实施例还针对j1939多帧报文做出判断,使使用者快速定位这一类型报文。
132.下面将对本实施例的具体方案进行说明。
133.本实施例的输入文件为ascii文件,该类型文件可以由can报文解析工具生成,目前市场上主流can解析工具均支持以ascii文件记录can报文,下文中,ascii文件指代记录了can报文信息的ascii文件,ascii文件中,包含以下信息:时间戳,报文标识符(msg_id),can报文解析工具中的指定通道,can报文数据场,can报文收发方向。
134.本实施例使用了在生成can报文解析文件dbc时作为指导文件的can matrix文件作为程序的一个输入,该文件中,定义了can报文的以下信息:报文名称(msg_name),报文类型(msg_type),报文标识符(msg_id),参数组标号(pgn),报文发送类型(msg_send_type),报文发送周期(msg_cycle_time)等信息,这些信息会作为解析依据,对包含can报文原始信息的ascii文件进行数据解析。
135.本实施例的can报文处理处理过程可由图2阐明,在过程中,数据处理过程可被分为2个流程:ascii文件(即测试can报文)数据处理和excel文件(即测试参数/can matrix)的数据处理。其中,ascii文件具有数据量大,结构复杂的等特点,是数据处理的主要难点,本实施例利用python数据处理库函数pandas的dataframe数据结构,将ascii文件读取,转存为dataframe格式,该格式不需要遍历即可获取指定行列包含指定值的信息,提高程序处理效率。对于包含can matrix的excel文件,需要统一can matrix文件定义时的不规范书写,并转化为统一书写格式。
136.本实施例在重构ascii文件和can matrix文件后,对其进行数据处理,得出数据处理结果后,将原can matrix定义的信息,报文名称(msg_name),报文类型(msg_type),报文标识符(msg_id),参数组标号(pgn),报文发送类型(msg_send_type),报文发送周期(msg_cycle_time)保留,并将数据处理结果平均周期误差(period_error_average),平均周期误差百分比(period_error_average_percentage),最大周期误差(period_error_max),最大周期误差百分比(period_error_max_percentage),报文是否在ascii文件中出现结果(id_
appear_in_ascii),最终测试结果(test result),测试结果备注(comment),这些结果将保存至can id检测报告:id_apperance_check_result中。
137.下面将按照图2的流程图顺序,介绍can检测中数据处理的主要过程,按照python脚本的实现过程,可以分为一下几个步骤:can报文数据读取,数据清洗;can matrix读取,数据清洗;针对j1939报文的数据处理;针对普通can报文的数据处理;合并测试结果输出,并导入excel文件。
138.can报文数据的读取与数据清洗的重难点是高效读取ascii并将其转化为后续程序可处理的数组结构,对于这一需求,pandas函数库可以高效处理大数据量的ascii文件,在读取数据后,需要将数据进行打散处理,这一过程是将读取的数据按照列分离,用于数据处理。ascii中还包含一些对于数据处理无用的信息,这一部分信息通常为can报文的操作信息,一些标题信息等,需要将其去除。完成上述步骤后,会得到一个按照需求的,按列分离的dataframe格式的数据段,在该数据段中,需要提取为接下来出具处理有用的列,这些列包括:时间戳(time),通道号(channel),报文标识符(msg_id),收发方向(orient),数据段字节1-8(byte1-8)。所有处理完成后,ascii数据读取与数据清洗工作已完成,输出的结果可直接作为随后进行的数据处理程序段的输入。
139.can matrix数据的数据读取与数据清洗工作主要针对can报文的解析索引信息,由于can matrix包含了can报文信息和can信号信息,在此发明中,can信号数据是无效输入,需要进行去除这些信号,并且筛选对ascii文件进行数据解析必要的信息,这些信息可分为两种类型:
140.第一种是在后续报告中,仅作can报文信息说明,在程序中并不会起实际作用,用于方便使用者阅读的类型,例如:报文名称(msg_name),报文类型(msg_type),报文发送类型(msg_send_type),各个报文收发节点等;
141.另一种信息会在数据处理中作为指导,例如报文标识符(msg_id),参数组标号(pgn),报文发送周期(msg_cycle_time)等;
142.在数据清洗后,这两部分信号会被合并生成dataframe类型结构体,输出给后续程序做处理。
143.在完成上述两个输出文件的数据处理后,可以开始can报文检测工作,本实施例在设计解析脚本时,将can报文区分为j1939can与普通can报文,原因是与普通can报文相比,j1939can的报文标识符(msg_id)包含了参数组标号(pgn),相较于普通can报文在解析时,如果发送的是多包报文,即j1939长帧,会需要使用参数组标号(pgn)来进行辨识,而普通can报文只需要通过报文标识符(msg_id)辨识即可。
144.本实施例中对于普通can报文(即非j1939can报文)解析流程如图3所示。在重构can matrix和ascii文件后,对所有在can matrix中的报文标识符(msg_id)进行观测,判断是否在ascii中出现的id中,除此之外数据处理脚本对周期型报文与事件型报文进行了区分,在整车测试中,事件型报文通常负责dtc或者长数据的传输,是报文检测的重点观察项,在数据处理时进行判断有助于使用者在读取报告时方便区分。
145.本实施例中对于j1939can报文解析流程如图4所示。相较于普通can报文解析,j1939can报文由于存在j1939长帧,在ascii中不止需要报文标识符(msg_id)作为参考来进行检测,长帧会使用参数组标号(pgn)来作为参考进行检测。在实际测试过程中,长帧有只
触发一帧的情况,而计算周期是必须至少存在2帧,该情况会导致程序报错,由于上述原因,需要判断长帧周期。
146.在完成上述处理后,输出的结果将会与can matrix中测试工程师需要阅读的信息合并,最终导出生成为excel文件,最终输出报告中所包含的信息如图5所示。
147.本实施例提供了一种can报文检测工具,用于整车can报文检测以及can报文周期离线分析并且可以区分j1939can报文与普通can报文,以便进行不同处理,避免了人工检测中效率低,误判率高等缺点。本实施例引入了python中数据处理库函数pandas对can报文数据进行数据处理,针对日常测试中can报文记录文件存储量大,数据结构不统一的问题,采用数据清洗,合并等操作。进行数据处理后,对不同id的报文进行周期检测,这一过程中分析报文是否按照规定周期发送,计算平均误差,最大误差,来判断报文是否存在丢帧,重复发送等问题。本实施例已用于多个项目can报文点检测试中,提高了了测试工程师的工作效率,并且基于测试工程师的需求,生成了可读性高的检测报告。
148.下面将从对比的角度说明本实施例的有益效果。
149.本实施例的测试需求:
150.自动驾驶整车集成测试时,需要确认can报文节点发送的报文符合can matrix定义,其中关注重点为can报文周期是否符合定义要求,can报文是否丢帧,can报文平均周期误差是否小于判据,can报文最大周期误差是否小于判据等
151.本实施例的测试需求数据:
152.在本实施例中,在can matrix中重点获取can报文的属性为:报文规定周期,can报文规定发送类型(周期型,事件型),报文长度(dlc),其中dlc》8的报文会被分类为长帧报文,报文标识符(id)
153.现有方法无法获取/直接获取该所需数据的原因:
154.现有方法使用can报文解析工具可以进行实时观测,也可以进行数据回访,但无法有效计算并统计规定时间内can报文为can报文周期是否符合定义要求,can报文是否丢帧,can报文平均周期误差是否小于判据,can报文最大周期误差是否小于判据等并给出测试报告,因为这些数据需要离线分析并统计
155.本实施例申请能够获取的原因:
156.本实施例创新性的使用python pandas库高效处理数据的优点,对于大数据量的用于整车集成测试的离线数据进行数据处理,计算各个can matrix报文中规定的报文在ascii文件中的真实周期,并统计出平均周期,最大周期,是否丢帧,并按照can matrix筛选不同种类周期进行区分处理。
157.并通过can matrix中的定义确定发送节点,若出现can报文收发问题,方便测试人员直接定位问题ecu节点。
158.本实施例创新性还体现于可以识别j1939长帧并通过pgn而不是id从ascii文件中筛选。
159.下面对本发明提供的基于can报文周期监测的自动驾驶测试装置进行描述,下文描述的基于can报文周期监测的自动驾驶测试装置与上文描述的基于can报文周期监测的自动驾驶测试方法可相互对应参照。
160.本发明实施例提供一种基于can报文周期监测的自动驾驶测试系统,包括:
161.获取模块1,用于根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
162.检查模块2,用于在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;
163.周期模块3,用于确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
164.所述获取模块1包括:
165.测试参数子模块,用于基于pandas函数库处理所述测试的需求数据can matrix,得到dataframe格式的测试参数集合;
166.原始报文子模块,用于通过自动驾驶测试车辆获取ascii格式的原始can报文;
167.测试报文子模块,用于基于pandas函数库处理所述原始can报文,得到dataframe格式的测试can报文。
168.所述测试参数子模块包括:
169.第一读取单元,用于通过pandas函数库读取所述测试的需求数据can matrix,解析索引后得到按列分离的、dataframe格式的第一数据段;
170.排除单元,用于排除满足第一条件的第一数据段,得到测试参数集合;
171.所述第一条件是指所述第一数据段是can信号信息。
172.所述测试报文子模块包括:
173.第二读取单元,用于通过pandas函数库读取所述原始can报文,得到按列分离的、dataframe格式的第二数据段;
174.提取单元,用于提取满足第二条件的第二数据段,得到测试can报文;
175.所述第二条件是指所述第二数据段是时间戳、通道号、报文标识符、收发方向或者数据段字节。
176.所述检查模块2包括:
177.非j1939子模块,用于确定第一报文标识符集合中不存在参数组标号,则进行判断:
178.若第二报文标识符存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为周期型,则得到第一结果:所述测试参数对应的报文存在,且为周期型非j1939can报文;
179.若第二报文标识符存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为事件型,则得到第一结果:所述测试参数对应的报文存在,且为事件型非j1939can报文;
180.若第二报文标识符不存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为周期型,则得到第一结果:所述测试参数对应的报文不存在,且为周期型非j1939can报文;
181.若第二报文标识符不存在于所述第一报文标识符集合,且所述第二报文标识符对应的报文类型为事件型,则得到第一结果:所述测试参数对应的报文不存在,且为事件型非j1939can报文;
182.所述第一报文标识符是所述测试can报文中的报文标识符;所述第二报文标识符是与所述测试参数一一对应的报文标识符。
183.j1939子模块,用于确定第一报文标识符集合中存在参数组标号,则进行判断:
184.若第二参数组标号存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为周期型,则得到第一结果为所述测试参数对应的报文存在,且为周期型j1939can报文;
185.若第二参数组标号存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为事件型,则得到第一结果为所述测试参数对应的报文存在,且为事件型j1939can报文;
186.若第二参数组标号不存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为周期型,则得到第一结果为所述测试参数对应的报文不存在,且为周期型j1939can报文;
187.若第二参数组标号不存在于所述第一参数组标号集合,且所述第二参数组标号对应的报文类型为事件型,则得到第一结果为所述测试参数对应的报文不存在,且为事件型j1939can报文;
188.所述第一参数组标号是第一报文标识符中的参数组标号,所述第一报文标识符是所述测试can报文中的报文标识符;所述第二参数组标号是第二报文标识符中的参数组标号,所述第二报文标识符是与所述测试参数一一对应的报文标识符。
189.图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(communications interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行基于can报文周期监测的自动驾驶测试方法,该方法包括:根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
190.此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
191.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于can报文周期监测的自动驾驶测试方法,该方法包括:根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测
试can报文;在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
192.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于can报文周期监测的自动驾驶测试方法,该方法包括:根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;在所述测试can报文中检查所述测试参数,得到第一结果;所述第一结果包括所述测试参数的报文类型结果;确定所述测试参数的报文类型为周期型报文,则计算所述测试参数在所述测试can报文中的实际周期,并根据所述测试参数、所述测试参数的预计周期以及实际周期得到第二结果。
193.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
194.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
195.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献