Симуляция мобильного робота с рабочим процессом System Composer

Обзор

Наряду с другими инструментами, System Composer™ может помочь вам организовать и соединить требования, спроектировать и выделить модели архитектуры, анализировать систему и реализовать проект в Simulink®. Этот пример демонстрирует рабочий процесс для разработки архитектуры системы с помощью System Composer. Этот пример следует за ранней разработкой фазы для мобильного робота:

  • Подготовка требований на основе исследования рынка.

  • Создание моделей архитектуры, чтобы помочь организовать алгоритмы и оборудование.

  • Создание модели Simulink, чтобы симулировать реалистическое поведение мобильного робота.

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

Этот пример выполняет ранние шаги рабочего процесса от Модельно-ориентированного проектирования с Simulink.

Организуйте и соедините требования

Первый шаг в модельно-ориентированном проектировании должен настроить требования. В этом примере существует три набора требований.

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

  2. Системные требования - организованный набор требований, которые соединяются тесно с разработкой системы.

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

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

Соедините требования заинтересованной стороны с техническими требованиями

Перейдите к папке в качестве примера. Открыть scMobileRobotStakeholderNeeds.slreqx, scMobileRobotRequirements.slreqx, и scMobileRobotSubsystemRequirements.slreqx, дважды кликните каждый файл или запустите этот код в Командном окне MATLAB®:

load_system('scMobileRobotHardwareArchitecture.slx') % Load systems in memory to view requirement links.
load_system('scMobileRobotFunctionalArchitecture.slx')
open('scMobileRobotStakeholderNeeds.slreqx')
open('scMobileRobotRequirements.slreqx')
open('scMobileRobotSubsystemRequirements.slreqx')

Соединитесь заинтересованная сторона должна к выведенным требованиям отслеживать высокоуровневые цели. Некоторые ссылки уже заданы в этом примере, как ссылка реализации от STAKEHOLDER-07 к SYSTEM-REQ-09. Эта информация сохранена в файле scMobileRobotStakeholderNeeds.slmx.

Можно создать другую ссылку для Autonomy требование. Потребность заинтересованной стороны переместить объект с заданным допуском STAKEHOLDER-04 будет реализован системным требованием SYSTEM-REQ-05. Робот должен смочь определить свое текущее положение с заданным допуском. Щелкните правой кнопкой по SYSTEM-REQ-05 и выберите 'Select for Linking with Requirement'. Затем щелкните правой кнопкой по STAKEHOLDER-04 и выберите Create a link from SYSTEM-REQ-05 to STAKEHOLDER-04.

Больше деталей о ссылках может быть найдено при Представлении> Ссылки. Измените тип ссылки на Implements начиная с STAKEHOLDER-04 реализован SYSTEM-REQ-05. Для получения дополнительной информации о типах ссылки, относитесь, чтобы Задать Пользовательские Типы Требования и Ссылки (Simulink Requirements).

Спроектируйте архитектурные модели

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

  1. Функциональная архитектура описывает высокоуровневые функции.

  2. Аппаратная архитектура описывает физическое оборудование или платформу, необходимую для робота.

  3. Логическая архитектура описывает обмен данными.

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

scMobileRobotFunctionalArchitecture

Функциональная архитектура описывает функциональные зависимости: управляя мобильным роботом автономно, локализацией, планированием пути и следованием траектории.

Соедините требования с моделями архитектуры

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

'Self Localization Sensor Fusion' компонент в функциональной архитектуре реализует 'Localization' требование SYSTEM-REQ-05. Чтобы показать или скрыть связанные требования, кликните по соединенному значку на верхнем правом углу компонента.

Можно добавить ссылки путем перетаскивания требований к компоненту.

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

scMobileRobotHardwareArchitecture

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

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

Только требования, связанные с 'Life Expectancy' показаны. Соедините другие требования путем перетаскивания из Редактора Требований. Для получения дополнительной информации о требованиях, смотрите Требования Ссылки и Трассировки.

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

