我试图通过以(x,y,z)的形式指定坐标来在特定路径上移动移动 AUV(节点)。据我探索,UnetSim 仅通过指定速度和方向来提供节点移动。有没有办法让节点在部署后按顺序移动到一组特定的位置?
问问题
55 次
1 回答
2
UnetSimMobilityModel
中的节点有一种机制来定义模拟中不同时间的分段位置信息。
该node.motionModel
属性是s 中的一个List
,HashMap
可以包含以下任何键:
time
:移动动作有效的时间。location
: 坐标 ([-50.m, -50.m, 0]
)。speed
: 以 mps (1.mps
) 为单位的速度。heading
: 以度为单位的航向 (30.deg
)。turnRate
: 转弯率 (1.dps
)。diveRate
: 潜水率 (-0.1.mps
)。
所以使用time
andlocation
键我们可以实现你想要做的事情。
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工具绘制,这将给出以下图。
于 2019-04-05T05:37:19.467 回答