我试图在程序中使用trilateration来模拟它在现实生活中的表现。 我有3个发射器发出一个信号在信号移动的每个方格后变弱的信号。我正在使用2D数组和代码,生成一个粗略的数字循环。 这显示了一个发射器
00000000000000000000
00000000000000000000
00000000000000000000
00000000001000000000
00000000112110000000
00000001223221000000
00000001234321000000
00000012344432100000
00000001234321000000
00000001223221000000
00000000112110000000
00000000001000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
我的问题是,如何在网格中找到接收器的位置? 如何找到所有三个圆相交的位置? 我尝试将圆的方程设置为彼此相等并求解,但这并没有给我任何东西,它给了我想象的数字。
如果有帮助的话,我也可以编辑代码以使圆圈不填充。 可以更改每个圆的半径
每个发射器的信号强度由接收器预先知道,强度也可以改变(在100,200或300范围或任何其他范围内)
答案 0 :(得分:0)
你基本上有2个问题
第1点:
可以通过以强力方式检查网格中的特定点来解决点1。然而,在尝试找到第一个时,可能会有一些最优化。一找到,就可以根据刚刚找到的变送器的半径和需要找到的变送器,对其他人的位置做出有根据的猜测。
我建议以接近最大已知半径的间隔探测网格。假设所有发射器完全位于网格内,您可以像下图中那样进行探测(假设您拥有的最大半径为5) - A标记探测点:
00000000000000000000
00000000000000000000
00000000000000000000
00000000001000000000
0000A00011211A000000
00000001223221000000
00000001234321000000
00000012344432100000
00000001234321000000
00000001A23221000A00
00000000112110000000
00000000001000000000
00000000000000000000
00000000000000000000
0000A00000000A000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000A00000000A00
使用此功能,您可以使用8个探头顶部探测当前网格。当涉及到网格边缘的距离时,可以通过一些额外的检查进一步减少这一点。但在你的情况下,你会注意到你的第三个探测点落在半径范围内。从那里你可以中断探测并找到找到的发射器的中心。
现在您已经找到了至少1个发射器的中心,您可以对其他发射器的位置进行有根据的猜测,因为您知道每个发射器的范围,并且您知道到下一个发射器的距离将是小于最大+最小范围的范围。再次,您可以在网格内以适当的间隔进行探测,以快速找到第二个发射器。再次计算第二个发射器的确切中心。
第三个变送器易于计算。计算位于2个发现的发射器之间的线中心的点(在坐标系或网格中很容易)。丢失的点应位于假想线的两侧,您在2个发现的发射器之间绘制,距离发射器范围的最大距离尚未从该线的中心点找到。
第2点:
答案可以在post
中找到替代方案可以是TULIP Algorithm