欢迎光临散文网 会员登陆 & 注册

如何用蓝牙实现无线定位--系统原理及信号塔设置

2022-12-26 14:04 作者:机器谱  | 我要投稿

一、系统原理

1. 简介

本项目将利用多个BLE4.0蓝牙模块,配合主控板、OLED显示屏等,构建一个无线定位系统。

本项目的系统构成为:3个信号塔,1个中控台,2个被定位的目标。

       无线定位的用途有很多。比如,我们可以把固定的目标1看作等待救援的人或物,把可移动的目标2看作前来救援的机器人,就可以虚拟出一个救援场景模型。

       而现实中使用蓝牙技术进行无线定位,多见于商场、图书馆等室内环境的定位和导航。比如,在商场内安装数个蓝牙信号发射源;在商家门口安装蓝牙定位设备;对于顾客,则可以直接使用其智能手机的蓝牙模块,再配合一个商场专用的手机App或者小程序,就可以让顾客非常方便的在商场内部寻找自己想要到达的商家等。

2. 定位原理

(1)rssi无线接收信号强度

       Received Signal Strength Indication接收的信号强度指示,通过接收到的信号强弱测定信号点与接收点的距离,进而根据相应数据进行定位计算的一种定位技术。

       RSSI是射频信号理论术语,主要应用于发射机和接收机之间的距离测量。该方法是依据接收信号能量强度确定距离,对通信信道参数要求较高。其测距理论是:依据无线电波或声波在介质中传输,信号功率是随传播距离衰减的原理。根据信标节点已知信号的发射功率和节点接收的信号功率,通过信号与距离之间的衰减模型,就可以计算出节点间的距离。由于信号传播的过程中,受到距离和障碍物的影响。信号的功率强度随之衰减,间接影响精度。所以要求得到良好的精度,短距离才会体现这一点。

       RSSI的定位技术相比于TOA、TDOA、AOA、GPS具有成本低、容易实现等优势。如果室内定位精度要求不高,基于RSSI的定位技术完全可以满足。而且,现阶段对于作为节点的传感器,都能够完成发射测试信号功率的任务。主要进行实验时,节点发送数据包,也获取RSSI的测量值。该定位技术既无需额外硬件,又能完成复杂信息的分析处理,减小通信消费,节约成本,比较适用于无线传感器网络的定位系统。

几种测距方式对比 :

(2)rssi三点定位算法的基本原理

       三点定位算法在需要进行定位的空间放置3个AP(无线访问接入点),并且3个AP的位置已知,如果知道该空间内某位置的信号强度则可建立信号衰减模型,根据该信号强度计算出该位置到三个AP的距离。使用某位置移动设备的信号强度即可估算出其到附近AP的距离,如果能确定若干AP的位置,即可确定该移动设备的位置。由于障碍物的存在,信号衰减模型在实际使用时会存在一定误差。

已知三个点的坐标和未知点到这三个点的rssi的信号值,求解未知点的坐标。

首先是将rssi信号转换为距离:

d%3D10%5E%7B((ABS(RSSI)-A)%2F(10*n))%7D

其中d为距离,单位是m。

RSSI为rssi信号强度,为负数。

A为距离探测设备1m时的rssi值的绝对值,最佳范围在45-49之间。

n为环境衰减因子,需要测试矫正,最佳范围在3.25-4.5之间。

       在获取未知点到三个点的距离后,剩下的就是求解未知点的坐标。我们都知道两个圆会相交于一个或者两个点(如果相交),那么三个圆如果相交的话,必然会交于一个点(三个探测设备在一条直线上的情况下有可能相交于两个点,这里不考虑),所以我们要求解的未知点便是以三个已知点为圆心,以他们与未知点之间的距离为半径画出的三个圆的交点。那么这个问题就转化为了求三个已知圆的交点,然后如果根据圆的方程:

(x_1%20%E2%80%93%20x)%5E2%20%2B%20(y_1-y)%5E2%20%3D%20r_1%5E2

(x_2%20%E2%80%93%20x)%5E2%20%2B%20(y_2-y)%5E2%3D%20r_2%5E2

(x_3%20%E2%80%93%20x)%5E2%20%2B%20(y_3-y)%5E2%3D%20r_3%5E2

求解的话,是非常难求出未知点的坐标的。

这里介绍另一种程序容易实现的计算方法:

、判断任意两个圆是否相切(内切或外切),这里可以设定一个误差允许值d,也就是(x_1%20%E2%80%93%20x_2)%5E2%20%2B%20(y_1-y_2)%5E2%3D%20(r_1%2Br_2%2Bd)%5E2满足上述公式时就认为两个圆相切,其中d为误差值,可以是正数或者负数。如果两个圆相切的话,那么交点就比较好求解了:

x%20%3D%20x_1%2B%20(x_2%20-%20x_1)*(r_1%2F(r_1%20%2B%20r_2))

y%20%3D%20y_1%20%2B%20(y_2-%20y_1)*(r_1%2F(r_1%20%2B%20r_2))

       求解到x和y的坐标后,只需要用第三个圆进行验证,即求出这个点到第三个圆的圆心的距离,再和第三个圆的半径做比较,如果在误差允许范围内,那么就可以认为求得的x,y是三个圆的交点,也就是未知点的坐标。

、没有任意两个圆相切,那么就先用两个圆求解两个交点,如下图:

