implementacija nelinearnih algoritama upravljanja platformom s dva

100
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 324 Implementacija nelinearnih algoritama upravljanja platformom s dva stupnja slobode Grgo Čupić Zagreb, srpanj 2011.

Upload: dodang

Post on 07-Feb-2017

231 views

Category:

Documents


3 download

TRANSCRIPT

SVEUČILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 324

Implementacija nelinearnihalgoritama upravljanja platformom s

dva stupnja slobodeGrgo Čupić

Zagreb, srpanj 2011.

Zahvaljujem se svom mentoru prof. dr. sc. Stjepanu Bogdanu štomi je omogućio izradu ovog zanimljivog rada te što je svojim vodstvom, savjetimai utrošenim vremenom dao veliku potporu pri izradi istog. Posebna zahvala MajiŽaper na osmjehu na njenom licu dok je crtala 3D model sustava.

iii

Sadržaj

1. Uvod 11.1. Postojeća istraživanja na području problema loptice na platformi . 21.2. Opći i specifični ciljevi rada . . . . . . . . . . . . . . . . . . . . . 4

2. Analiza sustava 62.1. Matematički model loptice . . . . . . . . . . . . . . . . . . . . . . 72.2. Matematički model platforme . . . . . . . . . . . . . . . . . . . . 102.3. Matematički model zakrivljenosti plohe platforme . . . . . . . . . 142.4. Provjera ispravnosti i linearizacija matematičkog modela . . . . . 172.5. Utjecaj zakrivljenosti platforme na upravljanje . . . . . . . . . . . 202.6. Upravljanje po kutu zakrivljenosti plohe platforme pomoćnom uprav-

ljačkom petljom . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3. Realizirani sustav 253.1. Platforma i loptica . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2. Sklopovlje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4. Programska podrška 314.1. Grafičko korisničko sučelje . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1. Upravljački dio . . . . . . . . . . . . . . . . . . . . . . . . 324.1.2. Serijska veza . . . . . . . . . . . . . . . . . . . . . . . . . 354.1.3. Upravljanje igraćom palicom . . . . . . . . . . . . . . . . . 354.1.4. Zadavanje referentnog položaja loptice . . . . . . . . . . . 364.1.5. Iscrtavanje odziva . . . . . . . . . . . . . . . . . . . . . . . 37

4.2. Algoritam obrade slike . . . . . . . . . . . . . . . . . . . . . . . . 384.2.1. Kalmanov filtar . . . . . . . . . . . . . . . . . . . . . . . . 42

4.3. Programiranje korisničkog algoritma upravljanja . . . . . . . . . . 44

iv

5. Sinteza algoritma upravljanja 475.1. Truxal-Guillemin kompenzacijski regulator . . . . . . . . . . . . . 47

5.1.1. Sinteza algoritma upravljanja . . . . . . . . . . . . . . . . 495.2. Linearni kvadratični regulator (engl. Linear-quadratic regulator -

LQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.2.1. Sinteza algoritma upravljanja . . . . . . . . . . . . . . . . 53

5.3. Neizraziti (engl. fuzzy) regulator . . . . . . . . . . . . . . . . . . . 535.3.1. Sinteza algoritma upravljanja . . . . . . . . . . . . . . . . 55

6. Rezultati 596.1. Truxal-Guillemin kompenzacijski regulator . . . . . . . . . . . . . 60

6.1.1. Eksperiment pozicije . . . . . . . . . . . . . . . . . . . . . 626.1.2. Eksperiment kružnice . . . . . . . . . . . . . . . . . . . . . 636.1.3. Eksperiment pravca . . . . . . . . . . . . . . . . . . . . . . 646.1.4. Eksperiment kvadrata . . . . . . . . . . . . . . . . . . . . 65

6.2. Linearni kvadratični regulator (engl. Linear-quadratic regulator -LQR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666.2.1. Eksperiment pozicije . . . . . . . . . . . . . . . . . . . . . 686.2.2. Eksperiment kružnice . . . . . . . . . . . . . . . . . . . . . 696.2.3. Eksperiment pravca . . . . . . . . . . . . . . . . . . . . . . 706.2.4. Eksperiment kvadrata . . . . . . . . . . . . . . . . . . . . 71

6.3. Neizraziti (engl. fuzzy) regulator . . . . . . . . . . . . . . . . . . . 726.3.1. Eksperiment pozicije . . . . . . . . . . . . . . . . . . . . . 746.3.2. Eksperiment kružnice . . . . . . . . . . . . . . . . . . . . . 756.3.3. Eksperiment pravca . . . . . . . . . . . . . . . . . . . . . . 766.3.4. Eksperiment kvadrata . . . . . . . . . . . . . . . . . . . . 77

7. Rasprava 78

8. Zaključak 80

Literatura 82

A. Programska realizacija kompenzacijskog regulatora 87

B. Programska realizacija LQR regulatora 88

C. Programska realizacija neizrazitog (engl. fuzzy) regulatora 90

v

1. Uvod

Predmet ovog rada je izrada edukacijskog modela i upravljačkih algoritma za sus-tav loptice na nelinearnoj platformi izrađenoj u LARICS laboratoriju. Lopticakoja se pozicionira na platformi primjer je inherentno nestabilnog i nelinearnogsustava. Sustav loptice na platformi (engl. ball-plate system) u žarištu je istraži-vanja od prve pojave edukacijskih uređaja dostupnih na tržištu od kraja 1980ihgodina. Navedene karakteristike čine ovaj sustav odličnom podlogom za reali-zaciju edukacijskog modela. Mnoga su istraživanja na području automatskogupravljanja provedena upravo na općeprihvaćenom problemu upravljanja sustavaloptice na platformi.

Slika 1.1: 3D model korištene platforma s lopticom

Ovakvi sustavi mogu se susresti u energetici, kemijskoj, svemirskoj i drugimindustrijama. Platforme koje služe za pozicioniranje objekata susreću se u avion-skoj industriji kao simulatori leta, za održavanje vozila u automobilskoj industriji,za pozicioniranje satelita, za razne primjene u mostogradnji. Vjeran primjer je

1

Stewart platforma koja ima 6 stupnjeva slobode. Stewartova platforma se takokoristi u sklopu NASA-inog LIDS-a (Low Impact Docking System) koji služi zaupravljanje pristajanjem svemirskih letjelica u svemirske postaje.

Fizički sustav korišten u ovom radu sastoji se od platforme s dva stupnja slo-bode pokretane servomotorima. Na platformi se nalazi loptica koju je mogućepomicati u dva smjera manipulacijom platforme (Slika 2.6). Sustav loptice naplatformi inherentno nije linearan, no dodatni problem pri upravljanju stvarasama ploha platforme koja nije u potpunosti ravna što unosi dodatne nelinear-nosti. Rješavanje problema zakrivljenosti platforme jedan je od osnovnih ciljevaovog rada.

Rad obuhvaća postupke analize i sinteze navedenog sustava automatskog uprav-ljanja, simulacije provedene u Matlab Simulink okruženju te izradu programskeinfrastrukture na osobnom računalu koja, osim što implementira upravljanje narealnom sustavu, omogućava korisniku izradu i testiranje vlastitih algoritamaupravljanja bez upotrebe drugih programskih razvojnih alata. Povratna veza re-alizirana je web-kamerom s koje se obrađuje slika te dobiva točna pozicija lopticena platformi.

Kratka video prezentacija realiziranog sustava može se pronaći na sljedećojInternet adresi: http://www.youtube.com/watch?v=e1nrvpwmznY ili youtubepretragom: „Ball and Plate: Advanced Controller Design Testing System“. Uprezentaciji je korišten Truxal-Guillemin kompenzacijski algoritam upravljanja.

1.1. Postojeća istraživanja na području problemaloptice na platformi

Sustav loptice na platformi postao je popularni predmet istraživanja mnogihznanstvenika na polju automatskog upravljanja krajem 1980ih pojavom edu-kativnih modela na tržištima diljem svijeta. Mnogi znanstveni članci bave seproblemom upravljanja loptice na platformi. Pristupi problemu, kao i korištenialgoritmi, razlikuju se od autora do autora. Ipak mogu se naći slična rješenja po-vratne veze, većina autora koji su implementirali algoritme na stvarnom sustavukao povratnu vezu koristili su sliku s kamere. Rijetko koji autori odlučili su seza vlastitu izradu platforme, većina ih koristi „HUMUSOFT CE151 Ball&PlateApparatus“ edukacijski model ili BPVS-JLU-II razvijen na Fakultetu komunika-cijskog inženjerstva Sveučilišta Jilin u Kini. Kao upravljački algoritmi koriste se

2

klasične strukture regulatora kao i moderni napredni algoritmi upravljanja.Slijede različiti objavljeni radovi s temom upravljanja loptice na platformi te

specifičnosti kod izvedenog rješenja:

– autori u [1] koriste klasični PID/PSD regulatora te Humusoftov CE151edukacijski model;

– autori u [2] realizirali su povratnu vezu korištenjem ekrana osjetljivog nadodir te klasičnog PID regulatora u HID strukturi. Pokazano je da jeekran osjetljiv na dodir gotovo najbolji izbor za povratnu vezu zbog ka-rakteristika koje garantiraju veliku točnost i preciznost. Ovakvo rješenjeiziskuje velike financijske izdatke;

– autori u [3] projektirali su neizraziti (engl. fuzzy) regulator realiziran ne-uronskom mrežom te optimiziran genetskim algoritmom (GA-FNNC);

– autori u [4] predlažu kaskadni sustav upravljanja s aktivnim regulatoromporemećajne veličine (ADRC) dok u [5] nelinearni kaskadni regulator. Ko-rišten je kineski BPVS-JLU-II;

– autori u [6] koriste supervizorski neizraziti (engl. fuzzy) regulator sa dvasloja upravljanja, donji sloj sastoji se od SIRM fuzzy pravila a gornji slojprovodi nadzor nad brzinom i akceleracijom loptice. Korišten je kineskiBPVS-JLU-II;

– autori u [7] predlažu regulator projektiran po ISE optimizacijskom krite-riju. Koristi se Humusoft CE151 edukacijski model;

– autori u [8] izradili su nelinearni obzerver brzine na kineskom BPVS-JLU-II,

– autori u [9] predlažu PID kontroler sa neizrazitim (engl. fuzzy) supervizo-rom koristi se vizualna povratna veza te platforma vlastite izrade.

Iz navedenog se vidi da rješenje problema nije jednoznačno ali da različiti pris-tupi rješavanju problema dovode do jednako kvalitetnih rezultata. Navedeni ra-dovi nisu razmotrili realizaciju LQR ili MPC upravljačkih algoritama koji bi biliadekvatni za ovakav sustav. Problem upravljanja lopticom na platformi bio jepredmet istraživanja u Laboratoriju za robotiku i inteligentne sustave upravlja-nja (LARICS). Sva istraživanja izvedena su korištenjem LARICS platforme s dvastupnja slobode koja je izrađena za ovu namjenu.

Upravljanje P regulatorima u kaskadnoj strukturi upravljanja izvedeno je u[10]. Kao programski alat koristio se Matlab Simulink a povratna veza realizi-

3

rana je web-kamerom. Autor u [11] provodi dekompoziciju procesa te upravljanjeviševarijabilnim regulatorom, programski alat također je Matlab Simulink te po-vratna veza web-kamerom. Autor u [12] koristi neizraziti (engl. fuzzy) regulatorrealiziran na mikroprocesorskom Gumstix sustavu uz vizualnu povratnu vezu sračunala. Autor u [13] realizira i vizualnu povratnu vezu i upravljački algoritamna mikroprocesorskom Gumstix sustavu.

Ovaj rad nastavak je istraživanja na području problema loptica na platformite ima višestruke konačne ciljeve navedene u Poglavlju 1.2.

1.2. Opći i specifični ciljevi rada

Korišteni sustav loptice s platformom sastoji se od loptice te nelinearne platformes dva stupnja slobode pokretane dvaju servomotorima. Platforma nema ravnuploha već izvitoperenu u smjeru slobodnog vrha. Zakrivljenost plohe platformepredstavlja dodatan problem pri upravljanju pošto kretanje loptice direktno ovisii o zakrivljenosti. Sustav loptice na platformi inherentno je nelinearan, nestabilani dinamičan. Cilj ovog rada je projektirati algoritme upravljanja koji će ovakavsustav prvenstveno stabilizirati te zatim upravljati pozicijom loptice na platformis ciljem izvođenja različitih tipova trajektorija.

Važniji cilj, koji proizlazi iz potrebe upravljanja ovakvim sustavom, realiza-cija je odgovarajuće programske i sklopovske infrastrukture koja će omogućitiupravljanje i ispitivanje novih tipova algoritama na realnom sustavu. Sukladnociljevima u radu izrađena je Windows aplikacija koja realizira osnovne funkci-onalnosti: hvatanja pozicije loptice na platformi preko slike dobivene s web-kamere, upravljanja radom servomotora, ručnog upravljanje pomoću palice zaigru (engl. Joystick), izvođenja projektiranog upravljačkog algoritma, zadava-nja reference tj. trajektorije gibanja kuglice, iscrtavanja odziva sustava (pozicijeloptice, upravljačkih signala) te najvažnija funkcija omogućavanje unošenja i po-kretanja novog algoritma upravljanja koji korisnik može definirati i oblikovati povlastitim željama tj. potpuno je slobodan u stvaranje funkcije upravljanja.

Ovako izrađen sustav daje potpuno neovisnu, samostalnu podlogu da se kori-šteni sustav loptice na platformi koristi kao edukacijski model koji može služitiza učenje ili ispitivanje kako klasičnih tako i naprednih algoritama upravljanja.

Rad je strukturiran u 7 logičkih cjelina u obliku 7 poglavlja. Poglavlje 2 te-matizira modeliranje sustava. Izvedeni su matematički modeli sustava, adresiranje problem zakrivljenosti platforme te je ponuđeno rješenje u obliku pomoćne

4

upravljačke petlje. Poglavlje 3 opisuje korišteni fizički dio sustava koji se sastojiod platforme, loptice i potrebnog sklopovlja. U Poglavlju 4 opisana je realizi-rana programska podrška koja se sastoji od grafičko korisničkog sučelja, algo-ritma obrade slike te programiranja korisničkog algoritma upravljanja. Poglav-lje 5 objašnjava projektiranje 3 različita algoritma upravljanja: Truxal-Guilleminkompenzacijski regulator, linearni-kvadratični regulator (LQR) te neizraziti regu-lator. Poglavljem 6 prikazani su rezultati dobiveni eksperimentima na stvarnomsustavu korištenjem tri algoritma upravljanja. Rasprava rezultata s prijedlozimapoboljšanja dana je Poglavljem 7, dok su izvedeni zaključci prikazani Poglavljem8.

5

2. Analiza sustava

Osnova rješavanja problema upravljanja sustavom loptice na platformi je izradamatematičkog modela (analiza). Jednadžbe koje matematički opisuju ponašanjesustava realizirane su u Matlab Simulinku pomoću skupa blokova koji će ih opisi-vati te ovisno o ulaznim varijablama proračunavati upravljački signal te pozicijuloptice na platformi.

Slika 2.1: Shematski prikaz platforme s servomotorima

Sustav razmatran u ovom radu sastoji se od platforme s dva servomotora odkojih svaki zakreće svoj kut platforme (Slika 2.1). Platforma je učvršćena u tritočke, svaka na jednom vrhu platforme. Četvrti vrh nije učvršćen ali postojivodilica koja prilikom gibanja platforme osigurava pomicanje četvrtog ugla plat-forme samo po okomitoj osi. Okretanjem servomotora platforma se pomiče oko xi y osi čime se može okarakterizirati dvaju stupnjevima slobode. Zadatak sustavaupravljanja je odrediti kut za koji se platforma mora pomaknuti kako bi se lopticadovela u željeni položaj ili kako bi loptica pratila zadanu trajektoriju.

6

Matematički modeli sustava izvedeni su u podsustavima: matematički modelloptice dan Poglavljem 2.1 matematički model platforme dan Poglavljem 2.2,matematički model zakrivljenosti plohe platforme dan Poglavljem 2.3.

2.1. Matematički model loptice

Gibanje loptice po platformi opisano je matematičkim jednadžbama. Prilikomkonstrukcije modela u obzir se uzimaju sile koje djeluju na lopticu i uzrokujunjezino gibanje po platformi.

Translacijsko gibanje loptice po platformi uzrokovano je nagibom platforme igravitacijskom silom koja djeluje na lopticu. Loptica se može pokazati kao tijelona kosini koje počinje rotacijsko gibanje u smjeru pada kosine. Shematski prikazdan je Slikom 2.2.

Slika 2.2: Shematski prikaz loptice na platformi

Kut α(t) označava nagib platforme u odnosu na vodoravnu os. Vrijednost ω1

predstavlja kutnu brzinu loptice dok vrijednost ml predstavlja masu loptice kojaiznosi 0.03 kg. Pomak odnosno pozicija loptice po x osi na platformi označenaje duljinom X. Na lopticu djeluju dvije sile; sila u smjeru gibanja mgsinα tesila trenja koja djeluje suprotno smjeru gibanja loptice na platformi, označava sevektorom f . Ekvivalentno vrijedi i za parametre u smjeru y osi s razlikom oznakekuta platforme u odnosu na vodoravnu os: β(t).

7

Translacijska sila koja djeluje ne lopticu u smjeru x osi definirana je sa:

Ftx = mlgsin(α) (2.1)

gdje je ml masa loptice iznosa ml = 0.03 kg, a g je gravitacijska konstanta iz-nosa g = 9.81m/s2. Trenje između loptice i platforme uzrokuje rotiranje loptice.Ukoliko ne bi postojalo trenje između loptice i platforme, loptica bi klizila po plat-formi bez rotiranja oko vlastite osi. Moment je, shodno navedenom, izazvan silomtrenja koja je suprotnog smjera od smjera gibanja loptice po platformi. Kako seu nekom trenutku loptica počinje gibati po platformi, postoji moment koji seopire sili trenja. To je moment inercije loptice. Korištenjem drugog Newtonovogzakona za objekt u gibanju dobije se slijedeći izraz za navedeni slučaj:

Mr = RFtr = J · a = Jx

R(2.2)

gdje je: R radijus loptice iznosa R = 0.0115m, Ftr – sila trenja, a – akceleracijaloptice, J – moment inercije loptice. Moment inercije loptice je određen izrazom:

J = 25mlR

2 (2.3)

uvrštavanjem 2.2 u 2.3 dobije se:

Frx = 25mlx (2.4)

Opisane su sve sile koje djeluju na lopticu koja se giba po platformi i koje opisujugibanje slijedećom jednadžbom:

mlx =∑

F = Ftx − Frx = mgsin(α)− 25mlx (2.5)

Nakon preuređivanja jednadžbe 2.5 dobije se jednostavniji izraz za akceleracijuloptice:

x = 57gsin(α) (2.6)

Izvod jednadžbi 2.1 do 2.6 vrijedi i za gibanje loptice po platformi u smjeru y

osi. Razlike su u označavanju ulaza i izlaza, odnosno nagiba platforme i pomakaloptice na platformi. Nagib platforme u smjeru y-osi označen je kutom β, dok jeizlaz položaj loptice na y osi Y .

U model gibanja loptice uvrštava se i model trenja. Trenje je modelirano iopisano klasičnim modelom trenja, čiji je oblik dan Slikom 2.3.

8

Slika 2.3: Model trenja

Model uključuje Coulombovo trenje:

Fc = µFN (2.7)

i viskozno trenje:Ffv(v) = d · v (2.8)

Minimalna sila koju loptica mora savladati da bi počela svoje gibanje po plat-formi, neovisno o smjeru gibanja, određena je statičkim trenjem Fs. Matematičkiizraz za cjelokupni model trenja dan je izrazom:

Ftr =∣∣∣∣FC + (FS − FC) e−( v

vs)δ∣∣∣∣ sgn(v) (2.9)

Tablicom 2.1 dane su vrijednosti parametara modela trenja.

Tablica 2.1: Parametri modela trenja

Parametar OpisFC = 1.9935 · 10−7 Coulombovo trenjeFS = 9.9675 · 10−8 statičko trenjevs = 0.05m/s Stribeckova brzina vrtnjeδ = 1 koeficijentd = 2 koeficijent viskoznog trenja

9

Stribeckova brzina vrtnje označava područje brzine gibanja loptice po plat-formi za koje vrijedi Stribeckov efekt koji dovodi do nelinearne promjene, odnosnonekontinuiranog pada sa statičkog trenja na Coulombovo trenje.

Model loptice i trenja izrađen u Simulinku x os prikazan je Slikom 2.4. Pod-sustav kao ulaz prima nagib platforme a kao izlaz daje trenutnu poziciju lopticena platformi.

Slika 2.4: Simulink model loptice i trenja

2.2. Matematički model platforme

Osnovni zadatak matematičkog modela platforme je da, ovisno o zakretu osovineservomotora proračunava nagib platforme u odnosu na vodoravnu os. U stvarnostiploha platforme nije savršeno ravna ploha već je zakrivljena te je zbog toga nagibplatforme različit u svakoj točki platforme. Iz tog razloga matematički modelplatforme razložen je na dva podsustava.

Prvi podsustav matematičkog modela platforme opisuje nagib platforme zaslučaj kada bi platforma bila savršeno ravna i kruta ploha. Prvi podsustav u obziruzima samo zakret osovine servomotora. Drugi podsustav uzima u obzir trenutnipoložaj loptice na platformi te na osnovu njega proračunava odgovarajući nagibplatforme u smjeru x i y osi, uzimajući u obzir zakrivljenost platforme. Izlazniproračun iz drugog podsustava predstavlja stvarnu nagib platforme.

U nastavku je dan izvod ovisnosti nagiba savršeno ravne krute platforme uodnosu na vodoravnu os u ovisnosti o zakretu osovine servomotora. Pri izvoduse uvode određena pojednostavljenja. Pretpostavljeno je da zakret jednog ser-vomotora uzrokuje podizanje samo jedne stranice platforme tj. da se pojedinimservomotorom upravlja gibanjem loptice po jednoj osi. Zbog nesavršenosti meha-

10

ničke konstrukcije platforme navedeno ne odgovara stvarnosti. U stvarnosti sustavje spregnut te se zakretom pojedinog servomotora utječe na gibanje loptice poobje osi.

Slikom 2.5 shematski su prikazane i naznačene sve relevantne fizikalne veličineza proračun.

Slika 2.5: Zakret servomotora i platforme

Vrijednosti parametara danih Slikom 2.5 dani su Tablicom 2.2

Tablica 2.2: Parametri platforme i bregastog mehanizma

Parametar Opisr = 0.02m polumjer servomotoral = 0.1m duljina koljena motornog mehanizmaϕ(t)) rad, kut zakreta motoraωm(t) rad/s kutna brzina motoraα(t),β(t) rad kutevi zakreta platforme oko x-osi, odnosno y-osis(t)m put koji platforma prijeđe pri zakretu za neki kuta = 0.3m duljina i širina platforme

11

Za određivanje kinematike i dinamike motora i platforme potrebno je pro-matrati rotaciju platforme za kut α(t) oko x odnosno istovjetno za kut β(t) okoy osi. Gibanje mehanizma se promatra od trenutka kada je platforma u sred-njem horizontalnom položaju, odnosno kada je kut ϕ(t) = 0. Tada je put s(t)koji platforma prevali pri pomicanju jednak nuli. Dužina AO može se izrazitijednadžbom:

AO =√l2 − r2 (2.10)

U vremenu dt motor se okrene za kut ϕ(t) = dω/dt, a vrh koljena motora sepozicionirati u točku A′. Iz Slike 2.5. jasno je da je platforma prevalila put:

ds = A′O − AO (2.11)

U svrhu lakšeg modeliranje platforme uvode se točke B i C, te se dobivaju dvapravokutna trokuta 4A′BC i 4BCO. Prevaljeni put se može izraziti jednadž-bom:

s(t) = A′B +BO − AO (2.12)

Budući da vrijedi:A′B = lcos[ψ(t)]BO = rcos[γ(t)]

(2.13)

Jednadžba 2.12 može se pisati kao:

s(t) = lcos[ψ(t)] + rcos[γ(t)]−√l2 − r2 (2.14)

Potrebno je izraziti ovisnost puta koji prevaljuje platforma s(t) i kuta motoraϕ(t), jednadžba 2.14 postaje:

s(t) = lcos[ψ(t)] + rcos[π/2− ϕ(t)]−√l2 − r2 (2.15)

Drugi član jednadžbe 2.15 može se raspisati kao:

cos[π/2− ϕ(t)] = cos(π/2)cos[ϕ(t)] + sin(π/2)sin[ϕ(t)] = sinϕ(t) (2.16)

Kako bi se eliminirao kut ψ(t), odsječak BC se izražava kao:

BC = lsin[ψ(t)] = rsin[γ(t)] = rsin[π/2− ϕ(t)] = rcos[ϕ(t)] (2.17)

Iz čega proizlazi:sin[ψ(t)] = rcos[ϕ(t)]

l(2.18)

12

Iz jednadžbe 2.18 nadalje slijedi:

cos[ψ(t)] =√

1− sin2[ψ(t)] =√

1− (rl)2cos2[ϕ(t)] (2.19)

Uvrštavanjem jednadžbi 2.16 i 2.19 u jednadžbu 2.15 dobiva se:

(2.20)s(t) = l

√[1− (r

l)2cos2[ϕ(t)]]] · sign{sin[ϕ(t)]}

