前言
三点定位法是蓝牙定位中非常实用的算法,但是实际使用的时候,我们可能会遇到超过三点的情况,那么此时一种可取的方式就是只取最强的三个信号,也可以通过最小二乘法来对多点进行快速求解。
思路
最小二乘法的精髓在于通过矩阵运算来快速求解。那么如何把蓝牙信号转换为矩阵呢?
我们假设有一组蓝牙坐标 P { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } P\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} P{
(x1,y1),(x2,y2),...,(xn,yn)}和对应的蓝牙距离值(通过蓝牙RSSI计算得到) D = { d 1 , d 2 , . . . , d n } D=\{d_1,d_2,...,d_n\} D={
d1,d2,...,dn},可设此时目标位置在 ( x , y ) (x,y) (x,y)处,我们可以得到公式:
{ ( x 1 − x ) 2 + ( y 1 − y ) 2 = d 1 2 ( x 2 − x ) 2 + ( y 2 − y ) 2 = d 2 2 . . . ( x n − x ) 2 + ( y n − y ) 2 = d n 2 \begin{cases} \quad (x_1-x)^2+(y_1-y)^2=d_1^2\\ \quad (x_2-x)^2+(y_2-y)^2=d_2^2\\ \quad\quad\quad\quad\quad ...\\ \quad (x_n-x)^2+(y_n-y)^2=d_n^2 \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧(x1−x)2+(y1−y)2=d12(x2−x)2+(y2−y)2=d22...(xn−x)2+(yn−y)2=dn2
化简得:
{ x 2 + y 2 − 2 x 1 x − 2 y 1 y = d 1 2 − x 1 2 − y 1 2 x 2 + y 2 − 2 x 2 x − 2 y 2 y = d 2 2 − x 2 2 − y 2 2 . . . x 2 + y 2 − 2 x n x − 2 y n y = d n 2 − x n 2 − y n 2 \begin{cases} \quad x^2+y^2-2x_1x-2y_1y=d_1^2-x_1^2-y_1^2\\ \quad x^2+y^2-2x_2x-2y_2y=d_2^2-x_2^2-y_2^2\\ \quad\quad\quad\quad\quad\quad\quad\quad ...\\ \quad x^2+y^2-2x_nx-2y_ny=d_n^2-x_n^2-y_n^2 \end{cases}