Слияние треков радара и лидара Данных в Simulink

Автономные системы требуют точной оценки их окружения для поддержки принятия решений, планирования и контроля. Датчики высокого разрешения, такие как радар и лидар, часто используются в автономных системах, чтобы помочь в оценке окружающей среды. Эти датчики обычно выводят дорожки. Вывод дорожек вместо обнаружений и слияние дорожек вместе децентрализованным способом обеспечивают несколько преимуществ, включая низкую частоту ложных предупреждений, более высокую точность оценки цели, низкую потребность в полосе пропускания и низкие вычислительные затраты. В этом примере показано, как отслеживать объекты из измерений радара и датчика лидара и как сплавить их с помощью схемы слияния уровня дорожки в Simulink ®. Вы обрабатываете радиолокационные измерения с помощью трекера Gaussian Mixed Probabilistic Hypothesis Density (GM-PHD) и лидарные измерения с помощью трекера Joint Probabilistic Data Association (JPDA). Вы далее сплавляете эти дорожки с помощью схемы слияния на уровне дорожки. Пример внимательно следует примеру Track-Level Fusion Radar и Lidar Data MATLAB ®.

Обзор модели

load_system('TrackLevelFusionOfRadarAndLidarDataInSimulink');
set_param('TrackLevelFusionOfRadarAndLidarDataInSimulink','SimulationCommand','update');
open_system('TrackLevelFusionOfRadarAndLidarDataInSimulink');

Модель имеет шесть подсистем, каждая из которых реализует часть алгоритма.

  • Симуляция сценария и датчика

  • Радиолокационный алгоритм слежения

  • Алгоритм отслеживания Лидара

  • Слияние уровней треков

  • Анализ эффективности

  • Визуализация

Симуляция сценария и датчика

Запись сценария для этого примера получена из сценария, описанного в примере Track-Level Fusion of Radar и Lidar Data MATLAB. Блок Scenario Reader читает предварительно записанный файл сценария и генерирует данные о положении актёров и автомобиль , оборудованный датчиком следующим Simulink.Bus (Simulink) объекты. В этом сценарии автомобиль , оборудованный датчиком монтируется с четырьмя 2-D радарными датчиками. Передний и задний радарные датчики имеют поле зрения 45 степеней. Левый и правый радарные датчики имеют поле зрения 150 степеней. Каждый радар имеет разрешение 6 степеней по азимуту и 2,5 метра по области значений. Также автомобиль , оборудованный датчиком установлен с одним 3-D датчиком лидара с полем зрения 360 степеней азимута и 40 степени повышения. Лидар имеет разрешение 0,2 степеней в азимуте и 1,25 степени в повышение (32 повышения канала). Блок Radar Detection Generator генерирует радиолокационные обнаружения, а блок Lidar Point Cloud Generator генерирует облака точек. Обнаружения от всех четырех радарных датчиков сгруппированы вместе с блоком Detection Concatenation, и блок Digital Clock используется для моделирования времени. Строения датчика и данные моделируемого датчика визуализируются в следующей анимации. Заметьте, что радары имеют более высокое разрешение, чем объекты, и, следовательно, возвращают несколько измерений на объект. Также заметьте, что лидар взаимодействует с актерами, а также с поверхностью дороги, чтобы вернуть несколько точек.

Радиолокационный алгоритм слежения

Радары обычно имеют более высокое разрешение, чем объекты, и возвращают несколько обнаружений на объект. Обычные трекеры, такие как Global Nearest Neighbor (GNN) и Joint Probabilistic Data Association (JPDA), предполагают, что датчики возвращают самое большее одно обнаружение на объект за скан. Поэтому обнаружение с датчиков высокого разрешения должно быть либо кластеризовано перед обработкой их обычными трекерами, либо должно быть обработано с помощью расширенных трекеров объектов. Расширенные трекеры объектов не требуют предварительной проверки обнаруженных объектов. Обычно расширенные трекеры объектов предлагают лучшую оценку объектов, так как они обрабатывают кластеризацию и ассоциацию данных одновременно.

