Отслеживать корабли, используя сигналы AIS

В этом примере показано, как отслеживать корабли путем обработки сигналов автоматической системы идентификации (AIS) с помощью MATLAB ® и Communications Toolbox™. Можно использовать или захваченные сигналы или принять сигналы в режиме реального времени с помощью Радио RTL-SDR. Пример может показать отслеживаемые корабли на карте, если у вас есть Mapping Toolbox™.

Необходимое аппаратное и программное обеспечение

Чтобы запустить этот пример с помощью записанных сигналов, вам нужен Communications Toolbox™.

Для приема сигналов в режиме реального времени также требуется радио RTL-SDR и соответствующий пакет поддержки Communications Toolbox для пакета поддержки RTL-SDR Radio Дополнение.

Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе «Поддерживаемые аппаратные средства» страницы Программно определяемого радио (SDR).

Фон

При морских перевозках службы движения судов используют АИС как компонент общей системы мониторинга морского движения. АИС выполняет следующие функции:

  • Передайте идентификатор судна, положение, курс и скорость.

  • Прием и обработка заданных опрашивающих вызовов.

  • Работайте постоянно в процессе движения или на якоре.

Спецификации АИС:

  • Область значений передачи: 156,025 MHz-162.025 МГц

  • Схема модуляции: Гауссова манипуляция сдвигом

  • Скорость передачи битов: 9600 бит/сек

  • Передайте время полосы пропускания Продукт: 0.4

  • Получите время полосы пропускания Продукт: 0.5

  • Индекс модуляции: 0,5

Пакеты передачи AIS содержат следующие поля:

  • Обучающая последовательность: 24-битная последовательность чередующихся нулей и таковых (0101...).

  • Флаг запуска: 8-битная последовательность, 01111110.

  • Данные: Фрагмент данных имеет длину 168 бит в пакете передачи по умолчанию.

  • Последовательность проверки системы координат (FCS): Использует 16-битный полином циклической проверки избыточности (CRC), чтобы вычислить контрольную сумму.

  • End Flag: идентично начальному флагу.

  • Буфер: Обычно длина буфера составляет 24 бита, чтобы учесть набивку битов (максимум 4 бита), задержку расстояния (14 бит) и дрожание синхронизации (6 бит).

Этот рисунок показывает формат пакета AIS

Запуск примера

Можно открыть пример, нажав кнопку Открыть скрипт. Строение по умолчанию выполняетсяечение 10 секунд, использует данные сигнала из захваченного файла данных и выводит в текстовый файл. Чтобы предоставить входные значения из командной строки, вы должны изменить cmdlineInput 1, тогда при запуске примера будет предложено ввести следующую информацию:

  1. Длительность приема в секундах,

  2. Источник сигнала (захваченный файл данных или радио RTL-SDR),

  3. Необязательные методы выхода (map, текстовый файл или и то, и другое).

Пример показывает информацию об обнаруженных кораблях в табличной форме, как показано на следующем рисунке.

Если у вас лицензирована Mapping Toolbox, можно также наблюдать отслеживание AIS кораблей на карте.

Структура приемника

Следующий блок суммирует структуру кода приемника. Обработка имеет три основные части: Signal Source, Physical Layer и Data Viewer.

Источник сигнала

Укажите источник сигнала «File» или «RTL-SDR».

  1. «Файл»: Использует comm.BasebandFileReader для чтения файла, который содержит ранее захваченный по воздуху сигнал.

  2. «RTL-SDR»: Использует радио RTL-SDR для приема живого сигнала.

Код использует скорость символа сигнала 9600 Гц и 24 выборки на символ.

Если вы назначаете «RTL-SDR» в качестве источника сигнала, то в примере ваш компьютер ищет радио RTL-SDR по радио-адресу '0' и использует его в качестве источника сигнала.

Физический слой

Выборки основной полосы частот, принятые от источника сигнала, обрабатываются физическим слоем (PHY), чтобы получить пакеты, которые содержат информацию о положении судна и байты необработанных сообщений. Этот рисунок показывает компоненты обработки PHY.

  • Поиск пакета: Ищет самый сильный всплеск в полученном сигнале путем деления на несколько окон.

  • Удаление смещения постоянного тока: удаляет смещение постоянного тока из обнаруженного сигнала.

  • Частотная компенсация: Оцените и компенсирует смещение частоты несущей.

  • Согласованная фильтрация: Выполняет фильтрацию с Гауссовым импульсом, сгенерированным согласно спецификациям AIS.

  • Синхронизация и демодуляция: Выполняет временную синхронизацию путем корреляции принимаемого сигнала с известной преамбулой и демодулирует, чтобы получить биты.

  • AIS Bit Parser: обнаруживает начальный и конечный флаги, затем выполняет обнаружение CRC. Если CRC успешно, информация о судне декодируется.

В AIS существует 64 типа сообщений. Информация о положении судна включена в 11 типов сообщений. Этот пример декодирует все 11 типов сообщений, которые содержат информацию о положении.

Как видно на более раннем рисунке, идентификатор корабля, широта, долгота, дата и время отображаются в этом примере. Сообщения содержат дополнительную информацию, которая может быть декодирована, как описано в [1].

Средство просмотра данных

Средство просмотра данных показывает полученные сообщения на графическом интерфейсе пользователя (GUI). Когда данные захвачены, приложение перечисляет информацию, декодированную из этих сообщений, в табличной форме.

Пример кода

Примеры стадий описаны ниже. Чтобы увидеть подробные операции, смотрите на код, выполняемый в вспомогательных функциях, вызываемых примером. Для опции изменения настроек по умолчанию задайте cmdlineInput по 1.

cmdlineInput = 0;
if cmdlineInput
    % Request user input from the command-line for application parameters
    userInput = helperAISUserInput;
else
    load('defaultInputs.mat');
end
% Calculate AIS parameters based on the user input
[aisParam,sigSrc] = helperAISConfig(userInput);

% Create the data viewer object and configure based on user input
viewer = helperAISViewer('LogFileName',userInput.LogFilename, ...
                         'SignalSourceType',userInput.SignalSourceType);

% Launch map based on user input
if userInput.LaunchMap
    startMapUpdate(viewer);
end

% Log data based on user input
if userInput.LogData
    startDataLog(viewer);
end

% Start the viewer and initialize radio time
start(viewer)
radioTime = 0;

% Main loop for capturing and decoding the AIS samples
while radioTime < userInput.Duration
    if aisParam.isSourceRadio       % For RTL-SDR
        [rcv,~,lost,~] = sigSrc();
        lostFlag = logical(lost);
    else                            % For baseband file
        rcv = sigSrc();
        lostFlag = uint32(0);
    end

    % Recover the information by decoding AIS samples
    [info, pkt] = helperAISRxPhy(rcv,aisParam);

    % View decoded information on viewer
    update(viewer, info, pkt, lostFlag);

    % Update radio time
    radioTime = radioTime + aisParam.FrameDuration;
end

% Stop the viewer and release the signal source
stop(viewer)
release(sigSrc)

Дальнейшие исследования

Можно также ввести AISExampleApp в Командном окне MATLAB или щелкнуть ссылку, чтобы использовать пользовательский интерфейс AISExampleApp для исследования сигналов AIS. Интерфейс приложения позволяет вам выбрать источник сигнала и изменить длительность.

Для получения дополнительной информации о реализации физического слоя можно исследовать следующие функции и системные объекты:

Избранная библиография

  1. Рекомендация ITU-R M.1371-5 Технические характеристики для автоматической системы идентификации, использующей множественный доступ с делением по времени в морской полосе частот УКВ.