+ rsin[ϕ(t)]−√

(l2 − r2)sign{sin[ϕ(t)]}

U jednadžbi 2.20 pojavljuje se izraz sign{sin[ϕ(t)]} jer rješenja dvaju korijena√[1− ( r

l)2cos2[ϕ(t)]] i

√l2 − r2 poprimaju pozitivne i negativne vrijednosti. Kada

bi se uzimale samo pozitivne vrijednosti, put koji platforma prevali do krajnjeggornjeg položaja bio bi veći od puta koji platforma prevali do krajnjeg donjegpoložaja, što ne odgovara istini. Ta dva puta moraju biti iste veličine, ali suprot-nog predznaka. Budući da put s(t) poprima negativne vrijednosti za vrijednostikuta motora ϕ(t) iz intervala ϕ(t) ∈ [0,−ß], znači da predznak ova dva korijenamora biti negativan. Na intervalu ϕ(t) ∈ [0,−ß]] negativne vrijednosti ima sinusovih kuteva, te je zbog izloženog u jednadžbu ubačena funkcija sign. Izraz 2.19pojednostavljuje se koristeći relaciju:

√1− x = 1− x

2 −x2

8 − · · · (2.21)

te se dobije: √1−

(r

l

)2cos2[ϕ(t)] ≈ 1− 1

2

(r

l

)2cos2[ϕ(t)] (2.22)

Ako se na izraz 2.22 primijeni trigonometrijska relacija:

cos2[ϕ(t)] = 12[1 + cos2[ϕ(t)]

](2.23)

dobiva se konačni izraz za put koji platforma prevali zakretom motora za kutϕ(t):

(2.24)s (t) = rsinϕ (t) + l

{1− 1

4

(r

l

)2[1 + cos2ϕ (t)]

}[sign (sinϕ (t))]

−√l2 − r2 · sign [sinϕ (t)]

Put s(t) može se izraziti u ovisnosti o zakretu platforme oko x i y osi:

Sx (t) = asin[α (t)],Sy (t) = asin[β (t)]

(2.25)

13

gdje je a = 0.3m duljina, odnosno širina platforme.Iz izraza 2.24 i 2.25 slijede izrazi za proračun nagiba platforme oko x osi,

odnosno y osi.

α (t) = arcsin

(Sx (t)a

)(2.26)

β (t) = arcsin

(Sy (t)a

)(2.27)

Matematički podsustav platforme opisan jednadžbama 2.24 do 2.27 odnosi se naslučaj savršeno ravne krute platforme. Model savršeno ravne krute platformeizrađen u Simulinku dan je Slikom 3.6.

Slika 2.6: Simulink model savršeno ravne i krute platforme

2.3. Matematički model zakrivljenosti plohe plat-forme

Kao što je navedeno, korištena platforma u stvarnosti nije savršeno kruta i ravnaveć je izvitoperena u smjeru slobodnog vrha. Iz tog razloga izrađen je matema-tički model neravnina na platformi. Dobar matematički model sustava direktnouvjetuje kvalitetu upravljanja na stvarnom sustavu.

Platforma je učvršćena u tri točke dok četvrti vrh nije učvršćen. Dva rubaplatforme, koja se nalaze između tri učvršćena vrha platforme su ravna, dok supreostala dva savinuta u smjeru četvrtog, neučvršćenog vrha platforme. Savi-nuti rubovi platforme opisani su parabolnim jednadžbama. Maksimalni progib

14

platforme u slobodnom vrhu platforme, u odnosu na fiksni vrh platforme, iznosi0.008m, odnosno 8mm. Izgled plohe koja modelira platformu dan je Slikom 2.7.

Slika 2.7: Ploha koja opisuje platformu

Ploha platforme opisana je sljedećom jednadžbom:

z = ax2y + by2x+ c(x+ y −√x2 + y2) (2.28)

Kako bi se dobio nagib platforme u nekoj točki u smjeru x, odnosno y osi, po-trebno je pronaći derivaciju jednadžbe platforme u toj točki. Derivacija jednadžbe2.28 u smjeru x-osi, odnosno y-osi dana je slijedećim jednadžbama:

∂z

∂x= 2axy + by2 + c

(1− x√

x2 + y2

)(2.29)

∂z

∂y= 2bxy + ax2 + c

(1− y√

x2 + y2

)(2.30)

Postavlja se sustav jednadžbi kako bi se odredili koeficijenti a, b i c kojima bi seu potpunosti numerički odredila jednadžba platforme. Vrijede slijedeće relacije:

∂z∂xx=y=0.3m = ∂z

∂y x=y=0.3m= −0.003 rad

Zx=y=0.3m = −0.008m(2.31)

Nakon uvrštavanja x = 0.3 i y = 0.3 u 2.28, 2.29 i 2.30, te uvažavanja uvjeta2.31, dobije se sustav jednadžbi:

0.18a+ 0.09b+ 0.292893c+ 0.003 = 00.09a+ 0.18b+ 0.292893c+ 0.003 = 00.027a+ 0.027b+ 0.175736 + 0.008 = 0

(2.32)

15

Rješavanjem navedenog sustava, dobiju se iznosi koeficijenata a,b i c:

a = b = 0.0574073c = −0.0631629

(2.33)

Kut zakrivljenosti plohe platforme u određenoj točki dan je sljedećim izrazom:

α = arctg

(∂z

∂x

)(2.34)

β = arctg

(∂z

∂y

)(2.35)

Simulacijski model izrađen u Matlab Simulinku za model parabolne plohe plat-forme dan je Slikom 2.8.

Model koji računa zakrivljenost platforme kao ulaz prima: kutove koji suizlaz podsustava s ravnom platformom te trenutnu poziciju loptice koju računapodsustav s matematičkim opisom loptice. Na osnovu trenutne pozicije lopticete uz matematički model neravnina na platformi računa se kut zakrivljenostiplatforme. Vrijednost kuta zakrivljenosti platforme dodaje se vrijednosti kutaza ravnu platformu i dobije se stvarni kut trenutnog nagiba loptice. Podsustavkao izlaz daje dva kuta: jedan koji predstavlja pravi kut nagiba loptice te drugikoji predstavlja nagib zbog neravnina. Potonji se koristi za pomoćnu upravljačkupetlju što će biti izneseno u Poglavlju 2.6. U modelu koji računa zakrivljenostimplementirano je zaustavljanje simulacije ukoliko loptica ispadne s platforme (tj.ukoliko vrijednost pozicije nije unutar intervala 0.0 do 0.3m).

16

Slika 2.8: Simulink model parabolne plohe platforme

2.4. Provjera ispravnosti i linearizacija matema-tičkog modela

Realizirane matematičke modele sustava potrebno je provjeriti. Ispitivanja suizvršena za model savršeno ravne i krute plohe te za model zakrivljene ploheplatforme. Ulaz u sustav je nula, odnosno, pretpostavlja se da je platforma u vo-doravnom položaju te da sustav radi u otvorenoj petlji. Početna pozicija lopticeza oba pokusa namještena je na (x = 0.05 m, y = 0.1 m). Simulink simulacijskashema korištena kod ispitivanja dana je Slikom 2.9. Za slučaj potpuno ravneplatforme u Simulink model nije bio uključen blok koji opisuje zakrivljenost plat-forme.

Odzivi simulacijskog ispitivanja za pozicije loptice na platformi dani su Slikom2.10. Na lijevoj slici primjećuje se samo jedna točka na grafu (0.05 ,0.05 ) štopokazuje da loptica stoji stabilno u toj točki. Rezultat je očekivan za ravnuplatformu, bez pobude loptica stoji mirno na početnoj poziciji. Pokazana jepotpuna ispravnost matematičkog modela za ravnu platformu.

Desnom slikom dan je odziv s uključenim modelom zakrivljenosti plohe plat-forme. Loptica se giba iz početne pozicije prema rubu platforme zbog činjenice da

17

nije potpuno ravna. Rezultat je očekivan te potvrđuje ispravnost matematičkogmodela zakrivljenosti plohe platforme.

Slika 2.9: Simulink simulacijska shema za provjeru ispravnosti matematičkog modela

0 0.1 0.20

0.05

0.1

0.15

0.2

0.25

0.3Ravna platforma

x [m]

y [m]

0 0.1 0.20

0.05

0.1

0.15

0.2

0.25

0.3Zakrivljena platforma

x [m]

y [m]

Slika 2.10: Simulacijski odzivi pozicije loptice na platformi

18

Za potrebe sinteze regulatora potrebna je prijenosna funkciju sustava tj. po-trebno ga je linearizirati. Proces linearizacije dug je i računski zahtjevan te jezbog jednostavnosti linearizacija izvršena korištenjem Simulinku alata „Controland Estimation Tools manager“.

Zakret platforme odabran je kao ulazni signal, pozicija loptice kao izlaz teje linearizacija izvedena u otvorenoj petlji. Linearizacija je izvedena oko radnetočke (x = 0.15 m, x = 0.15 m) korištenjem modificirane Simulink simulacij-ske sheme dane slikom 2.9. Provedenom linearizacijom dobivena je prijenosnafunkcija sustava tj. procesa:

G(s) = −0.4671s(s+ 2) (2.36)

Prijenosna funkcija 2.36 provjerena je simulacijom korištenjem Simulinka. Sli-kom 2.11 dana je usporedba odziva lineariziranog i stvarnog modela na istu po-budu. Vidi se da linearizirana prijenosna funkcija opisuje ponašanje sustava sdovoljnom točnošću.

0 1 2 3 4 5 6 7 80

0.05

0.1

0.15

0.2

0.25

0.3

t [s]

x [m]

Stvarni model

Linearizirani model

Slika 2.11: Usporedba lineariziranog modela sa stvarnim

19

2.5. Utjecaj zakrivljenosti platforme na uprav-ljanje

Ploha platforme nije u potpunosti ravna i kruta već je zakrivljena parabolnomplohom u smjeru slobodnog vrha kao što je opisano u Poglavlju 2.3. Kako bise uvidio utjecaj zakrivljenosti na kvalitetu upravljanja izvedene su simulacijeupravljanja sustavom jednostavnim P regulatorom. Upravljački krug zatvorenje pozicijom loptice za x i y os (izlaz i povratna veza) te zakretom servomotoraza svaku os (upravljana veličina). P regulator implementira se kao pojačanjeu zatvorenom upravljačkom krugu te se koristi za stabiliziranje procesa prvogreda. Pojačanje regulatora određeno je eksperimentalnom metodom pokušaja ipogreške (engl. trial-and-error) na modelu bez zakrivljenosti. Najbolje ponaša-nje sustava dobiveno je za iznos pojačanja -6. Slikom 2.12 dana je korištenasimulacijska shema.

Slika 2.12: Simulink simulacijska shema za upravljanje P regulatorom

Kao referentni signal u prvom slučaju odabrana je sinusna pobuda oblikar(t) = 0.1sin(1/5t+π/2)+0.15 za x os, odnosno r(t) = 0.1sin(1/5t)+0.15 za y os.Ta dva signala predstavljaju kružnicu s centrom u (0.15m, 0.15m) te radijusomr = 0.1 m. Početna pozicija loptice zadana je (X = 0.15 m,Y = 0.15 m). Udrugom slučaju referentni signal određen je tako da opisuje kvadrat s vrhovima

20

