You are on page 1of 13

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

Овај пример приказује како се користи фузи систем (fuzzy system) за


моделовање инверзне кинематике код роботске руке са два зглоба.
Шта је инверзна кинематика?
Кинематика је део механике и представља науку о кретању. У случају
роботске руке која се састоји из два зглоба, кинематске једначине дају
положај врха роботске руке. Инверзна кинематика се односи на обрнути
процес. Ако је дат жељени положај врха роботске руке, треба одредити
углове зглобова роботске руке. Обично има више од једног решења и тешко
је доћи до решења проблема.
У простору са два улаза, са роботском руком са два зглоба, проблем се своди
на одређивање два угла која су укључена у проблематику. Први угао је
између првог дела руке и подлоге. Други угао је између првог и другог дела
роботске руке.

Слика 1: Приказивање роботске руке са два зглоба и два угла, theta1 и theta2
Која је сврха коришћења Фази Логике?
За једноставне структуре као што је роботска рука са два зглоба, могуће је
математички одредити углове на местима везе што даје жељену локацију
врха роботске руке. У случају сложеније структуре(на пример: роботске руке
са n-зглобова роботска руке која оперише у 3-димензионом улазном
простору) добијање математичког решења може бити веома захтевно.
Коришћењем фази логике може се конструисати Фази Интерферентни
Систем, који одређује инверзну кинематику ако је познат директни
кинематски проблем. Исто тако фази решење је лако разумљиво и не захтева
неко посебно предзнање за разумевање и оцењивање.
Уводна излагања
Пошто је формула за кинематику роботске руке са два зглоба позната, x и y
координате за врх руке се одређују из целе области углова ротације два
зглоба. Координате и углови се чувају да би се користили као подаци за
обуку и обучавање ANFIS мреже- Адаптивно Неуро-Фази Систем
Интерференције.
За време обуке ANFIS мрежа учи да мапира координате (x,y) према угловима
(theta1, theta2). Обучена ANFIS мрежа се онда користи као део већег
управљачког система за управљање роботском руком. Познавајући жељену
локацију роботске руке, управљачки систем користи обучену ANFIS мрежу да
би одредио угаони положај зглобова и применио силу на зглобове роботске
руке у складу са кретањем ка жељеној позицији.
Шта је то ANFIS?
ANFIS се односи на Адаптивно Неуро-Фази Систем Интерференције. То
представља хибридну неуро фази технику која способност учења коју има
неуронска мрежа доноси фази систему интерференције.
У овом случају, улазно-излазни подаци се односе на скуп података који се
назива "координате-углови". Координате се понашају као улазне
информације у 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; % дужина првог дела руке
l2 = 7; % дужина другог дела руке

theta1 = 0:0.1:pi/2; % све могуће вредности углова theta1


theta2 = 0:0.1:pi; % све могуће вредности углова theta2

[THETA1, THETA2] = meshgrid(theta1, theta2); % ствара мрежу за вредности


угла theta1 и вредности угла theta2

X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2); % израчунава x координате


Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2); % израчунава y координате

data1 = [X(:) Y(:) THETA1(:)]; % креира x-y-theta1 скуп података