Можно выделить функциональную архитектуру аппаратной архитектуре с помощью Редактора Выделения.

Чтобы открыть Редактор Выделения, нажмите Modeling> Allocation Editor или введите следующее в Командное окно.

systemcomposer.allocation.editor

Загрузите набор выделения: scAllocationFunctionalHardware.mldatx в редакторе. Нажмите на 'Scenario 1'. Нажмите 'Component' в Горизонтальном фильтре и Вертикальном фильтре разделяет, чтобы отфильтровать строки и столбцы компонентами. Редактор Выделения позволяет вам соединять различные модели архитектуры, чтобы установить трассируемость для вашего проекта. Компоненты функциональной архитектуры выделяются компонентам аппаратной архитектуры.

Кликните 'по Processor'на Вертикальном фильтре, чтобы отфильтровать выделения далее. Поскольку стереотипы применяются только к аппаратной архитектуре в этом примере, стереотипным отображениям фильтра в Вертикальном фильтре.

Автономия транспортного средства в основном обработана целевой машиной, которая является встроенным компьютером, ответственным за обработку показаний датчика, чтобы вычислить входные параметры управления. Поэтому много функциональных компонентов как 'Path Follower', 'Wheel Kinematics', и 'Scan Matching Algorithms'выделяются 'Target Machine'.

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

Стереотипы и анализ

Стереотипы добавляют дополнительный слой метаданных к компонентам, портам и коннекторам. Аппаратная архитектура обеспечивает базис, чтобы изучить прикладные стереотипы. Чтобы создать профиль, смотрите, Задают Профили и Стереотипы.

В этом примере, HardwareBaseStereotype задан как 'Abstract Stereotype' и расширен к коннектору и стереотипам компонента. Например, DataConnector стереотип является стереотипом коннектора, который наследовал HardwareBaseStereotype. Кроме свойств как имя и масса, DataConnector стереотип имеет дополнительное свойство, TypeOfConnection, это описывает, какой из этих трех типов подключения — RS232, Ethernet, или USB — это использует. Для получения дополнительной информации об устанавливании профилей смотрите Стереотипы Использования и Профили.

Чтобы фокусироваться на ожидаемом времени перед первым обслуживанием, задайте свойства, такие как 'UsagePerDay', 'UsagePerYear', и 'Life'. Установка этих свойств позволяет вам анализировать каждый аппаратный компонент, чтобы убедиться, что мобильный робот прослужит до сначала ожидаемый год обслуживания. Чтобы открыть Редактор Профиля, перейдите к Моделированию> Профили> Редактирование.

Если вы задаете стереотипы в Редакторе Профиля, можно применить их к компонентам и коннекторам. Примените стереотипы с помощью Property Inspector. Чтобы открыть Property Inspector, перейдите к Моделированию> Проект> Property Inspector.

Чтобы добавить стереотипы в элементы, выберите элемент в схеме. В Property Inspector перейдите к Основному> Стереотип. Несколько стереотипов могут быть применены к тому же элементу. Примените MobileRobotProfile.Sensor стереотипируйте к Lidar Sensor компонент, чтобы добавить соответствующие свойства.

Некоторые компоненты используются в течение более длительных промежутков времени, чем другие. Lidar Sensor компонент используется для предотвращения препятствия в этом сценарии, таким образом, это всегда используется кроме тех случаев, когда это заряжается. RGB Camera только выравнивает робота к заряжающейся станции, таким образом, это используется в течение более короткого периода в день. Можно изменить значения для 'UsagePerDay', 'UsagePerYear', и 'Life' свойства определить ожидаемое время обслуживания для компонентов, которые каждый используются с различной частотой.

Свойство 'ExceedExpectedMaintenance' установлен в 'False' по умолчанию. Это свойство обновится, когда вы запустите свой анализ.

