藍芽定位演算法融合慣性導航

2021-09-12 07:11:11 字數 1701 閱讀 8357

做了藍芽定位有一段時間了,藍芽定位演算法想要做到高精度是非常困難的。由於藍芽本身精度不夠,接收裝置也多種多樣難以統一,造成純藍芽定位的效果很難做到理想狀態。所以我們往往需要通過別的的手段來提高定位精度,如標題所言,這裡選擇的是慣性導航。這篇文章的重點是描述怎樣融合藍芽定位和慣性導航,下面運用的藍芽定位和慣性導航都是用的非常簡單的演算法,僅供參考。

藍芽融合慣性導航的難點在於誰的權重更大,我該相信誰多一點。在兩種定位方式精度都不太高的時候,我們要根據他們的特點進行取捨,以此來提高定位精度。

藍芽的優勢:學過三點定位法的朋友應該知道,定位點始終在三點之內。所以在乙個大範圍內,藍芽的精度是相對靠譜的,而且隨著藍芽的密度提高,精度會隨之提高。

慣性的優勢:在是小範圍下運動會相對準確。

那結果顯而易見,大範圍移動以藍芽定位為準,小範圍移動主要依賴慣性導航。演算法的設計思路是這樣的,首先獲取藍芽定位座標p點(需要一套藍芽定位演算法,主流的是三點法,指紋法),在p的半徑十公尺的範圍內認為慣性導航更加準確,可以利用慣性隨意走動,然而一旦慣性導航超過了藍芽十公尺範圍,就認為慣性導航失精,以藍芽定位為準。

//位置結構

struct point;}

;//顯示位置

static point p;

//藍芽位置

static point bt;

//藍芽定位演算法所需資料

static vector ps;

//座標

static vector<

float

> ds;

//距離

static vector<

long

> ts;

//時間

static

long pretime=0;

//指南針方向

static

float angle=0;

//藍芽定位演算法,簡單,每次傳入藍芽的距離座標即可

//演算法保留過去4秒內的藍芽資料

//time,系統時間(單位:ms)

//距離dis,座標x,y(單位:m)

void

bluetooth

(long time,

float dis,

float x,

float y)

//每隔5秒更新一次藍芽資訊

if(time-pretime>

5000

)

point p0;

for(

int i=

0; isize()

;++i)

bt.x=p0.x;

bt.y=p0.y;

//初始位置以藍芽為準

if(p.x==

0&&p.y==0)

}}//獲取指南針方向

void

direction

(float angle0)

//重新整理計步資料

void

steps

(int step)

}//獲取位置資訊,建議0.5秒查詢一次

point getposition()

else

re.x=p.x;

re.y=p.y;

}return re;

}

藍芽5 1定位 藍芽定位信標 新導智慧型

藍芽歷經點對點音訊傳輸運用,ble 智慧型穿戴裝置運用 mesh智慧型家居運用 在昨日宣布正式進入準確認位 商場範疇。依據行業觀察,藍芽定位服務的商場時機在過去幾年中迅速增長,到2022年藍芽定位解決計畫產品將超越4億件年。藍芽 定位 許多藍芽追尋定位計畫已經深化到生活傍邊,比方藍芽愛好點 poi ...

大話UWB定位 之藍芽定位的煩惱

近些年室內定位被炒得非常火,提供更低成本 更高精度 更容易普及的室內定位技術一直是室內定位領域研究的終極目標。基於室內定位領域出現的定位技術也很多,有很多人嘗試使用藍芽定位方式做室內高精度應用,是否可行,本文我們就來分析一下!藍芽是如何在室內環境中進行定位呢?其具體定位原理是基於rssi訊號強度定位...

藍芽定位的產生 靈思科

物聯網最近幾年的競爭可以說非常激烈。nb lot,lora,zigbee,wifi,bluetooth,各門各派爭芳鬥豔。如果小夥伴平時比較關注物聯網的新聞應該會了解今年物聯網比較大的乙個新聞就是,年初的時候藍芽聯盟發布了乙個藍芽5.1新標準。藍芽5.1相對於之前標準的區別在於新增了乙個功能 尋向功...