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

В этом примере показано, как автоматизировать тестирование маршрута после контроллера, развернутого на машине реального времени Speedgoat® с помощью Simulink® Test™. В этом примере, вас:

  • Разверните магистральный маршрут после контроллера к машине Speedgoat с помощью Simulink Real-Time™.

  • Выполните автоматизированное тестирование развертываемого приложения с помощью Simulink Test.

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

Конфигурация системы

Этот пример использует настройку оборудования, которая, в основном, состоит из двух машин, хоста и цели, соединенной Ethernet.

Этот пример использует эту аппаратную конфигурацию:

  1. Цель — Эффективность Speedgoat машина В реальном времени с Intel® Core™ i7 4.2 GHz, рабочей операционной системой Simulink Real-Time. Для получения дополнительной информации см. Машину реального времени Эффективности Speedgoat.

  2. Хост — Intel® Xeon® 3.60 ГГц, запуская Windows® 64-битная операционная система.

  3. Кабель Ethernet, соединяющий цель с хостом.

Цель запускает маршрут после логики решения и маршрут после контроллера. Это отправляет держащийся угол и ускоряющие сигналы к хосту с помощью Пользовательского дейтаграммного протокола (UDP) по Ethernet.

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

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

В этом примере, вас:

  1. Рассмотрите тестовую модель симуляции — модель содержит сценарий, средства управления, динамику аппарата и метрики, чтобы оценить функциональность. Метрические оценки интегрируют тестовую модель с Simulink Test для автоматизированного тестирования.

  2. Раздел и исследует хост и предназначается для моделей — тестовая модель симуляции разделена в две модели. Каждый работает на хост-машине, и другой используется для развертывания на целевой машине.

  3. Развернитесь целевая модель — Конфигурируют и развертывают маршрут после моделей контроллеров к целевой машине с помощью Simulink Real-Time.

  4. Симулируйте модель хоста и визуализируйте результаты — Конфигурируют модель хоста со сценарием тестирования. Симулируйте модель и визуализируйте результаты.

  5. Исследуйте менеджера по тесту, файл — Исследует сконфигурированного менеджера по тесту файл, который позволяет вам автоматизировать тестирование развернутого маршрута после контроллера.

  6. Автоматизируйте тестирование — Запуск тестовый набор с помощью менеджера по тесту и анализируйте протокол испытаний.

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

Этот пример использует тестовую модель от, Генерируют Код для Хайвея Лейна После Контроллера, как показано в этом рисунке.

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

  • Simulation 3D Scenario — Задает дорогу, транспортные средства и генератор обнаружения видения, используемый для симуляции.

  • Lane Following Decision Logic — Задает боковую и продольную логику решения и предоставляет информацию о центре маршрута и сопутствующую информацию самого важного объекта (MIO) контроллеру.

  • Lane Following Controller — Задает контроллер следования траектории, который генерирует команды управления, чтобы регулировать автомобиль, оборудованный датчиком.

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

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

Раздел и исследует хост и предназначается для моделей

Тестовая модель разделена в хост и целевые модели. Исследуйте эти модели.

Исследуйте модель хоста

Модель хоста содержит Simulation 3D Scenario, Vehicle Dynamics, и Metrics Assessment подсистемы магистрального маршрута после приложения. Модель также конфигурирует интерфейс UDP с помощью UDP Data Send и UDP Data Receive подсистемы. Откройте модель хоста.

open_system("RTHLFControllerHost")

Simulation 3D Scenario подсистема конфигурирует дорожную сеть, устанавливает положения транспортного средства и упаковывает данные об истине в обнаружения. Для получения дополнительной информации смотрите, Генерируют Код для Хайвея Лейна После Контроллера. Откройте Simulation 3D Scenario подсистема.

open_system("RTHLFControllerHost/Simulation 3D Scenario")

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

UDP Data Send подсистема содержит Упаковку Байта (Simulink Real-Time), и UDP Отправляют (Simulink Real-Time) блоки из библиотеки Simulink Real-Time. Откройте UDP Data Send подсистема.

open_system("RTHLFControllerHost/UDP Data Send")

Каждый Byte Pack подсистема содержит блок Byte Packing, который преобразует один или несколько сигналов выбираемых пользователем типов данных к одному вектору из различных типов данных. Каждый блок UDP Send отправляет данные из соответствующего Byte Pack подсистема по сети UDP к заданному IP-адресу и порту. Необходимо сконфигурировать их, UDP Отправляет блоки с IP-адресом и номером порта целевой машины.

