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

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

Введение

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

Пример Highway Lane Following показал, как симулировать системную модель для следования по полосе. В этом примере показано, как автоматизировать проверку, которое моделируется с использованием нескольких сценариев с помощью Simulink Test™. Сценарии основаны на требованиях уровня системы. В этом примере вы будете:

  1. Требования к рассмотрению: Требования описывают условия тестирования уровня системы. Сценарии тестирования симуляции создаются, чтобы представлять эти условия.

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

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

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

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

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

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

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

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

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 - Сценарий прямой дороги с ведущим транспортным средством, которое ломается в ego-полосе.

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

Обзор Тестовой модели

Этот пример повторно использует HighwayLaneFollowingTestBench модель из маршрута шоссе Следующий пример. Откройте тестовую модель.

open_system("HighwayLaneFollowingTestBench");

Эта тестовая модель имеет Симуляцию 3D Sensor, Lane Маркер Detector, Транспортного средства Detector, Forward Транспортного средства Sensor Fusion, Lane Following Decision Logic и Lane Following Контроллера и Динамики аппарата компоненты.

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

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

Теперь можно моделировать модель и визуализировать результаты. Для получения дополнительной информации об анализе результатов симуляции и проекта отдельных компонентов в тестовой модели, смотрите пример Highway Lane Following.

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

open_system("HighwayLaneFollowingTestBench/Metrics Assessment");

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

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

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

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

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

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

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

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

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

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

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');

Автоматизация проверки

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

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

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

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

Чтобы уменьшить выход в командное окно, отключите сообщения обновления 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. Обратите внимание, что в разделе Test environment показана платформа, на которой запускается тест, и версия MATLAB ®, используемая для проверки. В разделе «Сводка» показаны результаты теста и длительность симуляции в секундах. В разделе «Результаты» показаны результаты прохождения/непрохождения на основе критериев оценки. В этом разделе также показаны графики, записанные из helperGenerateFilesForLaneFollowingReport функция.

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

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

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

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

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

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

Автоматизируйте проверку с сгенерированным кодом

The HighwayLaneFollowingTestBench модель позволяет проводить комплексную проверку компонентов Lane Marker Detector, Vehicle Detector, Forward Vehicle Sensor Fusion, Lane Following Decision Logic и Lane Following Controller. Часто полезно выполнить регрессионное тестирование этих компонентов с помощью верификации ПО в цикле (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');

Установите 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 для запуска в режиме Software-in-the-loop.

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 по умолчанию и выполняет тесты только на локальной машине. Параллельный запуск тестов может ускорить выполнение и уменьшить время, необходимое для получения результатов тестирования. Для получения дополнительной информации о том, как настроить тесты параллельно из Test Manager, смотрите Запуск тестов с использованием параллельного выполнения (Simulink Test).

Похожие темы