基于蓝牙信标和微信的位置服务系统研究
2017-12-20侯明祥刘振远方维维才子昕路红英
侯明祥,刘振远,方维维,才子昕,刘 铭,路红英
(北京交通大学 计算机与信息技术学院,北京 100044)
基于蓝牙信标和微信的位置服务系统研究
侯明祥,刘振远,方维维,才子昕,刘 铭,路红英
(北京交通大学 计算机与信息技术学院,北京 100044)
随着人们对实时位置信息需求的不断增长,基于位置的服务因此得到快速发展。但由于GPS定位技术无法在室内环境下实现定位,因此现有的室外位置服务系统无法有效地应用在室内环境中。设计并实现了一种基于蓝牙信标和微信的新型位置服务系统。该系统使用蓝牙信标作为信号发射基站,将移动终端设备作为客户端,使用微信提供的摇一摇周边功能作为系统入口,通过调用微信公众平台提供的周边服务开发接口,动态监听客户端邻近基站发送的蓝牙信号,并从中解析出邻近基站的标识、信号强度等信息,并在此基础上实现客户端实时定位、周边信息推荐和动态导航等功能。经过真实环境测试,结果表明该系统在功能上达到了预期效果,易于部署和使用,并且可以在多种环境下正常提供服务,扩展了位置服务的应用范围。
蓝牙信标;微信;室内定位;信息推荐;导航
0 引 言
随着移动互联网技术的进步和“互联网+”概念的兴起,位置服务系统(Location Based Service,LBS)[1]正广泛应用于人们的生活。目前市场上主流的位置服务系统,如百度地图和美团外卖等,均采用GPS定位技术[2]获取用户的地理位置,并以移动应用(App)形式为用户提供位置服务,极大地方便了人们的生活。然而这种位置服务系统也存在着以下缺点:一方面,GPS定位技术在卫星信号受到干扰时定位效果不佳,尤其是室内环境中,通常无法为用户提供位置服务;另一方面,采用App的应用形式不便于系统的开发和使用,系统开发者需要针对不同的客户端系统使用对应的编程语言开发界面和功能相同或相似的App,增加了系统开发难度和成本;同时,用户在使用App时需要提前下载和安装,不便于该系统的推广和用户粘性的维持。
为了弥补GPS定位技术在室内环境下定位效果的不足,出现了多种室内位置服务的技术。其中,低功耗蓝牙技术因其低成本、低功耗及快速连接等特点,成为室内位置服务的热门技术之一[3]。目前,低功耗蓝牙已经发展得相当成熟,国内外也出现了多种以低功耗蓝牙为基础的服务应用。如在市场营销中,实现对消费者的位置追踪,从而进行针对性营销[4];在室内环境中,通过高效的移动侦测,确定用户位置,优化室内服务,实现“智能建筑”[5];在医院中实现用户定位,可以帮助病人快速查找门诊或病房[6];微信摇一摇在2015年开始支持低功耗蓝牙,通过摇一摇周边实现特定信息的推送。低功耗蓝牙正在改变着零售商、组织活动者、教育或医疗机构在室内环境下与用户的交互方式,对未来位置服务的发展具有重要意义[7]。
文中给出了一套基于蓝牙信标[8]和微信的位置服务系统的设计实现方法。该方法使用蓝牙信标作为信号发射基站,使用手机或平板电脑等移动终端设备作为客户端,将用户数量庞大的微信移动App作为系统入口。通过微信公众平台的页面绑定机制实现信号发射基站与信息页面的绑定,通过调用其摇一摇周边开发接口(JS API)[9]动态获取信号发射基站的标识和距离等信息,在此基础上实现客户端定位、周边信息推荐和动态导航功能。
1 系统设计
1.1 系统架构
如图1所示,系统从总体架构上可以分为信号发射基站、微信公众平台、微信App端、服务器端和数据库五部分,各部分的功能如下所述:
(1)信号发射基站(以下简称“基站”)不间断地发射蓝牙信号,微信App自身具有接收和解析蓝牙信号的功能,可以从信号中解析出基站的唯一标识、发射功率等基本信息,作为获取信息页面和客户端定位的参数。
(2)微信公众平台的主要功能是实现基站与信息页面的绑定和提供JS API。由于本系统使用微信摇一摇周边功能作为系统入口,因此需要在摇一摇周边中获取绑定页面的链接,微信公众平台的页面绑定机制确保微信在监测到基站信号时可以获取该基站绑定的信息页面;JS API是由微信公众平台提供的,使开发者能够在自己的应用上实现动态地搜索邻近基站信号的一套程序接口,该套接口动态返回邻近基站的标识、基站与客户端之间的距离等信息,调用JS API时需要提供接口调用凭证。
(3)微信App端的主要功能包括获取信息页面、动态监听邻近基站信号和数据可视化显示。用户使用摇一摇功能时,微信自动监测并解析邻近基站信号,根据解析出的基站标识从微信公众平台中获取基站绑定的信息页面;为了在系统运行过程中动态监听邻近基站信号,客户端从微信公众平台调用JS API,接口调用凭证由服务器提供,接口返回的数据被推送至服务器端;微信App端使用微信内嵌的网页浏览器显示服务器的返回结果。
(4)服务器端的主要功能包括为微信App端提供JS API接口调用凭证、为系统提供计算服务和存储系统资源。服务器从微信公众平台请求JS API接口调用凭证,计算过程的主要参数来自于微信App端推送的数据和数据库存储的信息,系统运行过程中产生的数据(如用户标识、用户行为记录)被存储至数据库;系统中所有在地图上显示的图片,包括地图图层和位置图标等资源都存储在服务器端,为了避免用户在放大和缩小地图时造成图片失真的问题,上述资源均采用SVG格式的图片。服务器的计算结果和图片资源以HTML5页面的形式推送至微信App端内嵌浏览器上显示,JS API接口调用凭证也被注入到HTML5页面的脚本程序中。
(5)数据库中存储基站信息、位置信息等预置数据和系统运行过程中产生的历史和统计数据,原则上数据库和服务器可位于同一主机。
图1 系统总体架构
1.2 模块设计
系统总体上可以提供实时定位、周边推荐、动态导航和数据存储四种不同的功能。
实时定位功能将用户当前位置实时展现在客户端,由信号监听模块、噪音过滤模块、位置计算模块和定位显示模块实现;周边推荐功能推送符合用户需求的周边信息,由推荐分析模块和推荐显示模块实现;动态导航功能提供用户当前位置到达目标位置的一到多条最优路线,并根据用户当前位置实时更新路线,由路线查询模块和路线显示模块实现;数据存取功能实现对数据库的操作,具体操作的数据将在1.3节详细阐述,该功能为其他功能的实现提供数据库操作接口。各模块功能详细描述如下:
信号监听模块:通过调用JS API实现对邻近基站信号的动态监听和解析,并将解析后的数据推送至噪音过滤模块。JS API中获取蓝牙基站信息的接口包括开始监听接口(startSearchBeacos)、动态监听接口(onSearchBeacons)和停止监听接口(stopSearchBeacons)。其中,动态监听接口返回的数据中包含了基站标识、基站与客户端之间的距离以及距离的精度等。
噪音过滤模块:接收信号监听模块推送的基站信息,并使用高斯滤波算法[10]对基站与客户端之间的距离进行平滑处理,去除突发噪声影响,获取相对稳定的距离值,处理后的基站信息推送至位置计算模块。
位置计算模块:根据噪音过滤模块推送的基站信息,从数据库中获取基站对应的位置坐标,结合基站与客户端之间的距离和距离精度等信息计算出用户当前位置,并推送至定位显示模块、推荐分析模块和路线查询模块;根据用户当前位置,从数据库中获取距离用户最近的位置对应的信息页面链接,并推送至位置显示模块;将用户当前位置和当前时间等数据作为用户行为记录存储至数据库中。计算用户当前位置的具体技术细节将在第2.1节详细阐述。
定位显示模块:显示位置计算模块推送的用户当前位置和推送信息页面,用户当前位置在地图页面中显示,通过调用第三方地图开发JS插件(如LeafletJS等)实现地图的显示,通过调用HTML5封装的移动设备传感器开发接口[11]获取用户当前方向;信息页面与地图页面并列显示。
推荐分析模块:从数据库中获取用户行为记录,结合位置计算模块推送的用户当前位置,分析符合用户需求的周边信息,分析过程中的主要技术将在2.1节详细阐述。
推荐显示模块:显示推荐分析模块的分析结果。与位置显示模块对应,推荐信息分别在信息页面和地图页面显示。
路线查询模块:从数据库中获取位置信息,根据位置计算模块推送的用户当前位置和目标位置查询出一条或多条可行路线,路线查询过程中充分结合路线长度、路线人流量两种因素,具体技术将在2.3节详细阐述。
路线显示模块:显示路线查询模块的查询结果,导航过程中,根据位置计算模块推送的用户当前位置,动态擦除用户已经走过的路线。
通过各模块具体功能的分析,各模块功能之间的关系如图2所示。
1.3 数据库设计
数据库中存储的表格主要包括:基站表、位置表、用户表和行为记录表。基站表存储所有基站的信息,包括基站标识和位置坐标;位置表存储地图上所有位置的信息,包括位置标识、位置坐标、位置类型、位置描述和位置对应的信息页面链接;用户信息表存储用户标识和用户登录时间,微信公众平台为每个通过微信摇一摇进入系统的用户分配唯一的随机标识OpenId,系统从微信公众平台获取用户OpenId并作为该用户在本系统中的唯一标识;行为记录表存放用户行为记录,包括用户标识、位置标识、用户逗留时间。数据库各表的详细设计如表1所示。
图2 模块功能关系图
表名列名类型允许为空说明基站表UUIDchar(30)否基站标识LocateXfloat否横坐标LocateYfloat否纵坐标位置表Tagchar(30)否位置标识LocationXfloat否位置横坐标LocationYfloat否位置纵坐标Typeint否位置类型Describechar(50)是位置描述DescribePagechar(30)是信息页面链接用户表OpenIdchar(30)否用户标识LoginTimetime是登录时间行为记录表UserTagchar(30)否用户标识LocationTagchar(30)否位置标识Durationint否逗留时间
2 关键技术实现
2.1 定 位
定位功能使用的基本算法是多边定位算法[12],将基站作为锚节点,其坐标记为(xi,yi)(i表示第i个基站,i=1,2,…,N)。将移动客户端作为未知节点,其坐标记为(x,y)。移动客户端与基站之间的距离记为di,根据多边定位的原理可得到方程组(1)。
(1)
使用最小二乘法可计算出客户端坐标:
(2)
其中
(3)
(4)
使用式(2)计算客户端位置。通过多次测试发现,当每隔5 m部署一个基站时,定位的误差在2 m以内,可以达到理想的定位效果,且部署密度越大,误差越小,但相应的部署成本也会增大。
由于蓝牙基站的定位距离精度,按照标准可分为4个级别:Immediate(小于0.5 m)、Near(小于2 m)、Far(小于30 m)和Unknown(大于30 m),因此当客户端监测到基站距离精度为Immediate时,用户与该基站的距离在0.5 m以内,此时将基站位置作为用户当前位置可以将定位误差减小到0.5 m以内。使用多边定位与Immediate校准相结合的定位方式,可以减小基站部署成本,提高系统定位精度。
根据以上分析,定位模块的伪代码如下:
获取各个基站的信息存储至集合beacons
布尔型变量isImmediate标记客户端位置是否已校准
while(beacons不为空) {
for(获取beacons中的一个元素beacon){
获取beacon距离的精度proximity
if(proximity等于Immediate){
将beacon的位置作为客户端位置
isImmediate置为真
break
}
}
if(isImmediate为假)
根据式(2)计算客户端位置
}
2.2 推 荐
推荐功能的实现基于两种不同的推荐方案:默认推荐方案和基于用户偏好的推荐方案。
对于首次使用系统的用户,用户行为记录表中没有该用户的行为记录或记录较少,因此无法分析出用户偏好,此时系统采用默认推荐方案。默认推荐方案是在系统部署前预置的若干条不依赖于用户偏好的推荐规则,如优先推荐促销商品、优先推荐游览人次最多的景点等规则,由于这些规则没有结合用户偏好,因此默认推荐方案无法实现个性化推荐。
对于行为记录充足的用户,系统采用基于用户偏好的推荐方案,根据用户行为记录,分析用户偏好,为其推送个性化信息。分析用户偏好基于两个标准:用户在各位置逗留的时间与用户使用系统总时间的比例、用户到达个位置的次数与用户行为记录总数的比例。例如,通过对用户行为记录表的分析,发现用户在公园逗留的时间占其使用本系统总时间的50%,或者用户到达公园的次数占用户行为记录总数的50%,则可以判断该用户对休闲娱乐比较感兴趣。当其到达一个新的位置或者重新登录时,系统为其推送周边的公园、植物园和广场等休闲位置。
2.3 导 航
导航功能的实现基于K最短路径[13]的基本思想:根据已经查询到的k-1条最优路径,使用Dijkstra算法[14]计算所有候选偏离点到达终点的最优路径,并将此路径与起点到达该候选偏离点的路径拼接构成候选路径,从所有的候选路径中选择最优路径作为第k条最优路径,如此循环,直到查找到的路径数量满足给定需求K。本系统中,构成路径的各个路段的花费由路段长度和路段拥堵情况共同决定。计算方法是首先给所有路段赋予相同大小的花费,然后通过以下两个步骤对花费进行调整:
(1)根据位置表计算路段长度,如果路段较长则增大路段花费,否则减小路段花费;
(2)通过分析用户行为记录表,计算当前路段的人流量,如果人流量较大则增大路段花费,否则减小路段花费。
获取前K条最优路径的伪代码如下:
根据点位表和路段消费计算方法初始化图G(v,e)
初始化集合A和B,分别用于存储前K条最优路径和备选路径
用户当前点位标记为source,目标点位标记为sink
使用Dijkstra算法搜素source到sink的最优路径存储至A
for(k的范围为[1,K]) {
从A中获取第k-1条最优路径,标记为bKPath
for(遍历bKPath中除最后一个节点之外的所有节点,第i个节点标记为iNode) {
将bKPath中source到达iNode的子路径标记为rootPath
for(遍历A中所有路径,当前路径标记为p) {
路径p中从source到达iNode的子路径,标记为pRootPath
if(rootPath与pRootPath重合) {
p中第i与第i+1节点之间的边记为pRootEdge
从G中删除pRootEdge
}
}
for(获取rootPath中除iNode之外的节点rootPathNode)
从G中删除rootPathNode
使用Dijkstra算法搜索iNode到sink的最优路径,标记为sPath
拼接rootPath和sPath,标记为totalPath
将totalPath存储至B
恢复G中所有删除的边和点
}
if(B中没有元素) break
获取集合B中的最优路线,标记为kShortest
将kShortest添加至集合A,并清空集合B
}
returnA;
3 测试结果
3.1 测试环境
系统测试阶段,选择某商场一层的一块边长10 m的正方形区域作为实验场地,在场地的四个顶点以及对角线的交叉点各部署一个基站;客户端选用操作系统为Android 5.1的手机,支持蓝牙低功耗技术,微信版本为6.3.27;服务端部署在新浪应用引擎上,测试过程中确保客户端可以连接网络并开启蓝牙服务,具体的测试结果如下。
3.2 定位测试
打开微信客户端,通过微信摇一摇获取系统页面链接,点击链接进入系统。首先显示的是当前位置的信息页面,该页面与地图页面并列显示,点击菜单栏“定位导航”按钮切换至地图页面,用户从A点,沿着正方形场地的边界,依次走过C点、E点和D点,最后回到A点。测试过程中记录下的路线如图3(左)所示,定位误差分析结果如图4所示。
图3 定位效果及导航功能测试结果
通过对定位结果的分析,系统定位的误差在3 m以内,而且距离基站越近误差越小,平均定位误差为1.2 m。测试场地所在的商场长度大约70 m,宽度大约80 m。按照本次实验的部署方法,商场一层在最多部署128个基站的情况下,即可达到3 m以内的定位精度,基本可满足普通移动用户的定位需求,如需进一步提高,可适当增加基站部署密度。
图4 定位误差分析
3.3 推送测试
测试推送功能的过程中,分别以两个不同的微信账号登录客户端微信,其中一个账号从未登陆过本系统,模拟首次使用系统的用户A;另一个账号多次登录过本系统,并且每次都在餐厅附近逗留,模拟有充足行为记录的用户B。当两个用户接近地图中的同一个位置时,在信息页面的最下方,系统为用户A推荐了周边的促销信息,为用户B推荐了周边的餐饮信息;切换至地图页面,两个用户对应的推荐信息均以滑动菜单的形式显示在地图下方,点击滑动菜单的“去这里”选项,系统进入导航模式。地点详情页面和地图页面的推荐功能测试结果如图5所示。
图5 推荐功能测试结果
3.4 导航测试
导航模式中,当前位置到达目标位置的多条方案以滑动菜单的形式显示在地图下方,点击菜单可以查看对应的方案在地图上的路线及该方案耗时,导航过程中的系统界面显示如图3(右)所示。
导航功能的测试结果表明:系统为用户选择的是所有可行路线中距离最短的路线;导航过程中,地图上代表用户当前位置的图标在实时刷新,用户已经行走过的路线也被自动擦除;滑动菜单栏中始终显示用户的当前位置和目标位置;当用户达到目的位置后,系统会自动结束导航并返回至定位模式,继续提供实时定位服务。
4 结束语
实现了一种基于蓝牙和微信的位置服务系统,系统具有部署方便、定位效果良好、在室外和室内环境下均能正常工作以及便于向移动终端推送信息等优点。在实际的应用场景中进行了测试,结果表明该系统在功能方面达到了预期的效果。基于蓝牙和微信的位置服务系统在以下方面有待于进一步研究:结合客户端加速度传感器,进一步提高系统定位的精度;结合机器学习的相关研究,优化系统推荐算法。
[1] 刘 成.LBS定位技术研究与发展现状[J].导航定位学报,2013(1):78-83.
[2] 张 惠,张 健,梁兴忠,等.全球定位系统(GPS)技术的发展现状及未来发展趋势[J].仪器仪表标准化与计量,2011(2):38-40.
[3] OKSAR I.A Bluetooth signal strength based indoor localization method[C]//International conference on systems,signals and image processing.[s.l.]:IEEE,2014.
[4] NEWMAN N.Apple iBeacon technology briefing[J].Journal of Direct Data & Digital Marketing Practice,2014,15(3):222-225.
[5] CONTE G,DE MARCHI M,NACCI A A,et al.BlueSentinel:a first approach using iBeacon for an energy efficient occupancy detection system[C]//ACM conference on embedded systems for energy-efficient buildings.[s.l.]:ACM,2014:11-19.
[6] YANG J,WANG Z,ZHANG X.An iBeacon-based indoor positioning systems for hospitals[J].International Journal of Smart Home,2015,9(7):161-168.
[7] FARDH K,CHEN Y,SON K K.Indoor positioning of mobile devices with agile iBeacon deployment[C]//IEEE 28th Canadian conference on electrical and computer engineering.Canadian:IEEE,2015:275-279.
[8] 张倬胜,马方方,薛静远,等.基于iBeacon的精细室内定位方法研究[J].地理信息世界,2015,22(2):26-30.
[9] 腾讯公司.微信公众平台开发者文档[EB/OL].(2015-10-09)[2015-10-20].https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html.
[10] 彭玉旭,杨艳红.一种基于RSSI的贝叶斯室内定位算法[J].计算机工程,2012,38(10):237-240.
[11] 刘华星,杨 庚.HTML5-下一代Web开发标准研究[J].计算机技术与发展,2011,21(8):54-58.
[12] 崔法毅,邵冠兰.基于RSSI多边定位误差的加权质心定位算法[J].红外与激光工程,2015,44(7):2162-2168.
[13] 徐 涛,丁晓璐,李建伏.K最短路径算法综述[J].计算机工程与设计,2013,34(11):3900-3906.
[14] 王战红,孙明明,姚 瑶.Dijkstra算法的分析与改进[J].湖北第二师范学院学报,2008,25(8):12-14.
ResearchonLocationServicesSystemBasedonBluetoothBeaconandWeChat
HOU Ming-xiang,LIU Zhen-yuan,FANG Wei-wei,CAI Zi-xin,LIU Ming,LU Hong-ying
(School of Computer and Information Technology,Beijing Jiaotong University,Beijing 100044,China)
With the increasing demand of real-time location information for people,location-based services is developed rapidly.However,the GPS locating technology can’t provide locating service in indoor environments,so the existing outdoor location service system is ineffective in indoor environments.A new type of location service system based on the Bluetooth beacon and WeChat is designed and realized.It uses Bluetooth beacon as its base station of signal transmitting,mobile terminals as its client,and WeChat Shake as its access.The Bluetooth signal is monitored dynamically from near base station of client by adoption of surrounding service interfaces provided by WeChat public platform,from which the identities and signal intensity of nearby beacons are obtained.Based on that,the system realizes the functions of client locating,information recommending and dynamic navigation.After the test under real environment,it is showed that the system can achieve the desired effects,easy to deploy and use,and provide services in a variety of environments,expanding the application scope of location-based services.
Bluetooth beacon;WeChat;indoor location;information recommendation;navigation
TP393
A
1673-629X(2017)12-0187-06
10.3969/j.issn.1673-629X.2017.12.040
2016-12-03
2017-04-19 < class="emphasis_bold">网络出版时间
时间:2017-09-27
国家自然科学基金资助项目(61202430,61303245);中央高校基本科研业务费资助项目(2016JBZ006);宇航动力学国家重点实验室开放基金资助项目(2016ADL-DW0402)
侯明祥(1993-),男,硕士,研究方向为移动计算和室内定位;方维维,通信作者,副教授,博导,研究方向为物联网。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170927.0957.018.html