蔡旭莹 陈小瀚
(广东海洋大学数学与计算机学院 广东省湛江市 524088)
随着经济发展和生活水平的提高,人们精神层面的需求不断提高,各类主题的展馆也随之孕育而生。在满足观展需求的同时,人们对观展服务也有了更高的要求,展馆定位与导览服务便是其中之一。在室内位置相关的服务中,常见的主要定位技术包括Wi-Fi 定位、蓝牙定位、红外定位、超宽带定位、超声波定位、LED 定位、ZigBee 定位、射频识别定位等[1]。不同的技术以及配置方案,其定位精度、稳定性、实施成本也不尽相同。随着蓝牙技术的普及,目前绝大多移动端设备均装载了该项通信功能,用以实现数据传输。利用蓝牙信号技术实现定位的最大优点在于用户适用程度高,有很好的普遍性。蓝牙定位基于RSSI(Received Signal Strength Indication,接收信号强度指示)值进行定位,通过在展馆、商城等室内环境中部署低能耗蓝牙设备,即蓝牙iBeacon,利用用户移动设备中的蓝牙接收端接收发射端广播的RSSI 场强信号,以此判断出用户的室内位置[2]。相比其他技术,蓝牙室内定位技术优势更为突出,部署在室内环境的蓝牙信标iBeacon 设备不仅体积小,而且功耗也小、工作时间长。iBeacon 采用电池供电,在默认功率的情况下,设备的电池电量可持续3 至5年(如E5 定位型iBeacon),且部署蓝牙iBeacon 不需要额外布设电缆[3],这些优点使得蓝牙定位在室内定位技术中更具实用性;同时,相比Wi-Fi 定位技术,蓝牙受周围环境的干扰比较小[4]。因此将其作为展馆定位的主要技术可以以最低的成本大幅提升用户在展馆中的体验。
低能耗蓝牙(Bluetooth Low Energy)是蓝牙技术联盟设计和销售的一种个人局域网技术。相比于经典蓝牙,低能耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。蓝牙技术联盟的低能耗技术面向包括智能家庭、健康、运动等多个市场。其主要优点包括能耗低、体积小、成本低,且与现有的大部分手机、平板电脑和计算机兼容。蓝牙技术联盟沿用经典蓝牙的规范内容,为低能耗蓝牙定义了一些设备描述(Profile),这些描述定义了一个设备在特定应用情景下的工作方式。当前所有低功耗应用描述都基于通用属性规范(Generic Attribute Profile,GATT)。GATT 定义的多层数据结构,简要概括就是服务(service)可以包含多个特征(characteristic),每个特征包含属性(properties)和值(value),还可以包含多个描述(descriptor)。
iBeacon 是苹果公司发布的IOS7 系统中所配备的新功能。它是低能耗蓝牙技术的应用,iBeacon 通过配置低能耗蓝牙中名为“通告帧”(Advertising)的广播帧,实现在通告帧的有效负载部分将自主格式的数据嵌入其中并进行广播。周边设备只要支持低能耗蓝牙,便能接收到iBeacon 所广播的数据,并读取其中特有的ID加以利用。iBeacon 的数据包含四个部分,分别是UUID、Major、Minor 和RSSI。其中UUID 是iBeacon 的通用唯一识别码,是独一无二的;Major 和Minor 为iBeacon 的标识信息,Major 为主要字段,而Minor 为次要字段;RSSI 则是接收iBeacon 设备发射的信号强度指标,可用于计算iBeacon 设备与接收端设备之间的距离[5]。
蜂鸟地图主要用于三维室内地图制作,为消防、工业、商业、交通等领域提供了良好的室内地图解决方案[6]。蜂鸟云平台是蜂鸟视图产品(Fengmap)平台,提供室内地图、跨平台地图SDK、室内定位、在线地图编辑工具等云端工具。在蜂鸟云平台上可以获得室内地图制作、跨平台应用开发、室内定位集成、行业地图解决方案定制等室内地图全流程服务和支持,并且可以通过用户控制台管理私有应用、私有地图等。通过蜂鸟云平台云端服务,可将室内地图功能与移动APP集成,并发布到公众号或加入Web应用管理系统。
3.1.1 信标距离计算模型
蓝牙信号的空间传播与其它无线信号的传播一样,存在着无线信号衰减的现象。接收端获取到发射端RSSI 强度值通常与两者之间的距离存在一定的函数关系,称之为传播损耗模型。本文采用了经典的对数距离路径损耗模型作为RSSI 强度与距离之间的换算模型[7]。对数距离路径损耗模型如公式(1)所示:
其中,LP(·)为某一距离的RSSI 信号强度;d0为发射端至参考点的距离,d 则为实际接收端与发射端的距离;n 是路径损失比例系数,其表示信号随距离增加的损失程度,于室内定位而言,该系数取值3.5[7];χ 是均值为零的高斯分布随机变量,根据文献[7]此处取值为零。如果以单位1 作为近距离参考点的距离d0,公式(1)则可表示为:
其中A 为发射端与接收端的实时RSSI 信号强度,R 为参考点的RSSI 信号强度。因此,根据公式(2)则可得到接收端与某一蓝牙信标(发射端)的相对距离。
3.1.2 三边测量定位算法
三边测量定位算法利用三个已知位置坐标的辅助定位点来计算待测点的实际位置[8]。如图1所示,设P1,P2,P3为三个已知的辅助定位点,其坐标分别为(x1,y1),(x2,y2),(x3,y3),则待测点PD的坐标xD=(xD,yD)可由公式(3)计算得到:
图1:三边测量定位原理
其中d1,d2,d3分别为PD到P1,P2,P3的距离。就本文研究的实际应用场景而言,展馆中通常部署了与展品同数量的信标,因此在一定的有效信号距离内,可获得的信标数量通常多于3 个。因此,为了提高定位的效果,本文将接收端可获得的蓝牙信标全部用于待测点PD的位置估计,由此构成了一个由多边定位的超定方程组。假设n×2 矩阵P 为n 个辅助定位点的坐标,则PD的位置可通过最优化求解公式(3)得到:
其中d=(d1,d2,…,dn)T,dn为由公式(2)计算得到的待测点PD到第n 个辅助定位点Pn的距离。
3.2.1 蓝牙相关配置
根据三边测量定位算法的设计,本文基于微信小程序开发接口实现了定位功能。首先使用微信API wx.openBluetoothAdapter()方法开启蓝牙适配器,再调用wx.startBeaconDiscovery()方法开启iBeacon 设备的扫描,并通过UUID 参数筛选出指定的设备。开启扫描iBeacon 设备成功后,使用wx.onBeaconUpdate()方法监听iBeacon 设备的信息变化,并在该方法的回调函数中处理返回的iBeacon 信息。
3.2.2 用户定位分析
创建一个IBeacon 类用于存储iBeacon 信息,同时在数据库中存储了每个展品上部署的iBeacon 设备信息,信息结构与该类结构相同。
在app 实例的globalData 中声明全局变量currentiBeaconList 数组用于存储当前周围的iBeacon 设备信息。在wx.onBeaconUpdate()的回调函数中会返回用户周围iBeacon 设备信息的更新值,并对每次更新的iBeacon 信息处理,若currentiBeaconList 中存在iBeacon则更新其值,若不存在则加入到数组中。
RSSI 数值单位为dBm,用以表示信号强度[9],根据公式(2),则通过该值可计算设备与用户之间的距离。程序获取当前iBeacon设备列表中距离用户最近的设备,将其与数据库中的iBeacon 库进行匹配,得到该iBeacon 设备对应的展品以及该展品所在的区域,以此对用户进行定位。
在全局变量中定义一个locationArea 用于存储当前用户所在的区域,在每次周围iBeacon 设备的信息更新后对currentiBeaconList数组中的iBeacon 按RSSI 值从小到大排序,读取数组中iBeacon 设备的归属区域并赋值给locationArea。在用户移动的过程中会实时的更新周围iBeacon 设备信息,因此用户附近的设备列表和用户所在区域都将得到实时更新。
3.2.3 展品定位分析
iBeacon 设备的RSSI 值越小,距离设备越远,反之越近。通过实际测试,当RSSI 值大于-45 时,能够较为精准的区分两个距离较近的iBeacon,定位到相应的位置并展示相关展品的信息。
从currentiBeaconList 中获取到RSSI 值最大的iBeacon 设备,并对RSSI 值进行验证,就能在用户靠近展品时准确获取到该展品的信息。
小程序首页顶部设计为展馆图片轮播,用户可在此查看展馆大致布局,图2 为首页界面。其次用户可查看展馆公告获取展馆最近发布的信息列表,并查看不同公告的详情。在帮助中心中用户可以获取展馆相关服务,如获取预约讲解服务的相关流程等。
图2:展馆信息界面
在系统中,展馆的展品汇总为列表展示给用户,用户可在列表页面中查看不同区域的展品列表。展品列表中还可以通过关键词或展品编号搜索展品,程序将筛选出相应的展品展示给用户。用户进入展品详情页后可以获取展品更多的详细信息,如展品图片、展品所在区域、展品的详细介绍以及显示展品定位功能等。
展馆地图为用户展示展馆的整体结构以及展品的分布状况。系统可以通过地图的指南针获取朝向信息并在使用过程中为用户显示地图朝向。地图分2D 和3D 两种显示模式,并为用户提供自行切换显示模式。图3 (a)为地图界面的2D 模式,图3 (b)为地图界面的3D 模式。地图中的展品将显示品名标签,用户可通过地图控件切换地图中的标签显示,使地图界面更为简洁。在展品详情页面中用户可以通过展品定位功能跳转至地图中相应展品的位置,且通过该展品查看其相关信息。
图3:地图相关界面
系统根据周围展品的iBeacon 信号展示用户附近的展品列表,列表中的展品按距离从近到远排序。同时根据展品iBeacon 设备的RSSI 值,分析与用户周围距离最近的展品,通过三边测量定位算法,判定用户所在区域位置,并在周围展品列表的上方显示用户所在区域。当点击地图界面定位按钮时,则高亮显示其所在区域。而当用户接近展品到一定距离时,地图页面则会移动到相应展品的位置并自动弹出该展品的信息。
本文结合低能耗蓝牙iBeacon 设备、蜂鸟视图API 和微信小程序实现了一款用于展馆导览及定位的小程序。通过展品上的蓝牙设备信号对用户进行区域定位,并使用蜂鸟云开发绘制展馆地图供用户使用。在本文设计的系统中,用户可通过地图查看展品位置,并与地图中的展品交互,查看展品详细信息,满足了展馆用户的定位与导览需求。