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

基于CAN报文解析运算的自动驾驶测试方法和系统与流程

2022-04-27 03:31:51 来源:中国专利 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.根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
11.根据本发明提供的一种基于can报文解析运算的自动驾驶测试方法,所述根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文的步骤包括:
12.基于pandas函数库解析并重构测试需求数据can matrix,得到测试参数集合;所述测试参数集合包括测试参数的id、测试参数的起始位、测试参数的数据长度、物理值转换因子以及物理值偏移因子;
13.基于pandas函数库解析并重构原始can报文,得到测试can报文;所述原始can报文是通过自动驾驶测试车辆获取的、ascii格式的报文。
14.根据本发明提供的一种基于can报文解析运算的自动驾驶测试方法,所述根据所述时间戳排序所述数据场,并解析所述数据场,得到所述测试参数的物理值的步骤包括:
15.将所述测试数据集合中的、十六进制ascii格式的数据场转换为二进制数据场;
16.根据所述测试参数的起始位和测试参数的数据长度,截取所述二进制数据场,得到二进制解析数据并转换为十进制解析数据;
17.根据物理值转换因子、物理值偏移因子以及所述十进制解析数据,计算得到所述测试参数的物理值。
18.根据本发明提供的一种基于can报文解析运算的自动驾驶测试方法,所述根据所述时间戳排序所述数据场,并二次运算所述数据场,得到所述测试参数的数据处理结果的步骤包括:
19.以所述时间戳和物理值为输入,基于分析公式计算得到分析值;
20.基于图像化标准可视化所述分析值,并将所述分析值和所述分析值的可视化结果作为数据处理结果输出;
21.所述分析公式是根据所述自动驾驶测试的需求确定的;所述图像化标准是根据所述自动驾驶测试的需求确定的。
22.根据本发明提供的一种基于can报文解析运算的自动驾驶测试方法,所述根据物理值转换因子、物理值偏移因子以及所述十进制解析数据,计算得到所述测试参数的物理值的步骤包括:
23.基于物理值公式计算所述测试参数的物理值v
physical

