I am writing a simulation script which involves 2-UUV and 1-USV. Both Underwater vehicle doing surveying in orthogonal lawnmower motion model. I would like to stay in the range of both vehicle, so they started at the same origin point. I want to know that How can define USV
motion model in such a way that it is always in the communication range of both UUV
's for most of the time.
- Basically How can I manually provide dynamic path planning/ motion model to
USV
so that I can communicate to bothUUV
most of the time ? Is it even possible ? Could someone provide a basic example of this or point me in the right direction ?
Here is my simulation script :
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)
}
- How can I use
platform = DiscreteEventSimulator
with motion model ? If I want to simulate hours of simulation in smaller time ?
Reference:
- "Path planning for cooperative underwater range-only navigation using a single beacon", M.Chitre