В этом примере вы используете гипотезу вероятности Гауссова смеси (GM-PHD) расширенного трекера объектов для радиолокационного слежения. Блок трекера принимает обнаружения, время предсказания и строений датчика в качестве входных и выходных параметров подтвержденных дорожек как Simulink.Bus (Simulink) объект. Обнаружения от радара предварительно обрабатываются, чтобы включить информацию INS автомобиль , оборудованный датчиком в блок Radar Detection Preprocessing MATLAB Function (Simulink). Блок Sensor Configuration Reader обеспечивает строение датчика для блока трекера. Блок реализован с помощью блока MATLAB System (Simulink). Код для этого блока определен в HelperSourceConfigReader класс.

Эта визуализация показывает радиолокационное отслеживание в один временной шаг. Заметьте, что радарные датчики сообщают о нескольких обнаружениях на объект, и трекер GM-PHD образует двумерные прямоугольные дорожки, соответствующие каждому объекту.

Алгоритм отслеживания Лидара

Датчики Lidar имеют высокие возможности разрешения, и каждый скан с датчика содержит много точек, обычно известных как облако точек. Эти необработанные данные должны быть предварительно обработаны для извлечения объектов. Предварительная обработка выполняется с использованием основанного на RANSAC алгоритма плоской подгонки, а ограничительные коробки устанавливаются с помощью основанного на Евклиде алгоритма дистанционной кластеризации. Для получения дополнительной информации об алгоритме см. пример «Отслеживать транспортные средства, использующие лидар: от облака точек до списка треков».

Блок Bounding Box Detector реализован с помощью блока MATLAB System (Simulink). Код для этого блока задан в классе helper, HelperBoundingBoxDetectorBlk. Блок принимает местоположения облака точек и время предсказания как вход и выводит обнаружение ограничивающего прямоугольника, соответствующее препятствиям и информации сегментации. Обнаружения обрабатываются с помощью обычного JPDA-трекера, сконфигурированного с взаимодействующим фильтром нескольких моделей (IMM). Фильтр IMM реализован с помощью функции helper helperInitIMMUKFFilter, который задается как параметр функции инициализации фильтра блока. Обнаружения от датчика лидара предварительно обрабатываются, чтобы включить информацию автомобиля , оборудованного датчиком INS в блок Lidar Detection Preprocessing Функции MATLAB (Simulink).

Блок Calculate Detectability вычисляет Detectable TrackIDs вход для трекера и выходы массива с двумя столбцами. Первый столбец представляет TrackID дорожек, а второй - их вероятность обнаружения датчиком и детектором ограничивающих прямоугольников. Блок реализован с помощью блока Функция MATLAB (Simulink).

Эта визуализация показывает отслеживание лидара на одном временном шаге. Блок Bounding Box Detector генерирует обнаружения из облака точек, и JPDA-трекер формирует трехмерные кубоидные дорожки, соответствующие каждому объекту.

Слияние на уровне дорожки

Алгоритм слияния дорожек реализован с помощью блока Track-To-Track Fuser. Блок принимает время предсказания, прямоугольные радарные дорожки и кубоидные лидарные дорожки в качестве входных и выходных параметров сросшихся дорожек. Он использует традиционную схему слияния на основе ассоциации трек-в-треке и назначение GNN, чтобы создать одну гипотезу. Блок Track Concatenation объединяет дорожки из обоих источников и генерирует одну магистральную шину. Строение источника фузера для радара и лидара устанавливается с помощью SourceConfig переменная через PreLoadFcn коллбэк. Смотрите Model Callbacks (Simulink) для получения дополнительной информации о функциях обратного вызова. Алгоритм слияния состояний для этого примера реализован в helperRadarLidarFusionFunction вспомогательная функция и задается как 'custom fusion function' свойство.

