OpenRSSI
开源空间三点定位(含高度,非伪3d)系统。严格来说更适合UWB?
使用了拟动量法计算误差。
项目链接
github.com/huzpsb/Open…
典型应用
动作捕捉
不同于SlimeVR,本方案的追踪结果是0累计误差的。你大可以趴在房间里面睡觉,几个小时后位置并不会漂移导致你的形象扭成麻花。
我们推荐使用BU01或者BU03的UWB模块;每个模块的参考报价是¥75...考虑到电池和盒子,可能100?注意一下,你需要在地上丢3个beacon。
BU03的误差是10cm(或者说±5cm)。参考内建的仿真代码,动捕的最终精度是半径为6cm的球;可以轻松松突破100fps。
RSSI定位
RSSI转半径后最大的问题也是误差处理,感觉目前的文献都没什么人提这个...啧...
具体RSSI转距离可以自己推算;值得一提的是不推荐通过只有beacon有RSSI功能,节点是蓝牙/Zigbee标签的方法来做。
如你所见,节点之间的位置关系也很重要。
科研用途
不需要我说了吧?(x
可改进点
提升精度
仅需悬空地安装一个信标。我祝你校准时不会自闭(不是)
简化安装
仅需先计算beacon位置即可。我在Num3d中为你留下了不少实用的函数,例如Rodrigues' rotation formula的实现 :)
减少计算
唉,嵌入式狂魔。好吧,我也说一下:
仅需在减少lr的if中将1.9改成2.1即可。
一些注释
代码结构
PCloudAnswer: 点云重建问题,包含了mock数据生成器。
PCloudQuestion: 点云重建结果,包含了点云压缩表示数据结构。
Num3d: 3d库。包含了诸多我没用到,但是我觉得你用的到的函数。
PhiSolver: 求解器。
Main: 测试程序。
有疑问?
请开启issue,看到了会回...但是不保证及时。
公式与引用
为了方便论文人在自己的论文中引用,我还是写一下(唉我真是个大善人)
LaTeX格式的,抄吧(
Citation:
AlvinChou @ WHU, Licensed under MIT.
目标节点初始位置通过加权基站位置计算:
tk(0)=(∑j=1nwj∑j=1nwjsjx,n1j=1∑nDkj,∑j=1nwj∑j=1nwjsjz)
其中权重 wj=Dkj21
对于每对节点 (i,j),计算运动向量:
Δij=(ti−tj)⋅∥ti−tj∥0.1Dij−∥ti−tj∥
总运动向量为所有配对运动向量的累加:
Δi=j=i∑Δij
目标节点位置更新公式:
tk(new)=tk(old)+η⋅Δk
学习率根据运动向量方向变化自动调整:
η(new)={0.9⋅η(old)1.5⋅η(old)if ∑i=1n+mI(Δi(new)⋅Δi(old)<0)>1.9n+motherwise