u (0.1 m,0.1 m) (0.2 m,0.1 m) (0.2 m,0.2 m) (0.1 m,0.2 m). Slikom 2.13 danisu simulacijski odzivi. Iz odziva se primjećuje značajan utjecaj zakrivljenostiplatforme na kvalitetu upravljanja. Loptica ne izvodi zadane trajektorije većsu one pomaknute prema neučvršćenom vrhu platforme. Pokazano je da se priprojektiranju algoritma upravljanja zakrivljenost platforme mora uzeti u obzirinače kvaliteta upravljanja neće biti zadovoljavajuća.

P regulator − simulacija kruznice i kvadrata

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 2.13: Simulacijski odzivi kružnice i kvadrata korištenjem P regulatora

21

2.6. Upravljanje po kutu zakrivljenosti plohe plat-forme pomoćnom upravljačkom petljom

U Poglavlju 2.5 pokazano je da odzivi sustava nisu zadovoljavajući zbog utjecajazakrivljenosti plohe platforme. Da bi odzivi sustava imali zadovoljavajuću kva-litetu, zakrivljenost se mora uzeti u obzir pri sintezi algoritma upravljanja. NaSlici 2.14 dan je shematski prikaz zakrivljenosti plohe platforme s lopticom.

Slika 2.14: Shematski prikaz zakrivljenosti plohe platforme s lopticom

Platforma je udubljena te loptica dobiva ubrzanje čak i kad je platforma upotpuno horizontalnom položaju. Na Slici 2.14 punom linijom označena je plat-forma kakva je u stvarnosti. Da bi se izbjegli utjecaji neravnina uvodi se uprav-ljanje po kutu zakrivljenosti plohe platforme. Pomoćna upravljačka petlja okrećeplatformu za kut zakrivljenosti plohe platforme ali u suprotnom smjeru uz eks-perimentalno određeno pojačanje. Takvim upravljanjem platforma se linearizirate ona ima oblik ravne isprekidane crte na Slici 2.14.

22

Slika 2.15: Simulink simulacijska shema s pomoćnom upravljačkom petljom i P regu-latorom

Kao što se primjećuje iz simulacijske sheme na Slici 2.15 pomoćnom upravljač-kom petljom izvedeno je upravljanje kutom zakreta platforme s obzirom na kutzakrivljenosti plohe platforme uz pojačanje k3. Pojačanje k3 određeno je ekspe-rimentalno te ono iznosi k3 = −14.7931. Ideja upravljanja po kutu zakrivljenostiplohe platforme intuitivna je i jednostavna. Osnova ovakvog upravljanja čini do-bro razrađen matematički model zakrivljenosti plohe platforme. Iako je rješenjeupravljanja kuta zakreta motora, a time i kuta nagiba platforme po kutu zakriv-ljenosti neravnina jednostavno, kvaliteta upravljanja značajno je poboljšana štose primjećuje iz simulacijskih odziva danim Slikom 2.16.

Upravljana veličina (pozicija) dobro prati referentnu veličinu uz malo faznokašnjenje. Primjećuje se značajan utjecaj pomoćne upravljačke petlje na kvalitetuupravljanja sustavom. Upravljana veličina tj. pozicija loptice ima nadvišenje štoje rezultat korištenja jednostavnog P regulatora i dinamike sustava.

Uzevši u obzir navedeno može se ustvrditi da pomoćna upravljačka petlja po

23

kutu zakrivljenosti plohe platforme rješava problem zakrivljenosti platforme usimulacijskom okruženju.

P regulator sa pomocnom petljom − simulacija kruznice i kvadrata

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 2.16: Simulacijski odzivi kružnice i kvadrata korištenjem P regulatora i pomoćneupravljačke petlje

24

3. Realizirani sustav

Esencijalni dio ovog rada predstavlja izrada infrastrukture koja se očituje u pro-gramskoj i sklopovskoj podršci za implementaciju i provjeru simuliranih algori-tama upravljanja na stvarnom sustavu. Bitna odlika realiziranog sustava je pot-puna samostalnost, može se koristiti na bilo kojem osobnom računalu s Windowsoperativnim sustavom. Na osobno računalo postavljaju se minimalni zahtjevi,mora imati RS 232 serijsko sučelje te 2 USB priključka. Ne postavlja se zahjtevvelike procesorske moći pošto se kod izrade sustava veliku pozornost pridavalojednostavnosti i brzini korištenih algoritama. Ovakav sustav predstavlja odličanedukacijski model za učenje i testiranje klasičnih i naprednih algoritama uprav-ljanja. Načelna shema realiziranog sustava dana je Slikom 3.1.

Sustav se sastoji od: platforme pokretane dvama servomotorima, web-kamerompostavljenom okomito iznad platforme, kontrolerom za servomotore, osobnog ra-čunala na kojem se izvodi Windows aplikacija te igraća palica (engl. Joystick)koja služi za ručno upravljanje.

Glavna aplikacija izvodi se na osobnom računalu s Windows operativnim sus-tavom. Povratna veza sustava ostvaruje se preko web-kamere koja je na računalospojena preko USB sučelja. Glavna aplikacija hvata sliku s kamere te iz nje iz-vlači informaciju o trenutnoj poziciji loptice na platformi. Istovremeno, u glavnojaplikaciji izvodi se upravljački algoritam koji na temelju razlike željene (tj. refe-rentne) i stvarne pozicije kuglice računa odgovarajuće zakrete servomotora kakobi kuglica dostigla željenu tj. referentnu poziciju. Informacija o zakretu šalje sepreko serijske veze kontroleru. Kontroler, na čije izlaze su spojeni servomotori, naosnovu podataka primljenih preko serijske veze šalje upravljačke signale servomo-torima. Servomotori se zakreću za odgovarajuću vrijednost te uzrokuju promjenukuta nagiba platforme. Promjenom kuta nagiba platforme mijenjaju se sile kojedjeluju na lopticu te se ona uslijed tih sila giba po platformi. Promjenu pozicijekuglice registrira kamera te se opisani proces ponavlja sve dok je omogućen uglavnoj aplikaciji.

25

Slika 3.1: Shematski prikaz realiziranog sustava

3.1. Platforma i loptica

Fizički dio sustava sastoji se, kao što je navedeno, od nelinearne platforme po-kretane servomotorima, kontrolera za servomotore te web-kamere.

Platforma, prikazana Slikom 3.2, izrađena je od crnog, plastičnog, sjajnogmaterijala. Ima oblik kvadrata dimenzija 0.3X0.3 m. Fiksni vrh platforme uč-vršćen je zglobnim mehanizmom koji platformi omogućava podizanje i spuštanjeoko točke vrha platforme. Učvršćeni vrh predstavlja ishodište koordinatnog sus-tava pozicije loptice na platformi. Vrh na suprotnom kraju slobodan je te senesmetano spušta i diže oko metalne vodilice koja služi kao stabilizator gibanjaplatforme. Preostala dva kraja platforme pričvršćena su na vratilo servomotorapreko bregastog mehanizma koji pretvaraju rotacijsko gibanje vratila servomotora(pogonski član) u translacijsko gibanje platforme (vođeni član).

26

Slika 3.2: Platforma s lopticom i konzolom s web-kamerom

Ploha platforme uslijed korištenja i gibanja loptice po njoj poprimila je ošte-ćenja koja se očituju u sitnim rupicama i udubinama koje stvaraju probleme priupravljanju. Uslijed nesavršene mehaničke konstrukcije platforme, te plastičnogmaterijala od kojeg je izrađena, platforma nije savršeno ravna i kruta ploha većje savinuta po sredini u smjeru slobodnog vrha platforme. Savinutost platformeuzeta je obzir pri analizi sustava te je i modelirana plohom parabolnog oblika štoje pokazano u Poglavlju 2.3.

Na površini platforme giba se loptica. Korištena je metalna loptica maseml = 0.03 kg te polumjera R = 0.0115m. Izrazito bitna karakteristika korištene

27

loptice je njena glatka površina. Glatkoća površine loptice direktno utječe nakvalitetu upravljanja.

3.2. Sklopovlje

Platformu pokreću dva Modelcraft RS-2 motora (Slika 3.3). Ovakav tip aktu-atora klasičan je servomotor koji se većinom koristi za školske modele robota, RChobi modele aviona, brodova i slično. Shodno navedenom cijena ovakvih motoranije visoka. Servomotori rade pri naponu napajanja od 4.6 V do 6 V . Upravljase u otvorenoj petlji, dakle ne postoji informacija o dostizanju zadane pozicije.Unaprjeđenje sustava svakako bi predstavljala ugradnja servomotora s povratnominformacijom tj. mogućnošću upravljanja u zatvorenoj petlji.

Slika 3.3: Korišteni Modelcraft RS-2 motor s pripadajućim bregastim mehanizmom

Pozicijom osovine servomotora upravlja se dovođenjem PPM (engl. Pulse Po-sition Modulation) signala na njegove ulaze. Oblik PPM signala dan je Slikom3.4. Period signala iznosi 20ms, a sastoji se od pozitivnog dijela impulsa iznosanapona napajanja Ucc, u trajanju od 0.75ms do 2.25ms, dok je ostatak periodeprisutan negativni dio signala. Variranjem dužine trajanja impulsa upravlja sepozicijom osovine servomotora. Dužina trajanja impulsa od 0.75 ms označava

28

krajnji lijevi položaj osovine, dužina od 1.5 ms označava srednji položaj osovineservomotora dok dužina impulsa od 2.25 ms označava krajnji desni položaj oso-vine servomotora. Na osnovu primljenog signala servomotor postavlja osovinu uzadani položaj. Upravljačka petlja pozicije osovine servomotora zatvorena je elek-troničkim sklopovljem unutar servomotora, te korisnik servomotora nema pristuptoj povratnoj informaciji.

Slika 3.4: Oblik PPM signala

Upravljački PPM signali servomotora generiraju se korištenjem LynxmotionSSC-32 Servo Controllera. Navedeni kontroler, prikazan Slikom 3.5, koristi sepri upravljanju hobi i školskim modelima robota. Servomotorima osigurava izvornapajanja i PPM signale.

Slika 3.5: Lynxmotion SSC-32 Servo Controller [14]

Kontroler ima mogućnost spajanja do 32 servomotora. Jezgru kontrolera čini

29

Atmel ATMEGA168-20PU mikrokontroler. Kao ulaz ima serijsko sučelje. Prekoserijskog sučelja prima naredbe, koje moraju biti zadane u predviđenom formatu,te na svoje izlaze postavlja odgovarajuće PPM signale koji upravljaju spojenimservomotorima. Na službenoj Internet stranici proizvođača [14] mogu se pronaćidetaljne upute o spajanju i korištenju kontrolora. Kontroler preko serijskog sučeljaočekuje podatak u idućem formatu:#26 P1200 #8 P2300 \ r

Podatci #26 i #8 označavaju upravljanje servomotorima spojenima na 26. i8. kanal kontrolera. Podatci P1200 odnosno P2300 označavaju željenu pozicijuosovine servomotora. Pozicijom se može upravljati u rasponu od P500 (kraj-nji lijevi položaj osovine servomotora) do P2500 (krajnji desni položaj osovineservomotora).

Vizualna povratna veza realizirana je korištenjem web-kamere: Logitech Web-cam C200. Izgled kamere dan je Slikom 3.6. Web-kamera se na osobno računalospaja preko USB sučelja. Kamera ima mogućnost hvatanja slike u stvarnom vre-menu u VGA rezoluciji tj. veličina slike dobivene s kamere je 640 x 480 piksela.Ovakav tip kamere odabran je zbog dostupnosti, jednostavnosti korištenja te ni-ske cijene. Kamera se fiksira na visinu od otprilike 0.6 m od platforme. Kameraje okomita na platformu koja joj se nalazi u vidljivom području.

Slika 3.6: Logitech Webcam C200[15]

30

4. Programska podrška

Programska podrška sastoji se od glavne aplikacije u kojoj su realizirane svebitne funkcionalnosti sustava. Glavna aplikacija temelj je realiziranog sustavapošto ista omogućuje upravljanje te projektiranje i ispitivanje novih tipova al-goritama bez potrebe za drugim programskim alatima (npr. Microsoft VisualStudio ili neki drugi alat koji služi razvoju i izvođenju različitih programskihodsječaka). Realizirana aplikacija omogućava samostalno i nezavisno korištenjesustava loptice na platformi kao edukacijskog ili istraživačkog modela.

Razvijena aplikacija napisana je u programskom jeziku C# uz upotrebu .NET3.5 programskih biblioteka, a kao razvojno okruženje korišten je Microsoft VisualStudio 2008. Za izradu grafičkog sučelja aplikacije korištene su Windows Formsbiblioteke koje su dio .NET Frameworka. U glavnoj aplikaciji realizirane su idućefunkcionalnosti:

– dohvat i obrada slike s web-kamere (prepoznavanje točne pozicije lopticena platformi);

– upravljanje servomotorima preko serijske veze;

– dodavanje novih algoritama upravljanja sustavom;

– zadavanje referentnog položaja loptice u stvarnom vremenu;

– ručno upravljanje sustavom putem igraće palice ili klizača u aplikaciji;

– crtanje odziva pozicije loptice na platformi i upravljačkih signala algoritmaupravljanja;

– promjena parametara osnovnog regulatora u stvarnom vremenu.

4.1. Grafičko korisničko sučelje

Korisničko sučelje sastoji se od glavne aplikacije pokretane u Windows operativ-nom sustavu. Korisničko sučelje omogućava korisniku pokretanje ili zaustavljanje

31

upravljanja sustavom, mijenjanje različitih postavki i parametara sustava, nad-ziranje rada sustava, unošenje i izvođenje novih algoritama upravljanja te pre-gledavanje i spremanje odziva sustava. Izgled realizirane glavne aplikacije danje Slikom 4.1. Glavna aplikacija podijeljena je na 3 kartice. Osnovna karticasadrži gumbe za upravljanje radom sustava, izbornik načina upravljanja, osnovneinformacije koje korisniku služe za nadzor nad sustavom (pozicija loptice, izlaziiz pojedinih upravljačkih algoritama, klizače i pokazivače informacija s igraće pa-lice) te postavke serijske veze. Grafičko korisničko sučelje je izrađeno vodeći senačelom jednostavnosti, preglednosti i intuitivnosti.

Slika 4.1: Izgled razvijene Windows aplikacije

4.1.1. Upravljački dio

Upravljački dio razvijene aplikacije omogućava upravljanje sustavom loptice naplatformi. Upravljački dio opisan je blok dijagramom danim Slikom 4.2. Ukolikoje upravljanje sustavom programski uključeno aktivira se Timer kontrola. Unu-tar opcija Timer kontrole postavljen je period od 0.1 s koji predstavlja perioddiskretizacije sustava. Ukoliko je Timer kontrola aktivna ona generira događaj

32

(engl. event) Timer_tick koji se izvodi svako unaprijed postavljenog perioda.Upravljački dio dakle izvodi se na svaki otkucaj (engl. tick) Timera.

Nakon pokretanja funkcije upravljački dio iz algoritma obrade slike preuzimase informacija o trenutnoj poziciji loptice na platformi te se računaju trenutnevrijednosti reference i regulacijskog odstupanja:

e(k) = r(k)− y(k) (4.1)

Izračunom osnovnih vrijednosti upravljanja sustava, ovisno o izboru načinaupravljanja korisnika, računaju se upravljački signali iz osnovnog regulatora ilikorisnički projektiranog regulatora ili se uzimaju s igraće palice. Podatci o pozi-ciji i upravljački signali upisuju se u log datoteke. Log datoteke koriste se kaoizvor podataka za iscrtavanje grafova odziva sustava ili mogu poslužiti kao izvorpodataka o ponašanju sustava za neki drugi programski alat (npr. Matlab).

Upravljački signali (bez obzira na način upravljanja) izraženi su u rad. Kon-troler ne prima podatke o zakretu spojenih servomotora u rad već u predodređe-nom formatu (Poglavlje 3.2). Podatci iz rad moraju se normirati u podatke kojeprima kontroler. Empirijski su određene funkcije normiranja upravljačkih signalau vrijednosti koje prima kontroler:

uservoX= 1550− uX(k) · 1700

π; uX(k) ∈ [0, π/2]

uservoX= 1550− uX(k) · 1800