data2 = [X(:) Y(:) THETA2(:)]; % креира x-y-theta2 скуп података
Следећи график приказује X-Y тачке података које су створене на бази
различитих комбинација углова theta1 и theta2. График може да настане
коришћењем дела кода као што је приказано на доњој слици.
plot(X(:), Y(:), 'r.');
axis equal;
xlabel('X','fontsize',10)
ylabel('Y','fontsize',10)
title('X-Y co-ordinates generated for all theta1 and theta2 combinations
using forward kinematics formula','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 је функција која се користи за обучавање ANFIS мреже.
fprintf('-->%s\n','Pocinje obuka prve ANFIS mreze. Potreban je jedan minut u
zavisnosti od sistema.')
anfis1 = anfis(data1, 7, 150, [0,0,0,0]); % obuka prve ANFIS mreze
fprintf('-->%s\n','Pocinje obuka druge ANFIS mreze. Potreban je jedan minut u
zavisnosti od sistema.')
anfis2 = anfis(data2, 6, 150, [0,0,0,0]); % obuka druge ANFIS mreze
-->Pocinje obuka prve ANFIS mreze. Potrebno je jedan minut za pokretanje u
zavisnosti od operativnog sistema.
--> Pocinje obuka druge ANFIS mreze. Potrebno je jedan minut za pokretanje u
zavisnosti od operativnog sistema.
Први параметар у anfis функцији је податак за обуку, други параметар је број
функција припадности које карактеришу сваки улаз и излаз, трећи параметар
представља број обучених epochs а последњи параметар представља
могућност приказивања напретка током обуке. Алат који долази са GUI
помаже да се направи експеримент са ANFIS мрежама.
anfis1 и anfis2 представљају две обучене ANFIS мреже које се моу уградити у
већи управљачки систем.
Једанпут када је обука завршена, две ANFIS мреже би научиле да изврше
апроксимацију углова (theta1, theta2) као функцију координата (x, y). Једна
предност фази приступа се огледа у томе да ANFIS мрежа апроксимира
углове за координате које су сличне али нису идентичне као оне за које је
извршена обука. На пример, обучена ANFIS мреже су сада способне да
апроксимирају углове координатама које леже између две тачке које су
укључене у скуп података предвиђен за обуку. То ће омогућити финалном
контролеру (регулатору) да лако помери руку у улазном простору.
Сада постоје две ANFIS мреже које су спремне да се искористе у већим
системима које користе ове мреже за управљање роботском руком.
Валидација ANFIS Мрежа
Када су мреже обучене следећи корак представља одређивање успешности
извођења ANFIS мрежа у већим управљачким системима.
Пошто се у овом проблему појављује роботска рука са два зглоба при чему се
инверзна кинематска формула може извести, могуће је тестирати одговоре
које производе ANFIS мреже са одговорима који су изведени из формуле.
Претпоставимо да је за ANFIS мреже важно да имају мале грешке унутар
оперативног опсега 0<x<2 и 8<y<10.
x = 0:0.1:2; % x koordinate za validaciju
y = 8:0.1:10; % y koordinate za validaciju
Углови 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 se odredjuje

k1 = l1 + l2.*c2;
k2 = l2*s2;
THETA1D = atan2(Y, X) - atan2(k2, k1); % theta1 se odredjuje
THETA1D и THETA2D су променљиве које складиште вредности за углове
theta1 и theta2 који се добијају коришћењем инверзне кинематске формуле.
theta1 и theta2 вредности су претпостављене захваљујући обученим anfis
мрежама коришћењем команде evalfis која оцењује FIS за задате улазе.
Овде се, функција evalfis користи да би се одредили FIS излази за исте x-y
вредности које су раније коришћене у инверзној кинематској формули.
XY = [X(:) Y(:)];
THETA1P = evalfis(XY, anfis1); % ugao theta1 pretpostavljen funkcijom anfis1
THETA2P = evalfis(XY, anfis2); % ugao theta2 pretpostavljen funkcijom anfis2
Сада се може видети како су блиски FIS излази у односу на одређене
вредности углова.
theta1diff = THETA1D(:) - THETA1P;
theta2diff = THETA2D(:) - THETA2P;

subplot(2,1,1);
plot(theta1diff);
ylabel('THETA1D - THETA1P','fontsize',10)
title('Odredjen ugao theta1 - Pretpostavljen ugao theta1','fontsize',10)

subplot(2,1,2);
plot(theta2diff);
ylabel('THETA2D - THETA2P','fontsize',10)
title(' Odredjen ugao theta2 - Pretpostavljen ugao theta2','fontsize',10)

Грешке су 1e-3 опсега што је веома добро за апликацију која се користи. Овај
резултат може бити неприхватљив за другу апликацију, и у том случају се
врши подешавање параметара ка anfis дункцији све док се не дође до
прихватљивог решења.
ОДРЕЂИВАЊЕ РЕШЕЊА КОРИШЕЊЕМ ОБУЧЕНИХ ANFIS
МРЕЖА

l1 = 10; % duzina prvog dela ruke


l2 = 7; % duzina drugog dela ruke

theta1 = 0:0.1:pi/2; % sve moguce uglovne vrednosti theta1


theta2 = 0:0.1:pi; % sve moguce uglovne vrednosti theta2

[THETA1, THETA2] = meshgrid(theta1, theta2);


% generisanje mreze vrednosti theta1 i theta2

X = l1 * cos(THETA1) + l2 * cos(THETA1 + THETA2);


% izracunavanje x koordinate

Y = l1 * sin(THETA1) + l2 * sin(THETA1 + THETA2);


% izracunavanje y koordinate

data1 = [X(:) Y(:) THETA1(:)]; % kreiranje x-y-theta1 skupa

data2 = [X(:) Y(:) THETA2(:)]; % kreiranje x-y-theta2 skupa

% Za sledeci kod je potrebno nekoliko minuta da pocne sa


radom:

fprintf('-->%s\n','Pocinje obuka prve ANFIS mreze. Potreban je


jedan minut u zavisnosti od sistema.')
anfis1 = anfis(data1, 7, 150, [0,0,0,0]); % obuka prve ANFIS
mreze

fprintf('-->%s\n','Pocinje obuka druge ANFIS mreze. Potreban je


jedan minut u zavisnosti od sistema.')

anfis2 = anfis(data2, 6, 150, [0,0,0,0]); % obuka druge ANFIS


mreze

x = 0:0.1:2; % x koordinata za validaciju

y = 8:0.1:10; % y koordinata za validaciju

% Vrednosti uglova |theta1| i |theta2| se dobijaju matematicki


iz x
% y koordinata koriscenjem inverzne kinematske fomule.

[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); % dobija se theta2

k1 = l1 + l2.*c2;

k2 = l2*s2;

THETA1D = atan2(Y, X) - atan2(k2, k1); % dobija se theta1


% |THETA1D| i |THETA2D| su promenljive koje cuvaju vrednosti
% |theta1| i |theta2| dobijaju se koriscenjem inverzne
kinematske formule.
%
% |theta1| i |theta2| vrednosti koje je predvidela obucena
anfis mreza
% i one su dobijene koriscenjem komande |evalfis| koja
ocenjuje FIS za
% date ulaze.
%
% Ovde se, |evalfis| koristi za pronalazenje FIS izlaza za iste
izlazne x-y
% vrednosti koje su ranije koriscene u inverznoj kinematskoj
formuli.

XY = [X(:) Y(:)];

THETA1P = evalfis(XY, anfis1); % theta1

%predvidjeno od strane anfis1

THETA2P = evalfis(XY, anfis2); % theta2 predvidjeno od strane


anfis2

% Sada se moze videti koliko su blizu FIS izlazi prema


% dobijenim vrednostima.
theta1diff = THETA1D(:) - THETA1P;
theta2diff = THETA2D(:) - THETA2P;

subplot(2,1,1);
plot(theta1diff);
ylabel('THETA1D - THETA1P','fontsize',10)
title('Dobijeni ugao theta1 - Pretpostavljeni ugao
theta1','fontsize',10)

subplot(2,1,2);
plot(theta2diff);
ylabel('THETA2D - THETA2P','fontsize',10)
title(' Dobijeni ugao theta2 - Pretpostavljeni ugao
theta2','fontsize',10)

%% Речник
% *ANFIS* - Адаптивно Неуро Фази Систем
Закључивања заснован на техници за
% аутоматско подешавање Sugeno-типа система
закључивања скупа
% података.
%
% *membership functions* - функција која
одређује степен у ком
% дати улаз припада скупу или се односи на
концепт.
%
% *input space* - то је термин који се
користи да дефинише опсег свих могућих
% вредности
%
% *FIS* - Фази Систем Закључивања (Fuzzy
Inference System). Уопштено име за систем
који користи
% фази резоновање за мапирање улазног
простора излазним простором.
%
% *epochs* - 1 epoch обуке представља једну
потпуну презентацију
% свих примера/тачака података/редова
обучених скупова података ка FIS.
% приказани су улази за сваки пример и
израчунати FIS излази
% који се упоређују са жељеним излазима да
би се израчунала грешка између
% њих. Параметри функције припадања се онда
подешавају
% да би смањили грешку између жељеног
излаза и текућег FIS излаза.

You might also like