一种传感器数据组织管理方法和系统

allin2022-11-07  210



1.本发明涉及传感器技术领域,具体涉及一种传感器数据组织管理方法和系统。


背景技术:

2.近年来,随着人工智能技术的快速发展,物联网、智能制造、无人驾驶等概念开始进入人们的视野。整体而言,无论是物联网,还是无人驾驶,其技术的实现都需要大量的硬件和技术支持,而其中最重要的就是传感器。在无人驾驶技术中,车载电脑通过各种传感器对温度、压力、位置、转速、加速度和振动等各种信息进行实时、准确的测量和控制,而衡量控制系统水平的关键就在于传感器的数量和水平。当前,一辆普通家用轿车上大约安装了200个传感器,而无人驾驶汽车上的传感器数量多达400多个。随着科技的发展,无人驾驶需要的传感器数量会越来越多,水平要求越来越高。
3.作为信息采集的入口,传感器及其技术是物联网、智能工业、智能设备、无人驾驶等的“眼睛”、“耳朵”和“皮肤”,它负责将“看到”、“听到”、“感觉到”的数据和信息传送给“大脑”进行决策和系统控制,因此,传感器数据的组织和管理将对整个系统应用产生重要影响,尤其是在“人不在回路”这种无人系统应用领域。
4.传统的传感器数据管理大多基于数据库,还有一部分基于文件系统。对于基于数据库的传感器数据组织与管理方式,应用会针对每一个传感器通过建表将数据进行格式化存储,便于查找和定位。这种方式需要数据库相关软件的支持,且存在进行多表联合搜索和数据融合时效率会下降,数据在不同数据库之间流转时还涉及到格式转换、导入导出等操作,且一般的数据库只支持一种数据类型,如结构化数据,key/value数据等,对于混合结构数据的支持不足。基于文件系统的数据组织管理方式,不需要额外的数据库支持,但缺乏索引支持,无法进行多文件的联合检索等。对于小型无人机、无人车这类携带多种传感器的无人平台,由于本身的功率、空间限定,无法携带常规的工控机、服务器和pc等,一般携带小型的开发板。而这类开发板的处理能力远弱于pc等,在其上面安装运行大型数据库或多种数据库等软件不太现实。


技术实现要素:

