如何使用三角测量来确定具有3个节点的用户的位置?

时间:2014-11-21 19:38:44

标签: algorithm math map bluetooth triangulation

我试图通过蓝牙强度(RSSI值)找到用户。

我有3个Raspberry PI,每个都收集用户的信号强度。让我们说节点返回:

node1 = 65
node2 = 70
node3 = 75

如何通过三角测量找到用户并将其指向地图上并输出RSSI值?

我研究过TrilaterationCeva's Theorem,但不知道如何实施它们。

我不确定如何在一个环境中定位节点,我是否给主节点一个x = 0 y = 0的位置,我该如何给其他两个节点?

2 个答案:

答案 0 :(得分:3)

你的方法基于一些脆弱的假设。

三边测量是基于对已知位置的三个(或四个,如果在三维中工作)距离测量来确定空间中的位置。三角测量基于对已知位置的三个角度(来自哪个方向的信号)测量来确定空间中的位置。三个Raspberry PI节点固定在空间中,您有一些测量系统,其中每个节点的(x,y(z))位置都是已知的。

你所拥有的是某些功率单位的信号强度的三个值(比如说dBm),并且你希望它代表距离特定接收器的距离。问题是,除非你在一个空旷的大房间里这样做,否则它不是一个特别好的代理。射频信号从某些东西反弹,产生很少的干扰节点,阴影和各种有趣的东西。根据环境的混乱程度,这可能会使您的三边测量结果的准确性变差,或者完全没用。

假设您在空仓库中操作,首先您必须选择一些坐标系并进行一些测量并为您的节点分配位置。使一个节点为零简化了您的一个测量,您只需要对其他测量进行相对测量。确保X轴和Y轴垂直。

然后,您将需要生成一些将RSSI与距离相关联的数据。也就是说,走远离节点的已知距离并记下RSSI号是什么。如果幸运的话,每个节点的测量结果都是一样的。它可能不是 - 并非所有无线电都是平等创造的。而且,并非所有天线都在每个方向上均匀地辐射功率。使用该数据和一些手工操作来近似距已知节点位置的距离;从那里开始,其余的实现应该是直接的几何形状(毫无疑问,wiki已经布局了)。

答案 1 :(得分:1)

正如Mikeb的回答所说,从信号强度中定位设备的方法不是一个好方法(除非你有很多节点,并希望找到最接近的节点,如电话单元没有GPS)

另一种方法是测试信号的传播时间

  • 因为您的距离或电子设备必须足够大/足够快才能完成此任务以满足您的预期准确度

    1. 你必须有时间同步
    2. 从每个节点向目标设备发送时间戳包(或连续时间信号)
    3. 在设备上一次性(time_of_receive)获得3次(每个已知节点一次)
    4. 将所有3 + 1次发送到需要排名的设备
    5. 将时差转换为距离
      • 时间越长,距离越远......
      • dtime = time_received_from_node-time_of_receive
      • 如果你知道发送的时间那么容易(dist = c * dtime)+/-环境对信号速度的影响
      • 如果没有(比如在GPS上)则更复杂,你必须从时移中搜索单个节点的开始时间
      • 可能来自3个节点,但是暴力攻击的复杂性很可怕,因此更多的节点更好
      • 如果您的数据传输通道不同步(或延迟),则短距离的精度也可能很差
    6. 当你得到3个距离然后只解决3个球的交点
      • center是节点,radius是计算距离
      • 如果由于测量时间错误而未找到交叉点,则应向半径添加一些安全值