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

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

Введение

Автомобильные радарные датчики устойчивы против условий неблагоприятной среды, с которыми сталкиваются во время управления, таковы как вуаль, снег, дождь и сильный солнечный свет. Автомобильные радарные датчики имеют преимущество, потому что они действуют в существенно больших длинах волн по сравнению с датчиками видимой длины волны, такими как лидар и камера. Как побочный эффект использования больших длин волн, поверхности вокруг радарного датчика действуют как зеркала и производят нежелательные обнаружения из-за многопутевого распространения. Эти обнаружения часто упоминаются как фантомные обнаружения, потому что они, кажется, происходят из областей, где никакая цель не существует. Этот пример показывает вам удар этих многопутевых отражений о разработке и конфигурировании объекта, отслеживающего стратегию с помощью радарных обнаружений. Для получения дополнительной информации относительно многопутевого явления и симуляции фантомных обнаружений, смотрите Симулировать Радарные Фантомы из-за Многопутевого примера Возврата.

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

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

Сгенерируйте данные о датчике

Сценарий, используемый в этом примере, создается с помощью drivingScenario класс. Вы используете radarDataGenerator Система object™, чтобы симулировать радар возвращается из прямого пути и из отражений в сценарии. HasGhosts свойство датчика задано как true симулировать многопутевые отражения. Создание сценария и моделей датчика перенесено в функцию помощника helperCreateMultipathDrivingScenario, который присоединяется с этим примером. Набор данных, полученный симуляцией датчика, зарегистрирован в файле MAT, который содержит, возвращается из радара и соответствующих настроек датчика. Чтобы записать данные для различного сценария или настройки датчика, можно использовать следующую команду:

 helperRecordData(scenario, egoVehicle, sensors, fName);
% Create the scenario
[scenario, egoVehicle, sensors] = helperCreateMultipathDrivingScenario;

% Load the recorded data
load('MultiPathRadarScenarioRecording.mat','detectionLog','configurationLog');

Радарная цепь обработки: радарные обнаружения, чтобы отследить список

В этом разделе вы настраиваете интегрированный алгоритм, чтобы одновременно отфильтровать радарные обнаружения, и дорожка расширила объекты. Блок-схема иллюстрирует радарную цепь обработки, используемую в этом примере.

Затем вы узнаете о каждом из этих шагов и соответствующих функций помощника.

Доплеровский анализ

Радарные датчики сообщают об измеренной относительной радиальной скорости отраженных сигналов. На этом шаге вы используете измеренную радиальную скорость обнаружений, чтобы определить, является ли цель статической или динамическая [1]. В предыдущем радиолокационном обзоре большой процент радарных обнаружений происходит из статической среды вокруг автомобиля, оборудованного датчиком. Поэтому классификация каждого обнаружения как статическое или динамическое значительно помогает улучшить понимание сцены. Вы используете функцию помощника helperClassifyStaticDynamic классифицировать каждое обнаружение как статическое или динамическое.

Статические отражатели

Статическая среда также обычно ответственна за большой процент фантомных отражений, о которых сообщают радарные датчики. После сегментации набора данных и нахождения статических обнаружений, вы обрабатываете их, чтобы найти 2D линейные сегменты в координатной системе координат автомобиля, оборудованного датчиком. Во-первых, вы используете алгоритм DBSCAN, чтобы кластеризировать статические обнаружения в различные кластеры вокруг автомобиля, оборудованного датчиком. Во-вторых, вы соответствуете 2D линейному сегменту в каждом кластере. Эти подходящие линейные сегменты задают возможные отражательные поверхности для сигналов, распространяющих назад к радару. Вы используете функцию помощника helperFindStaticReflectors найти эти 2D линейные сегменты от статических обнаружений.

Анализ поглощения газов

