Определение местоположения акустического маяка с пассивной гидроакустической системой

Этот пример показывает, как симулировать пассивную гидроакустическую систему. Стационарный подводный акустический маяк обнаруживается и локализуется буксируемым пассивным массивом в мелководном канале. Акустический маяк передает 10-миллисекундный импульс с частотой 37,5 килогерц каждую секунду и моделируется как изотропный проектор. Локационная система буксирует пассивный массив под поверхностью, который моделируется как равномерный линейный массив. После обнаружения акустического сигнала-маяка для определения местоположения маяка используется устройство оценки направления прибытия.

Определите подводный канал

В этом примере акустический маяк расположен на дне мелководного канала глубиной 200 метров. Пассивный массив буксируется под поверхностью, чтобы определить местоположение маяка.

Сначала создайте многолучевой канал, чтобы передать сигнал между маяком и пассивным массивом. Рассмотрим десять путей распространения, включая прямой путь и отражения от верхней и нижней поверхностей. Пути, сгенерированные isopaths будет использоваться многолучевым каналом, channel, чтобы симулировать распространение сигнала.

propSpeed = 1520;
channelDepth = 200;
OperatingFrequency = 37.5e3; 

isopaths = phased.IsoSpeedUnderwaterPaths('ChannelDepth',channelDepth,...
  'NumPathsSource','Property','NumPaths',10,'PropagationSpeed',propSpeed);

channel = phased.MultipathChannel('OperatingFrequency',OperatingFrequency);

Задайте акустический маяк и пассивный массив

Акустическая волна-маяк

Задайте форму волны, излучаемую акустическим маяком. Форма волны является прямоугольным импульсом, имеющим интервал повторения 1 секунду и ширину 10 миллисекунд.

prf = 1;
pulseWidth = 10e-3;
pulseBandwidth = 1/pulseWidth;
fs = 2*pulseBandwidth;
wav = phased.RectangularWaveform('PRF',prf,'PulseWidth',pulseWidth,...
  'SampleRate',fs);
channel.SampleRate = fs;

Акустический маяк

Затем задайте акустический маяк, который расположен на 1 метр выше дна канала. Акустический маяк моделируется как изотропный проектор. Акустический сигнал-маяк будет излучаться в дальнее поле.

projector = phased.IsotropicProjector('VoltageResponse',120);

projRadiator = phased.Radiator('Sensor',projector,...
  'PropagationSpeed',propSpeed,'OperatingFrequency',OperatingFrequency);

beaconPlat = phased.Platform('InitialPosition',[5000; 2000; -199],...
  'Velocity',[0; 0; 0]);

Пассивный буксируемый массив

Пассивная буксируемый массив обнаружит и локализует источник пингов и смоделирована как пятиэлементный линейный массив с полуволновым интервалом. Пассивный массив имеет скорость 1 м/с в направлении y. Ось массива ориентирована параллельно направлению движения.

hydrophone = phased.IsotropicHydrophone('VoltageSensitivity',-150);
array = phased.ULA('Element',hydrophone,...
  'NumElements',5,'ElementSpacing',propSpeed/OperatingFrequency/2,...
  'ArrayAxis','y');

arrayCollector = phased.Collector('Sensor',array,...
  'PropagationSpeed',propSpeed,'OperatingFrequency',OperatingFrequency);

arrayPlat = phased.Platform('InitialPosition',[0; 0; -10],...
  'Velocity',[0; 1; 0]);

Определите усилитель приемника для каждого гидрофонного элемента. Выберите коэффициент усиления 20 дБ и рисунок шума 10 дБ.

rx = phased.ReceiverPreamp(...
    'Gain',20,...
    'NoiseFigure',10,...
    'SampleRate',fs,...
    'SeedSource','Property',...
    'Seed',2007);

Симулируйте пассивную гидроакустическую систему

Активируйте акустический маяк и передайте десять пингов. После задержки распространения pings появляются как peaks в принятых сигналах массива.

x = wav();
numTransmits = 10;
rxsig = zeros(size(x,1),5,numTransmits);
for i = 1:numTransmits

  % Update array and acoustic beacon positions
  [pos_tx,vel_tx] = beaconPlat(1/prf);
  [pos_rx,vel_rx] = arrayPlat(1/prf);

  % Compute paths between the acoustic beacon and array
  [paths,dop,aloss,rcvang,srcang] = ...
      isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf);

  % Propagate the acoustic beacon waveform
  tsig = projRadiator(x,srcang);
  rsig = channel(tsig,paths,dop,aloss);
  
  % Collect the propagated signal
  rsig = arrayCollector(rsig,rcvang);
  
  % Store the received pulses
  rxsig(:,:,i) = abs(rx(rsig));
 
end

Постройте график последнего полученного импульса. Из-за нескольких путей распространения каждый ping является суперпозицией нескольких импульсов.

t = (0:length(x)-1)'/fs;
plot(t,rxsig(:,end))
xlabel('Time (s)');
ylabel('Signal Amplitude (V)')

Figure contains an axes. The axes contains an object of type line.

Оценка направления прибытия

Оцените направление прибытия акустического маяка относительно массива. Создайте объект MUSIC estimator, задав в качестве выхода один исходный сигнал и направление прихода. Используйте скан угловую сетку с шагом 0,1 степеней.

musicspatialspect = phased.MUSICEstimator('SensorArray',array,...
        'PropagationSpeed',propSpeed,'OperatingFrequency',...
        OperatingFrequency,'ScanAngles',-90:0.1:90,'DOAOutputPort',true,...
        'NumSignalsSource','Property','NumSignals',1);

Затем соберете пинги для еще 500 интервалов повторения. Оцените направление прибытия для каждого интервала повторения и сравните оценки с истинным направлением прибытия.

numTransmits = 500;
angPassive = zeros(numTransmits,1);
angAct = zeros(numTransmits,1);

for i = 1:numTransmits

  % Update array and acoustic beacon positions
  [pos_tx,vel_tx] = beaconPlat(1/prf);
  [pos_rx,vel_rx] = arrayPlat(1/prf);

  % Compute paths between acoustic beacon and the array
  [paths,dop,aloss,rcvang,srcang] = ...
      isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf);
  angAct(i) = rcvang(1,1);
  
  % Propagate the acoustic beacon waveform
  tsig = projRadiator(x,srcang);
  rsig = channel(tsig,paths,dop,aloss);
  
  % Collect the propagated signal
  rsig = arrayCollector(rsig,rcvang);
  
  rxsig = rx(rsig);
 
  % Estimate the direction of arrival
  [~,angPassive(i)] = musicspatialspect(rxsig);
  
end

Постройте график расчетных углов прихода и истинных направлений прихода для каждого интервала повторения импульса.

plot([angPassive angAct])
xlabel('Pulse Number')
ylabel('Arrival angle (degrees)')
legend('Estimated DOA','Actual DOA')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Estimated DOA, Actual DOA.

Предполагаемые и фактические направления прибытия согласуются в пределах менее одного степени.

Сводные данные

В этом примере передача акустических чисел между маяком и пассивным массивом была моделирована в мелководном канале. Каждый пинг принимался по десяти акустическим путям. Направление прибытия маяка оценивалось относительно пассивного массива для каждого полученного пинга и сравнивалось с истинным направлением прибытия. Направление прибытия может использоваться, чтобы найти и восстановить маяк.

Ссылка

Урик, Роберт. Принципы подводного звука. Los Altos, Калифорния: Peninsue Publishing, 1983.