exponenta event banner

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

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

Введение

Автомобильные радиолокационные датчики устойчивы к неблагоприятным условиям окружающей среды, возникающим во время вождения, таким как туман, снег, дождь и сильный солнечный свет. Автомобильные радиолокационные датчики имеют это преимущество, поскольку они работают по существу на больших длинах волн по сравнению с датчиками видимой длины волны, такими как лидар и камера. В качестве побочного эффекта использования больших длин волн поверхности вокруг радиолокационного датчика действуют подобно зеркалам и создают нежелательные обнаружения вследствие многолучевого распространения. Эти обнаружения часто называют скрытыми обнаружениями, потому что они, по-видимому, происходят из регионов, где не существует цели. В этом примере показано влияние этих многолучевых отражений на разработку и настройку стратегии отслеживания объектов с использованием радиолокационных обнаружений. Для получения дополнительной информации о многолучевом явлении и моделировании обнаружения призраков см. пример Simulate Radar Ghosts to Multipath Return (Radar Toolbox).

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

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

Генерировать данные датчика

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

% Command to record data. 
helperRecordData(scenario, egoVehicle, sensors, fName);
% Create the scenario
[scenario, egoVehicle, sensors] = helperCreateMultipathDrivingScenario;

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

Цепочка радиолокационной обработки: радиолокационные обнаружения в список путей

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

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

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

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

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

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

Анализ окклюзии

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

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

  1. Целевые обнаруженные объекты - эти обнаруженные объекты классифицируются как исходящие от реальных динамических целей в сцене.

  2. Обнаружения среды - эти обнаружения классифицируются как исходящие из статической среды.

  3. Ghost (Static) - эти обнаружения классифицируются для получения от динамических целей, но отражаются через статическую среду.

  4. Ghost (Динамический) - эти обнаружения классифицируются, чтобы исходить из динамических целей, но отражаются через другие динамические объекты.

Настройка расширенного отслеживания объектов GGIW-PHD

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

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

Вы настраиваете трекер с помощью 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.98,...
    'MergingThreshold',25,...
    'DeletionThreshold',1e-3,...
    'BirthRate',1e-2,...
    'HasSensorConfigurationsInput',true... 
    );

Выполнение сценария и отслеживание объектов

Затем вы продвигаете сценарий, используете записанные измерения от датчиков и обрабатываете их с помощью описанного ранее алгоритма. Производительность алгоритма отслеживания анализируется с помощью метрики Generalized Optimum Subpattern Assignment (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 секунды и показывает ситуацию перед эго-транспортным средством. В это время эго-транспортное средство приближается к тихоходному грузовику, и левый радиолокационный датчик наблюдает отражения этих объектов через левый барьер. Эти обнаруженные объекты отображаются как зеркальные обнаруженные объекты в барьере. Обратите внимание, что черная линия, оцененная как 2-D отражатель, находится в зоне видимости этих обнаружений. Поэтому алгоритм способен правильно классифицировать эти обнаружения как цели-призраки, отраженные от статических объектов.

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 and other objects of type uipanel. The axes contains 12 objects of type patch, line, text. These objects represent lane, track, (history), Reflectors, Targets, Ghost (S), Ghost (D), Static.

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

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 and other objects of type uipanel. The axes contains 12 objects of type patch, line, text. These objects represent lane, track, (history), Reflectors, Targets, Ghost (S), Ghost (D), Static.

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

Анализ производительности

Количественная оценка производительности алгоритма отслеживания с использованием метрики GOSPA и связанных с ней компонентов. Меньшее значение метрики означает лучшую производительность отслеживания. На рисунке ниже компонент «Пропущенная цель» метрики остается нулевым после нескольких шагов в начале, представляя собой задержку установления трекера. Этот компонент показывает, что трекер не пропустил цели. Кроме того, компонент «Ложные дорожки» метрики остается нулевым, представляя, что никакие ложные дорожки не были подтверждены трекером.

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

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

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

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

% 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                1982        
    Ghost (S)              3818        
    Ghost (D)               345        
    Environment           25358        
    Clutter                 150        
% 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          94.6       1.06          3.88         0.45           0   
    Ghost (S)        9.25       74.1         16.24         0.42           0   
    Ghost (D)       38.84          0         61.16            0           0   
    Environment      0.93       3.07          2.59         93.4           0   
    Clutter         16.67         62            20         1.33           0   

Резюме

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

Ссылки

[1] Пророк, Роберт, и др. «Мгновенная идентификация обнаружения призраков в автомобильных сценариях». Конференция IEEE Radar 2019 (RadarConf). IEEE, 2019.

[2] Краус, Флориан и др. «Использование машинного обучения для обнаружения изображений-призраков на автомобильных радарах». IEEE 2020 23-я Международная конференция по интеллектуальным транспортным системам (ITSC). IEEE, 2020.