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

一种Plog文件读取方法和系统与流程

2022-02-19 05:30:53 来源:中国专利 TAG:

一种plog文件读取方法和系统
技术领域
1.本发明涉及车辆pnc离线数据处理技术领域,尤其涉及一种plog文件读取方法和系统。


背景技术:

2.自动驾驶车辆上设置有多种监测设备,例如:毫米波雷达、激光雷达、超声波雷达和摄像头等,可以实时的获取监测信息,感知模块根据多种监测设备获取的监测信息进行融合处理,得到自动驾驶车辆周围的环境信息,pnc(plan and control,规划与控制)模块根据感知模块输出的车辆周围的环境信息生成pnc信息。车辆在线时,车上pnc会自动收录自己的状态并写入plog文件(pnc内部状态序列化后的文件格式),在离线的情况下,管理用户通常会需要读取较长时间的plog文件来做数据处理,由于plog文件相当大,读取plog文件需要占用比较大的内存空间,容易造成响应过慢,影响系统运行的稳定性。因此,如何以尽量少的内存来读取plog文件,是本领域技术人员亟待解决的技术问题。


技术实现要素:

3.本发明实施例提供了一种plog文件读取方法和系统,以尽量少的内存来读取plog文件,使得现有的离线读取plog文件需要占用比较大的内存空间的技术问题得以解决。
4.有鉴于此,本发明第一方面提供了一种plog文件读取方法,所述方法包括:
5.获取用户输入的目标车辆id和目标读取帧对应的帧时间;
6.根据目标车辆id和目标读取帧对应的帧时间,在存储plog文件的树状结构中查找对应的元信息,确定目标车辆id的目标读取帧所在的目标plog文件,其中,元信息包括车辆id和plog文件的起始时间;
7.检测目标plog文件是否已被加载,若否,则根据内存中加载的文件数量是否超过上限加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
8.可选地,根据内存中加载的文件数量是否超过上限加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户,包括:
9.当内存中加载的文件数量未超过上限时,直接加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户;
10.当内存中加载的文件数量超过上限时,扫描所有加载的文件,从内存中删除不被使用的文件,再加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
11.可选地,获取用户输入的目标车辆id和目标读取帧对应的帧时间之前,还包括:
12.获取待读取的plog列表,plog列表中的plog文件名称包含车辆id和plog文件的起始时间;
13.扫描plog列表,从plog列表的plog文件名称中获取元信息;
14.将元信息有序地存储在两层树状结构中,树状结构的第一层存储车辆id,第二层存储plog文件的起始时间。
15.可选地,采用lru算法从内存中删除不被使用的文件。
16.可选地,在检测目标plog文件是否已被加载之前,还包括:
17.对plog列表中的plog文件中的每一帧启用读写锁。
18.可选地,还包括:
19.在离线状态下,对目标车辆id的pnc内部状态进行仿真,得到仿真对应的plog文件;
20.将目标车辆id仿真对应的plog文件与目标车辆id的在线pnc写入的plog文件进行比较,输出比较结果。
21.本发明第二方面提供一种plog文件读取系统,所述系统包括:
22.目标信息获取模块,用于获取用户输入的目标车辆id和目标读取帧对应的帧时间;
23.目标plog文件查找模块,用于根据目标车辆id和目标读取帧对应的帧时间,在存储plog文件的树状结构中查找对应的元信息,确定目标车辆id的目标读取帧所在的目标plog文件,其中,元信息包括车辆id和plog文件的起始时间;
24.加载检测模块,用于检测目标plog文件是否已被加载,若否,则根据内存中加载的文件数量是否超过上限加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
25.可选地,加载检测模块具体用于:
26.当内存中加载的文件数量未超过上限时,直接加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户;
27.当内存中加载的文件数量超过上限时,扫描所有加载的文件,从内存中删除不被使用的文件,再加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
28.可选地,还包括:
29.plog列表获取模块,用于获取待读取的plog列表,plog列表中的plog文件名称包含车辆id和plog文件的起始时间;
30.扫描模块,用于扫描plog列表,从plog列表的plog文件名称中获取元信息;
31.元信息存储模块,用于将元信息有序地存储在两层树状结构中,树状结构的第一层存储车辆id,第二层存储plog文件的起始时间。
32.可选地,还包括读写锁模块;
33.读写锁模块,用于在检测目标plog文件是否已被加载之前,对plog列表中的plog文件中的每一帧启用读写锁。
34.从以上技术方案可以看出,本发明实施例具有以下优点:
35.本发明实施例中提供的plog文件读取方法,车辆在线时,车上pnc会自动收录自己的状态并写入plog文件,将plog文件存储在数据库中,在用户需要获取感兴趣的时间点的plog文件时,系统自动根据用户提供的plog文件列表获取车辆id和起始时间元信息,利用树状结构存储元信息,在树状存储结构中根据车辆id和时序对不同plog文件进行拼接,然后根据用户输入的想要查找的车辆id和时间帧信息从树状结构中查找到该帧存储的plog文件,检测内存中加载的文件数量是否超过上限,根据内存中加载的文件数量是否超过上限选择加载plog文件的方式来加载plog文件,从该plog文件中找到该帧返回给用户,从而
实现以尽量少的内存来读取plog文件,使得现有的离线读取plog文件需要占用比较大的内存空间的技术问题得以解决。
附图说明
36.图1为本发明实施例中提供的一种plog文件读取方法的一个流程示意图;
37.图2为本发明实施例中提供的一种plog文件读取方法的另一流程示意图;
38.图3为本发明实施例中提供的plog文件存储结构示意图;
39.图4为本发明实施例中提供的一种plog文件读取系统的结构示意图。
具体实施方式
40.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.为了便于理解,请参阅图1,图1为本发明实施例中提供的plog文件读取方法流程示意图。本发明实施例中提供的plog文件读取方法包括:
42.步骤101、获取用户输入的目标车辆id和目标读取帧对应的帧时间。
43.每个plog文件记录了数帧(可预设置)的pnc内部状态数据,当用户需要查找某车辆某一帧对应的plog文件数据时,用户可直接输入车辆id和想要查找的帧,为系统提供目标车辆id和目标读取帧对应的帧时间。
44.步骤102、根据目标车辆id和目标读取帧对应的帧时间,在存储plog文件的树状结构中查找对应的元信息,确定目标车辆id的目标读取帧所在的目标plog文件,其中,元信息包括车辆id和plog文件的起始时间。
45.根据用户提供的帧时间和车辆id,系统在树状结构中查找对应的元信息,即在树状结构中索引查找目标车辆id和目标车辆id下该帧时间对应的目标plog文件,例如,如图3所示,用户想要查找的车辆id是mkz_0001,帧时间是100002.1秒,那么,所确定的目标plog文件是图3中的id:mkz_0001、时间:100002对应的plog文件。
46.在一个实施例中,对plog列表中的plog文件中的每一帧启用读写锁,那么,用户在写的时候会在内存中另外拷贝数据,并在拷贝的数据上进行修改,用户修改完成后,同时又没有读锁时需要将写锁锁上,会直接与原数据进行替换,替换完成后解锁写锁。
47.步骤103、检测目标plog文件是否已被加载,若否,则根据内存中加载的文件数量是否超过上限加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
48.为很好地控制plog文件读取所占用的内存,本发明中采用惰性载入的方式加载目标plog文件。在确定目标plog文件之后,检查目标plog文件是否已被加载,若目标plog文件已经被加载,则直接从目标plog文件中查找目标读取帧返回给用户即可,若目标plog文件未被加载,则需要根据内存中加载的文件数量情况来选择加载目标plog文件的方式,在加载目标plog文件后,再从目标plog文件中查找目标读取帧返回给用户。内存中加载的文件数量的上限可以根据实际需求设定。
49.在一个实施例中,若目标plog文件未被加载,则需要判断内存中加载的文件数量
是否超过上限再执行步骤104a或步骤104b。
50.步骤104a、当内存中加载的文件数量未超过上限时,直接加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
51.步骤104b、当内存中加载的文件数量超过上限时,扫描所有加载的文件,从内存中删除不被使用的文件,再加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
52.当加载某个文件时,需要进行检查,判断内存中加载的plog帧的数量是否高于预设上限,如果不高于预设上限,说明内存足够用于读取plog文件,可直接从目标plog文件中查找目标读取帧返回给用户。如果高于预设上限,说明内存较紧促,则从内存中删除不被使用的文件,具体的删除方式可以采用lru算法进行删除。需要说明是的,在某一个文件被读取的时候,它将被标记为使用状态,无法从内存中删除,相反,如果某一个文件未被标记为使用状态,那么该文件是可以被从内存中删除的。
53.在步骤101之前,可以基于用户感兴趣的点,对plog文件进行预处理,将用户感兴趣点对应的plog文件从数据库中提取出来,并将提取出的plog文件按元信息存储在树状结构中,便于根据元信息查找到对应的plog文件,如图2所示,具体地,可以包括以下步骤:
54.步骤001、获取待读取的plog列表,plog列表中的plog文件名称包含元信息:车辆id和plog文件的起始时间。
55.车辆在线时,车上pnc会自动收录自己的状态并写入plog文件,将每个时间点附近收集的plog文件储在数据库中。用户根据自己感兴趣的点提供一个将要被读取的plog列表,plog列表中的plog文件名中包含了用于需要用于索引的关键信息,比如车辆id、plog文件的起始时间、plog文件中包含的帧数、地区和地图版本,并以一定的方式编码在了文件名中。用户在使用时,从文件名中解码关键信息即可。
56.步骤002、扫描plog列表,从plog列表的plog文件名称中获取元信息。
57.对plog列表进行扫描,从plog列表中的plog文件名称中提取出元信息,包括车辆id和plog文件的起始时间。
58.步骤003、将元信息有序地存储在两层树状结构中,树状结构的第一层存储车辆id,第二层存储plog文件的起始时间。
59.将提取出的所有的元信息存储在树状结构中,可以是lsm树,也可以是其它树,优选lsm树。树状结构满足具有两层结构,第一层存储车辆信息,第二层存储plog文件的起始时间,将元信息有序地存储在两层树状结构中,如图3所示,图3中的id:mkz_0001表示车辆id为mkz_0001,时间:100003和时间:100002为plog文件的起始时间。需要说明的是,图3中的100003和100002的时间间隔是1秒,实际使用时,每个plog文件所包含的帧数可以不止1秒,可以是10秒或其他数值,本发明中不对此进行限定,本领域技术人员可根据实际需求进行设定。在实际应用中,优选时间间隔为10秒

