Автоматическая проверка для детектора маркера маршрута

Этот пример показывает, как автоматизировать проверку алгоритма детектора маркера маршрута и сгенерированного кода с помощью 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™. Сценарии основаны на требованиях уровня системы. Остальная часть примера объясняет шаги, связанные с автоматической проверкой модели детектора маркера маршрута.

  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™.

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

open('LaneMarkerDetectorTestRequirements.slreqx')

Можно также открыть файл с помощью вкладки Requirements приложения Requirements Manager в 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 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");

Подсистема метрической оценки выводит:

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

  2. Состояние левой полосы: Логический скаляр возвращается как true (1) или false (0). Значение true для матчей в левой полосе и false для промахов и ложных срабатываний в левой полосе.

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

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

  5. Состояние правой полосы: Возвращается как true или false. Значение true для соответствий в правой полосе и false для промахов и ложных срабатываний в правой полосе.

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

Модель регистрирует выходные результаты из Подсистемы Метрической оценки в переменную базового рабочего пространства 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).

См. также

Блоки

Похожие темы