unetsim:是否有通过仅指定坐标而不是速度或方向将节点从一个坐标移动到另一个坐标的功能?

unetsim: Is there a functionality to move a node from one coordinate to another by specifying the coordinates only and not velocity or direction?

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

UnetSim 节点中的 MobilityModel 有一种机制可以在模拟中为不同时间定义分段位置信息。

node.motionModel 属性 是 HashMapList,可以包含以下任何键:

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

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

UnetIDE 与 example for simulating mobility 捆绑在一起。在此示例中,有 4 个子示例可以模拟各种移动方式。

3rd example, Triangular motion (with diving) 可以轻松更新以指示模拟期间各个时间点的坐标,如下所示。

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 工具绘制,这将给出以下图。