5.为了克服上述缺陷,本发明提出了一种传感器数据组织管理方法,包括:
6.当无人设备中搭载的传感器采集到数据需要写入无人设备时:将获取的传感器数据写入传感器数据文件;
7.当无人设备需要访问所搭载的传感器数据时:基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序。
8.优选的:所述将获取的传感器数据写入传感器数据文件,包括:
9.步骤sw1:基于数据接口访问所述传感器对应的数据文件;
10.步骤sw2:基于原始的传感器数据、各种属性数据以及索引信息,调用数据写入接
口;
11.步骤sw3:查找所述数据文件头部中各类型数据所对应的地址空间原数组所在位置和各数据类型已写入的数据长度,计算本次写入各种类型数据所需要分配的数据块,以及管理这些数据块所需要分配的地址空间数据块,然后将这些数据块和地址空间数据块分别分配给对应的地址空间元数据区进行管理;
12.步骤sw4:依次从所述数据类型中确定一种数据类型执行写入操作,直到所有类型数据都完成了写入操作;
13.步骤sw5:持续执行上述步骤sw2-步骤sw4的过程,直到传感器关闭或者不再需要写入数据。
14.优选的,所述基于数据接口访问所述传感器对应的数据文件,包括:
15.判断所述传感器对应的数据文件是否存在;
16.当存在时,访问所述传感器对应的数据文件,将所述属性信息会写入到所述数据文件头部;
17.当不存在时,创建所述传感器对应的数据文件,设定所述文件对应的逻辑块大小,并将所述传感器属性信息写入创建的数据文件头部。
18.优选的,所述写入操作包括:
19.查找文件头部中该类型数据所对应的地址空间原数组所在位置和该数据类型已写入的数据长度,而后,根据4级寻址方案,解析待写入的数据在该类型数据所在地址空间中的位置;
20.根据所述数据类型的待写入数据的长度和为本次写入该数据分配的数据块的分布情况,将该类型的数据写入传感器数据文件中;
21.更新数据文件头部中所述类型数据的长度信息,完成本类型数据的本次写入操作。
22.优选的,所述4级寻址方案包括:
23.第一级采用直接寻址方式,第二级、第三级和第四级均采用间接寻址方式。
24.优选的,所述第一级的编码中每个编码均对应一个具体的数据块;
25.第二级、第三级和第四级的编码均用于指向一个数据块地址;
26.所述第二级编码所指向的数据块用于存放多个第一级编码;
27.第三级编码所指向的数据块用于内存多个第二级编码;
28.第四级编码所指向的数据块用于存放多个第三级编码。
29.优选的,所述索引信息包括时间索引信息、空间索引;
30.所述数据类型至少包括下述中的一种或多种:原始数据和属性。
31.优选的,所述根据所述检索条对传感器对应的数据文件进行读取,包括:
32.基于外层数据接口打开所述传感器对应的数据文件;
33.基于数据接口,对所述传感器数据文件进行访问,得到列表信息;
34.基于所述列表信息读取所述传感器数据文件。
35.优选的,所述基于外层数据接口打开所述传感器对应的数据文件还包括:
36.当所述传感器对应的数据文件不存在时终止读取传感器数据文件。
37.优选的,所述对所述传感器数据文件进行访问,得到列表信息,包括:
38.判断是否提交检索条件:
39.当提交检索条件时,根据所述检索条件从所述传感器数据文件中按类型进行检索,得到第一列表信息;
40.当未提交检索信息时:根据读取范围和原始数据的地址空间对整个传感器数据文件进行计算确定第二列表信息;
41.所述第一列表信息包括:地址,长度;所述第二列表信息包括:偏移量,长度;
42.所述检索条件包括属性信息和索引信息。
43.优选的,所述根据所述检索条件从所述传感器数据文件中按类型进行检索,得到第一列表信息,包括:
44.根据各类型的检索条件信息,从数据文件头部的类型信息查找对应的地址空间元数据,然后在各地址空间分别检索,得到符合检索条件的原始数据所在的位置列表;
45.根据检索条件之间的关系,对各类型数据返回的列表进行逻辑计算,得到符合所有检索条件的原始数据在整个传感器数据文件中的地址和长度作为第一列表信息。
46.优选的,所述根据读取范围和原始数据的地址空间对整个传感器数据文件进行计算确定第二列表信息,包括:
47.根据读取范围和原始数据的地址空间进行地址转换,计算所需要的数据在整个传感器数据中的偏移量和长度作为第二列表信息。
48.优选的,所述传感器对应的数据文件基于所述传感器各原始数据、原始数据对应的属性并结合头文件进行构建。
49.优选的,所述数据文件包括:头文件、多个原始数据及各原始数据对应的地址空间数据、属性地址空间数据和属性数据;
50.所述头文件包括:逻辑块的大小、传感器属性数量、各原始数据对应的原始数据地址空间数据、原始数据长度、属性名称和属性地址空间元数据;
51.其中,所述逻辑块大小为动态设置或固定设置。
52.基于同一种发明构思,本发明还提供一种传感器数据组织管理系统,包括:数据管理层、传感器设备层、用户应用层和文件系统层;所述传感器设备层包括多种传感器设备;所述文件系统层用于存放各种传感器对应的数据文件;所述应用程序层包括多种应用程序;
53.所述数据管理层包括:外层数据接口、读取模块和写入模块;
54.所述外层数接口用于通过用户应用层获取传感器设备层的传感器数据;
55.所述读取模块,当无人设备需要访问所搭载的传感器数据时调用,所述读取模块用于基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序;
56.所述写入模块,当无人设备中搭载的传感器采集到数据需要写入无人设备时调用,所述应用程序调用写入模块将获取的传感器数据写入传感器数据文件。
57.本发明的有益效果为:
58.本发明提供一种传感器数据组织管理方法和系统,基于传感器数据实现对基于小型开发板实现对各种传感器数据的组织和管理,不需要对文件系统进行任何修改,同时不依赖具体的文件系统,实现了无大型数据库的情况下,为传感器数据提供了一定的数据检
索能力,同时可以在不用遍历传感器数据的情况下,加快定位所需要的数据位置;
59.本发明提供的技术方案能够在单帧传感器数据较大的情况下,快速有效的对数据进行访问,且效果更加突出;
60.本发明提供的技术方案能够将元数据、索引信息以及原始数据这三种不同类型的数据高效地组织到同一个文件中;
61.本发明提供的技术方案有效管理文件内部的不同类型的数据的地址空间,而不发生混乱,有效解决基于文件系统的传感器数据存储与管理问题;
62.本发明提供的技术方案通过基于逻辑块进行数据组织与管理的方式,使得用户可以根据所处理的传感器的数据的大小对逻辑块进行灵活调整和配置,从而增加数据存储与读取效率;
63.本发明提供的一种无人设备,可以在携带的小型开发板上利用对传感器数据进行数据组织方式实现对传感器数据的组织与管理,支持数据的快速检索和定位,同时不需要额外的数据库支持,不过多增加系统的运行开销。
附图说明
64.图1是本发明提供的一种传感器数据组织管理方法示意图;
65.图2是本发明提供的传感器数据存储层次关系示意图;
66.图3是本发明提供的传感器数据读取层次关系示意图;
67.图4是本发明提供的传感器数据写入文件的操作流程示意图;
68.图5是本发明提供的从文件读取传感器数据的操作流程示意图;
69.图6是本发明提供的文件结构示意图;
70.图7是本发明提供的文件头结构示意图;
71.图8是采用一维对地址空间编码时所需要的编码总长度;
72.图9是采用采用等长分块的形式对地址空间编码时所需要的编码总长度;
73.图10是采用4级寻址方案管理时对地址空间编码时所需要的编码总长度;
74.图11是本发明提供的文件头对应的数据结构;
75.图12是发明提供的无属性的传感器数据文件初次写入19402字节内容后的传感器数据文件结构示意图;
76.图13是发明提供的无属性的传感器数据文件写入98000字节内容后的传感器数据文件结构示意图;
77.图14是发明提供的无属性的传感器数据文件在98000字节基础上分配1个一级间接寻址数据块后的文件结构示意图;
78.图15是本发明提供的无属性的传感器数据一次写入后地址空间从一级间接寻址转到二级间接寻址后的文件编号情况示意图;
79.图16是本发明提供的无属性的传感器数据文件结构及地址空间映射示意图;
80.图17是发明提供的带3个属性的传感器首次写入19402字节原始数据及各属性后的文件结构示意图。
具体实施方式
81.本发明设计和实现了一种传感器数据组织管理方法、系统及无人设备。主要解决无人系统在执行任务过程对采集到的传感器数据、及其索引数据进行统一存储与检索问题。本发明的技术要点包括:统一的数据抽象模型、多层次元数据组织模型和文件组织模型,使用该方案可以在不使用外部信息的情况下方便地进行传感器数据的存储、读取与检索等。
82.本发明中统一的数据组织模型,能够将元数据、索引信息以及原始数据这三种不同类型的数据高效地组织到同一个文件中。该发明提出了基于层次的索引的统一地址转换模型,可以有效管理文件内部的不同类型的数据的地址空间,而不发生混乱。本发明提出的基于逻辑块进行数据组织与管理的方式,使得用户可以根据所处理的传感器的数据的大小对逻辑块进行灵活调整和配置,从而增加数据存储与读取效率。该发明还提供了高效的数据访问接口,便于用户管理和组织传感器数据。本发明可以将传感器相关的原始数据、属性数据等统一地组织到一个文件中。本发明提出了一种4级寻址方案,该方案可以为每种数据提供独立的地址空间。本发明提出了针对上述数据组织方法的接口,提供了传感器相关数据读写、检索和管理的能力。
83.下面结合附图对本发明的具体实施方式作进一步的详细说明。为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
84.实施例1
85.本发明提供一种传感器数据组织管理方法,如图1所示,包括:
86.s1、当无人设备中搭载的传感器采集到数据需要写入无人设备时:将获取的传感器数据写入传感器数据文件。
87.如图2所示,本发明的传感器数据组织管理方法及系统在传感器数据存储过程中所处的层次关系。层次关系处在具体的文件系统之上,而在用户应用程序之下。
88.s2、当无人设备需要访问所搭载的传感器数据时:基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序;
89.如图3所示为本发明在传感器数据读取过程中所处的层次关系。层次关系处在具体的文件系统之上,而处于用户应用程序之下,本发明根据用户应用程序给定的检索条件,读取传感器数据文件,并根据条件进行检索,然后根据检索结果读取符合检索条件的数据,并返回给上层用户的应用程序。
90.如图4所示,所述步骤s1的数据写入,具体包括如下步骤:
91.步骤sw1:用户调用本发明提供的外层数据接口打开一个传感器数据文件,如果该文件不存在创建一个空的传感器数据文件;
92.步骤sw2:文件打开成功之后,用户可以根据需要设定(新增)对应该传感器的属性信息,如时间索引、空间索引等,这些属性信息会被写入到文件头部,对于空文件,用户可设定逻辑块大小;
93.步骤sw3:用户可以调用本发明提供的数据写入相关接口,该接口要求用户提供原始的传感器数据、各种属性数据以及索引信息,如时间索引信息、空间索引信息;
94.步骤sw4:根据用户提交的数据类型(原始数据、时间索引、空间索引、属性1等),查找文件头部中各类型数据所对应的地址空间原数组所在位置和各数据类型已写入的数据长度,计算本次写入各种类型数据所需要分配的数据块,以及管理这些数据块所需要分配的地址空间数据块,然后将这些数据块和地址空间数据块分别分配给对应的地址空间元数据区进行管理。
95.步骤sw5:针对每种数据类型(原始数据、时间索引、空间索引、属性1等),查找文件头部中该类型数据所对应的地址空间原数组所在位置和该数据类型已写入的数据长度,而后,根据三次寻址方案,解析待写入的数据在该类型数据所在地址空间中的位置;
96.步骤sw6:根据该类型的待写入数据的长度和为本次写入该数据分配的数据块的分布情况,按照不同的方式,将该类型的数据写入传感器数据文件中;
97.步骤sw7:更新文件头部中该类型数据的长度信息,完成本类型数据的本次写入操作;
98.步骤sw8:针对其他类型的数据,执行上述步骤sw5-sw 7的操作,直到用户本次提交的所有类型数据都完成了写入操作;
99.步骤sw9:用户持续获取传感器数据并进行存储,需执行上述步骤sw2-步骤sw8的过程,直到传感器关闭或者不再需要存储数据,此时,用户调用本发明提供的文件关闭操作,关闭文件,完成整个传感器数据写入流程。
100.如图5所示,所述步骤s2的数据读取操作,具体包括如下步骤:
101.步骤sr1:用户调用本发明提供的外层数据接口打开指定传感器数据文件,如果该文件不存在则返回提示码给用户;
102.步骤sr2:文件打开成功之后,用户调用读取数据接口并可以根据需要设定各类型数据的检索条件信息,如属性信息,如时间索引、空间索引等;
103.步骤sr3:如果用户没有提交检索条件,则转步骤sr5;否则,根据用户提交的各类型的检索条件信息,根据文件头部的类型信息查找对应的地址空间元数据,然后在各地址空间分别检索,得到符合检索条件的原始数据所在的位置(在整个传感器数据文件中所在的位置)列表;
104.步骤sr4:根据用户提供的检索条件之间的关系(交、并),对各类型数据返回的列表进行逻辑计算,得到最终的符合所有检索条件的原始数据在整个传感器数据文件中的《地址,长度》列表,返回给用户,整个查找过程结束,跳转步骤sr6;
105.步骤sr5:根据用户指定的读取范围和原始数据的地址空间进行地址转换,计算所需要的数据在整个传感器数据中的偏移量和长度,得到《偏移量,长度》组成的列表;
106.步骤sr6:如果《偏移量,长度》列表为空,则读取过程直接结束;否则,根据得到的《偏移量,长度》列表,逐项读取传感器数据文件,并将结果返回给用户,读取过程完毕。
107.数据读写过程中涉及到的逻辑块或数据块(logical block,简称lb)是本发明对数据进行组织的最小单元均为逻辑块,用户可以灵活设定每种传感器数据文件的逻辑块大小,相比于传统文件系统,本发明提供了更加灵活的数组组织单元,值得注意的是,对于每一种传感器数据文件,其逻辑块大小一旦设定就不得更改。
108.优选的:所述逻辑块是针对传感器数据的大小,在传感器数据文件内部进行数据组织和分配的最小单元,其大小(lb_size)一般是文件系统块(block)的2n倍。
109.本发明基于传感器数据组织模型实现传感器数据组织管理方法,如图6所示,本发明的传感器数据组织模型组织传感器数据文件具体为:将传感器原始数据、传感器原始数据对应的属性信息等组织到同一个传感器数据文件中;
110.所述传感器数据组织模型,将数据分成3类:
111.第一类,原始相关数据:包括原始数据、原始数据对应的属性信息、索引信息等;
112.第二类,地址空间数据:管理上述数据的数据,地址空间数据分成了4个层次(见后面描述);
113.第三类,文件头:文件头的结构如图7所示,包含了3个主要字段。
114.(1)属性数量表示了该传感器对应的属性的数量;
115.(2)原始数据地址空间元数据区和原始数据长度用于管理传感器原始数据地址空间所占据的数据块和表示当前已经存储的传感器原始数据的长度;
116.(3)属性名称、属性地址空间元数据区、属性数据长度分别表示传感器数据对应的某种属性的名称、管理该属性的数据所占据的地址空间的元数据以及该属性的数据已经写入到文件的长度。
117.现有技术中往往采用常规的统一线性编码,但是,对于使用同一文件中包含多种数据的应用而言,需要一种机制能够正确分离各类数据,也就是需要给每一类数据提供独立的地址空间,如果采用现有技术中同一线性编码,会造成地址空间混乱,无法解决“谁是谁”的问题,因此,本发明引入了独立寻址方案,为每种数据类型分别构建线性地址,但整个文件又有唯一的线性地址,由文件系统进行管理。也就是解决了在同一个线性地址空间下(同一个传感器数据文件中)的多种数据类型的独立地址空间解算问题。也就是说,就是传感器数据文件的地址空间由文件系统进行管理,传感器数据文件中的文件头中的“xx地址空间元数据区”管理xx这种类型的数据的地址空间数据,而xx的地址空间数据本身管理的是xx类型的数据。这里的属性数据包括与一帧传感器数据对应的产生时间、传感器位姿、数据大小等数据。
118.本发明采用层次寻址模型,来减少地址空间所占据的文件空间和加快地址空间解算的实际需求寻址方案中的各级对象依次管理不同范围的地址空间,且随着级别的增加,管理的地址空间范围呈现指数扩张,而高级别对象又是通过嵌套低级别对象来实现地址空间管理的;进行寻址时,先根据各级对象管理的地址范围确定需要用到的寻址级别,然后在该级别地址空间内通过不断迭代更低级别的寻址方案即可得到所查询的地址所在的数据块,之后再计算块内偏移量即可得到最终的地址信息,供写入、检索、读取等操作使用。
119.一般来说,对一个线性地址空间内的每一个地址进行编码有很多种方案或者策略,这些编码需要存到文件的元数据区的有限区域内,且这个区域一般都不大,如数百个字节或者更少。
120.最简单的一种方式是将地址空间视作一维数组,采用一维进行编码,则数组下标就能唯一标识某一个地址。但是这种方法效率低且编码长度较长,随着地址空间的增长,编码长度也会随之增加,一般无法在元数据区进行存储。这种编码方式在对地址空间编码时所需要的编码总长度如图8所示。
121.也可以采用等长分块的形式,如每一万个地址分成一个块,这种方式可以大量减少编码长度,也能加快查询的速度。如对于第108234这个地址,我们可以很快确定在第109个块里,找到第109个块之后,块内的第8234个位置就是所需要找的。这种方式是一种简单的2级寻址方案,第一级确定地址所归属的块,第二级是块内位置,但这种编码方式在元数据区占据的空间仍然是不确定的(与一维线性编码没有本质区别),且块大小的划分也不灵活,不同类型的传感器的数据大小差异可能会很大。这种编码方式在对地址空间编码时所需要的编码总长度如图9所示。
122.在一个数据文件中,为每种类型的数据提供了相互隔离的独立地址空间,每种类型的数据的地址空间都可以由4级寻址方案管理;本发明具体采用4级寻址模型。第一级采用直接寻址方式,第二级、第三级和第四级均采用间接寻址方式。第一级的编码中每个编码均对应一个具体的数据块;第二级、第三级和第四级的编码均用于指向一个数据块地址;第二级编码所指向的数据块地址用于存放多个第一级编码;以此类推,第三级编码所指向的数据块地址用于内存多个第二级编码;第四级编码所指向的数据块地址用于存放多个第三级编码。显然,这种嵌套的方式表示的空间范围更广,因为每增加一级,其可表示的空间范围按照指数范围增加,因此可以使用少量的信息放到元数据区即可表示大范围的地址空间。这种编码方式在对地址空间编码时所需要的编码总长度如图10所示。
123.本发明采用的4级寻址模型具体结构如图11所示,可以具体表示为:
124.(1)最低层次记录了上述数据所在的数据块的块号(lb_id),每个数据块号用4字节表示,一个数据块可以记录lb_size/4个存储上述数据的数据块地址;
125.(2)次低层次记录上上述最低层次地址空间数据所在的数据块号,一个次低层次的地址空间数据块同样可以记录lb_size/4个最低层次地址空间数据块;
126.(3)最高层次的地址空间数据块记录了lb_size/4个次高层次的地址空间数据块;
127.(4)在lb_size=8k和只有1个最高层次数据块的情况下,这种4级地址空间可以管理(8096/4)3个逻辑块,也就是64tb的单个传感器数据。
128.可以看出,解算最低层次地址空间数据的方案为“直接寻址”方案,次低级的称之为“一级间接寻址”,次高级的称之为“二级间接寻址”,最高级的称之为“三级间接寻址”。显然,使用的寻址级别越高,解算地址空间的开销就越大,而使用的寻址级别越低,解算地址空间的开销越小。
129.使用整形数据结构来管理各类数据的地址空间。文件头中的“地址空间元数据区”,表示为intiblock[15]。其中:iblock[0]—iblock[11]用于管理直接寻址,iblock[12]用于管理一级间接寻址,iblock[13]用于管理二级间接寻址,iblock[14]用于管理三级间接寻址。注意,在后续使用过程中,iblock[15]和文件头结构中的addrspacemetainfo[15]以及rawdataaddrspacemetainfo[15]是相同对象的不同表述。
[0130]
对于iblock[15]这种地址空间管理结构,在当前设定的情况下,其管理的地址空间最大可达(12+lb_size/4+(lb_size/4)2+(lb_size/4)3)*lb_size字节。其中,直接寻址管理的地址空间范围为[0,12*lb_size),一级间接寻址管理的地址空间范围为[12*lb_size,(12+lb_size/4)*lb_size),二级间接寻址管理的地址空间范围为[(12+lb_size/4)*lb_size,(12+lb_size/4+(lb_size/4)2)*lb_size),三级间接寻址管理的地址空间范围为[(12+lb_size/4+(lb_size/4)2)*lb_size,(12+lb_size/4+(lb_size/4)2+(lb_size/4)
3)*lb_size)。直白地讲,就是给定一个地址addr,通过与上述4个范围进行比对,可以快速确认该地址由哪一级寻址进行管理。
[0131]
以lb_size=8kb为例,如果要找某个地址空间内的地址(偏移量)19402在整个传感器数据文件中的真实偏移量(每种数据类型都有独立的地址空间,但所有的数据、地址空间以及头文件都存储在同一个文件中,它们又共用该文件的唯一的地址空间,该文件的地址空间由文件系统来管理),首先需要确定它由哪一级寻址进行解算,因为2*8192《19402《3*8192,所以这里用到了直接寻址,它由iblock[2]进行管理。iblock[2]的内容是一个逻辑块号,记为w,它表示的是传感器数据文件从起始位置开始的第w个逻辑块,也就是说,上述某地址空间中的第19402个字节(位置)对应着传感器数据文件的第w个逻辑块中的某个位置,具体地位置为19402%8192=3018(因为所有的数据和内容都是按照逻辑块进行组织和管理的)。
[0132]
如果要找某个地址空间内的地址(偏移量)109721在整个传感器数据文件中的真实偏移量,我们首先要确认109721由哪一级寻址进行管理(12*8192《109721《(12+8192/4)*8192,由一级间接寻址进行解算),对应iblock[12]。假设iblock[12]存储的逻辑块号为x,它对应从传感器数据文件起始位置开始的第x个逻辑块,这个逻辑块内顺序存放着一系列的逻辑块号,可以将之视为一个长度为lb_size/4的数组,数组内容为逻辑块号。要确定109721在整个传感器数据文件中的真实位置,只有逻辑块x还不够,还要知道该真实位置被x内的哪一条记录管理。我们先把x当数组来看,那么x[0]表示它记录的第一条逻辑块号,它管理[8192*12,8192*(12+1))范围的地址;不难推算,109721由x[1]进行管理;x[1]的值y表示该逻辑块是从整个传感器数据文件起始位置开始的第y个逻辑块,那么109721在整个文件中的真实位置就是y*8192+109721%8192=y*8192+3225,即上述某个地址空间中的第109721个字节在整个传感器数据文件中的真实位置为y*8192+3225,也可以理解为在整个传感器数据文件的第y个逻辑块内的3225位置。
[0133]
对于二级间接寻址,要查找某地址空间中的位置p在整个传感器数据文件中的位置,首先拿到iblock[13]记录的逻辑块号z;然后计算待查找的位置对应z中哪条记录管理,假设对应的逻辑块号为s;然后计算待查找的位置对应s中哪条记录管理,假设对应的逻辑块号为t,则p在整个传感器数据文件中的位置为t*lb_size+p%lb_size。
[0134]
对于和三级间接寻址,过程与上述类似。必须通过一层一层地查找偏移量,
[0135]
最终确定某地址空间中的位置在整个传感器数据文件中的对应位置。
[0136]
实际上,lb_size和每个逻辑块的表示所占的字节数都是可以调整的,这使得本发明提供的方案可以根据实际需要灵活调整相关参数,以减少地址空间数据所占用的文件空间。
[0137]
实施例2:
[0138]
以只有原始数据而没有属性的传感器数据写入过程为例对本发明提供的一种传感器数据组织管理方法进行介绍,本实施例中的数据写入操作具体包括如下步骤:
[0139]
步骤si_w1:用户打开visualimage.dat文件,并指定若文件不存在时的逻辑块大小lb_size为8kb,该文件用于存储可见光传感器原始数据;
[0140]
步骤si_w2:由于该文件不存在,本发明创建一个空的visualimage.dat文件,并返回该属性为空的信息给用户,并缓存文件头header的内容,只有文件头(文件头也占据一个
数据块8k大小)。对照图7给出的文件头的结构,可以确认,本文件的逻辑块大小为0x0000000d表征(0x00-0x03四个字节,对应的十进制为13),对应具体数值为213=8192,也就是8kb;后面记录的属性数量为0(0x04-0x07的4个字节,十进制为0);后面60字节(0x08-0x43)记录的原始数据地址空间元数据区iblock[15]内容均为0,表示此时还没有数据;0x44-0x4b表示当前记录的原始数据大小,初始时为0字节;0x4c-0x2000属于填充部分,为了填满8kb,属于无效数据区;
[0141]
步骤si_w3:用户打开可见光传感器设备,如/dev/video0,调用可见光设备对应的驱动程序(readdata()函数)从设备逐帧(frame)读取数据,假设为19402字节;
[0142]
步骤si_w4:计算存储19402字节原始数据需要分配多少个数据块和多少个地址空间数据块;因为当前文件还没有数据块,所以需要申请个数据块用于存储原始数据本身;由于当前还没有地址空间数据块,所以如果将来将原始数据写入到了这3个数据块,那么传感器数据文件也只会有3个数据块,只需直接寻址即可管理着[0,19402)的地址空间,因此不需要申请逻辑块来存储地址空间数据,只需要把申请到的这3个数据块的id分别赋值给iblock[0]、iblock[1]和iblock[2]即可。因为逻辑块号以及地址或者偏移量都是从0开始计算的,并且文件头占据了逻辑块0,所以新分配的3个数据块的块号分别为1、2、3,将之放到缓存针对文件头header中的对应位置;
[0143]
步骤si_w5:将从传感器读取到的19402字节写入磁盘,此时因为分配的3个数据块是连续的,并且不存在上次写入遗留的未满数据块,所以可以将19402字节一次写入到逻辑块1、2、3中;写入成功后,更新header中的内容,此时的传感器数据文件的构成如图12所示,斜线阴影表示是原始数据所占据的数据块,很显然数据块1和2已经写满了,而数据块3还遗留了一部分区域可供下次写入;如果写入失败,则进行回滚操作,清空新申请的3个数据块,并将header的更改撤销;
[0144]
步骤si_w6:经过多次读取和写入后,假设当前数据量为98000字节,用户继续读取19402字节,并准备将之写入到传感器数据文件,此时文件结构如图13所示,逻辑块12此时还余下8192-98000%8192=304字节可供后续写入;
[0145]
步骤si_w7:计算本次写入19042字节需要分配的数据块和地址空间数据块的数量;首先计算数据块的数量为个;其次计算地址空间数据块的数量,因为前面一直使用的都是直接寻址,所以并没有分配过地址空间数据块,而本次写入19402字节后,原始数据总长度为98000+19402=117402,需要使用一级间接寻址了,所以要给一级间接寻址分配1个数据块用于存储地址空间数据;所以本次写入前需要先申请共计4个逻辑块;为了保证数据的连续性,我们先分配地址空间数据块,后分配存储原始数据的数据块,也就是逻辑块13分配给了一级间接寻址,而逻辑块14、15、16分配给了原始数据,而这3个数据块又刚好被一级间接寻址管理;数据写入过程中,因为上次写入遗留的逻辑块12仍有304字节可供写入,同时其与本次分配的3个数据块并不连续,所以本次写入分成两次,第一次写入304字节到逻辑块12,第二次写入19098字节到逻辑块14、15、16,传感器数据文件结构如图14所示,而逻辑块13作为地址空间数据块,其内容记录了上述分配的3个逻辑块的块号。
[0146]
步骤si_w8:继续写入下一个19402字节,计算数据块和地址空间数据块的方式和前面相同,这次只需要分配3个数据块(逻辑块17、18、19)即可,分配好的数据块和上次分配
的3个数据块是连续的,本次写入可以一次完成,从逻辑块16直接写到逻辑块19,然后更新逻辑块13中的内容,将17、18、19追加进去即可,从这里可以发现本发明将申请地址空间数据块,而后申请数据块的好处了,可以减少读、写的次数,提供效率;
[0147]
步骤si_w9:图15是一次写入超长数据帧导致地址空间从一级间接寻址变成二级间接寻址的过程示意图;写入前,逻辑块13是一级寻址对应的地址空间数据块,逻辑块1-12和14、15共14个数据块存储了原始数据;本次要写入一个长度为4302*8192左右字节的超长帧(假如文件系统支持这么长的数据写入),那么需要分配的数据块为4302个,而地址空间从一级间接寻址转向二级间接寻址,需要的一级间接地址空间数据块数量为0,而二级间接寻址的一级块数量为1,二级块数量为2,共计需要申请4305个逻辑块;按照前面所述的分配规则,先分配3个地址空间数据块,其中1个一级块在前,2个二级块在后,二级块的块号(17和18)写入到一级块(16)中,然后将之后是4302个数据块的块号分别填充到一级间接地址空间数据块(逻辑块13中填充块号19
‑‑
2064)、二级间接地址空间数据块管理的二级块中(逻辑块17填充块号2065-4112,逻辑块18填充块号4113-4320),数据写入成功后,更新header中的相关字段。
[0148]
步骤si_w10:当用户不再需要写数据或者需要关闭文件时,本发明提供的机制会将上述header落盘进行持久化存储,然后调用文件系统的文件关闭操作,正常关闭数据流。
[0149]
以只有原始数据而没有属性的传感器数据读取过程为例,用户要从传感器原始数据的a位置读取length字节,本发明的数据读取流程如下:
[0150]
步骤si_r1:用户打开visualimage.dat文件,如果文件不存在,则返回失败码;
[0151]
步骤si_r2:读取并解析文件头,得到header结构,并缓存在内存中;
[0152]
步骤si_r3:从header结构中获取原始数据地址空间元信息rawdataaddrspacemetainfo[15]和原始数据的总长度rawdatasize;
[0153]
步骤si_r4:判断待读取的起始位置a、结束位置a+length-1与rawdatasize的相对关系如果a》rawdatasize则直接返回;如果a+length-1》rawdatasize,则将终止位置改为rawdatasize;
[0154]
步骤si_r5:按照前述的寻址方式,从rawdataaddrspacemetainfo[15]中解算出待读取的位置a在visualimage.dat文件中的真实地址和以及之后的length字节所在的逻辑块的列表lblist,假设为{34,67,68,75,76,92};
[0155]
步骤si_r6:根据lblist的分布情况,进行读优化以减少读文件操作的次数,以上述示例为例,则逻辑块67、68是连续的可以合并到一次读取过程中,逻辑块75和76是连续的,可以合并到一次读取过程中,上述6个逻辑块,可以通过4次读操作完成数据获取;
[0156]
步骤si_r7:将读取的数据返回给用户,如果用户要持续读取数据,则重复上述si_r2-6过程(之所以从si_r2开始,是要防止在读的同时,有用户写入新数据),直到用户不再需要读取数据;
[0157]
步骤si_r8:用户调用关闭文件的操作,结束数据读取过程,文件正常关闭,释放相应缓冲。
[0158]
实施例3:
[0159]
针对上述实施例,可以发现,本发明并没有加快数据的读取过程,同时还浪费了存储空间。这是因为本发明主要解决的问题是带属性信息的传感器数据的组织、存储和检索。
下面以带属性的传感器数据读写过程为例,介绍本发明是如何进行数据组织和管理的,以便于和上述实施例进行对比。
[0160]
以带属性的传感器数据写入过程为例对本发明提供的一种传感器数据组织管理方法进行介绍,本实施例中的数据写入流程如下:
[0161]
步骤sii_w1:用户打开visualimage.dat文件,该文件用于存储可见光传感器原始数据及其对应的时间索引、空间索引以及数据对象数据;
[0162]
步骤sii_w2:由于该文件不存在,本发明创建一个空的visualimage.dat文件,并返回该文件为空的信息给用户;
[0163]
步骤sii_w3:用户设定该文件需要配置的属性信息;所属属性信息包括:时间索引(temporal index)、空间索引(spatial index)、数据对象(data object);
[0164]
其中,时间索引为该帧数据获取时的时间戳,精度为毫秒(ms),具体地为1970年1月1日以来的毫秒数;空间索引为无人机或者无人车采集到该帧数据时的经度、维度、海拔高度;数据对象为该帧数据经过图像识别程序识别出来的对象,如“汽车”、“车牌”等对象;0x00-0x03共4个字节,表示逻辑块的大小为213=8192字节;0x04-0x07共4个字节,表示传感器原始数据当前配置的属性数量为3;0x08-0x43共60个字节,表示传感器原始数据的地址空间元数据区为空(因为初始化状态情况下,还没有原始数据存入到文件中,故原始数据的地址空间为空);0x44-0x4b的8个字节表示当前文件中传感器原始数据的长度,或者说是传感器原始数据的地址空间已经被使用的长度,初始化时为0;0x4c-0x8b的64个字节表示时间索引对应的“temporal index”属性名;0x8c-0xc7的60个字节表示时间索引这一属性所对应的地址空间元数据区,初始化时为0;0xc8-0xcf的8个字节表示时间索引这一属性的已经落盘的数据总长度,或者说这个属性对应的地址空间已经被使用的长度,初始化时为0;后续的0xd0-0x163的132个字节表示空间索引这一属性所对应的attrmetadata结构体的内容;0x164-0x1e7的132个字节表示数据对象这一属性对应的attrmetadata结构体的内容;之后的0x1e8-0x1fff之间的0起填充作用;
[0165]
步骤sii_w4:用户打开可见光传感器设备,如/dev/video0,调用可见光设备对应的驱动程序(readdata()函数)从设备逐帧(frame)读取数据,假设为19402字节;同时得到获取该帧数据的时间,(假设为1626338158729对应的16进制为0x17a a94e e889),以及获取该帧的空间信息,假设为(经度115.923,纬度40.124,高度20.04m,为了便于计算,将经度、维度、高度均放大1000倍,对应的16进制分别为0x1 c4d3,0x9cbc,和0x4e48);假设用户的图像检测程序发现该帧图像中有一辆红色的车,表示为“type:car”、”color:red”;
[0166]
步骤sii_w5:用户将上述时间索引、空间索引、特征索引封装成对应的结构体,定义中struct spaceindex、struct timeindex和struct featuremapindex三个数据结构,如图16所示;然后,调用本发明提供的writedata(char*rawdata,struct timeindex ti,struct spaceindex si,struct featuremapindex ami)接口将原始数据及其附带的属性信息写到传感器数据文件中;
[0167]
步骤sii_w6:计算本次写入所需要分配的逻辑块的数量;具体的:
[0168]
(1)对于原始数据,其存储原始数据本身需要个逻辑块。由于当前还没有地址空间数据块,所以如果将来将原始数据写入到了这3个数据块,那么传感器数据文件也只会有3个数据块,只需直接寻址即可管理着[0,19402)的地址空间,因此不需要
申请逻辑块来存储地址空间数据,只需要把申请到的这3个数据块的id分别赋值原始数据对应的给iblock[0]、iblock[1]和iblock[2]即可(也就是rawdataaddrspacemetainfo[15]数组的对应位置)。因此,本次为原始数据分配了共计3个逻辑块。
[0169]
(2)对于时间索引数据,结构体本身占sizeof(struct timeindex)长度,为定长的,假设这里为24字节(考虑到结构体的对齐问题),因为当前为首次写入,所以需要为时间索引数据分配1个逻辑块,而同样的,这个逻辑块本身的管理只用到了直接寻址,所以也不需要分配地址空间数据块;因此本次为时间索引属性分配的逻辑块共1个。
[0170]
(3)同样地,空间索引这一属性也共计分配了1个数据块,数据对象这一属性也共计分配了1个数据块。
[0171]
(4)经过计算,本次写入共计需要申请6个数据块,对应的块号为:原始数据对应1、2、3,时间索引对应4、空间索引对应5、数据对象对应6。
[0172]
步骤sii_w7:块分配完成后,先将上述6个数据块的块号分别头文件中对应的位置,而后将原始数据及其对应的各属性数据写入传感器数据文件,文件的构成如图17所示。时间索引数据块内容如下:0x8000-0x8007的8个字节表示时间戳,0x8008-0x800f的8个字节表示本次写入的原始数据在其对应的地址空间中的起始位置,因为是首次写入,所以为0,0x8010-0x8013的4个字节表示本次写入的传感器原始数据的长度,0x8014-0x8017的4个字节是结构体对齐用的,填充为0。空间索引数据块的内容如下:0xa000-0xa003的4个字节表示放大1000倍的经度值,0xa004-0xa007的4个字节表示放大了1000倍的纬度值,0xa008-0xa00b的4个字节表示放大了1000倍的高度值(以米为单位),0xa00c-0xa00f的4个字节表示本次写入的传感器原始数据的长度,0xa010-0xa017的8个字节表示本次写入的原始数据在其地址空间中的起始位置。数据索引数据块内容如下:0xc000-0xc003的4个字节表示本次写入的原始数据对应的数据对象的特征数量,0xc004-0xc007的4个字节表示第一个特征的名称的长度(也就是”type”的长度),0xc008-0xc00b的4个字节表示第二个特征的名称的长度(也就是“color”的长度),0xc00c-0xc00f的4个字节表示第一个特征对应的数值的长度(也就是“car”的长度),0xc010-0xc013的4个字节表示本次第二个特征对应的数值的长度(也就是“red”的长度),0xc014-0xc017的4个字节表示本次写入的原始数据的长度,0xc018-0xc01f的8个字节表示写入的原始数据在其地址空间中的起始位置,0xc020-0xc02e的15个字节分别是“type”、”car”、”color“和”red”的各字符的16进制表示。
[0173]
步骤sii_w8:之后的数据写入以及逻辑块的申请与分配与“实施例2”中的过程相似,首先计算存储每一类数据所需要的数据块的数量,然后计算管理这些数据块所需要的地址空间数据块的数量;为每一类数据申请到的逻辑块的排列均为地址空间数据块连续分布且在前,数据块连续分布在后,紧跟其对应的地址空间数据块,以提高读写效率。之后,针对每类数据,按照其所在的地址空间在整个传感器数据文件中的映射位置,将对应的数据写入文件(先写传感器原始数据,后写各属性数据)。如果写入成功,则更新文件头中记录该类数据已落盘数据的长度;如果不成功则该类数据所占用的空间需要进行回滚,释放申请到的逻辑块(如果原始数据写入失败,则后续的属性数据均不写入文件)。
[0174]
步骤sii_w9:当用户不再需要写数据或者需要关闭文件时,本发明提供的机制会将上述header落盘进行持久化存储,然后调用文件系统的文件关闭操作,正常关闭数据流。
[0175]
以上述落盘的带属性的传感器数据读取过程为例,用户要读取time1时刻到time2
时刻的传感器原始数据,本发明的数据读取流程如下:步骤sii_r1:用户打开visualimage.dat文件,如果文件不存在,则返回失败码;
[0176]
步骤sii_r2:读取并解析文件头,得到header结构,并缓存在内存中;步骤sii_r3:从header结构中获取各属性地址空间元信息,管理时间索引数据的attrmetadata假定为tamd,获取其对应的地址空间元数据记为tamd.addrspacemetainfo和时间索引数据的总长度tamd.attrdatasize;
[0177]
步骤sii_r4:按照“实施例2”中的顺序读取方式,顺序读取tamd.addrspacemetainfo所管理的时间索引数据,每次读取出一个的时间索引数据结构的对象struct timeindex ti,然后判断ti.timestamp和time1、time2的关系,直到找到某个ti.timestamp≥time1,说明本条索引对应的原始数据符合查询需求,将ti.offset和ti.length组成的键值对放到待返回列表results中(results.push_back(std::make_pair(ti,offset,ti.length)))。
[0178]
步骤sii_r5:继续往下读取时间索引的数据,得到时间索引数据结构对象tix,如果time2≥tix,timestamp≥time1,说明该索引对应的原始数据符合查询需求,将tix.offset和tix.length组成的键值对放到待返回列表results中(results.push_back(std::make_pair(tix,offset,tix.length)))。
[0179]
步骤sii_r6:遍历上述results中的结果,对于每一个tix.offset,通过前述的寻址方案进行地址转换,得到其在整个传感器数据文件中的真实位置position,然后使用文件系统提供的read()接口,将文件中position开始的tix.length长度的数据读取出来,并将这些数据返回给用户。
[0180]
以上述落盘的带属性的传感器数据为例,用户要读取时间范围time1到time2、空间范围为(x1,y1,z1)到(x2,y2,z2)的传感器原始数据,本发明的读取满足多个属性信息的数据流程如下:
[0181]
步骤siii_r1:用户打开visualimage.dat文件,如果文件不存在,则返回失败码;
[0182]
步骤siii_r2:读取并解析文件头,得到header结构,并缓存在内存中;
[0183]
步骤siii_r3:从header结构中获取各属性地址空间元信息,管理时间索引数据的attrmetadata假定为tamd,获取其对应的地址空间元数据记为tamd.addrspacemetainfo和时间索引数据的总长度tamd.attrdatasize;管理空间索引数据的attrmetadata假定为samd,获取其对应的地址空间元数据记为samd.addrspacemetainfo和时间索引数据的总长度samd.attrdatasize;
[0184]
步骤siii_r4:按照顺序读取方式,顺序读取tamd.addrspacemetainfo所管理的时间索引数据,每次读取出一个的时间索引数据结构的对象struct timeindex ti,然后判断ti.timestamp和time1、time2的关系,直到找到某个ti.timestamp≥time1,说明本条索引对应的原始数据符合查询需求,将ti.offset和ti.length组成的键值对放到待返回列表results1中(results1.push_back(std::make_pair(ti,offset,ti.length)))。
[0185]
优选的:所述顺序读取方式为和“实施例2”中相同的方式;
[0186]
步骤siii_r5:继续往下读取时间索引的数据,得到时间索引数据结构对象tix,如果time2≥tix.timestamp≥time1,说明该索引对应的原始数据符合查询需求,将tix.offset和tix.length组成的键值对放到待返回列表results中(results.push_back
(std::make_pair(tix,offset,tix.length)))。
[0187]
步骤siii_r6:按照顺序读取方式,顺序读取samd.addrspacemetainfo所管理的时间索引数据,每次读取出一个的时间索引数据结构的对象struct spaceindex si,然后判断其经度、维度、高度(longitude,latitude,height)和(x1,y1,z1)、(x2,y2,z2)的关系,如果(x2,y2,z2)≥si.(longitude,latitude,height)≥(x1,y1,z1),说明该索引对应的原始数据符合查询需求,将si.offset和si.length组成的键值对放到待返回列表results2中(results2.push_back(std::make_pair(si,offset,si.length)))。
[0188]
优选的:所述顺序读取方式为和“实施例2”中相同的方式;
[0189]
步骤siii_r7:根据用户设定的检索条件(两个条件是“与”的关系),计算上述返回的results1和result2的交集results=result1∩result2,即为满足条件的原始数据的相关信息。
[0190]
步骤siii_r8:遍历上述results中的结果result,对于每一个result.offset,通过前述的寻址方案进行地址转换,得到其在整个传感器数据文件中的真实位置position,然后使用文件系统提供的read()接口,将文件中position开始的result.length长度的数据读取出来,并将这些数据返回给用户。
[0191]
相比于实施例2,实施例3提供了数据过滤功能,提供了简单的数据检索能力。在绝大多数情况下,传感器输出的单帧数据长度要远大于其对应的属性数据的长度。遍历所有的原始数据以查找满足用户条件的数据所需要的耗时,会远大于读取相关属性数据所需要的时间。在实施例2中,只读取相关的属性数据,然后根据用户提交的检索条件进行过滤,得到满足用户条件的定位信息(对应的原始数据的位置和长度),然后只需要根据这些少量的定位信息去原始数据的地址空间进行读取即可。很显然,这种方式在平均情况下会大大减少数据读取时间,从而提高读取效率。
[0192]
无人设备包括:机器人、无人机、无人潜航器、无人船和无人驾驶汽车等。
[0193]
实施例4
[0194]
基于同一种发明构思本发明还提供一种传感器数据组织管理系统,包括:数据管理层、传感器设备层、用户应用层和文件系统层;所述传感器设备层包括多种传感器设备;所述文件系统层用于存放各种传感器对应的数据文件;所述应用程序层包括各种应用程序;
[0195]
所述数据管理层包括:外层数据接口、读取模块和写入模块;
[0196]
所述外层数接口用于通过用户应用层获取传感器设备层的传感器数据;
[0197]
读取模块,当无人设备需要访问所搭载的传感器数据时调用,所述读取模块用于基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序;
[0198]
写入模块,当无人设备中搭载的传感器采集到数据需要写入无人设备时调用,所述应用程序调用写入模块将获取的传感器数据写入传感器数据文件。
[0199]
本实施例的传感器数据组织管理系统就是为了实现本发明的一种传感器数据组织管理方法,其各模块所实现的功能可以参考前述实施例,这里不再赘述。
[0200]
术语“数据处理装置”、“数据处理系统”、“用户设备”或“计算设备”包涵用于处理数据的所有种类的装置、设备和机器,举例包括可编程处理器、计算机、片上系统、或者上述
中的多个或其组合。所述装置能够包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件,所述装置还可以包括代码,创建用于所述计算机程序的执行环境,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或上述一个或多个的组合的代码。该装置和执行环境可以实现各种不同计算模型基础设施,诸如web服务、分布式计算、和网格计算基础设施。
[0201]
计算机程序(也被称为程序、软件、软件应用、脚本或代码)能够以编程语言的任何形式来撰写,包括汇编或解释语言、说明或过程性语言,且其可以以任何形式部署,包括作为单机程序或者作为模块、组件、子例程、对象或适于在计算环境中使用的其他单元。计算机程序可以但不必与文件系统中的文件相对应。程序能够存储在保持其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,在专用于所述程序的单个文件中,或者在多个协同文件中(例如,存储一个或多个模块、子例程或代码部分的文件)。计算机程序可以部署为在一个计算机上或位于一个站点或跨多个站点分布且由通信网络互连的多个计算机上执行。
[0202]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0203]
本发明是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0204]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0205]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0206]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。

