Тестирование следующего за маршрутом контроллера с Simulink Test

Выполните основанное на требованиях тестирование на автомобильную следующую за маршрутом систему.

Этот пример показывает как:

  1. Высокий уровень автора тестирование требований для модели замкнутого цикла реализация следующего за маршрутом алгоритма.

  2. Автор тестирует в Simulink® Test™, чтобы проверить безопасную работу для каждого требования.

  3. Выполните тесты и рассмотрите состояние верификации.

Введение

Этот пример показывает, как проверить, что автоматизированное хранение маршрут помогает алгоритму с помощью менеджера по Тесту и блоков от библиотеки Model Verification. Этот пример подобен примеру Lane Following Control with Sensor Fusion and Lane Detection в Model Predictive Control Toolbox™. Для получения дополнительной информации на алгоритме управления и системной модели с обратной связью, смотрите, что Маршрут Следует за Управлением с Fusion Датчика и Обнаружением Маршрута.

Настройте файлы в качестве примера и откройте проект

Создайте и откройте рабочую копию файлов Проекта Simulink. Проект организует файлы в несколько папок. Контроллер и файлы системной модели находятся в папке Models. Высокоуровневые требования для контроллера получены в LaneFollowingTestRequirements.slreqx в папке Requirements. Менеджер по Тесту тестовый файл находится в папке Tests.

[projectFolder,~]=matlab.internal.project.example.projectDemoSetUp(fullfile(matlabroot,'toolbox','simulinktest','simulinktestdemos','sltestLaneFollowing.zip'),[],[]);
proj = simulinkproject(projectFolder);

Откройте системную модель

Откройте модель LaneFollowingTestBenchExample.

  • Маршрут после контроллера реализован блоком Model.

  • Динамика аппарата и ведущая среда моделируются в подсистеме Vehicle and Environment.

  • Дорога, маршрут и сценарии трафика используют синтетические данные, сгенерированные Automated Driving Toolbox™, который сохранен в папке Data.

  • Блок Scenario Reader в подсистеме Vehicle and Environment считывает данные о сценарии во время симуляции.

mdl = 'LaneFollowingTestBenchExample';
open_system(mdl);

Управление требованиями сценария

Данные включают девять ведущих сценариев с требованиями тестирования высокого уровня для каждого сценария. Откройте Редактор Требований от Simulink® Requirements™, чтобы просмотреть набор требования. Выберите Analysis> Requirements> Requirements Editor и выберите файл LaneFollowingTestRequirements.slreqx. Можно также войти:

  open('LaneFollowingTestRequirements.slreqx');

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

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

  • Сценарий 2: ACC_ISO_AutoRetargetTest. Протестируйте, если контроллер может перенастроить к новому автомобилю в маршруте перемещения, когда текущая цель переключает маршруты.

  • Сценарий 3: ACC_ISO_CurveTest. Протестируйте, если контроллер может отследить замедляющийся автомобиль в маршруте перемещения при навигации по искривлению дороги.

  • Сценарий 4: ACC_StopnGo. Этот тест моделирует остановку, и пойдите перемещение в маршруте перемещения из-за интенсивного движения

  • Сценарий 5: LFACC_DoubleCurveDecelTarget. Отследите замедляющийся ведущий автомобиль через две кривые S.

  • Сценарий 6: LFACC_DoubleCurve_AutoRetarget. Протестируйте способность перенастроить к новому ведущему автомобилю на кривой.

  • Сценарий 7: LFACC_DoubleCurveStopnGo. Этот тест моделирует остановку, и пойдите перемещение на кривой магистрали.

  • Сценарий 8: LFACC_Curve_CutInOut. Этот тест гарантирует, что контроллер может идентифицировать автомобильное сокращение в и из маршрута перемещения

  • Сценарий 9: LFACC_Curve_CutInOut_TooClose. Этот тест повторяет предыдущий тест с более коротким разделительным расстоянием между эго и ведущим автомобилем.

