Модельно-ориентированное проектирование парадигма сосредоточено на моделях физических компонентов и систем как базис для проекта, проверки и деятельности по внедрению. Это руководство добавляет проектируемый компонент к существующей системной модели.
Модель является плоским роботом, который может перемещаться или вращаться с помощью двух колес, аналогичных домашнему роботу-пылесосу. Откройте модель путем ввода в командную строку MATLAB ®:
open_system('system_model.slx')
Это руководство анализирует эту систему и добавляет ей функциональность.
Спецификация цели проекта является критическим первым шагом к задаче проектирования. Даже с простой системой может быть несколько и даже конкурирующих целей проекта. Рассмотрим эти цели для модели примера:
Создайте контроллер, который изменяет вход силы так, чтобы колеса поворачивались с желаемой скоростью.
Проектируйте входы, которые заставляют устройство перемещаться по заранее заданному пути.
Спроектируйте датчик и контроллер так, чтобы устройство следовало по линии.
Спроектируйте алгоритм планирования, чтобы устройство достигло определенной точки, используя максимально короткий путь, избегая препятствий.
Спроектируйте датчик и алгоритм так, чтобы устройство перемещалось по определенной области, избегая препятствий.
Это руководство проектирует систему предупреждений. Вы определяете параметры для датчика, который измеряет расстояние от препятствия. Идеальный датчик точно измеряет расстояние от препятствия. Система предупреждений дискретизирует эти измерения с фиксированными интервалами, так что выход всегда находится в пределах 0,05 м от измерения. Система генерирует предупреждение вовремя, чтобы робот остановился перед ударом о препятствие.
Проект нового компонента требует анализа линейного движения робота, чтобы определить:
Как далеко робот может перемещаться на максимальной скорости, когда вырезается мощность на колеса
Максимальная скорость робота
Запустите модель с силовым входом, который начинает движение, ждет, пока робот не достигнет установившейся скорости, а затем устанавливает входную силу в нуль:
В модели дважды кликните Подсистему Входов.
Удалите существующий вход шага и добавьте блок Pulse Generator.
Установите параметры для блока Pulse Generator:
Амплитуда: 1
Период: 20
Ширина импульса: 15
Эти параметры предназначены для обеспечения достижения максимальной скорости. Можно изменить параметры, чтобы увидеть их эффект.
Запустите модель в течение 20 секунд.
Первые возможности показывают, что скорость быстро начинает уменьшаться, когда степень уменьшается во время 3
. Скорость затем асимптотически приближается к нулю, но не совсем достигает его. Это ограничение моделирования; динамика на малых скоростях без внешней силы требует более комплексного представления. Для цели здесь, однако, можно сделать приближения. Изменение масштаба сигнала положения.
Во время 3
, положение робота составляет около 0,55 м. Когда симуляция заканчивается, положение меньше 0,71 м. Можно с уверенностью сказать, что робот перемещается менее 0,16 м после отключения степени.
Чтобы найти максимальную скорость:
Изменение масштаба стабильной области выходной скорости во времени, с 1 с до 3 с.
Снова нажав кнопку масштаба, выйдите из режима масштабирования. Нажмите кнопку Cursor Measurements.
Установите второй курсор в область, где кривая скорости плоская.
Столбец Value на Cursor Measurements панели указывает, что максимальная скорость робота составляет 0,183 м/с. Чтобы вычислить время прохождения робота 0,05 м, разделите 0,05 м на 0,183 м/с. Вы получаете 0,27 секунд.
Проект датчика состоит из следующих компонентов:
Измерение расстояния между роботом и препятствием - этот пример принимает, что измерение идеально.
Временной интервал, в который система предупреждений измеряет расстояние - Чтобы сохранить ошибку измерения ниже 0,05 м, этот интервал дискретизации должен быть меньше 0,27 с. Используйте 0,25 с.
Расстояние, на котором датчик выдает предупреждение - Анализ показывает, что замедление должно начаться на 0,16 м от препятствия. Фактическое расстояние предупреждения должно также учитывать ошибку от дискретных измерений, 0,05 м.
Создайте датчик:
Создайте подсистему с портами, как показано на рисунке.
Создайте подсистему измерения расстояния. В блоке модели используйте Subtract, Math Function с magnitude^2 функции
, Sum и Sqrt блоки, как показано. Обратите внимание на переупорядочение входных портов.
Моделируйте выборку. Добавьте блок Zero-Order Hold из дискретной библиотеки в подсистему и установите параметр Sample time на 0.25
.
Моделируйте логику предупреждений. Добавьте блок Compare to Constant из библиотеки Logic and Bit Operations и установите параметры:
Operator: <=
Constant Value: 0.21
Output data type: boolean
Этот логический блок устанавливает его выход на 1
когда его вход меньше или равен 0.21
.
Завершите соединение блоков.
Протестируйте проект с местоположением препятствий X = 0.65, Y = 0, используя блоки Constant в качестве входов для подсистемы модели Sensor. Этот тест проверяет функциональность проекта в направлении X. Можно создать аналогичные тесты для разных путей. Эта модель только генерирует предупреждение. Он не управляет роботом.
Установите положение препятствия. Добавьте два блока Constant из библиотеки Sources, установите значения констант на 0.65
и 0
. Соедините выходы положения робота с входами датчика.
Добавьте возможности в выход Alert.
Запустите модель.
Заметьте, что состояние предупреждения становится 1
если положение находится в пределах 0,21 м от местоположения препятствия, и проекта требование для этого компонента удовлетворяется.
Для реальных систем со сложными компонентами и формальными требованиями Simulink® семейство продуктов включает дополнительные инструменты для уточнения и автоматизации процесса проекта. Simulink Requirements™ предоставить инструменты, чтобы официально задать требования и связать их с компонентами модели. Simulink Control Design™ может облегчить проект, если вы хотите создать контроллер для этого робота. Продукты Simulink Verification и Validation™ создают формальную среду для проверки компонентов и систем.