Tcl 如何通过NS2中的TOA和TDOA计算两个节点之间的距离?

Tcl 如何通过NS2中的TOA和TDOA计算两个节点之间的距离?,tcl,wireless,ns2,Tcl,Wireless,Ns2,我是ns2的初学者。我有两个固定节点,它们在网络中定期发送消息。这两个节点同时发送它们的周期性消息。此外,我的网络中有一些移动节点。我想计算一个移动节点和两个固定节点之间的距离,最好使用TOA或TDOA方法(我们没有移动节点位置,节点也没有配备GPS)。我不知道如何计算NS2中这些节点之间的TOA或TDOA,同时考虑估计准确的距离。我怎么做? 我有急事,请帮帮我 # Distance calculation set nbr [open distance w] puts $nbr "\t\t\

我是ns2的初学者。我有两个固定节点,它们在网络中定期发送消息。这两个节点同时发送它们的周期性消息。此外,我的网络中有一些移动节点。我想计算一个移动节点和两个固定节点之间的距离,最好使用TOA或TDOA方法(我们没有移动节点位置,节点也没有配备GPS)。我不知道如何计算NS2中这些节点之间的TOA或TDOA,同时考虑估计准确的距离。我怎么做? 我有急事,请帮帮我

# Distance calculation

set nbr [open distance w]

puts $nbr "\t\t\t\t\t Detail of positions"

puts $nbr "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

puts $nbr "\tNode\t\tNb node\t\tNode-Xpos\tNode-Ypos\tNb-Xpos\t\tNb-Ypos\t\tDistance(d)"

puts $nbr "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

close $nbr

proc distance { n1 n2 nd1 nd2} {

  global c n bnd src dst j0 j1 

  set a 0

  set nbr [open distance a]

  set x1 [expr int([$n1 set X_])]

  set y1 [expr int([$n1 set Y_])]

 set x2 [expr int([$n2 set X_])]

  set y2 [expr int([$n2 set Y_])]

  set d [expr int(sqrt(pow(($x2-$x1),2)+pow(($y2-$y1),2)))]



      puts $nbr "\t$nd1\t\t$nd2\t\t$x1\t\t$y1\t\t$x2\t\t$y2\t\t$d"



  close $nbr
}



U can use above function to print distance node's of all nodes in ns2.
调用函数“distance”打印邻居列表 比如说,

for {set i 0} {$i <$val(nn)} {incr i} {
      for {set j 0} {$j <$val(nn)} {incr j} {

        $ns at 1.002 "distance $n($i) $n($j) $i $j" 
      }
    }

与基于时间的定位算法相比,RSS计算精度较低,到达角需要更多的处理和复杂的数学操作。因此,最好使用到达时间或到达时差来计算距离。但它们需要额外的硬件实现。

我认为发送和接收时间是NS2中数据包的字段,我们可以计算它们之间的差异,对吗?但我以前读过,应该考虑源和目标中的计算延迟。另外,对于TDOA计算以及接收数据包的拥塞和延迟情况下的距离估计,我们应该怎么做?@M.Alimohammadi,因此鼓励人们在寻求帮助之前自己尝试一下。这种解决方案是位置估计最简单的方法。也许我的问题不清楚。我编辑了我的问题,并在括号中添加了一条注释。当我们有移动节点时,网络部署不是静态的,因此在现实世界中,如果我们想通过固定节点来估计移动节点的距离或位置,我们不知道移动节点的真实位置(x,y),也不想得到移动节点发送的位置信息(不可信). 另一方面,如果移动节点进行位置估计,我们假设它没有配备GPS,并且不知道它在网络中的位置(x,y)来计算它与固定节点的欧氏距离。因此我们应该估计它的位置(移动节点位置)根据接收到的信号强度或到达的时差或到达接收机的角度。到达的时差更准确。因此,我想通过时差估计节点之间的距离。
here val(nn) denotes number of nodes.