Отражение от поверхностей производит обнаружения из радарного датчика, которые, кажется, происходят позади отражателя. После сегментации динамических обнаружений от радара вы используете простой анализ поглощения газов, чтобы определить, закрывается ли радарное обнаружение позади возможного отражателя. Поскольку сигналы могут быть отражены статическими или динамическими объектами, вы выполняете анализ поглощения газов на двух шагах. Во-первых, динамические обнаружения проверяются по поглощению газов с 2D линейными сегментами, представляющими статические отражатели. Вы используете функцию помощника helperClassifyGhostsUsingReflectors классифицировать, если обнаружение закрывается статическим отражателем. Во-вторых, алгоритм использует информацию о предсказанных дорожках из расширенного алгоритма отслеживания, чтобы проверять на поглощение газов против динамических объектов в сцене. Алгоритм использует только подтвержденные дорожки от средства отслеживания, чтобы предотвратить сверхфильтрацию радарных обнаружений в присутствии предварительных или ложных дорожек. Вы используете функцию помощника helperClassifyGhostsUsingTracks классифицировать, если обнаружение закрывается динамическим объектом.

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

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

  2. Обнаружения среды – Эти обнаружения классифицируются, чтобы произойти из статической среды.

  3. (Статический) фантом – Эти обнаружения классифицируется, чтобы произойти из динамических целей, но отражается через статическую среду.

  4. (Динамический) фантом – Эти обнаружения классифицируется, чтобы произойти из динамических целей, но отражается через другие динамические объекты.

Setup GGIW-PHD расширенное объектное средство отслеживания

Целевые обнаружения обрабатываются с расширенным объектным средством отслеживания. В этом примере вы используете гамму Гауссова инверсия плотность гипотезы вероятности Уишарта (GGIW-PHD) расширенное объектное средство отслеживания. Средство отслеживания GGIW-PHD моделирует цель с эллиптической формой, и модель измерения принимает, что обнаружения равномерно распределены в степени цели. Эта модель позволяет цели принимать фантомные обнаружения 2D возврата, которые имеют более высокую вероятность того, чтобы быть неправильно классифицированным как действительная цель. Эти фантомные обнаружения 2D возврата также сообщают о Доплеровском измерении, которое противоречиво с фактическим движением цели. Когда эти фантомные обнаружения и действительные целевые обнаружения от того же объекта, как оценивается, принадлежат тому же разделу обнаружений, неправильная информация о Доплере может потенциально заставить оценку дорожки отличаться.

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

Вы настраиваете средство отслеживания с помощью trackerPHD Система object™. Для получения дополнительной информации о расширенных объектных средствах отслеживания, отошлите к Расширенному Объектному Отслеживанию Дорожных транспортных средств с Радаром и Камерой (Automated Driving Toolbox) пример.

% Configuration of the sensors from the recording to set up the tracker
[~, sensorConfigurations] = helperAssembleData(detectionLog{1},configurationLog{1});

% Configure the tracker to use the GGIW-PHD filter with constant turn-rate motion model
for i = 1:numel(sensorConfigurations)
    sensorConfigurations{i}.FilterInitializationFcn = @helperInitGGIWFilter;    
    sensorConfigurations{i}.SensorTransformFcn = @ctmeas;
end

% Create the tracker using trackerPHD with Name-value pairs
tracker = trackerPHD('SensorConfigurations', sensorConfigurations,...
    'PartitioningFcn',@(x)helperMultipathExamplePartitionFcn(x,2,5),...
    'AssignmentThreshold',450,...
    'ExtractionThreshold',0.8,...
    'ConfirmationThreshold',0.85,...
    'MergingThreshold',25,...
    'DeletionThreshold',1e-2,...
    'BirthRate',1e-2,...
    'HasSensorConfigurationsInput',true... 
    );

Запустите сценарий и отслеживаемые объекты

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

% Create trackGOSPAMetric object to calculate GOSPA metric
gospaMetric = trackGOSPAMetric('Distance','custom', ...
    'DistanceFcn',@helperGOSPADistance, ...
    'CutoffDistance',35);

% Create display for visualization of results
display = helperMultiPathTrackingDisplay;

% Predicted track list for ghost filtering
predictedTracks = objectTrack.empty(0,1);

% Confusion matrix
confMat = zeros(5,5,numel(detectionLog));

% GOSPA metric
gospa = zeros(4,numel(detectionLog));

% Ground truth 
groundTruth = scenario.Actors(2:end);

for i = 1:numel(detectionLog)
    % Advance scene for visualization of ground truth
    advance(scenario);
    
    % Current time
    time = scenario.SimulationTime;
    
    % Detections and sensor configurations
    [detections, configurations] = helperAssembleData(detectionLog{i},configurationLog{i});
    
    % Predict confirmed tracks to current time for classifying ghosts
    if isLocked(tracker)
        predictedTracks = predictTracksToTime(tracker,'confirmed',time);
    end
    
    % Classify radar detections as targets, ghosts, or static environment
    [targets, ghostStatic, ghostDynamic, static, reflectors, classificationInfo] = helperClassifyRadarDetections(detections, egoVehicle, predictedTracks);
    
    % Pass detections from target and sensor configurations to the tracker
    confirmedTracks = tracker(targets, configurations, time);

    % Visualize the results
    display(egoVehicle, sensors, targets, confirmedTracks, ghostStatic, ghostDynamic, static, reflectors);
    
    % Calculate GOSPA metric
    [gospa(1, i),~,~,gospa(2,i),gospa(3,i),gospa(4,i)] = gospaMetric(confirmedTracks, groundTruth);
    
    % Get true classification information and generate confusion matrix
    trueClassificationInfo = helperTrueClassificationInfo(detections);
    confMat(:,:,i) = helperConfusionMatrix(trueClassificationInfo, classificationInfo);
