Выполните pick-place рабочий процесс с помощью робота ABB YuMi, который демонстрирует, как спроектировать алгоритмы робота в Simulink®, и затем симулировать действие в тестовой среде с помощью Simscape™. Пример также показывает, как смоделировать систему с разными уровнями точности, чтобы фокусироваться на лучшем особом внимании на связанном проекте алгоритма.
Элементы дизайна этого примера разделены в три раздела, чтобы более легко фокусироваться на различных аспектах проекта модели:
Создайте Task & Trajectory Scheduler для Pick-Place с помощью Упрощенной Системной Динамики Манипулятора:
Добавьте базовую динамику манипулятора и спроектируйте контроллер
Проверьте полный рабочий процесс на модели Simscape робота и среды
В В интерактивном режиме Сборке Траектория Для примера робота ABB YuMi, робот waypoint последовательность был спроектирован и воспроизвел использование непрерывной траектории. В этом примере модели Simulink преобразуют эти waypoints в полный и повторяемый pick-place рабочий процесс. Модель имеет эти два основных элемента:
Фрагмент генерации планирования задач и траектории задает, как робот пересекает через состояния. Это включает состояние настройки робота в любой момент, каково целевое положение, должен ли механизм захвата быть открыт или закрыт, и текущая траектория, отправляемая в робота.
Системный фрагмент динамики моделирует поведение робота. Это задает, как робот перемещается, учитывая набор ссылочных траекторий и булевой команды механизма захвата (открытый или закрытый). Системная динамика может быть смоделирована с разными уровнями точности, в зависимости от цели полной модели.
В данном примере во время проекта планировщика задач, цель состоит в том, чтобы гарантировать, что планировщик ведет себя правильно под предположением, что робот находится под устойчивым контролем движением. Для этого фрагмента, прямая модель, которая симулирует быстро желательный, таким образом, системные движущие силы моделируются с помощью Объединенного блока Model Движения Пробела. Этот блок симулирует движение манипулятора, данное траектории ссылки объединенного пробела под устойчивым контроллером предопределенными параметрами ответа. Если планирование задач завершено, особое внимание модели смещено к проектированию контроллера и системной верификации, которая требует моделей динамики более сложной системы.
Загрузите модель робота ABB YuMi. Робот является промышленным манипулятором двумя руками. Этот пример только использует одну руку.
robot = loadrobot('abbYumi','Gravity',[0 0 -9.81]);
Создайте визуализацию, чтобы воспроизвести симулированные траектории.
iviz = interactiveRigidBodyTree(robot); ax = gca;
Добавьте среду путем создания набора объектов столкновения с помощью функции помощника в качестве примера.
exampleHelperSetupWorkspace(ax);
Этот пример использует набор предопределенных настроек, configSequence
, как состояния робота. Они хранятся в связанном файле MAT и были первоначально заданы в В интерактивном режиме Сборке Траектория Для робота ABB YuMi.
load abbSavedConfigs.mat configSequence
Для симуляции начальное состояние робота должно быть задано включая постион, скорость и ускорение каждого соединения.
% Define initial state q0 = configSequence(:,1); % Position dq0 = zeros(size(q0)); % Velocity ddq0 = zeros(size(q0)); % Acceleration
Загрузите первую модель, которая фокусируется на планировании задач и разделе генерации траектории модели.
open_system('modelWithSimplifiedSystemDynamics.slx');
Чтобы фокусироваться на фрагменте планирования модели, системные движущие силы моделируются с помощью Объединенного блока Model Движения Пробела. Эта модель движения принимает, что робот может достигнуть заданных настроек под устойчивым, точным управлением. Позже, пример детализирует более точное моделирование системной динамики.
Механизм захвата моделируется как простой булев ввод команд как 0
или 1
(откройтесь или закрытый), и выход, который указывает, достиг ли механизм захвата положения, которым управляют. Как правило, роботы обрабатывают команду механизма захвата отдельно от других входных параметров настройки.
Серии задач робот через являются восемью состояниями:
Планировщик реализован с помощью блока MATLAB function, commandLogic
. Планировщик совершенствует состояния, когда состояние механизма захвата достигнуто, и все соединения манипулятора достигли своих целевых положений в предопределенном пороге. Каждая задача вводится с блоком Trapezoidal Velocity Profile Trajectory, который генерирует сглаженную траекторию между каждым waypoint.
Предоставленная модель Simulink хранит переменные, относящиеся к примеру в Рабочем пространстве модели. Нажмите Load Default Parameters, чтобы повторно инициализировать переменные в случае необходимости. Для получения дополнительной информации смотрите Рабочие пространства модели (Simulink).
Запустите модель путем вызова sim
.
Используйте интерактивную визуализацию, чтобы воспроизвести движение. Модель симулирована в течение нескольких дополнительных секунд, чтобы гарантировать что циклы цикла как ожидалось после первого движения. Эта модель не симулирует взаимодействия среды, таким образом, робот на самом деле не захватывает объекты в этой симуляции.
simout = sim('modelWithSimplifiedSystemDynamics.slx'); % Visualize the motion using the interactiveRigidBodyTree object. iviz.ShowMarker = false; iviz.showFigure; rateCtrlObj = rateControl(length(simout.tout)/(max(simout.tout))); for i = 1:length(simout.tout) iviz.Configuration = simout.yout{1}.Values.Data(i,:); waitfor(rateCtrlObj); end
Теперь, когда планировщик был спроектирован и проверен, добавьте контроллер для робота с двумя элементами
Более комплексная модель динамики манипулятора, которая принимает объединенные крутящие моменты и команды механизма захвата
Контроллер объединенного пробела, который возвращает соединение, закручивает данные желаемые и текущие состояния манипулятора
Откройте следующую модель, которой предоставляют, с добавленным контроллером.
open_system('modelWithControllerAndBasicRobotDynamics.slx');
В целях разработки контроллера движущие силы манипулятора должны представлять положения соединения манипулятора, данные входные параметры крутящего момента. Это достигается в подсистеме Динамики Манипулятора с помощью блока Forward Dynamics, чтобы преобразовать объединенные крутящие моменты, чтобы соединить ускорение, учитывая текущее состояние, и затем объединяясь дважды, чтобы получить полную объединенную настройку. Интеграторы инициализируются к q0
и dq0
, начальное объединенное положение и скорость.
Кроме того, подсистема управления механизмом захвата заменяет объединенные крутящие моменты управления на приводы механизма захвата с 10 Н силы, которая прикладывается, чтобы закрыть или открыть механизм захвата.
Обратите внимание на то, что второй интегратор насыщается.
В то время как манипуляторы под хорошо спроектированными контроллерами положения обычно не будут достигать объединенных пределов, сложение сил разомкнутого контура от действия механизма захвата означают, что объединенные пределы требуются, чтобы гарантировать реалистический ответ. Для более точной модели объединенное насыщение могло быть соединено со скоростью, чтобы сбросить интегрирование, но для этой модели, этот уровень точности достаточен.
Эта модель также добавляет более подробный датчик механизма захвата, чтобы проверять, когда механизм захвата был на самом деле открыт или закрыт. Датчик механизма захвата извлекает последние два значения объединенной настройки (значения, которые соответствуют положению механизма захвата), и сравнивает их с намеченным положением механизма захвата, данным closeGripper
команда, в блоке MATLAB function, Логике Механизма захвата. Состояние Механизма захвата возвращается 1, когда положения соединений механизма захвата совпадают с требуемым состоянием, данным closeGripper командой. Когда механизм захвата еще не достиг тех состояний, Состояние Механизма захвата возвращает нуль. Это совпадает с поведением Модели Механизма захвата в ранее, упрощенной модели.
Эта модель также добавляет вычисленный контроллер крутящего момента, который реализует основанный на модели подход, чтобы соединить управление. Для получения дополнительной информации смотрите Сборку Вычисленный Контроллер Крутящего момента Используя Блоки Манипулятора Робототехники в Выполнении Безопасной Траектории, Отслеживающей Управление Используя пример Блоков Манипулятора Робототехники. Эта модель использует тот же контроллер, но с ABB YuMi как rigidBodyTree
введите, а не Лесоруб Переосмысления.
Симулируйте и визуализируйте результаты с помощью новой модели.
simout = sim('modelWithControllerAndBasicRobotDynamics.slx'); % Visualize the motion using the interactiveRigidBodyTree iviz.ShowMarker = false; iviz.showFigure; rateCtrlObj = rateControl(length(simout.tout)/(max(simout.tout))); for i = 1:length(simout.tout) iviz.Configuration = simout.yout{1}.Values.Data(i,:); waitfor(rateCtrlObj); end
Теперь, когда планировщик задач и контроллер были спроектированы, добавьте более комплексного робота и модели среды. Используйте Simscape Multibody™, который может создать высокочастотные модели физических систем. В этом приложении Simscape добавляет динамику со встроенными объединенными пределами и моделированием контакта. Этот последний шаг добавляет точность симуляции за счет моделирования сложности и скорости симуляции. Simcape также обеспечивает встроенную визуализацию, Mechanics Explorer, который может быть просмотрен в течение и после симуляции.
Загрузите финал, обеспеченный модель, которая имеет тот же вид сверху.
open_system('modelWithSimscapeRobotAndEnvironmentDynamics.slx');
Это основное, отличающееся от предыдущей модели, является моделью объекта управления. Базовые движущие силы манипулятора из предыдущей модели были заменены моделью Simscape для робота и среды:
Манипулятор и среда создаются с помощью Simscape Multibody. Модель робота была создана путем вызова smimport
на роботе файл URDF с обеспеченными сетками. Затем соединения были приведены в движение с объединенными крутящими моментами путем соединения через мультиплексоры и теги GoTo и снабжены оборудованием с датчиками, которые возвращают объединенное положение, скорость и ускорение.
Объекты или виджеты, на самом деле взяты в этой симуляции, поэтому задайте размер виджета.
widgetDimensions = [0.02 0.02 0.07];
Контакт в этой модели разделен в две категории:
Свяжитесь между механизмом захвата и виджетом
Свяжитесь между виджетом и средой
В обоих случаях свяжитесь, прокси используются вместо прямого контакта класса Земля-Земля. Использование прокси контакта ускоряет моделирование, чтобы улучшать производительность. Для контакта виджета механизма захвата контакты механизма захвата моделируются с помощью двух кирпичных твердых частиц, в то время как восемь сферических контактов используются, чтобы смоделировать интерфейс виджета. Точно так же контакт виджета к среде использует сферы в каждом из четырех углов виджета, которые связываются с кирпичными твердыми частицами, представляющими среду.
Задайте параметры для моделей контакта, чтобы быть близко к их состояниям по умолчанию.
% Contact parameters
stiffness = 1e4;
damping = 30;
transition_region_width = 1e-4;
static_friction_coef = 1;
kinetic_friction_coef = 1;
critical_velocity = 1;
Управление Механизмом захвата является тем же самым, но Датчик Механизма захвата изменяется. Поскольку этот механизм захвата может на самом деле взять объекты, закрытое состояние механизма захвата достигнуто, когда схватывание является фирмой. Фактическая закрытая позиция никогда не может достигаться. Поэтому дополнительная логика была добавлена, который возвращает значение, isGrippingObj
, это верно, когда оба левые и правые силы реакции механизма захвата превышают пороговое значение. Блок MATLAB function Логики Механизма захвата принимает эту переменную как вход.
Симулируйте робота. Из-за высокой сложности, это может занять несколько минут.
simout = sim('modelWithSimscapeRobotAndEnvironmentDynamics.slx');
Используйте Mechanics Explorer, чтобы визуализировать эффективность в течение и после симуляции.
Этот пример фокусировался на проекте планирования и системы управления для pick-place приложения. Дальнейшие расследования могут включать эффект выборки на контроллере, удара неожиданного контакта с помощью Simscape Multibody или расширения многодоменной модели как детализация поведения электрических двигателей, которые использует робот.