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

В этом примере показано, как автоматизировать тестирование прямого алгоритма cочетания датчиков транспортного средства и его сгенерированного кода при помощи Simulink® Test™. В этом примере, вас:

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

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

Введение

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

Для получения информации о том, как спроектировать cочетание датчиков и алгоритм отслеживания, смотрите Прямой пример Cочетания датчиков Транспортного средства. В этом примере показано, как автоматизировать тестирование cочетания датчиков и отслеживание алгоритма против нескольких сценариев с помощью Simulink Test. Сценарии основаны на требованиях уровня системы. В этом примере, вас:

  • Рассмотрите требования — Исследуют сценарии тестирования и рассматривают требования, которые описывают условия испытания.

  • Рассмотрите тестовую модель — Анализ прямая тестовая модель cочетания датчиков транспортного средства, которая содержит метрические оценки. Эти метрические оценки интегрируют тестовую модель с Simulink Test для автоматизированного тестирования.

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

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

  • Автоматизируйте тестирование со сгенерированным кодом — Конфигурируют прямой компонент cочетания датчиков транспортного средства, чтобы сгенерировать Код С++. Запустите автоматизированные тесты на сгенерированном коде и проверьте поведение.

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

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

if ~ispc
    error("The 3D simulation environment requires a Windows 64-bit platform")
end

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

Этот пример предоставляет 11 сценариев тестирования для оценки модели. Чтобы задать высокоуровневые требования тестирования для каждого сценария, используйте Simulink Requirements™. Чтобы исследовать тестовые требования, откройте рабочую копию файлов проекта в качестве примера. MATLAB копирует файлы в папку в качестве примера так, чтобы можно было отредактировать их.

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

addpath(fullfile(matlabroot,"toolbox","driving","drivingdemos"))
helperDrivingProjectSetup("FVSensorFusion.zip",workDir=pwd)
open("ForwardVehicleSensorFusionTestRequirements.slreqx")

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

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

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

  • scenario_FVSF_01_Curve_FourVehicles — Кривой дорожный сценарий с ведущим автомобильным сокращением из маршрута эго, чтобы обогнать медленный автомобиль.

  • scenario_FVSF_02_Straight_FourVehicles — Прямой дорожный сценарий, где, где неавтомобили, оборудованные датчиком варьируются своя скорость.

  • scenario_FVSF_03_Curve_SixVehicles — Кривой дорожный сценарий, где автомобиль эго варьируется своя скорость.

  • scenario_FVSF_04_Straight_ThreeVehicles — Прямой дорожный сценарий с автомобилем эго и двумя целевыми транспортными средствами. Ведущее транспортное средство перемещается в маршруте эго и других целевых перемещениях транспортного средства в смежном правильном маршруте.

  • scenario_FVSF_05_Straight_TwoVehicles — Прямой дорожный сценарий с автомобилем, оборудованным датчиком и целевым транспортным средством, которое перемещается в смежном маршруте справа от маршрута эго.

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

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

Этот пример снова использует ForwardVehicleSensorFusionTestBench модель из Прямого примера Cочетания датчиков Транспортного средства.

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

open_system("ForwardVehicleSensorFusionTestBench")

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

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

helperSLForwardVehicleSensorFusionSetup(scenarioFcnName="scenario_LFACC_03_Curve_StopnGo")

Можно теперь симулировать модель и визуализировать результаты. Для получения дополнительной информации о симуляции и анализе результатов симуляции, смотрите Прямой пример Cочетания датчиков Транспортного средства.

Этот пример фокусируется на автоматизации запусков симуляции, чтобы протестировать cочетание датчиков и отслеживание алгоритма на различных ведущих сценариях при помощи Simulink Test. Evaluate Tracker Metrics подсистема интегрирует метрические оценки уровня компонента с Simulink Test при помощи блока Check Static Upper Bound.

Откройте Evaluate Tracker Metrics подсистема.

open_system("ForwardVehicleSensorFusionTestBench/Evaluate Tracker Metrics")

Evaluate Tracker Metrics подсистема выводит обобщенное оптимальное присвоение подшаблона (GOSPA) метрика и ее компоненты.