其中A,B是两个圆心,坐标分别为(x_ay_a)和(x_by_b),C,D是两个圆的交点,E为AB与CD的交点。

其中

AB%5E2%20%3D%20(x_a%20%E2%80%93%20x_b)%5E2%20%2B(y_a-y_b)%5E2

其中

AC%5E2%20%3DAE%5E2%20%2B%20CE%5E2         ……………………1

BC%5E2%20%3D%20BE%5E2%2B%20CE%5E2         ……………………2

AC%20%3D%20r_a

BC%3D%20r_b

AE%20%2B%20BE%20%3D%20AB%20%3D%20(x_a%20%E2%80%93%20x_b)%5E2%2B%20(y_a%20%E2%80%93%20y_b)%5E2

等式2转换为

BC%5E2%20%3D%20(AB%20-%20AE)%5E2%20%2B%20CE%5E2

BC%5E2%20%3D%20AB%5E2%20%2B%20AE%5E2%20%E2%80%93%202AB%5Ccdot%20AE%20%2B%20CE%5E2   ……………………3

等式3减去等式1:

BC%5E2%20-%20AC%5E2%20%3D%20AB%5E2%20%E2%80%93%202AB%5Ccdot%20AE

AE%20%3D%20(r_b%20%5E2%20-%20r_a%20%5E2%20-AB%5E2)%2F(%20%E2%80%93%202AB)

于是可以根据以下公式求得CE

CE%5E2%20%3D%20AC%5E2%20%E2%80%93%20AE%5E2

我们还可以获取E点的坐标 (x_E%2C%20y_E)

x_E%20%3D%20x_a%20%2B%20(%20(x_b-%20x_a)*AE%20)%2FAB

y_E%20%3D%20y_a%20%2B%20(%20(y_b-%20y_a)*AE%20)%2FAB

然后我需要求得AB和CD的斜率 k_%7BAB%7Dk_%7BCD%7D

k_%7BAB%7D%20%3D%20(y_b%20-%20y_a)%2F(x_b%20-%20x_a)

k_%7BCD%7D%20%3D%20(-1)%2Fk_%7BAB%7D      //这里要注意kAB为0的情况

然后求得CD和 x 轴的夹角

%E2%88%A0CDX%20%3D%20atan(k_%7BCD%7D)

这时候就可以求得C (x_c%2C%20y_c)和D(x_d%2C%20y_d)的坐标

x_c%20%3D%20x_E%20%2B%20CE*cos(%E2%88%A0CDXs)

y_c%20%3D%20y_E%20%2B%20CE*sin%20(%E2%88%A0CDXs)

x_d%20%3D%20x_E%20-%20CE*cos(%E2%88%A0CDXs)

y_d%20%3D%20y_E%20-%20CE*sin%20(%E2%88%A0CDXs) //这里也要注意sin%20(%E2%88%A0CDXs)cos(%E2%88%A0CDXs)为nan的情况。

       至此,我们就求得了两个圆的两个交点坐标,然后只需要用这两个点去第三个圆做验证,就可以获得三个圆的交点,也就是我们要求的未知点。

       当我们基于rssi的三点定位算法实现蓝牙无线定位时,可按如下图所示位置放置蓝牙信号发射塔。


       在理想情况下,以三个定节点为圆心,各自与盲节点的距离为半径的圆会交于一点,但是实际测量中,因为有误差因素,导致三组方程出现6个解(即三圆两两相交,产生6个交点,如上图。选取靠内的三个交点(即图中的红色区域),取它们的坐标的平均值作为最终定位的盲节点坐标,即可完成定位。

二、信号塔设置

1. 配置BLE4.0模块

       根据三点定位原理,本项目需要使用3个信号塔。3个信号塔的主体均为BLE4.0模块,需要把BLE4.0模块的AT指令设置为“从设备”。

方法为:

(1)给控制板刷一套空的程序。初始打开arduino IDE或新建,都是空程序。

(2)按下图所示连接电路,错误的连接会导致模块损坏。将蓝牙模块使用杜邦线连接到Bigfish扩展板上,并将扩展板插到控制板上。

(3)打开Arduino的串口监视器,输入AT指令。

测试查询、设置主从模式

注:该指令执行后,会导致模块延时500ms重启。

BLE4.0模块的完整AT指令集可以参考如何使用探索者通信模块【https://www.robotway.com/h-col-141.html】

(4)信号塔的三个BLE4.0a蓝牙模块都设为从设备后,使用以下命令直接进行配置。在查询模块的MAC地址时,可以将查询到底地址统一记录在一个文本文件中,以便后续编写使用。(可参考《蓝牙配置说明.txt》

信号塔设备MAC地址:

以上地址可根据自己的BLE4.0a蓝牙模块进行修改,详细参考《蓝牙配置说明.txt》

2. 信号塔的安装

将配置好的BLE4.0a蓝牙模块按照下图所示与电池盒进行连接,用于之后安装在信号塔中(注:红色正极线接蓝牙模块的3.3V,黑色负极线接蓝牙模块的GND,错误的连接会导致模块损坏)。


用零件将其固定。

这样的信号塔需要做三个。


3. 资料下载

资料内容:蓝牙配置说明.txt

资料下载链接:https://www.robotway.com/h-col-167.html


想了解更多机器人开源项目请关注机器谱网站https://www.robotway.com







如何用蓝牙实现无线定位--系统原理及信号塔设置的评论 (共 条)

分享到微博请遵守国家法律