end

Результаты

Анимация и анализ снимка состояния

Анимация, которая следует, показывает результат радарной цепи обработки данных. Черные замещающие знаки вокруг транспортных средств представляют оцененные дорожки. Радарные обнаружения визуализируются с четырьмя различными цветами в зависимости от их предсказанной классификации из алгоритма. Черные точки в визуализации представляют статические радарные целевые обнаружения. Заметьте, что эти обнаружения перекрываются черными линиями, которые представляют найденное использование статических отражателей алгоритма DBSCAN. Темно-бордовые маркеры представляют обнаружения, обработанные расширенным объектным средством отслеживания, в то время как зеленые и синие маркеры представляют радарные обнаружения, классифицированные как отражения через статические и динамические объекты, соответственно. Заметьте, что средство отслеживания может обеспечить дорожку на всех четырех транспортных средствах во время сценария.

Затем вы анализируете эффективность алгоритма с помощью различных снимков состояния, полученных во время симуляции. Снимок состояния ниже получен в 3 секунды и показывает ситуацию перед автомобилем, оборудованным датчиком. В это время автомобиль, оборудованный датчиком приближается к медленному грузовику, и левый радарный датчик наблюдает отражения этих объектов через левый барьер. Эти обнаружения появляются как зеркально отраженные обнаружения этих объектов в барьере. Заметьте, что черная линия, оцененная как 2D отражатель, находится в углу обзора этих обнаружений. Поэтому алгоритм может правильно классифицировать эти обнаружения как фантомные цели, отраженные от статических объектов.

f = showSnaps(display,1:2,1);
if ~isempty(f)
    ax = findall(f,'Type','Axes','Tag','birdsEyePlotAxes');
    ax.XLim = [-10 30];
    ax.YLim = [-10 20];
end

Figure contains an axes object and other objects of type uipanel. The axes object contains 13 objects of type patch, line, text. These objects represent lane, track, (history), Reflectors, Targets, Ghost (S), Ghost (D), Static.

Затем анализируйте эффективность алгоритма с помощью снимка состояния, полученного в 4,3 секунды. В это время автомобиль, оборудованный датчиком является четным ближе к грузовику, и грузовик является приблизительно промежуточным между зеленым транспортным средством и автомобилем, оборудованным датчиком. Во время этих ситуаций левая сторона грузовика действует как сильный отражатель и генерирует фантомные обнаружения. Обнаружения на правильной половине зеленого транспортного средства от обнаружений 2D возврата прочь зеленого транспортного средства, когда сигнал перемещается назад в датчик после отражения от грузовика. Алгоритм может классифицировать эти обнаружения как фантомные обнаружения, сгенерированные от отражений динамического объекта, потому что предполагаемая степень грузовика находится в прямой линии вида этих обнаружений.

f = showSnaps(display,1:2,2);
if ~isempty(f)
    ax = findall(f,'Type','Axes','Tag','birdsEyePlotAxes');
    ax.XLim = [-10 30];
    ax.YLim = [-10 20];
end

Figure contains an axes object and other objects of type uipanel. The axes object contains 13 objects of type patch, line, text. These objects represent lane, track, (history), Reflectors, Targets, Ghost (S), Ghost (D), Static.

Также заметьте проходящее мимо транспортное средство, обозначенное желтым автомобилем слева от автомобиля, оборудованного датчиком. Обнаружения, которые, кажется, происходят из невидимой поверхности желтого транспортного средства, являются обнаружениями 2D возврата барьеров, отраженных через переднюю сторону проходящего мимо транспортного средства. Эти фантомные обнаружения неправильно классифицируются как целевые обнаружения, потому что они, кажется, происходят из предполагаемой степени транспортного средства. В том же местоположении обнаружения, которые лежат за пределами барьера, являются также обнаружениями 2D возврата передней стороны, когда сигнал отражается от барьера и возвращается к датчику. Поскольку эти обнаружения лежат за пределами степени дорожки, и дорожка находится в прямой линии вида, они классифицируются как фантомные обнаружения от отражений от динамических объектов.

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

