同样的UWB,为什么定位精度差很多?

纵观以UWB技术为核心的应用与电厂、化工厂等工业企业人员定位系统,在定位精度上都声称能够达到厘米级精准,然而实际应用上却总是差了些许意思。任何产品都有理论值与实际值,例如某些新能源汽车号称标准续航300公里,但实际上可能连200都不到,某些手机号称可以待机7天,也没见有多少人能坚持1天不充电的。定位系统同样如此,不管是UWB技术,还是WIFI、蓝牙技术等等,抛开实际应用场景及部署情况谈精度都是耍流氓。

在了解定位精度之前,我们先了解下UWB的测距方法:TDOA与TOF。

TOF

飞行时间法(Time of flight,TOF)是一种双向测距技术,它通过测量UWB信号在基站与标签之间往返的飞行时间来计算距离。根据数学关系,一点到已知点的距离为常数,那么这点一定在以已知点为圆心,以该常数为半径的圆上。有两个已知点,就有两个交点。以三个已知点和距离作三个圆,他们交于同一个点,该点就是标签的位置。

基于TOF的定位方法测距不依赖基站与标签的时间同步,故没有时钟同步偏差带来的误差,但TOF测距方法的时间取决于时钟精度,时钟偏移会带来误差。为了减少时钟偏移量造成的测距误差,通常采用正反两个方向的测量方法,即远端基站发送测距信息,标签接收测距信息并回复,然后再由标签发起测距信息,远端基站回复,通过求取飞行时间平均值,减少两者之间的时间偏移,从而提高测距精度。

TDOA

到达时间差(Time Differenceof Arrival,TDOA)是一种利用到达时间差进行定位的方法又称为双曲线定位。标签卡对外发送一次UWB信号,在标签定位距离内的所有基站都会收到无线信号,如果有两个已知坐标点的基站收到信号,标签和基站的距离间隔不同,因此这两个收到信号的时间节点是不一样的,根据数学关系,到已知两点为常数的点,一定处于以这两点为焦点的双曲线上。那么有四个已知点(四个定位基站)就会有四条双曲线,四条双曲线交于一点就是标签的位置。

TDOA算法并不是直接利用信号到达时间,而是利用多个基站接收到信号的时间差来确定移动目标的位置。因此与TOA相比并不需要加入专门的时间戳来进行时钟同步,定位精度相对有所提高。

使用场景

两种算法各自适合什么样的场景呢?TOF适合环境较为复杂的应用场景,例如制造型工厂、电厂、化工厂、办公楼等。TDOA适合环境空旷较为简单的应用场景,例如户外运动、仓库等。TOF、TDOA选择的参考依据可以从标签的续航能力、定位精度、单区域支持标签容量、安装环境、标签是否支持反向数据控制(例如振动)等。

在实际应用中,有很多因素会影响精度,要想提高精度,需要在干扰的源头上要有所控制。基站安装的位置不能贴近大面积金属,远离玻璃窗户、玻璃墙壁、液体容器、日光灯、大型机械设备、高功率无线电装置等。天线的安装要与地面垂直。其次,标签的佩戴方式。由于人体对UWB的信号具有很强的吸收力,所以标签贴近胸口会明显影响精度。难以排除的多径效应,由于电磁波在空间传播时会经过一些金属或其他介质的反射,导致多径效应的不可避免。因此该部分对精度的影响只能通过后期对采样的处理以及算法来弥补。

市面上多数声称可以达到厘米级的定位,在实际应用中却天差地别,实验室的理论值支撑不了应用上的不足。要达到理想状态,除了在部署上下功夫外,最重要的是对应用场景的深入了解,以华安联大为例,其结合电厂实际情况与UWB定位技术的人员定位系统,能够在控制成本的情况下达到优秀的定位精度,满足电厂真实的需求,这不仅仅是技术先进的原因,更在于多年来耕耘行业的结果。选择对的方案,事倍功半,反之劳心劳力,从来没有最好的应用方案,最适合实际情况的,就是最理想的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用GoConvey编写单元测试的一些总结

