DWM1000 多个标签定位讨论 --[蓝点无限]

2024-03-11 05:40

本文主要是介绍DWM1000 多个标签定位讨论 --[蓝点无限],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

多标签代码已经基本实现,完成代码可以在论坛上下载

http://bphero.com.cn/forum.php?mod=viewthread&tid=53&fromuid=2 

蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛

 

 

20181125 更新,按照下面的逻辑,已经完成代码,全部代码编译通过,需要后期测试。

1 单个标签定位模式

定位实现基于DWM1000 基础API 实验SS-TWR或者DS-TWR方法,非官方定位源码,官方定位源码使用的是大状态机。

当单个标签定位基本流程是TAG 与ANTHOR0 基于SS/DS-TWR计算距离,然后依次再 ANTHOR1 ANTHOR2计算距离,分别步骤如下图的0 , 1 ,2 ,其中每一步都会有poll、response 以及finnal 多条信息。

而且,通过代码知道,tag 发送一定信息后,会进入等待状态,而anthor0 发送一条信息后也会进入等待状态,但是由于TAG分别与各个ANTHOR通信,所以中间的等待状态不会被破坏。

2 多个标签定位模式

下图是一个多标签定位简图,图中 有两个TAG,3个ANTHOR,其中每个TAG依然单独分别按照顺序与ANTHOR0/1/2 通信

但是会出现如下几种特殊情况需要处理:

1 TAG0 可能和 TAG1 同时给某一个ANCHOR发送信息,这个同时是相对广义的,因为通过代码发现,TAG和ANCHOR 之间测距需要一段时间,交换多条信息后才能实现,假如TAG0 和 ANTHOR已经建立连接,正在交换信息,若TAG1 也发送Poll 信息给ANTHOR0时,ANTHOR0 需要丢弃TAG1 的信息。

处理方法:当ANTHOR 接收到一条Poll信息后,更新目标TAG ID,若后面再接收到信息TAG ID与poll 信息TAG ID一致回复finnal 信息,否则认为冲突不做处理,若连续接收到两条poll 信息,更新目标TAG ID,以最后一次的TAG ID为准。

 

2 更为严重的是,TAG1 发送的任何信息TAG0都会收到,当然可以和上面一样比较TAG ID后可以丢弃,但是会导致TAG0 退出正常的测距循环(每次TAG 和 ANTHOR 进行测距,多条信息依次发送,当TAG发送一条信息后进入等待状态,若此时收到TAG1的信息,那TAG0就会退出与ANTHOR之间测距),这样的严重后果是,两个TAG相互发送数据,导致每个TAG均不能完成任何依次完成的测距。

处理办法:这个问题有一点类似“多核”问题,需要引入"锁"或者“信号量”的概念,ANTHOR 可以认为是资源。

1 程序初始化,TAG0默认获得"锁"或者“信号量”,与三个ANTHOR 发送信息,测试距离,当测距后。

2 TAG0 发送释放信号量信息,若网络中有其他TAG,收到该信息后,回复给TAG0(只有TAG可以回复该信息),且将TAG ID回复给TAG0,可以扩展其他信息。

3 TAG0 收到信号量请求信息后,发送“信号量”释放信息,“信号量”释放信息包含TAG ID以及其他扩展信息。

4 TAG收到信号量后,与系统中的三个ANTHOR进行数据交换,进行测距,测距完成后,发送释放“信号量”信息

5 TAG0 收到释放信号量信息,回收信号量,并回复给之前TAG

6 TAG0 根据网络状况,决定自己测距,还是继续释放信号量给其他TAG

 其它问题:SS-TWR/DS-TWR 都会遇到问题,同一个区域内,如果有多个定位网络,则由于没有进行有效过滤,多个网络如果模式相同,数据相互影响(相同模式:包含射频频率 preamble 等设定相同)

后期需要引入PANID 以及 filter等,将不符合的信息直接在底层就过滤掉。 

 

TAG 共享信号量代码参考

  1 #ifdef TAG
  2     /* Set expected response's delay and timeout. See NOTE 4 and 5 below.
  3      * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */
  4     dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS);
  5     dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS);
  6 
  7     OLED_ShowString(0,0,"DS TWR TAG:");
  8     OLED_ShowString(0,2,"Distance:");
  9 
 10     if(TAG_ID ==  MASTER_TA

这篇关于DWM1000 多个标签定位讨论 --[蓝点无限]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796821

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

MySQL中闪回功能的方案讨论及实现

《MySQL中闪回功能的方案讨论及实现》Oracle有一个闪回(flashback)功能,能够用户恢复误操作的数据,这篇文章主要来和大家讨论一下MySQL中支持闪回功能的方案,有需要的可以了解下... 目录1、 闪回的目标2、 无米无炊一3、 无米无炊二4、 演示5、小结oracle有一个闪回(flashb

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码