李 秀, 黄容生, 宋靖东
(清华大学 深圳研究生院 智能计算实验室,广东 深圳 518055)
随着传感器的微型化、智能化,传感器和传感器系统开始广泛应用于国防、交通、家居、环境保护、海洋观测等各个领域。但是,这些传感器系统基本都是根据特定的传感器类型设计和实现的,其传感器、传感器观测数据只能够被特定应用访问和使用,形成了一个个“资源孤岛”。传感网整合架构(sensor web enablement,SWE)项目组致力于通过制定相应的信息和服务标准,屏蔽底层异构性,建立一个基于Web的、能够统一共享和访问任意传感资源(包括传感器、传感器系统、传感器观测数据和传感器服务等)的“传感器万维网”。
SWE设计并制订了一系列传感网标准服务[1],定义了传感网的标准服务模型,已经成为传感网事实上的标准。这些标准服务向应用层屏蔽了底层传感器层的异构性,应用层可以通过调用和整合这些标准服务提供统一的传感器服务[2~4]。当服务层与传感器层进行互操作时,需要进行传感器协议和SWE协议的转换等传感器的适配工作。但是,这些适配工作如何完成,在哪里完成,SWE并没有进行明确定义[5]。如此就形成了传感器层和服务层的“互操作鸿沟”。现在的传感网系统构建中,需要人工为每一只传感器和SWE服务对进行适配实现,造成了非常大的适配和集成代价,而且非常容易出错。尤其是对于海底观测网等大规模传感器网络,往往部署着成千上百只传感器,人工适配将使得异构传感器的集成变得极为困难和极易出错,而且也严重降低了传感器网络观测的实时性[6]。因此,设计并实现一种传感器自动适配、动态适配的方法显得非常重要,尽量减少适配过程中的人工干预,提高适配的效率,增强传感器网络的观测实时性,也是促进传感器“即插即用”的关键。
美国蒙特利海湾研究所(Monterey Bay Aquarium Research Institue,MBARI)设计并实现了一种硬件设备Puck,其中存储了传感器的元数据、驱动等信息,然后内置或者外接在传感器上,从而实现传感器与元数据的硬件绑定[7],系统将自动从设备Puck中检索这些信息并自动完成传感器的适配,从而实现传感器的“即插即用”。但是,这是一种硬件解决方法,需要改变传感器的硬件结构,因此,暂时仍没有得到广泛应用。更多的科研人员是从软件方法的角度去寻求弥合服务层和传感器层的“互操作鸿沟”,进而实现传感器的“即插即用”。Usländer T等人设计了Anysen框架[8],提出了一种描述传感器协议的抽象模型,通过对传感器协议建模使得系统能够通过读取和解析其协议模型来实现与传感器的互操作。但是,框架目前只能提供SOS服务支持。Gigan G等人设计了传感器抽象层(sensor abstraction layer,SAL)[9],通过提供传感器接口的标准描述屏蔽底层技术细节,通过传感器代理提供服务层和底层传感器层的通信等互操作。Broering A等人进一步扩展了SWE提出的传感器抽象建模语言(sensor modeling language,SensorML),增加了对传感器协议模型的支持,设计了一种传感器总线来沟通服务层和传感器层,进一步实现传感器层和服务层的快速适配[10]。但是,这些软件解决方法基本都处于概念设计的阶段,有的没有提供具体的实现方法,或者仍然需要很多的人工干预和适配工作,影响了传感器观测的实时性。另外,这些方法没有很好地解决传感器自动适配的难点:传感器的加载时间未知,传感器的数据协议未知,传感器的指令协议未知,这些未知给传感器的自动适配带来了非常大的挑战。因此,有必要在这些研究的基础上进一步研究传感器自动适配的方法,弥补服务层和传感器层的“互操作鸿沟”,从而实现传感器的“即插即用”。
本文在现有研究的基础上,对传感器进行抽象,提出和设计了面向集成的传感器信息模型USDI(universal sensor descriptor for integration),并基于USDI提出了一种动态适配器方法,用于构建一个“虚拟仪器层”,沟通传感器层和服务层,弥补传感器层和服务层的“互操作鸿沟”,实现传感器的自动适配和数据的动态处理。
SWE提供的传感器信息模型SensorML是一种抽象的传感器建模规范,是原子性的、基础性的,需要进行整合、改进和模板化,从而使其适合传感器集成的需求。USDI在SensorML的基础上进行了改进,使之符合传感器自动适配的需求。根据传感器集成与自动适配的需求,USDI的信息必须包括:用于辨识和发现传感器的元数据;用于描述传感器观测能力和观测性质的信息;传感器的数据协议,包括输入、输出数据流的结构和性质;传感器中的数据处理过程,包括参数、算法和实现;真实传感器还需要提供传感器的地理位置、时间等时空信息,包括其所使用的时空参考坐标系。
根据USDI的信息需求,USDI的体系结构如图1所示,以XML文档格式封装。其中元数据继承SensorML的一般信息、属性信息、约束信息、引用信息、历史信息、时空位置信息等6种元数据信息,用于定义传感器的标识符、分类符等元数据信息。输入、输出则分别对传感器的输入、输出进行建模。输入模型增加输入连接,以支持数据流的多目标传递。输出模型增加传感器输出数据的详细描述,以提供传感器的数据协议模型,支持传感器数据的自动解析和动态处理。
图1 USDI核心组件
根据传感器自动适配的需求,本文设计了一种动态适配器,其体系结构如图2所示。动态适配器由主系统自动生成,采用三层松耦合结构,主系统通过动态适配器与传感器进行交互,传感器的协议转换由动态适配器承担。其三层结构的功能分别简述如下:
1)会话层:负责与相应传感器通信和交互。
2)过滤器层:包括一个可扩展的过滤器链,可以根据需要增加过滤器,其中必须包含协议过滤器、执行线程过滤器、日志过滤器。
3)业务逻辑层:具体的传感器相关或者应用相关的业务逻辑实现。
图2 动态适配器
如图3所示,传感器的动态适配器由集成系统自动生成。当主系统检测到传感器网络中部署了新的传感器时,将会启动传感器的自动适配过程:
1)根据新传感器的通用唯一识别码(universally unique identifier,UUID)向USDI云服务器检索其USDI模型;
2)调用USDI解析器,读取USDI模型,自动生成相应的动态适配器;
3)通过动态适配器与传感器进行交互,由动态适配器进行传感器的协议转换;
4)为服务层服务提供传感器统一访问接口。
图3 传感器自动适配示意图
动态适配器由主机系统根据传感器的USDI信息模型自动生成,其实质是根据传感器的数据协议构建传感器的数据结构和自动解析方法,根据传感器的指令协议构建传感器的协议转换方法,从而动态生成一个符合传感器数据协议和指令协议的动态适配器。
如图4所示,适配器类的生成遵循以下步骤:
1)读取传感器名称和整体信息描述,准备创建同名的适配器类;
2)CA文件中是否存在未读的模块定义:是,则转入第3步;否则,转入第4步;
3)取出下一个模块定义;
4)判断模块是否包含多个字段:是,则将其封装为适配器类的子类,创建子类,并在适配器类中创建该子类的成员变量;否则,将其配置为适配器类的成员变量,创建成员变量;转入第1步;
5)创建适配器类的构造函数;
6)保存适配器类Class二进制文件。
其中,创建子类和相应成员变量的过程如图5所示。
图4 动态适配器生成流程
本文从南海海底观测网的传感器中挑选了其中具有代表性的6种传感器进行自动适配实验,包括压力传感器、海鸟温盐深仪CTD37s、化学传感器、原位颗粒流速仪、声学多普勒流速仪(acoustic Doppler vector,ADV)、声学多普勒流速剖面仪(acoustic Doppler current profiler,ADCP)。各类传感器的数据结构存在明显的差异,其中前4种传感器的数据结构较为简单,数据字段在10个以下,而且均为标量数据;后2种的数据结构比较复杂,超过50个数据字段,包含矢量数据。
图5列出了实验传感器的动态适配器生成时间。可以看出,各类传感器的自动适配时间都比较短,均在数十毫秒或者更少,相比人工适配(人工适配时间并不确定,与适配人员对主系统和传感器的熟悉程度相关,但是基本在min级别以上),效率提高非常明显。而且动态适配器只在传感器初次部署时一次生成,后续的互操作将调用生成的动态适配器来完成。因此,动态适配器的生成不会对传感器的实时观测造成明显影响。
图5 动态适配器生成时间
图6 传感器数据动态解析实验结果
图6列出了基于动态适配器的传感器数据动态解析实验结果,其中,1#是一般解析时间,2#是动态解析时间。相比普通解析时间,动态解析时间并没有明显增长,但是却是实现传感器数据的自动解析,将其中的人工干预极大降低,是传感器“即插即用”的关键一步。
本文基于现有的传感器“即插即用”方法研究,提出了一种动态适配器方法,用于实现传感器的自动适配,弥补服务层和传感器层的“互操作鸿沟”,进而实现传感器的“即插即用”。相关实验传感器的自动适配实验和数据动态解析实验表明:该方法能够实现传感器的无人自动适配,能够在不明显增加传感器的解析时间的情况下进行传感器数据的自动解析,可以进一步实现传感器的“即插即用”。由于该方法能够避免适配过程中的人工干预,因此,能够很好地满足传感器适配的实时性。
参考文献:
[1] Bröring A,Echterhoff J,Jirka S,et al.New generation sensor web enablement[J].Sensors,2011,11(3):2652-2699.
[2] 郭忠文,孙玉婷,蒋永国,等.海洋Sensor Web研发面临的问题及挑战[J].中国海洋大学学报:自然科学版,2009(5):1061-1066.
[3] 王建国,阳 叶.基于SWE的无线传感观测服务研究与实现[J].计算机与数字工程,2011(12):137-140.
[4] 蒋 锐,宋焕斌,朱杰勇.基于Sensor Web的矿山地质灾害监测预警[J].金属矿山,2010(9):47.
[5] Broering A,Below S,Foerster T.Declarative sensor interface descriptors for the sensor web[C]∥1st International Workshop on Pervasive Web Mapping,Geoprocessing and Services,WebMGS 2010,2010:26-32.
[6] Headley K L,Davis D,Edgington D,et al.Managing sensor network configuration and metadata in ocean observatories using instrument pucks[C]∥2003 The 3rd International Workshop on Scientific Use of Submarine Cables and Related Technologies,IEEE,2003:67-70.
[7] O’Reilly T C,Headley K,Graybeal J,et al.MBARI technology for self-configuring interoperable ocean observatories[C]∥OCEANS 2006,IEEE,2006:1-6.
[8] Usländer T,Jacques P,Simonis I,et al.Designing environmental software applications based upon an open sensor service architecture[J].Environmental Modelling & Software,2010,25(9):977-987.
[9] Gigan G,Atkinson I.Sensor abstraction layer:An unique software interface to effectively manage sensor networks[C]∥3rd International Conference on Intelligent Sensors,Sensor Networks and Information,ISSNIP 2007,IEEE,2007:479-484.
[10] Broering A,Foerster T,Jirka S,et al.Sensor bus:An intermediary layer for linking geosensors and the sensor web[C]∥Proceedings of the 1st International Conference and Exhibition on Computing for Geospatial Research & Application,ACM,2010:12.