文章目录

  • 版本
  • 1.描述
  • 2.室内 Beacon 定位
  • 2.1 扫描信标
  • 2.2 扫描特性
  • 2.3 信标算法前置处理
  • 2.4 信标算法处理 基于 RSSI 计算距离
  • 3.室外 GPS 定位
    • 3.1 走出室外的判断
    • 3.2 基于小程序 wx.onLocationChange 获取经纬度
    • 3.3 基于 H5 获取经纬度
    • 3.4 经纬度转墨卡托坐标
  • 4. 总结

版本

版本号 变更内容 作者 时间
1.0.0 - 初始版本; Jisen 2021.04.16

1.描述

室内定位小程序融合定位解决方案,室内beacon+室外GPS,当手机终端在室内处于beacon信号覆盖时,小程序将采用beacon进行定位。当手机终端远离beacon环境走出室外时,切换为GPS定位。

2.室内 Beacon 定位

2.1 扫描信标

beacon定位的首先要解决的就是终端能够源源不断的扫描到信标 我们可以通过 wx.startBeaconDiscovery,wx.onBeaconUpdate 这两个接口过滤并扫描特定uuid的beacon,其中 wx.onBeaconUpdate 将会在一定的频率内源源不断的返回一组扫描到附近的 beacon 设备,这组beacon数据中包含 beacon 的 rssi 等重要数据,相关数据如下

字段 类型 必填 说明
Array.uuid string iBeacon 设备广播的 uuid
Array.major string iBeacon 设备的主 id
Array.minor string iBeacon 设备的次 id
Array.proximity number 表示设备距离的枚举值
Array.accuracy number iBeacon 设备的距离(单位:m)
Array.rssi number iBeacon 设备的信号强度

2.2 扫描特性

手机小程序扫描到附近的一组信标是随机且无序的,通过扫描到的数据的观察和分析,能得出以下结论

  • beacon 扫描的具有随机性

小程序无法总是扫描到最强信号的 beacon ,即无法保证每次扫描到离设备最近的beacon,但是距离终端越近信号越好的beacon越容易被扫描到,如果直接将这组beacon换算成坐标,那么将会导致定位飘动。

  • 单个 beacon RSSI 的具有波动性

终端在固定位置扫描到某个beacon的 RSSI 值在一定范围内波动,如果用波动的 RSSI 计算距离则会导致定位飘动。

2.3 信标算法前置处理

如果我们不对扫描到的beacon数据做处理,计算出来的位置将是飘动的.

  • 设计一个队列保存一定时间内扫描到的 rssi 值做滑动平均处理.

对rssi做滑动平均,尽可能排除rssi跳动对定位的影响。

  • 设计一个 beacon 活跃容器

做beacon活跃容器,尽可能排除beacon扫描的随机性,留存距离终端最近信号值好、活跃度高的附近beacon,同时能够淘汰那些距离遥远不活跃beacon,增加定位稳定性。

2.4 信标算法处理 基于 RSSI 计算距离

通过活跃beacon容器,能在一定程度上减少扫描的随机性所带来的定位漂移,容器中总是存在终端某个时刻附近活跃的beacon,用距离终端最近,信号值最好,最活跃的beacon参与计算得出来得坐标将越准确

  • 策略一 beaconNumEqualOne

  • 策略二 beaconNumEqualTwo

  • 策略三 beaconNumEqualThree

  • 策略四 beaconNumMoreThanThree

3.室外 GPS 定位

室外GPS定位

3.1 走出室外的判断

当容器中活跃beacon都被淘汰,即向后端发送的beacon个数小于1个且rssi小于-79时,可判定设备正在远离beacon环境

当三个扫描周期内,beacon个数小于1 且rssi 小于-79 时可切换为 GPS 模式

3.2 基于小程序 wx.onLocationChange 获取经纬度

wx.onLocationChange(function callback)

监听实时地理位置变化事件,需结合 wx.startLocationUpdateBackground、wx.startLocationUpdate使用。

3.3 基于 H5 获取经纬度

