В этом примере показано, как оценить функциональность следующего за маршрутом приложения путем определения сценариев на основе требований, автоматизации тестирования компонентов и сгенерированного кода для тех компонентов. Компоненты включают обнаружение маршрута, сплав датчика, логику решения и средства управления. Этот пример основывается на Магистральном примере Следующего Маршрута.
Магистральная система следования маршрута ведет транспортное средство, чтобы переместиться в отмеченном маршруте. Это также обеспечивает скорость набора или безопасное расстояние от предыдущего транспортного средства в том же маршруте. Система обычно включает обнаружение маршрута, сплав датчика, логику решения, и управляет компонентами. Симуляция уровня системы является общим методом для оценки функциональности интегрированных компонентов. Моделирование конфигурировано к сценариям тестирования на основе системных требований. Автоматически выполнение этих симуляций позволяет регрессионному тестированию проверить функциональность уровня системы.
Магистральный пример Следующего Маршрута показал, как симулировать системную модель для следования маршрута. В этом примере показано, как автоматизировать тестирование что модель против нескольких сценариев с помощью Simulink Test™. Сценарии основаны на требованиях уровня системы. В этом примере вы будете:
Требования анализа: требования описывают условия испытания уровня системы. Сценарии тестирования симуляции создаются, чтобы представлять эти условия.
Рассмотрите тестовую модель: Рассмотрите тестовую модель следования маршрута уровня системы, которая содержит метрические оценки. Эти метрические оценки интегрируют тестовую модель с Simulink Test для автоматизированного тестирования.
Отключите визуализацию во время выполнения: визуализация Во время выполнения отключена, чтобы уменьшать время выполнения для автоматизированного тестирования.
Автоматизируйте тестирование: менеджер по тесту сконфигурирован, чтобы симулировать каждый сценарий тестирования, оценить критерии успеха и результаты отчета. Результаты исследованы динамически в менеджере по тесту и экспортированы в PDF для внешних рецензентов.
Автоматизируйте тестирование со сгенерированным кодом: обнаружение маршрута, сплав датчика, логика решения и компоненты средств управления сконфигурированы, чтобы сгенерировать Код С++. Автоматизированное тестирование запущено на сгенерированном коде, чтобы проверить ожидаемое поведение.
Автоматизируйте тестирование параллельно: Полное время выполнения для того, чтобы запустить тесты уменьшается с помощью параллельных вычислений на многоядерном компьютере.
Тестирование системной модели требует фотореалистической среды симуляции. В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine от Epic Games®. 3D среда симуляции требует Windows® 64-битная платформа.
if ~ispc error("The 3D simulation environment requires a Windows 64-bit platform"); end
Чтобы гарантировать воспроизводимость результатов симуляции, установите случайный seed.
rng(0);
Simulink Requirements™ позволяет вам автор, анализируйте и управляйте требованиями в Simulink. Этот пример содержит десять сценариев тестирования с высокоуровневыми требованиями тестирования, заданными для каждого сценария. Откройте набор требования.
open('HighwayLaneFollowingTestRequirements.slreqx')
В качестве альтернативы можно также открыть файл от вкладки Requirements менеджера по Требованиям приложение в 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
— Прямой дорожный сценарий с ведущим транспортным средством, которое ломается в маршруте эго.
Эти требования реализованы как сценарии тестирования с теми же именами как сценарии, используемые в HighwayLaneFollowingTestBench
модель.
Этот пример снова использует HighwayLaneFollowingTestBench
модель из Магистрального примера Следующего Маршрута. Откройте тестовую модель.
open_system("HighwayLaneFollowingTestBench");
Эта тестовая модель имеет Симуляцию 3D Сценарий, Детектор Маркера Маршрута, Детектор Транспортного средства, Прямой Fusion Датчика Транспортного средства, Маршрут После Логики Решения и Маршрут После компонентов Динамики аппарата и Контроллера.
Эта тестовая модель сконфигурирована с помощью helperSLHighwayLaneFollowingSetup
скрипт. Этот скрипт настройки берет scenarioName
как введено. scenarioName
может быть любой из ранее описанных сценариев тестирования. Чтобы запустить скрипт настройки, используйте код:
scenarioName = "scenario_LFACC_03_Curve_StopnGo"; helperSLHighwayLaneFollowingSetup("scenarioFcnName",scenarioName);
Можно теперь симулировать модель и визуализировать результаты. Для получения дополнительной информации об анализе результатов симуляции и проекте отдельных компонентов в тестовой модели, смотрите, что Магистральный Маршрут Следует примеру.
В этом примере особое внимание находится больше на автоматизации запусков симуляции для этой тестовой модели с помощью Simulink Test для различных сценариев тестирования. Метрическая подсистема Оценки включает интегрирование метрических оценок уровня системы с Simulink Test. Эта подсистема использует Проверку Статическая Область значений (Simulink) блоки для этого интегрирования. Откройте Метрическую подсистему Оценки.
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');
Конфигурируйте Моделирование 3D Блок Configuration Сцены, чтобы запустить Нереальный 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® используется для тестирования. Раздел Summary показывает результат теста и длительность симуляции в секундах. Раздел Results показывает результаты передачи/сбоя на основе критериев оценки. Этот раздел также показывает графики, регистрируемые от helperGenerateFilesForLaneFollowingReport
функция.
Запустите и исследуйте результаты для всех сценариев тестирования:
Можно симулировать систему для всех тестов при помощи sltest.testmanager.run
. В качестве альтернативы можно симулировать систему путем нажатия на Play в менеджере по Тесту приложение.
После завершения тестовых симуляций результаты для всех тестов могут быть просмотрены во вкладке Results и Artifacts менеджера по Тесту. Для каждого теста Проверка Статическая Область значений (Simulink) блоки в модели сопоставлены с менеджером по Тесту, чтобы визуализировать полные результаты передачи/сбоя.
Можно найти сгенерированный отчет в текущей рабочей директории. Этот отчет содержит подробные сводные данные состояний передачи/сбоя и графики для каждого теста.
Проверьте тестовое состояние в Редакторе Требований:
Откройте Редактор Требований и выберите Display. Затем выберите Verification Status, чтобы видеть сводные данные состояния верификации для каждого требования. Зеленые и красные панели указывают на состояние передачи/сбоя результатов симуляции для каждого теста.
HighwayLaneFollowingTestBench
модель включает интегрированное тестирование Детектора Маркера Маршрута, Детектора Транспортного средства, Прямого Fusion Датчика Транспортного средства, Маршрута После Логики Решения и Маршрута После компонентов Контроллера. Часто полезно выполнить регрессионное тестирование этих компонентов через программное обеспечение в цикле (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');
Установите Маршрут После Логики Решения запускаться в программном обеспечении в режиме цикла.
model = 'HighwayLaneFollowingTestBench/Lane Following Decision Logic'; set_param(model,'SimulationMode','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™, то можно сконфигурировать менеджера по Тесту, чтобы выполнить тесты в параллели с помощью параллельного пула. Чтобы запустить тесты параллельно, сохраните модели после отключения визуализации во время выполнения с помощью save_system('LaneMarkerDetector')
, save_system('VisionVehicleDetector')
и save_system('HighwayLaneFollowingTestBench')
. Протестируйте менеджера, использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальной машине. Запущение тестов параллельно может ускорить выполнение и уменьшить количество времени, которое это занимает, чтобы получить результаты испытаний. Для получения дополнительной информации о том, как сконфигурировать тесты параллельно от менеджера по Тесту, смотрите, что Тесты Запуска Используют Параллельное Выполнение (Simulink Test).