基于Hadoop云平台的矿井指纹定位算法
2023-10-19韩继英李芳丽朱元凯
韩继英 李芳丽 朱元凯
(1.山西职业技术学院计算机工程系,山西 太原 030006;2.马来西亚林肯大学工程学院,雪兰莪州 八打灵再也 47301;3.泰山职业技术学院信息技术工程系,山东 泰安 271001)
随着互联网和信息技术的快速发展,大数据技术逐渐成为矿井行业信息化建设的重要组成部分。矿井定位技术作为矿井生产管理中的重要手段,其准确性和实时性对于保障矿井生产安全具有至关重要的作用。随着矿井深度增加和矿井规模扩大,传统的矿井定位技术已经无法满足矿井生产管理需求[1]。因此,如何利用先进的技术手段提高矿井定位的准确性和实时性已成为亟须解决的问题。
指纹定位技术是一种基于信号指纹的定位技术[2],该技术通过采集环境中的信号指纹,如Wi-Fi信号强度、蓝牙信号强度、地磁传感器等[3],将这些指纹与已知的指纹库进行匹配,从而确定当前位置。相比于其他定位技术,指纹定位技术具有定位精度高、适用范围广、无需额外设备等优点,已被广泛应用于室内定位、物联网、智能交通等领域[4]。近年来,随着矿井指纹定位技术日趋成熟,利用矿井指纹定位已成为矿井生产管理的重要手段,其准确性和实时性对于保障矿井生产安全具有至关重要的作用。然而,传统的矿井定位技术已经无法满足矿井生产管理需求。随着矿井深度增加和矿井规模扩大,矿井环境的复杂性也越来越高,这导致传统的定位技术在精度和实时性上存在着很大的限制[5-6]。其次,矿井信号会受到多种因素干扰,如多径效应、障碍物遮挡等,从而导致采集的信号指纹存在一定的误差,并且指纹库的建立和维护也是一个难点,因为矿井内的信号会随着时间和环境的变化而发生变化,因此需要不断地更新和维护指纹库。此外,矿井内存在大量的节点和数据,需要进行大规模的计算和处理。
矿井指纹定位技术的研究起源于2003年[7],自此之后,矿井指纹定位技术逐渐发展壮大,并在矿山得到了广泛应用。矿井指纹定位技术的研究主要涉及信号采集、指纹提取和定位算法[8-9]3 个方面。信号采集是实现矿井指纹定位的第一步,采集的信号将用于指纹提取和定位算法。矿井指纹定位技术采集信号的方式主要包括:① 采用无线传感网络,将各个节点采集的信号上传到中心服务器;② 采用激光扫描等技术,将矿井内的地形、岩层等信息转化为信号指纹。其中,指纹提取是矿井指纹定位技术的关键步骤,主要涉及特征提取和指纹库建立。特征提取是将采集的信号转化为能够用于定位的特征向量的过程,常用的特征提取算法包括主成分分析、小波变换等[10-12]。然而在实践中,指纹定位技术的应用受到了多种因素限制。首先,矿井环境复杂多变,存在大量的噪声和干扰信号,这会影响指纹定位的准确性和可靠性。其次,矿井的地形地貌复杂,导致信号传输路径复杂,难以建立准确的指纹库。此外,传统的指纹定位算法通常需要大量的计算资源和存储资源,难以满足矿井定位实时性的要求。
为此,本研究提出一种基于Hadoop云平台的矿井指纹定位算法,旨在提高矿井定位的准确性和实时性。Hadoop 是一种开源的分布式计算平台,具有高可靠性、高可扩展性、高性能等优点,已被广泛应用于大数据处理领域。本研究将采集的矿井信号指纹存储在Hadoop 分布式文件系统中,并使用MapReduce计算模型进行指纹匹配和位置识别,从而实现矿井指纹定位的高效实时计算。
1 矿井指纹定位算法
1.1 基本思路
随着矿井深度增加和规模扩大,矿井安全监测和管理成为重要的研究领域。矿井指纹定位是其中的一项关键技术,能够在矿井中快速、准确地定位移动目标,提高矿井生产的安全性和效率。本研究基于Hadoop云平台,提出了一种矿井指纹定位算法,通过数据预处理、指纹特征提取、指纹匹配和定位结果输出4 个步骤,实现了对矿井指纹的提取和定位。矿井指纹定位流程如图1所示。
图1 矿井指纹定位流程Fig.1 Flow of mine fingerprint localization
1.2 数据预处理
矿井信号预处理是指在指纹提取前对矿井中多基站信号源进行预处理,旨在提高指纹特征的可靠性和区分度。通常采用均值滤波、中值滤波、小波去噪、信噪比增强等方法进行预处理[13]。此处,数据预处理仅对原始数据进行清洗和压缩。其中,数据清洗包括去噪和异常值处理两个过程,数据压缩采用Lempel-Ziv-Welch(LZW)算法[14]实现,具体实现方法分析如下。
1.2.1 数据清洗
以均值滤波为例,假设数据序列为{x1,x2,…,xn} ,窗口大小为k(k 式中,i,j 在异常值处理过程中,可以采用基于统计学方法或基于模型的方法。以基于统计学方法中的3σ原则为例,假设数据序列为{x1,x2,…,xn} ,则首先计算出均值μ和标准差σ,然后将大于μ +3σ或小于μ-3σ的值视为异常值,并进行替换或删除处理。 1.2.2 数据压缩 Lempel-Ziv-Welch(LZW)算法是一种常用的无损数据压缩算法。该算法采用字典编码方法进行压缩[15],将输入的数据序列映射为一系列短代码,从而减小数据规模。具体实现步骤如下: (1)初始化字典,将所有单个字符作为初始字典项。 (2)扫描输入序列,将序列中的字符序列逐步加入字典中,同时输出其对应的编码序列。 (3)如果加入新的字符序列后,字典已满,则删除最旧的字典项,以腾出空间。 (4)重复步骤(2)、步骤(3),直到输入序列全部扫描完毕。 离散小波变换是指将矿井多基站信号分解成多个频带,以便去除噪声和冗余信息,提取出具有代表性的指纹特征向量[16]。本研究通过小波变换处理,将矿井多基站信号分解成不同尺度的频带,在保留信号细节信息的同时进行信号分解;然后通过对各个频带系数的阈值处理和重构,得到具有代表性的指纹特征向量。 在离散小波变换的基础上,通过对各个尺度的频带系数进行分析和处理,提取出具有代表性的矿井指纹特征。具体来说,通过对高频子带系数的处理,可以提取出矿井边缘、纹理等细节特征;然后,对低频子带系数进行处理,可以提取出矿井的整体特征;最后,将这些特征组合起来,形成矿井指纹特征向量。离散小波变换的矿井指纹特征提取伪代码见表1。 表1 基于离散小波变换的矿井指纹特征提取算法伪代码Table 1 Pseudo-code of mine fingerprint feature extraction algorithm based on discrete wavelet transform 对于每个需要定位的矿工或移动设备,将指纹信号分为若干个子信号区域,并计算每个区域的相关系数矩阵。公式为 式中,Rxy为相关系数,xi和yi分别为两个向量中的第i个元素;和分别为两个向量的均值;n表示向量的长度。 将这些相关系数矩阵与之前采集的指纹信号库中的所有指纹进行比对,计算两者之间的相似度。此处,选择与输入指纹信号相似度最高的前k个指纹信号,作为最终匹配结果。指纹匹配流程伪代码见表2。 基于上述指纹匹配结果,利用多普勒效应和信号衰减等原理,对每个节点的位置进行估计。本研究利用最小二乘法计算节点位置[17],得到每个节点在矿井中的坐标。在此基础上,将上述矿井指纹定位算法嵌入基于Hadoop 的云平台系统上。Hadoop 的核心组件包括HDFS(Hadoop 分布式文件系统)和MapReduce[18]。HDFS 是一个分布式文件系统,用于存储大规模数据。MapReduce 是一种分布式计算模型,用于在Hadoop 上处理大规模数据[19]。此外,Hadoop 还包括其他组件,如YARN(Hadoop 资源管理器)和HBase(分布式列式数据库)等[20]。本研究基于Hadoop云平台的矿井指纹定位模型部署结构如图2所示。 图2 Hadoop云平台矿井指纹定位模型部署结构Fig.2 Deployment structure of mine fingerprint positioning model of Hadoop cloud platform 总体来说,通过Hadoop云平台进行分布式计算可以提高计算效率,降低计算复杂度,并且可以对大规模数据进行处理。同时,Hadoop 还具备良好的容错性和可扩展性,可以适应不同规模的数据处理需求。 试验硬件环境:CPU,Intel(R)Xeon(R)Gold 6130 CPU@2.10 GHz;内存选择256GB DDR4-2666 ECC RDIMM;网络环境为以太网千兆交换机。试验软件环境:采用操作系统为CentOS Linux release 7.6.1810(Core)的PC 机,Hadoop 版本为Apache Hadoop 3.1.2;开发语言为Java 版本,OpenJDK Runtime Environment(build 1.8.0_212-b04)。 本研究提出的基于Hadoop云平台的矿井指纹定位算法运行流程如下: (1)数据采集。在井下部署4 个相差8 m 的无线路由器,并将其作为信号发射基站的数据采集源,本地选择PC 机作为信号接收源,每组采集50 组数据,共采集5 组,共包含250 组数据。 (2)数据传输。将采集的数据通过网络传输至Hadoop云平台上的数据节点,存储为文本文件格式。 (3)数据预处理。对采集的数据进行清洗、去重、过滤等预处理操作,以保证数据质量和准确性。 (4)数据分析和特征提取。利用MapReduce 编程模型对预处理后的数据进行分析和特征提取操作,提取出与工人位置相关的特征信息。 (5)建立指纹库。根据特征提取结果,建立矿井指纹库,包含每个位置的特征向量。 (6)定位算法实现。根据工人在矿井内部采集的数据,利用指纹匹配算法在指纹库中寻找最佳匹配项,从而确定其当前位置。 (7)结果输出和可视化。将定位结果输出到文件或数据库中,并通过可视化方式呈现给用户,便于用户掌握工人的位置信息。详细流程如图3所示。 图3 矿井指纹定位算法运行流程Fig.3 Operation flow of mine fingerprint location algorithm 以国内某煤矿为例,在井下进行离线采样和实时定位信息采集,并与多组仿真试验结果进行对比分析。在不同位置上收集RSS(Recombination signal sequence)信号数据,并记录位置信息,信号采样分布如图4所示。在此基础上,通过预处理和特征提取等步骤,建立指纹库。最后进行实时定位信息采集,将采集到的信号数据与指纹库进行匹配,并输出位置信息。 图4 矿井指纹信号分布Fig.4 Distribution of mine fingerprint signal 为验证所提算法的有效性,分别选择高斯滤波、卡尔曼滤波指纹定位算法与本研究算法进行性能对比,结果见表3。3 种算法的定位误差曲线如图5所示。 表3 3 种算法定位性能对比Table 3 Comparison of the localization performance of three algorithmsm 图5 3 种算法的定位误差曲线Fig.5 Localization error curves of three algorithms 由表3 可知:本研究所提算法具有较高的定位精度和稳定性,可以满足实际应用需求,但因各种因素(如噪声、干扰等)影响,真实位置与模型计算位置之间仍然存在部分偏差。相比当前主流的定位算法高斯滤波和卡尔曼滤波指纹定位算法,所提模型的综合性能优势明显,此外图5 给出的位置偏差曲线再一次验证了所提算法的有效性和稳定性。 本研究算法与高斯滤波、卡尔曼滤波指纹定位算法的耗时对比如图6所示。由图6 可知:本研究算法耗时相对于其余两类算法而言有一定的优势,将其部署于Hadoop云平台上有助于提升数据采集与传输的时效性。 图6 3 种算法耗时对比Fig.6 Comparison of time-consuming of three methods (1)提出了一种基于Hadoop云平台的矿井指纹定位算法,通过将多基站源信号分解为若干个子信号区域,逐区域计算待测信号源与特征集之间的相关性。并借助Hadoop云平台的高性能和可扩展性,结合指纹识别技术实现了在矿井环境下的准确定位。通过与当前主流的指纹定位算法相比,所提算法在定位精度和实时性上均具有一定的优势。 (2)后续工作中,可以进一步优化算法的计算效率和减少误差;同时,将算法与更多实际应用场景相结合,如智能采矿和安全管理等方面。基于Hadoop云平台的矿井指纹定位算法为解决矿井定位问题提供了一种新思路。1.3 指纹特征提取
1.4 指纹匹配
1.5 基于Hadoop云平台的矿井指纹定位
2 试验分析
2.1 试验环境
2.2 试验算法描述
2.3 性能比较
3 结论