Выполните безопасную траекторию, отслеживающую управление Используя блоки манипулятора робототехники

Этот пример показывает вам, как использовать Simulink® с блоками алгоритма манипулятора Robotics System Toolbox™, чтобы достигнуть безопасного управления отслеживанием траектории для моделируемого робота, запускающегося в Simscape™ Multibody™.

И Robotics System Toolbox и Simscape Multibody требуются запустить этот пример.

Введение

В этом примере вы запустите модель, которая реализует контроллер вычисленного крутящего момента с объединенной обратной связью положения и скорости с помощью блоков алгоритма манипулятора. Контроллер получает объединенную информацию о положении и скорости от моделируемого робота (реализованный Simscape Multibody использования) и отправляет команды крутящего момента, чтобы управлять роботом вдоль данной объединенной траектории. Плоский объект помещается перед роботом так, чтобы исполнительный элемент конца манипулятора столкнулся с ним, когда управление отслеживанием траектории будет выполнено. Без любой дополнительной настройки увеличивающийся крутящий момент из-за столкновения с объектом может нанести ущерб на роботе или объекте. Чтобы достигнуть безопасного отслеживания траектории, блок масштабирования траектории создается, чтобы настроить метку времени при присвоении желаемого движения контроллеру. Можно настроить некоторые параметры и взаимодействовать с роботом, в то время как модель запускается, и наблюдайте эффект на моделируемого робота.

Настройте модель робота в рабочей области

Этот пример использует модель Лесоруба Переосмысления, 7 манипуляторов робота степени свободы. Вызовите importrobot, чтобы сгенерировать модель robotics.RigidBodyTree из описания, сохраненного в файле Объединенного формата описания робота (URDF). Установите свойства DataFormat и Gravity быть сопоставимыми с Simscape.

sawyer = importrobot('sawyer.urdf');
sawyer.removeBody('head');
sawyer.DataFormat = 'column';
sawyer.Gravity = [0, 0, -9.80665];

Генерация траектории и связанный Setup

Во-первых, присвойте время начала и длительность для траектории.

tStart = 0.5;
tDuration = 3;

Затем, присвойте начальную и целевую настройку. q0 является начальной настройкой, и q1 является целевой настройкой.

q0 = [0; -1.18; 0; 2.18; 0; -1.0008; 3.3161];
q1 = zeros(7,1);

Следующие данные показывают визуализацию робота начальной настройки и целевой настройки, связанной с местоположением плоского объекта. Плоский объект помещается так, чтобы робот столкнулся к нему во время отслеживания траектории.

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

p = exampleHelperPolynomialTrajectory(q0,q1,tDuration);

Обзор модели Simulink

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

open_system('robotSafeTrajectoryTracking.slx');

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

  • Вычисленный контроллер крутящего момента

  • Масштабирование траектории и желаемое движение

  • Модель Simscape Multibody с простой механикой контакта

На каждом временном шаге, если переключатель масштабирования траектории включен, измененная метка времени используется для оценки желаемого объединенного положения, скорости и ускорения. Затем вычисленный контроллер крутящего момента использует блоки манипулятора, сопоставленные с моделью RigidBodyTree, чтобы отследить желаемое движение. Выведенный вход управления подан в модель Sawyer в Simscape Multibody (где плоский объект для взаимодействия с роботом включен).

Создайте вычисленный контроллер крутящего момента Используя блоки манипулятора робототехники

Для манипулятора с n нефиксированные соединения, системная динамика может быть выражена как:

M(q)q¨+C(q,q˙)q˙+G(q)=u

где q, q˙, q¨, Rn положение, скорость и ускорение обобщенной координаты, uRn вход управления (крутящий момент), M(q) объединенная большая матрица пробела, C(q,q˙)q˙ скоростной крутящий момент продукта, G(q) крутящий момент силы тяжести. Отслеживать вдоль желаемой объединенной траектории с желаемым положением qd, скорость q˙d и ускорение q¨d, вычисленный контроллер крутящего момента вычисляет, крутящий момент должен был получить данную настройку и скорость, обеспечил переменные динамики робота M(q), C(q,q˙)q˙, и G(q). В Simulink эти переменные могут быть легко выведены с помощью блоков манипулятора робототехники от Robotics System Toolbox, чтобы разработать следующий вычисленный контроллер крутящего момента:

u=M(q)(q¨d-Kdq˙e-Kpqe)+C(q,q˙)q˙+G(q)

где qe=q-qd ошибка положения и q˙e=q˙-q˙d ошибка скорости. С этим входом контроллера системная динамика становится ОДУ второго порядка:

q¨e+Kdq˙e+Kpqe=0

Путем выбора Kd и Kp правильно, ошибка отслеживания qe будет сходиться, чтобы обнулить, когда время приблизится к бесконечности.

