亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序iBeacon測距及穩定程序的實現解析

2020-03-21 15:50:21
字體:
來源:轉載
供稿:網友

前言

iBeacon是蘋果公司推出的一項低耗能藍牙技術,由藍牙設備發射包含指定信息的信號,再由移動設備接收信號,從而實現近場通信。微信小程序2017年開始支持iBeacon,搖一搖附近就是基于iBeacon實現的,此外iBeacon還可以實現距離測量,本文將介紹如何基于微信小程序實現iBeacon測距。

iBeacon測距原理

藍牙信標發射的信號強度(rssi)與收發設備之間的距離,某種程度上呈正相關,因此通過合理的運算轉化,可以通過rssi的值反推出與接收設備間的距離。

藍牙信標的rssi值是一個參考值,沒有固定標準。想要計算出藍牙信標的距離,還必須知道這個信標設備的txPower值。txPower是指當距離藍牙信標1m時的rssi值,不同的藍牙設備或相同設備不同的工況甚至不同的場地環境,都會影響txPower值,因此這個值雖然可以測量,但一定程度上是個經驗值,無法測準。

rssi測距公式

知道rssi和txPower后就可以計算距離了,有兩種計算公式:

一、

微信小程序,iBeacon,測距,穩定程序

這個公式里的三個變量A、B、C都是經驗值,需要根據手機系統或硬件型號精確調校,通常會將所有設備的校準結果保存成一個設備信息表,移動終端先檢測本機型號,然后匹配設備信息調取相應的計算配置,再進行計算。很明顯這個公式是比較依賴硬件調校的,沒有數據儲備的前提下這個公式會很難用。

轉換成js代碼:

const calculateAccuracy = function (txPower, rssi) { return (0.89976) * Math.pow(rssi / txPower, 7.7095) + 0.111}

未精校情況下的測距表現:

微信小程序,iBeacon,測距,穩定程序

先說這個圖怎么看。

  • 縱軸代表測量距離,橫軸代表時間,每隔一秒取樣一次,圖中是近10次取樣的數值曲線。
  • 綠線是設備接收到的rssi值,反應硬件真實接收到的數據情況;
  • 紅線是套用公式計算得出的瞬時距離;
  • 黃線是微信小程序自帶的瞬時測距結果。

藍牙信標與手機的實際距離1m,測試設備為紅米Note7。

從上圖可見,rssi值相對穩定,說明硬件沒有太大問題。紅線和黃線的波動都很大,說明準確度不咋地。二者的波動趨勢幾乎一致,所以有理由懷疑微信小程序內部也是用的這個測距公式。從結果來看,這個公式的準確度比較差,可能是因為沒有精校的原因。

二、

微信小程序,iBeacon,測距,穩定程序

這個公式里的A就是rssi,tx是txPower,n是經驗值,n的取值跟物理環境有關。

const calculateAccuracy = function (txPower, rssi) { return Math.pow(10, Math.abs(rssi - txPower) / (10 * 4))}

公式二的測距表現:

微信小程序,iBeacon,測距,穩定程序

人比人得死,貨比貨得扔啊。

圖中黃線還是波動的那么瘋狂,但紅線卻異常穩定,而且呈現出跟綠線一致的波動幅度,說明測距精度靠譜。這個公式只有一個參數,生產環境中的調校相對簡單,這里我們選擇公式二作為測距公式。

iBeacon測距穩定程序

藍牙信號本身就有波動性,加上現實環境中的很多因素也會影響到信號強度,比如物體遮擋、設備方向變化、硬件自身的穩定性等,所以接收設備檢測到的rssi值通常是“跳動”的,直接使用測距公式算出的結果,往往不可用。必須實現一個穩定程序,讓計算結果呈現出連續性和穩定性。

數據濾波

穩定程序主要做的事就是對波段數據“削峰填谷”,也可以稱作數據濾波。最簡單的濾波處理,就是收集一段時間的值求平均,只要硬件不出問題,固定距離的藍牙信標rssi值總是會在一個相對穩定的區間內變化,采樣時間越長,采樣的平均值就會越接近真實值,因此在靜態測距場景中,求平均是最佳方式。

//求數組平均值const arrayAverage = arr => arr.reduce((acc, val) => acc + val, 0) / arr.length;return arrayAverage([...])

具體實現是,當程序源源不斷的接收到信標的rssi時,先用公式計算出瞬時測距結果,然后將結果存進一個數組,然后計算這個數組的平均值。靜態測距時,測量結果還是非常準的,2m以內的距離誤差可以低至0.1m。

實際應用中往往都是動態測距,所以采樣數據的長度要加以限制,比如按后進先出的順序,取最近10組數據。具體采樣隊列設為多長,要根據項目實際需求而定。采樣隊列的長度越長,測距結果越平滑,但對移動端的動態捕捉越遲鈍;反之采樣隊列越短,結果越銳利,對移動端的動態捕捉越靈敏。

有時因為一些偶然因素,采樣隊列中會出現個別大幅偏離真實值的“燥音”數據,即使求平均也難以有效抹除影響,為消除這種影響,可以在求平均前先用高斯模糊算法對“偏大值”和“偏小值”做平滑處理,最大限度的降低數據噪音的干擾。