π; uX(k) ∈ [−π/2, 0〉

(4.2)

Odnosno za upravljačke signale y osi:

uservoY= 1270− uY (k) · 1900

π; uX(k) ∈ [0, π/2]

uservoY= 1270− uY (k) · 1800

π; uX(k) ∈ [−π/2, 0〉

(4.3)

Normirani upravljački signali pretvoreni su u vrijednost koju zahtjeva kontroler.Podatci se grupiraju te se u odgovarajućem predodređenom formatu šalju nakontroler preko serijske veze. Kontroler prima podatak preko serijske veze tepokreće servomotore.

33

Slika 4.2: Blok dijagram upravljačkog dijela

34

4.1.2. Serijska veza

Serijska veza esencijalni je dio sustava pošto je ona veza između programske po-drške i sklopovlja koje pokreće sustav. Parametri i format poruka serijske vezepredodređeni su tehničkim specifikacijama [14]. Prema uputama i tehničkim spe-cifikacijama kontrolera brzina prijenosa podataka preko serijske veze određuje semanipulacijom kratkospojnika na kontroleru. Izabrana je brzina od 115200 bit/s.

Serijska veza na osobnom računalu u glavnoj aplikaciji realizirana je korište-njem SerialPort kontrole. Inicijalizacija serijske veze izvodi se s parametrimapriloženim u Tablici 4.1.

Tablica 4.1: Parametri serijske veze

Parametar VrijednostPortName Određuje korisnik – obično COM1

BaudRate Određuje korisnik – preporučeno 115200 bit/sParity Bez paritetaStopBits 1Handshake Bez handshakea

4.1.3. Upravljanje igraćom palicom

Ručno upravljanje sustavom omogućeno je korištenjem igraće palice (eng. joys-tick) koja je na osobno računalo spojena preko USB sučelja. Komunikacija iz-među glavne aplikacije i igraće palice ostvarena je korištenjem Microsoft DirectXsoftware development kit (SDK) biblioteka te primjera Microsoft Visual Studioprojekta napisanog u programskom jeziku C# dostupnog u [16]. Projekt [16]daje primjer kako ostvariti komunikaciju igraće palice i aplikacije na osobnomračunalu.

Implementiran je razred Joystick koji predstavlja igraću palicu spojenu naračunalo. Razred pruža podršku za igraću palicu koja ima do 6 osi upravljanja.Unutar razreda sadržane su sve varijable koje daju informacije o trenutnom sta-nju svih osi i gumba igraće palice: axisA, axisB, axisC, axisD, axisE, Buttons

te varijabla axisCount koja sadržava broj osi prisutnih na spojenoj igraćoj palici.Razred sadrži metode za hvatanje (engl. acquire), pronalaženje spojenih igraćihpalica, otpuštanje igraće palice operativnom sustavu (engl. release), konstruktor

35

razreda te najvažniju metodu UpdateStatus(). UpdateStatus() metoda ko-risti se za osvježavanje podataka o trenutnom stanju osi i pritisnutih gumba naigraćoj palici. Pozivanjem navedene metode u varijable stanja razreda Joystick

spremaju se nove informacije s igraće palice.Pri pokretanju glavne aplikacije, ukoliko je na računalo spojena igraća palica,

stvori se odgovarajući razred koji ju predstavlja. Stanja dviju glavnih osi igraćepalice skupa s četiri glavna gumba mogu se vidjeti u stvarnom vremenu prekoimplementiranih klizača i gumba u glavnoj aplikaciji.

Vrijednosti osi igraće palice nalaze se u rasponu od 0 do 65535, 0 predstavljakrajnji lijevi položaj dok 65535 predstavlja krajnji desni. Upravljanje servomo-torima izvodi se u radijanima, sukladno navedenom vrijednosti dobivene s igraćepalice potrebno je normirati. Normiranje se izvodi idućim linearnim relacijama:

uservoX= π

65535 · joystick.Axis1− π/2uservoY

= π65535 · joystick.Axis2− π/2

(4.4)

Vrijednosti dobivene normiranjem prosljeđuju se kontroleru kako je opisano uPoglavlju 4.1.1.

4.1.4. Zadavanje referentnog položaja loptice

Zadavanje referentnog položaja loptice na platformi u glavnoj aplikaciji izvodi sepozivom funkcije zadaj_referencu(). Funkcija sadrži varijablu t koja predstav-lja realno vrijeme izvođenja eksperimenta.

Korisnik preko grafičkog korisničkog sučelja prikazanog Slikom 4.3 može iz-abrati 4 različita tipa referentnog signala: točka, kružnica, pravac te kvadrat.Za sve tipove referentnih signala korisnik ima mogućnost unošenja parametarasignala. Korisnik može mijenjati vrijednost pozicije koju hvata loptica, centar iradijus kružnice, točke pravca i kvadrata te pripadajuće periode signala.

36

Slika 4.3: Kartica glavne aplikacije za podešavanje postavki osnovnog regulatora ireferentnog signala

Funkcija zadaj_referencu() poziva se pri svakom pokretanju upravljačkogdijela tj. pri svakom koraku uzorkovanja sustava. Funkcija, uzevši u obzir iz-bor korisnika i unesene vrijednosti parametara signala, kao izlaz daje vrijednostreferentne pozicije loptice za trenutni dikretizacijski korak.

4.1.5. Iscrtavanje odziva

Iscrtavanje odziva sustava implementirano je u glavnoj aplikaciji korištenjem Mi-crosoft Chart Controlsa. Glavna aplikacija ima mogućnost iscrtavanja tri tipaodziva: pozicije loptice na platformi, pozicije loptice na platformi za x i y os uodnosu na vrijeme t te upravljačkih signala za obje osi u odnosu na vrijeme t.Realizirana je mogućnost spremanja slika na disk osobnog računala u .png ili.jpg formatu.

Pri svakom koraku diskretizacije upravljački dio aplikacije spremi podatke ovremenu, poziciji loptice na platformi, referentnim položajima loptice te uprav-ljačkim signalima u odgovarajuću log datoteku. Krajem upravljačkog eksperi-

37

menta log datoteke se zatvaraju za pisanje te postaju izvor podataka za funkcijeiscrtavanja odziva sustava.

Pozivom za iscrtavanje odziva sustava pokreće se funkcija dohvati(). Funk-cija čita sve podatke spremljene unutar log datoteka. Ukoliko je čitanje po-dataka bilo uspješno relevantni podatci prebacuju se u liste lista_vrijeme,x_list i y_list. Poznavajući broj podataka koji će se iscrtati poziva se funkcijakonfiguriraj_graf(). Funkcija postavlja parametara grafa koji će se iscrtati(raspon osi, boje pojedinih signala i sl.). Nakon postavljenja parametara grafakoji će se iscrtavati poziva se funkcija crtaj2() koja za sve vrijednosti varija-bli spremljenih u liste odgovarajućim naredbama dodaje točke na graf. Primjeriscrtanog odziva pozicije loptice na platformi dan je Slikom 4.4.

Slika 4.4: Primjer isctavanja odziva pozicije loptice na platformi

4.2. Algoritam obrade slike

Algoritam obrade slike napisan je u C# programskom jeziku te su korištene većgotove biblioteke OpenCV-a. OpenCV (engl. Open Source Computer Vision Li-brary) je skup za javnost otvorenih biblioteka za programe kojima se obavlja

38

analiza slike ili videa u realnom vremenu. OpenCV sadrži čitav niz razvijenihalgoritama, od onih u čestoj uporabi (crtanje geometrijskih likova i pisanje poslici, pretvorba između više formata slike i raznih filtara – računanje gradijenta,rubova, usrednjavanje slike medijan filtrom itd.) do specifičnih algoritama (pro-račun optičkog toka slike, računanje histograma, momenata, Houghove transfor-macije, Kalmanovih filtara itd.). OpenCV izvorno je razvijen za C++ programskijezik. Kako je glavna aplikacija razvijena u programskom jeziku C# korišten jeEmgu CV wrapper koji omogućava istu funkcionalnost kao i izvorni OpenCV aliu programskom jeziku C#. Dijagram toka algoritma obrade slike dan je Slikom4.5.

Slika 4.5: Dijagram toka algoritma obrade slike

Ukoliko je algoritam obrade slike programski uključen aktivira se Timer2 kon-trola. Unutar postavki Timer2 kontrole postavljen je period od 0.05 s pošto tajperiod označava brzinu obrade slika kamere od 20 fps. Ukoliko je Timer kon-trola aktivna ona generira događaj (engl. event) Timer2_tick koji se izvodi svako

39

unaprijed postavljenog perioda. Algoritam obrade slike izvodi se dakle na svakiotkucaj (engl. tick) Timera. Ulaskom u funkciju obrade slike inicira se hvatanjesive slike s kamere. Siva slika sprema se odgovarajući Image<Gray, byte> raz-red koji u Emgu CV predstavlja slike nad kojima se izvode različite manipulacije.Unutar navedenog razreda sama slika predstavljena je poljem veličine 640x480.Svaka vrijednost polja nalazi se u rasponu od 0 do 255 ovisno o osvijetljenostipojedine točke slike.

S ciljem pronalaska pozicije loptice na platformi, provodi se segmentacija natemelju praga (engl. thresholding). Platforma je crne boje, a loptica sjajne po-vršine te se može očekivati je da će segmentacija na temelju praga odvojiti slikuobjekta tj. loptice od pozadine tj. platforme. Segmentacija se izvodi provje-rom svih točaka slike. Ukoliko je vrijednost točke slike veća od vrijednosti praga(engl. thresh) dodjeljuje joj se vrijednost 255 što predstavlja bijelu boju, suprotnododjeljuje joj se vrijednost 0 što predstavlja crnu boju. Korisnik može mijenjativrijednost praga unutar glavne aplikacije. Ovisno o vanjskim uvjetima osvjetlje-nja različiti izbori vrijednosti praga uvjetuju različite rezultate.

Slika 4.6: Prikaz crno-bijele slike dobivene segmentacijom u razredu Image<Gray,

byte>

Dobivenu crno bijelu sliku koristi algoritam za pronalaženje objekta tj. lopticena platformi. Algoritam ne pretražuje cijelu sliku već samo njen predodređendio. Platforma je kvadratnog oblika a slika dobivena s kamere pravokutnog te jeodređeno da algoritam pretražuje centralni kvadratni dio slike. Algoritam izvodi

40

pretraživanje nad područjem shematski prikazanim Slikom 4.6.Pronalaženje objekta tj. loptice na platformi svodi se na pronalaženje centra

mase objekta. Binarna crno bijela slika ima oblik prikazan Slikom 4.6. Područjeprikazano bijelom bojom (tj. brojem 255 na slici) definira se kao područje R kojepredstavlja objekt.

Područje R može se opisati nizom brojeva mkj koji karakteriziraju oblik po-dručja a nazivaju se momentima R-a. Momenti se definiraju:

mkj =∑

(x,y)=Rxkyj (4.5)

Gdje je x stupac točke s težinom 255 u području R a y redak točke s težinom255 u području R. Za centar mase tj. sredinu objekta vrijedi:

A = m00

xc = m10m00

yc = m01m00

(4.6)

Dobivene su koordinate centra loptice na platformi izraženi kao točka na slicidobivene s kamere tj. izražene su pikselima. Pozicija loptice s kamere koristise kao povratna veza sustava u kojem je sve izraženo SI sustavom mjernih jedi-nica tj. u metrima, potrebno je normirati vrijednosti loptice iz piksela u metre.Uzevši u obzir veličinu platforme (0.3x0.3m) te područje na kojem se na slici na-lazi loptica (0 pixel,0 pixel),(560 pixel,480 pixel) izvodi se normiranje linearnomrelacijom:

xmjereni = 0.625xc − 50.625ymjereni = 0.625yc

(4.7)

Normirane vrijednosti spremaju se u odgovarajuće varijable te ih upravljačkidio koristi kao signal povratne veze. Upravljački dio uvijek dobiva najsvježijipodatak o trenutnoj poziciji loptice pošto se algoritam obrade slike izvodi sa dvaputa bržim vremenom diskretizacije od algoritma upravljanja.

Prikazani algoritam, iako jednostavan, za ovu primjenu pokazao se odgovara-jućim. Temeljni zahtjev na algoritam obrade slike primjenjiv u ovakvom sustavuautomatskog upravljanja je da se izvodi u stvarnom vremenu. Zbog jednostavneizvedbe, algoritam za obradu slike nije procesorski zahtjevan te se postigla brzinaobrade jedne slike od otprilike 0.05 s što odgovara obradi 20 slika s kamere usekundi tj. 20fps. Ovakav rezultat garantira uvijek svjež podatak za upravljačkidio sustava.

41

Slika 4.7: Pronalazak kuglice na platformi

Konfiguracija slike koju prima kamera (crna pozadina platforme i svijetla lop-tica), uz korišteni algoritam, uvjetuje gotovo stopostotnu točnost i preciznostalgoritma za obradu slike. Robusnost algoritma može biti narušena promjenji-vim vanjskim osvjetljenjem zbog čega se dodaje Kalmanov filtar (Poglavlje 4.2.1.Slikom 4.7 dan je prikaz pronalaženja kuglice na crno-bijeloj segmentiranoj slicidobivenoj s kamere. Velikom kružnicom prikazan je izlaz algoritma obrade slikedok je malom prikazan izlaz Kalmanovog filtra.

4.2.1. Kalmanov filtar

Zbog mogućih problema robusnosti algoritma obrade slike kod promjenjivih i lo-šijih uvjeta osvjetljenja uvodi se Kalmanov filtar. Kalmanov filtar sastoji se odmodela mjerenje te modela gibanja loptice na platformi. Korišteni model opće-niti je model gibanja neke točke koja ima poziciju i brzinu. Matematički modelpredstavlja dinamičnost i inercijalnost promatranog procesa. Ukoliko se lopticau nekom trenutku nalazi u točki x[t] te ima brzinu vx[t] u sljedećem trenutku

42

uzorkovanja je realno očekivati da će se nalaziti u točki x[t] + T · vx[t], gdje je Tvrijeme uzorkovanja sustava. Navedeno vrijedi i za y os.

Kalmanov filtar sastoji se od dvije jednadžbe, jednadžbe za predikciju i jed-nadžbe za korekciju stanja. Općenita jednadžba stanja sustava koja se koristi uKalmanovom filtru je :

xk = Fxk−1 +Buk + wk (4.8)

zk = Hxk + vk (4.9)

gdje je xk stanje sustava u trenutku k a zk vrijednost dobivena mjerenjem utrenutku k.

Stanje promatranog sustava loptice na platformi definirano je vektorom:

X[k] =

x[k]y[k]vx[k]vy[k]

(4.10)

Uzimajući u obzir prethodne pretpostavke matematički model sustava Kal-manovog filtra je:

xk = Fxk−1 + wk (4.11)

U jednadžbi 4.11 primjećuje se ne korištenje ulazne B matrice zbog specifič-nosti sustava. Jednadžba 4.11 se koristi za predikciju stanja sutava u trenutku kkorištenjem informacije o stanju sustava u prethodnom trenutku k−1. Jednadžbapredikcije je:

x−k = Fxk−1 + wk (4.12)

gdje je x−k predikcija stanja a xk−1 korekcija u prethodnom koraku.Matrica F promatranog sustava loptice na platformi je :

F =

1 0 Td 00 1 0 Td

0 0 1 00 0 0 1

(4.13)

Jednadžba za korekciju stanja glasi:

xk = x−k +Kk(zk −Hx−k ) (4.14)

gdje je xk korigirana vrijednost stanja sustava, x−k predviđena vrijednost stanjasustava a Kk vektor Kalmanovog pojačanja.

43

Iako se direktno mjere tek 2 veličine (x, y), vektor mjerenja zk se postavljajednakim vektoru stanja xk zbog jednostavnije izvedbe. Veličine vx[k], vy[k] seračunaju u svakom trenutku uzorkovanja idućim relacijama:

vx[k] = x[k]− x[k − 1]Td

(4.15)

vy[k] = y[k]− y[k − 1]Td

(4.16)

gdje je Td vrijeme između dvaju mjerenja postavljeno na 0.06 s jer se slikas kamere uzima s vremenom uzorkovanja 0.05 s no pošto računalo tu vrijednostne može dostići empirijski je određeno vrijeme između dvaju mjerenja. Vektormjerenja zk je jednak vektoru stanja sustava xk te je matrica H time jednaka:

H =

1 0 0 00 1 0 00 0 1 00 0 0 1

(4.17)

.Korištenje Kalmanovog filtra poboljšalo je vladanje algoritma obrade slike u

lošijim i promjenjivim uvjetima osvjetljenja.

4.3. Programiranje korisničkog algoritma uprav-ljanja

Najvažnija funkcija razvijene programske podrške je mogućnost dodavanja novihalgoritama upravljanja u samoj aplikaciji bez potrebe korištenja alata za razvojprogramske podrške. Korisnički upravljački algoritam dinamički se prevodi ustvarnom vremenu (engl. Dynamic Compilation). Korisnik unosi novi upravljačkialgoritam u textbox koji se nalazi u samoj aplikaciji te ima mogućnost učitavanjaili spremanja napisanih upravljačkih funkcija. Korisnik se pri izradi novog uprav-ljačkog algoritma mora pridržavati unaprijed određene strukture funkcije kojaimplementira razvijeni algoritam upravljanja ali unutar funkcije ima potpunuslobodu pisanja vlastitog koda. Potrebna struktura korisničke funkcije dana jeprogramskim odsječkom:using System ;public class Regulator{

stat ic double v a r i j a b l a ;

44

// s t a t i c n e v a r i j a b l e ( o s t a j u sacuvane )

public double [ ] a lgor i tam ( double x_ref , double y_ref , double x_mjereni ,double y_mjereni )

{// k o r i s n i c k i kod

// Korisnik mora g l a v n o j a p l i k a c i j i v r a t i t i v r i j e d n o s t u p o l j u r e g u l a t o rr e g u l a t o r [ 0 ] = x_vr i j ednost ;r e g u l a t o r [ 1 ] = y_vr i j ednost ;

return r e g u l a t o r ;}

}

Dinamičko prevođenje izvodi se metodama dostupnim u sklopu .NET Fra-mework biblioteka. Korisnički dio koda prevede se (engl. compile) i spremi uradnu memoriju računala koristeći razred CompilerResults. Pokretanjem uprav-ljačkog dijela glavne aplikacije iz navedenog razreda stvori se razred Assembly.Iz razreda koji predstavlja strojni jezik stvara se razred koji predstavlja korisničkiunesen dio koda. Razred sadrži metodu algoritam koja predstavlja funkciju kojuje korisnik napisao i koja predstavlja upravljački algoritam sustava.

Funkcija tj. metoda koja sadrži upravljački algoritam poziva se pri svakomkoraku diskretizacije upravljačkog dijela. Kao ulaze prima vrijednosti trenutnereference za obje osi i mjerenu poziciju loptice na platformi. Kao izlaz dajevrijednosti upravljačkih signala za obje osi koje se dalje koriste pri upravljanjusustavom. Ukoliko korisnik učini grešku u kodu pri prevođenju glavna aplikacijaće komunicirati neuspješnost prevođenja te mjesto počinjene greške (linija kodagreške). Izgled kartice korisničkog sučelja za unos novog algoritma upravljanjaprikazan je Slikom 4.8

45

Slika 4.8: Kartica glavne aplikacije za korisničko unošenje algoritma upravljanja

Dinamičko prevođenje moguće je izvoditi u stvarnom vremenu i dok se uprav-lja sustavom. Ova činjenica olakšava fino podešavanje parametara upravljačkogalgoritma što je ustaljena praksa pri projektiranju sustava automatskog uprav-ljanja. Svojstvo dinamičkog prevođenja glavne aplikacije čini je samostalnim ineovisnim rješenjem. Uz ostale funkcionalnosti glavna aplikacija primjenjiva jekao jedini alat projektiranja i ispitivanja upravljačkog algoritma za promatranisustav loptice na platformi.

46

5. Sinteza algoritma upravljanja

Za promatrani sustav određeni su matematički modeli dani u Poglavlju 2. Ma-tematički modeli su provjereni te dovoljno vjerno oslikavaju stvarni fizički sustavkoji se promatra. U Poglavljima 3 i 4 prikazan je realizirani sustav koji uključujeprogramsko sklopovsku infrastrukturu za implementaciju algoritma upravljanjana stvarnom sustavu. Kako bi se pokazali različiti rezultati uvjetovani različi-tim korištenim algoritmima upravljanja implementirane su tri vrste algoritmaupravljanja:

– analitičkom metodom sinteze regulatora „Truxal-Guillemin“ projektiran jekompenzacijski regulator;

– linearni kvadratični regulator (engl. LQR - Linear-quadratic regulator)zbog svojih karakteristika koje ga čine idealnim za promatrani dinamični,nestabilni i nelinearni sustav;

– neizraziti regulator (engl. fuzzy controller) zbog nelinearnih karakteristikaupravljanog sustava koje odgovaraju takvom tipu upravljanja.

5.1. Truxal-Guillemin kompenzacijski regulator

Truxal-Guillemin je analitički postupak sinteze te kao takav spada u neposrednepostupke sinteze jer je polazište pri sintezi zatvoreni regulacijski krug opisan že-ljenom prijenosnom funkcijom [17]. Za promatrani sustav loptice na platformi uPoglavlju 2 izvedeni su matematički modeli koji u potpunosti modeliraju pona-šanje sustava te u Poglavlju 2.4 je prikazan linearizirani model sustava u oblikuprijenosne funkcije. Uzevši u obzir navedeno (poznavanje modela sustava) možese koristiti analitički Truxal-Guillemin postupak sinteze algoritma upravljanja.Postupak se temelji na modelskoj funkciji i jednostavan je za izračun i implemen-taciju. Polazište pri sintezi je, kao što je navedeno, zatvoreni regulacijski krug

47

opisan željenom prijenosnom funkcijom:

Gr (s)!=Gm(s) (5.1)

Gdje jeGm(s) željena (modelska) prijenosna funkcija zatvorenog sustava (refe-rentni model). Modelska funkcija proizlazi iz specifikacija kakvoće koja se običnozasniva na odgovarajućoj prijelaznoj funkciji hr(t). Uz poznato vladanje procesai uz odabrani Gm(s) može se neposredno projektirati odgovarajući regulator. Sli-kom 5.1 dan je regulacijski krug koji se razmatra pri sintezi Truxal-Guilleminovimpostupkom.

Slika 5.1: Promatrani regulacijski krug pri sintezi Truxal-Guillemin-om

Proces Gs(s) opisan je racionalnom prijenosnom funkcijom:

Gs (s) = D(s)C(s) = d0 + d1s+ · · ·+ dms

m

c0 + c1s+ · · ·+ cnsn(5.2)

uz pretpostavke da polinomi brojnika D(s) i nazivnika C(s) nemaju zajedničkekorijene; proces je stabilan i posjeduje svojstva minimalne faze; stupanj nazivnikan > stupnja nazivnika m.

Prijenosna funkcija regulatora kojega treba projektirati:

GR (s) = B(s)A(s) = b0 + b1s+ · · ·+ bws

w

a0 + a1s+ · · ·+ azsz(5.3)

pri tome mora biti ispunjen uvjet realizacije tj. kauzalnosti(z ≥ w). Gm(s)može, uz uvjet realizacije regulatora, imati proizvoljan oblik:

Gm (s) = α(s)β(s) = α0 + α1s+ · · ·+ αvs

v

β0 + β1s+ · · ·+ βusu(5.4)

48

Regulator treba tako projektirati da prijenosna funkcija zatvorenog sustava odgo-vara modelskoj prijenosnoj funkciji Gm(s). Iz blok sheme dane slikom 5.1 dobijese prijenosna funkcija s obzirom na referentnu vrijednost:

Gr (s) = GR (s)Gs (s)1 +GR (s)Gs (s)

!=Gm(s) (5.5)

Iz čega slijedi prijenosna funkcija regulatora:

GR (s) = 1Gs(s)

Gm(s)1−Gm(s) (5.6)

Uvjet kauzalnosti mora biti ispunjen: stupanj brojnika regulatora B(s) = w =n+ v ≤ stupanj nazivnika A(s) = z = u+m, odakle slijedi:

u− v ≥ n−m (5.7)

Polni višak (u − v) željene prijenosne funkcije Gm(s) mora biti veći (ili jednak)polnom višku (n−m) prijenosne funkcije procesa Gs(s).

U prijenosnoj funkciji regulatora 5.6 pojavljuje se [Gs(s)]−1. Dakle regula-torom bi se moglo potpuno kompenzirati dinamičko vladanje procesa. Stoga seprojektirani regulator naziva kompenzacijskim regulatorom.

5.1.1. Sinteza algoritma upravljanja

U Poglavlju 2.4 dobivena je prijenosna funkcija procesa:

G(s) = −0.4671s(s+ 2) (5.8)

Proces je drugog reda te da bi se zadovoljio uvjet realizacije regulatora 5.7odabire se modelska funkcija drugog reda čiji opći oblik glasi:

Gm (s) = ω2n

s2 + 2ζωns+ ω2n

(5.9)

Parametri modelske prijenosne funkcije slijede iz pokazatelja kvalitete, u konkret-nom slučaju o nadvišenju te vremenu prvog maksimuma. Veza je dana sljedećimrelacijama:

σm[%] = 100 · exp(− ζπ√

1− ζ2

)(5.10)

tm = π

ωn√

1− ζ2 (5.11)

49

Nakon niza simulacija korištenjem Simulink modela odabrano je σm[%] = 1, tetm = 2 s jer je dobiveni regulator za te vrijednosti pokazao najbolje vladanje. Izrelacija 5.10 te 5.11 dobije se:

ζ = 0.8261 ωn = 2.7873 (5.12)

Uvrštavajući vrijednosti u 5.9 modelska funkcija poprima oblik:

Gm (s) = 7.769s2 + 4.605s+ 7.769 (5.13)

Prijenosna funkcija regulatora na temelju 5.6 te uzimajući u obzir 5.8 te 5.13iznosi:

GR (s) = 1Gs(s)

Gm(s)1−Gm(s) = −16.6s− 33.2

s+ 4.605 (5.14)

Pri projektiranju regulatora korišten je sljedeći programski kod u Matlabu:function Gr=TG_postupak ( nad , tm) ;%u l a z = nadv i sen je ( nad ) i vr i jeme prvog maximuma(tm)ze ta = log ( nad /100) /( sqrt ( pi∗pi+(log ( nad /100) ) ^2) ) ;omega=pi /(tm∗ sqrt ( 1 zeta ∗ ze ta ) ) ;num=[omega∗omega ] ;den=[1 2∗omega∗ ze ta omega∗omega ] ;Gm=t f (num, den ) ;Gr2=Gm/ ( 1 Gm) ;Gr=Gr2 ∗(1/Gs ; )Gr=minrea l (Gr) ;Gr

Regulator dobiven Truxal-Guillemin postupkom potrebno je prebaciti iz kon-tinuirane u diskretnu domenu zbog implementacije na digitalnom računalu. Ko-rišten je ZOH postupak uz vrijeme diskretizacije Td = 0.1 . Vrijeme diskretizacijeodabrano je sukladno dinamici sustava i izvedivosti na digitalnom računalu. Izdobivene prijenosne funkcije u diskretnoj domeni implementira se jednadžbu di-ferencija. Korištenjem Matlab naredbe c2d dobivena je prijenosna funkcija udiskretnoj domeni:

Gr(z) = 16.6z + 13.94z − 0.631 (5.15)

Iz dobivene prijenosne funkcije dobije se jednadžba diferencija koja se implemen-tira na digitalnom računalu:

u(k) = −16.6e(k) + 13.94e(k − 1) + 0.631u(k − 1) (5.16)

50

5.2. Linearni kvadratični regulator (engl. Linear-quadratic regulator - LQR)

Teorija optimalnog upravljanja bavi se izradom algoritma upravljanja s najma-njom cijenom upravljanja. Cijena upravljanja određuje se optimizacijskom tj.funkcijom cilja koja predstavlja osnovni kriterij vrednovanja kvalitete algoritma.Rješenje koje najbolje udovoljava zadani kvantitativni kriterij usporedbe nazivase optimalno rješenje. Optimalno rješenje može se dobiti minimizacijom (mini-mum energije, minimum vremena, minimalno regulacijsko odstupanje itd.) ilimaksimizacijom (maksimalna produktivnost, brzina, profit itd.) funkcije cilja tj.kriterija optimalnosti.

Za primjer se može uzeti problem automobila koji se kreće ravno po brdovitojcesti. Postavlja se pitanje kako vozač mora dozirati pritiskanje papučice gasa dase minimizira potrošnja goriva. Algoritam upravljanja u ovom slučaju predstavljapritiskanje papučice gasa i mijenjanje brzina vozača. Sustav se dakle sastoji odautomobila, ceste i kriterija optimalnog upravljanja u vidu smanjivanja potrošnjegoriva. Za dani sustav ograničenja bi bila minimalni iznos vremena putovanjakoja se mora ispuniti, ograničenja brzine, ograničenja uvjetovana snagom motoraautomobila i sl. Kriterij optimalnosti tj. funkcija cilja za dani problem bio bimatematički opis potrošnje goriva kao funkcije trenutne brzine automobila tj.pritisnutosi papučice gasa.

Izdvojeni slučaj optimalnog upravljanja kada je ponašanje sustava opisanolinearnim diferencijalnim jednadadžbama a kriterij optimalnosti kvadratičnomfunkcijom u literaturi [18] naziva se LQ problemom. Linearni kvadratični regu-lator (LQR) predstavlja teorijsko rješenje LQ problema i time jedno od osnovnihrješenja u teoriji automatskog upravljanja.

Za kontinuirani linearni dinamički sustav, opisan diferencijalnom jednadžbom(prikaz u prostoru stanja):

x = Ax+Bu (5.17)

te kvadratičnom funkcijom kriterija optimalnosti (funkcija cilja):

J =∫ ∞

0

(xTQx+ uTRu

)dt (5.18)

Upravljački algoritam koji minimizira vrijednost funkcije 5.18 dan je izrazom:

u = −Kx (5.19)

51

vrijednost pojačanja K računa se:

K = R−1BTP (5.20)

dok se P računa rješavanjem kontinuirane algebarske Riccatijeve jednaddžbe:

ATP + PA− PBR−1BTP +Q = 0 (5.21)

Umnožak matrica xTQx odgovara energiji kontroliranih stanja, uTRu energijiupravljačkog signala, a 2xTNu energiji odnosa kontroliranih stanja i upravljačkogsignala. Rješenje LQR problema su pojačanja u povratnoj vezi po varijablamastanja koja minimiziraju energije. Smanjenje energije kontroliranih stanja zah-tjeva velike iznose upravljačkog signala, a mali upravljački signali dovest će doveliki iznosa kontroliranih stanja. Težinske matrice Q, R, N imaju ulogu uspos-tavljanja kompromisa između navedenih, obrnuto - proporcionalnih, zahtjeva. Qje pozitivno definitna, n x n težinska matrica. R je pozitivno definitna, m x m

težinska matrica. N je pozitivno definitna, n x m težinska matrica.Brysonovo pravilo [19] daje preporuku za početni izbor težinskih matrica Q i

R:Qii = 1

max|xi(t)| i ∈ [1, n]Rii = 1

max|ui(t)| i ∈ [1, n](5.22)

Brysonovo pravilo 5.22 ne daje uvijek dobre rezultate te često služi kao početnavrijednost određivanja pravih vrijednosti težinskih matrica metodom pokušaja ipogreške (engl. trial-and-error).

Pri projektiranju LQR regulatora ne određuje se dinamika zatvorenog krugaupravljanja već se ona dobije kao rezultat navedenog proračuna. Time je LQRregulator različit od regulatora po varijablama stanja, iako imaju istu strukturu.Kako bi se osigurala točnost u stacionarnom stanju tj. eliminiralo regulacijskoodstupanje uvodi se prefiltar.

Sustav upravljan LQR regulatorom mora biti upravljiv i osmotriv. Pošto ne-kad nisu mjerljive sve varijable stanja sustava koriste se razni oblici obzervera(engl. observer). Osnovne prednosti LQR regulatora su: garantirana stabilnostukoliko je sustav upravljiv (engl. controllability) i osmotriv (engl. observability)te relativno jednostavan postupak projektiranja. Nužan preduvjet projektiranjuLQR regulatora je poznavanje lineariziranog matematičkog modela sustava. Uko-liko matematički model ima nemodeliranu dinamiku sustava postoji mogućnostneispravnoga rada LQR-a, u tom slučaju valja razmotriri mogućnosti implemen-tacije robusnih algoritma upravljanja.

52

5.2.1. Sinteza algoritma upravljanja

Algoritam upravljanja sustavom osnovan na LQR regulatoru projektirao se ko-rištenjem Matlab i Matlab Simulink okruženja. Iz dobivene prijenosne funkcijesustava 2.36 izvedene su A i B matrice sustava potrebne za sintezu LQR regula-tora. Težinske matrice Q i R određene su empirijski metodom pokušaja i pogreške(engl. trial-and-error) dok nije dobivena zadovoljavajuća kvaliteta upravljanja usimulacijskom okruženju. Za sam izračun vrijednosti pojačanja LQR regulatorakorištena je Matlab funkcija [K,S,E] = LQRD(A,B,Q,R,Ts) koja prima matricesustava, težinske matrice te vrijeme diskretizacije koje iznosi Td = 0.1 . Naredbase koristi kod projektiranja diskretiziranog LQR regulatora ukoliko su poznate Q iR matrice za koje se kontinuirani sustav dobro ponaša korištenjem kontinuiranogLQR regulatora. Korišten je sljedeći programski kod u Matlabu:a_mat = [ 2 0 ;1 0 ]b_mat = [ 0 . 4 7 6 ; 0 ]c_mat=[0 1 ]d_mat=[0 ]R=1N=[0; 0 ]Q=[200 0 ;0 400 ][ K_diskr , S_diskr , E_diskr ]= lq rd (a_mat , b_mat ,Q,R, 0 . 1 )Nbar=r s c a l e (a_mat , b_mat , c_mat , 0 , K_diskr )

function [ Nbar]= r s c a l e (A,B,C,D,K)s = s ize (A, 1 ) ;Z = [ zeros ( [ 1 , s ] ) 1 ] ;N = inv ( [A,B;C,D] ) ∗Z ’ ;Nx = N( 1 : s ) ;Nu = N(1+ s ) ;Nbar=Nu + K∗Nx ;

Nbar predstavlja vrijednost pojačanja prefiltra. Dobiveno je pojačanje LQRregulatora K_diskr = [-9.7054 -15.1017] gdje prva vrijednost u matrici pred-stavlja pojačanje u povratnoj vezi brzine loptice (dx)a druga pojačanje u povrat-noj vezi pozicije loptice (x).

5.3. Neizraziti (engl. fuzzy) regulator

Neizraziti (engl. fuzzy) sustav upravljanja je sustav upravljanja temeljen na ne-izrazitoj logici. Koncept neizrazite logike osigurava formalnu metodologiju zaprikazivanje, manipulaciju i implementaciju ljudskog (ekspertnog) znanja o pro-blemu upravljanja procesom.

53

Neizraziti regulatori se obično koriste za upravljanje nelinearnim procesimakoje nije moguće potpuno matematički opisati, koji su podložni vanjskim smet-njama, kod kojih dolazi do čestih promjena parametara i gdje klasični regulatoriteško zadovoljavaju postavljene zahtjeve. Osobito je pogodan za rješavanje pro-blema koji se teško mogu modelirati kao i za probleme gdje zadaća regulacije nijeeksplicitno definirana.

Neke od osnovnih prednosti neizrazitog upravljanja su: jednostavnost, fleksi-bilnost, robusnost na neprecizne podatke, može se zasnivati na iskustvu ekspertate se može koristiti zajedno sa klasičnim algoritmima upravljanja. Neizrazitu lo-giku nije dobro koristiti kada postoji odgovarajući model upravljanog procesa tekada klasični algoritmi upravljanja daju zadovoljavajuće rezultate.

Slika 5.2: Osnovna struktura neizrazitog regulatora

Osnovna struktura neizrazitog regulatora prikazana je Slikom 5.2. Osnovnefunkcije neizrazitog regulatora su: postupak binarno-neizrazite pretvorbe (engl. fu-zzification), postupak neizrazitog odlučivanja (engl. interference mechanism) ipostupak neizrazito-binarne pretvorbe (engl. defuzzification) [20]. Postupak binarno-neizrazite pretvorbe pretvara izraziti ulaz u sustav, preko funkcija pripadnosti, uneizraziti ulaz, koji zapravo predstavlja ulazne varijable procesa neizrazitog odlu-čivanja. Veza između neizrazitog odlučivanja, koji je skup AKO-ONDA pravila,i izrazitog izlaza jest proces neizrazito-binarne pretvorbe. Neizrazito-binarnompretvorbom neizrazite izlazne varijable pretvaraju se u izraziti izlaz, koji pred-stavlja izlaz iz regulatora tj. upravljački signal.

Svaka od navedenih funkcija sadrži parametre kojima je određena. Baza ne-

54

izrazitih pravila (engl. rule-base), kao središnji dio neizrazitog regulatora, sadržiniz pravila, čiji se broj od regulatora do regulatora može znatno razlikovati. Brojneizrazitih pravila zavisi od broja ulaznih i izlaznih varijabli, te o količini kvalita-tivnih (jezičnih) i kvantitativnih (numeričkih) informacija o procesu i postupcimaupravljanja procesom.

Sinteza neizrazitog algoritma upravljanja temeljena je na empiričkim meto-dama, u osnovi to je metodički pristup metodi pokušaja i pogreške (engl. trial-and-error). Načelni proces sinteze opisan je idućim koracima:

– Analiza i dokumentiranje radnih specifikacija, ulaza i izlaza sustava.

– Analiza i dokumentiranje neizrazitih ulaznih skupova.

– Izrada baze neizrazitih pravila.

– Određivanje metode neizrazito-binarne pretvorbe.

– Izvođenje sistemskog testa i ocijenjivanje kvalitete upravljanja.

– Dokumentiranje postupka i puštanje u rad.

5.3.1. Sinteza algoritma upravljanja

Projektirani neizraziti regulator ima dva ulaza: e - udaljenost loptice od željenevrijednosti i de promjena udaljenosti loptice od željene vrijednosti. Izlaz iz ne-izrazitog regulatora predstavlja kut zakreta osovine servomotora. Definiriano jesedam različitih ulaznih funkcija pripadnosti koje su označene jezičnim varija-blama:

– IN iznimno negativno,

– V N veliko negativno,

– MN malo negativno,

– Z nula,

– MP malo pozitivno,

– V P veliko pozitivno,

– IP iznimno pozitivno.

Istovjetno su definirane i funkcije pripadnosti za de promjenu udaljenosti lopticeod željene vrijednosti.

55

Funkcije pripadnosti ulaznih varijabli

−0.01 −0.005 0 0.005 0.01

0

0.2

0.4

0.6

0.8

1

de

De

gre

e o

f m

em

be

rsh

ip

INde

VNde

MNde

Zde

MPde

VPde

IPde

−0.1 −0.05 0 0.05 0.1

0

0.2

0.4

0.6

0.8

1

e

De

gre

e o

f m

em

be

rsh

ipIN

eVN

eMN

eZ

eMP

eVP

eIP

e

Slika 5.3: Korištene ulazne funkcije pripadnosti

Korištene su linearne troukutaste funkcije pripadnosti (engl. triangular mem-bership function). Vrijednost ulazne veličine e definirana je na području e ∈[−0.1, 0.1], a de na područuju de ∈ [−0.01, 0.01]. Pošto funkcije pripadnosti ujednom trenutku imaju vrijednost 1 neizraziti skup naziva se singleton tipom(engl. fuzzy singleton). Korištenje singletona znatno se smanjuje broj računskih

56

operacija, a time se skraćuje vrijeme proračuna upravljačke veličine neizrazitogregulatora. Prikaz korištenih ulaznih funkcija pripadnosti dan je slikom 5.3. Ko-rištena je neizrazita implikacija (engl. fuzzy implication) tipa min ili implikacijatipa Mamdani. Implikacija tipa min vraća manju vrijednost od dvije uspore-đivane. Neizrazito binarna pretvorba računa se po principu težišta neizrazitogskupa (engl. center of gravity):

u =∑rj=1AjµRj(e, de)∑rj=1 µRj(e, de)

(5.23)

gdje je r broj pobuđenih pravila, a µ stupnjevi istinitosti pobuđenih pravila.Tablica pravila neizrazitog regulatora tj. vrijednosti izlaznih singletona do-

bivina je postupkom emulacije ponašanja klasičnog diskretnog PD regulatora.Parametri PD regulatora dobiveni su metodom pokušaja i pogreške na stvarnomsustavu. Dobivene su vrijednosti pojačanja proporcionalnog člana KR = −16, tevrijednost derivacijske vremenske konstante TD = −0.6875 s.

Prema [20] emulacija klasičnog PD regulatora neizrazitim dobije se uvrštava-njem centara ulaznih neizrazitih skupova u algebarsku jednadžbu:

∆u = uFC = Aij = KRcei + KRTD

Tdc∆ej (5.24)

Gdje Aij predstavlja vrijednost (i, j) singletona, KR predstavlja pojačanje PDregulatora, cei predstavlja centar i-tog e trokutastog ulaznog skupa, TD derivacij-sku vremensku konstantu, Td predstavlja vrijeme diskretizacije a c∆

j e predstavljacentar j-tog de trokutastog ulaznog skupa. Izračun vrijednosti izlaznih single-tona u potpunosti je implementiran korisničkom funkcijom upravljanja danoj uDodatku C.

Upravljačka ploha projektiranog neizrazitog regulatora dana je Slikom 5.4.

57

−0.1−0.0500.050.1

−0.01

0

0.01

−4

−3

−2

−1

0

1

2

3

4

de [m]

Upravljacka ploha koristenog neizrazitog regulatora

e [m]

u [ra

d]

Slika 5.4: Upravljačka ploha korištenog neizrazitog regulatora

58

6. Rezultati

Funkcionalnost sustava ispitana je izvođenjem različitih eksperimenata na stvar-nom sustavu. Kao upravljački algoritam korišten je modificirani projektirani kom-penzacijski regulator, linearni kvadratični (LQR) regulator i neizraziti (engl. fu-zzy) regulator. Navedeni algoritmi upravljanja implementirani su korištenjemmogućnosti unosa vlastitog algoritma upravljanja u razvijenoj glavnoj aplikaciji.Kod svih promatranih algoritama upravljanja korištena je opomoćna upravljačkapetlja objašnjena u Poglavlju 2.6. pisane prednosti i nedostatci projektiranihalgoritama kroz različite odzive dobivene upravljanjem realnog sustava.

Izvedeni eksperimenti koriste se za ocjenjivanje kvalitete upravljanja projek-tiranih i implementiranih algoritama upravljanja. Izvedeni su sljedeći eksperi-menti:

– eksperiment pozicije,

– eksperiment kružnice,

– eksperiment pravca,

– eksperiment kvadrata.

Kao referenti signali za navedene eksperimente korišteni su istim redoslije-dom:

– pozicija s vrijednošću (0.15m, 0.15m) koja predstavlja sredinu platforme;

– sinusna pobuda oblika urefX (t) = 0.05·sin(

2π10 t+ π

2

)+0.15 za x os odnosno

urefY (t) = 0.05 · sin(

2π10 t)

+ 0.15 za y os;

– signal koji opisuje dužinu s vrhovima u (0.2m, 0.1m) (0.1m, 0.2m);

– signal koji opisuje kvadrat s vrhovima u (0.1 m, 0.1 m) (0.2 m, 0.1 m)(0.2m, 0.2m) (0.1m, 0.2m).

Skupni rezultati pojedinih algoritama upravljanja popraćeni kratkim komen-tarima i subjektivnom ocjenom kvalitete upravljanja dani su Tablicama 6.1, 6.2i 6.3.

59

6.1. Truxal-Guillemin kompenzacijski regulator

Parametri regulatora dobiveni sintezom i simulacijama u Matlab Simulink okru-ženju nisu se pokazali dobrima te su parametri regulatora ugađani različitimeksperimentima na stvarnom sustavu. Korišteni algoritam upravljanja zasnovanna projektiranom kompenzacijskom regulatoru u obliku korisničke funkcije glavneaplikacije dan je u Dodatku A. Dani algoritam upravljanja korišten je pri izvođe-nju četiriju eksperimenata te su rezultati priloženi u obliku odziva dobivenih nastvarnom sustavu.

Skupni rezultati popraćeni kratkim komentarima i subjektivnom ocjenom kva-litete upravljanja dani su Tablicom 6.1.

Pokazano je da je projektirani algoritam upravljanja iznad razine prihvatlji-vosti. Ispunjava postavljene zahtjeve kvalitete upravljanja: stabilizira sustav,izvodi različite trajektorije te uspješno rješava problem zakrivljenosti platforme.Prisutno regulacijsko odstupanje i relativno veliko nadvišenje uvjetuju manjuocjenu od ostalih ispitivanih algoritama upravljanja.

Kvaliteta upravljanja smanjuje se značajno bez korištenja pomoćne uprav-ljačke petlje po kutu zakrivljenosti plohe platforme.

60

Tablica 6.1: Rezultati eksperimenata s kompenzacijskim algoritmom upravljanja

Eksperiment Odzivi Ispitivano Komentar Isključena po-moćna uprav-ljačka petlja

Pozicije Slika 6.1 Držanje željene po-zicije i vladanje naporemećaj

Prisutno regula-cijsko odstupanje;uspješna stabiliza-cija i kompenzacijavanjske poreme-ćajne veličine;prisutno nadviše-nje

Nije izvedeno

Kružnice Slika 6.2 Izvođenje kružnicezadanih parame-tara

Prisutno regula-cijsko odstupanje;brzinska pogreška;dobro praćenjereference

Veliko regulacijskoodstupanje; kruž-nica pomaknutaprema slobodnomvrhu platforme

Pravca Slika 6.3 Izvođenje pravcazadanih parame-tara

Prisutno regula-cijsko odstupanje;prisutno nadviše-nje; dobro praćenjereference

Veliko regulacijskoodstupanje; pravacpomaknut premaslobodnom vrhuplatforme

Kvadrata Slika 6.4 Izvođenje kva-drata zadanihparametara

Prisutno regula-cijsko odstupanje;prisutno nadviše-nje; dobro praćenjereference

Veliko regulacij-sko odstupanje;kvadrat pomaknutprema slobodnomvrhu platforme

61

6.1.1. Eksperiment pozicije

Kompenzacijski regulator − eksperiment poremecajne velicine

0 10 20−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 10 20−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 10 200

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 10 200

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.1: Eksperimentalni odziv stabilizacije loptice u zadanoj poziciji korištenjemkompenzacijskog regulatora

62

6.1.2. Eksperiment kružnice

Kompenzacijski regulator − eksperiment kruznice

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.2: Eksperimentalni odziv izvođenja kružnice korištenjem kompenzacijskogregulatora

63

6.1.3. Eksperiment pravca

Kompenzacijski regulator − eksperiment pravca

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.3: Eksperimentalni odziv izvođenja pravca korištenjem kompenzacijskog re-gulatora

64

6.1.4. Eksperiment kvadrata

Kompenzacijski regulator − eksperiment kvadrata

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.4: Eksperimentalni odziv izvođenja kvadrata korištenjem kompenzacijskogregulatora

65

6.2. Linearni kvadratični regulator (engl. Linear-quadratic regulator - LQR)

Korišteni algoritam upravljanja zasnovan na projektiranom LQR regulatoru uobliku korisničke funkcije glavne aplikacije priložen je u Dodatku B. Priloženi al-goritam upravljanja korišten je pri izvođenju četiriju eksperimenata te su rezultatipokazani u obliku odziva dobivenih na stvarnom sustavu.

Skupni rezultati popraćeni kratkim komentarima i subjektivnom ocjenom kva-litete upravljanja dani su Tablicom 6.2.

Pokazano je da je projektirani LQR algoritam upravljanja iznad razine pri-hvatljivosti. Ispunjava postavljene zahtjeve kvalitete upravljanja: stabilizira sus-tav, izvodi različite trajektorije te uspješno rješava problem zakrivljenosti plat-forme. Dinamika LQR algoritma upravljanja velika je te sustav jako brzo kom-penzira poremećajnu veličinu i nagle promjene referentne vrijednosti.

Kvaliteta upravljanja smanjuje se značajno bez korištenja pomoćne uprav-ljačke petlje po kutu zakrivljenosti plohe platforme.

66

Tablica 6.2: Rezultati eksperimenata s LQR algoritmom upravljanja

Eksperiment Odzivi Ispitivano Komentar Isključena po-moćna uprav-ljačka petlja

Pozicije Slika 6.5 Držanje željene po-zicije i vladanje naporemećaj

Prisutno neznatnoregulacijsko od-stupanje; uspješnastabilizacija i kom-penzacija vanjskeporemećajne ve-ličine; prisutnonadvišenje; brzadinamika

Nije izvedeno

Kružnice Slika 6.6 Izvođenje kružnicezadanih parame-tara

Prisutno neznatnoregulacijsko odstu-panje; brzinska po-greška; vrlo dobropraćenje reference

Veliko regulacijskoodstupanje; kruž-nica pomaknutaprema slobodnomvrhu platforme

Pravca Slika 6.7 Izvođenje pravcazadanih parame-tara

Prisutno neznatnoregulacijsko odstu-panje; prisutno na-dvišenje; vrlo do-bro praćenje refe-rence, brza dina-mika

Veliko regulacijskoodstupanje; pravacpomaknut premaslobodnom vrhuplatforme

Kvadrata Slika 6.8 Izvođenje kva-drata zadanihparametara

Prisutno regula-cijsko odstupanje;prisutno nadviše-nje; dobro praćenjereference

Veliko regulacij-sko odstupanje;kvadrat pomaknutprema slobodnomvrhu platforme

67

6.2.1. Eksperiment pozicije

LQR regulator − eksperiment poremecajne velicine

0 5 10 15 20 25−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 5 10 15 20 25−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 5 10 15 20 250

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.5: Eksperimentalni odziv stabilizacije loptice u zadanoj poziciji korištenjemlinearnog kvadratičnog regulatora (LQR)

68

6.2.2. Eksperiment kružnice

LQR regulator − eksperiment kruznice

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.6: Eksperimentalni odziv izvođenja kružnice korištenjem linearnog kvadratič-nog regulatora (LQR)

69

6.2.3. Eksperiment pravca

LQR regulator − eksperiment pravca

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.7: Eksperimentalni odziv izvođenja pravca korištenjem linearnog kvadratičnogregulatora (LQR)

70

6.2.4. Eksperiment kvadrata

LQR regulator − eksperiment kvadrata

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.8: Eksperimentalni odziv izvođenja kvadrata korištenjem linearnog kvadratič-nog regulatora (LQR)

71

6.3. Neizraziti (engl. fuzzy) regulator

Korišteni algoritam upravljanja zasnovan na projektiranom neizrazitom (engl. fu-zzy) regulatoru u obliku korisničke funkcije glavne aplikacije dan je u DodatkuC. Dani algoritam upravljanja korišten je pri izvođenju četiriju eksperimenata tesu rezultati pokazani u obliku odziva dobivenih na stvarnom sustavu.

Skupni rezultati popraćeni kratkim komentarima i subjektivnom ocjenom kva-litete upravljanja dani su Tablicom 6.3.

Pokazano je da je projektirani neizraziti (engl. fuzzy) algoritam upravljanjaiznad razine prihvatljivosti. Ispunjava postavljene zahtjeve kvalitete upravljanja:stabilizira sustav, izvodi različite trajektorije te uspješno rješava problem zakriv-ljenosti platforme. Dinamika neizrazitog algoritma upravljanja velika je te sustavbrzo kompenzira poremećajnu veličinu i nagle promjene referentne vrijednosti.

Kvaliteta upravljanja smanjuje se značajno bez korištenja pomoćne uprav-ljačke petlje po kutu zakrivljenosti plohe platforme.

72

Tablica 6.3: Rezultati eksperimenata s neizrazitim (engl. fuzzy) algoritmom uprav-ljanja

Eksperiment Odzivi Ispitivano Komentar Isključena po-moćna uprav-ljačka petlja

Pozicije Slika 6.9 Držanje željene po-zicije i vladanje naporemećaj

Prisutno neznatnoregulacijsko od-stupanje; uspješnastabilizacija i kom-penzacija vanjskeporemećajne ve-ličine; prisutnonadvišenje; brzadinamika

Nije izvedeno

Kružnice Slika 6.10 Izvođenje kružnicezadanih parame-tara

Prisutno neznatnoregulacijsko odstu-panje; brzinska po-greška; vrlo dobropraćenje reference

Veliko regulacijskoodstupanje; kruž-nica pomaknutaprema slobodnomvrhu platforme

Pravca Slika 6.11 Izvođenje pravcazadanih parame-tara

Prisutno regula-cijsko odstupanje;prisutno na-dvišenje; dobropraćenje reference,brza dinamika

Veliko regulacijskoodstupanje; pravacpomaknut premaslobodnom vrhuplatforme

Kvadrata Slika 6.12 Izvođenje kva-drata zadanihparametara

Prisutno regula-cijsko odstupanje;prisutno na-dvišenje; dobropraćenje reference

Veliko regulacij-sko odstupanje;kvadrat pomaknutprema slobodnomvrhu platforme

73

6.3.1. Eksperiment pozicije

Neizraziti (fuzzy) regulator − eksperiment poremecajne velicine

0 10 20−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 10 20−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 10 200

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 10 200

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.9: Eksperimentalni odziv stabilizacije loptice u zadanoj poziciji korištenjemneizrazitog (engl. fuzzy) regulatora

74

6.3.2. Eksperiment kružnice

Neizraziti (fuzzy) regulator − eksperiment kruznice

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.10: Eksperimentalni odziv izvođenja kružnice korištenjem neizrazitog (engl. fu-zzy) regulatora

75

6.3.3. Eksperiment pravca

Neizraziti (fuzzy) regulator − eksperiment pravca

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.11: Eksperimentalni odziv izvođenja pravca korištenjem neizrazitog (engl. fu-zzy) regulatora

76

6.3.4. Eksperiment kvadrata

Neizraziti (fuzzy) regulator − eksperiment kvadrata

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

0.3Pozicija − bez pomocne upravljacke petlje

x [m]

y [m

]

Uref

(X,Y)

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Uy [ra

d]

UY

0 20 40 60−1.5

−1

−0.5

0

0.5

1

1.5Upravljacki signal

t [s]

Ux [ra

d]

UX

0 20 40 600

0.05

0.1

0.15

0.2

0.25

0.3Pozicija

t [s]

y [m

]

Uref

Y

0 20 40 600

0.05

0.1

0.15

0.2

0.25

Pozicija

t [s]

x [m

]

Uref

X

0 0.1 0.2 0.30

0.05

0.1

0.15

0.2

0.25

Pozicija

x [m]

y [m

]

Uref

(X,Y)

Slika 6.12: Eksperimentalni odziv izvođenja kvadrata korištenjem korištenjem neiz-razitog (engl. fuzzy) regulatora

77

7. Rasprava

Ispitane su sve funkcije sustava korištenjem tri različita algoritma upravljanja.Izrađena glavna aplikacija ispunjava sve navedene funkcionalnosti te se izrađenisustav može koristiti kao platforma za izradu, ispitivanje i ocjenjivanje različitihalgoritama upravljanja.

U Poglavlju 6 dani su različiti rezultati dobiveni korištenjem kompenzacijskog,LQR i neizrazitog algoritma upravljanja. Rezultatima je pokazana primjenjivostsvih algoritama upravljanja ali uz razlike u kvaliteti upravljanja. Tako LQR ineizraziti algoritam upravljanja pokazuju najbolje rezultate. Pokazuju najboljudinamiku i najbolje praćenje referentnih vrijednosti. Kompenzacijski algoritamupravljanja je primjenjiv ali ipak pokazuje značajno lošije rezultate od LQR-a ineizrazitog. Ovakav rezultat očekivan je s obzirom da kompenzacijski algoritamkao ulaznu vrijednost ne uzima de tj. promjenu signala pogreške sustava. Po-kazano je da se kvaliteta upravljanja značajno poboljšava korištenjem pomoćneupravljačke petlje po kutu zakrivljenosti plohe platforme. Može se ustvrditi daje problem zakrivljenosti platforme uspješno riješen. Daljnja poboljšanja kvali-tete upravljanja prvenstveno su uvjetovana poboljšanjem fizičkih karakteristikasamog sustava.

Korištena platforma, kao što je istaknuto, zakrivljena je prema slobodnomneučvršćenom vrhu platforme. Razlog zakrivljenosti nalazi se u činjenici da jeplatforma izrađena od plastičnog materijala koji se s vremenom deformirao. Plohaplatforme nije glatka već je uslijed korištenja oštećena te ima sitne udubine irupice koje stvaraju probleme pri upravljanju. Kvaliteta upravljanja značajno bise poboljšala ispravljanjem te popravljanjem oštećenja koje ploha platforme imauslijed korištenja. Problem mogao bi se riješiti postavljanjem tankog staklenogsloja na samu platformu. Ploha na kojoj bi se kretala loptica bila bi glatka iravna čime bi kvaliteta upravljanja porasla.

Servomotori se upravljaju u otvorenoj petlji tj. sustav zada servomotoru že-ljenu vrijednost te se osovina servomotora okrene za istu. Korisnik servomotora

78

nema informaciju o uspješnosti okretanja osovine čime se može dovoditi u pitanjeuspješnost zakretanja. Korištenjem boljih servomotora za koje bi sustav imaoinformaciju da su dohvatili željenu poziciju kvaliteta upravljanja bi se pobolj-šala. Korišteni servomotori imaju veliku prednost koju predstavlja njihova cijenai dostupnost no ipak trebalo bi razmotriti mogućnost implementacije aktuatoras naprednijim karakteristikama.

Pri ispitivanju različitih algoritama upravljanja u različitim uvjetima osvijet-ljenja u određenim situacijama primjećeno je loše ponašanje vizualne povratneveze. Korišteni algoritam obrade slike u iznimnim situacijama ne hvata pozicijuloptice na platformi već daje vrijednosti koje nisu realne. Ovakva situacija sedogađa u uvjetima promjenjivog i lošeg osvijetljenja ili kada loptica dođe blizuruba plohe platforme. Iako algoritam obrade slike u velikom broju slučajeva hvatapoziciju loptice bez pogreške preporuča se razmatranje naprednijih algoritamaobrade slike. Navedene nepravilnosti u radu povratne djelomično su izbjegnutekorištenjem Kalmanovog filtra koji sadrži jednostavan matematički model lopticena platformi te model mjerenja.

Uzevši u obzir priložene rezultate i pokazane funkcionalnosti može se utvrditida sustav opisan u ovom radu može predstavljati edukacijski model s karakteris-tikama samostalnosti i neovisnosti.

79

8. Zaključak

Ispitivanje upravljačkih algoritama na stvarnim modelima zahtjevniji je, izazov-niji i zanimljiviji problem od ispitivanja u simulacijskim okruženjima. Na real-nom sustavu projektant algoritama upravljanja susreće se s problemima koje nisunužno predviđene na simulacijskim modelima (npr. nepredviđeno trenje, ošteće-nja platforme, različiti uvjeti osvjetljenja koja stvaraju problem algoritmu obradeslike i sl.). Algoritmi upravljanja koji u simulacijskim okruženjima rade savršenona stvarnom sustavu se ne moraju nužno ponašati dobro, ispitivanje na stvarnomsustavu daje ocjenu projektiranog algoritma upravljanja. Sve navedeno pokazujeda rad na stvarnom sustavu upravljanja kao posljedicu ima puno veće dodanevrijednosti nego rad u simulacijskom okruženju.

Sustav je realiziran korištenjem odgovarajućeg sklopovlja i razvijene program-ske podrške. Programska podrška koristi se za upravljanje sustavom, realizacijuvizualne povratne veze, iscrtavanje odziva te dodavanje novih algoritama uprav-ljanja jednostavnim programiranjem u realiziranoj glavnoj aplikaciji. Dodavanjenovih algoritama omogućeno je bez upotrebe dodatnih programskih razvojnihalata što čini razvijenu aplikaciju samostalnom i neovisnom. Osnovni cilj koji jeza zahtjev imao izradu primjenjivog edukacijskog modela ispunjen je.

S ciljem ispitivanja naprednih algoritama upravljanja određen je matematičkimodel platforme koji opisuje gibanje platforme i loptice na njoj. Simulacijamau Matlabu ispitana je ispravnost matematičkog modela. Korištena platforma jezakrivljena te je uvedena pomoćna upravljačka petlja po kutu zakrivljenosti plat-forme. Različitim metodama projektirana su tri algoritma upravljanja korištenapri eksperimentiranju na pravom sustavu. Algoritam upravljanja zasnovan nakompenzacijskom regulatoru pokazuje vidno lošije ponašanje od algoritama zas-novanih na neizrazitom (engl. fuzzy) i linearnom kvadratičnom regulatoru (LQR).Uspješno je riješen problem upravljanja lopticom po platformi koja je zakrivljena.Postavljeni cilj kvalitetnog upravljanja ovakvim sustavom ispunjen je.

Ovaj rad predstavlja zaokruženu cjelinu projektiranja sustava automatskog

80

upravljanja te razvoja edukacijskog modela. Rad obuhvaća postupak analizei sinteze sustava u simulacijskom okruženju i stvarnom okruženju. Realiziranisustav predstavlja samostojeće (engl. stand alone) rješenje koje svojim korisnicimaomogućava ispitivanje i istraživanje klasičnih i naprednih modernih algoritamaupravljanja.

Budući rad na području sustava loptice na platformi sastojao bi se od pobolj-šavanja fizičkih karakteristika samog sustava i poboljšanja korištenog algoritmaobrade slike.

81

Literatura

[1] A. Jadlovska, Š. Jajcisin, and R. Lonscák. Modelling and pid control designof nonlinear educational model ball & plate. U M. Fikar and M. Kvasnica,editors, Proceedings of the 17th International Conference on Process Control’09, stranice 475–483, Strbske Pleso, Slovakia, 2009. Slovak University ofTechnology in Bratislava. Dostupno na: http://www.kirp.chtf.stuba.

sk/pc09/data/papers/038.pdf.

[2] D. Yuan and Z. Zhang. Modelling and control scheme of the ball-platetrajectory-tracking pneumatic system with a touch screen and a rotarycylinder. Control Theory Applications, IET, 4(4):573 –589, april 2010.doi:10.1049/iet-cta.2008.0540.

[3] Xiucheng Dong, Zhang Zhang, and Jiagui Tao. Design of fuzzy neuralnetwork controller optimized by ga for ball and plate system. U Fuzzy Sys-tems and Knowledge Discovery, 2009. FSKD ’09. Sixth International Confe-rence on, svezak 4, stranice 81 –85, aug. 2009. doi:10.1109/FSKD.2009.710.

[4] Huida Duan, Yantao Tian, and Guangbin Wang. Trajectory tracking con-troller design of high-order ball and plate system based on improved auto-disturbance rejection controller. U Systems and Control in Aeronautics andAstronautics (ISSCAA), 2010 3rd International Symposium on, stranice 80–85, june 2010. doi:10.1109/ISSCAA.2010.5633233.

[5] Wang Hongrui, Tian Yantao, Fu Siyan, and Sui Zhen. Nonlinear controlfor output regulation of ball and plate system. U Control Conference, 2008.CCC 2008. 27th Chinese, stranice 382 –387, july 2008. doi:10.1109/CHICC.

2008.4605473.

[6] Ming Bai, Huiqiu Lu, Jintao Su, and Yantao Tian. Motion control of ball andplate system using supervisory fuzzy controller. U Intelligent Control and

82

Automation, 2006. WCICA 2006. The Sixth World Congress on, svezak 2,stranice 8127 –8131, 0-0 2006. doi:10.1109/WCICA.2006.1713557.

[7] A. Knuplez, A. Chowdhury, and R. Svecko. Modeling and control design forthe ball and plate system. U Industrial Technology, 2003 IEEE InternationalConference on, svezak 2, stranice 1064 – 1067 Vol.2, dec. 2003. doi:10.1109/

ICIT.2003.1290810.

[8] Hongrui Wang, Yantao Tian, Ce Ding, Qing Gu, and Feng Guo. Output re-gulation of the ball and plate system with a nonlinear velocity observer. U In-telligent Control and Automation, 2008. WCICA 2008. 7th World Congresson, stranice 2164 –2169, june 2008. doi:10.1109/WCICA.2008.4593259.

[9] M. Moarref, M. Saadat, and G. Vossoughi. Mechatronic design and positioncontrol of a novel ball and plate system. U Control and Automation, 200816th Mediterranean Conference on, stranice 1071 –1076, june 2008. doi:

10.1109/MED.2008.4602212.

[10] Borna Buntić. Vizualna povratna veza u sustavu upravljanja platformom sdva stupnja slobode. Diplomski rad, Fakultet elektrotehnike i računarstvaSveučilišta u Zagrebu, 2007.

[11] Nikola Rosić. Sustav upravljanja platformom s dva stupnja slobode. Di-plomski rad, Fakultet elektrotehnike i računarstva Sveučilišta u Zagrebu,2008.

[12] Ivan Pankretić. Mikroprocesorski sustav upravljanja platformom s dva stup-nja slobode. Diplomski rad, Fakultet elektrotehnike i računarstva Sveučilištau Zagrebu, 2008.

[13] Ivan Hoško. Obrada slike na mikroprocesorskom sustavu gumstix. Diplomskirad, Fakultet elektrotehnike i računarstva Sveučilišta u Zagrebu, 2009.

[14] Lynxmotion. Lynxmotion SSC-32 Servo Controller, 2011. Dostupno na:http://www.lynxmotion.com/p-395-ssc-32-servo-controller.aspx

[posjeceno 2011].

[15] Logitech. Webcam C200, 2011. Dostupno na: http://www.logitech.com/

en-us/webcam-communications/webcams/devices/5865 [posjeceno 2011].

83

[16] M. Harris. Interfacing with a Joystick using C# - CodeProject, 2011.Dostupno na: http://www.codeproject.com/KB/directx/joystick.aspx

[posjeceno 2011].

[17] Ivan Petrović. Predavanja iz predmeta „Računalno upravljanje sustavima“.Fakultet elektrotehnike i računarstva Sveučilišta u Zagrebu, 2011. Dostupnona: http://www.fer.hr/predmet/rus.

[18] Linear-quadratic regulator - Wikipedia, the free encyclopedia. Dostupnona: http://en.wikipedia.org/wiki/Linear-quadratic_regulator [po-sjeceno 2011].

[19] Gene F. Franklin, David J. Powell, and Abbas Emami-Naeini. FeedbackControl of Dynamic Systems. Prentice Hall PTR, Upper Saddle River, NJ,USA, 4th edition, 2002.

[20] Bogdan S. Kovačić, Z. Fuzzy Controller Design - Theory and applications.CRC Press Taylor and Francis Group, 2005.

84

Implementacija nelinearnih algoritama upravljanja platformom s dvastupnja slobode

Sažetak

Cilj ovog rada je izrada edukacijskog modela za istraživanje i ispitivanje na-prednih algoritama upravljanja te ocjenjivanje kvalitete implementiranih algori-tama upravljanja. Loptica koja se pozicionira na platformi primjer je inherentnonestabilnog, nelinearnog te u mnogim slučajevima spregnutog sustava.

Izvedeni su matematički modeli platforme te loptice koja se giba po njoj.Matematički modeli daju podlogu za sintezu algoritma upravljanja te ispitivanjesustava u simulacijskom okruženju Matlab Simulink. Korištena platforma nijeu potpunosti ravna i kruta ploha već je izvitoperena u smjeru slobodnog vrhaplatforme. Zakrivljenost platforme predstavlja dodatan problem pri upravlja-nju koji se rješava uvođenjem pomoćne upravljačke petlje po kutu zakrivljenostiplatforme. Projektirani su napredni algoritmi upravljanja temeljeni na kompen-zacijskom, linearnom kvadratičnom (LQR) te neizrazitom (engl. fuzzy).

Realizirani sustav sastoji se od: platforme pokretane servomotorima s lop-ticom, potrebnog sklopovlja i programske podrške koju izvodi osobno računalo.Sklopovska podrška uključuje web-kameru, kontroler servomotora i igraću palicu.Programska podrška realizirana je kao Windows aplikacija sa sljedećim funkci-jama: korisničko sučelje, realizacija povratne veze sustava preko algoritma obradeslike s web-kamere, realizacija upravljanja sustavom (ručno preko igraće palice ilipreko algoritma upravljanja) i iscrtavanje odziva varijabli sustava (pozicija lopticei upravljačkih signala). Najvažnija funkcija razvijene programske podrške je mo-gućnost dodavanja novih algoritama upravljanja u samoj aplikaciji bez potrebekorištenja alata za razvoj programske podrške.

Ispitane su sve funkcije sustava korištenjem implementiranih algoritama uprav-ljanja. Rezultati različitih eksperimenata na realnom sustavu dokazuju primje-njivost ovakvog rješenja kao samostalnog i neovisnog edukacijskog modela.

Ključne riječi: nelinearni sustav upravljanja, sustav loptice na platformi, vizu-alna povratna veza, dinamičko prevođenje, Linearni kvadratični regulator (LQR),Neizrazito upravljanje, Kalmanov filtar

Non-linear Controller Design Implementation on Two Degree ofFreedom Platform

Abstract

The main objective of the research described in this paper is to develop aneducational model designed for studying, experimenting and evaluating differentimplemented advanced controller designs. The ball and plate is a classic exampleof inherently unstable, non-linear and in many cases coupled system.

The paper describes derived mathematical models representing the ball andplate system. Mathematical models provide a basis for controller designing pro-cess and system testing using Matlab Simulink environment. The plate utilizedis not completely flat and solid; its surface is warped via the direction of theunconstrained plate point. The plate surface curvature is an additional controlproblem, since it introduces more non-linearities. The plate surface curvatureproblem is solved by introducing auxiliary closed control loop based on invertedsurface mathematical model. Various controller designs have been implemented,including: compensator controller, Linear-quadratic regulator (LQR) and a fuzzycontroller.

The system realized in this paper comprises of: two degree of freedom servo-motor driven plate with ball, supporting hardware and software performed on aWindows based personal computer. The supporting hardware consists of: web-cam, servomotor controller and a joystick. The developed software applicationis Windows based and it features: user interface, web-cam feedback using imageprocessing algorithm, real system control (manually via joystick or in automa-tic mode using designed controller) and system response plotting (ball positionand system control signals). The most significant software feature is the newcontroller design adding ability without the need of other software developmenttools.

All of the system features have been tested using deployed controller designs.Various experiment results prove the applicability of the proposed advanced con-troller design testing system as a standalone educational model.

Keywords: non-linear control system, ball and plate system, web-cam feedback,dynamic compilation, linear-quadratic regulator (LQR), fuzzy control system,Kalman filter

86

Dodatak AProgramska realizacijakompenzacijskog regulatora

using System ;

public class Regulator{

stat ic double x_error_pros l i =0;stat ic double y_error_pros l i =0;

public double [ ] a lgor i tam ( double x_error , double y_error , double x_mjereni ,double y_mjereni )

{double [ ] r e g u l a t o r=new double [ 2 ] ;double reg_temp_x , reg_temp_y ;double temp , temp2 ;double x_kut , y_kut ;

reg_temp_x = 1 ∗ 50 .0 ∗ x_error + 40 .0 ∗ x_error_pros l i ;reg_temp_y = 1 ∗ 50 .0 ∗ y_error + 40 .0 ∗ y_error_pros l i ;temp = ( x_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) ∗ 0.0574073 ∗ 2 .0 +

0.0574073 ∗ ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) 0 .0631629 ∗ (1( x_mjereni / 1000 .0 ) / Math . Sqrt ( ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni /

1000 .0 ) + ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) ) ) ;temp2 = ( x_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) ∗ 0.0574073 ∗ 2 .0 +

0.0574073 ∗ ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) 0 .0631629∗ (1 ( y_mjereni / 1000 .0 ) / Math . Sqrt ( ( y_mjereni / 1000 .0 ) ∗ (y_mjereni / 1000 .0 ) + ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) ) ) ;

