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

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

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

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

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

Для полного списка Communications Toolbox поддерживаемые платформы SDR обратитесь к разделу Supported Hardware страницы открытия Программно определяемого радио (SDR).

Фон

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

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

  • Получите и процесс, заданный, опросив вызовы.

  • Действуйте постоянно в то время как полным ходом или в привязке.

Технические требования AIS:

  • Передайте частотный диапазон: 156,025 МГц 162,025 МГц

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

  • Битрейт: 9 600 бит/с

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

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

  • Индекс модуляции: 0.5

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

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

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

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

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

  • Флаг конца: Идентичный флагу запуска.

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

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

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

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

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

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

  3. Дополнительные выходные методы (карта, текстовый файл или оба).

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

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

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

Следующая блок-схема обобщает структуру приемника кода. Обработка имеет три основных части: Источник Сигнала, Физический уровень и Средство просмотра Данных.

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

Задайте источник сигнала как "Файл" или "RTL-SDR".

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

  2. ''RTL-SDR'': Использует радио RTL-SDR, чтобы получить живой сигнал.

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

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

Физический уровень

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

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

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

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

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

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

  • Синтаксический анализатор Бита AIS: Обнаруживает Флаги Флага и Конца Запуска, затем выполняет обнаружение CRC. Если CRC успешен, то информация о поставке декодируется.

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

Как замечено на более раннем рисунке, ID поставки, широта, долгота, дата, и время отображены этим примером. Сообщения содержат дополнительную информацию, которая может декодироваться как описано в [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, Технические характеристики для автоматической идентификационной системы, использующей деление времени, несколько получают доступ в VHF к морскому мобильному диапазону частот.