高斯模糊算法的關鍵是根據平均差求權重,一維高斯模糊的權重計算公式:

微信小程序,iBeacon,測距,穩定程序

轉換成js代碼:

//求一維隊列某點的高斯模糊權重 @param(隊列長度,目標位置, 平均差)const getOneGuassionArray = function (size, kerR, sigma) { if (size % 2 > 0) {  size -= 1 } if (!size) {  return [] } if (kerR > size-1){  return [] } let sum = 0; let arr = new Array(size); for (let i = 0; i < size; i++) {  arr[i] = Math.exp(-((i - kerR) * (i - kerR)) / (2 * sigma * sigma));  sum += arr[i]; } return arr.map(e => e / sum);}

關于“偏大值”和“偏小值”的概念將在下文介紹,這里只要知道我們的模糊目標是那些“極端數據”就行了。

時間加權

基于采樣隊列求平均的處理方式,不可避免的會讓結果產生滯后性,這時可以引入時間加權的補償算法。

所謂時間加權,是指在求平均值的時候,給距離當前時間較近的值更高的計算權重,反之給距離當前時間較遠的值較低的計算權重,實現起來也非常簡單。

以最簡單的權重分配為例,將采樣隊列一分為二,按時間遠近定位為“當前組”和“過去組”,比如說我想讓當前組的權重是過去組的2倍,那么只要將當前組數據全部復制一份加入隊列,然后再計算新隊列的平均值。

//時間加權處理queue = queue.slice(0, parseInt(queue.length / 2)).concat(queue)//求平均return arrayAverage(queue)

動態跟進

經過時間加權處理后,數據的滯后性會得到一定的抑制,但如果遇到比較“陡峭”的距離變化,這種處理仍然會給出一個相對“平滑”的反饋,為了讓穩定程序能更好的感知動態變化,并且做出跟進反應,還需要人為的設置一些特殊條件。

首先,如何判斷移動設備正在遠離或靠近?

這里有一個簡單的思路,可以先找出采樣隊列中的最大值和最小值,然后以一定的閾值找出偏大值和偏小值。比如隊列中的最大值是3,最小值是1,閾值設置為0.1m,那么大于2.9m的數據都算偏大值,小于1.1m的數據都算偏小值。偏大值和偏小值的隊列長度最長不超過總隊列的二分之一。

然后,如果偏大值集中在隊列的前三分之一部分,那么我們可以認為移動設備正在果斷遠離;反之偏小值集中在隊列的前三分之一部分,則可以認為移動設備正在靠近。

//maxCount為偏大值的序號數組//minCount為偏小值的序號數組//queueLength為隊列長度if (arrayAverage(maxCount) < parseInt(queueLength / 3)) {  console.log(`正在遠離`)} else if (arrayAverage(minCount) < parseInt(queueLength / 3)) {  console.log(`正在靠近`)}

基于這種遠離和靠近的趨勢判斷,我們可以人為的讓數據向運動方向做更激進的傾斜。怎么做呢?跳過時間加權邏輯,如果判斷為正在遠離,那么就將隊列中的偏小值過濾掉,反之則將偏大值過濾掉,只計算剩下的數據;這種處理會得到一個明顯過激的結果,但考慮到現實世界中的運動往往具有慣性,這種激進處理,可能會更貼合真實的運動情況,而且讓數據的響應更“靈敏”。

效果檢驗

做到目前為止效果怎么樣呢,直接看圖吧。

下圖中,綠線依然是rssi值,紅線是根據rssi直接算出來的瞬時測距結果,黃線是加入穩定程序后的測距結果。

第一張圖是相對靜止的條件,可以看到黃線相對紅線明顯更加平穩,說明穩定程序還是起作用的。

微信小程序,iBeacon,測距,穩定程序

第二張圖是模擬快速遠離的場景,可以看到黃線在保證平穩的前提下緊跟紅線,沒有被甩掉,主要體現的是穩定程序的動態跟進效果。

微信小程序,iBeacon,測距,穩定程序

第三張圖是掄胳膊甩手機+遮擋信號模擬出的場景,貌似穩定程序也架不住了,有點飄忽。

微信小程序,iBeacon,測距,穩定程序

以上是關于穩定程序的簡要實現思路,生產環境中肯定會面臨更加復雜的情況,免不了還要做大量調試,這里只是拋磚引玉。

總結

