UWB的定位算法(简单详细易懂)

2023-11-11

系列文章目录



前言


一、控制部分

在这里插入图片描述

二、UWB 的测距原理是什么?

双向飞行时间法( TW-TOF, two way-time of flight)每个模块从启动开始即会生成一条独立的时间戳。
模块 A 的发射机在其时间戳上的 Ta1发射请求性质的脉冲信号,
模块 B 在 Tb2时刻发射一个响应性质的信号,被模块 A 在自己的时间戳Ta2时刻接收。 有次可以计算出脉冲信号在两个模块之间的飞行时间,从而确定飞行距离 S。
S=Cx[(Ta2-Ta1)-(Tb2-Tb1)]/2 (C 为光速)

图示:在这里插入图片描述

UWB 定位的原理是什么?1) 距离 = 光速 * 时间差 / 2; XY 平面, 3 个圆,能够确定一个点; 2) XYZ 空间, 4个圆,能够确定一个空间点;

三、TOF 数学计算

在这里插入图片描述
在这里插入图片描述

T1 -T6 会在下一节代码里标注出来,官方提供的代码主要用的就是此类算法。

四、Trilateration 三边测量法的原理与计算方法(TDOA平面)

三边测量法的原理如右图所示,以三个节点 A、 B、 C 为圆心作圆,坐标分别为(Xa, Ya), (Xb, Yb), (Xc, Yc),这三个圆周相交于一点 D,交点 D 即为移动节点, A、 B、 C 即为参考节点, A、 B、 C 与交点 D 的距离分别为da,db, dc。假设交点 D 的坐标为(X , Y)

计算公式:
在这里插入图片描述

如图所示:
在这里插入图片描述
可以得到交点 D 的坐标为:
在这里插入图片描述

1.三边测量法的缺陷是:

由于各个节点的硬件和功耗不尽相同,所测出的距离不可能是理想值,从而导致上面的三个圆未必刚好交于一点,在实际中,肯定是相交于一个小区域,因此利用此方法计算出来的(X, Y)坐标值存在一定的误差。这样就需要通过一定的算法来估计一个相对理想的位置,作为当前移动节点坐标的最优解。

2.Z 轴准确度比 X 轴 Y 轴要差一些?

如图所示, A0/A1/A2 为 3 个基站, T0 为标签, LA0T0 LA1T0 LA2T0
表示为每个基站到标签的距离。在测距完全准确的情况下,解算的 Tag 坐标应该在 T0, 但是, 由于实际测量值 LA0T0 LA1T0 LA2T0 可能偏大, 解算的位置在 T0’。 因为 A0/A1/A2 都在 xoy 平面,所以,测距的误差绝大多数会累加到 z 轴上,造成 z 轴数据的抖动。

在这里插入图片描述

五、TDOA(3D空间)。

  1. 概念

到达时间差(Time Difference of Arrival,TDOA)是一种利用到达时间差进行定位的方法又称为双曲线定位。标签卡对外发送一次UWB信号,在标签无线覆盖范围内的所有基站都会收到无线信号,如果有两个已知坐标点的基站收到信号,标签距离两个基站的间隔不同,那么这两个基站收到信号的时间点是不一样的。

2.举例

例如,小明的妈妈在村口喊“小明,回家吃饭啦!”,根据距离=时间*速度,其中速度不变(声音在空气中的传播速度是340m/s),那么声音传播的时间是由距离决定的,因此村里的人听到小明妈妈声音的时间点是不一样的。

同理,标签与不同基站的距离不同,不同基站收到同一标签信号的时间节点不同,因此得出一个“到达时间差”的概念。

TDOA定位的原理正是利用多个基站接收到信号的时间差来确定标签的位置

3.图解
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

TDOA技术不需要定位标签与定位基站之间进行往复通信,只需要定位标签发射一次UWB信号,工作时长缩短了,功耗也就大大降低了,故能做到更高的定位动态和定位容量。

六、优化定位,更加准确。

UWB 模块测量值,总是比实际距离要大一些;部分用户反应, UWB模块测量值比实际距离要小,这是怎么一回事呢?这是由于,我们使用的现场,环境都是不同的,受经纬度、空气质量、环境障碍物、海拔等等因素干扰,所以在产品化的进程中,必须要对模块进行校准。

一般情况下,校准只需要在现场进行一次,通过 1 个 Anchor 和 1 个 Tag 的测距,得到修正系数,并不需要每个 Anchor和 Tag 都进行标定。
利用 Microsoft 2016 Excel 软件,进行数据拟合,并生成拟合公式。拟合公式有很多,最简单的是线性方程。

在这里插入图片描述

测距值存在 instancegetidist_mm(0), instancegetidist_mm(1), instancegetidist_mm(2), instancegetidist_mm(3),这四个变量里,
每个距离,都需要代入刚才计算出来的校准公式内。在 main.c 函数中, 对于 mc 帧的程序:
在这里插入图片描述
修正后:
在这里插入图片描述

解释下:
消息 ID, 一共有三类,分别为 mr, mc, ma
mr 代表标签-基站距离(原生数据)
mc 代表标签-基站距离(优化修正过的数据,用于定位标签)
ma 代表基站-基站距离(修正优化过,用于基站自动定位)

七、图示测试。

注意:其中一个基站必须跟电脑的USB口相连。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四个基站,两个标签运动轨迹。

八、总结。

下一张讲代码,超级详细。有点累了,睡觉!晚安。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UWB的定位算法(简单详细易懂) 的相关文章

