基于RSSI信号强度与WIFI指纹法的室内定位系统仿真
项目介绍
本项目是一个基于MATLAB开发的室内定位仿真系统。针对室内环境下卫星导航信号(GPS)受阻的问题,系统利用现有的WIFI基础设施,通过接收信号强度(RSSI)来实现移动终端的精确跨维定位。系统完整模拟了从底层物理信号传播到上层定位算法实现的全过程,并提供了两种主流技术路径的对比分析:基于指纹匹配的经验模型法(WKNN)与基于传播模型的几何定位法(最小二乘法)。
功能特性
- 离线指纹库构建:支持自动化网格化采样,通过模拟信号衰减模型建立坐标与RSSI信号特征的映射数据库。
- 信号降噪处理:内置高斯滤波器,能够有效剔除由环境多径效应和遮挡产生的脉冲噪声。
- 动态轨迹模拟:系统生成预设的圆形运动轨迹,用于实时验证定位算法的分辨率与追踪精度。
- 双算法并行定位:同时运行改进的加权K近邻算法(WKNN)与基于对数路径损耗模型的最小二乘法(LS),提供多维度的定位结果。
- 全方位可视化评估:自动生成实时轨迹追踪对比图及累计误差分布概率(CDF)曲线,直观展现系统性能指标。
系统要求
- 软件环境:MATLAB R2016b 及以上版本。
- 必备工具箱:Statistics and Machine Learning Toolbox(用于高斯分布模拟及CDF计算)。
- 硬件要求:标准PC即可运行,建议内存4GB以上。
系统实现逻辑
系统运行流程严格遵循室内定位的标准生命周期,主要分为以下四个阶段:
第一阶段:参数初始化与信号建模。系统设定一个50m x 50m的监测区域,布置5个固定坐标的无线接入点(AP)。信号衰减遵循对数路径损耗模型,设置参考距离功率、路径损耗指数及高斯噪声标准差,以模拟真实的室内电磁环境。
第二阶段:离线训练与指纹库建立。系统以2米为步进对区域进行网格化扫描。在每个采样点,系统进行多次RSSI数据采集。为了提高指纹的健壮性,系统调用高斯滤波逻辑,计算样本均值与标准差,保留高概率区间内的信号值,构建高维指纹特征向量。
第三阶段:在线实时定位。系统模拟一个终端沿圆形轨迹运动,在每个采样时刻获取包含随机噪声的实时RSSI向量。随后,系统并行启动两种定位引擎。指纹定位引擎通过计算当前信号与指纹库的欧氏距离寻找匹配项;几何定位引擎则先将信号强度转化为估计物理距离。
第四阶段:误差计算与数据可视化。系统将定位结果与预设的真实路径进行逐点对比,计算欧氏误差,并求解均方根误差(RMSE)。最后,通过MATLAB绘图模块输出轨迹还原效果图和误差分布图。
关键算法与函数解析
- 信号传播模型:
系统利用对数路径损耗模型公式将物理距离映射为RSSI信号强度。通过引入正态分布的随机噪声,模拟了室内环境中的随机干扰,为算法验证提供了真实的测试背景。
- 高斯滤波算法(Gaussian Filter):
该函数用于优化指纹质量。它通过计算采样点RSSI序列的统计特性,选取处于[均值 - 0.625*标准差, 均值 + 0.625*标准差]区间内的数据进行二次均值计算。这种方法能有效滤除环境突变导致的异常RSSI波动,确保指纹数据库的稳定性。
- 加权K近邻算法(WKNN):
这是指纹匹配阶段的核心函数。系统在信号空间内计算当前RSSI向量与指纹库中所有样本的欧式距离。选取距离最近的4个参考点,并根据距离的倒数分配权重,通过加权平均估算最终坐标。这种改进方法比传统的KNN更具有抗扰能力,定位结果更贴近真实物理位置。
- 最小二乘三边测量定位(Least Squares):
该函数负责实现基于物理模型的几何定位。首先根据传播模型逆推AP到终端的估计距离。由于测距存在误差,三边测量无法交于一点,系统通过线性化处理将非线性圆方程组转化为A*X=B的线性形式,并利用最小二乘法求解出误差平方和最小的坐标点。
- 性能评估指标:
系统使用均方根误差(RMSE)作为核心精度评估指标。通过ecdf函数计算并绘制累计分布概率曲线,用户可以直观地观察到不同误差区间内定位点所占的比例,从而评估算法在极端环境下的可靠性。
使用方法
- 打开MATLAB软件,将工作目录切换至本项目代码所在文件夹。
- 在命令行窗口输入主程序名称并回车。
- 系统将自动执行离线训练逻辑(命令行会实时提示指纹库建立进度)。
- 仿真结束后,系统会自动弹出两张分析图表:一张展示真实轨迹与两种算法估算轨迹的对比,另一张展示误差分布情况。
- 命令行窗口将打印出两种定位算法最终的RMSE误差分析报告。