Этот список задает технические требования сигналов данных.

  • Set Velocity — 8 байтов дважды

  • Longitudinal Velocity — 8 байтов ldouble

  • Initial Longitudinal Velocity — 8 байтов дважды

  • Reset Flag — 8 байтов дважды

  • Tracks — 268-байтовая структура шины Simulink

  • Lane Detections — 32-байтовая структура шины Simulink

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

UDP Data Receive подсистема содержит UDP, Получают (Simulink Real-Time) и Байт, Распаковывающий (Simulink Real-Time) блоки из библиотеки Simulink Real-Time. Откройте UDP Data Receive подсистема.

open_system("RTHLFControllerHost/UDP Data Receive")

Эта подсистема содержит две дополнительных подсистемы:

  • Receive Controller Output — Получает и распаковывает контроллеры выход, отправленные от целевой машины.

  • Receive Intermediate Signals — Получает и распаковывает промежуточные сигналы от целевой машины.

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

open_system("RTHLFControllerHost/Vehicle Dynamics")

Vehicle Dynamics подсистема реализует Модель Велосипеда для автомобиля, оборудованного датчиком. Подсистема берет контроллеры выход и оценивает положение автомобиля, оборудованного датчиком.

Metrics Assessment подсистема основана на подсистеме, используемой в Сгенерировать Коде для Хайвея Лейна, Следующего примеру Контроллера.

Чтобы выполнить симуляцию в реальном времени, модель хоста запускается с набором следующего симуляции к 1. Для получения дополнительной информации смотрите, что Симуляция Следует (Simulink).

Исследуйте целевую модель

Целевая модель содержит Highway Lane Following Controller подсистема, наряду с интерфейсами UDP. Откройте целевую модель.

open_system("RTHLFControllerTarget")

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

  • UDP Data Receive — Получает данные, требуемые для магистрального маршрута после моделей контроллеров запускаться.

  • Highway Lane Following Controller — Enabled подсистема, которая содержит маршрут после логики решения и маршрут после алгоритмов регулятора.

  • UDP Data Send — Отправляет выходные параметры контроллера к модели хоста, которые требуются Vehicle Dynamics подсистема модели хоста.

UDP Data Receive подсистема содержит UDP, Получают и блоки Распаковки Байта из библиотеки Simulink Real-Time. Откройте UDP Data Receive подсистема.

open_system("RTHLFControllerTarget/UDP Data Receive")

Эта подсистема принимает кадры данных от хост-машины и вскрывает противоречия в них использующий Byte Unpack подсистемы.

UDP Data Send подсистема содержит Упаковку Байта, и UDP Отправляют блоки из библиотеки Simulink Real-Time. Откройте UDP Data Send подсистема.

open_system("RTHLFControllerTarget/UDP Data Send")

Эта подсистема отправляет контроллеры выход, Steering Angle и Acceleration, к хост-машине с помощью блока UDP Send. Это также отправляет некоторые внутренние сигналы, используемые для графического вывода.

Highway Lane Following Controller подсистема является активированной подсистемой, которая включает выполнение алгоритма регулятора после получения данных из хост-машины. Откройте Highway Lane Following Controller подсистема.

open_system("RTHLFControllerTarget/Highway Lane Following Controller")

Активированная подсистема содержит восстановленную подсистему. Восстановленная подсистема сбрасывает маршрут после контроллера к его состоянию по умолчанию когда Reset Flag установлен. Откройте Resettable Highway Lane Following Controller подсистема.

open_system("RTHLFControllerTarget/Highway Lane Following Controller/Resettable Highway Lane Following Controller")

Эта подсистема является комбинацией Lane Following Decision Logic и Lane Following Controller подсистемы. Эти подсистемы похожи на тех используемых в Сгенерировать Коде для Хайвея Лейна, Следующего примеру Контроллера.

Разверните целевую модель

Выполните эти шаги, чтобы развернуть модель в машину в реальном времени.

1. Сконфигурируйте блоки UDP в хосте и предназначайтесь для моделей.

UDP Отправляет, и UDP Получают блоки, используемые в хосте, и предназначаются для моделей, требуют допустимых IP-адресов для хоста и предназначаются для машин. Этот пример поставляется с helperSLRTUDPSetup.m файл, который обновляет эти блоки с вашими заданными IP-адресами. Можно обновить эти блоки вручную, или при помощи helperSLRTUDPSetup функция как показано:

