Автоматизация проверки дорожной полосы после управления и слияния датчиков

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

Введение

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

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

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

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

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

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

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

  6. Автоматическая проверка параллельно - Общее время выполнения тестов сокращается с помощью параллельных вычислений на многоядерном компьютере.

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

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

Требования к рассмотрению

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

open('HLFControlsWithSensorFusionTestRequirements.slreqx')

Также можно открыть файл со вкладки Requirements приложения Requirements Manager в 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. Fusion датчика прямого транспортного средства - Подсистема, которая запирает обнаружения транспортных средств перед автомобилями , оборудованными датчиком, которые были получены с датчиков зрения и радиолокации.

  3. Логика принятия решений по маршруту - модель алгоритма, которая задает боковую и продольную логику принятия решений и предоставляет контроллеру информацию о центре маршрута и самую важную информацию, связанную с объектом (MIO).

  4. Контроллер следования маршрута - модель алгоритма, которая задает контроллер.

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

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

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

open_system("HLFControlsWithSensorFusionTestBench/Simulation 3D Scenario")

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

  • Блок Simulation 3D Scene Configuration имеет SceneName набор параметров установлен в Curved road .

  • Блок Scenario Reader сконфигурирован таким образом, чтобы использовать сценарий вождения, который содержит дорожную сеть.

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

  • Входной порт Ego управляет положением ego vehicle, которое задается блоком Simulation 3D Vehicle with Ground Following 1.

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

  • Блок Scenario Reader выводит положения актёра, которые управляют положением целевых транспортных средств. Эти транспортные средства заданы другими блоками Simulation 3D Vehicle with Ground Following.

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

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

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

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

  • Блок Pack Lanes Truth упаковывает информацию о основной истине маршрута в структуру шины маршрута, которую требует образец модели Lane Following Decision Logic.

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

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

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

open_system('HLFControlsWithSensorFusionTestBench/Metrics Assessment');

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

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

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

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

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

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

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

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

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

Автоматизация проверки

Test Manager сконфигурирован для автоматизации проверки последующего приложения. Откройте HLFControlsWithSensorFusionMetricAssessments.mldatx тестовый файл в диспетчере тестов.

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

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

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

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

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

testFile = sltest.testmanager.TestFile('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. Обратите внимание, что в разделе Test environment показана платформа, на которой запускается тест, и версия MATLAB ®, используемая для проверки. В разделе «Сводка» показаны результаты теста и длительность симуляции в секундах. В разделе «Результаты» показаны результаты прохождения/непрохождения на основе критериев оценки. В этом разделе также показаны графики, записанные из helperGenerateFilesForLaneFollowingWithSensorFusionReport функция.

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

Можно симулировать систему для всех тестов с помощью sltest.testmanager.run. Также можно симулировать систему, нажав Воспроизведение в приложении Test Manager.

Когда симуляции теста завершены, результаты для всех тестов можно просмотреть на вкладке Результаты и Программные продукты Диспетчера тестов. Для каждого тестового примера блоки Check Static Range (Simulink) в модели связаны с Менеджером тестов, чтобы визуализировать общие результаты прохождения/непрохождения.

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

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

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

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

The HLFControlsWithSensorFusionTestBench модель позволяет интегрировать проверку компонентов Forward Транспортного средства Sensor Fusion, Lane Following Decision Logic и Lane Following Контроллера. Часто полезно регрессионная проверка этих компонентов с помощью верификации. Если у вас есть лицензия Simulink Coder™, то можно сгенерировать код для этих компонентов. Этот рабочий процесс позволяет вам проверить, что сгенерированный код дает ожидаемые результаты, которые соответствуют требованиям уровня системы во время симуляции.

Установите Forward Транспортного средства Sensor Fusion, чтобы запустить в режиме цикла.

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

Установите Lane Following Decision Logic для запуска в режиме цикла.

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

Установите контроллер Lane Following Controller в режим цикла.

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

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

Автоматизация проверки параллельно

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

См. также

| | | | | |

Похожие темы