Этот пример показывает, как использовать нечеткую систему для моделирования обратной кинематики в двухсоединенной роботизированной руке.
Кинематика - наука о движении. В двухсоединенной роботизированной руке, учитывая углы соединений, кинематические уравнения дают расположение совета руки. Обратная кинематика относится к обратному процессу. При желаемом расположении совета роботизированного рычага, какие углы соединений должны быть так, чтобы располагать совет рычага в желаемом месте. Обычно существует более одного решения, и иногда может быть трудной задачей для решения.
Это типичная проблема в робототехнике, которая должна быть решена, чтобы управлять робототехнической рукой для выполнения задач, для которых она предназначена. В 2-мерном входном пространстве с двухсоединенной роботизированной рукой и с учетом желаемой координаты задача сводится к поиску двух задействованных углов. Первый угол находится между первым рычагом и землей (или тем, к чему она присоединена). Второй угол находится между первым рычагом и вторым рычагом.
Фигура 1: Иллюстрация, показывающая двухсоединенную роботизированную руку с двумя углами, theta1
и theta2
Для простых структур, таких как двухсоединенная роботизированная рука, можно математически вывести углы в соединениях, учитывая желаемое расположение совета руки. Однако с более сложными структурами (для примера: n-совместные роботизированные руки, работающие в 3-мерном входном пространстве) вывод математического решения для обратной кинематики может оказаться трудным.
Используя нечеткую логику, мы можем создать систему нечеткого вывода, которая выводит обратную кинематику, если прямая кинематика задачи известна, следовательно, устраняя необходимость разработки аналитического решения. Также нечеткое решение легко понятно и не требует специальных фоновых знаний, чтобы осмыслить и оценить его.
В следующем разделе описан широкий контур разработки такого решения, а затем подробно описаны шаги.
Поскольку известны формулы прямой кинематики для двухсоединенной роботизированной руки, координаты x и y совета руки выводятся для всей области значений углов поворота двух соединений. Координаты и углы сохраняются, чтобы использоваться в качестве обучающих данных для обучения сети ANFIS (адаптивная система нейро-нечеткого вывода).
Во время обучения сеть ANFIS учится отображать координаты (x
, y
) к углам (theta1
, theta2
). Обученная сеть ANFIS затем используется как часть большей системы управления для управления рукой робота. Зная желаемое расположение роботизированного рычага, система управления использует обученную сеть ANFIS для вывода угловых положений соединений и прикладывает силу к соединениям роботизированного рычага, соответственно, для перемещения его в требуемое место.
ANFIS обозначает адаптивную нейро-нечеткую систему вывода. Это гибридный нейро-нечеткий метод, который приносит возможности обучения нейронных сетей в системы нечеткого вывода. Алгоритм обучения настраивает функции принадлежности системы нечеткого вывода Sugeno-type, используя обучающие входные/выходные данные.
В этом случае входные/выходные данные относятся к набору данных «координаты/углы». Координаты действуют как вход в 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, одна для предсказания 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 научились аппроксимировать углы (theta1
, theta2
) как функция от координат (x
, y
). Одним из преимуществ использования нечеткого подхода является то, что сеть ANFIS теперь может аппроксимировать углы для координат, которые похожи, но не совсем такие, с которыми она была обучена. Например, обученные сети ANFIS теперь способны аппроксимировать углы для координат, которые находятся между двумя точками, которые были включены в обучающий набор данных. Это позволит конечному контроллеру плавно перемещать руку во входном пространстве.
Сейчас у нас есть две обученные сети ANFIS, которые готовы к развертыванию в большей системе, которая будет использовать эти сети для управления роботизированными вооружениями.
Обучив сети, важным последующим шагом является подтверждение сетей, чтобы определить, насколько хорошо сети ANFIS будут работать в большей системе управления.
Поскольку эта задача примера касается двухсоединенной роботизированной руки, обратные кинематические формулы которой могут быть выведены, возможно протестировать ответы, которые получают сети 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
The 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)
Ошибки в 1e-3
область значений, который является довольно хорошим числом для приложения, в котором он используется. Однако это может быть неприемлемо для другого приложения, в этом случае параметры для anfis
функция может быть изменена до тех пор, пока не будет получено приемлемое решение. Кроме того, могут быть исследованы другие методы, такие как выбор входного сигнала и альтернативные способы моделирования задачи.
Теперь, учитывая конкретную задачу, такую как захват роботами объекта в сборочной линии, большая система управления будет использовать обученные сети ANFIS в качестве ссылки, во многом подобной интерполяционной таблице, чтобы определить, какими должны быть углы кронштейнов, учитывая желаемое расположение совета руки. Зная желаемые углы и текущие углы соединений, система приложит соответствующую силу к шарнирам рычагов, чтобы переместить их в нужное место.
The invkine
команда запускает графический интерфейс пользователя, который показывает, как работают две обученные сети ANFIS, когда запрашивается трассировка эллипса.
Фигура 4: Графический интерфейс пользователя для моделирования обратной кинематики.
Две сети ANFIS, используемые в примере, были предварительно обучены и развернуты в большей системе, которая управляет советом двухсоединенной руки робота, чтобы проследить эллипс во входном пространстве.
Отслеживаемый эллипс можно перемещать вокруг. Переместите эллипс в немного другое место и наблюдайте, как система реагирует, перемещая совет руки робота из его текущего положения в ближайшую точку на новом месте эллипса. Также обратите внимание, что система реагирует плавно, пока эллипс, который будет прослеживаться, находится в отмеченных точках 'x', которые представляют сетку данных, которая использовалась для обучения сетей. Когда эллипс перемещается за пределы области значений данных, с которыми он был обучен, сети ANFIS реагируют непредсказуемо. Это подчеркивает важность наличия соответствующих и репрезентативных данных для подготовки кадров. Данные должны быть сгенерированы на основе ожидаемой области значений операций, чтобы избежать таких непредсказуемых и нестабильных проблем.