exponenta event banner

Автоматизация тестирования полосы движения после управления и слияния датчиков

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

Введение

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

Этот пример позволяет интегрировать и моделировать эти два компонента с использованием модели испытательного стенда системного уровня. В нем показано, как автоматизировать тестирование по нескольким сценариям с помощью Simulink Test™. Сценарии основаны на системных требованиях. Кроме того, здесь также показано, как можно проверить сгенерированный код с помощью моделирования программного обеспечения в цикле (SIL). В этом примере выполняется следующее:

  1. Проверка требований - требования описывают условия тестирования на уровне системы. Для представления этих условий создаются сценарии тестирования моделирования.

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

  3. Отключить визуализацию во время выполнения - визуализация во время выполнения отключена, чтобы сократить время выполнения автоматического тестирования.

  4. Автоматизация тестирования - менеджер тестирования настроен для моделирования каждого сценария тестирования, оценки критериев успеха и отчета о результатах. Результаты динамически анализируются в диспетчере тестов и экспортируются в PDF для внешних рецензентов.

  5. Автоматизация тестирования с использованием сгенерированного кода. Компоненты объединения датчиков, логики принятия решений и управления сконфигурированы для генерации кода C++. Для проверки ожидаемого поведения выполняется автоматическое тестирование созданного кода.

  6. Автоматизация параллельного тестирования - общее время выполнения тестов сокращается с помощью параллельных вычислений на многоядерном компьютере.

Для тестирования интеграции алгоритмов слияния датчиков и управления требуется среда фотореалистичного моделирования. В этом примере можно включить моделирование на уровне системы путем интеграции с Unreal Engine ® из Epic Games ®. Для среды моделирования 3D требуется 64-разрядная платформа Windows ®.

if ~ispc
    error(['3D simulation is supported only on Microsoft', char(174), ' Windows', char(174), '.'])
end

Проверка требований

Simulink Requirements™ позволяет создавать, анализировать и управлять требованиями в Simulink. Этот пример содержит 10 сценариев тестирования с высокими требованиями к тестированию, определенными для каждого сценария. Откройте набор требований.

open('HLFControlsWithSensorFusionTestRequirements.slreqx')

Можно также открыть файл на вкладке Требования (Requirements) приложения Диспетчер требований (Requirements Manager) в Simulink.

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

  • scenario_LF_01_Straight_RightLane - Сценарий прямой дороги с эго-транспортным средством в правой полосе.

  • scenario_LF_02_Straight_LeftLane - Сценарий прямой дороги с эго-транспортным средством в левой полосе.

  • scenario_LF_03_Curve_LeftLane - Сценарий криволинейной дороги с эго-транспортным средством в левой полосе.

  • scenario_LF_04_Curve_RightLane - Сценарий криволинейной дороги с эго-транспортным средством в правой полосе.

  • scenario_LFACC_01_Curve_DecelTarget - Сценарий криволинейной дороги с замедляющимся ведущим транспортным средством в полосе эго.

  • scenario_LFACC_02_Curve_AutoRetarget - Сценарий криволинейной дороги с заменой свинцовых транспортных средств в полосе эго. Этот сценарий проверяет способность эго-транспортного средства перенацеливаться на новое ведущее транспортное средство во время движения по кривой.

  • scenario_LFACC_03_Curve_StopnGo - Сценарий криволинейной дороги с опережающим транспортным средством, замедляющимся в полосе эго.

  • scenario_LFACC_04_Curve_CutInOut - Сценарий криволинейной дороги с вырубкой ведущего автомобиля на полосу эго.

  • scenario_LFACC_05_Curve_CutInOut_TooClose - Сценарий кривой дороги с головным автомобилем, агрессивно вырезающим на полосу эго.

  • scenario_LFACC_06_Straight_StopandGoLeadCar - Сценарий прямой дороги с ведущим транспортным средством, которое разрушается в полосе эго.

Изучение модели испытательного стенда

Открыть модель испытательного стенда.

open_system('HLFControlsWithSensorFusionTestBench');

Модель испытательного стенда содержит следующие подсистемы:

  1. Сценарий 3D моделирования - подсистема, определяющая дорогу, транспортные средства, генератор обнаружения видения и радиолокационные датчики, используемые для моделирования.

  2. Figure Vehicle Sensor Fusion - подсистема, которая предохраняет детекторы транспортных средств перед эго-транспортным средством, которые были получены от датчиков зрения и радаров.

  3. Lane Following Decision Logic - модель алгоритма, определяющая логику принятия решений в поперечном и продольном направлениях и предоставляющая информацию о центре полосы движения и наиболее важную информацию об объекте (MIO), относящуюся к контроллеру.

  4. Lane Following Controller - модель алгоритма, определяющая контроллер.

  5. Vehicle Dynamics - подсистема, определяющая динамическую модель эго-транспортного средства.

  6. Оценка метрик - подсистема, которая оценивает поведение на уровне системы.