Галерея Architecture Views

Используйте галерею Architecture Views, чтобы рассмотреть изменения, которые вы вносите в модели архитектуры. Представления архитектуры позволяют вам создавать отфильтрованные представления и таким образом фокусироваться на немногих элементах модели, которая позволяет вам переместиться по сложной модели более легко. Например, инженер-электрик может интересоваться только электрическими компонентами аппаратной архитектуры. Инженер мог применить фильтр, чтобы показать только компоненты с электрическими стереотипами.

В этом примере вы применили бы фильтр, чтобы просмотреть компоненты относительно 'Life Expectancy' требование.

Чтобы открыть галерею Architecture Views, перейдите к Представлениям> Представления Архитектуры.

Нажмите New View, затем нажмите Select All, чтобы выбрать все компоненты для представления. Нажмите Apply Query. Выберите представление Hierarchy Diagram. Иерархия компонентов сглажена, чтобы показать все субкомпоненты в одном представлении.

Можно добавить логику фильтра, чтобы просмотреть соответствующие компоненты для 'Life Expectancy' требование. Нажмите New View, затем нажмите Add Clause.

Обратите внимание на то, что значение по умолчанию для MobileRobotProfile.HardwareBaseStereotype.Life стереотипом является 999999. Установите фильтр, чтобы показать компоненты с MobileRobotProfile.HardwareBaseStereotype.Life не равняются 999999, который укажет, был ли стереотип установлен.

Нажмите Apply Query. Перейдите к Иерархической схеме, чтобы просмотреть компоненты интереса.

Для получения дополнительной информации об архитектуре vews, смотрите, Создают Представления Архитектуры В интерактивном режиме.

Анализ модели

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

Выберите все стереотипы, чтобы сделать их доступными на модели экземпляра. Выберите scMobileRobotAnalysis.m как аналитическая функция. Порядок итерации определяет, в каком порядке анализируется иерархия компонентов. Однако, поскольку каждый компонент анализируется отдельно, порядок не имеет значения. Выберите 'Pre-order' по умолчанию.

Нажмите Instantiate, чтобы инстанцировать модели.

Соответствующие компоненты и коннекторы со стереотипами показывают. Поскольку все стереотипы выбраны, все элементы со стереотипами показывают в модели экземпляра. Анализ модели вычислит, какие компоненты и коннекторы продлятся дольше, чем ожидаемые 2 года. Нажмите Analyze, чтобы выполнить вычисление.

Аналитическая функция scMobileRobotAnalysis вычисляет если UsagePerDay*UsagePerYear*ExpectedYearsBeforeFirstMaintenance превысит Life, который установлен в 2 года для каждого компонента и коннектора. Снятые флажки указывают, что компонентам и коннекторам будет нужно обслуживание в течение 2 лет с данной спецификацией.

Чтобы обновить модель экземпляра в Аналитическом Средстве просмотра, выберите Overwrite, затем нажмите Refresh. Это действие получит значения назад из исходной модели, в этом случае, модели аппаратной архитектуры. Начиная с ExceedExpectedMaintenance было единственное измененное свойство, оно будет изменено на свое значение по умолчанию. С другой стороны нажатие на Update изменит значения свойств в источнике аппаратной архитектуры согласно модели экземпляра. Для больше согласно анализу, смотрите, Анализируют Архитектуру.

Симулируйте поведение архитектуры

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

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

scMobileRobotLogicalArchitectureInitial

Структура логической архитектуры похожа на ту из модели Simulink, потому что имитационные модели спроектированы на основе потока информации. Компоненты модели логической архитектуры соединяются с моделями поведения так, чтобы модель архитектуры могла быть симулирована также. Каждый компонент ответственен за одну или несколько функций, определяемых в модели функциональной архитектуры. 'Trajectory Follower' ответственно за вычисление скорости колеса робота на основе пути созданный генератор. Более низкий уровень 'Motor Controller' контролирует скорость каждого двигателя привода согласно выходу от 'Trajectory Follower'.

