本文主要介绍了物联网室内定位中,指纹定位系统研究过程中需要的软件开发思路,目前完成的有Android端WIFI信号的获取与划定采集区域采集WIFI信号指纹库等功能。
声明:
- 本系统涉及软件只用于学术研究,切乎用于其它用途。
- 软件存在版权问题所以暂不开放源码,只提供软件试用版本和软件开发思路。
- 希望给自己一个梳理开发过程的机会,若刚好你需要可以一起讨论,并提出宝贵的意见。
需求
指纹定位系统分为离线采集和在线定位两个阶段,离线采集阶段,需要将定位区域内的信息获取到并存到相应的数据库中完成指纹库的构建,本次需求主要为WiFi信号指纹库的构建,所采用的采集设备为Android手机,系统服务可部署在服务器中,通过Android端连接服务器,完成指纹库的构建。
设计思路:
指纹采集流程:
创建需要采集区域信息,创建需要采集区域的AP信息,由于采集的是WiFi的指纹信息,所以需要事先将WiFi的信息录入,采用录入mac的方式进行,当采集WiFi强度时只采集录入的wifi的强度(AP强度);根据确定的区域,确定好原点坐标,将区域划分成坐标点,在采集的时候,需要输入指纹的坐标点,所以需要事先完善好坐标点的划分;到相应的坐标点输入信息并采集,数据通过服务器存入到数据库中,一次测量的点的信息应该不止一个而是一组,最终通过多次测量得出平均值或其他方法求得的值作为该点的wifi指纹点。
数据格式大约如下:(x,y)->(1,1)(rssi1,rssi2,rssi3,rssi4,…)
指纹数据库设计:
数据库应包含区域信息、AP信息、坐标点信息、多次采集AP强度信息、指纹信息。
此处不再论述数据库的详细设计,直接贴出数据库的结构图:
主要有区域表、ap表、坐标表、测量表、指纹生成表;提供两种视图便于查看数据,如图:
技术选型
- 数据库选择使用mysql
- 服务器端采用SSM架构编写(Java版)
- Android端采用MVP模式编写
注:AP即是在我们需要采集指纹区域内我们自己部署的WiFi路由器的称呼
执行流程:
首页:
设置服务器:
访问服务器网址,录入地区:注意ap的个数不用乱写,要按照真实的来写
进入查看周围录入区域AP点,点击选择区域,点击需要录入的ap,录入到区域中,待采集时将直接采集录入ap点的rssi信息
录入ap
进入采集WIFI指纹界面,首先选择区域,然后点击准备,当提示准备开始后开始点击采集,采集完成后,点击生成指纹,一次采集次数和间隔可调整,生成的指纹为平采集多次的平均值,指纹点数据可根据数据库的多次采集到的信息的数据进行自己处理,系统提供的指纹点为已经求平均后的,可在视图measureinfo中查看采集多次的数据,该数据为原始数据也是最重要的,自己可针对做处理的数据。
问题总结:
- 采集WIFI信号的准确性问题,当两次采集间隔过小时,采集到的信息存在缓存,不具备时变性
- 指纹点生成可能会出现不成功现象,多次采集的数据measureinfo会保存,可自行通过多次采集到的数据去根据自己的算法计算指纹点。
- 后续问题继续添加
后续更新:
- 暂时只支持WiFi版本指纹采集,后续可能加入地磁等其他更多的信息
- 后续可能继续更新此类博客
下载试用
- 数据库脚本
- 服务器war包
- Android安装包-已针对Android6.0以上适配,请选择允许访问网络等权限否则将不会正常运行
1 本地创建db_indoorpositon数据库,导入脚本文件创建数据库表等
2 安装java环境,下载tomcat解压版,将war包放入到webapps下
3 启动tomcat,在bin/startup.bat,在自动解压后的FingerPrintMeasurementSystem中进入WEB-INF\classes\config,找到spring-mybatis.xml,修改数据库用户名和密码。若不修改,请保持数据库名为root,密码为123456
4 打开app,修改服务器地址,输入本地局域网内的服务器ip即可,注意app需要与服务器处在同一局域网内。
发送邮件‘csdn-指纹采集系统获取’到zhuimengqingcun@126.com,
收到后将回信给您或直接留言即可。
相关资料可参看:
https://www.cnblogs.com/rubbninja/p/6120964.html 室内定位系列(一)——WiFi位置指纹(译)