无线传感器网络(wireless sensor network,WSN)使逻辑上的信息世界与真实的物理世界紧密结合,从而真正实现无处不在的计算模式。其核心在于收集并实时处理由感知模块获得的物理信号,获取准确、高效、及时的信息或情报[1]。由于无线传感器网络的自组织性、动态变化的网络拓扑、受限的无线传输带宽等特点,使得整个系统的误差被放大。因此在信号传输阶段将误差控制在较低的数量级,成为无线传感器网络研究的热门领域。相比传统的如均值滤波和限幅滤波等滤波算法,卡尔曼滤波算法[2]在信号的滤波和处理方面,具有极强的差错控制。这种控制算法对当前目标位置的估计——滤波,可以将误差控制在极小的范围内。
由于无线传感器网络系统设计复杂、成本较高,仿真技术为系统的研究提供了一条有效的途径。仿真技术的基础和核心之一是仿真模型的建立。目前主流网络仿真平台有Berkley大学的Network Simulato-2(NS-2),UCLA大学的GloMosim,以及OPNET公司的核心产品OPNET Mdodeler.NS-2需要Linux基础,采用命令行的方式操作。GloMosim是加州大学洛杉矶分校的一款仿真软件,它的仿真试题需要借助于网络节点的物理位置和分布。本研究使用OPNET,它是一款为工程技术人员提供的一个网络技术和产品研发平台,具有友好的用户界面,支持面向对象的建模方式,在通信协议和路由算法的研究方面性能良好。本研究主要使用它在无线传输方面的功能,结合卡尔曼滤波算法,建立一个无线传感器网络应用模型,并获取网络特性参数,基于包时延和误码率等参数分析网络性能优劣。
1 卡尔曼滤波算法
卡尔曼滤波算法[2]最大的特点是可以用一种近似最优的方式基于可观测值估算不可观测值,并且可随着新的观测值实时更新旧观测值,利用系统方程和观测方程,按照递推公式,计算目标状态,已达到对目标物体状态的实时检测与追踪,实质上是基于概率事件的一种估计。该算法能达到很高的计算精度,映射到模型中就体现在较低的误码率和端到端延迟。并且,由于算法本身设计只关心当前时刻的前一时刻的状态量,因此只占用系统较小的存储资源,这也为数据结构的进一步优化带来了扩展空间。
Kalman信号模型如式(1)和(2):
测量模型为 滤波方程为 在已知初始条件X(0)、Y(0)下,为预测值。卡尔曼滤波算法的优点在于只和前一时刻的值相关,由前一个时刻来估测后一时刻的值,并考虑其方差再在反馈系统中做优化。避免了计算机内存中堆放大量冗余数据,提高了计算效率。
OPNET为用户提供了大量的系统函数,用户结合自定义函数可以达到任何想要的结果。使用Proto-C程序设计语言进行各种函数的设计,Proto-C程序设计语言是一种类似于C/C++风格的程序设计语言,较好的兼容普通C/C++标准,在OPNET中新引入了一些适合通信仿真的数据结构与表达方式,Proto-C为用户提供了大量的通用的程序接口函数。图 1为进程模型中卡尔曼自定义滤波函数Proto_C实现的核心代码,如下。
/×Kalman滤波的核心算法伪代码*/
void pr_kalman(pkptr){
...
FIN(pr_kalman(pkptr)); //压栈
//x_last为上一时刻系统状态值,x_mid为临时变量
x_mid=x_last;
p_mid=p_last+Q; //获取上一时刻的协方差和噪声Q
kg=p_mid/(p_mid+R); //kg表示kalman滤波值
z_measure=z_real+fround()*0.3; //获取测量值
x_now=x_mid+kg*(z_measure - x_mid); //修正当前值
p_now=(1-kg)*p_now; //计算当前的协方差
x_last=x_now; //更新系统状态
FOUT; //出栈
}
其中x表示系统的状态值,p代表代表协方差,kg为算法在有噪声情况下的计算值,z为测量值,最后将状态值与测量值进行修正,赋值给当前时刻的状态x_now,然后更新系统状态,等待下一次数据到来。
2 无线传感器网络体系架构
无线传感器网络是由部署在监测区域内的微型传感器节点组成,通过无线通信方式形成一种多跳自组织的网络系统,其目的是协作感知、采集和处理网络覆盖区域内感知对象的信息,并将结果发送给观察者。典型的无线传感器网络体系结构[3]由传感器节点,汇聚(sink)节点,Internet或卫星网络构成,个别还会加入特定的处理模块。节点可内置各种感知单元,如感知目标的温度、震动、湿度、光强度等信息。节点采集到的信息被处理后,经多跳自组织路由方式汇聚到sink节点,最后通过互联网或者卫星网络到达管理部门。同样,管理部门亦可采取相同的策略逆向,将管理信息经由sink节点发送给各传感器节点,达到控制节点的目的。典型的无线传感器节点硬件体系结构如图 1所示。
其中传感器模块负责信息的采集,并将其模拟量进行数字化。处理器模块,负责具体的通信协议和处理算法的执行。无线通信模块,负责与外界进行信息交互。能量供应模块,为整个节点体系提供能量。本研究课题重点关注网络传输阶段的组网技术,采用无线信道模型进行数据的传输,因此以下重点论述传感器节点间的无线组网技术。
3 仿真模型的建立
OPNET是目前网络仿真领域内最著名的网络建模及仿真软件,亦是最先进的网络仿真和开发平台。它采用3层建模架构,即网络层、节点层、进程层,完全符合OSI标准,且能提高仿真速度。其次,它是基于事件驱动的仿真,仿真的推进是靠事件来驱动的,有事件则处理,无事件则推进时间线[6, 7]。其仿真实体是包,通过包的字段来体现通信协议。OPNET几乎可以实现各种网络的仿真,如核心网、无线网、卫星网等,本研究重点使用它在无线传输方面建模的能力。
计算机网络的国际标准OSI模型中,规定7层体系架构,工业中采用简化了的OSI模型—即TCP/IP协议栈模型。OPNET是按照实际网络体系结构进行组织各种仿真资源,因此与实际系统的逼近程度很吻合[4],为实际的研究应用提供逼真的仿真平台。卡尔曼滤波算法在无线传感器网络中的OPNET仿真模型包含3部分:进程模型,节点模型,网络模型。进程模型是节点模型的基础,众多进程模型构成一个节点模型,实现特定的节点功能。节点模型是网络模型的基础,众多节点模型实现整个网络模型的功能。网络模型建立仿真工程任务,关联所有的节点模型和必要的链路模型,构成完整的仿真模型。
3.1 进程模型
进程是一系列作用于数据的逻辑操作以及触发这些操作的条件,包括通信协议和算法、共享资源管理、排队规则、业务流量生成器、统计量收集和操作系统等。创建进程模型,需要使用进程编辑器,OPNET为用户提供了一种图形与代码相结合的方式创建进程模型。图 2为该项目众多进程模型之一——发送节点产生数据包的进程模型a_src_process,定义了3种状态:初始化状态(init)、状态(idle)、发送状态(pk_send)。各个节点的进程模型大致相同,区别在于各个状态的处理函数不同,完成的功能亦不同。Kalman滤波算法作为状态处理函数,在发送节点进程模型中以C文件(后缀名.c)的形式载入工程,OPNET内核调用该函数处理相应的数据,详见OPNET参考手册。
init为绿色强制状态,完成初始化功能用到2个主要函数:op_ima_obj_attr_get(op_id_self(),"Transaction Rate",&tr)获取Transaction Rate的属性值,函数op_dist_load("normal",3200,400)设置包大小为正态分布;idle为红色的非强制状态,产生中断并触发下一次事件,主要用到的函数op_intrpt_schedule_self(op_sim_time()+op_dist_outcome(ia_dist_ptr),0),其功能是产生中断并唤醒下一次事件;pk_send为绿色强制状态,产生相应的数据包并处理数据,Kalman滤波函数将在此环节被调用。主要用到的函数op_pk_create_fmt(“a_packet”)创建指定包格式的数据包。从idle状态到达pk_send状态的转移条件为NEXT_IA_TIMER_EXPIRES,从pk_send到idle状态采取默认的转移条件。
3.2 节点模型
节点是指通信中的一个设施或者资源,数据在其中产生、发送、接受和处理。节点通常具备的能力有:创建功能、收发数据功能、存储功能、内部路由功能等[5]。OPNET创建节点模型需使用节点编辑器,它为用户提供模拟节点内部功能的各种必要资源。节点通常由多个模块共同完成相应功能。
设计中,传感器节点模型如图 3所示,由6个模块组成。sensor_function模块,主要模拟实现传感器的功能(收集力、热、声、光、电等信息),并对相应信息进行数字化处理,如调制、编码等。queue_flow模块,定义了队列的处理行为,此处采用OPNET提供的acb_fifo_ms队列,a(active)表示队列是主动形式(数据由源模块发送),c(concentrating)指从多个客户到来的数据排列在一起集中处理,b(bits)表示以比特为单位处理数据,fifo(first in first out)为先进先出队列,ms(multi_server)为多服务处理机制。mac模块,此处参考802.11数据链路层协议,实现链路层数据包的封装和传输等功能。raido_rx和raido_tx分别为无线接收和发送模块。ant_rx为天线模块,它和radio_rx与radio_tx共同完成信息的发送和接收,实现物理层的传输功能[7]。
数据成员为具有一定格式的数据包,包是一种字段的集合,用包格式编辑器以图形化的方式定义。包括:前导码(preamble),定义为64 bits数据位;目的地址(dst_addr),定义为32 bits;源地址(src_addr),定义为32 bits;类型(type),定义为16 bits;信息域(data),定义为1 000 bits;帧检测顺序(fcs),定义为32 bits。所有的字段可以根据实际情况设定,但要符合相应的协议。图 4所示为该项目的数据包格式。
3.3 网络模型
网络层是OPNET仿真建模的最高层,它为用户提供了嵌套的子网模型,理论上用户可以创建无数多的嵌套子网。网络的创建是以子网、节点、链路这3类对象为基础。其工作区是项目编辑器,用户通过设置各种对象的属性和参数控制整个网络的行为。
图 5为模拟在10 000 m × 5 000 m的区域内随机分布的传感器节点(mobile_node),其中带圈的节点为模拟簇头节点,其功能与其他节点一样。其中的两条白色折线,为模拟节点的移动轨迹,每个节点上的向上的箭头代表与mobility config文件的关联属性,系统将会记住每一个被关联节点的包括位置、大小、时间等信息。
4 仿真分析
成功搭建模型后,用户可以创建多个不同的仿真场景,用于不同情况下的系统仿真和研究,也可以在同一个场景中不断修改各个对象的属性和参数,收集统计量,进行仿真。
观察某些属性值的修改对整个网络性能的影响情况。合理的建模和仿真应遵循的步骤为:创建发送节点,创建接收节点,定义链路模型,建立完整的工程和场景,收集统计量,添加注释,运行仿真并查看结果。收集统计量和设置仿真属性重要之处在于,降低系统开销和提高系统执行效率,只对感兴趣的统计量做研究,具有较强的针对性。本例收集的统计量如图 6、7所示。
其中,图 6接收端收集的统计量有误比特率、丢包率、吞吐量,以as is形式显示。可以看出,接收端的误码率和丢包率,都保持在近乎为零的良好水平,但是随着时间(系统中反应的是某个具体的事件)出现了波动,这与具体的设备有关,研发人员可以选取多家不同的设备模型(OPNET模型库中包含众多的设备模型)比较,选择性能最好的设备[8]。数值分析学强调,误差永远不可能消除,只能缩小。
图 7发送端收集的统计量包括端到端时延、队列大小、吞吐量、包大小,以time_average的形式显示。可以看出,发送端端到端时延为1 s,队列大小为1 000 bits,包大小为1 000 bits,这都与设计一致。吞吐率是一个渐变的过程,随着时间的推移,慢慢达到预期目标。这一现象符合控制学原理中时域分析中的瞬态响应和稳态响应的变化规律。
5 结束语
建立了基于卡尔曼滤波算法的OPNET无线传感器网络仿真模型,仿真结果分析表明,误码率保持在10-5次方数量级,丢包率在10-2次方数量级,端到端时延控制在1s内,有效地验证了卡尔曼滤波算法在无线传感器网络中的应用。因现实条件未组建实际的无线传感器网络,实地测量收集数据。就仿真结果,如何提高系统的稳定性和鲁棒性及系统精度,将是下一步研究的方向。
[1] | AKYIDIZ I F, VURAN M C. Wireless sensor networks[M]. : John Wiley & Sons Inc, 2010:37-49. |
[2] | KALMAN R E. New results in linear filtering and prediction theory[J]. Journal of Basic Engineering,1960,82:35-45. |
[3] | 周珏嘉,林小竹,慕春棣. 基于OPNET的无线传感器网络节点跨层设计[J].计算机工程,2007,33(15):133-130. |
[4] | RAHMAN M. Investigation of bandwidth requirement of smartmeter network using OPNET modeler [J]. Smart Grid and Renewable Energy, 2013(4):378-390. |
[5] | 裘莹,李士宁,吴雯,等. 通用无线传感器网络节点平台设计 [J].计算机工程与应用,2012,48(23):90-94. |
[6] | 康超,谢红.基于流量自适应的S-MAC协议的优化[J].应用科技,2011,6:281-285. |
[7] | 陈拥军,徐罡,周兴付. 无线传感器网络最少数量通信节点定位方法[J].计算机工程与应用,2014,50(5):55-59. |
[8] | 陆智.OPNET在无线网络中的应用研究[D].上海:复旦大学,2010:8-36. |
[9] | 段威,任华,柳海峰.基于OPNET的通信网络半实物仿真方法研究[J].计算机仿真,2007,24(11):138-143. |
[10] | 程海青,王华,王华奎,等.无线传感器网络质心定位算法的OPNET仿真实现[J].暨南大学学报,2011,32(3):281-285. |