Эта визуализация показывает слияние треков на одном временном шаге. Слитые дорожки ближе к фактическим объектам, чем отдельные сенсорные дорожки, что указывает на увеличение точности дорожек после слияния оценок дорожек с обоих датчиков.

Анализ эффективности

В этом примере вы оцениваете эффективность каждого алгоритма, используя Обобщенную Оптимальную метрику Назначения Подшаблона (GOSPA). Метрика GOSPA призвана оценить эффективность системы отслеживания с скаляром стоимостью.

Метрика GOSPA может быть вычислена следующим уравнением

$GOSPA = [\sum_{i=0}^{m}(min(d_{b},c))^{p} + \frac{c^{p}}{\alpha} (n-m)]^{1/p}$

где$m$ - количество основных истин,$n (n>=m)$ - количество оцененных дорожек, -$c$ порог расстояния отсечения, -$d_{b}$ базовое расстояние между дорожкой и истиной, вычисленное функцией расстояния, заданной в Distance свойство,$p$ является порядком метрики и$\alpha$ является альфа- параметром метрики, заданным из маски блока.

Меньшее значение метрики указывает на лучшую эффективность алгоритма отслеживания. Чтобы использовать метрику GOSPA с пользовательскими моделями движения, такими как используемая в этом примере, вы устанавливаете Distance свойство к custom и задайте функцию расстояния между дорожкой и связанной с ней основной истиной. Эти функции расстояния заданы в helperRadarDistance и helperLidarDistance вспомогательные файлы. Блок Основная Истина Reader предоставляет истинные данные на каждом временном шаге. Блок реализован с помощью блока MATLAB System (Simulink), и код для этого блока определен в HelperGroundTruthReader класс. Наконец, счет GOSPA для радиолокационного отслеживания, лидарного отслеживания и алгоритмов слияния треков сгруппированы вместе.

Визуализация

Блок Visualization реализован с помощью блока MATLAB System (Simulink). Код для этого блока задан в классе helper helperLidarRadarTrackFusionDisplayBlock. Блок использует RunTimeObject параметр блоков для отображения их выходов. Смотрите Доступ к Блочным Данным во Время Симуляции (Simulink) для получения дополнительной информации о том, как получить доступ к выходам блоков во время симуляции.

Эта анимация показывает весь запуск каждые три временных шагов. Каждая три системы слежения (радар, лидар и слияние треков) была способна отслеживать все четыре транспортных средств в сценарии, не подтверждая никаких ложных треков.

Метрика GOSPA визуализируется с помощью блока scope. Ось X на следующем рисунке представляет время, а ось Y представляет счет GOSPA. Каждый модуль на оси X представляет 10 временных шагов в сценарии. Точность локализации уровня дорожки каждого трекера может быть количественно оценена с помощью метрики GOSPA на каждом временном шаге. Меньшее значение указывает на лучшую точность отслеживания. Поскольку не было пропущенных целей или ложных дорожек, метрика захватывает ошибки локализации, следующие из оценки состояния каждого транспортного средства. Каждый компонент метрики GOSPA также может быть выбран как выход и визуализирован отдельно.

Обратите внимание, что метрика GOSPA для сплавленных оценок ниже, чем метрика для отдельного датчика, что указывает на то, что точность дорожки увеличилась после слияния оценок дорожки с обоих датчиков.

close_system('TrackLevelFusionOfRadarAndLidarDataInSimulink');

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

В этом примере вы научились отслеживать радиолокационные измерения с помощью расширенного трекера объектов с двумерной прямоугольной моделью, как отслеживать лидарные измерения с помощью обычного трекера JPDA с трехмерной кубоидной моделью и как настроить алгоритм слияния уровня дорожки для плавления треков с радаров и датчиков лидара в Simulink Вы также научились оценивать эффективность алгоритма отслеживания с помощью Обобщённого Оптимального подшаблона Назначения. Результаты симуляции показывают, что отслеживание путем слияния треков с радара и лидара является более точным, чем отслеживание каждым отдельным датчиком.