基于CNN-BiLSTM的室内WiFi指纹定位方法研究
摘要:随着室内定位需求的增长,WiFi 指纹定位因成本低、部署简单而被广泛应用。然而 RSSI 易受多径、遮挡和噪声影响,传统方法定位精度有限。针对这一问题,本研究提出一种融合 双重滤波与 CNN-BiLSTM 网络 的室内 WiFi 指纹定位方法。
作者:Bob(自研改进)
环境配置
开发工具:Matlab R2020b、R2025b
操作系统:Windows 11
硬件配置

表1 惠普(HP)暗影精灵10台式整机配置
该系统硬件配置如上,如果您的电脑配置低于下述规格,运行速度可能会与本系统的存在差异,请注意。
项目概述
随着智能终端的普及以及室内定位需求的持续增长,WiFi 指纹定位技术因其成本低、部署简便等优点受到广泛关注。然而,RSSI 信号易受多径传播、遮挡物体及环境噪声等因素影响,导致传统指纹定位方法在复杂场景下难以获得稳定的定位精度。为提升 RSSI 指纹的可用性和定位预测的准确性,本文提出一种融合双重滤波与 CNN-BiLSTM 网络的室内 WiFi 指纹定位方法。
本研究在12m×8m 的室内区域内构建指纹采集场景,基于对数距离路径损耗模型并叠加高斯噪声生成四路 RSSI 时间序列。结合高斯滤波与卡尔曼滤波构成的双重滤波器用于抑制 RSSI 测量中的随机波动,并保持其时序特性,从而构建高质量指纹数据库。滤波后的 RSSI 序列被输入至深度学习模型,以增强模型训练的稳定性。
在模型设计方面,采用 CNN-BiLSTM 混合结构,CNN 负责提取 RSSI 序列的局部空间特征,BiLSTM 用于捕获信号的双向时序依赖关系,实现 RSSI 指纹到二维坐标的非线性映射。模型在 Matlab 平台完成训练,并支持导出 ONNX 格式以便于跨平台部署。
实验评估包括最小二乘法、三点质心定位、CNN 定位和 CNN-BiLSTM 定位四种方法的性能对比。结果显示,CNN-BiLSTM 在平均误差、均方根误差(RMS)和定位稳定性方面均表现优异,平均定位误差约为 0.2–0.5 m。方形轨迹实验进一步验证了该方法在动态定位场景中的鲁棒性和应用潜力。
本文提出的双重滤波融合 CNN-BiLSTM 的 WiFi 指纹定位方法在复杂室内环境下具有较高精度与抗噪能力,为智能室内定位系统的实现提供了有效方案。
系统设计
本系统围绕 WiFi 指纹定位流程构建整体架构,包括 RSSI 采集与预处理、指纹数据库构建、深度学习模型训练和在线定位推断四个部分。系统利用路径损耗模型生成 RSSI 指纹,并通过高斯滤波与卡尔曼滤波的双重滤波器提升数据质量;采用 CNN-BiLSTM 网络提取 RSSI 的空间与时序特征,实现位置坐标的回归预测;通过多算法对比验证模型的准确性与鲁棒性,完成室内 WiFi 指纹定位系统的设计。

图1 系统整体流程图
运行展示
1.运行main_offline.m – 生成离线指纹库(必需)
离线阶段利用路径损耗模型生成采样点的 RSSI 指纹,并通过高斯滤波与卡尔曼滤波构成的双重滤波器对 RSSI 序列去噪和平滑,以提高数据稳定性。随后将滤波后的 RSSI 指纹与真实坐标构建指纹数据库,保存为 offlineData.mat,用于后续深度学习模型训练(已有该文件时可直接跳过此步骤)。

图2 CNN 网络训练过程中 RMSE 与损失变化(MATLAB 训练界面)

图3 CNN 离线训练过程中 RMSE 的迭代变化曲线

图4 CNN 模型横坐标预测值与真实值对比散点图

图5 CNN 模型纵坐标预测值与真实值对比散点图

图6 CNN 模型在各测试点的预测误差序列

图7 室内场景中采样点与锚节点的平面分布
![]()
图8 CNN-BiLSTM 模型预测误差的平均值显示
2.运行cnn_bilstm.m —— 训练 CNN-BiLSTM 模型(必需)
模型训练阶段加载 offlineData.mat 中的滤波 RSSI 指纹数据,构建 CNN-BiLSTM 深度网络并进行训练,最终生成训练好的定位模型 CNN-Bilstm-net.mat,并可导出 ONNX 格式(CNN-Bilstm-net.onnx)用于跨平台部署。如仅需训练 CNN 模型,可直接使用 main_offline.m 中提供的 CNN 结构生成 CNNnet.mat。

图9 CNN-BiLSTM 模型离线训练过程中的 RMSE 曲线

图10 CNN-BiLSTM 模型横坐标预测结果与真实值对比

图11 CNN-BiLSTM 模型纵坐标预测结果与真实值对比

图12 CNN-BiLSTM 在所有测试点上的预测误差序列

图13 CNN-BiLSTM 模型训练过程中 RMSE 与损失的变化情况
![]()
图14 CNN-BiLSTM 模型平均预测误差
3.运行main_online.m – 在线定位精度对比(必需)
在线定位阶段调用 getRSSI(含 noisegen)生成实时 RSSI 序列,并经 dual_filter(含 Gaussianfilter)完成预处理;随后分别采用最小二乘法(TOALLOP)、三点定位法(Triangle)、CNN 模型(CNNnet.mat)和 CNN-BiLSTM 模型(CNN-Bilstm-net.mat)进行位置估计。系统最终输出四种算法的定位误差对比结果,并生成误差曲线、CDF 图以及定位散点图,用于全面评估各算法的定位性能。

图15 各定位方法在测试点上的距离误差曲线

图16 各定位方法的误差累积分布函数(CDF)对比

图17 不同定位方法的平面定位结果散点图

图18 各定位方法平均误差的柱状对比图

图19 随机 20 个点的定位预测结果对比

图20 各定位方法的统计性能指标
4.运行move_localization.m – 运动轨迹定位(可选)
轨迹跟踪实验中,系统先构建方形或任意运动轨迹,将其离散点作为真实路径;为每个轨迹点生成 RSSI 序列并进行双重滤波,以获得平滑指纹数据;再将滤波后的 RSSI 输入 CNN-BiLSTM 模型完成位置估计,并通过真实轨迹与预测轨迹的对比评估其在动态场景下的跟踪精度。

图20 基于CNN-BiLSTM算法的运动轨迹定位结果
