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

В этом примере показано, как симулировать пассивную систему гидролокатора. Стационарный подводный акустический маяк обнаруживается и локализуется буксируемым пассивным массивом в мелководном канале. Акустический маяк передает 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]);

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

Пассивный элемент буксировал массив, обнаружит и локализует источник ping и моделируется как линейная матрица с пятью элементами с интервалом полудлины волны. Пассивный массив имеет скорость 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);

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

Активируйте акустический маяк и передайте десять ping. После задержки распространения ping появляются как 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 object. The axes object contains an object of type line.

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

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

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

Затем соберите ping для еще 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 object. The axes object contains 2 objects of type line. These objects represent Estimated DOA, Actual DOA.

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

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

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

Ссылка

Urick, Роберт. Принципы подводного звука. Лос-Алтос, Калифорния: Peninsula Publishing, 1983.

Для просмотра документации необходимо авторизоваться на сайте