В этом примере показано, как автоматизировать тестирование прямого алгоритма 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).