exponenta event banner

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

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

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

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

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, задав в качестве выхода сигнал одного источника и направление поступления. Используйте сетку углов сканирования с интервалом 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. The axes contains 2 objects of type line. These objects represent Estimated DOA, Actual DOA.

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

Резюме

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

Ссылка

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