x_kut = Math . Atan ( temp ) ;y_kut = Math . Atan ( temp2 ) ;

r e g u l a t o r [ 0 ] = reg_temp_x 15 .0 ∗ x_kut ;r e g u l a t o r [ 1 ] = reg_temp_y 15 .0 ∗ y_kut ;

x_error_pros l i=x_error ;y_error_pros l i=y_error ;

return r e g u l a t o r ;}}

87

Dodatak BProgramska realizacija LQRregulatora

using System ;

public class Regulator{

stat ic double x_pros l i =0;stat ic double y_pros l i =0;

public double [ ] a lgor i tam ( double x_ref , double y_ref , double x_mjereni ,double y_mjereni )

{double [ ] r e g u l a t o r=new double [ 2 ] ;double u_temp_x , u_temp_y ;double temp , temp2 ;double x_kut , y_kut ;

double dx , dy ;

double x_mjereni_pravi ;double y_mjereni_pravi ;

x_mjereni_pravi=x_mjereni / 1 0 0 0 . 0 ;y_mjereni_pravi=y_mjereni / 1 0 0 0 . 0 ;

dx=(x_mjereni_pravi x_pros l i ) / 0 . 1 ;dy=(y_mjereni_pravi y_pros l i ) / 0 . 1 ;

u_temp_x = ( 1 5 . 1 0 1 7 ) ∗ x_ref ( dx ∗ ( 9 . 7 0 5 4 )+x_mjereni_pravi ∗ ( 1 5 . 1 0 1 7 ) ) ;u_temp_y = ( 1 5 . 1 0 1 7 ) ∗ y_ref ( dy ∗ ( 9 . 7 0 5 4 )+y_mjereni_pravi ∗ ( 1 5 . 1 0 1 7 ) ) ;

temp = ( x_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) ∗ 0.0574073 ∗ 2 .0 +0.0574073 ∗ ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) 0 .0631629 ∗ (1

( x_mjereni / 1000 .0 ) / Math . Sqrt ( ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni /1000 .0 ) + ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) ) ) ;