% Specify host model and IP address of Host machine
hostMdl = "RTHLFControllerHost";
hostIP = "10.1.10.16";
% Specify Target model and IP address of Target machine
targetMdl = "RTHLFControllerTarget";
targetIP = "10.1.10.15";
% Invoke the function to update the blocks
helperSLRTUDPSetup(targetMdl,targetIP,hostMdl,hostIP);

2. Создайте целевую модель и создайте slrealtime файл приложения, RTHLFControllerTarget.mldatx.

slbuild(targetMdl);

3. Свяжите с целевой машиной.

Свяжите с целевой машиной путем определения slrealtime объект управлять целевым компьютером.

% Create slrealtime object
tg = slrealtime;
% Specify IP address for target machine
setipaddr(tg,targetIP)
% Connect to target
connect(tg);

Версия операционной системы реального времени (RTOS) на целевом компьютере должна соответствовать с этим на хосте - компьютере. В противном случае вы не можете соединиться с целевым компьютером. Запустите update(tg) команда, чтобы обновить версию RTOS на целевом компьютере.

4. Загрузите приложение реального времени к цели.

Загрузите сгенерированный RTHLFControllerTarget.mldax приложение к целевой машине.

% Load the controller model to the target
load(tg,targetMdl);

5. Выполните приложение реального времени на цели.

% Start the loaded application on the target machine.
start(tg);

В качестве альтернативы можно развернуть целевую модель при помощи графического интерфейса пользователя Simulink.

На вкладке Real-Time, в разделе Connect To Target Computer, выбирают вашу целевую машину из списка. Используйте slrtExplorer (Simulink Real-Time), чтобы сконфигурировать цель.

Чтобы развернуть и запустить модели контроллеров на целевой машине, выберите Run on Target.

Симулируйте модель хоста и визуализируйте результаты

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

helperSLHLFControllerHostSetup(scenarioFcnName="scenario_LFACC_03_Curve_StopnGo");

Симулируйте модель хоста.

sim(hostMdl);

Остановите и разгрузите приложение в целевой машине.

stop(tg);

Постройте показатели производительности для бокового контроллера.

hFigLatResults = helperPlotLFLateralResults(logsout);

Исследуйте результаты.

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

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

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

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

Закройте фигуру.

close(hFigLatResults);

Постройте показатели производительности для продольного контроллера.

hFigLongResults = helperPlotLFLongitudinalResults(logsout,time_gap,default_spacing);

Исследуйте результаты.

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

  • Относительный продольный скоростной график показывает относительную скорость между автомобилем, оборудованным датчиком и MIO. Поскольку этот пример не содержит средства отслеживания и отслеживает данные, заполненные с помощью основной истины, предполагаемая скорость почти идентична основной истине. Этот сигнал вводится контроллеру.

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

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

Закройте фигуру.

close(hFigLongResults);

Исследуйте менеджера по тесту файл

Simulink Test включает менеджера по Тесту, которого можно использовать для тестов автора для моделей Simulink. После авторской разработки ваших тестов можно сгруппировать их и выполнить их индивидуально или в пакете.

Этот пример снова использует сценарии тестирования от Автоматизировать Тестирования на Хайвея Лейна, Следующего примеру Контроллера.

Целевая модель сконфигурирована так, чтобы вы не компилировали и развернуть контроллер для каждого теста. Если вы развертываете контроллер, и перед следующим тестом, он сбрасывает к его начальному состоянию. Пример использует эти коллбэки тестового файла:

  • Коллбэк SETUP вызывает helperRTTestManagerSetup функция, чтобы сконфигурировать целевую модель, чтобы развернуться и работать на машине в реальном времени.

  • Коллбэк ОЧИСТКИ останавливает и разгружает приложение от целевой машины.

Откройте тестовый файл HLFControllerRealTimeTestsAssessment.mldatx в менеджере по Тесту и исследуют настройку.

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

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

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

  • Коллбэк ОЧИСТКИ содержит скрипт, чтобы построить результаты запущенной симуляции.

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

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

Выполнение сценариев тестирования от тестового файла требует связи с целевой машиной. Если целевая машина уже не соединяется, обратитесь к шагам 1-3 раздела Deploy Target Model.

Используйте этот код, чтобы протестировать маршрут после моделей контроллеров с scenario_LFACC_03_Curve_StopnGo сценарий тестирования от Simulink Test.

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

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

sltest.testmanager.report(resultObj,"Report.pdf", ...
Title="Real-Time Highway Lane Following Controller Test Assessment", ...
IncludeMATLABFigures=true, ...
IncludeErrorMessages=true, ...
IncludeTestResults=false, ...
LaunchReport=true);

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

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

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

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

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

Смотрите также

Блоки

Похожие темы