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

时间:2014-01-07 07:09:43

标签: tcl wireless ns2

我是ns2的初学者。我有两个固定节点,定期在网络中发送消息。这两个节点同时发送它们的周期性消息。而且,我的网络中有一些移动节点。我想优先通过TOA或TDOA方法计算移动节点和两个固定节点之间的距离(我们没有移动节点位置,节点没有配备GPS)。我不知道如何在考虑估计精确距离的情况下在NS2中的这些节点之间计算TOA或TDOA。我该怎么做? 这对我来说很紧急,请帮助我。

2 个答案:

答案 0 :(得分:0)

# 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" 
      }
    }

以上行将在时间1.002打印所有节点之间的距离

here val(nn) denotes number of nodes.

答案 1 :(得分:0)

与基于时间的定位算法相比,RSS计算不太准确,并且到达角需要更多处理和复杂的数学操作,其中使用的到达时间或到达时间差对于距离计算是好的。但他们需要额外的硬件实现。