exponenta event banner

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

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

Введение

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

В примере «Полоса движения по шоссе» показано, как моделировать модель на уровне системы для полосы движения. В этом примере показано, как автоматизировать тестирование этой модели по нескольким сценариям с использованием Simulink Test™. Сценарии основаны на системных требованиях. В этом примере:

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

  2. Анализ модели испытательного стенда: анализ модели испытательного стенда, следующей за полосой движения уровня системы, которая содержит оценки показателей. Эти метрические оценки объединяют модель испытательного стенда с Simulink Test для автоматического тестирования.

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

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

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

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

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

if ~ispc
    error("The 3D simulation environment requires a Windows 64-bit platform");
end

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

rng(0);

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

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

open('HighwayLaneFollowingTestRequirements.slreqx')

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

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

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

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

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

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

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

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

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

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

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

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

Эти требования реализуются как тестовые сценарии с теми же именами, что и сценарии, используемые в HighwayLaneFollowingTestBench модель.

Анализ модели испытательного стенда

В этом примере повторно используется HighwayLaneFollowingTestBench в примере «Полоса движения». Откройте модель испытательного стенда.

open_system("HighwayLaneFollowingTestBench");

Эта модель испытательного стенда имеет сценарий 3D моделирования, детектор маркера полосы движения, детектор транспортного средства, слияние датчиков транспортного средства в прямом направлении, логику принятия решения по полосе движения и контроллер и компоненты динамики транспортного средства.

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

scenarioName = "scenario_LFACC_03_Curve_StopnGo";
helperSLHighwayLaneFollowingSetup("scenarioFcnName",scenarioName);

Теперь можно моделировать модель и визуализировать результаты. Дополнительные сведения об анализе результатов моделирования и конструкции отдельных компонентов в модели испытательного стенда см. в примере «Полоса движения по шоссе».

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

open_system("HighwayLaneFollowingTestBench/Metrics Assessment");

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

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

  • Проверка в полосе: Проверка того, что эго-транспортное средство следует по одной из полос на дороге на протяжении всего моделирования.

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

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

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

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

Отключите визуализацию во время выполнения для подсистемы «Детектор маркеров полос движения».

load_system('LaneMarkerDetector');
blk = 'LaneMarkerDetector/Lane Marker Detector';
set_param(blk,'EnableDisplays','off');

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

load_system('VisionVehicleDetector');
blk = 'VisionVehicleDetector/Vision Vehicle Detector/ACF/ACF';
set_param(blk,'EnableDisplay','off');

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

blk = ['HighwayLaneFollowingTestBench/Simulation 3D Scenario/', ...
      'Simulation 3D Scene Configuration'];
set_param(blk,'EnableWindow','off');

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

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

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

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

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

Для уменьшения количества выходных данных в командном окне отключите сообщения обновления MPC.

mpcverbosity('off');

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

testFile = sltest.testmanager.TestFile('HighwayLaneFollowingMetricAssessments.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',...
    'IncludeMATLABFigures',true,...
    'IncludeErrorMessages',true,...
    'IncludeTestResults',0,'LaunchReport',true);

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

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

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

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

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

Проверьте статус теста в редакторе требований:

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

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

HighwayLaneFollowingTestBench модель позволяет проводить интегрированное тестирование компонентов датчика маркера полосы движения, детектора транспортного средства, датчика прямого движения транспортного средства, логики принятия решения по полосе движения и контроллера после полосы движения. Часто полезно выполнять регрессионное тестирование этих компонентов посредством проверки программного обеспечения в цикле (SIL). При наличии лицензии Embedded Coder™ Simulink Coder™ можно создать код для этих компонентов. Этот рабочий процесс позволяет проверить, что созданный код дает ожидаемые результаты, соответствующие требованиям системного уровня в процессе моделирования.

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

model = 'HighwayLaneFollowingTestBench/Lane Marker Detector';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите детектор транспортного средства в режим «Программное обеспечение в контуре».

model = 'HighwayLaneFollowingTestBench/Vehicle Detector';
set_param(model,'SimulationMode','Software-in-the-loop');

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

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

Установите режим «Lane Following Decision Logic» для запуска в режиме «Software in-the-loop».

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

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

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

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

Снова включите сообщения обновления MPC.

mpcverbosity('on');

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

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

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