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

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

Введение

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

Магистральный пример Изменения Маршрута показывает, как спроектировать и симулировать системную модель для изменения маршрута с помощью информации об основной истине. В этом примере показано, как автоматизировать тестирование той модели против нескольких сценариев при помощи Simulink® Test™. Сценарии основаны на требованиях уровня системы. В этом примере, вас:

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

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

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

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

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

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

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

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

addpath(fullfile(matlabroot,"toolbox","driving","drivingdemos"))
helperDrivingProjectSetup("HighwayLaneChange.zip",workDir=pwd)

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

open("HighwayLaneChangeTestRequirements.slreqx")

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

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

  • scenario_LC_01_SlowMoving — Трехполосная прямая дорожная сцена с медленным ведущим транспортным средством в маршруте эго.

  • scenario_LC_02_SlowMovingWithPassingCar — Трехполосная прямая дорожная сцена с медленным ведущим транспортным средством в маршруте эго и проезжающим мимо автомобилем в левом маршруте.

  • scenario_LC_03_DisabledCar — Трехполосный прямой дорожный сценарий с отключенным транспортным средством в маршруте эго.

  • scenario_LC_04_CutInWithBrake — Трехполосная прямая дорожная сцена с ведущим автомобильным сокращением в маршрут эго с тормозом.

  • scenario_LC_05_SingleLaneChange — Прямая дорожная сцена с четырьмя маршрутами с несколькими транспортными средствами в сценарии и медленным ведущим транспортным средством.

  • scenario_LC_06_DoubleLaneChange — Прямая дорожная сцена с четырьмя маршрутами с несколькими транспортными средствами в сценарии, включая медленное ведущее транспортное средство и стремительное заднее транспортное средство.

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

  • scenario_LC_08_SlowmovingCar_Curved — Кривая дорожная сцена с медленным ведущим автомобилем в маршруте эго.

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

  • scenario_LC_10_SingleLaneChange_Curved — Кривая дорожная сцена с несколькими транспортными средствами в сценарии и медленным ведущим транспортным средством.

  • scenario_LC_11_MergingCar_HighwayEntry — Магистральная сцена записи с тремя транспортными средствами в сценарии. Одно из транспортных средств объединяет в маршрут эго от сегмента дороги магистральной записи.

  • scenario_LC_12_CutInCar_HighwayEntry — Магистральная сцена записи с четырьмя транспортными средствами в сценарии. Одно из транспортного средства сокращает в маршрут эго на изогнутом сегменте дорожной сети.

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

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

  • scenario_LC_15_StopnGo_Curved — Кривая дорожная сцена, которая содержит шесть транспортных средств в сценарии. Ведущее транспортное средство замедляется, в то время как другие транспортные средства перемещаются в смежных маршрутах.

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

Этот пример снова использует HighwayLaneChangeTestBench модель из Магистрального примера Изменения Маршрута. Откройте тестовую модель.

open_system("HighwayLaneChangeTestBench")

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

  • Scenario and Environment — Задает сцену, транспортные средства и данные о карте, используемые для симуляции.

  • Planner Configuration Parameters — Задает параметры конфигурации, требуемые для алгоритма планировщика.

  • Highway Lane Change Planner — Реализует алгоритм планировщика изменения маршрута для магистралей.

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

  • Vehicle Dynamics — Задает динамическую модель для автомобиля, оборудованного датчиком.

  • Metrics Assessment — Оценивает поведение уровня системы.

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

scenarioName = "scenario_LC_15_StopnGo_Curved";
helperSLHighwayLaneChangeSetup(scenarioFcnName=scenarioName)

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

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

open_system("HighwayLaneChangeTestBench/Metrics Assessment")

Metric Assessment подсистема выводит эти метрики:

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

  • Verify No Collision — Проверяет, что автомобиль, оборудованный датчиком не сталкивается ни с каким транспортным средством в сценарии ни в какой точке во время симуляции.

  • Verify Longitudinal Jerk — Проверяет, что автомобиль, оборудованный датчиком имеет продольное значение толчка между –5 m/s^3 и 5 m/s^3.

  • Verify Lateral Jerk — Проверяет, что автомобиль, оборудованный датчиком имеет боковое значение толчка между –5 m/s^3 и 5 m/s^3.

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

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

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

Сконфигурируйте блок Visualization, чтобы отключить окно визуализации.

blk = "HighwayLaneChangeTestBench/Visualization";
set_param(blk,EnableChaseView="off")
set_param(blk,EnableTopView="off")

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

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

sltestmgr
sltest.testmanager.load("HighwayLaneChangeMetricAssessments.mldatx");

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

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

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

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

testFile = sltest.testmanager.load("HighwayLaneChangeMetricAssessments.mldatx");
testSuite = getTestSuiteByName(testFile,"Test Scenarios");
testCase = getTestCaseByName(testSuite,"scenario_LC_15_StopnGo_Curved");
resultObj = run(testCase);

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

sltest.testmanager.report(resultObj,"Report.pdf", ...
Title="Highway Lane Change", ...
IncludeMATLABFigures=true, ...
IncludeErrorMessages=true, ...
IncludeTestResults=false, ...
LaunchReport=true)

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

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

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

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

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

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

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

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

HighwayLaneChangeTestBench модель включает интегрированное тестирование Highway Lane Change Planner и Highway Lane Change Controller компоненты. Генерация кода для этих компонентов требует лицензии Simulink Coder™. Этот рабочий процесс позволяет вам проверить, что сгенерированный код производит ожидаемые результаты, которые совпадают с требованиями уровня системы в течение симуляции.

Установите Highway Lane Change Planner запускаться в программном обеспечении в режиме (SIL) цикла.

model = "HighwayLaneChangeTestBench/Highway Lane Change Planner";
set_param(model,SimulationMode="Software-in-the-loop")

Установите Lane Change Controller запускаться в режиме SIL.

model = "HighwayLaneChangeTestBench/Lane Change Controller";
set_param(model,SimulationMode="Software-in-the-loop")

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

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

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

Похожие темы