Моделирование инверсной кинематики в роботизированной руке

В этом примере показано, как использовать нечеткую систему, чтобы смоделировать инверсную кинематику в 2D объединенной роботизированной руке.

Что такое инверсная кинематика?

Кинематика является наукой о движении. В 2D объединенной роботизированной руке, учитывая углы соединений, уравнения кинематики дают местоположение совета руки. Инверсная кинематика относится к противоположному процессу. Учитывая желаемое местоположение для совета роботизированной руки, что должно углы соединений быть, чтобы определить местоположение совета руки в желаемом местоположении. Обычно существует больше чем одно решение и может время от времени быть трудной проблемой решить.

Это - типичная проблема в робототехнике, которая должна быть решена, чтобы управлять роботизированной рукой, чтобы выполнить задачи, которые это определяется, чтобы сделать. В 2-мерном входном пространстве, с 2D объединенной роботизированной рукой и, учитывая желаемую координату, проблема уменьшает до нахождения этих двух включенных углов. Первый угол между первой рукой и землей (или независимо от того, что это присоединено). Второй угол между первой рукой и второй рукой.

Рисунок 1: Рисунок, показывающий 2D объединенную роботизированную руку с этими двумя углами, theta1 и theta2

Зачем использовать нечеткую логику?

Для простых структур как 2D объединенная роботизированная рука возможно математически вывести углы в соединениях, учитывая желаемое местоположение совета руки. Однако с более комплексными структурами (например: роботизированные руки n-соединения, действующие в 3-мерном входном пространстве), выведение математического решения для инверсной кинематики может оказаться сложным.

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

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

Обзор нечеткого решения

Поскольку прямые формулы кинематики для 2D объединенной роботизированной руки известны, координаты X и Y совета руки выведены для целой области значений углов вращения двух соединений. Координаты и углы сохранены, чтобы использоваться в качестве обучающих данных, чтобы обучить ANFIS (адаптивная нейронечеткая система вывода) сеть.

Во время обучения сеть ANFIS учится сопоставлять координаты (xY) к углам (theta1, theta2). Обученная сеть ANFIS затем используется в качестве части большей системы управления, чтобы управлять роботизированной рукой. Зная желаемое местоположение роботизированной руки, система управления использует обученную сеть ANFIS, чтобы вывести угловые положения соединений и прикладывает силу к соединениям роботизированной руки соответственно, чтобы переместить его в желаемое местоположение.

Что такое ANFIS?

ANFIS обозначает адаптивную нейронечеткую систему вывода. Это - гибридный нейронечеткий метод, который приносит способности к обучению нейронных сетей к нечетким системам вывода. Алгоритм обучения настраивает функции принадлежности Sugeno-типа нечеткая система вывода с помощью учебных данных о вводе/выводе.

В этом случае данные о вводе/выводе относятся к набору данных "координат/углов". Координаты действуют как вход к ANFIS и угловому действию как выход. Алгоритм обучения учит, что ANFIS, чтобы сопоставить координаты с углами посредством процесса вызвал обучение. В конце обучения обученная сеть ANFIS изучила бы карту ввода - вывода и быть готова быть развернутой в большее решение для системы управления.

Генерация данных

Позвольте theta1 будьте углом между первой рукой и землей. Позвольте theta2 будьте углом между второй рукой, и первая рука (Обратитесь к рисунку 1 для рисунка). Позвольте длине первой руки быть l1 и та из второй руки быть l2.

Примите, что первое соединение ограничило свободу вращаться, и это может вращаться между 0 и 90 градусами. Точно так же примите, что второе соединение ограничило свободу вращаться и может вращаться между 0 и 180 градусами. (Это предположение устраняет потребность обработать некоторые особые случаи, которые перепутают беседу.) Следовательно, 0<=theta1<=pi/2 и 0<=theta2<=pi.

Рисунок 2: Рисунок, показывающий весь возможный theta1 и theta2 значения.

Теперь для каждой комбинации theta1 и theta2 значения координаты X и Y выведены с помощью прямых формул кинематики.

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

l1 = 10; % length of first arm
l2 = 7; % length of second arm

theta1 = 0:0.1:pi/2; % all possible theta1 values
theta2 = 0:0.1:pi; % all possible theta2 values

[THETA1,THETA2] = meshgrid(theta1,theta2); % generate a grid of theta1 and theta2 values

X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2); % compute x coordinates
Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2); % compute y coordinates

data1 = [X(:) Y(:) THETA1(:)]; % create x-y-theta1 dataset
data2 = [X(:) Y(:) THETA2(:)]; % create x-y-theta2 dataset

Следующий график показывает все точки данных X-Y, сгенерированные путем циклического повторения через различные комбинации theta1 и theta2 и выведение X и Y координирует для каждого. График может быть сгенерирован при помощи следующего кода. График аннотируется далее для более легкого понимания.

  plot(X(:),Y(:),'r.'); 
  axis equal;
  xlabel('X','fontsize',10)
  ylabel('Y','fontsize',10)
  title('X-Y coordinates for all theta1 and theta2 combinations','fontsize',10)

Рисунок 3: координаты X-Y сгенерированы для всего theta1 и theta2 комбинации с помощью прямых формул кинематики

Создание сети ANFIS

Один подход к созданию решения ANFIS для этой проблемы, должен создать две сети ANFIS, один, чтобы предсказать theta1 и другой, чтобы предсказать theta2.

Для сетей ANFIS, чтобы смочь предсказать углы они должны быть обучены с демонстрационными данными ввода - вывода. Первая сеть ANFIS будет обучена с координатами X и Y, как введено и соответствующим theta1 значения, как выведено. Матричный data1 содержит x-y-theta1 набор данных, требуемый обучать первую сеть ANFIS. Поэтому data1 будет использоваться в качестве набора данных, чтобы обучить первую сеть ANFIS.

