Is there a way to supply bathymetry to the custom channel?

68 views Asked by At

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 ?

1

There are 1 answers

3
Mandar Chitre On BEST ANSWER

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