Подсистема моделирования 3D сценария конфигурирует дорожную сеть, устанавливает положение транспортного средства и синтезирует датчики. Откройте подсистему моделирования 3D сценария.

open_system("HLFControlsWithSensorFusionTestBench/Simulation 3D Scenario")

Сцена и дорожная сеть определяются следующими частями подсистемы:

Положения транспортного средства определяются следующими частями подсистемы:

  • Входной порт Ego управляет положением ego-транспортного средства, которое определяется блоком «Имитация транспортного средства 3D с землей после 1».

  • Блок «Транспортное средство - мир» преобразует позы актера из координат эго-транспортного средства в мировые координаты.

  • Блок считывателя сценариев выводит позы акторов, которые управляют положением целевых транспортных средств. Эти транспортные средства определяются другими моделирующими 3D транспортными средствами с наземными блоками.

  • Блок Cuboid To 3D Simulation преобразует систему координат ego pose (по отношению к центру задней оси транспортного средства) в систему координат 3D моделирования (по отношению к центру транспортного средства).

Датчики, прикрепленные к эго-транспортному средству, определяются следующими частями подсистемы:

  • Для обнаружения транспортных средств и полос движения в среде моделирования 3D к эго-транспортному средству присоединен блок генератора моделирования 3D визуального обнаружения. Блок извлекает обнаружения транспортного средства из моделируемых позиций актера, которые основаны на кубоидных представлениях актеров в сценарии.

  • Блок Delete Velocity From Vision (Удалить скорость из системы технического зрения) упаковывает сигналы обнаружения, соответствующие шине, используемой алгоритмом обработки данных технического зрения. Для этого блок заменяет шум измерения и отключает измерение скорости.

  • Блок «Правдивость пакетных полос» упаковывает информацию о истинности на основе полосы в структуру шины полосы, которая требуется ссылочной модели логики принятия решений.

  • Моделирование 3D Вероятностный Радарный блок присоединено к транспортному средству эго, чтобы обнаружить транспортные средства в 3D окружающей среде Моделирования.

Fusion Forward Vehicle Sensor, Lane Following Decision Logic, Lane Following Controller, Vehicle Dynamics и Metrics Assessment подсистемы основаны на подсистемах, используемых в Highway Lane Following.

В этом примере основное внимание уделяется автоматизации прогонов моделирования для этой модели стенда с использованием Simulink Test для различных сценариев тестирования. Подсистема Metrics Assessment обеспечивает интеграцию оценок показателей на системном уровне с Simulink Test. Эта подсистема использует блоки Check Static Range (Simulink) для этой интеграции. Откройте подсистему оценки метрик.

open_system('HLFControlsWithSensorFusionTestBench/Metrics Assessment');

В этом примере для оценки системы следования по полосам используются четыре метрики.

  • Проверить боковое отклонение - этот блок проверяет, что боковое отклонение от центральной линии полосы находится в пределах заданных пороговых значений для соответствующего сценария. Определите пороговые значения при разработке сценария тестирования.

  • Проверить в полосе (Verify In Lane) - этот блок проверяет, что эго-транспортное средство следует по одной из полос на дороге на протяжении всего моделирования.

  • Проверка промежутка времени - этот блок проверяет, что промежуток времени между эго-транспортным средством и ведущим транспортным средством превышает 0,8 секунды. Временной промежуток между двумя транспортными средствами определяется как отношение вычисленного расстояния на пути продвижения к скорости эго транспортного средства.

  • Проверить отсутствие столкновения (Verify No Collision) - этот блок проверяет, что эго-транспортное средство не сталкивается с ведущим транспортным средством ни в одной точке во время моделирования.

Отключить визуализацию во время выполнения

Модель стенда тестирования системного уровня открывает окно моделирования Unreal Engine для визуализации сценария. Это окно не требуется при автоматическом выполнении тестов.

Настройте блок «Simulation 3D Scene Configuration» для запуска Unreal Engine в безголовом режиме, в котором отключено окно моделирования 3D.

blk = 'HLFControlsWithSensorFusionTestBench/Simulation 3D Scenario/Simulation 3D Scene Configuration';
set_param(blk,'EnableWindow','off');

Автоматизация тестирования

Диспетчер тестирования настроен для автоматизации тестирования приложения, следующего за полосой движения. Откройте окно HLFControlsWithSensorFusionMetricAssessments.mldatx тестовый файл в диспетчере тестов.

sltestmgr;
sltest.testmanager.load('HLFControlsWithSensorFusionMetricAssessments.mldatx');

