目前,随着国内外相关从业人员的研究,研究者们提出了众多室内定位技术的理论与方法。在此仅讨论基于 Wi-Fi 的室内定位技术。
WI-FI室内定位
近年来Wi-Fi技术飞速发展,城市中的公共场所如大型超市商场、学校、企业等都已经广泛部署Wi-Fi。Wi-Fi室内定位技术已经出现了很多具有代表性的研究成果,如RADAR系统、Nibble系统、Weyes系统等室内定位系统。2012年,Google把Wi-Fi室内定位和室内地图引入了谷歌地图中,一年内已经覆盖了北美和欧洲一万大家大型场馆。我国的百度、高德、四维、智慧图等公司也在研发Wi-Fi室内定位产品。由于Wi-Fi网络的普及,Wi-Fi定位是目前比较流行的定位技术,定位精度能达到米级,定位成本低,定位信号收发范围大,适用性强,可以被普及推广。
采用基于 Wi-Fi 的室内定位方案,首先获取指定室内的结构图,然后在该结构图上进行打指纹 AP 点。什么是指纹 AP 点?
【位置指纹法】:“位置指纹”把实际环境中的位置和某种“指纹”联系起来,一个位置对应一个独特的指纹。这个指纹可以是单维或多维的,比如待定位设备在接收或是发送信息,那么指纹可以是这个信息或信号的一个特征或多个特征(最常见的是信号强度)。如果待定位设备是在发送信号,有一些固定的接收设备感知贷定位设备的信号或信息然后根据这些检测到的特征来估计自身的位置,这种方式可称远程定位或者网络定位。如果是待定位设备接受一些固定的发送设备的信号或信息,然后根据这些检测到的特征来估计自身的位置,这种被称为自身定位。待定位移动设备也许会把它检测到的特征传达给网络中的服务器节点,服务器可以利用它所获得的所有信息来估计移动设备的位置,这种方式也成为混合定位,在所有的这些方式中,都需要把感知到的信号特征拿去匹配一个数据库中的信号特征,这个过程可以看作一个模式识别的问题。——选自《室内定位系列(一)——Wi-Fi位置指纹(译)》
更多关于 Wi-Fi 位置指纹的内容可参考 室内定位系列(一)——Wi-Fi位置指纹(译)
微信小程序有专门获取 Wi-Fi 列表的 API,因此可以将 RSS(接收信号强度)来作为指纹 AP 的特征。RSS 不受信号带宽的影响,没必要高的带宽,是一个很受欢迎的信号特征。
有了指纹 AP 点以及位置指纹法的概念,室内定位问题实际上就转换为一个多分类问题。服务方事先在室内结构图上确定 N 个指纹 AP 点,然后分别在这 N 个指纹 AP 点上采集 Wi-FI 的 RSS 数据。接着运用机器学习的方式训练,获得一个用以预测分类的模型。最终,模型可以通过接受客户发送当前位置的 RSS 数据,来判断用户当前所属的指纹 AP 点。
具体实现
首先,我们需要拥有一张室内结构图。
然后,我们在需要的位置上打点,也就是标注指纹 AP 点。标注完指纹 AP 点之后,我们依次到刚才标注的指纹 AP 点上进行 Wi-Fi 信号强度采集。微信小程序有相应的获取 Wi-Fi 列表的接口,并且已经对 RSS 进行处理,因此我们无需再对 RSS 进行调整即可直接使用。
我们依次将各指纹 AP 点采集到的 Wi-Fi 信息存储到服务器的数据库中。
Wi-Fi 信息存储在数据库中的形式与我们真正训练所需的形式有一定的差别。因此,我们需要通过转换操作,将存储在数据库中的数据转换成训练所需的数据形式。
【实现代码】:
def drop_signal_data(