2013-05-27 18 views
1

我正在尝试在程序中使用三边测量来模拟它在现实生活中的方式。 我有3个发射器发出一个信号,在信号移动的每个正方形后变弱。我正在使用一个2D数组和代码来生成一个粗略的数字圆。 这说明发射机使用二维三边测量查找对象的位置

00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000001000000000 
00000000112110000000 
00000001223221000000 
00000000000 
000000000 
00000000000 
00000001223221000000 
00000000112110000000 
00000000001000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 

我的问题是一个,我该如何找到在网格中的接收器的位置? 如何找到所有三个圆相交的位置? 我试图设置圆的方程相等,并解决,但没有给我任何东西,它给了我虚数。

我也可以编辑代码,以使圈子没有填充,如果有帮助。 各圆的半径可以改变

每个发射器的信号强度被预先由接收器已知的,并且强度也可以改变(在100,200,或300的范围或任何其它范围)

+0

我有一些其他问题。是否有变送器的最小/最大半径?每台变送器的半径是相同还是不同? – 3xil3

+0

您可以尝试使用RANSAC:http://users.utcluj.ro/~raluca/prs_2012/prs_lab_02e.pdf – NeplatnyUdaj

+0

您是否每个接收器都有三个数字(信号强度)?给定两个信号强度,你知道两个发射机的实际距离,还是只知道它们的距离比? –

回答

0

你基本上有两个问题

  1. 寻找发射
  2. 的位置计算路口

点1:

点1可以通过检查网格中的特定点以蛮力的方式解决。然而,在尝试找到第一个时可能会有一些优化。只要你找到一个,你就可以根据你找到的发射器的半径和你需要找到的发射器的半径,对他人的位置进行有根据的猜测。

我会推荐以接近最大已知半径的间隔探测电网。假设所有发射器完全网格内,你可以探索像下图(假设你有最大半径为5) - A的标记探测点:

00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000001000000000 
0000A00011211A000000 
00000001223221000000 
00000000000 
000000000 
00000000000 
00000001A23221000A00 
00000000112110000000 
00000000001000000000 
00000000000000000000 
00000000000000000000 
0000A00000000A000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000000000000000 
00000000A00000000A00 

有了这个,你可以探测你当前电网8个探头。当涉及到网格边缘的距离时,这可以进一步减少一些额外的检查。但在你的情况下,你会发现你的第三个探测点位于半径范围内。从那里开始,您可以中断探测并查找找到的发射器的中心。

既然您已经找到了至少一个发射器的中心,您可以对其他发射器的位置进行有根据的猜测,因为您知道每个发射器的范围,并且您知道与下一个发射器的距离将会小于最大+最小范围的范围。再次,您可以在网格内以适当的时间间隔探测以快速找到第二个发射器。再次计算第二个发射器的确切中心。

第三个发射器很容易计算。计算两个找到的发射器之间的线的中心点(在坐标系或网格中很容易)。缺失点应位于您找到的两个发射机之间的虚线所在的两侧,距离该线路中心点尚未找到的发射机范围的最大距离。

点2:

答案可以在这个post

找到一种替代办法是TULIP Algorithm