三点定位法原理及实现——蓝牙定位

  • 前言
  • 原理
    • 两圆相交
    • 两圆不相交
  • 代码实现

前言

最近在做蓝牙室内定位,蓝牙定位用到的一个非常经典的算法就是三点定位法

原理

三点定位法,顾名思义首先有三个圆点,同时我们也知道这三个圆的半径,最终求得三圆的交点,达到定位效果。如图:

我们的目的是求得O点,利用毕达哥拉斯定理我们可以快速求得O点坐标。不过事与愿违,现实情况并不总是如人意,而是这样:

甚至有的情况其中两个圆或者三个圆完全就不相交,如下图:

由于这些误差原因,实际上想要准确的知道使用者当前位置是相当困难的,但是我们可以通过运算得到一个近似解。为了应付这些情况,我们需从两个圆入手,先找到两两圆之间的中心点,再求三圆的中心点。

除去圆中圆的情况(现实基本上不存在),两圆关系可分为两种,相交,不相交。

两圆相交


可知此时两圆交点A,B,我们的目标点是AB中点C。根据勾股定理我们可知
{PQ=PC+QCQA2=QC2+AC2PA2=PC2+AC2\begin{cases} \quad PQ=PC+QC\\ \quad QA^2=QC^2+AC^2\\ \quad PA^2=PC^2+AC^2 \end{cases} ⎩⎪⎨⎪⎧​PQ=PC+QCQA2=QC2+AC2PA2=PC2+AC2​
解得:
PC=PQ2+PA2−QA22PQPC=\frac{PQ}{2}+\frac{PA^2-QA^2}{2PQ}PC=2PQ​+2PQPA2−QA2​
根据比例关系求得坐标:
{x=xP+(xQ−xP)PCPQy=yP+(yQ−yP)PCPQ\begin{cases} \quad x=x_P+\frac{(x_Q-x_P)PC}{PQ}\\ \quad \\ \quad y=y_P+\frac{(y_Q-y_P)PC}{PQ} \end{cases}⎩⎪⎨⎪⎧​x=xP​+PQ(xQ​−xP​)PC​y=yP​+PQ(yQ​−yP​)PC​​

两圆不相交


如图,我们需要求O点,简单的做法就是直接根据半径比例计算
{sum=rP+rQx=xP+(xQ−xP)rPsumy=yP+(yQ−yP)rPsum\begin{cases} \quad sum=r_P+r_Q\\ \quad \\ \quad x=x_P+\frac{(x_Q-x_P)r_P}{sum}\\ \quad \\ \quad y=y_P+\frac{(y_Q-y_P)r_P}{sum} \end{cases}⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​sum=rP​+rQ​x=xP​+sum(xQ​−xP​)rP​​y=yP​+sum(yQ​−yP​)rP​​​

代码实现

struct Point{             //点坐标int x;                //x轴int y;                //y轴Point() :x(0), y(0) {};
};//三点定位法
//dis:半径
//points:圆心
Point threePoints(float *dis, Point *ps) {Point p;if (dis == NULL || ps== NULL)return p;for (int i = 0; i < 3; ++i) {//检查距离是否有问题if (dis[i] < 0)return Point();for (int j = i + 1; j < 3; ++j) {//圆心距离float p2p = (float)sqrt((ps[i].x - ps[j].x)*(ps[i].x - ps[j].x) +(ps[i].y - ps[j].y)*(ps[i].y - ps[j].y));//判断两圆是否相交if (dis[i] + dis[j] <= p2p) {//不相交,按比例求p.x += ps[i].x + (ps[j].x - ps[i].x)*dis[i] / (dis[i] + dis[j]);p.y += ps[i].y + (ps[j].y - ps[i].y)*dis[i] / (dis[i] + dis[j]);}else {//相交则套用公式(上面推导出的)float dr = p2p / 2 + (dis[i] * dis[i] - dis[j] * dis[j]) / (2 * p2p); p.x += ps[i].x + (ps[j].x - ps[i].x)*dr / p2p;p.y += ps[i].y + (ps[j].y - ps[i].y)*dr / p2p;}}}//三个圆两两求点,最终得到三个点,求其均值p.x /= 3;p.y /= 3;return p;
}

三点定位法原理及实现——蓝牙定位相关推荐

  1. 揭秘蓝牙定位技术,实现精准室内导航

    提及定位,我们首先想到的是GPS定位系统.然而,GPS主要适用于室外环境,在室内定位方面存在局限性,这主要归结于两个原因:首先,GPS信号功率极低,接收要求相当高,只有在天线对空无遮挡物的情况下才能接 ...

  2. 三点定位法(原理及实现)

    三点定位法(原理及实现) 背景 学习笔记 参考 https://blog.csdn.net/jjwwwww/article/details/87714318#_4 由于文中大量数据来自上述博客,因此记 ...

  3. 全面阐述蓝牙高精度AOA定位技术原理,帮你解决蓝牙定位一切隐患-新导智能

    随着市场对低功耗蓝牙定位服务的需求不断增长,越来越多的客户希望将定位服务支持整合到现有产品中,包括智能物流.智能医院病患监护和智能学校领域等.这对于苏州新导低功耗蓝牙高精度AoA定位的商业化非常重要. ...

  4. 蓝牙定位技术的原理和应用

    蓝牙(Bluetooth)是一种短距离的无线通信技术,可以通过一个短距离的通讯网络,让计算机或移动设备与另一台计算机或智能设备建立通讯连接.蓝牙也被用来为移动电话和个人数字助理(PDA)设备实现定位. ...

  5. 室内定位常用定位技术_米级蓝牙定位方案,厘米级UWB定位方案

    前言 随着物联网生态链逐渐走向成熟,各行各业对定位的需求也大大增加.由于GPS卫星信号在室内无法定位,且容易受到各种无线电信号的干扰,为实现"最后一公里"的室内位置服务,目前主流的 ...

  6. 商用蓝牙定位算法剖析

    商用蓝牙定位算法剖析 前言 XXX公司定位算法 运用资源 定位算法逻辑 实体蓝牙布置 优点和缺点 XXXX公司定位算法 运用资源 定位算法逻辑 实体蓝牙布置 优点和缺点 前言 目前在做蓝牙定位,找了成 ...

  7. RFID+Lora+蓝牙定位技术解决室内人员定位技术难题,实现全方位定位监测-新导智能

    要实现现实生活中人以及物的定位,并不是那么容易就能实现的,要根据具体情况具体分析,人的定位:养老院的老人,工地的工人,化工厂的作业人员.物的定位:机场手推车,仓库物资,文物展品等.具体要应用哪种定位技 ...

  8. BLE 蓝牙网关与蓝牙定位

    参考:[IoT]BLE 蓝牙网关与蓝牙定位技术解析 地址:https://blog.csdn.net/liwei16611/article/details/85245109?spm=1001.2014 ...

  9. html5 接收蓝牙广播_蓝牙定位技术浅析(化工厂应用)

    蓝牙定位基于RSSI(Received Signal Strength Indication,信号场强指示)定位原理.根据定位端的不同,蓝牙定位方式分为网络侧定位和终端侧定位.由于蓝牙由于是近场通信其 ...

  10. 蓝牙5.1定位--蓝牙定位信标--新导智能

    蓝牙历经点对点音频传输运用,BLE 智能穿戴设备运用;Mesh智能家居运用;在昨日宣布正式进入准确认位商场范畴.依据行业观察,蓝牙定位服务的商场时机在过去几年中迅速增长,到2022年蓝牙定位解决计划产 ...

最新文章

  1. 38首经典华语情歌E文版
  2. 人工智能:决胜未来之道培训课程大纲
  3. 互联网绑上美国外交政策战车
  4. 学JS的心路历程Day28 - PixiJS -基础(二)
  5. python--微信小程序获取手机号码报错
  6. Web 标准实践系列(一)——Google 的首页
  7. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
  8. AI 时代,为何机器人公司无法盈利只能走向倒闭?
  9. javascript中的时间处理
  10. 解决IE6、IE7、IE8、Firefox兼容的两种方案
  11. c读取txt文件内容并建立一个链表_面试官给我挖坑:rm删除文件之后,空间就被释放了吗?...
  12. socket用起始码分割_编码器基础——格雷码的编码美学
  13. html中的表格背景透明度标签,透明度 背景
  14. 小心 transmittable-thread-local 的这个坑
  15. 机器学习笔记之朴素贝叶斯分类算法
  16. LED智能紫外(UVC+UVA)消毒灯方案
  17. python后缀名是什么意思_python文件的后缀名是什么
  18. 解决:windows10网络图标被重名名为Network
  19. SMT钢网:MARK点如何选择?
  20. Anolis OS8.6QU1通过cephadm部署ceph17.2.0分布式块存储(三)添加其它主机和添加mgr节点

热门文章

  1. 笔记本电脑合上盖子不休眠设置方法
  2. 王慧文清华产品课(六)
  3. 手机计算机文件夹加密文件,手机文件夹加密锁软件加密步骤【图文教程】
  4. goland等IDE连接远程服务器
  5. LAYA_展示富文本
  6. 三种碎片化方法:RECAP, BRICS与eMolFrag
  7. 解决小程序直播组件live-player全屏问题
  8. burst什么意思_burst是什么意思_burst在线翻译_英语_读音_用法_例句_海词词典
  9. 安装bluefish
  10. linux dsi接口,RPi 树莓派 DSI 接口研究 MIPI raspberry pi