2

我试图通过以(x,y,z)的形式指定坐标来在特定路径上移动移动 AUV(节点)。据我探索,UnetSim 仅通过指定速度和方向来提供节点移动。有没有办法让节点在部署后按顺序移动到一组特定的位置?

4

1 回答 1

2

UnetSimMobilityModel中的节点有一种机制来定义模拟中不同时间的分段位置信息。

node.motionModel属性是s 中的一个ListHashMap可以包含以下任何键:

  • time:移动动作有效的时间。
  • location: 坐标 ( [-50.m, -50.m, 0])。
  • speed: 以 mps ( 1.mps) 为单位的速度。
  • heading: 以度为单位的航向 ( 30.deg)。
  • turnRate: 转弯率 ( 1.dps)。
  • diveRate: 潜水率 ( -0.1.mps)。

所以使用timeandlocation键我们可以实现你想要做的事情。

UnetIDE 捆绑了一个用于模拟移动性的示例。在此示例中,有 4 个子示例可以模拟移动性的各种方式。

第三个示例,三角运动(潜水),可以很容易地更新以指示模拟过程中各个时间点的坐标,如下所示。

println 'Simulation AUV-3: Triangular motion (with dive)'
simulate 15.minutes, {
  def n = node('AUV-3', location: [-50.m, -50.m, 0], mobility: true)
  n.startup = trackAuvLocation
  n.motionModel = [[time:  0.minutes, location: [-50.m, -50.m, 0] ],
                   [time:  3.minutes, location: [-100.m, -50.m, 0] ],
                   [time:  4.minutes, location: [-100.m, -100.m, 0] ],
                   [time:  7.minutes, location: [-50.m, -100.m, 0] ],
                   [time:  10.minutes, location: [-50.m, -50.m, 0] ]]

}

如果使用plot-tracks.groovy工具绘制,这将给出以下图。

auv 轨道

于 2019-04-05T05:37:19.467 回答