一、尽量用Convey将所有测试用例的Convey汇总 用Convey嵌套的方法,将所有测试用例的Convey用一个大的Convey包裹起来,每个测试函数下只有一个大的Convey。比如下面的示例代码: import ("testing". "github.com/smartystreet…

Linux--线程(与进程区别)

Linux线程 1、线程与进程 进程可以看成只有一个控制线程:一个进程同时只做一件事情。有了多个控制线程后,可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。 进程是程序执行时的一个实例,是分配系统资源&am…

【面试题】智力题

文章目录 腾讯1000瓶毒药里面只有1瓶是有毒的,问需要多少只老鼠才能在24小时后试出那瓶有毒。有两根不规则的绳子,两根绳子从头烧到尾均需要一个小时,现在有一个45分钟的比赛,裁判员忘记带计时器,你能否通过烧绳子的方…

C++---异常处理

异常处理 异常处理try语句块和throw表达式异常的抛出和捕获异常的抛出和匹配原则 异常安全异常规范标准异常 异常处理 异常是指存在于运行时的反常行为,这些行为超出了函数正常功能的范围。当程序的某部分检测到一个他无法处理的问题时,需要用到异常处理…

transforms数据预处理【图像增强】 ->(个人学习记录笔记)

文章目录 1. 安装2. transforms——Crop 裁剪2.1 transforms.CenterCrop2.2 transforms.RandomCrop2.3 transforms.RandomResizedCrop2.4 transforms.FiveCrop2.5 transforms.TenCrop 3. transforms——Flip 翻转3.1 transforms.RandomHorizontalFlip3.2 transforms.RandomVert…

leetcode 817. 链表组件(java)

链表组件 题目描述HashSet 模拟 题目描述 给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums,该列表是上述链表中整型值的一个子集。 返回列表 nums 中组件的个数,这里对组件的定义为:链表中一段…

【学习笔记】EC-Final 2022 K. Magic

最近的题都只会抄题解😅 首先,操作顺序会影响答案,因此不能直接贪心。其次,因为是求贡献最大,所以可以考虑枚举最终哪些位置对答案产生了贡献,进而转化为全局贡献。 1.1 1.1 1.1 如果 [ l 1 , r 1 ) ⊆ [ …

zabbix学习1--zabbix6.x单机

文章目录 1. 环境2. MYSQL8.02.1 单节点2.2 配置主从 3. 依赖组件4. zabbix-server5. agent5.1 yum5.2 编译 附录my.cnfJDK默认端口号 1. 环境 进入官网查看所需部署环境配置以及应用版本要求https://www.zabbix.com/documentation/current/zh/manual/installation/requiremen…

MySQL 解决数据重复添加

1. sql语句: insert ignore into insert ignore into 表名 (xx1,xx2,xx3) VALUES (#{xx1},#{xx2},#{xx3}) 2. 复合索引

pytest(二)框架实现一些前后置(固件,夹具)的处理,常用三种

为什么需要这些功能? 比如:web自动化执行用例前是否需要打开浏览器?执行用例后需要关闭浏览器? 示例代码: import pytest class Testcase:#这是每条测试用例执行前的初始化函数def setup(self):print("\n我是每…

Android保存文件路径汇总

一、Android 中存储可以分为两大类:私有存储和共享存储 私有存储 (Private Storage) : 每个应用在内部存储种都拥有自己的私有目录 (/data/data/packageName),其它应用看不到,彼此也无法访问到该目录共享存储 (Shared Storage) : 除了私有存…

7-38 掉入陷阱的数字

输入样例: 5 输出样例: 1:16 2:22 3:13 4:13 ACcode: #include <bits/stdc.h>using namespace std;int main(){int n;cin >> n;vector<int> ans;int limit 1;ans.push_back(n);for(int i0; i<limit; i){//各位数字的和int sum 0;int num ans[i];w…

C++:组播代码实现

以下为C&#xff1a;组播代码实现 multicast_recver.cpp // its a demo to receive multicast udp data with the one of multi net interfaces.... #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #inc…

【TA】OP-TEE demo学习

前言&#xff1a;工作原因接触Apple软件需要搭建TA环境&#xff0c;涉及到OP-TEE&#xff0c;学习一下 OP-TEE&#xff08;Open Portable Trusted Execution Environment&#xff09;是一个开放源代码的可信执行环境&#xff08;TEE&#xff09;软件框架。它提供了安全的执行环…

echarts的折线图,在点击图例后,提示出现变化,不报错。tooltip的formatter怎么写

在点击图例的年后&#xff0c;提示框会相应的变化&#xff0c;多选和单选都会响应变化。tooptip的重度在formatter tooltip:{show:true,trigger:"axis",alwaysShowContent:true,triggerOn:"mousemove",textStyle:{color:"#fff"},backgroundColor…

平板用的触控笔什么牌子好?开学值得推荐的ipad手写笔

在开学季有什么电容笔值得购买&#xff1f;和以往的电容笔比起来&#xff0c;目前的电容笔多出了许多新的功能&#xff0c;比如具备了防误触功能&#xff0c;可以防止手指无意中碰到屏幕而导致书写失灵&#xff0c;以及可以随意调节笔画的粗细等等。苹果原装的Pencil如今卖得非…

微信小程序 按钮颜色

<button type"primary">主要按钮样式类型</button> <button type"default">默认按钮样式类型</button> <button type"warn">警告按钮样式类型</button> <view>按钮plain是否镂空</view> <bu…

Swagger(2):Springfox简介

使用Swagger时如果碰见版本更新或迭代时&#xff0c;只需要更改Swagger的描述文件即可。但是在频繁的更新项目版本时很多开发人员认为即使修改描述文件&#xff08;yml或json&#xff09;也是一定的工作负担&#xff0c;久而久之就直接修改代码&#xff0c;而不去修改描述文件了…

1.简单工厂模式

UML类图 代码 main.cpp #include <iostream> #include "OperationFactory.h" using namespace std;int main(void) {float num1;float num2;char operate;cin >> num1 >> num2 >> operate;Operation* oper OperationFactory::createOpera…

Mars3d插件参考开发教程并在相关页面引入

问题场景&#xff1a; 1.在使用Mars3d热力图功能时&#xff0c;提示mars3d.layer.HeatLayer is not a constructor 问题原因: 1.mars3d的热力图插件mars3d-heatmap没有安装引用。 解决方案&#xff1a; 1.参考开发教程&#xff0c;找到相关的插件库&#xff1a;Mars3D 三维…