Критерии оценки

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

  1. Предотвращение столкновения: Гарантируйте, что автомобиль эго не сталкивается с ведущим автомобилем ни в какой точке во время ведущего сценария.

  2. Безопасное расстояние: Гарантируйте, что разрыв времени между автомобилем эго и ведущим автомобилем выше 0. 8 с. Разрыв времени между этими двумя автомобилями задан как отношение расчетного прогресса и автомобильной скорости эго.

  3. Следующее маршрута: Гарантируйте, что боковое отклонение от средней линии маршрута в 0,2 м

Первые два критерия проверяются блоком LaneFollowingTestBenchExample/Collision Detection/Test Assessments Test Sequence. Оператор verify проверяет, обнаруживается ли столкновение в какой-либо точке во время симуляции.

Второй оператор verify проверяет, падает ли расчетный разрыв времени между этими двумя автомобилями ниже 0,8 с. Оператор duration допускает отказы из-за переходного процесса из-за внезапных изменений во входных параметрах датчика или дорожных условиях. Оператор duration позволяет отказы с этой оценкой в течение максимум 5 с за один раз.

Маршрут после оценки включен в блок Test Sequence LFRefMdl/Test Assessments.

Оператор verify с помощью оператора duration проверяет, что абсолютное значение бокового отклонения от средней линии маршрута перемещения не превышает 0,2 м больше 5 с за один раз.

Выполнение интерактивной симуляции

Чтобы конфигурировать интерактивное моделирование, выполните эти шаги:

  1. Выберите ведущий сценарий путем установки переменной scenarioId на значение между 1-9 в базовом рабочем пространстве MATLAB®.

  2. Запустите скрипт helperLFSetUp, чтобы загрузить требуемые типы и данные.

  3. Откройте Видимый с большого расстояния Осциллограф с помощью визуализации, выпадающей на панели инструментов модели Simulink®, и настройте его, чтобы наблюдать симуляцию путем нажатия на Find signals. Смотрите Видимый с большого расстояния Осциллограф для деталей.

  4. Моделируйте модель, чтобы визуализировать выбранный ведущий сценарий.

  5. Запустите скрипт plotLFResults, чтобы оценить скрипт производительности контроллера.

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

scenarioId = 1;
helperLFSetUp;
sim(mdl);
plotLFResults(logsout);
Simulink.sdi.view;

Откройте Инспектора Данных моделирования, чтобы просмотреть результаты операторов verify в Тестовых блоках Последовательности.

Оцените производительность контроллера с помощью фигур графика MATLAB. Существует два графика - один для оценки производительности интервала и другого для оценки боковой производительности. Для получения дополнительной информации о том, как оценить эти графики, смотрите, что Маршрут Следует за Управлением с Fusion Датчика и Обнаружением Маршрута.

Систематическое тестирование с менеджером по тесту

Откройте тестовый файл LaneFollowingTestScenarios.mldatx в менеджере по Тесту. Тестовый файл имеет набор девяти тестов, один для каждого из этих девяти сценариев тестирования, описанных выше.

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

Каждый тест использует коллбэк Post-Load, чтобы установить соответствующий ID сценария и запустить утилиту установки. Кроме того, каждый тест также соединяется с соответствующим требованием в Редакторе Требований для трассируемости.

Запустите тесты путем нажатия на кнопку воспроизведения или ввода sltest.testmanager.run.

Раздел результатов менеджера по Тесту показывает агрегированные результаты для всех девяти тестов. Для каждого теста операторы verify агрегированы, чтобы вычислить полные результаты передачи/сбоя.

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

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

Очистка

Закройте все открытые окна и модели.

close_system(mdl, 0);
clear mdl;
sltest.testmanager.clear;
sltest.testmanager.clearResults;
close(proj);
sltest.testmanager.close;
Simulink.sdi.close;