Просмотрите заполненные тестовые примеры, созданные ранее в этом файле. Эти тесты настроены на запуск модели.

Каждый тестовый случай использует обратный вызов POST-LOAD для запуска сценария установки с соответствующими входами. После моделирования тестового случая менеджер тестов вызывает helperGenerateFilesForLaneFollowingWithSensorFusionReport из обратного вызова CLEAN-UP для создания графиков.

Выполнение и анализ результатов для сценария одиночного тестирования

Тестирование модели на уровне системы с помощью scenario_LFACC_03_Curve_StopnGo тестовый сценарий из Simulink Test, используйте следующий код:

testFile = sltest.testmanager.TestFile('HLFControlsWithSensorFusionMetricAssessments.mldatx');
testSuite = getTestSuiteByName(testFile,'Test Scenarios');
testCase = getTestCaseByName(testSuite,'scenario_LFACC_03_Curve_StopnGo');
resultObj = run(testCase);

Чтобы создать отчет после моделирования, используйте следующий код:

sltest.testmanager.report(resultObj,'Report.pdf',...,
'Title','Highway Lane Following Controls with Sensor Fusion',...
'IncludeMATLABFigures',true,...
'IncludeErrorMessages',true,...
'IncludeTestResults',0,'LaunchReport',true);

Проверьте файл Report.pdf. Обратите внимание, что в разделе Тестовая среда показана платформа, на которой выполняется тест, и версия MATLAB ®, используемая для тестирования. В разделе «Сводка» показаны результаты теста и продолжительность моделирования в секундах. В разделе Результаты показаны результаты прохождения/неуспешного завершения на основе критериев оценки. В этом разделе также показаны графики, записанные из helperGenerateFilesForLaneFollowingWithSensorFusionReport функция.

Выполнение и анализ результатов для всех сценариев тестирования

Вы можете смоделировать систему для всех тестов с помощью sltest.testmanager.run. Можно также смоделировать систему, нажав кнопку Воспроизвести в приложении Диспетчер тестов.

После завершения моделирования теста результаты всех тестов можно просмотреть на вкладке «Результаты и артефакты» Диспетчера тестов. Для каждого тестового случая блоки Check Static Range (Simulink) в модели связаны с диспетчером тестов для визуализации общих результатов прохождения/отказа.

Созданный отчет можно найти в текущей рабочей папке. Этот отчет содержит подробную сводку состояний прохождения/неуспешного завершения и графики для каждого тестового случая.

Проверка состояния тестирования в редакторе требований

Откройте Редактор требований и выберите Показать. Затем выберите Статус проверки, чтобы просмотреть сводку статуса проверки для каждого требования. Зеленая и красная полосы указывают состояние прохождения/отказа результатов моделирования для каждого теста.

Автоматизация тестирования с помощью сгенерированного кода

HLFControlsWithSensorFusionTestBench модель позволяет проводить интегрированное тестирование компонентов Fusion, Lane Follow, Lane Following Decision Logic и Lane Following Controller. Регрессионное тестирование этих компонентов посредством проверки SIL часто полезно. При наличии лицензии Simulink Coder™ можно создать код для этих компонентов. Этот рабочий процесс позволяет проверить, что созданный код дает ожидаемые результаты, соответствующие требованиям системного уровня в процессе моделирования.

Установите Forward Vehicle Sensor Fusion для работы в программном режиме.

model = 'HLFControlsWithSensorFusionTestBench/Forward Vehicle Sensor Fusion';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите режим Lane Following Decision Logic для работы в программном режиме.

model = 'HLFControlsWithSensorFusionTestBench/Lane Following Decision Logic';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите для параметра Lane Following Controller режим «программное обеспечение в контуре».

model = 'HLFControlsWithSensorFusionTestBench/Lane Following Controller';
set_param(model,'SimulationMode','Software-in-the-loop');

Теперь, беги sltest.testmanager.run для моделирования системы для всех сценариев тестирования. После завершения испытаний просмотрите графики и результаты в созданном отчете.

Автоматизация параллельного тестирования

При наличии лицензии Parallel Computing Toolbox™ можно настроить Test Manager на параллельное выполнение тестов с использованием параллельного пула. Для параллельного выполнения тестов сохраните модели после отключения визуализации во время выполнения с помощью save_system('HLFControlsWithSensorFusionTestBench'). Test Manager использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальном компьютере. Параллельное выполнение тестов может ускорить выполнение и уменьшить время, необходимое для получения результатов тестирования. Дополнительные сведения о параллельной настройке тестов из диспетчера тестов см. в разделе Запуск тестов с использованием параллельного выполнения (Simulink Test).

См. также

| | | | | |

Связанные темы