88

temp2 = ( x_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) ∗ 0.0574073 ∗ 2 .0 +0.0574073 ∗ ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) 0 .0631629∗ (1 ( y_mjereni / 1000 .0 ) / Math . Sqrt ( ( y_mjereni / 1000 .0 ) ∗ (y_mjereni / 1000 .0 ) + ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) ) ) ;

x_kut = Math . Atan ( temp ) ;y_kut = Math . Atan ( temp2 ) ;

r e g u l a t o r [ 0 ] = u_temp_x 19 .0 ∗ x_kut ;r e g u l a t o r [ 1 ] = u_temp_y 19 .0 ∗ y_kut ;

x_pros l i=x_mjereni_pravi ;y_pros l i=y_mjereni_pravi ;

return r e g u l a t o r ;

}}

89

Dodatak CProgramska realizacijaneizrazitog (engl. fuzzy)regulatora

using System ;

public class Regulator{

stat ic double x_pros l i =0;stat ic double y_pros l i =0;

// d e f i n i c i j a j e z i c n i h v r i j e d n o s t i za estat ic double [ ] IN_e=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] VN_e=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] MN_e=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] Z_e=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] MP_e=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] VP_e=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] IP_e=new double [ 3 ] {0 , 0 , 0} ;

// d e f i n i c i j a j e z i c n i h v r i j e d n o s t i za destat ic double [ ] IN_de=new double [ 3 ] {0 , 0 , 0} ;

stat ic double [ ] VN_de=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] MN_de=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] Z_de=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] MP_de=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] VP_de=new double [ 3 ] {0 , 0 , 0} ;stat ic double [ ] IP_de=new double [ 3 ] {0 , 0 , 0} ;

