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

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