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

В этом примере показано, как автоматизировать тестирование алгоритма детектора маркера маршрута и сгенерированного кода при помощи Simulink Test™. В этом примере вы будете:

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

  • Автоматизируйте тестирование алгоритма детектора маркера маршрута и сгенерированного кода для алгоритма.

Этот пример использует модель детектора маркера маршрута, представленную в Детекторе Маркера Маршрута Проекта Используя Нереальную Среду симуляции Engine, и Сгенерируйте Код для примеров Детектора Маркера Маршрута.

Введение

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

Для получения информации о том, как спроектировать детектор маркера маршрута и сгенерировать модель для генерации Кода С++, видит, что Детектор Маркера Маршрута Проекта Использует Нереальную Среду симуляции Engine, и Генерирует Код для Детектора Маркера Маршрута, соответственно. В этом примере показано, как автоматизировать тестирование детектора маркера маршрута и моделей генерации кода против нескольких сценариев с помощью Simulink Test™. Сценарии основаны на требованиях уровня системы. Остальная часть примера объясняет шаги, вовлеченные в автоматизированное тестирование модели детектора маркера маршрута.

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

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

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

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

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

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

В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным 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™.

Откройте тестовый файл требований.

open('LaneMarkerDetectorTestRequirements.slreqx')

Можно также открыть файл с помощью вкладки Requirements менеджера по Требованиям приложение в Simulink.

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

  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_LD_01_ThreeVehicles — Кривой дорожный сценарий с проходящим мимо транспортным средством в маршруте эго.

  6. scenario_LD_02_SixVehicles — Кривой дорожный сценарий с изменяющимися ведущими транспортными средствами в маршруте эго.

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

Рассмотрите тестовую модель

Этот пример снова использует LaneMarkerDetectorTestBench модель из Сгенерировать Кода для примера Детектора Маркера Маршрута.

Откройте тестовую модель.

open_system("LaneMarkerDetectorTestBench");

Эта тестовая модель имеет Симуляцию 3D Сценарий, Детектор Маркера Маршрута и Метрические подсистемы Оценки.

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

Запустите скрипт настройки.

scenarioName = "scenario_LD_02_SixVehicles";
helperSLLaneMarkerDetectorSetup(scenarioName);

Можно теперь симулировать модель и визуализировать результаты. Для получения дополнительной информации о симуляции и анализе результатов симуляции, смотрите, что Детектор Маркера Маршрута Проекта Использует Нереальную Среду симуляции Engine, и Сгенерируйте Код для примера Детектора Маркера Маршрута.

Этот пример фокусируется на автоматизации запусков симуляции, чтобы протестировать детектор маркера маршрута на различных ведущих сценариях при помощи Simulink Test. Метрическая подсистема Оценки интегрирует метрические оценки уровня системы с Simulink Test при помощи блока Check Static Range (Simulink).

Откройте Метрическую подсистему Оценки.

open_system("LaneMarkerDetectorTestBench/Metrics Assessment");

Метрическая подсистема Оценки выходные параметры:

  1. Оставленные метрики маршрута: массив, который содержит количество соответствий (истинные положительные стороны), промахи (ложные отрицательные стороны), и несоответствия (ложные положительные стороны) вычисленный из результатов обнаружения для левого маршрута.

  2. Оставленное состояние маршрута: логический скаляр, возвращенный как true (1) или ложь (0). Значение верно для соответствий в оставленном маршруте и лжи для промахов и ложных положительных сторон в левом маршруте.

  3. Оставленное расстояние маршрута: скаляр, задающий среднее значение расстояний между обнаруженной левой маркировкой маршрута и соответствующей основной истиной.

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

  5. Правильное состояние маршрута: Возвращенный как TRUE или FALSE. Значение верно для соответствий в правильном маршруте и лжи для промахов и ложных положительных сторон в правильном маршруте.

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

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

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

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

Конфигурируйте Моделирование 3D Блок Configuration Сцены, чтобы запустить Нереальный Engine в бездисплейном режиме, где 3D окно симуляции отключено.

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

Автоматизируйте тестирование

Откройте LaneMarkerDetectorMetricAssessments.mldatx тестовый файл в менеджере по Тесту. Менеджер по Тесту сконфигурирован, чтобы автоматизировать тестирование алгоритма детектора маркера маршрута.

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. Раздел Тестовой среды показывает платформу, на которой запущен тест, и версия MATLAB® используется для тестирования. Раздел Summary показывает результат теста и длительность симуляции в секундах. Раздел Results показывает передачу или результаты сбоя на основе критериев оценки и отображает графики, регистрируемые от helperGenerateReportForLaneMarkerDetector функция.

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

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

После завершения тестовых симуляций результаты для всех тестов могут быть просмотрены во вкладке Results и Artifacts менеджера по Тесту. Для каждого теста Проверка Статическая Область значений (Simulink) блоки в модели сопоставлены с менеджером по Тесту. Можно визуализировать полную передачу или привести результаты к сбою.

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

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

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

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

LaneMarkerDetectorTestBench модель позволяет тестировать компонента Детектора Маркера Маршрута. Чтобы выполнить регрессионное тестирование этих компонентов используют программное обеспечение в цикле (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'). Протестируйте менеджера, использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальной машине. Запущение тестов в параллели ускоряет выполнение и уменьшает количество времени, требуемое для тестирования. Для получения дополнительной информации о том, как сконфигурировать тесты в параллели с помощью менеджера по Тесту, смотрите, что Тесты Запуска Используют Параллельное Выполнение (Simulink Test).

Смотрите также

Блоки

Похожие темы