曹守启, 王云腾垚, 张 铮
(上海海洋大学 工程学院,上海 201306)
近年来,随着发达国家和发展中国家都认识到物联网(IoT)的重要性和潜力,并提出了发展物联网技术的国家战略,物联网技术迅速发展[1]。以物联网为基础的智慧化农业的研究和应用越来越广泛[2~4]。智慧农业中除了信息采集、信息传输以外,还有大量器具的监测、管理的需求。因此,获得高精度的位置信息已成为智慧农业的研究热点之一。
物联网定位技术往往是和物联网通信技术结合在一起的。目前多种无线通信技术运用于智慧农业物联网,如基于窄带物联网(narrow band Internet of Things,NB-IoT)的智能农业辅助控制系统[2],基于ZigBee的智能农业温室大棚控制系统设计[3]。然而,NB-IoT需要在蜂窝授权频谱上工作,所以需要定时进行网络同步,会消耗相应的电量。ZigBee技术传输距离短、覆盖范围小[4]。LoRa是由Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输技术,具有传输距离远、抗干扰性强等特点。目前广泛采用的基于指纹的定位算法主要分为2种类型:
1)确定性指纹定位算法:通常将RSSI的平均值存储为参考点的一个特征。利用在线信号和数据库指纹之间的相似性来估计用户的位置。Shin B等人发现加权K最近邻(weighted K-nearest neighbour,WKNN) 算法可以通过调整数量来减少误差[5]。Abdou A S等人将支持向量机(support vector machine,SVM)与聚类回归定位算法相结合[6],对指纹数据进行分析,通过聚类和SVM建立数据库与指纹之间的内在关系,然而,当接收信号强度指示(received signal strength indication,RSSI)向量维数较大时,SVM算法会显著增加时间复杂度。
2)概率型指纹定位算法:记录并存储每个参考点的RSSI分布,利用概率分布信息进行估计。如贝叶斯网络[7],高斯处理[8]。许多概率算法,包括高斯分布过程,给出了预测值的置信区间,但没有达到理想的定位精度。
对于智慧农业,掌握各个节点的位置对监控和有效管理具有重要意义,尤其是在大面积农业环境的应用中。因此,本文研究提出了一种基于LoRa网络的低成本改进指纹地图定位方法,来确定农业环境内各个物联网节点的坐标。由于室外环境的多样性、复杂性,在定位过程中,LoRa网关采样到的RSSI值通常会受到噪声、散射、信号反射、干扰等多种因素的影响[9]。本文研究提出的改进指纹地图定位算法,该方法结合了粒子群优化(particle swarm optimization,PSO)—人工神经网络(artificial neural network,ANN)指纹地图定位算法(fingerprint map localization algorithm,FMLA)三种方法,亦即PSO-ANN-FMLA。首先,通过ANN算法获得最佳的RSSI值,利用PSO算法优化ANN算法的隐含层的神经元数量和学习速率。然后,FMLA利用最佳RSSI值进行定位,实现了高精度定位。
系统架构如图1所示,LoRa终端节点与LoRa网关构成星型拓扑结构,且终端节点和网关均集成LoRa射频模块和STM32L053单片机。LoRa终端节点发送数据包给网关,LoRa网关测量数据包的RSSI值,根据采样的RSSI值,网络服务器利用改进指纹地图定位算法进行定位。
图1 系统架构示意
通常,寻找一个复杂问题的最优解需要大量的计算。而ANN可以利用计算机的高速计算能力快速找到最优解[10]。因此,ANN是选择最优RSSI样本的一种很好的方法。本文将LoRa网关采样到的RSSI值作为ANN算法的输入,最优RSSI值作为输出。ANN模型如图2所示。
图2 ANN模型
ANN算法的输入如式(1)所示,输出如式(2)所示
Input=[RSSI1RSSI2… RSSIk]
(1)
Output=[RSSIi]
(2)
式中k为RSSI样本个数;RSSIk为LoRa网关采样到的第k个RSSI样本,RSSIi为k个样本中输出的第i个最优RSSI样本。
PSO算法是一种基于鸟类社会行为的迭代搜索算法,广泛应用于求解优化问题[11]。本文为了避免ANN算法陷入局部最优解,选用PSO算法来优化ANN算法的神经元数量和学习速率。
在PSO算法中,对空间中的所有粒子分配一个初始随机位置和初始随机速度。根据每个粒子的速度,已知空间中的全局最优位置,已知粒子的最优位置,依次推进每个粒子的位置。随着计算的进行,粒子通过探索和利用空间中已知的有利位置聚集在一个或多个最佳点周围。
在搜索过程中,使用式(3)、式(4) 更新每个粒子的位置和速度。为了提高算法的收敛速度,引入了权重因子w
Vid(k+1)=wVid(k)+c1r1(k)(Xpbestid-Xid)+
c2r2(k)(Xgbestid-Xid)
(3)
Xid(k+1)=Xid(k)+Vid(k+1)
(4)
式中Vid为粒子的速度;Xid为粒子的位置;r1(k)和r2(k)为分布在0~1之间的两个随机数;k为迭代次数;c1和c2为转换因子,二者相等;Xpbestid为每个粒子的最佳位置;Xgbestid为所有粒子的最佳位置;w为权重因子。
基于LoRa信号的指纹地图定位算法分为两个阶段:在线阶段和离线阶段。1)在离线阶段:部署区域的LoRa网关对RSSI值进行采样。ANN算法对一组RSSI样本进行处理,将最优的RSSI样本和实际坐标存储在数据库中,生成离线指纹地图,存储在数据库中。由于数据库无法获得整个部署区域的RSSI,并且测量整个部署区域的RSSI值成本过高且不必要。本文采用径向基函数(radial basis function,RBF)算法进行插值,RBF算法可以通过线性组合逼近某一点的未知值[12]。2)在线阶段:LoRa终端设备在任意位置向LoRa网关发送数据包,LoRa网关采样到一组RSSI样本,ANN算法选择出最优的RSSI样本,FMLA利用最优RSSI样本估计终端设备位置。图3为改进指纹地图定位算法的离线阶段和在线阶段。
图3 改进指纹地图定位算法的离线阶段和在线阶段
FMLA基于贝叶斯理论,估计终端节点位于各区域的概率[13]。设部署区域定义X1~Xn,Xi∈X,定义Xi为坐标(xi,yi),s向量为n个网关采样到的RSSI值,s={(RSSI1),(RSSI2),…,(RSSIn)},RSSIn表示第n个网关采样的RSSI值。每个位置Xi都有一个向量s,使用RBF算法对没有采样值的区域进行插值。在线阶段,n个网关采样到RSSI值构成向量s*,根据向量s*,本文的目标是找出概率最大的区域,即求出argmaxp(Xi|s*)。根据贝叶斯公式,可以得到后验概率式(5)
(5)
式中p(Xi)为位置的先验分布,p(s*)为信号强度分布,与位置无关。并且由于这里设置统一先验分布,所以,在贝叶斯公式中可以忽视分母P(s*)和先验分布p(Xi),因此,需要比较p(s*|Xi)。
采用极大似然估计方法来估计终端设备的位置,p(s*|Xi)为似然函数(6)、式(7)中估计得到的位置为似然函数最大值时的位置
(6)
(7)
式(6)根据极大似然估计,可以忽视分母。F(s*,Xi)由所有网关的概率总和得到式(8)
(8)
条件概率P(s*|Xi)为网关gwj在位置Xi测量到RSSI值的概率,这个概率通过比较s*与数据中的s得到。
本文采用自主研发的4个LoRa物联网网关与5个终端节点,进行LoRa PSO-ANN-FMLA的实验验证。网关和终端节点都集成STM32L053单片机,LoRa射频模块采用SX1278芯片。PSO-ANN-FMLA和通信协议采用C语言,采用Semtech公司提供的SX1278驱动程序Firmware Drivers V2.1.0,在STM32L053平台上编程实现。
实验在户外湖边进行,部署区域为300 m×300 m。部署区域的4个角上分别放置4只LoRa网关,其部署如图4所示。
图4 4个网关部署
在实验中,LoRa终端装置和LoRa网关均采用全向天线,将LoRa扩频因子固定为9,单片机选用为STM32L053。在离线阶段,对一些实验区域的RSSI值进行采样,建立指纹库,并使用RBF算法对没有RSSI值的区域进行插值。
在线阶段,使用LoRa端设备将上行数据包发送到LoRa网关。网关对数据包的RSSI值进行采样,然后将它们与网关ID一起发送到定位服务器,定位服务器使用PSO-ANN-FMLA获得终端设备的位置。
在提出的PSO-ANN-FMLA中,将网关测量的RSSI值作为ANN算法的输入,得到最优的RSSI样本,即ANN算法的输出。利用PSO算法对神经网络的最优神经元数和最优学习率两个参数进行了优化。在改进指纹地图定位算法中,对4个网关分配相同的权重因子。
本文使用3种不同的算法来比较定位精度误差。分别为FMLA,即传统指纹地图定位算法;ANN-FMLA,即指纹地图定位算法利用ANN算法输出的最佳RSSI值进行定位;PSO-ANN-FMLA,即ANN算法取得获得最佳的RSSI值,PSO算法优化ANN算法的隐含层的神经元数量和学习速率,指纹地图定位算法利用最佳RSSI值进行定位。
在实验中,选择了24个点作为测试数据集,并计算了每种算法的误差。以实际坐标与估计坐标之间的欧氏距离作为定位误差的评价标准
(9)
图5 3种算法的24节点定位误差比较
在测试数据集中,比较了测试数据FMLA、ANN-FMLA、PSO-ANN-FMLA的最大误差分别为24.33,19.41,9.11 m,和FMLA、ANN-FMLA、PSO-ANN-FMLA的最小误差分别为6.96,6.55,3.25 m;FMLA、ANN-FMLA、PSO-ANN-FMLA的平均误差分别为15.47,13.32,6.21 m。
与FMLA和ANN-FMLA相比,本文提出的PSO-ANN-FMLA的平均定位精度分别提高了59.86 %和53.38 %,所有待定节点的定位误差基本在10 m之内,平均误差仅为6.21 m。
图6为FMLA、ANN-FMLA和PSO-ANN-FMLA的累积分布函数CDF。从图6可以看出,提出的PSO-ANN-FMLA小于6.86 m的定位误差概率为80 %,FMLA和ANN-FMLA的定位误差概率分别为16.98 m和14.67 m。由试验结果可知,采用本文提出的PSO-ANN-FMLA可以有效地提高定位精度。
图6 3种算法的误差累积分布函数
本文研究针对传统FMLA中RSSI易受波动干扰的劣势,在不增加设备成本的前提下,提出了基于LoRa网络的PSO-ANN-FMLA。通过户外现场试验验证了本文方案的有效性与可靠性。实验部署的5个终端节点,在采用PSO-ANN-FMLA后,相对传统FMLA,所提出的PSO-ANN-FMLA平均定位精度由15.47 m提高到6.21 m,平均定位精度分别提高了59.86 %和53.38 %。相对GPS定位,实现了更低功耗的户外物联网节点定位,适宜在大面积农业物联网中推广使用。