[0024]vphysical
=v
raw
×
factor offset
[0025]
式中,v
raw
为所述二进制解析数据;factor为物理值转换因子;offset为物理值偏移因子。
[0026]
根据本发明提供的一种基于can报文解析运算的自动驾驶测试方法,所述提取所述测试can报文中对应于所述测试参数的测试数据集合的步骤包括:
[0027]
针对所述测试can报文中对应于所述测试参数的报文长度,记为参数报文,进行判断:
[0028]
若所述参数报文包括参数组标号,则获知所述参数报文为j1939can报文,确定所述测试参数的参数组标号,提取所述测试can报文中所述参数组标号所在的数据行,并输出所述数据行中的时间戳列和数据场列;
[0029]
若所述参数报文不包括参数组标号,则获知所述参数报文为非j1939can报文,确定所述测试参数的报文标识符,提取所述测试can报文中所述报文标识符所在的数据行,并输出所述数据行中的时间戳列和数据场列。
[0030]
本发明还提供一种基于can报文解析运算的自动驾驶测试系统,包括:
[0031]
获取模块,用于根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
[0032]
提取模块,用于提取所述测试can报文中对应于所述测试参数的测试数据集合;所述测试数据包括一一对应的时间戳和数据场;
[0033]
输出模块,用于根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
[0034]
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于can报文解析运算的自动驾驶测试方法的步骤。
[0035]
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于can报文解析运算的自动驾驶测试方法的步骤。
[0036]
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于can报文解析运算的自动驾驶测试方法的步骤。
[0037]
本发明提供的基于can报文解析运算的自动驾驶测试方法和系统,通过提取测试can报文中对应于测试参数的时间戳和数据场,实现了待分析参数的快速定位,有效提升了自动驾驶测试,尤其是测试结果分析和出具测试报告过程的效率;同时,通过对定位后的时间戳和数据场依次进行排序、解析和二次运算,将can报文中的抽象信息转换为可读信息,省去了针对不同测试需求的复杂计算,提供了更为灵活、普适性更好的自动驾驶测试方法。
附图说明
[0038]
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039]
图1是本发明提供的基于can报文解析运算的自动驾驶测试方法的流程示意图;
[0040]
图2是本发明实施例提供的can信号解析流程示意图;
[0041]
图3是本发明实施例提供的ascii数据场至物理值的转换流程示意图;
[0042]
图4是本发明提供的基于can报文解析运算的自动驾驶测试系统的结构示意图;
[0043]
图5是本发明提供的电子设备的结构示意图。
[0044]
附图标记:
[0045]
1:获取模块;
ꢀꢀꢀꢀꢀꢀꢀ
2:提取模块;
ꢀꢀꢀꢀꢀꢀꢀꢀ
3:输出模块;
[0046]
510:处理器;
ꢀꢀꢀꢀꢀꢀꢀ
520:通信接口;
ꢀꢀꢀꢀꢀꢀ
530:存储器;
[0047]
540:通信总线。
具体实施方式
[0048]
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049]
下面结合图1-图3描述本发明的基于can报文解析运算的自动驾驶测试方法。
[0050]
如图1所示,本发明实施例提供一种基于can报文解析运算的自动驾驶测试方法,包括:
[0051]
步骤102,根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
[0052]
步骤104,提取所述测试can报文中对应于所述测试参数的测试数据集合;所述测试数据包括一一对应的时间戳和数据场;
[0053]
步骤106,根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
[0054]
本实施例步骤106中,所述测试参数的物理值既为二次运算的输入值,又与数据处理结果共同作为自动驾驶测试的测试结果。
[0055]
值得说明的是,所述数据处理结果既可以是针对单个can的数据数值运算(如微分、积分等);又可以是针对不同can间关联数据的数值运算;还可以是判断类型的二次运算(例如a信号为某特定值时,b、c、d信号应为某特定值的判断)。
[0056]
也就是说,执行本实施例方法能够得到格式通用的不同控制器域网的测试数据集合,在此基础上进行的解析和二次运算能够直接给出跨控制器域网的测试分析结论。
[0057]
在一个优选的实施方式中,所述测试结果还应给出所述测试参数的基本信息和所述测试can报文的基本信息。
[0058]
在一个优选的实施方式中,本实施例方法可以应用如下自动驾驶性能测试场景:
[0059]
1、需要对整车油耗进行统计,但can报文数据只包含整车油箱百分比数值,对油耗进行计算需要对离线数据进行微分处理;
[0060]
2、需要对自动驾驶域控制器的热功率进行数据统计并分析,但can报文只包含实时adu内部温度,需要对adu温度进行数值运算得出adu热功率;
[0061]
3、电动卡车对于其能耗(耗电速度)进行数据统计并分析,但can报文只包含实时内部电池电量(soc),需要对电量信号值进行微分。
[0062]
上述测试场景中,需求的数据包括:
[0063]
测试参数(如can matrix文件)中的:报文长度,起始字节,起始位,信号长度,数据类型,比例,补偿。
[0064]
测试can报文(ascii文件)中的:时间戳(time),通道号(channel),报文标识符(msg_id),收发方向(orient),数据段字节1-8(byte1-8)。
[0065]
本实施例的有益效果在于:
[0066]
通过提取测试can报文中对应于测试参数的时间戳和数据场,实现了待分析参数的快速定位,有效提升了自动驾驶测试,尤其是测试结果分析和出具测试报告过程的效率;同时,通过对定位后的时间戳和数据场依次进行排序、解析和二次运算,将can报文中的抽象信息转换为可读信息,省去了针对不同测试需求的复杂计算,提供了更为灵活、普适性更好的自动驾驶测试方法。
[0067]
根据上述实施例,在本实施例中:
[0068]
所述根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文的步骤包括:
[0069]
基于pandas函数库解析并重构测试需求数据can matrix,得到测试参数集合;所述测试参数集合包括测试参数的id、测试参数的起始位、测试参数的数据长度、物理值转换因子以及物理值偏移因子;
[0070]
在一个优选的实施方式中,所述测试参数集合是基于python程序调用pandas函数库解析、数据清洗、数据重构后得到的dataframe格式的集合;所述数据清洗包括异常值处
理、无关值排除、字符串书写格式规范,其中,无关值是根据所述自动驾驶测试需求确定的。
[0071]
基于pandas函数库解析并重构原始can报文,得到测试can报文;所述原始can报文是通过自动驾驶测试车辆获取的、ascii格式的报文。
[0072]
在一个优选的实施方式中,所述测试can报文是基于python程序调用pandas函数库解析、数据清洗、数据重构后得到的dataframe格式的报文;所述数据清洗包括异常值处理、无关值排除、字符串书写格式规范,其中,无关值是根据所述自动驾驶测试需求确定的。
[0073]
通过pandas函数库(例如,python语言中带有的pandas函数库)对can报文和can matrix进行处理,相比matlab、labview等其它can报文处理工具,具有更高的解析效率。
[0074]
值得说明的是,现有技术中can报文的解析往往是基于商用工具执行的,在提供通用的can报文解析方法的基础上,能够发现can报文解析效率的差异本身,就需要本领域技术人员付出创造性劳动,也就是说,本实施例是在提供通用的can报文解析方法的基础上,进一步考虑了解析效率的问题给出的。
[0075]
所述根据所述时间戳排序所述数据场,并解析所述数据场,得到所述测试参数的物理值的步骤包括:
[0076]
将所述测试数据集合中的、十六进制ascii格式的数据场转换为二进制数据场;
[0077]
根据所述测试参数的起始位和测试参数的数据长度,截取所述二进制数据场,得到二进制解析数据并转换为十进制解析数据;
[0078]
根据物理值转换因子、物理值偏移因子以及所述十进制解析数据,计算得到所述测试参数的物理值。
[0079]
所述根据所述时间戳排序所述数据场,并二次运算所述数据场,得到所述测试参数的数据处理结果的步骤包括:
[0080]
以所述时间戳和物理值为输入,基于分析公式计算得到分析值;
[0081]
基于图像化标准可视化所述分析值,并将所述分析值和所述分析值的可视化结果作为数据处理结果输出;
[0082]
所述分析公式是根据所述自动驾驶测试的需求确定的;所述图像化标准是根据所述自动驾驶测试的需求确定的。
[0083]
所述根据物理值转换因子、物理值偏移因子以及所述十进制解析数据,计算得到所述测试参数的物理值的步骤包括:
[0084]
基于物理值公式计算所述测试参数的物理值v
physical