Вычисленная Подсистема контроллера Крутящего момента создается с помощью трех блоков манипулятора робототехники: Объединенная Большая матрица Пробела, Скоростной Крутящий момент продукта и Крутящий момент Силы тяжести. Обратите внимание на то, что связанная модель robotics.RigidBodyTree, sawyer, присвоена во всех тех блоках, и настройка и скорость должны быть вставлены как вектор-столбцы.

open_system('robotSafeTrajectoryTracking/Computed Torque Controller');

В Вычисленном Контроллере Крутящего момента существует два настраиваемых параметра (обозначены цветными блоками):

  • Усиление Kp: пропорциональное усиление при исправлении настройки робота

  • Усиление Kd: производное усиление при исправлении настройки робота

Стандартный способ определить Kp и Kd состоит в том, чтобы вычислить их как:

Kp=ωn2

Kd=2ωnξ

где ωn и ξ собственная частота и отношение затухания ОДУ второго порядка. В этом примере значение по умолчанию Kp и Kd выведено путем установки собственной частоты и затухания отношения как ωn=10 и ξ=1 сделать ОДУ второго порядка критической ослабленной системой.

Масштабирование траектории

В этой подсистеме существует два основных блока:

  • Масштабирование траектории

  • Желаемое движение

Масштабирование траектории является основным блоком, развернутым для безопасного отслеживания траектории в этом примере. На каждом временном шаге ti, исходная метка времени вычисляется как ti=ti-1+Δt. Однако, когда робот сталкивается с непредвиденным объектом, увеличивающийся крутящий момент и отклонение от запланированной траектории могут быть разрушительными и для робота и для объекта. Основная идея масштабирования траектории состоит в том, чтобы вычислить метку времени как ti=ti-1+fs(qd,q˙d,q¨d,τmea)Δt путем представления fs(qd,q˙d,q¨d,τmea)[-1,1], который является функцией желаемого движения и измеренного крутящего момента τmea. Функция fs() контролирует скорость движения робота и определяется на основе интерференции, которую чувствует робот. Если измеренные крутящие моменты больше, чем ожидалось, fs() уменьшен, чтобы заставить робота замедлиться или даже переместиться назад, пока желаемые крутящие моменты не достигаются. Эти значения fs() имейте следующие эффекты на движение робота:

  • fs()>0, робот продвигается (fs()=1 нормальная скорость).

  • fs()=0, остановки робота.

  • fs()<0, робот перемещается назад.

В блоке Trajectory Scaling это требуется, чтобы оценивать внешний крутящий момент τˆext=τmea-τˆ вычислять fs(), где τmea измеренный крутящий момент из модели Simscape, и τˆ ожидаемый крутящий момент желаемого движения на предыдущей метке времени. В разделе External Torque Observer модели блок Inverse Dynamics вычисляет ожидаемый крутящий момент, который вычтен из крутящего момента меры. Ожидаемый крутящий момент: τˆ=M(qd)(q¨d)+C(qd,q˙d)q˙d+G(qd).

В блоке Desired Motion полиномиальные коэффициенты даны, чтобы сгенерировать желаемую траекторию с данным входом timeStamp, который может быть настроен на основе алгоритма масштабирования траектории. qd(t), q˙d(t) и q¨d(t) выходные параметры на основе полинома траектории и питаются Вычисленную Подсистему контроллера Крутящего момента.

Робот Simscape Multibody образцовая и простая механика контакта

Модель Робота Simscape Multibody импортируется из того же файла .urdf с помощью smimport, где набор приводов крутящего момента и датчиков для объединенного крутящего момента, объединенного положения и скорости добавляется. Блок механизма контакта как показано ниже добавляется, чтобы моделировать силу реакции между исполнительным элементом конца и препятствием как сфера и плоскость, где простая линейная модель пружинного демпфера используется.

Примечание: механизм контакта был только реализован между исполнительным элементом конца и плоским объектом. Поэтому другие части манипулятора могут все еще пройти через препятствие.

Запустите модель

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

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

  • Переключите переключатель масштабирования траектории к "Прочь".

  • Кликните по кнопке воспроизведения в Simulink, чтобы запустить симуляцию. Необходимо видеть, что рука столкнуться с объектом, уступающим высоко, закручивает входные параметры и большую силу реакции. Обратите внимание в этом случае, что исходная метка времени используется. Остановите симуляцию впоследствии.

  • Теперь, переключите переключатель масштабирования траектории к "На" и повторно выполните модель. Заметьте различия в вычисленных крутящих моментах и уменьшаемой силе реакции после столкновения.

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

  • Нажмите кнопку Stop в Simulink, чтобы остановить симуляцию.

Сводные данные

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