Автоматизируйте тестирование на магистральный маршрут после средств управления и cочетания датчиков

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

Введение

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

Этот пример включает интегрирование и симуляцию этих двух компонентов с помощью тестовой модели уровня системы. Это показывает, как автоматизировать тестирование против нескольких сценариев с помощью Simulink Test™. Сценарии основаны на требованиях уровня системы. Кроме того, это также показывает, как можно проверить программное обеспечение использования сгенерированного кода в цикле (SIL) симуляция. В этом примере, вас:

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

  2. Исследуйте тестовую модель — модель содержит cочетание датчиков, средства управления, динамику аппарата, датчики и метрики, чтобы оценить функциональность. Метрические оценки интегрируют тестовую модель с Simulink Test для автоматизированного тестирования.

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

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

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

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

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

if ~ispc
    error(['3D simulation is supported only on Microsoft', char(174), ' Windows', char(174), '.'])
end

Рассмотрите требования

Чтобы исследовать требования, откройте рабочую копию файлов проекта в качестве примера. MATLAB копирует файлы в папку в качестве примера так, чтобы можно было отредактировать их.

addpath(fullfile(matlabroot, 'toolbox', 'driving', 'drivingdemos'));
helperDrivingProjectSetup('HLFControlsSensorFusion.zip', 'workDir', pwd);

Simulink Requirements™ включает вас автору, анализируйте и управляйте требованиями в Simulink. Этот пример содержит 10 сценариев тестирования с высокоуровневыми требованиями тестирования, заданными для каждого сценария. Откройте набор требования.