stat ic bool prv iput=true ;

stat ic double [ , ] Aq=new double [ , ]{

{0 , 0 , 0 , 0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0 , 0 , 0 , 0} ,

90

{0 , 0 , 0 , 0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0 , 0 , 0 , 0}

} ;

public double [ ] a lgor i tam ( double x_ref , double y_ref , double x_mjereni ,double y_mjereni )

{double [ ] r e g u l a t o r=new double [ 2 ] ;double u_fuzzy_x , u_fuzzy_y ;double temp , temp2 ;double x_kut , y_kut ;

double x_error , y_error ;double dx_error , dy_error ;

double suma1_x=0, suma2_x=0;double suma1_y=0, suma2_y=0;int i , j ;

double miIN_ex , miVN_ex ,miMN_ex, miZ_ex , miMP_ex, miVP_ex , miIP_ex ;double miIN_dex , miVN_dex , miMN_dex, miZ_dex , miMP_dex , miVP_dex , miIP_dex ;

double miIN_ey , miVN_ey ,miMN_ey, miZ_ey , miMP_ey, miVP_ey , miIP_ey ;double miIN_dey , miVN_dey , miMN_dey, miZ_dey , miMP_dey , miVP_dey , miIP_dey ;

double [ , ] mi_x=new double [ 7 , 7 ] ;double [ , ] mi_y=new double [ 7 , 7 ] ;

double x_mjereni_pravi ;double y_mjereni_pravi ;

double e_max=0.1;double de_max=0.1/10;

double [ ] e_centr i=new double [ 7 ] {0 , 0 , 0 , 0 , 0 , 0 , 0} ;double [ ] de_centr i=new double [ 7 ] {0 , 0 , 0 , 0 , 0 , 0 , 0} ;

i f ( prv iput ) {prv iput=fa l se ;

IN_e [ 0 ] = 1 0 0 0 0 . 0 ; IN_e [ 1 ] = e_max ; IN_e [ 2 ] = ( e_max∗2) /3 ;VN_e[ 0 ] = e_max ; VN_e[ 1 ] = ( e_max∗2) /3 ; VN_e[2 ]= ( e_max) /3 ;MN_e[ 0 ] = ( e_max∗2) /3 ; MN_e[ 1 ] = ( e_max) /3 ; MN_e[ 2 ] = 0 ;Z_e [ 0 ] = ( e_max) /3 ; Z_e [ 1 ] = 0 ; Z_e [2 ]=(e_max) /3 ;MP_e[ 0 ] = 0 ; MP_e[1 ]=(e_max) /3 ; MP_e[2 ]=(e_max∗2) /3 ;VP_e[0 ]=(e_max) /3 ; VP_e[1 ]=(e_max∗2) /3 ; VP_e[2 ]=e_max ;IP_e [0 ]=(e_max∗2) /3 ; IP_e [1 ]=e_max ; IP_e [ 2 ] = 1 0 0 0 0 . 0 ;

IN_de [ 0 ] = 1 0 0 0 0 . 0 ; IN_de [ 1 ] = de_max ; IN_de [ 2 ] = ( de_max∗2) /3 ;VN_de [ 0 ] = de_max ; VN_de [ 1 ] = ( de_max∗2) /3 ; VN_de[2 ]= ( de_max) /3 ;MN_de[ 0 ] = ( de_max∗2) /3 ; MN_de[ 1 ] = ( de_max) /3 ; MN_de[ 2 ] = 0 ;Z_de [ 0 ] = ( de_max) /3 ; Z_de [ 1 ] = 0 ; Z_de [2 ]=(de_max) /3 ;

91

MP_de[ 0 ] = 0 ; MP_de[1 ]=(de_max) /3 ; MP_de[2 ]=(de_max∗2) /3 ;VP_de[0 ]=(de_max) /3 ; VP_de[1 ]=(de_max∗2) /3 ; VP_de[2 ]=de_max ;IP_de [0 ]=(de_max∗2) /3 ; IP_de [1 ]=de_max ; IP_de [ 2 ] = 1 0 0 0 0 . 0 ;

e_centr i [ 0 ] = e_max ;e_centr i [ 1 ] = ( e_max∗2) /3 ;e_centr i [ 2 ] = ( e_max) /3 ;e_centr i [ 3 ] = 0 ;e_centr i [ 4 ]=(e_max) /3 ;e_centr i [ 5 ]=(e_max∗2) /3 ;e_centr i [6 ]=e_max ;

de_centr i [ 0 ] = de_max ;de_centr i [ 1 ] = ( de_max∗2) /3 ;de_centr i [ 2 ] = ( de_max) /3 ;de_centr i [ 3 ] = 0 ;de_centr i [ 4 ]=(de_max) /3 ;de_centr i [ 5 ]=(de_max∗2) /3 ;de_centr i [6 ]=de_max ;

for ( i =0; i <7; i++){

for ( j =0; j <7; j++){Aq [ i , j ]= 16∗ e_centr i [ i ]+110∗ de_centr i [ j ] ;}

}}

x_mjereni_pravi=x_mjereni / 1 0 0 0 . 0 ;y_mjereni_pravi=y_mjereni / 1 0 0 0 . 0 ;

x_error=x_ref x_mjereni_pravi ;y_error=y_ref y_mjereni_pravi ;

dx_error=(x_mjereni_pravi x_pros l i ) ;dy_error=(y_mjereni_pravi y_pros l i ) ;

miIN_ex = t r i m f ( x_error , IN_e) ;miVN_ex = t r i m f ( x_error ,VN_e) ;miMN_ex = t r i m f ( x_error ,MN_e) ;miZ_ex = t r i m f ( x_error , Z_e) ;miMP_ex = t r i m f ( x_error ,MP_e) ;miVP_ex = t r i m f ( x_error ,VP_e) ;miIP_ex = t r i m f ( x_error , IP_e ) ;

miIN_ey = t r i m f ( y_error , IN_e) ;miVN_ey = t r i m f ( y_error ,VN_e) ;miMN_ey = t r i m f ( y_error ,MN_e) ;miZ_ey = t r i m f ( y_error , Z_e) ;miMP_ey = t r i m f ( y_error ,MP_e) ;miVP_ey = t r i m f ( y_error ,VP_e) ;

92

miIP_ey = t r i m f ( y_error , IP_e ) ;

miIN_dex = t r i m f ( dx_error , IN_de) ;miVN_dex = t r i m f ( dx_error ,VN_de) ;miMN_dex = t r i m f ( dx_error ,MN_de) ;miZ_dex = t r i m f ( dx_error , Z_de) ;miMP_dex = t r i m f ( dx_error ,MP_de) ;miVP_dex = t r i m f ( dx_error ,VP_de) ;miIP_dex = t r i m f ( dx_error , IP_de ) ;

miIN_dey = t r i m f ( dy_error , IN_de) ;miVN_dey = t r i m f ( dy_error ,VN_de) ;miMN_dey = t r i m f ( dy_error ,MN_de) ;miZ_dey = t r i m f ( dy_error , Z_de) ;miMP_dey = t r i m f ( dy_error ,MP_de) ;miVP_dey = t r i m f ( dy_error ,VP_de) ;miIP_dey = t r i m f ( dy_error , IP_de ) ;

// izracun s tupnja i s i t n i t o s t i p r a v i l a k o n j u k c i j a AKO strana p r a v i l ami_x [ 0 , 0 ] = minimum( miIN_dex , miIN_ex ) ;mi_x [ 0 , 1 ] = minimum(miVN_dex , miIN_ex ) ;mi_x [ 0 , 2 ] = minimum(miMN_dex, miIN_ex ) ;mi_x [ 0 , 3 ] = minimum(miZ_dex , miIN_ex ) ;mi_x [ 0 , 4 ] = minimum(miMP_dex , miIN_ex ) ;mi_x [ 0 , 5 ] = minimum(miVP_dex , miIN_ex ) ;mi_x [ 0 , 6 ] = minimum( miIP_dex , miIN_ex ) ;

mi_x [ 1 , 0 ] = minimum( miIN_dex , miVN_ex) ;mi_x [ 1 , 1 ] = minimum(miVN_dex , miVN_ex) ;mi_x [ 1 , 2 ] = minimum(miMN_dex, miVN_ex) ;mi_x [ 1 , 3 ] = minimum(miZ_dex , miVN_ex) ;mi_x [ 1 , 4 ] = minimum(miMP_dex , miVN_ex) ;mi_x [ 1 , 5 ] = minimum(miVP_dex , miVN_ex) ;mi_x [ 1 , 6 ] = minimum( miIP_dex , miVN_ex) ;

mi_x [ 2 , 0 ] = minimum( miIN_dex , miMN_ex) ;mi_x [ 2 , 1 ] = minimum(miVN_dex , miMN_ex) ;mi_x [ 2 , 2 ] = minimum(miMN_dex, miMN_ex) ;mi_x [ 2 , 3 ] = minimum(miZ_dex , miMN_ex) ;mi_x [ 2 , 4 ] = minimum(miMP_dex , miMN_ex) ;mi_x [ 2 , 5 ] = minimum(miVP_dex , miMN_ex) ;mi_x [ 2 , 6 ] = minimum( miIP_dex , miMN_ex) ;

mi_x [ 3 , 0 ] = minimum( miIN_dex , miZ_ex) ;mi_x [ 3 , 1 ] = minimum(miVN_dex , miZ_ex) ;mi_x [ 3 , 2 ] = minimum(miMN_dex, miZ_ex) ;mi_x [ 3 , 3 ] = minimum(miZ_dex , miZ_ex) ;mi_x [ 3 , 4 ] = minimum(miMP_dex , miZ_ex) ;mi_x [ 3 , 5 ] = minimum(miVP_dex , miZ_ex) ;mi_x [ 3 , 6 ] = minimum( miIP_dex , miZ_ex) ;

mi_x [ 4 , 0 ] = minimum( miIN_dex , miMP_ex) ;mi_x [ 4 , 1 ] = minimum(miVN_dex , miMP_ex) ;mi_x [ 4 , 2 ] = minimum(miMN_dex, miMP_ex) ;

93

mi_x [ 4 , 3 ] = minimum(miZ_dex , miMP_ex) ;mi_x [ 4 , 4 ] = minimum(miMP_dex , miMP_ex) ;mi_x [ 4 , 5 ] = minimum(miVP_dex , miMP_ex) ;mi_x [ 4 , 6 ] = minimum( miIP_dex , miMP_ex) ;

mi_x [ 5 , 0 ] = minimum( miIN_dex , miVP_ex) ;mi_x [ 5 , 1 ] = minimum(miVN_dex , miVP_ex) ;mi_x [ 5 , 2 ] = minimum(miMN_dex, miVP_ex) ;mi_x [ 5 , 3 ] = minimum(miZ_dex , miVP_ex) ;mi_x [ 5 , 4 ] = minimum(miMP_dex , miVP_ex) ;mi_x [ 5 , 5 ] = minimum(miVP_dex , miVP_ex) ;mi_x [ 5 , 6 ] = minimum( miIP_dex , miVP_ex) ;

mi_x [ 6 , 0 ] = minimum( miIN_dex , miIP_ex ) ;mi_x [ 6 , 1 ] = minimum(miVN_dex , miIP_ex ) ;mi_x [ 6 , 2 ] = minimum(miMN_dex, miIP_ex ) ;mi_x [ 6 , 3 ] = minimum(miZ_dex , miIP_ex ) ;mi_x [ 6 , 4 ] = minimum(miMP_dex , miIP_ex ) ;mi_x [ 6 , 5 ] = minimum(miVP_dex , miIP_ex ) ;mi_x [ 6 , 6 ] = minimum( miIP_dex , miIP_ex ) ;

mi_y [ 0 , 0 ] = minimum( miIN_dey , miIN_ey ) ;mi_y [ 0 , 1 ] = minimum(miVN_dey , miIN_ey ) ;mi_y [ 0 , 2 ] = minimum(miMN_dey, miIN_ey ) ;mi_y [ 0 , 3 ] = minimum(miZ_dey , miIN_ey ) ;mi_y [ 0 , 4 ] = minimum(miMP_dey , miIN_ey ) ;mi_y [ 0 , 5 ] = minimum(miVP_dey , miIN_ey ) ;mi_y [ 0 , 6 ] = minimum( miIP_dey , miIN_ey ) ;

mi_y [ 1 , 0 ] = minimum( miIN_dey , miVN_ey) ;mi_y [ 1 , 1 ] = minimum(miVN_dey , miVN_ey) ;mi_y [ 1 , 2 ] = minimum(miMN_dey, miVN_ey) ;mi_y [ 1 , 3 ] = minimum(miZ_dey , miVN_ey) ;mi_y [ 1 , 4 ] = minimum(miMP_dey , miVN_ey) ;mi_y [ 1 , 5 ] = minimum(miVP_dey , miVN_ey) ;mi_y [ 1 , 6 ] = minimum( miIP_dey , miVN_ey) ;

mi_y [ 2 , 0 ] = minimum( miIN_dey , miMN_ey) ;mi_y [ 2 , 1 ] = minimum(miVN_dey , miMN_ey) ;mi_y [ 2 , 2 ] = minimum(miMN_dey, miMN_ey) ;mi_y [ 2 , 3 ] = minimum(miZ_dey , miMN_ey) ;mi_y [ 2 , 4 ] = minimum(miMP_dey , miMN_ey) ;mi_y [ 2 , 5 ] = minimum(miVP_dey , miMN_ey) ;mi_y [ 2 , 6 ] = minimum( miIP_dey , miMN_ey) ;

mi_y [ 3 , 0 ] = minimum( miIN_dey , miZ_ey) ;mi_y [ 3 , 1 ] = minimum(miVN_dey , miZ_ey) ;mi_y [ 3 , 2 ] = minimum(miMN_dey, miZ_ey) ;mi_y [ 3 , 3 ] = minimum(miZ_dey , miZ_ey) ;mi_y [ 3 , 4 ] = minimum(miMP_dey , miZ_ey) ;mi_y [ 3 , 5 ] = minimum(miVP_dey , miZ_ey) ;mi_y [ 3 , 6 ] = minimum( miIP_dey , miZ_ey) ;

mi_y [ 4 , 0 ] = minimum( miIN_dey , miMP_ey) ;

94

mi_y [ 4 , 1 ] = minimum(miVN_dey , miMP_ey) ;mi_y [ 4 , 2 ] = minimum(miMN_dey, miMP_ey) ;mi_y [ 4 , 3 ] = minimum(miZ_dey , miMP_ey) ;mi_y [ 4 , 4 ] = minimum(miMP_dey , miMP_ey) ;mi_y [ 4 , 5 ] = minimum(miVP_dey , miMP_ey) ;mi_y [ 4 , 6 ] = minimum( miIP_dey , miMP_ey) ;

mi_y [ 5 , 0 ] = minimum( miIN_dey , miVP_ey) ;mi_y [ 5 , 1 ] = minimum(miVN_dey , miVP_ey) ;mi_y [ 5 , 2 ] = minimum(miMN_dey, miVP_ey) ;mi_y [ 5 , 3 ] = minimum(miZ_dey , miVP_ey) ;mi_y [ 5 , 4 ] = minimum(miMP_dey , miVP_ey) ;mi_y [ 5 , 5 ] = minimum(miVP_dey , miVP_ey) ;mi_y [ 5 , 6 ] = minimum( miIP_dey , miVP_ey) ;

mi_y [ 6 , 0 ] = minimum( miIN_dey , miIP_ey ) ;mi_y [ 6 , 1 ] = minimum(miVN_dey , miIP_ey ) ;mi_y [ 6 , 2 ] = minimum(miMN_dey, miIP_ey ) ;mi_y [ 6 , 3 ] = minimum(miZ_dey , miIP_ey ) ;mi_y [ 6 , 4 ] = minimum(miMP_dey , miIP_ey ) ;mi_y [ 6 , 5 ] = minimum(miVP_dey , miIP_ey ) ;mi_y [ 6 , 6 ] = minimum( miIP_dey , miIP_ey ) ;

for ( i =0; i <7; i++){ for ( j =0; j <7; j++){

suma1_x=suma1_x+Aq [ i , j ] ∗ mi_x [ i , j ] ;suma2_x=suma2_x+mi_x [ i , j ] ;

suma1_y=suma1_y+Aq [ i , j ] ∗ mi_y [ i , j ] ;suma2_y=suma2_y+mi_y [ i , j ] ;

}}

u_fuzzy_x=suma1_x/suma2_x ;u_fuzzy_y=suma1_y/suma2_y ;

temp = ( x_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) ∗ 0.0574073 ∗ 2 .0 +0.0574073 ∗ ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) 0 .0631629 ∗(1 ( x_mjereni / 1000 .0 ) / Math . Sqrt ( ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni/ 1000 .0 ) + ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) ) ) ;