Точно так же вторая сеть ANFIS будет обучена с координатами X и Y, как введено и соответствующим theta2 значения, как выведено. Матричный data2 содержит x-y-theta2 набор данных, требуемый обучать вторую сеть ANFIS. Поэтому data2 будет использоваться в качестве набора данных, чтобы обучить вторую сеть ANFIS.

Чтобы обучить сеть ANFIS, сначала задайте опции обучения с помощью anfisOptions команда. В данном примере задайте объект FIS с 7 функции принадлежности для каждой входной переменной. Обучите систему 150 эпохи и подавляют отображение Командного окна учебной информации.

opt = anfisOptions;
opt.InitialFIS = 7;
opt.EpochNumber = 150;
opt.DisplayANFISInformation = 0;
opt.DisplayErrorValues = 0;
opt.DisplayStepSize = 0;
opt.DisplayFinalResults = 0;

Обучите систему ANFIS с помощью первого набора обучающих данных, data1.

disp('--> Training first ANFIS network.')
--> Training first ANFIS network.
anfis1 = anfis(data1,opt);

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

disp('--> Training second ANFIS network.')
--> Training second ANFIS network.
opt.InitialFIS = 6;
anfis2 = anfis(data2,opt);

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

anfis1 и anfis2 представляйте две обученных сети ANFIS, которые будут развернуты в большей системе управления.

Если обучение завершено, две сети ANFIS учились аппроксимировать углы (theta1, theta2) в зависимости от координат (xY). Одно преимущество использования нечеткого подхода состоит в том, что сеть ANFIS может теперь аппроксимировать углы для координат, которые подобны, но не точно то же самое, когда это было обучено с. Например, обученные сети ANFIS теперь способны к аппроксимации углов для координат, которые находятся между двумя точками, которые были включены в обучающий набор данных. Это позволит итоговому контроллеру перемещать руку гладко во входное пространство.

У нас теперь есть две обученных сети ANFIS, которые готовы быть развернутыми в большую систему, которая использует эти сети, чтобы управлять роботизированными руками.

Проверка сети ANFIS

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

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

Примите, что для сетей ANFIS важно иметь низкие ошибки в рабочем диапазоне 0<x<2 и 8<y<10.

x = 0:0.1:2; % x coordinates for validation
y = 8:0.1:10; % y coordinates for validation

theta1 и theta2 значения выведены математически из координат X и Y с помощью формул инверсной кинематики.

[X,Y] = meshgrid(x,y);

c2 = (X.^2 + Y.^2 - l1^2 - l2^2)/(2*l1*l2);
s2 = sqrt(1 - c2.^2);
THETA2D = atan2(s2,c2); % theta2 is deduced

k1 = l1 + l2.*c2;
k2 = l2*s2;
THETA1D = atan2(Y,X) - atan2(k2,k1); % theta1 is deduced

THETA1D и THETA2D переменные, которые содержат значения theta1 и theta2 выведенное использование формул инверсной кинематики.

theta1 и theta2 значения, предсказанные обученными сетями ANFIS, получены при помощи команды evalfis который оценивает FIS для данных входных параметров.

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

XY = [X(:) Y(:)];
THETA1P = evalfis(anfis1,XY); % theta1 predicted by anfis1
THETA2P = evalfis(anfis2,XY); % theta2 predicted by anfis2

Теперь мы видим, как близко FIS выходные параметры относительно выведенных значений.

theta1diff = THETA1D(:) - THETA1P;
theta2diff = THETA2D(:) - THETA2P;

subplot(2,1,1);
plot(theta1diff);
ylabel('THETA1D - THETA1P','fontsize',10)
title('Deduced theta1 - Predicted theta1','fontsize',10)

subplot(2,1,2);
plot(theta2diff);
ylabel('THETA2D - THETA2P','fontsize',10)
title('Deduced theta2 - Predicted theta2','fontsize',10)

Figure contains 2 axes. Axes 1 with title Deduced theta1 - Predicted theta1 contains an object of type line. Axes 2 with title Deduced theta2 - Predicted theta2 contains an object of type line.

Ошибки находятся в 1e-3 расположитесь, который является довольно большим количеством для приложения, в котором оно используется. Однако это не может быть приемлемо для другого приложения, в этом случае параметры к anfis функцию можно настроить, пока приемлемое решение не прибывается. Кроме того, другие методы как входной выбор и альтернативные способы смоделировать проблему могут быть исследованы.

Создание решения вокруг обученных сетей ANFIS

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

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

Рисунок 4: графический интерфейс пользователя для моделирования инверсной кинематики.

Две сети ANFIS, используемые в примере, были предварительно обучены и развертываются в большую систему, которая управляет советом 2D объединенного манипулятора, чтобы проследить эллипс во входном пространстве.

Эллипс, который будет прослежен, может быть перемещен. Переместите эллипс в немного отличающееся местоположение и наблюдайте, как система отвечает путем перемещения совета роботизированной руки от ее текущего местоположения до самой близкой точки на новом местоположении эллипса. Также заметьте, что система отвечает гладко, пока эллипс, который будет прослежен, находится в отмеченных пятнах 'x', которые представляют сетку данных, которая использовалась, чтобы обучить сети. Если эллипс перемещен вне области значений данных, с которыми это было обучено, сети ANFIS отвечают непредсказуемо. Это подчеркивает важность наличия соответствующих и представительных данных для обучения. Данные должны быть сгенерированы на основе ожидаемой области значений операции, чтобы избежать такой непредсказуемости и проблем нестабильности.

Смотрите также

|

Похожие темы