open('HLFControlsWithSensorFusionTestRequirements.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 — Прямой дорожный сценарий с ведущим транспортным средством, которое ломается в маршруте эго.

Исследуйте тестовую модель

Открытая тестовая модель.

open_system('HLFControlsWithSensorFusionTestBench');

Тестовая модель содержит эти подсистемы:

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

  2. Передайте Cочетание датчиков Транспортного средства — Подсистема, которая плавит обнаружения транспортных средств перед автомобилем, оборудованным датчиком, которые были получены из радарных датчиков и видения.

  3. Модель Lane Following Decision Logic — Algorithm, которая задает боковую и продольную логику решения и предоставляет информацию о центре маршрута и сопутствующую информацию самого важного объекта (MIO) контроллеру.

  4. Модель Lane Following Controller — Algorithm, которая задает контроллер.

  5. Динамика аппарата — Подсистема, которая задает динамическую модель для автомобиля, оборудованного датчиком

  6. Метрическая Оценка — Подсистема, которая оценивает поведение уровня системы.

Симуляция 3D подсистема Сценария конфигурирует дорожную сеть, устанавливает положения транспортного средства и синтезирует датчики. Откройте Симуляцию 3D подсистема Сценария.

open_system("HLFControlsWithSensorFusionTestBench/Simulation 3D Scenario")

Сцена и дорожная сеть заданы этими частями подсистемы:

Положения транспортного средства заданы этими частями подсистемы:

  • Входной порт Эго управляет положением автомобиля, оборудованного датчиком, который задан Симуляцией 3D Транспортное средство с блоком Ground Following 1.

  • Блок Vehicle To World преобразует положения агента от координат автомобиля, оборудованного датчиком к мировым координатам.

  • Выходные положения агента блока Scenario Reader, которые управляют положением целевых транспортных средств. Эти транспортные средства заданы другой Симуляцией 3D Транспортное средство с Землей После блоков.

  • Блок Cuboid To 3D Simulation преобразует систему координат положения эго (относительно ниже центра задней оси транспортного средства) к 3D системе координат симуляции (относительно ниже центра транспортного средства).

Датчики, присоединенные к автомобилю, оборудованному датчиком, заданы этими частями подсистемы:

  • Блок Simulation 3D Vision Detection Generator присоединен к автомобилю, оборудованному датчиком, чтобы обнаружить транспортные средства и маршруты в 3D среде симуляции. Блок выводит обнаружения транспортного средства из симулированных положений агента, которые основаны на представлениях кубоида агентов в сценарии.

  • Блок Delete Velocity From Vision упаковывает обнаружения видения, чтобы совпадать с шиной, используемой алгоритмом обработки видения. Для этого блок заменяет шум измерения и отключает скоростное измерение.

  • Блок Pack Lanes Truth упаковывает информацию об основной истине маршрута в структуру шины маршрутов, которой требует Маршрут После образца модели Логики Решения.

  • Блок Simulation 3D Probabilistic Radar присоединен к автомобилю, оборудованному датчиком, чтобы обнаружить транспортные средства в 3D Среде симуляции.

Прямое Cочетание датчиков Транспортного средства, Маршрут После Логики Решения, Маршрут После Контроллера, Динамики аппарата и Метрических подсистем Оценки основаны на подсистемах, используемых в Магистральном примере Следующего Маршрута.

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

open_system('HLFControlsWithSensorFusionTestBench/Metrics Assessment');

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

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

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

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

  • Не проверьте Столкновение — Этот блок проверяет, что автомобиль, оборудованный датчиком не сталкивается с ведущим транспортным средством ни в какой точке во время симуляции.

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

Тестовая модель уровня системы открывает Нереальное окно симуляции Engine для визуализации сценария. Это окно не требуется, когда тесты автоматизированы.

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

blk = 'HLFControlsWithSensorFusionTestBench/Simulation 3D Scenario/Simulation 3D Scene Configuration';
set_param(blk,'EnableWindow','off');

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

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

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

Наблюдайте заполненные тесты, которые были созданы ранее в этом файле. Эти тесты сконфигурированы, чтобы запустить модель.

Каждый тест использует коллбэк POST-LOAD, чтобы запустить скрипт настройки с соответствующими входными параметрами. После симуляции теста менеджер по Тесту вызывает helperGenerateFilesForLaneFollowingWithSensorFusionReport от коллбэка ОЧИСТКИ, чтобы сгенерировать графики.

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

Протестировать системную модель с scenario_LFACC_03_Curve_StopnGo сценарий тестирования от Simulink Test, используйте этот код:

testFile = sltest.testmanager.load('HLFControlsWithSensorFusionMetricAssessments.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 Controls with Sensor Fusion',...
'IncludeMATLABFigures',true,...
'IncludeErrorMessages',true,...
'IncludeTestResults',0,'LaunchReport',true);

Исследуйте Report.pdf. Заметьте, что раздел Тестовой среды показывает платформу, на которой запущен тест, и версия MATLAB® используется для тестирования. Раздел Summary показывает результат теста и длительность симуляции в секундах. Раздел Results показывает результаты передачи/сбоя на основе критериев оценки. Этот раздел также показывает графики, регистрируемые от helperGenerateFilesForLaneFollowingWithSensorFusionReport функция.

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

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

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

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

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

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

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

HLFControlsWithSensorFusionTestBench модель включает интегрированное тестирование Прямого Cочетания датчиков Транспортного средства, Маршрута После Логики Решения и Маршрута После компонентов Контроллера. Регрессионное тестирование этих компонентов посредством верификации SIL часто полезно. Если у вас есть лицензия Simulink Coder™, то можно сгенерировать код для этих компонентов. Этот рабочий процесс позволяет вам проверить, что сгенерированный код производит ожидаемые результаты, которые совпадают с требованиями уровня системы в течение симуляции.

Выдвиньте Cочетание датчиков Транспортного средства, чтобы запуститься в программном обеспечении в режиме цикла.

model = 'HLFControlsWithSensorFusionTestBench/Forward Vehicle Sensor Fusion';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите Маршрут После Логики Решения запускаться в программном обеспечении в режиме цикла.

model = 'HLFControlsWithSensorFusionTestBench/Lane Following Decision Logic';
set_param(model,'SimulationMode','Software-in-the-loop');

Установите Маршрут После Контроллера запускаться в программном обеспечении в режиме цикла.

model = 'HLFControlsWithSensorFusionTestBench/Lane Following Controller';
set_param(model,'SimulationMode','Software-in-the-loop');

Теперь запустите sltest.testmanager.run симулировать систему для всех сценариев тестирования. После того, как тесты завершены, рассматривают графики и результаты в сгенерированном отчете.

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

Если у вас есть лицензия Parallel Computing Toolbox™, то можно сконфигурировать менеджера по Тесту, чтобы выполнить тесты в параллели с помощью параллельного пула. Чтобы запустить тесты параллельно, сохраните модели после отключения визуализации во время выполнения с помощью save_system('HLFControlsWithSensorFusionTestBench'). Протестируйте менеджера, использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальной машине. Запущение тестов параллельно может ускорить выполнение и уменьшить количество времени, которое это занимает, чтобы получить результаты испытаний. Для получения дополнительной информации о том, как сконфигурировать тесты параллельно от менеджера по Тесту, смотрите, что Тесты Запуска Используют Параллельное Выполнение (Simulink Test).

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

| | | | | |

Похожие темы