随机推荐

  • 二分查找题目汇总

    1 Search In Rotated Array 2 Search In Rotated Array if A begin A mid begin skip 就可以了 3 Search For a Range 1 标准二分 左右扩展 最坏
  • Ubuntu22.04 LTS 显卡相关命令

    第一部分查看驱显卡信息 一 查看显卡型号 i表示不区分大小写 lspci grep i nvidia 必须安装好nvidia驱动 nvidia smi L 二 查看显卡驱动版本 cat proc driver nvidia version
  • 支付宝支付接口(即时到账交易接口)

    create direct pay by user 官方参数API文档地址 https doc open alipay com docs doc htm spm a219a 7629140 0 0 dsNjYY treeId 108 art
  • ajax中如何隐藏列,【JS】在chrome等浏览器中,如何隐藏掉ajax请求,使其不会显示在console中...

    由于项目的保密性需要 需要隐藏掉ajax请求接口的地址 请问各位都是怎么做的 回答 纯后端渲染 不用ajax 后端的安全性怎么可能让前端来保证 你最多只能签名一下参数 可以尝试使用中转服务器 假设服务器 B 需要保密 你可以转而请求 A 服
  • Java类加载器

    目录 0 知识储备 JVM内存分区 双亲委派机制 1 Java类加载机制 1 1核心类加载器启动原理 类加载的含义 类加载过程 1 类的加载 2 类的连接 3 初始化 1 2类加载的双亲委派机制 2 类加载器的类型 3 自定义类加载器的实现
  • eclipse svn 忽略 target/.project /.classpath /.settings等 目录

    问题描述 用eclipse同步项目时 会出现target project classpath settings等与代码无关的文件 介绍两种办法 推荐第二种 方法一 在新建项目的时候 在第一次commit 到 SVN 之前 先在项目的根目录设
  • L1,L2,L3 Cache缓存原理

    一 介绍 CPU缓存 Cache Memory 也被称为Cache 是存储器子系统的组成部分 存放着程序经常使用的指令和数据 从广义的角度上看 Cache是快设备为了缓解访问慢设备延时的预留的Buffer 从而可以在掩盖访问延时的同时 尽可
  • qt 中报 error: No rule to make target 这个错误的就解决方法

    最近在用qt设计数据库课设的前端界面 在做好的界面更改资源文件时qt给报了这个错误 error No rule to make target one OneDrive 01 png needed by debug qrc res cpp 我
  • LDAP 常用名词

    LDAP目录结构的最顶部就是根 也就是所谓的基准 DN DN通常有一下三种格式为 DN domain name 域名 域名系统 域名服务器 假定我在一家电子商务公司工作 这家公司在internet上的名字为foobar com o foob
  • web前端统计埋点分离方案

    前言 最近一直在思考一个吸引人的标题对一篇文章的阅读到底影响有多大 所以这篇文章取了一个比较大的标题 内容是炒冷饭 主要是再介绍一下之前在业务里遇见关于统计埋点的问题 以及我的解决方案 Tagmanager Tagmanager tagma
  • selenium解决下拉表单和浏览器下拉进度条问题的问题

    1 有的时候使用selenium自动化模块时会遇到下拉表单的问题 name如何解决这个问题呢 Selenium专门提供了Select类来处理下拉框 导入 Select 类 from selenium webdriver support ui
  • 网站发布一般步骤以及解决方法

    1 在D盘 随便一个地方 新建文件夹 2 在vs项目中点击发布弹出对话框 3 配置文件选择自定义 4 下一步 Publish method 选择file system 5 target location选择第一步创建的文件夹 6 下一步 f
  • 《软件测试的艺术》

    1 每当测试一个程序时 应当想到要为程序增加一些价值 通过测试来增加程序的价值 是指测试提高了程序的可靠性或质量 提高了程序的可靠性 是指找出并最终修改了程序的错误 因此 不要只是为了证明程序能够正确运行而去测试程序 相反 应该一开始就假设
  • datetime数据类型在页面上的显示不完全

    下面两个代码全包含在script标签中 function fmtDate sDate var dt new Date sDate var y dt getFullYear var m dt getMonth 1 var d dt getDa
  • 用VS2015开发Linux程序

    1 开发工具 VS2015Update3 Visual C for Linux Development VC Linux exe 下载链接 介绍 VMware 虚拟机软件 ubuntu 16 04 desktop amd64 iso Lin
  • C# 预处理器指令(学习心得 24)

    预处理器指令 指导编译器在实际编译开始之前对信息进行预处理 所有的预处理器指令都是以 开始 在一行上 只有空白字符可以出现在预处理器指令之前 预处理器指令不是语句 所以它们不以 分号 结束 一个预处理器指令必须是该行上的唯一指令 超级小白友
  • Mysql 一主多备安装部署文档

    Mysql 一主多备安装部署文档 文章目录 Mysql 一主多备安装部署文档 1 主节点配置 1 1 my cnf 配置 1 2 配置同步账号 1 3 授权同步账号 1 4 授权远程登录 1 5 刷新 1 6 查看Master状态 2 Sl
  • vmware workstation 16 player 导出虚拟机ovf文件

    vmware workstation 16 player 导出虚拟机ovf文件 1 找到vm的ovftool 位于C Program Files x86 VMware VMware Player OVFTool 2 找到虚拟机对应 vmx文
  • MATLAB对csv文件的某一列数据进行数据处理

    clc clear all close all M csvread shui A Aref csv 1 2 N csvread kongA Aref csv 1 2 baseline 1 mean M 1 16 baseline 2 mea
  • UWB的定位算法(简单详细易懂)

    系列文章目录 文章目录 系列文章目录 前言 一 控制部分 二 UWB 的测距原理是什么 三 TOF 数学计算 四 Trilateration 三边测量法的原理与计算方法 TDOA平面 1 三边测量法的缺陷是 2 Z 轴准确度比 X 轴 Y