Этот пример показывает, как автоматизировать проверку алгоритма детектора маркера маршрута и сгенерированного кода с помощью Simulink Test™. В этом примере вы будете:
Оцените поведение алгоритма детектора маркера маршрута в различных сценариях тестирования с различными требованиями к тесту.
Автоматизируйте проверку алгоритма детектора маркера маршрута и сгенерированного кода для алгоритма.
Этот пример использует модель детектора маркера маршрута, представленную в Design Lane Marker Detector Using Unreal Engine Simulation Environment и Генерация кода для примеров детектора маркера маршрута.
Детектор маркера маршрута является основным компонентом восприятия беспилотного привода. Детектор анализирует изображения дорог, захваченных с помощью монокулярного датчика камеры, и возвращает информацию о типах кривизны и разметки каждой полосы. Вы можете проектировать и моделировать детектор маркера маршрута с помощью MATLAB ® или Simulink ®, а затем оценить его точность с помощью известной основной истины. Можно сконфигурировать симуляции, чтобы использовать сценарии тестирования, основанные на системных требованиях. Можно интегрировать детектор во внешнее программное окружение и развернуть его в транспортное средство с помощью генерации Кода С++. Генерация кода и верификация модели Simulink обеспечивает функциональную эквивалентность между симуляцией и реализацией в реальном времени. Автоматическое выполнение этих симуляций позволяет выполнить регрессионное тестирование для проверки функциональности уровня системы.
Для получения информации о том, как спроектировать детектор маркера маршрута и сгенерировать модель для генерации кода С++, смотрите Design Lane Marker Detector Using Unreal Engine Simulation Environment и Generate Code for Lane Marker Detector, соответственно. В этом примере показано, как автоматизировать проверку детектора маркера маршрута и моделей генерации кода для нескольких сценариев с использованием Simulink Test™. Сценарии основаны на требованиях уровня системы. Остальная часть примера объясняет шаги, связанные с автоматической проверкой модели детектора маркера маршрута.
Требования к рассмотрению: Исследуйте сценарии тестирования и исследуйте требования, которые описывают условия тестирования.
Рассмотрите тестовую модель: Рассмотрите тестовую модель датчика маркера переулка, которая содержит метрические оценки. Эти метрические оценки интегрируют тестовую модель с Simulink Test™ для автоматической проверки.
Отключите визуализацию во время выполнения: Отключите визуализацию во время выполнения, чтобы уменьшить время выполнения для автоматической проверки.
Автоматическая проверка: настройте менеджер тестов, чтобы симулировать каждый сценарий тестирования, оценить критерии успеха и сообщить результаты. Можно динамически исследовать результаты с помощью менеджера тестов и экспортировать в PDF для внешних проверок.
Автоматизируйте проверку с сгенерированным кодом: Сконфигурируйте обнаружение маршрута, слияние датчика, логику принятия решений и управляйте компонентами, чтобы сгенерировать код С++. Запустите автоматическую проверку сгенерированного кода и проверьте поведение.
Автоматизируйте проверку параллельно: Уменьшите общее время выполнения тестов, используя параллельные вычисления на многоядерном компьютере.
В этом примере вы активируете симуляцию уровня системы путем интегрирования с 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™.
Откройте файл требований к тестам.
open('LaneMarkerDetectorTestRequirements.slreqx')
Можно также открыть файл с помощью вкладки Requirements приложения Requirements Manager в Simulink.
Панель отображает информацию о сценариях тестирования и тестовых требованиях в текстовом и графическом формате. Чтобы протестировать обнаружение маршрута в сценариях только с автомобиль , оборудованный датчиком, используйте файлы сценария с префиксом scenario_LF_. Чтобы протестировать обнаружение маршрута на сценариях с другими транспортными средствами на дороге, используйте файлы сценария с префиксом scenario_LD_.
scenario_LF_01_Straight_RightLane
- Сценарий прямой дороги с автомобилем , оборудованным датчиком в правой полосе.
scenario_LF_02_Straight_LeftLane
- Сценарий прямой дороги с автомобилем , оборудованным датчиком в левой полосе.
scenario_LF_03_Curve_LeftLane
- Сценарий изогнутой дороги с автомобилем , оборудованным датчиком в левой полосе.
scenario_LF_04_Curve_RightLane
- Сценарий изогнутой дороги с автомобилем , оборудованным датчиком в правой полосе.
scenario_LD_01_ThreeVehicles
- Сценарий изогнутой дороги с проезжающим мимо транспортным средством в эго-полосе.
scenario_LD_02_SixVehicles
- Сценарий изогнутой дороги с заменой головных транспортных средств в эго-полосе.
Эти сценарии тестирования имеют те же имена, что и сценарии, используемые в LaneMarkerDetectorTestBench
модель.
Этот пример повторно использует LaneMarkerDetectorTestBench
модель из примера «Сгенерировать код для детектора маркера маршрута».
Откройте тестовую модель.
open_system("LaneMarkerDetectorTestBench");
Эта тестовая модель имеет симуляции 3D Scenario, Lane Marker Detector и Metrics Assessment.
Чтобы сконфигурировать тестовую модель, используйте helperSLLaneMarkerDetectorSetup
скрипт. Задайте сценарий тестирования как вход в скрипт настройка при помощи scenarioName
входной параметр. Значение для scenarioName
должен быть любым из сценариев, имена указаны в требованиях к тестированию.
Запустите скрипт настройки.
scenarioName = "scenario_LD_02_SixVehicles";
helperSLLaneMarkerDetectorSetup(scenarioName);
Теперь можно моделировать модель и визуализировать результаты. Для получения дополнительной информации о симуляции и анализе результатов симуляции смотрите Design Lane Marker Detector Using Unreal Engine Simulation Environment и пример Generate Code for Lane Marker Detector.
Этот пример фокусируется на автоматизации запусков симуляции, чтобы протестировать детектор маркера маршрута на различных сценариях вождения с помощью Simulink Test.Подсистема оценки метриков интегрирует метрические оценки уровня системы с Simulink Test с помощью блока Check Static Range (Simulink).
Откройте подсистему Metrics Assessment.
open_system("LaneMarkerDetectorTestBench/Metrics Assessment");
Подсистема метрической оценки выводит:
Метрики в левой полосе: Массив, который содержит количество соответствий (истинных срабатываний), промахов (ложных срабатываний) и несоответствий (ложных срабатываний), вычисленных из результатов обнаружения для левой полосы.
Состояние левой полосы: Логический скаляр возвращается как true (1) или false (0). Значение true для матчей в левой полосе и false для промахов и ложных срабатываний в левой полосе.
Расстояние в левой полосе: Скаляр, задающий среднее значение расстояний между обнаруженной разметкой в левой полосе и соответствующей основной истиной.
Метрики правой линии: Массив, который содержит количество соответствий (истинных срабатываний), промахов (ложных срабатываний) и ложных срабатываний, вычисленных из результатов обнаружения для правой линии.
Состояние правой полосы: Возвращается как true или false. Значение true для соответствий в правой полосе и false для промахов и ложных срабатываний в правой полосе.
Расстояние правого маршрута: скаляр, задающий среднее значение расстояний между обнаруженными краевыми точками правого маршрута и основной истиной для правого маршрута.
Модель регистрирует выходные результаты из Подсистемы Метрической оценки в переменную базового рабочего пространства logsout
. Можно проверить эффективность алгоритма детектора маркера маршрута путем валидации и построения графиков метрик, вычисленных отдельно для левого и правого маршрутов.
Отключите визуализацию во время выполнения для подсистемы детектора маркера маршрута.
load_system('LaneMarkerDetector'); blk = 'LaneMarkerDetector/Lane Marker Detector'; set_param(blk,'EnableDisplays','off');
Сконфигурируйте блок Simulation 3D Scene Configuration, чтобы запустить Unreal Engine в безголовном режиме, где 3D окно симуляции отключено.
blk = ['LaneMarkerDetectorTestBench/Simulation 3D Scenario/', ... 'Simulation 3D Scene Configuration']; set_param(blk,'EnableWindow','off');
Откройте LaneMarkerDetectorMetricAssessments.mldatx
тестовый файл в диспетчере тестов. Test Manager сконфигурирован для автоматизации проверки алгоритма детектора маркера маршрута.
sltestmgr;
sltest.testmanager.load('LaneMarkerDetectorMetricAssessments.mldatx');
Контрольные примеры в Диспетчере тестов связаны с требованиями тестирования в Редакторе требований. Каждый тест использует POST-LOAD
Коллбэк, чтобы запустить скрипт настройки с соответствующими входами и сконфигурировать выход имя файла видео. После симуляции теста он вызывает helperGenerateReportForLaneMarkerDetector
от CLEAN-UP
коллбэк для генерации графиков для результатов обнаружения из подсистемы метрической оценки. Для получения дополнительной информации об этих графиках см. Пример генерации кода для детектора маркера маршрута.
Запустите и исследуйте результаты для одного сценария тестирования:
Чтобы уменьшить выход в командное окно, отключите сообщения обновления MPC.
mpcverbosity('off');
Тестируйте системную модель на scenario_LD_02_SixVehicles
сценарий.
testFile = sltest.testmanager.TestFile('LaneMarkerDetectorMetricAssessments.mldatx'); testSuite = getTestSuiteByName(testFile,'Test Scenarios'); testCase = getTestCaseByName(testSuite,'scenario_LD_02_SixVehicles'); resultObj = run(testCase);
Сгенерируйте протоколы испытаний, полученные после симуляции.
sltest.testmanager.report(resultObj,'Report.pdf',..., 'Title','Lane Marker Detector',... 'IncludeMATLABFigures',true,... 'IncludeErrorMessages',true,... 'IncludeTestResults',0,'LaunchReport',true);
Исследуйте Report.pdf
. В разделе Test environment показана платформа, на которой запускается тест, и версия MATLAB ®, используемая для проверки. В разделе «Сводка» показаны результаты теста и длительность симуляции в секундах. В разделе Results показаны результаты прохождения или непрохождения на основе критериев оценки и отображаются графики, записанные из helperGenerateReportForLaneMarkerDetector
функция.
Запустите и исследуйте результаты для всех сценариев тестирования:
Можно симулировать систему, чтобы запустить все тесты при помощи sltest.testmanager.run
команда. Также можно нажать Воспроизведение в приложении Test Manager.
После завершения симуляций теста результаты для всех тестов можно просмотреть на вкладке Результаты и Программные продукты Диспетчера тестов. Для каждого теста блоки Check Static Range (Simulink) в модели связаны с Test Manager. Можно визуализировать общий проход или результаты непрохождения.
Сгенерированный отчет можно найти в текущей рабочей директории. Этот отчет содержит подробные сводные данные статусов прохождения или непрохождения и графиков для каждого теста.
Проверьте состояние теста в редакторе требований:
Откройте Редактор требований и выберите Отображение. Затем выберите Верификацию Status, чтобы увидеть сводные данные статуса верификации для каждого требования. Зеленая и красная полоски указывают статус прохождения и отказа результатов симуляции для каждого теста.
The LaneMarkerDetectorTestBench
модель позволяет тестировать компонент Маркер Detector. Для выполнения регрессионного тестирования этих компонентов используйте верификацию ПО в цикле (SIL). Если у вас есть лицензия Embedded Coder™ Simulink Coder™, можно сгенерировать код для компонента детектора маркера маршрута. Можно проверить, дает ли сгенерированный код результаты, соответствующие требованиям теста.
Установите режим симуляции для детектора маркера маршрута на программное обеспечение в цикле.
model = 'LaneMarkerDetectorTestBench/Lane Marker Detector'; set_param(model,'SimulationMode','Software-in-the-loop');
Симулируйте систему для всех сценариев тестирования и сгенерируйте отчет о тесте с помощью команды MATLAB, запуск sltest.testmanager.run
. Используйте сгенерированный отчет для просмотра графиков и результатов тестирования.
Снова включите сообщения обновления MPC.
mpcverbosity('on');
Если у вас есть лицензия Parallel Computing Toolbox™, можно настроить менеджер тестов для выполнения тестов параллельно с помощью параллельного пула. Чтобы запустить тесты параллельно, отключите визуализацию во время выполнения и сохраните модели с помощью save_system('LaneMarkerDetector')
и save_system('LaneMarkerDetectorTestBench')
. Test Manager использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальной машине. Параллельный запуск тестов ускоряет выполнение и уменьшает время, необходимое для проверки. Для получения дополнительной информации о том, как настроить тесты параллельно с помощью Test Manager, смотрите Запуск тестов с использованием параллельного выполнения (Simulink Test).