Filter Within Coverage блок демонтирует агентов, которые находятся вне зоны охвата датчиков от информации об основной истине. Как показано в этом рисунке, блок удаляет фиолетовые и желтые транспортные средства из списка истин, когда эти транспортные средства не являются в зонах охвата обоих датчиками. Блок GOSPA Metric использует отфильтрованных агентов, чтобы вычислить метрику GOSPA и ее компоненты. Журналы модели выход следуют из Evaluate Tracker Metrics подсистема к переменной logsout базового рабочего пространства. Можно проверить эффективность cочетания датчиков и алгоритма отслеживания путем проверки и графического вывода метрик GOSPA, вычисленных во время симуляции. Для получения дополнительной информации о метриках GOSPA смотрите trackGOSPAMetric (Sensor Fusion and Tracking Toolbox).

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

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

blk = ['ForwardVehicleSensorFusionTestBench/Sensors and Environment/', ...
      'Simulation 3D Scene Configuration'];
set_param(blk, EnableWindow="off")

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

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

sltestmgr
testFile = sltest.testmanager.load("ForwardVehicleSensorFusionTests.mldatx");

Тесты в менеджере по Тесту соединяются с тестовыми требованиями в Редакторе Требований. Каждый тест использует POST-LOAD коллбэк, чтобы запустить скрипт настройки с соответствующими входными параметрами. После симуляции теста менеджер по Тесту вызывает helperPlotForwardVehicleSensorFusionResults функция от CLEANUP коллбэк, чтобы сгенерировать графики для GOSPA и его компонентов от Evaluate Tracker Metrics подсистема. Для получения дополнительной информации об этих графиках, смотрите Прямой пример Cочетания датчиков Транспортного средства.

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

Протестируйте системную модель на scenario_LFACC_03_Curve_StopnGo сценарий.

testSuite = getTestSuiteByName(testFile,"Test Scenarios");
testCase = getTestCaseByName(testSuite,"scenario_LFACC_03_Curve_StopnGo");
resultObj = run(testCase);

Сгенерируйте протоколы испытаний, полученные после симуляции.

sltest.testmanager.report(resultObj, "Report.pdf", ...
Title="Forward Vehicle Sensor Fusion", ...
IncludeMATLABFigures=true,IncludeErrorMessages=true, ...
IncludeTestResults=false,LaunchReport=true);

Исследуйте Report.pdf . Test environment разделите показывает платформу, на которой запущен тест, и версия MATLAB используется для тестирования. Summary разделите показывает результат теста и длительность симуляции в секундах. Results разделите показывает передачу или результаты сбоя на основе критериев оценки, и отображает графики, регистрируемые от helperPlotForwardVehicleSensorFusionResults функция.

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

Запустите симуляцию системы для всех тестов при помощи run(testFile) команда. В качестве альтернативы можно нажать Play в менеджере по Тесту приложение.

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

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

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

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

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

ForwardVehicleSensorFusionTestBench модель включает регрессионное тестирование Forward Vehicle Sensor Fusion компонент через программное обеспечение в цикле (SIL) верификация, и позволяет вам идентифицировать любые проблемы в этом компоненте. Этот рабочий процесс позволяет вам проверить, что сгенерированный код производит ожидаемые результаты, которые совпадают с требованиями уровня системы в течение симуляции.

Установите Forward Vehicle Sensor Fusion компонент, чтобы запуститься в режиме SIL.

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

Симулируйте систему для всех сценариев тестирования с помощью run(testFile) команда. После того, как тесты завершены, рассматривают графики и результаты в сгенерированном отчете.

Получите результаты покрытия

Если у вас есть лицензия Simulink Coverage™, можно заставить анализ покрытия кода для сгенерированного кода измерять полноту тестирования. Можно использовать данные о покрытии, чтобы найти разрывы в тестировании, недостающих требованиях или непредусмотренной функциональности. Можно визуализировать результаты покрытия для отдельных тестов, а также агрегированные результаты покрытия.

Выберите ForwardVehicleSensorFusion в разделе AGGREGATED COVERAGE RESULTS менеджера по тесту, чтобы просмотреть подробный отчет результатов покрытия.

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

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

Похожие темы