藍牙測距簡單來說就是一個公式的應用,本身比較簡單,基于測距可以實現很多近場應用,比如近場簽到、近場推送等等,更進一步甚至可以實現對移動設備的定位,有了定位信息,很多室內定位、室內導航相關的應用就都可以實現了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品国产精品大乳美女| 夜夜嗨av一区二区三区四区| 久久久av一区| 国产精品美女免费| 国产精品日日摸夜夜添夜夜av| 欧美又大又硬又粗bbbbb| 国产一区二区三区精品久久久| www.久久色.com| 久久在线免费观看视频| 91色视频在线导航| 国产精品xxx视频| 久久国产精品首页| 欧美一区二三区| 午夜精品国产精品大乳美女| 欧美日韩一区二区三区在线免费观看| 午夜精品一区二区三区在线视频| 久久久精品视频成人| 国产成人精品久久亚洲高清不卡| 欧美www视频在线观看| 欧美xxxx综合视频| 国产成人精品999| 亚洲人成人99网站| 久久久成人精品| 国产成人一区二区三区小说| 欧美性jizz18性欧美| 亚洲国产又黄又爽女人高潮的| 国产精品永久免费| 亚洲第一视频网| 精品人伦一区二区三区蜜桃免费| 亚洲免费一在线| 亚洲在线一区二区| 亚洲欧美国产精品久久久久久久| 国产v综合ⅴ日韩v欧美大片| 久久五月天色综合| 成人h视频在线观看播放| 国产香蕉精品视频一区二区三区| 成人写真福利网| 国产精品成人av性教育| 国产xxx69麻豆国语对白| 国产精品99久久99久久久二8| 国产精品久久激情| 久久精品视频在线| 日韩成人在线网站| 精品动漫一区二区三区| 日韩欧美国产骚| 欧洲成人免费aa| 亚洲精品www久久久久久广东| 91欧美精品午夜性色福利在线| 欧美性黄网官网| 伊人久久五月天| 日韩有码片在线观看| 91免费欧美精品| 欧美极品少妇与黑人| 日韩视频欧美视频| 中文字幕在线亚洲| 国内精品久久久久久久久| 欧美成年人视频| 蜜臀久久99精品久久久无需会员| 欧美日韩一区二区精品| 全色精品综合影院| 亚洲成人精品视频| 国产欧美韩国高清| 欧美成年人视频网站| 精品少妇一区二区30p| 欧美国产日本高清在线| 尤物99国产成人精品视频| 国产日韩精品入口| 欧美精品成人在线| 欧美在线视频免费| 国产97在线|日韩| 亚洲欧美另类在线观看| 国产精品99久久久久久白浆小说| 日韩精品在线免费观看视频| 国产精品免费观看在线| 中文字幕亚洲自拍| 国产精品永久免费视频| 中文字幕日韩av| 国产精品精品视频一区二区三区| 欧美激情性做爰免费视频| 国产精品你懂得| 国产精品美女久久久久久免费| 成人a视频在线观看| 久久男人的天堂| 日韩美女视频在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 日韩av高清不卡| 欧美成年人网站| 亚洲图片欧美日产| 日韩视频精品在线| 国产亚洲xxx| 全亚洲最色的网站在线观看| 91精品久久久久久久久久久久久| 亚洲精品网址在线观看| 成人午夜黄色影院| 国产精品久久久久久久久久尿| 精品久久久久久久久久久| 亚洲欧洲午夜一线一品| 久久亚洲精品小早川怜子66| 日韩欧美亚洲一二三区| 57pao成人永久免费视频| 91视频免费在线| 午夜精品在线视频| 久久综合88中文色鬼| 色综合久久中文字幕综合网小说| 国产一区二区三区视频免费| 日韩在线观看电影| 中文字幕亚洲欧美日韩高清| 少妇激情综合网| 日韩免费中文字幕| 7777免费精品视频| 国产成人精品久久亚洲高清不卡| 91精品在线影院| 欧美野外wwwxxx| 中文字幕精品在线| 97色在线视频| 国产精品久久久一区| 日韩精品亚洲视频| 成人精品网站在线观看| 欧美亚洲视频在线看网址| 精品视频—区二区三区免费| 久久在线免费视频| 日韩成人在线视频| 日韩在线中文字幕| 久久99亚洲精品| 亚洲色图激情小说| 自拍偷拍亚洲区| 视频一区视频二区国产精品| 国产成人精品日本亚洲专区61| 日韩在线观看免费高清完整版| 久久婷婷国产麻豆91天堂| 亚洲综合中文字幕68页| 欧美xxxx14xxxxx性爽| 不卡在线观看电视剧完整版| 亚洲一区二区久久久久久| 国产视频丨精品|在线观看| 久久久噜噜噜久久中文字免| 亚洲xxxx妇黄裸体| 亚洲精品白浆高清久久久久久| 亚洲午夜未删减在线观看| 亚洲一级免费视频| 久久99热精品| 日韩电影在线观看中文字幕| 欧美激情中文字幕乱码免费| 日韩欧美成人网| 欧美最顶级丰满的aⅴ艳星| 国产999精品久久久| 亚洲一区二区三| 精品久久久久久久久久久| 亚洲激情视频在线观看| 日韩欧美在线免费观看| 日韩av在线影视| 欧美高清自拍一区| 欧美激情一二区| 亚洲石原莉奈一区二区在线观看| 精品久久久久久亚洲精品| 欧美夫妻性生活xx| 91精品久久久久| 久久久久久尹人网香蕉| 精品国产精品自拍| 亚洲国产97在线精品一区| 97国产suv精品一区二区62| 欧美日韩中文字幕在线| 欧美精品在线视频观看| 麻豆精品精华液|