navigator.geolocation.watchPosition(position => {//经纬度数据console.log(position);}, error => {switch (error.code) {case error.PERMISSION_DENIED:alert("定位失败,用户拒绝请求地理定位");break;case error.POSITION_UNAVAILABLE:alert("定位失败,位置信息是不可用");break;case error.TIMEOUT:alert("定位失败,请求获取用户位置超时");break;case error.UNKNOWN_ERROR:alert("定位失败,定位系统失效");break;}}, {enableHighAccuracy: true,maximumAge:1000});

3.4 经纬度转墨卡托坐标

function lonLat2Mercator(lon,lat) {var xy = [];var x = lon * 20037508.342789 / 180;var y = Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);y = y * 20037508.34789 / 180;xy.push(x);xy.push(y);return xy;
}

4. 总结

室内室外融合定位方案,在技术上已经描述完毕,其中室内采用beacon定位,处理以及定位算法较为复杂,而室外定位则能够比较轻易的获取GPS

室内 Beacon定位室外 GPS 定位 大型场馆融合定位方案相关推荐

  1. 北斗和GPS定位在室外非常好用,但当手机进入室内时,它们的定位功能就很不准,甚至无法定位。我们可以开启WLAN扫描定位WIFI模块固定编码或者开启手机的A-GPS辅助定位通过基站,A-GPS服务器定位

    手机定位已经成为人们生产生活必不可少的工具,但有些人的手机定位又快又准,有些人的手机定位时常又慢又偏差大.那该如何解决呢?可以通过下面两个设置来提高定位速度和精度. 1.A-GPS辅助,提高室外定位速 ...

  2. 几种常见的定位技术,GPS定位,北斗定位,基站定位,蓝牙定位,WIFI定位比较--新导智能

    1.GPS定位: GPS定位是最常见的,它信号好.定位精度高.运用规模广,几乎一切需要定位的设备都会优先运用GPS定位.缺陷是,不能信号透过金属和钢筋水泥混合物,因而不能在室内如地下停车场.高桥下.密 ...

  3. 基站定位和GPS定位区别

    什么是GPS全球卫星定位系统 全球卫星定位系统(Global Positioning System),简称GPS.简单地说,这个系统是由覆盖全球的24颗卫星组成,它可以保证在任意时刻,地球上任意一点都 ...

  4. 浅析Android地理定位(GPS)

    浅析Android地理定位(GPS) 定位权限 介绍一下定位相关的一些API LocationManager 位置提供器 requestLocationUpdates Geocoder Criteri ...

  5. LBS基站定位和GPS卫星定位对比

    备注: 本文为网上找到的一个word文档,看了之后,觉得总结相当不错,现在把其贴出来共享!同时感谢原作者无私的奉献精神! 位置定位大体上可以分为两大类: 1. GPS(Global Positioni ...

  6. 室内定位:基于LoRa网络的蓝牙定位 BLE-2

    ①适用说明 基于LoRa网络的蓝牙定位是依赖LoRa作为数据回传网络,通过在场所内部署安装蓝牙信标设备作为定位依据,移动定位终端设备如定位胸牌或定位手表主动扫描环境中的iBeacon信号并通过LoRa ...

  7. GPS定位平台软件,GPS/UWB/WIFI融合定位,提供开发接口

    GPS定位平台软件,GPS定位系统软件,GPS/UWB/WIFI融合定位,提供HTTP/MQTT开发接口. GPS与UWB融合定位 由于GPS只能在室外定位,通过引进UWB技术,可实现室内室外无死角高 ...

  8. 定位技术GPS/A-GPS/LBS/WIFI定位介绍

    定位技术GPS/A-GPS/LBS/WIFI定位介绍 来源:本站整理 作者:08LR.CN 更新时间:2013年05月03日人气:本日:9 本周:19 本月:34 总数:2134 次 生活中,我们经常 ...

  9. 苏州新导_室内定位技术实现停车场下的高精度定位_室内定位技术带你找朋友

    现在社会科技智能化的开展给咱们的日子带来了许多便当,让咱们更加快速的接触到从前的"未来日子".跟着科技技能的越来越成熟,人工智能也开端向咱们展现其强壮的核算才能!而跟着科技技能开展 ...

  10. UWB高精度定位落地:中大型区域动态人员精细网格化管理

    通过信息化.数字化.智能化手段,加强对各类人员在各区域内的实时动态.精细化管控能力,提高科学精准防控水平,助力精细化管理和保驾生产. 人员定位感知技术实现对厂区户外全域,重点区域出入口的全覆盖,实现进 ...

最新文章

  1. java具有自动无用内存回收_Java语言程序设计(一)试卷及答案解释
  2. Nginx-场景实践篇
  3. Android之选项菜单创建
  4. 【译】 WebSocket 协议第十二章——使用其他规范中的WebSocket协议
  5. Java堆(heap)、栈(stack)和队列的区别
  6. python保存代码_python入门(5)使用文件编辑器编写代码并保存执行
  7. 笨办法学linux dhcp,iptables使用指南(上)
  8. 2017年中国大功率UPS市场需求、市场需求及市场结构占比分析预测
  9. C++命名空间的三种使用方法
  10. Teradata的通吃法:同时飘忽于AWS和微软Azure之上
  11. 【转载】Android 工具-adb原理
  12. 计算机EV录屏培训体会,停课不停学19|好用的EV录屏软件助力线上教学
  13. Charles使用教程(Mac)
  14. WPF 入门教程打印控件
  15. windbg 查看结构体_windbg常见命令
  16. 全新Swagger3.0教程,OAS3快速配置指南,实现API接口文档自动化!
  17. 带你学习Hive的多维立方体
  18. Flutter编程之BoxDecoration用法详解
  19. html实现纸张撕边效果,PS图片处理教程:PS撕边效果,脸部撕纸效果
  20. 算法-动态规划算法(详解)

热门文章

  1. SpringBoot 错误:Field userService in com.lyh.Controller.UserController required a bean of...
  2. 高效人士的七个管理习惯
  3. Rust的各种花式汇编操作
  4. UI控件--时间选择(日期拾取器)
  5. java编程基础总结——20.foreach遍历及lambda表达式
  6. 怎么把u盘做成启动盘装系统?
  7. 面包板入门制作之三极管详解
  8. 台式计算机各部分功能,台式电脑的硬件组成部分及其作用各是什么
  9. HTML表格表单制作
  10. GDI+ 绘制曲线方法总结