[0085]vphysical
=v
raw
×
factor offset
[0086]
式中,v
raw
为所述二进制解析数据;factor为物理值转换因子;offset为物理值偏移因子。
[0087]
所述提取所述测试can报文中对应于所述测试参数的测试数据集合的步骤包括:
[0088]
针对所述测试can报文中对应于所述测试参数的报文长度,记为参数报文,进行判断:
[0089]
若所述参数报文包括参数组标号,则获知所述参数报文为j1939can报文,确定所述测试参数的参数组标号,提取所述测试can报文中所述参数组标号所在的数据行,并输出所述数据行中的时间戳列和数据场列;
[0090]
若所述参数报文不包括参数组标号,则获知所述参数报文为非j1939can报文,确
定所述测试参数的报文标识符,提取所述测试can报文中所述报文标识符所在的数据行,并输出所述数据行中的时间戳列和数据场列。
[0091]
进一步地,j1939can报文和非j1939can报文都存在着长帧格式的报文,对于长帧格式的报文,需要进行拼接后,执行步骤104或者步骤106。因此,本实施例还包括长帧格式的判断步骤:
[0092]
若所述参数报文的长度大于8,则获知所述参数报文为长帧格式报文,以设定的方法拼接所述参数报文后,,执行步骤104或者步骤106;
[0093]
若所述参数报文的长度等于8,则获知所述参数报文为单帧格式报文,执行步骤104或者步骤106;
[0094]
若所述参数报文的长度小于8,则获知所述参数报文格式有误,将该参数报文排除并报错。
[0095]
本实施例在提供通用的can报文解析运算方法的基础上,进一步考虑到了自动驾驶车辆的can报文具有发送通道多,j1939can报文与普通can报文混合发送,单帧报文与多帧报文共存等特点,由于以上问题,针对自动驾驶车辆的整车can报文测试具有复杂性高,数量大,不同报文的判据不一致等难点,能够发现这些问题本身,就需要本领域技术人员付出创造性的劳动。
[0096]
本实施例就上述问题给出了区分j1939can报文与普通can报文,以便进行不同处理的解决方案,避免了人工检测中效率低,误判率高等缺点,使测试时分析效率更高。
[0097]
根据上述任一实施例,下面将结合自动驾驶卡车测试的实际应用给出另一实施例。
[0098]
首先对本实施例解决的技术问题予以说明如下。
[0099]
在车载嵌入式系统的测试工作中,can报文解析并分析信号值是测试工作的重要环节,测试工程师的在记录can报文信息时,需要观察一段时间内的can报文信号变化,并有着对其进行二次开发的需求,例如对信号的积分,微分等运算。
[0100]
装备自动驾驶域控制器的卡车与传统车辆相比,具有复杂程度高,设计can报文收发节点多,存在多种can格式(j1939与普通can)的特点,对于系统测试针对can报文的解析和信号值的二次开发中,往往会遇到对多can路信号作为输入进行计算或者逻辑判断的情况,市场上主流can报文解析工具对此需要通过c语言或类c语言进行二次开发,对操作者的编程要求高。
[0101]
自动驾驶卡车的can信号由于传递出自动驾驶系统中各个ecu的关键信息,测试人员在进行数据分析时,往往需要对信号进行图表绘制,以及对指定信号进行数值计算(如微分,积分等操作)并进行图表绘制的需求,上述操作无法通过人工计算得出。
[0102]
市场上主流can报文记录工具均支持将can报文信息存储为ascii格式文件,ascii文件的数据量大,对其进行数据处理时,c,c 等计算机语言存在效率低的问题
[0103]
在测试工程师完成信号数据解析后,需要编写相应测试报告,针对can报文信号解析和数据处理的报告需要转化为word格式或excel格式的文件,通过人工编写的方式会存在效率低,错误率高,对测试者的编程能力要求高等问题。
[0104]
为解决上述问题,现有技术采用的方案包括:
[0105]
1、通过市面上主流can检测工具记录整车can路上的所有报文,通过工具自带的图
表绘制工具包对can信号进行数据绘制。
[0106]
2、通过c或者类c语言对can信号进行数据处理,若需要对多个can信号进行逻辑判断,需要使用者进行额外操作。
[0107]
3、通过excel等软件完成图表绘制工作,人工完成报告的制作。
[0108]
不同于现有技术,本实施例采用的方案具有如下区别:
[0109]
1、can报文输入文件为ascii,目前主流can解析工具均支持该格式,突破工具限制,支持多种工具记录的can报文数据;
[0110]
2、用python语言中pandas库函数,可以有效处理庞大数据量的can信号(对比不使用pandas的python程序,处理速度提高10倍);
[0111]
3、可以支持自动化的报告生成,格式可选,为excel或者word,附带特定can报文信号在总记录时间内的信号值变化曲线;
[0112]
4、支持多路can报文检查,支持多种格式can报文(j1939,普通can),支持j1939长帧报文的解析;
[0113]
5、支持对特定can信号进行积分,微分,加减法,乘除法运算,并绘制图表;
[0114]
6、支持以多路can信号为输入的逻辑判断,如a信号为某特定值时,b、c、d信号应为某特定值的判断。
[0115]
也就是说,本实施例相比现有技术具有如下有益效果:
[0116]
1、针对现场诊断工程师的测试需求,实现了快速高效的can报文检测;
[0117]
2、针对多路can的自动监测,减少软件配置时间,方便在固定can路中的集中测试;
[0118]
3、针对规定时间内的can信号数值进行二次运算(积分、微分),提供接口方便使用者对数值进行自定义运算;
[0119]
4、支持周期型,事件型;普通can报文,j1939多帧报文的检测,并附带对应说明,方便使用者阅读。
[0120]
下面将对本实施例方案做简要说明。
[0121]
本实施例涉及can报文信号解析与图表绘制以及对于can信号的数值计算(如微分,积分等),是车辆控制器测试的重要内容之一。本实施例创新地使用python pandas库函数来处理记录can报文的ascii文件,极大地提高了数据读取效率,使测试者摆脱can工具硬件限制,可以自由绘制特定can信号数值变化曲线,并对其进行数值运算。在本发明中,针对信号的微分,积分的具体算法,均可由使用者自定义。弥补了在传统can解析工具需要使用者自行定义的数据后续处理的不足。并且在完成所有运算后,支持将图表输出至word或者excel中,或者按照使用者需求生成测试报告,帮助测试者快速定位can信号逻辑变化是否符合需求。
[0122]
本实施例可以解析普通can报文以及j1939can报文,并可以解析j1939长帧报文。
[0123]
具体地,本实施例提供了一种can报文解析工具,用于对存储了整车真实can通讯信号的ascii文件进行信号解析并且支持对信号的数据处理,以及对其进行数据可视化处理,避免人工计算中的效率低,对测试者的编程能力要求高等问题。本实施例支持普通can报文以及j1939报文的解析,并支持j1939长帧的解析。
[0124]
本实施例引入了python中数据处理库函数pandas对can报文数据进行数据处理,针对日常测试中can报文记录文件存储量大,数据结构不统一的问题,采用数据清洗,合并
等操作。在完成数据处理后,针对使用者输入的特定can报文信号,可以输出can信号是否出现在ascii数据中,在规定时间内的can信号变化曲线,使用者自定义函数的结果图像等结果,并将其输出至使用者指定的word或者excel文件中。本实施例目前已帮助系统测试工程师在日常整车测试工作中分析can信号变化是否符合功能文档定义,由本发明生成的图标报告以成为测试工程师测试报告的重要组成部分。
[0125]
下面将对自动驾驶卡车这一细分领域的相关背景进行简要说明。
[0126]
自动驾驶卡车的can报文具有发送通道多,j1939can报文与普通can报文混合发送,单帧报文与多帧报文共存等特点,由于以上问题,针对自动驾驶卡车的整车can报文信号解析具有测试节点多,can报文解析文件(dbc)多,can信号数量多,收发关系复杂等问题。
[0127]
自动驾驶卡车的自动驾驶域控制器具有软件开发迭代周期短,软件版本更新快的特点,并且相比传统控制器,自动驾驶域控制器需要与多个控制器形成系统,来对车辆进行控制,因此针对自动驾驶域控制器的can报文检测需要具有高效,快速,测试报告可读性高的要求,针对can报文信号的解析,需要具有清晰反应can信号变化的图表,方便测试人员快速观察can信号是否按照功能定义变化。
[0128]
目前主流can报文解析工具没有针对can报文信号进行二次运算的工具包,若对信号进行如积分,微分的处理,需要工程师使用c或者c 对信号进行处理,对于离线大数据量的数据,存在处理效率低的问题,并且对测试人员的编程能力要求较高。python的pandas库函数可以将数据量大的ascii文件转化为dataframe格式
[0129]
针对can信号数值的数据可视化工作是can信号解析的重要步骤,matplotlib是python中的绘图库函数,提供了强大的数据可视化功能,并且与dataframe格式的数据有良好的交互性,可以使图表绘制效率提高。
[0130]
下面将对本实施例的具体方案进行说明。
[0131]
本实施例的输入之一为can解析工具生成的ascii文件,该文件保存了测试工程师在测试时间段所观测的can报文信息,目前市场上主流can解析工具均支持以ascii文件记录can报文,ascii文件指代记录了can报文信息的ascii文件,未被解析的ascii文件,包含了一下关键信息:时间戳,报文标识符(msg_id),can报文解析工具中的指定通道,can报文数据场,can报文收发方向。其中,can报文数据场信息被分为byte1-8列,需要合并后才能表示该id下的的数据场数据。
[0132]
本实施例使用了在生成can报文解析文件dbc时作为指导文件的can matrix文件作为程序的一个输入,该文件中,定义了can报文的以下信息:报文名称(msg_name),报文类型(msg_type),报文标识符(msg_id),参数组标号(pgn),报文发送类型(msg_send_type),报文发送周期(msg_cycle_time)等信息,这些信息会作为解析依据,对包含can报文原始信息的ascii文件进行数据解析。
[0133]
本实施例解析can信号值流程可由图2表示,对于can信号的解析可以大致分为以下几个步骤:1.can matrix文件数据处理,并按照使用者指定的can信号找到该信号对应的id,报文名称等报文信息,以及为了解析信号需要的:数据起始位,信号长度,信号比例,偏移量,精度,最大/最小物理值等信息2.按照使用者给定的信号,通过can matrix找到对应的can报文id(j1939长帧为pgn),筛选ascii文件中包含该id或pgn的行,进行数据解析,输出时间戳与物理值。3.对时间戳与物理值进行数据处理,合并后的数据输出给报告。
[0134]
本实施例在重构ascii文件和can matrix文件后,将结果进行输出,其中can matrix文件处理后输出的dataframe格式数据包含:报文名称(msg_name),报文类型(msg_type),报文标识符(msg_id),参数组标号(pgn),报文发送类型(msg_send_type),报文发送周期(msg_cycle_time),以及该id下的所有信号的数据起始位,信号长度,信号比例,偏移量,精度,最大/最小物理值。而经过数据处理的ascii文件包含一下信息:时间戳(time),通道号(channel),报文标识符(msg_id),收发方向(orient),数据段字节1-8(byte1-8)。
[0135]
本实施例解析can信号的原理如下:在数据场中的数据为16进制(hex),can matrix中,针对信号解析的信号数据段起始位和数据长度是以二进制进行的。综上所述,在ascii文件中的数据场中获得can报文信号原始数据原理如图3所示。
[0136]
本实施例通过can id或者pgn获取ascii文件指定数据行是通过python中pandas库函数的contains函数实现,该函数可以快速选取包含特定值字符的数据行,在完成数据筛选后,将所有数据按照时间戳排序,按照上文的can信号解析方式解析后,得到can信号的物理值,将时间戳列与物理值列合并后输出,为之后的数据可视化以及信号值二次处理准备。
[0137]
本实施例对can信号的处理原理如下:在得到时间戳和物理值后,程序使用者可按照需求指定算法,常规使用的数值运算,如微分,积分等函数,已包含在程序内,可直接调用,若使用者对数据有自定义算法需要执行,可直接将时间戳以及数据列导出,进行二次处理。
[0138]
在所有数据处理完成后,程序会将图像输出至word文档中生成can信号解析报告,按照实车现场测试工程师的需求,程序针对可读性做出优化。
[0139]
下面对本发明提供的基于can报文解析运算的自动驾驶测试装置进行描述,下文描述的基于can报文解析运算的自动驾驶测试装置与上文描述的基于can报文解析运算的自动驾驶测试方法可相互对应参照。
[0140]
本发明实施例还提供一种基于can报文解析运算的自动驾驶测试系统,包括:
[0141]
获取模块1,用于根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;
[0142]
提取模块2,用于提取所述测试can报文中对应于所述测试参数的测试数据集合;所述测试数据包括一一对应的时间戳和数据场;
[0143]
输出模块3,用于根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
[0144]
进一步地,所述获取模块1包括:
[0145]
测试参数集合单元,用于基于pandas函数库解析并重构测试需求数据can matrix,得到测试参数集合;所述测试参数集合包括测试参数的id、测试参数的起始位、测试参数的数据长度、物理值转换因子以及物理值偏移因子;
[0146]
测试can报文单元,用于基于pandas函数库解析并重构原始can报文,得到测试can报文;所述原始can报文是通过自动驾驶测试车辆获取的、ascii格式的报文。
[0147]
所述输出模块3包括:
[0148]
二进制单元,用于将所述测试数据集合中的、十六进制ascii格式的数据场转换为二进制数据场;
[0149]
截取单元,用于根据所述测试参数的起始位和测试参数的数据长度,截取所述二进制数据场,得到二进制解析数据并转换为十进制解析数据;
[0150]
物理值单元,用于根据物理值转换因子、物理值偏移因子以及所述十进制解析数据,计算得到所述测试参数的物理值。
[0151]
分析值单元,用于以所述时间戳和物理值为输入,基于分析公式计算得到分析值;
[0152]
可视化单元,用于基于图像化标准可视化所述分析值,并将所述分析值和所述分析值的可视化结果作为数据处理结果输出;
[0153]
所述分析公式是根据所述自动驾驶测试的需求确定的;所述图像化标准是根据所述自动驾驶测试的需求确定的。
[0154]
所述物理值单元具体用于:
[0155]
基于物理值公式计算所述测试参数的物理值v
physical

