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

Выполните pick-place рабочий процесс с помощью робота ABB YuMi, который демонстрирует, как спроектировать алгоритмы робота в Simulink®, и затем симулировать действие в тестовой среде с помощью Simscape™. Пример также показывает, как смоделировать систему с разными уровнями точности, чтобы фокусироваться на лучшем особом внимании на связанном проекте алгоритма.

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

  1. Создайте Task & Trajectory Scheduler для Pick-Place с помощью Упрощенной Системной Динамики Манипулятора:

  2. Добавьте базовую динамику манипулятора и спроектируйте контроллер

  3. Проверьте полный рабочий процесс на модели 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

Создайте Task & Trajectory Scheduler

Загрузите первую модель, которая фокусируется на планировании задач и разделе генерации траектории модели.

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 робота и среды

Теперь, когда планировщик задач и контроллер были спроектированы, добавьте более комплексного робота и модели среды. Используйте Simscape Multibody™, который может создать высокочастотные модели физических систем. В этом приложении Simscape добавляет динамику со встроенными объединенными пределами и моделированием контакта. Этот последний шаг добавляет точность симуляции за счет моделирования сложности и скорости симуляции. Simcape также обеспечивает встроенную визуализацию, Mechanics Explorer, который может быть просмотрен в течение и после симуляции.

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

open_system('modelWithSimscapeRobotAndEnvironmentDynamics.slx');

Simscape Robot & Environment Plant

Это основное, отличающееся от предыдущей модели, является моделью объекта управления. Базовые движущие силы манипулятора из предыдущей модели были заменены моделью Simscape для робота и среды:

Manipulator & Environment Dynamics

Манипулятор и среда создаются с помощью 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;

Механизм захвата Control & Sensing

Управление Механизмом захвата является тем же самым, но Датчик Механизма захвата изменяется. Поскольку этот механизм захвата может на самом деле взять объекты, закрытое состояние механизма захвата достигнуто, когда схватывание является фирмой. Фактическая закрытая позиция никогда не может достигаться. Поэтому дополнительная логика была добавлена, который возвращает значение, isGrippingObj, это верно, когда оба левые и правые силы реакции механизма захвата превышают пороговое значение. Блок MATLAB function Логики Механизма захвата принимает эту переменную как вход.

Симулируйте модель

Симулируйте робота. Из-за высокой сложности, это может занять несколько минут.

simout = sim('modelWithSimscapeRobotAndEnvironmentDynamics.slx');

Используйте Mechanics Explorer, чтобы визуализировать эффективность в течение и после симуляции.

Расширяемость

Этот пример фокусировался на проекте планирования и системы управления для pick-place приложения. Дальнейшие расследования могут включать эффект выборки на контроллере, удара неожиданного контакта с помощью Simscape Multibody или расширения многодоменной модели как детализация поведения электрических двигателей, которые использует робот.