51uwb.cn
标题:
DWM1000 多模块定位
[打印本页]
作者:
tuzhuke
时间:
2018-11-21 11:29
标题:
DWM1000 多模块定位
为了管理方便,论坛是邀请制,如果需要注册论坛,点击论坛上方的“店铺”,旺旺联系免费获得邀请码
更新:代码已经实现:
http://bphero.com.cn/forum.php?mod=viewthread&tid=53&fromuid=2
之前代码中都是一个tag,多个anchor(准确的说是3个)
如何实现多个tag,也就是可以同时追踪多个被定位的物体。
原理很简单那,对于目前使用的信息加入一个tag 标识。
对于TAG来说,只处理收到信息包括TAG 本身的信息,忽略其它信息
而对于ANCHOR来说,因为ANCHOR 会处理两次来自TAG的信息(poll 和 final message), 这个之间不应该让其它tag 打断,做法是,设定一个全局变量,当收到poll message 后,后面的finnal message 只能是 上个poll tag 的信息,其它信息不处理。
存在问题,1 TAG 发送一条poll message 后,会进入等待状态,一个anchor 收到 poll messge 后,进行respone,此时由于多个TAG存在,可能有多个anchor 同时respone??
只处理respone message 包含自己TAG ID 的信息。 接着的问题会和下一个情况类似?
2 anchor 发送poll respone 后,会进入接收状态,多个tag 可能会同时发送多个finnal message,如果接收到一个错误的finnal message,那么后面直接进入了大循环了??
作者:
tuzhuke
时间:
2018-11-23 10:30
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等,将不符合的信息直接在底层就过滤掉。
作者:
uwbbb
时间:
2020-6-28 13:43
学习了,谢谢分享!!
欢迎光临 51uwb.cn (http://51uwb.cn/)
Powered by Discuz! X3.3