I am running underwater simulations using UnetStack Simulator. By default the simulations uses one of either ProtocolChannelModel
or BasicAcousticChannel
. Documentation
Let's say I provide GPS coordinates to the nodes. How can i provide the Bathymetry in the simulation to make it more reasonable ? I am planning to use the GEBCO 2019.
Is there a way to do that ?
Not out of the box, but it should be relatively simple to implement with a custom channel implementation (see section "Developing custom channel models" in the Unet handbook).
Outline:
Implement your own acoustic model (e.g. MyAcousticModel
):
class MyAcousticChannel extends AbstractAcousticChannel {
@Delegate AbstractAcousticModel acoustics = new MyAcousticModel(this)
@Delegate BPSKFadingModel comms = new BPSKFadingModel(this)
}
and call a propagation model that uses bathymetry (e.g. Bellhop) and feed it bathymetry from the GEBCO database. The MyAcousticModel
class would implement a AbstractAcousticChannel
, which provides you access to the location of the transmitter and the receiver, to extract bathymetry for. The channel model needs to return a received signal strength for each reception, which is simple to get from the propagation model transmission loss computation and the transmit power.
TIP: You would want to cache the propagation model run results so you don't have to recompute unless nodes move.
You'd then use the channel model MyAcousticChannel
in your simulations:
channel.model = MyAcousticChannel