技术特征:
1.一种传感器数据组织管理方法,其特征在于:所述方法包括:当无人设备中搭载的传感器采集到数据需要写入无人设备时:将获取的传感器数据写入传感器数据文件;当无人设备需要访问所搭载的传感器数据时:基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序。2.如权利要求1所述的方法,其特征在于:所述将获取的传感器数据写入传感器数据文件,包括:步骤sw1:基于数据接口访问所述传感器对应的数据文件;步骤sw2:基于原始的传感器数据、各种属性数据以及索引信息,调用数据写入接口;步骤sw3:查找所述数据文件头部中各类型数据所对应的地址空间原数组所在位置和各数据类型已写入的数据长度,计算本次写入各种类型数据所需要分配的数据块,以及管理这些数据块所需要分配的地址空间数据块,然后将这些数据块和地址空间数据块分别分配给对应的地址空间元数据区进行管理;步骤sw4:依次从所述数据类型中确定一种数据类型执行写入操作,直到所有类型数据都完成了写入操作;步骤sw5:持续执行上述步骤sw2-步骤sw4的过程,直到传感器关闭或者不再需要写入数据。3.如权利要求2所述的方法,其特征在于,所述基于数据接口访问所述传感器对应的数据文件,包括:判断所述传感器对应的数据文件是否存在;当存在时,访问所述传感器对应的数据文件,将所述属性信息会写入到所述数据文件头部;当不存在时,创建所述传感器对应的数据文件,设定所述文件对应的逻辑块大小,并将所述传感器属性信息写入创建的数据文件头部。4.如权利要求2所述的方法,其特征在于,所述写入操作包括:查找文件头部中该类型数据所对应的地址空间原数组所在位置和该数据类型已写入的数据长度,而后,根据4级寻址方案,解析待写入的数据在该类型数据所在地址空间中的位置;根据所述数据类型的待写入数据的长度和为本次写入该数据分配的数据块的分布情况,将该类型的数据写入传感器数据文件中;更新数据文件头部中所述类型数据的长度信息,完成本类型数据的本次写入操作。5.如权利要求4所述的方法,其特征在于,所述4级寻址方案包括:第一级采用直接寻址方式,第二级、第三级和第四级均采用间接寻址方式。6.如权利要求5所述的方法,其特征在于,所述第一级的编码中每个编码均对应一个具体的数据块;第二级、第三级和第四级的编码均用于指向一个数据块地址;所述第二级编码所指向的数据块用于存放多个第一级编码;第三级编码所指向的数据块用于存放多个第二级编码;第四级编码所指向的数据块用于存放多个第三级编码。
7.如权利要求2所述的方法,其特征在于,所述索引信息包括时间索引信息、空间索引;所述数据类型至少包括下述中的一种或多种:原始数据和属性。8.如权利要求1所述的方法,其特征在于,所述根据所述检索条对传感器对应的数据文件进行读取,包括:基于外层数据接口打开所述传感器对应的数据文件;基于数据接口,对所述传感器数据文件进行访问,得到列表信息;基于所述列表信息读取所述传感器数据文件。9.如权利要求8所述的方法,其特征在于,所述基于外层数据接口打开所述传感器对应的数据文件还包括:当所述传感器对应的数据文件不存在时终止读取传感器数据文件。优选的,所述对所述传感器数据文件进行访问,得到列表信息,包括:判断是否提交检索条件:当提交检索条件时,根据所述检索条件从所述传感器数据文件中按类型进行检索,得到第一列表信息;当未提交检索信息时:根据读取范围和原始数据的地址空间对整个传感器数据文件进行计算确定第二列表信息;所述第一列表信息包括:地址,长度;所述第二列表信息包括:偏移量,长度;所述检索条件包括属性信息和索引信息。优选的,所述根据所述检索条件从所述传感器数据文件中按类型进行检索,得到第一列表信息,包括:根据各类型的检索条件信息,从数据文件头部的类型信息查找对应的地址空间元数据,然后在各地址空间分别检索,得到符合检索条件的原始数据所在的位置列表;根据检索条件之间的关系,对各类型数据返回的列表进行逻辑计算,得到符合所有检索条件的原始数据在整个传感器数据文件中的地址和长度作为第一列表信息。优选的,所述根据读取范围和原始数据的地址空间对整个传感器数据文件进行计算确定第二列表信息,包括:根据读取范围和原始数据的地址空间进行地址转换,计算所需要的数据在整个传感器数据中的偏移量和长度作为第二列表信息。优选的,所述传感器对应的数据文件基于所述传感器各原始数据、原始数据对应的属性并结合头文件进行构建。优选的,所述数据文件包括:头文件、多个原始数据及各原始数据对应的地址空间数据、属性地址空间数据和属性数据;所述头文件包括:逻辑块的大小、传感器属性数量、各原始数据对应的原始数据地址空间数据、原始数据长度、属性名称和属性地址空间元数据;其中,所述逻辑块大小为动态设置或固定设置。10.一种传感器数据组织管理系统,其特征在于:所述系统包括:数据管理层、传感器设备层、用户应用层和文件系统层;所述传感器设备层包括多种传感器设备;所述文件系统层用于存放各种传感器对应的数据文件;所述应用程序层包括多种应用程序;所述数据管理层包括:外层数据接口、读取模块和写入模块;
所述外层数接口用于通过用户应用层获取传感器设备层的传感器数据;所述读取模块,当无人设备需要访问所搭载的传感器数据时调用,所述读取模块用于基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序;所述写入模块,当无人设备中搭载的传感器采集到数据需要写入无人设备时调用,所述应用程序调用写入模块将获取的传感器数据写入传感器数据文件。

技术总结
本发明提供了一种传感器数据组织管理方法和系统,包括当无人设备中搭载的传感器采集到数据需要写入无人设备时:将获取的传感器数据写入传感器数据文件;当无人设备需要访问所搭载的传感器数据时:基于应用程序设定的检索条件,并根据所述检索条对传感器对应的数据文件进行读取,将读取到的数据返回给所述应用程序。其中本发明数据组织管理是基于传感器各原始数据、原始数据对应的属性并结合头文件进行设计,本发明在不改造文件系统和不安装额外软件的情况下,通过设计开发一种数据组织方式实现对传感器数据的组织与管理,支持数据的快速检索和定位,同时不过多增加系统的运行开销。同时不过多增加系统的运行开销。同时不过多增加系统的运行开销。


技术研发人员:金松昌 林彬 杨烟台 孟杨瑞 李杰 段雷 赵放
受保护的技术使用者:中国人民解放军军事科学院国防科技创新研究院
技术研发日:2022.02.22
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-4210.html

最新回复(0)