В этом примере показано, как использовать нечеткую систему, чтобы смоделировать инверсную кинематику в 2D объединенной роботизированной руке.
Кинематика является наукой о движении. В 2D объединенной роботизированной руке, учитывая углы соединений, уравнения кинематики дают местоположение совета руки. Инверсная кинематика относится к противоположному процессу. Учитывая желаемое местоположение для совета роботизированной руки, что должно углы соединений быть, чтобы определить местоположение совета руки в желаемом местоположении. Обычно существует больше чем одно решение и может время от времени быть трудной проблемой решить.
Это - типичная проблема в робототехнике, которая должна быть решена, чтобы управлять роботизированной рукой, чтобы выполнить задачи, которые это определяется, чтобы сделать. На 2-мерном входном пробеле, с 2D объединенной роботизированной рукой и, учитывая желаемую координату, проблема уменьшает до нахождения этих двух включенных углов. Первый угол между первой рукой и землей (или независимо от того, что это присоединено). Второй угол между первой рукой и второй рукой.
Рисунок 1: Рисунок, показывающий 2D объединенную роботизированную руку с этими двумя углами, theta1
и theta2
Для простых структур как 2D объединенная роботизированная рука возможно математически вывести углы в соединениях, учитывая желаемое местоположение совета руки. Однако с более комплексными структурами (например: роботизированные руки n-соединения, действующие на 3-мерном входном пробеле), выведение математического решения для инверсной кинематики может оказаться сложным.
Используя нечеткую логику, мы можем создать нечеткую систему вывода, которая выводит инверсную кинематику, если прямая кинематика проблемы известна, следовательно обходя потребность разработать аналитическое решение. Кроме того, нечеткое решение легко понятно и не требует, чтобы специальное фоновое знание постигало и оценило его.
В следующем разделе широкая схема для разработки такого решения описана, и позже, подробные шаги разрабатываются.
Поскольку прямые формулы кинематики для 2D объединенной роботизированной руки известны, координаты X и Y совета руки выведены для целой области значений углов вращения двух соединений. Координаты и углы сохранены, чтобы использоваться в качестве обучающих данных, чтобы обучить ANFIS (адаптивная нейронечеткая система вывода) сеть.
Во время обучения сеть ANFIS учится сопоставлять координаты (x
Y
) к углам (theta1
, theta2
). Обученная сеть 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 generated for all theta1 and theta2 combinations using forward kinematics formula','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, которые будут развернуты в большей системе управления.
Если обучение завершено, две сети ANFIS учились аппроксимировать углы (theta1
, theta2
) как функция координат (x
Y
). Одно преимущество использования нечеткого подхода состоит в том, что сеть 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)
Ошибки находятся в 1e-3
расположитесь, который является довольно большим количеством для приложения, в котором оно используется. Однако это не может быть приемлемо для другого приложения, в этом случае параметры к anfis
функцию можно настроить, пока приемлемое решение не прибывается. Кроме того, другие методы как входной выбор и альтернативные способы смоделировать проблему могут быть исследованы.
Теперь, учитывая определенную задачу, такую как роботы, берущие объект в сборочном конвейере, большая система управления будет использовать обученные сети ANFIS в качестве ссылки, во многом как интерполяционная таблица, чтобы определить, каковы углы рук должны быть, учитывая желаемое местоположение для совета руки. Зная желаемые углы и текущие углы соединений, система будет прикладывать силу соответственно на соединениях рук, чтобы переместить их к желаемому местоположению.
invkine команда запускает графический интерфейс пользователя, который показывает, как две обученных сети ANFIS выполняют, когда спросили проследить эллипс.
Рисунок 4: графический интерфейс пользователя для моделирования инверсной кинематики.
Две сети ANFIS, используемые в примере, были предварительно обучены и развертываются в большую систему, которая управляет советом 2D объединенного манипулятора, чтобы проследить эллипс на входном пробеле.
Эллипс, который будет прослежен, может быть перемещен. Переместите эллипс в немного отличающееся местоположение и наблюдайте, как система отвечает путем перемещения совета роботизированной руки от ее текущего местоположения до самой близкой точки на новом местоположении эллипса. Также заметьте, что система отвечает гладко, пока эллипс, который будет прослежен, находится в отмеченных пятнах 'x', которые представляют сетку данных, которая использовалась, чтобы обучить сети. Если эллипс перемещен вне области значений данных, с которыми это было обучено, сети ANFIS отвечают непредсказуемо. Это подчеркивает важность наличия соответствующих и представительных данных для обучения. Данные должны быть сгенерированы на основе ожидаемой области значений операции, чтобы избежать такой непредсказуемости и проблем нестабильности.