WiFi定位方法分为两大类:不基于RSSI和基于RSSI。其中不基于RSSI的方法包括TOA(到达时间)、TDOA(到达时间差)和AOA(到达角度)等技术。不过这类方法需要特殊的WiFi模块支持,而智能手机无法直接获取相关参数,因此实际中无法应用。
基于RSSI的定位是目前最可行的方案。智能手机通过系统SDK可以获取周围AP的信号强度(RSSI)和AP地址,利用这些数据进行定位。该方案主要包含三角定位算法和指纹算法两种技术路径。
三角定位算法需要预先知道AP的位置信息。具体原理是:通过信号衰减模型估算设备与各AP的距离,以每个AP为圆心画圆,圆的交点即为设备位置。但这种方法对AP位置变化敏感,不适合环境频繁变动的场景。
指纹算法分为两个阶段:首先是离线训练阶段,需要将定位区域划分为1-2米间距的网格,逐个采样点记录位置、RSSI和AP地址,并对数据进行滤波和均值处理。其次是在线定位阶段,用户实时上传当前RSSI和AP信息到服务器,通过NN、KNN或神经网络等匹配算法确定位置。
从精度来看,指纹算法优于三角定位算法。前者需要提前绘制信号地图,后者则依赖已知AP位置。在实际应用中,智能手机更适合采用指纹算法,因为其无需预存AP位置,且能适应AP状态或位置变化。只需更新服务器端的指纹数据库即可应对环境变化,客户端无需调整。