Выполните рабочий процесс выбора и размещения с помощью робота ABB YuMi, который демонстрирует, как конструировать алгоритмы роботов в Simulink ®, а затем смоделировать действие в тестовой среде с помощью Simscape™. В этом примере также показано, как смоделировать систему с различными уровнями точности, чтобы сосредоточиться на лучшей ориентации на связанную конструкцию алгоритма.
Элементы конструкции в этом примере разделены на три раздела, чтобы легче сосредоточиться на различных аспектах конструкции модели:
Создание планировщика задач и траекторий для выбора и размещения с помощью Simplified Manipulator System Dynamics:
Добавление динамики основного манипулятора и проектирование контроллера
Проверка полного рабочего процесса на модели Simscape робота и среды
В примере «Интерактивное построение траектории для робота ABB YuMi Robot» последовательность ППМ робота была разработана и воспроизведена с использованием непрерывной траектории. В этом примере модели Simulink преобразуют эти ППМ в полный и повторяемый рабочий процесс выбора и размещения. Модель имеет два ключевых элемента:

Часть планирования задач и формирования траектории определяет, как робот проходит через состояния. Это включает в себя состояние конфигурации робота в любой момент времени, положение цели, должен ли захват быть открытым или закрытым, и текущую траекторию, посылаемую роботу.
Часть динамики системы моделирует поведение робота. Это определяет способ перемещения робота при наличии набора опорных траекторий и команды логического захвата (открытого или закрытого). Динамика системы может быть смоделирована с различными уровнями точности в зависимости от цели общей модели.
Для этого примера во время проектирования планировщика заданий цель состоит в том, чтобы обеспечить правильное поведение планировщика при условии, что робот находится под стабильным управлением движением. Для этой части является простой моделью, которая быстро моделируется, поэтому динамика системы моделируется с использованием блока модели совместного космического движения. Этот блок моделирует движение манипулятора с заданными опорными траекториями совместного пространства при устойчивом контроллере с заданными параметрами отклика. После завершения планирования задач фокус модели смещается на проектирование контроллера и проверку системы, что требует более сложных моделей динамики системы.
Загрузите модель робота 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');
Чтобы сосредоточиться на части планирования модели, динамика системы моделируется с использованием блока модели совместного движения пространства. Эта модель движения предполагает, что робот может достичь определенных конфигураций при стабильном и точном управлении. Позже в примере подробно описано более точное моделирование динамики системы.
Захват моделируется как простой логический ввод команды как 0 или 1 (открыто или закрыто), и выходной сигнал, который показывает, достиг ли захват командного положения. Обычно роботы обрабатывают команду захвата отдельно от других входов конфигурации.
Серия задач, через которые проходит робот, состоит из восьми состояний:

Планировщик реализуется с использованием функционального блока MATLAB, commandLogic. Планировщик продвигает состояния, когда состояние захвата достигнуто, и все соединения манипулятора достигли своих целевых положений в пределах заранее определенного порога. Каждая задача вводится в блок Траектория профиля трапециевидной скорости, который генерирует гладкую траекторию между каждой ППМ.
Предоставленная модель 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');
Для создания контроллера динамика манипулятора должна представлять положения соединения манипулятора, заданные входами крутящего момента. Это достигается внутри подсистемы Manipulator Dynamics с помощью блока Forward Dynamics для преобразования крутящих моментов соединения в ускорение соединения с учетом текущего состояния, а затем дважды интегрируясь для получения полной конфигурации соединения. Интеграторы инициализируются в q0 и dq0исходное положение и скорость соединения.

Кроме того, подсистема управления захватом перекрывает крутящие моменты совместного управления приводами захватов с усилием 10 Н, которое прикладывается для закрытия или открытия захвата.
Следует отметить, что второй интегратор насыщен.

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

Эта модель также добавляет более подробный датчик захвата, чтобы проверить, действительно ли захват был открыт или закрыт. Датчик захвата извлекает последние два значения конфигурации соединения (значения, соответствующие положению захвата) и сравнивает их с предполагаемым положением захвата, заданным closeGripper в функциональном блоке MATLAB, логика захвата. Функция «Состояние захвата» возвращает значение 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 логики захвата принимает эту переменную в качестве входного сигнала.

Смоделировать робота. Из-за высокой сложности это может занять несколько минут.
simout = sim('modelWithSimscapeRobotAndEnvironmentDynamics.slx');Используйте обозреватель Mechanics для визуализации производительности во время и после моделирования.

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