60秒之间,即每个plog文件所包含的时间帧数据在10秒

60秒之间,避免数据太少造成plog文件过多和数据太多造成plog文件数据存储压力过大。在将元信息有序地存储在两层树状结构中时,可以使用快速排序方法进行排序,先根据车辆id进行排序,再根据plog文件的起始时间进行排序。因而,便实现了相邻plog文件的拼接。
60.还需要说明的是,根据本发明中提供的plog文件读取方法中的树状结构元信息存
储方式,当用户请求当前帧的下一帧时可以快速查找到对应的帧,并自动根据元信息从不同的plog文件中读取请求的数据并返回给用户,对用户来说相当于所有的连续时间的plog都储存在一个文件中。
61.本发明实施例提供的plog文件读取方法,可用于本地读取平台、aws云计算平台和spark云计算平台,具有统一性。同时,可以通过多线程进行读写操作。
62.本发明实施例提供的plog文件读取方法,车辆在线时,车上pnc会自动收录自己的状态并写入plog文件,将plog文件存储在数据库中,在用户需要获取感兴趣的时间点的plog文件时,系统自动根据用户提供的plog文件列表获取车辆id和起始时间元信息,利用树状结构存储元信息,在树状存储结构中根据车辆id和时序对不同plog文件进行拼接,然后根据用户输入的想要查找的车辆id和时间帧信息从树状结构中查找到该帧存储的plog文件,检测内存中加载的文件数量是否超过上限,根据内存中加载的文件数量是否超过上限选择加载plog文件的方式来加载plog文件,从该plog文件中找到该帧返回给用户,从而实现以尽量少的内存来读取plog文件,使得现有的离线读取plog文件需要占用比较大的内存空间的技术问题得以解决。
63.在一个实施例中,还可以在离线状态下,对目标车辆id的pnc内部状态进行仿真,得到仿真对应的plog文件,将目标车辆id仿真对应的plog文件与目标车辆id的在线pnc写入的plog文件进行比较,输出比较结果,若比较结果为基本一致(在预设偏差范围内),则表明则说明产生plog的pnc算法比较稳定,如有较大的偏差,则说明产生plog的pnc算法不稳定,从而为pnc的算法改进提供指导。
64.为了便于理解,请参阅图4,图4为本发明实施例中提供的plog文件读取系统结构示意图。本发明实施例中提供的plog文件读取系统包括:
65.目标信息获取模块304,用于获取用户输入的目标车辆id和目标读取帧对应的帧时间。
66.目标plog文件查找模块305,用于根据目标车辆id和目标读取帧对应的帧时间,在存储plog文件的树状结构中查找对应的元信息,确定目标车辆id的目标读取帧所在的目标plog文件,其中,元信息包括车辆id和plog文件的起始时间。
67.加载检测模块306,用于检测目标plog文件是否已被加载,若否,则根据内存中加载的文件数量是否超过上限加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
68.加载检测模块306具体用于:
69.当内存中加载的文件数量未超过上限时,直接加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户;
70.当内存中加载的文件数量超过上限时,扫描所有加载的文件,从内存中删除不被使用的文件,再加载目标plog文件,从目标plog文件中查找目标读取帧返回给用户。
71.具体地,还包括:
72.plog列表获取模块301,用于获取待读取的plog列表,plog列表中的plog文件名称包含车辆id和plog文件的起始时间;
73.扫描模块302,用于扫描plog列表,从plog列表的plog文件名称中获取元信息;
74.元信息存储模块303,用于将元信息有序地存储在两层树状结构中,树状结构的第
一层存储车辆id,第二层存储plog文件的起始时间。
75.具体地,采用lru算法从内存中删除不被使用的文件。
76.具体地,还包括读写锁模块307;
77.读写锁模块307,用于在检测目标plog文件是否已被加载之前,对plog列表中的plog文件中的每一帧启用读写锁。
78.具体地,还包括仿真验证模块308,用于:
79.在离线状态下,对目标车辆id的pnc内部状态进行仿真,得到仿真对应的plog文件,将目标车辆id仿真对应的plog文件与目标车辆id的在线pnc写入的plog文件进行比较,输出比较结果。
80.本发明实施例提供的plog文件读取系统,车辆在线时,车辆在线时,车上pnc会自动收录自己的状态并写入plog文件,将plog文件存储在数据库中,在用户需要获取感兴趣的时间点的plog文件时,系统自动根据用户提供的plog文件列表获取车辆id和起始时间元信息,利用树状结构存储元信息,在树状存储结构中根据车辆id和时序对不同plog文件进行拼接,然后根据用户输入的想要查找的车辆id和时间帧信息从树状结构中查找到该帧存储的plog文件,检测内存中加载的文件数量是否超过上限,根据内存中加载的文件数量是否超过上限选择加载plog文件的方式来加载plog文件,从该plog文件中找到该帧返回给用户,从而实现以尽量少的内存来读取plog文件,使得现有的离线读取plog文件需要占用比较大的内存空间的技术问题得以解决。
81.本发明实施例提供的plog文件读取系统用于执行前述的发plog文件读取方法实施例中的plog文件读取方法,可取得与前述的发plog文件读取方法实施例相同的技术效果,其原理与前述的发plog文件读取方法实施例相同,在此不再进行赘述。
82.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
83.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献