Количественно оцените эффективность алгоритма отслеживания при помощи метрики GOSPA и ее связанных компонентов. Нижнее значение метрики обозначает лучшую эффективность отслеживания. В рисунке ниже компонент пропущенной цели метрики остается нуль после нескольких шагов в начале, представляя задержку установления средства отслеживания, а также закрытой цели. Нулевое значение компонента показывает, что никакие цели не были пропущены средством отслеживания. Компонент Ложных дорожек метрики, увеличенной вокруг в течение 1 секунды вокруг 85-го временного шага. Это обозначает ложную дорожку, подтвержденную средством отслеживания для короткой продолжительности от фантомных обнаружений, неправильно классифицированных как действительная цель.

figure;
plot(gospa','LineWidth',2);
legend('GOSPA','Localization GOSPA','Missed-target GOSPA','False-tracks GOSPA');

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent GOSPA, Localization GOSPA, Missed-target GOSPA, False-tracks GOSPA.

Подобно алгоритму отслеживания вы также количественно анализируете эффективность радарного алгоритма классификации обнаружений при помощи матрицы [2] беспорядка. Строки, показанные в таблице, обозначают истинную информацию о классификации радарных обнаружений, и столбцы представляют предсказанную информацию о классификации. Например, второй элемент первой строки задает процент целевых обнаружений, предсказанных как фантомы от отражений статического объекта.

Больше чем 90% целевых обнаружений классифицируются правильно. Однако небольшой процент целевых обнаружений неправильно классифицируется как фантомы от динамических отражений. Кроме того, приблизительно 3% фантомов от отражений статического объекта и 20% фантомов от отражений динамического объекта неправильно классифицируются как цели и отправляются в средство отслеживания для обработки. Общая ситуация, когда это происходит в этом примере, состоит в том, когда обнаружения от отражений 2D возврата лежат в предполагаемой степени транспортного средства. Далее, алгоритм классификации, используемый в этом примере, не спроектирован, чтобы найти ложные предупреждения или помеху в сцене. Поэтому пятая колонна матрицы беспорядка является нулем. Из-за пространственного распределения ложных предупреждений в поле зрения, большинство ложных сигнальных обнаружений или классифицируется как отражения от статических объектов или динамических объектов.

% Accumulate confusion matrix over all steps
confusionMatrix = sum(confMat,3);
numElements = sum(confusionMatrix,2);
numElemsTable = array2table(numElements,'VariableNames',{'Number of Detections'},'RowNames',{'Targets','Ghost (S)','Ghost (D)','Environment','Clutter'});
disp('True Information');disp(numElemsTable);
True Information
                   Number of Detections
                   ____________________

    Targets                1974        
    Ghost (S)              3203        
    Ghost (D)               847        
    Environment           27039        
    Clutter                 123        
% Calculate percentages
percentMatrix = confusionMatrix./numElements*100;

percentMatrixTable = array2table(round(percentMatrix,2),'RowNames',{'Targets','Ghost (S)','Ghost (D)','Environment','Clutter'},...
    "VariableNames",{'Targets','Ghost (S)','Ghost (D)', 'Environment','Clutter'});

disp('True vs Predicted Confusion Matrix (%)');disp(percentMatrixTable);
True vs Predicted Confusion Matrix (%)
                   Targets    Ghost (S)    Ghost (D)    Environment    Clutter
                   _______    _________    _________    ___________    _______

    Targets         90.53        0.61         8.36         0.51           0   
    Ghost (S)        3.18       86.26        10.24         0.31           0   
    Ghost (D)          17           0           83            0           0   
    Environment      1.05        2.88         3.96         92.1           0   
    Clutter         13.82       67.48        17.07         1.63           0   

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

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

Ссылки

[1] Пророк, Роберт, и др. "Мгновенная Фантомная Идентификация Обнаружения в Автомобильных Сценариях". 2 019 Радарных Конференций по IEEE (RadarConf). IEEE, 2019.

[2] Kraus, Флориэн, и др. "Используя машинное обучение, чтобы обнаружить фантомные изображения в автомобильном радаре". 2 020 IEEE 23-я Международная конференция по вопросам Интеллектуальных Систем Транспортировки (ITSC). IEEE, 2020.