temp2 = ( x_mjereni / 1000 .0 ) ∗ ( y_mjereni / 1000 .0 ) ∗ 0.0574073 ∗ 2 .0 +0.0574073 ∗ ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) 0 .0631629 ∗ (1

( y_mjereni / 1000 .0 ) / Math . Sqrt ( ( y_mjereni / 1000 .0 ) ∗ ( y_mjereni /1000 .0 ) + ( x_mjereni / 1000 .0 ) ∗ ( x_mjereni / 1000 .0 ) ) ) ;x_kut = Math . Atan ( temp ) ;y_kut = Math . Atan ( temp2 ) ;

r e g u l a t o r [0 ]= u_fuzzy_x 19 .0 ∗ x_kut ;r e g u l a t o r [1 ]= u_fuzzy_y 19 .0 ∗ y_kut ;

x_pros l i=x_mjereni_pravi ;y_pros l i=y_mjereni_pravi ;

return r e g u l a t o r ;

95

}public double t r i m f ( double x , double [ ] nesto ){

// h t t p ://www. mathworks . com/ he lp / t o o l b o x / f u z z y / t r i mf . htmldouble a=nesto [ 0 ] ;double b=nesto [ 1 ] ;double c=nesto [ 2 ] ;

i f (x<=a )return 0 . 0 ;

else i f (x>=a && x<=b)return (x a ) /(b a ) ;

else i f (x>=b && x<=c )return ( c x ) /( c b) ;

elsereturn 0 . 0 ;

}public double minimum( double a , double b){

i f ( a<=b)return a ;elsereturn b ;

}}

96