Обратите внимание на то, что много компонентов не использованы из этой модели в качестве примера. Например, модели датчика как Lidar Sensor и RGB Camera не требуются в этой модели, потому что истинное значение от симуляции получает x-y положение и ориентацию робота. Для более комплексных симуляций, моделей датчика как RGB Camera может быть добавлен, чтобы протестировать различные алгоритмы, такие как алгоритм распознавания. Если такая модель датчика была добавлена, например, Lidar Sensor, другой компонент поведения потребовался бы, чтобы дешифровать данные о датчике, например, Scan Matching Algorithm.

Добавьте поведение Simulink в модели архитектуры с входами шины

Симулируйте модель архитектуры путем добавления поведения Simulink в компонент.

Добавьте новый компонент, который действовал бы как алгоритм датчика. Добавьте два входных порта и два выходных порта.

Чтобы создать новое поведение Simulink, щелкните правой кнопкой по Create Simulink Behavior.

Нажать ОК. Новая модель Simulink сохранена под текущей папкой. Component компонента преобразован в ссылочный компонент под названием Reference Component.

Чтобы отредактировать поведенческую модель, дважды кликните 'Sensor Algorithm'. Заметьте, что порты элемента шины создаются во время процесса преобразования. Для получения дополнительной информации об установке входов шины смотрите, Исследуют Возможности Шины Simulink.

Любые блокировки порта могут использоваться, чтобы соединить различные компоненты, например, Inport и Outport. Удалите 'Sensor Reading 2' and 'q'. Создайте новый Inport и Outport.

Соедините импорт в выходные порты.

Обратите внимание на то, что в al сценарии, где модели датчика, такие как RGB Camera и Lidar Sensor добавляются, модель алгоритма будет включать инструменты как метод сопоставления сканов или нейронная сеть.

Нажмите кнопку карандаша, чтобы открыть Параметры блоков. Установите 'Sensor Reading 1' Dimensions к 2.

Установите 'Sensor Reading 2' Port dimensions к 4. Каждый порт соответствует x-y положению и кватерниону, соответственно.

Возвратитесь к логической архитектуре и соедините компоненты.

Процесс, обрисованный в общих чертах выше, уже сделан в scMobileRobotLogicalArchitecture. Дважды кликните файл, чтобы открыть модель или ввести имя в командном окне MATLAB.

scMobileRobotLogicalArchitecture

Алгоритм поведения создается на основе информации порта только. При разработке логической архитектуры можно установить интерфейс порта более подробно. Например, если вы знаете, что 800 x, 600 изображений RGB с 24 кадрами в секунду будут переданы от датчика камеры, можно установить соответствующий интерфейс порта соответственно гарантировать эффективную передачу данных. Для получения дополнительной информации об установке интерфейсов, смотрите, Задают Интерфейсы.

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

Если модели поведения соединены, модель архитектуры может быть симулирована точно так же, как любые другие модели Simulink путем нажатия на Run.

Осциллограф от 'MotorController' показывает, как хорошо простой контроллер P-усиления выполняет, чтобы следовать за ссылочной скоростью для одного из колес на роботе.

Запустите следующий скрипт, чтобы наблюдать вас хорошо, робот следует за waypoints.

out = sim('scMobileRobotLogicalArchitecture.slx');
% waypoints are manually defined in Constant block
waypoints = eval(get_param('TrajectoryGenerator/Manual Waypoints','Value'));

figure
hold on
plot(out.pose.Data(:,1),out.pose.Data(:,2))
plot(waypoints(:,1),waypoints(:,2))
hold off
xlabel('X Position (m)')
ylabel('Y Position (m)')
legend('Actual Trajectory','Commanded Trajectory')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Actual Trajectory, Commanded Trajectory.

Похожие темы