[0156]vphysical
=v
raw
×
factor offset
[0157]
式中,v
raw
为所述二进制解析数据;factor为物理值转换因子;offset为物理值偏移因子。
[0158]
所述提取模块2包括:
[0159]
判断单元,用于针对所述测试can报文中对应于所述测试参数的报文长度,记为参数报文,进行判断:
[0160]
若所述参数报文包括参数组标号,则获知所述参数报文为j1939can报文,确定所述测试参数的参数组标号,提取所述测试can报文中所述参数组标号所在的数据行,并输出所述数据行中的时间戳列和数据场列;
[0161]
若所述参数报文不包括参数组标号,则获知所述参数报文为非j1939can报文,确定所述测试参数的报文标识符,提取所述测试can报文中所述报文标识符所在的数据行,并输出所述数据行中的时间戳列和数据场列。
[0162]
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行基于can报文解析运算的自动驾驶测试方法,该方法包括:根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;提取所述测试can报文中对应于所述测试参数的测试数据集合;所述测试数据包括一一对应的时间戳和数据场;根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
[0163]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0164]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于can报文解析运算的自动驾驶测试方法,该方法包括:根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;提取所述测试can报文中对应于所述测试参数的测试数据集合;所述测试数据包括一一对应的时间戳和数据场;根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
[0165]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于can报文解析运算的自动驾驶测试方法,该方法包括:根据自动驾驶测试的需求确定测试参数,并通过所述自动驾驶测试的车辆获取测试can报文;提取所述测试can报文中对应于所述测试参数的测试数据集合;所述测试数据包括一一对应的时间戳和数据场;根据所述时间戳排序所述数据场,并依次解析、二次运算所述数据场,得到所述测试参数的物理值、数据处理结果。
[0166]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0167]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0168]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献