我正在编写一个涉及 2-UUV 和 1-USV 的模拟脚本。两者都在正交割草机运动模型中进行测量。我想留在两辆车的范围内,所以他们从同一个起点开始。我想知道如何定义USV
运动模型,使其在UUV
大多数情况下始终处于两者的通信范围内。
- 基本上我怎样才能手动提供动态路径规划/运动模型,
USV
以便我可以在UUV
大部分时间与两者进行沟通?甚至可能吗?有人可以提供一个基本的例子或指出我正确的方向吗?
这是我的模拟脚本:
import org.arl.fjage.RealTimePlatform
import org.arl.unet.sim.MotionModel
///////////////////////////////////////////////////////////////////////////////
// display documentation
println '''
Bedford Basin AUV node network
------------------------------
Node USV-1: tcp://localhost:1101, http://localhost:8081/
Node UUV-1: tcp://localhost:1102, http://localhost:8082/
Node UUV-2: tcp://localhost:1103, http://localhost:8083/
------------------------------
------------------------------
'''
///////////////////////////////////////////////////////////////////////////////
// simulator configuration
platform = RealTimePlatform // use real-time mode
// origin = [44.696178,-63.632992] // Bedford basin GPS co-ordinates
origin = [44.434153,-63.251702]
simulate{
def n1 = node 'USV', location: [0.m, -100.m, 1.8.m], heading: 45.deg, mobility: true, web: 8081, api: 1101, stack: "$home/etc/setup"
n1.motionModel = MotionModel.lawnmower(speed: 0.5.mps, leg: 200.m, spacing: 50.m, legs: 17)
def n2 = node 'UUV-1', location: [0.m, 0.m, 30.m], heading: 90.deg, mobility: true, web: 8082, api: 1102, stack: "$home/etc/setup"
// n2.motionModel = MotionModel.lawnmower(speed: 3.3554.mps, leg: 6000.m, spacing: 40.m, legs: 150)
n2.motionModel = MotionModel.lawnmower(speed: 0.3.mps, leg: 1000.m, spacing: 50.m, legs: 20)
def n3 = node 'UUV-2', location: [0.m, 0.m, 30.m], heading: 180.deg, mobility: true, web: 8083, api: 1103, stack: "$home/etc/setup"
// n3.motionModel = MotionModel.lawnmower(speed: 3.3554.mps, leg: 6000.m, spacing: -40.m, heading:90.deg, legs: 150)
n3.motionModel = MotionModel.lawnmower(speed: 0.3.mps, leg: 1000.m, spacing: -50.m, heading:90.deg, legs: 20)
}
- 如何使用
platform = DiscreteEventSimulator
运动模型?如果我想在更短的时间内模拟几个小时的模拟?
参考:
- “使用单个信标进行协作水下仅范围导航的路径规划”,M.Chitre