1. INTRODUCERE ………………………….. ………………………….. ………………………….. …………………… 9 1.1…. [614317]
5
CUPRI NS
1. INTRODUCERE ………………………….. ………………………….. ………………………….. …………………… 9
1.1. Stadiul actual al problemei abordate ………………………….. ………………………….. ………….. 10
1.2. Domeniu de aplicabilitate ………………………….. ………………………….. …………………………. 11
1.3. Obiective ………………………….. ………………………….. ………………………….. …………………… 12
1.4. Structura pe capitole ………………………….. ………………………….. ………………………….. ……. 13
2. MODELUL MATEMATIC AL PROCESULUI ………………………….. ………………………….. …… 15
2.1. Modelul matematic al motorului de curent continuu ………………………….. ………………… 15
2.2. Modelul matematic al pendulului invers pe două roți ………………………….. ……………….. 17
2.2.1 Analiza roților ………………………….. ………………………….. ………………………….. ………….. 17
2.2.2 Analiza pendulului ………………………….. ………………………….. ………………………….. ……. 19
2.2.3 Modelul la stare ………………………….. ………………………….. ………………………….. ………… 21
3. STRUCTURA DE REGLA RE ………………………….. ………………………….. ………………………….. . 23
3.1. Analiza răspunsului sistemului în circuit deschis ………………………….. …………………….. 23
3.2. Regulator liniar pătratic ………………………….. ………………………….. ………………………….. .. 24
3.2.1 Controlabilitatea și observabilitatea sistemului ………………………….. ……………………… 25
3.2.2 Metode de alegere a matricelor Q și R ………………………….. ………………………….. …….. 26
3.2.3 Stabilirea ponderilor și simularea sistemului ………………………….. …………………………. 27
3.3. Reglare combinată la stare cu regulator de tip P ………………………….. ………………………. 29
3.4. Reglare com binată la stare cu regulator de eroare de tip I ………………………….. …………. 32
3.5. Descrierea aplicației grafice de simulare a sistemului ………………………….. ………………. 34
3.5.1 Descrierea animatiei ………………………….. ………………………….. ………………………….. ….. 35
4. CONCLUZII ………………………….. ………………………….. ………………………….. ……………………….. 37
4.1 Concluzii generale ………………………….. ………………………….. ………………………….. ………. 37
4.2 Contribuții personale ………………………….. ………………………….. ………………………….. …… 38
4.3 Posibile dezvoltări ulterioare ………………………….. ………………………….. …………………….. 38
BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ……………………… 39
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
6 Anexa A: Coduri Matlab ………………………….. ………………………….. ………………………….. …………… 41
Rezuma t ………………………….. ………………………….. ………………………….. ………………………….. …….. 51
Abstract ………………………….. ………………………….. ………………………….. ………………………….. ……… 52
7
LISTĂ DE FIGURI
Figură Descriere Pagină
Fig.1.1 Modelul pentru mersul și echilibrarea omului de tip pendul invers . 9
Fig.1.2 Sistem pendul invers pentru măsurar ea deplasărilor structurale . 10
Fig.1.3 Ballbot, NXTwayGS, Inverted Pendulum Cart . 11
Fig.1.4 Segway, hoverboard, iBOT . 12
Fig.2.1 Schema echivalentă a motorului de curent continuu 15
Fig.2.2 Sistemul de forțe care acțione ază asupra roților. 17
Fig.2.3. Sistemul de forțe care acționeaza asu pra robotului 19
Fig.2.4 Reprezentare unghiuri 21
Fig.3.1 Răspunsul sistemului în circu it deschis la intrare impuls . 24
Fig.3.2 Poziția și unghiul pendulului pentru Q=I și R=1; 27
Fig.3.3 Poziția și unghiul pendulului pentru Q=I și R=1; 28
Fig.3.4 Poziția și unghiul pendul ului pentru 𝑞1=100 și R=1; 28
Fig.3.5 Poziția și unghiul pendulului pentru 𝑞1=1000 și R=1; 28
Fig.3.6. Poziția și unghiul pendulului pentru ponderi stabilite cu regula lui Bryson 29
Fig.3. 7 Schema bloc a structurii de reglare cu regulator la stare si regulator de eroare . 30
Fig.3.8 Schema de simulare a sistemului la intrare treaptă cu regulator de eroare de tip P.
30
Fig.3.9 Răspunsul sistemului la treaptă pentru q1=1000, q2=1, R=1 31
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
8 Fig.3.10 Răspunsul sistemului la treaptă pentru q33=3.7, R=0.05. 31
Fig.3.11 Mărimea de comandă pentru cele două cazuri.(Bryson – dreapta). 31
Fig.3.12 Schema bloc a structurii de reglare cu regulator la stare si regulator de eroare de tip I ;
32
Fig.3.13 Schema de simulare a sistemului la intrare treaptă cu regulator de eroare de tip I.
32
Fig.3.14 Răspunsul sistemului la treaptă pentru q1=1000, q2=1, R=1 și ki=-1; 33
Fig.3.15 . Răspunsul sistemului la treaptă pentru q1=1000, q2=1, R=1 și ki=-11; 33
Fig.3.16 Răspunsul sistemului la treaptă pentru q33=3.7, R=0.05 și ki=-1 34
Fig.3.17. Răspunsul sistemului la treaptă pentru q33=3.7, R=0.05 și ki=-5 34
Fig.3.18 Schema simulink pentru simularea grafică a sistemului. 35
Fig.3.19 Simulare grafică. 36
9
1. INTRODUCERE
Stadiul actual al problemei abordate
Domeniu de aplicabilitate
Obiective
Structura pe capitole
1
Datorită evoluției tehnologiei din ultimii ani, roboții autonomi pe două roți sunt mai ușor de
construit, în special cei care au rol didactic . Principala caracteristică a unui robot pe două roți
este aceea de a se echil ibra în timp ce se deplasează. Această caracteristică duce la asocierea
robotului cu un model teoretic de tip pendul invers, model clasic intens studiat în automatică.
Pendulul invers este un sistem neliniar, instabil și o bună platformă pentru a testa leg i de reglare.
Cazul clasic de pendul invers este acela în care de un carucior este prinsă o bar ă care are centrul
de greutate deasupra punctului de pivotare iar bara se poate mișca într -o singură direcție. Pentru
a menține bara verticală, căruciorul trebuie mișcat înainte sau înapoi .
Cu excepția roboților mobili pe două roți, cu ajutorul modelului pendulu lui invers mai pot fi
descrise ș i lansarea unei rachete sau mersul unui om. În figura 1.1 este prezentat mersul unui om
modelat ca un pendul invers. Masa totală a omului este considerată concentrată în centrul de
masă și este susținută de o bară fară masă proprie, ce reprezintă de fapt piciorul de sprijin al
omului. Punctul de pivotare al pendulului este reprezentat de articulația gleznei [13].
Fig.1. 1 Modelul pentru mersul și echilibrarea omului de tip pendul invers [13].
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
10 Cu ajutorul pedulului invers sunt măsurate deplasările structurale pe orizontală ale clădirilor
(cum ar fi baraje, turnuri sau clădiri înalte, poduri). Pendulul invers reprezintă de fapt linia de
referință fată de care se măsoară, prin diverse metode, deplasarea structurală. Pendulul este un fir
de oțel fixat în solul de sub structură iar în partea de sus are o unitate de plutire. Unitatea de
plutire e liber ă să se miște într -un tanc cu fluid, iar firul va fi menținut vertical [14]. O astfel de
structură este reprezentată în figura 1.2 [14].
Fig.1. 2 Sistem pendul invers pentru măsurarea deplasărilor structurale [14].
1.1.Stadiul actual al problemei abordat e
Sistemul de tip pendul invers este utilizat tot mai mult cu scop didactic și cercetare , datorită
faptului că este in stabil, este destul de greu de stabilizat și se poate regla cu ajutorul diferitelor
metode de reglare. Pentru a putea stabiliza un sistem de tip pendul invers, în [11], se recomandă
următorii pași:
– obținerea unui model matematic al sistemului de tip pendul invers pentru care se
proiectează structura de reglare și liniarizar ea ecuațiilor obținute în jurul punctului
staționar de funcționare;
– analizarea sistemului în buclă deschisă utilizând locul rădăcinilor ;
– proiectarea unui regulator PID , simularea sistemul ui cu ajutorul MATLAB;
– analizarea răspunsului sistemului în circuit închis;
– implementarea regulatorului pe o platformă reală , de tip că rucior cu regulator
implementat cu amplificatoare opera ționale .
Un robot proiectat pe principiul unui pendul invers este și Ballbot, un robot mobil ce se
deplasează și se echilibrează pe o sferă. Primul robot de acest tip a fost construit în 2005 de Prof.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
11 Ralph Hollis la Carnegie Mellon University, USA. În modelarea matematică a robotului sunt
neglijate modelele actuatorilo r robotului, acesta fiind cons iderat ca un obiect pe o minge (v. fig.
1.3) [15].
Utilizând modelul pendulului invers sunt construiț i și roboți mobili pe două roți. În lucrarea [4],
este construit un robot mobil pe două roți, modelat la stare și controlat cu ajutorul unui sistem de
operare în timp real, printr -o conexiune bluetooth. Pentru reglarea sistemului este utilizat
regulatorul liniar pătratic (LQR -Linear Quadratic Regulator) iar pentru estimarea stărilor, prin
fuziunea senzorilor, se utilizează filtrul Kalman . Robotul este capabil să se deplaseze și să se
echilibreze în același timp. Deplasarea este comandată cu ajutorul unui program prin conexiunea
bluetooth [4].
În lucrarea [3] autorii folosesc o platformă Lego Mindstorms NXT pentru a evidenția importanța
utiliză rii unei platforme didactice în studiul aplicării metodelor de control predictiv (Model
Predictive Control – MPC). În acest sens s -a folosit pendulul invers pentru modelarea unui robot
pe două roți, cu două servo -motoare comandate prin PWM (Pulse Width Modulation – impulsuri
modulate în lățime) și senzor giroscop ic pentru măsurarea vitezei unghiulare a pendulului (v. fig.
1.3)[3].
Un robot mobil autonom cu patru roți construit pentru ca studenții să învețe despre proiectarea,
controlul robotului și despre implementarea pe microcontroller a programelor necesare este
prezentat în lucrarea [12]. Este prezentată structura componentelor electronice ale robotului, dar
și câteva exerciții de laborator realizate de studenți pentru a obține structura de reglare. Controlul
robotului este realizat cu ajutorul reglării la stare, utilizând regulator LQR și estimator complet
(v. fig . 1.3)[12].
Fig.1. 3 Ballbot [15], NXTwayGS [16], Inverted Pendulum Cart [17].
1.2. Domeniu de aplicabilitate
Roboții pe două roți se folosesc pentru transportul persoanelor, cum sunt cei dezvoltati de firma
Segway numiți Segway Personal Transporter (PT).
Segway PT este un vehicol electric, a fost introdus pe piată în 2001 și este inventat de Dean
Kamen. Vehicolu l are motoare electrice, senzori giroscop și inclinometru pentru a detecta
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
12 schimbările din î nclinația ghidonu lui și se echilibrează mișcându -se înainte sau înapoi
(v.fig.1.4 ) [18].
Tot pentru transportul persoanelor se folosesc și scuterele cu auto-echilibrare cunoscute și sub
denumirea de „hoverboard”. Sunt electrice și sunt controlate cu ajutorul senzorilor g iroscop de
către pasager (v.fig.1.4 ).
Un alt exemplu ce poate fi asociat cu un robot pe două roți, este iBOT, un scaun cu rotile electric
dezvoltat de Dean Kamen ce are abilitatea de a urca scări având 2 seturi de roți ce se pot roti
unul în jurul celuilalt. IBOT oferă persoanelor cu dizabil ități abilitatea de a naviga pe teren
dificil, a urca și a coborî scări și a se ridica pentru a permi te utilizatorului sa fie la nivelul ochilor
cu persoanele din jurul lor [19]. Pentru a -și ridica șasiul, iBOT își ridică o pereche de roți peste
cealaltă, devenind astfel un robot pe două roți ce trebuie să aibă abilitatea de a se auto -echilibra,
având și posibilitatea de a se deplasa în această configurație. Echilibrarea se face asemănător ca
la Segway, utilizând senzori giroscop ici și un software ‚iBALANCE’ (v.fig.1.4 ) [20].
Fig.1. 4 Segway [21], hoverboard [22], iBOT [23].
Roboții pe două roți sunt folosiți și în scop didactic deoarece pentru controlul unui astfel de
robot sunt necesare cunoștințe de program are, electronică, mecanică și să nu uităm de importanța
structurii de control a unui sistem de tip pendul invers, siste m foarte larg utilizat în automatică
pentru cercetare și în scop didactic.
1.3.Obiective
Principalul obiectiv al acestei lucrări este proiectarea unei structuri de comandă pentru un robot
mobil cu două roți, astfel încât acesta să se deplaseze la o poziție da tă cât mai repede, în timp ce
își păstreaz ă echilibrul. Deplasarea robotului trebuie realizată cu o mărime de comandă relativ
mică.
Pentru a putea obține o structură de comandă pentru robot, este necesar ca mai întâi robotul
mobil să fie modelat ca un pendul invers. După obținerea modelului matematic se poate trece la
proiectarea structurii de control. Pentru realizarea structurii de r eglare se dorește utilizarea
metodei de control optimal. Pentru urmărirea parametrilor sistemului trebuie realizată o aplicație
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
13 grafică. Parametrii sistemului ce trebuie urmăriti sunt deplasarea unghiulară a robotului fată de
verticală și poziția acestuia față de o referinț ă.
1.4. Structura pe capitole
Lucrarea este structurată pe capitole astfel:
Primul capitol este o introducere în care sunt prezentate pendulul invers, câteva aplicații reale ale
roboților cu două roți și a pendulului invers , lucrări din același domeniu, obiectivele acestei
lucrari câ t și structura ei.
Al doilea capitol descrie detaliat modelul matematic al procesului ce trebuie reglat format din
două motoare de curent continuu care se atașează roților și modelul propriu -zis a l robotului,
model prezentat ca fiind de ti p pendul invers. După obținerea ecuațiilor de mișcare ale
sistemului, se realizează modelarea acestora în spațiul stărilor.
În capitolul 3 este evidențiată instabilitatea sistemului în circuit deschis, este prezen tată structura
de reglare realizată cu metoda de control optimală, regulatorul liniar pătratic, (LQR – Linear
Quadratic Regulator ) și cu reglarea combinată la stare cu regulator de eroare proporțional și cu
regulator de eroare integrativ . Tot în capitolul 3 este de scrisă simularea și animația robotului
realizate cu ajutorul Matlab .
În capitolul 4 sunt prezentate concluziile legate de f olosirea metodei de reglare LQR și posibile
metode de reglare ce mai pot fi folosite pentru reglarea sistemului. De asemenea sunt prezentate
posibile îmbunătățiri ce pot fi aduse reprezentării grafice a sistemului.
15
2. MODELUL MATEMATIC AL PROCESULUI
Modelul matematic al motorului de curent continuu
Modelul matematic al pendulului invers pe două roți
Pentru a putea proiecta structura de reglare și pentru a putea putea simula întregul sistem în
MATLAB sau Simulink este necesară o descriere matematic ă a procesului. Deoarece robotul se
mișcă cu ajutorul a două motoare de curent continuu se va descrie mai întâi modelul matematic
al motorului de curent continuu.
2.1.Modelul matematic al motorului de curent continuu
Înfășurarea rotorică a motorului de curent continuu reală este echivalată cu conexiunea serie a
rezistenței circuitului rotoric 𝑅𝑎 cu inductanța înfășurării 𝐿𝑎.
Schema echivalentă a motorului de curent continuu este prezentată în figura următoare:
Fig.2. 1 Schema echivalentă a motorului de curent continuu [10].
Dacă pe circuitul prezentat în figura 2.1 se aplică teorema a -II-a a lui Kirchhoff se obține ecuația
de funcționare a motorului în regim dinamic [10]:
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
16 𝑢𝑎=𝑅𝑎𝑖𝑎+𝐿𝑎𝑑𝑖𝑎
𝑑𝑡+𝑒 (2.1)
Atunci când curentul prin circuitul rotoric este constant, 𝑖𝑎=𝑐𝑡, 𝑑𝑖𝑎
𝑑𝑡=0 se obține ecuația de
funcționare a motorulu i în regim staționar [10]:
𝑈𝑎=𝑅𝑎𝐼𝑎+𝐸. (2.2)
În regim staționar, căderea de tensiune pe înfășurarea rotorică este egală cu diferența dintre
tensiunea de alimentare a circuitului rotoric 𝑈𝑎 și tensiunea electromotoare indusă prin rotația
motorului 𝐸.
Deoarece înfășurările rotorice, parcurse de cure ntul 𝐼𝑎, se află în câmp magnetic, se formează
cuplul electromagnetic datorită forțelor electromagnetice care solicită con ductoarele înfașurării
rotorice [10]. Cuplul, proporțional cu 𝐼𝑎, în cazul în care fluxul de excitație este constant, este
descris de relația:
𝑀=𝑘Φ𝑒𝑖𝑎=𝑘𝑚𝐼𝑎 (2.3)
Tensiunea electromotoare indusă prin rotația motorului 𝑒, atunci când cuplul electromagnetic
învinge cuplul de sarcină este:
𝐸=𝑘Φ𝑒ω=𝑘𝑒Ω (2.4)
Din relația (2.2) , se obține curentul 𝐼𝑎:
𝐼𝑎=𝑈𝑎−𝑘𝑒Ω
𝑅𝑎 (2.5)
Pentru a obține relația pentru cuplu în regim staționar se înlocuiește relația (2.8) în (2.3):
𝑀=𝑘𝑚
𝑅𝑎𝑈𝑎−𝑘𝑚𝑘𝑒
𝑅𝑎Ω (2.6)
Ecuația de mișcare a sistemului de acționare, în condiția în care se neglijează pierderile interne
în motor es te [10]:
𝑚−𝑚𝑠=𝐽𝑑𝜔
𝑑𝑡 (2.7)
Deoarece cuplul de sarcină reprezintă o perturbație pentru modelu l motorului acesta se consideră
intrare pentru motor . Deci pentru modelul motorului de curent continuu intrarea se va considera
tensiunea de alimentare 𝑢𝑎, iar ieșirea este viteza u nghiulară a motorului, 𝜔. Stările sistemului
vor fi curentul prin circuitul rotoric , 𝑖𝑎 și viteza unghiulară 𝜔 [1].
Un sistem în spațiul stărilor este descris de ecuațiile [5]:
𝒙(𝒕)̇=𝑨𝒙(𝒕)+𝑩𝑢(𝑡) (2.8)
𝒚(𝒕)=𝑪𝒙(𝒕)+𝑫𝑢(𝑡) (2.9)
În care 𝑥(𝑡) este vectoru l variabilelor de stare iar 𝑢(𝑡)este vectorul variabilelor de intrare.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
17 Dacă se înlocuiește cuplul din relația (2.3) în r elația (2.7), din relația (2.7) se poate obține
derivata vitezei un ghiulare în funcție de curentul 𝑖𝑎:
𝑑𝜔
𝑑𝑡=𝑘𝑚
𝐽𝑖𝑎−𝑚𝑠
𝐽 (2.10)
Derivata curentului se obține din relația (2.1) dacă se înlocuiește expresia tensiunii
electromotoare 𝑒 cu relația (2.4):
𝑑𝑖𝑎
𝑑𝑡=−𝑅𝑎
𝐿𝑎𝑖𝑎−𝑘𝑒
𝐿𝑎𝜔+1
𝐿𝑎𝑢𝑎 (2.11)
Modelul la stare pentru motorul de curent continuu în regim dinamic este:
[𝜔̇
𝑖𝑎̇]=
[ 0𝑘𝑚
𝐽
−𝑘𝑒
𝐿𝑎−𝑅𝑎
𝐿𝑎]
[𝜔
𝑖𝑎]+
[ 0−1
𝐽
1
𝐿𝑎0]
[𝑢𝑎
𝑚𝑠] (2.12)
𝑦=[10][𝜔
𝑖𝑎]+[00][𝑢𝑎
𝑚𝑠] (2.13)
2.2.Modelul matematic al pendulului invers pe două roți
Pentru modelarea matematică a robotului se vor analiza separat roțile de pendul, luând în
considerare forțele de interacțiune dintre cele două corpuri. Modelul matematic al pendulului a
fost p reluat din [9].
2.2.1 Analiza roților
Aplicând principiul suprapunerii forțelor,
∑𝐹𝑥=𝑚𝑎 (2.14) 𝑁 𝜃
𝑃
𝑥 𝐹𝑓 𝑀
𝑟
Fig.2. 2 Sistemul de forțe care acționează asupra roților [9].
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
18 Suma forțelor pe orizontală este:
𝑚𝑟𝑥̈=𝐹𝑓−𝑁 (2.15)
unde: 𝑚𝑟 este masa roții, 𝐹𝑓 este forța de frecare, 𝑁 este forță de interacțiune dintre pendul și
roată, 𝑥̈ este accelerația liniară a roților .
Suma momentelor în raport cu centrul roții:
∑𝑀𝑜=𝐽𝜔̇ (2.16)
𝐽𝑟𝜃̈=𝑀−𝐹𝑓𝑟 (2.17)
unde: 𝐽𝑟 este inerția roții, 𝜃̈ este accelerația unghiulară a roților, 𝑀 este cuplul dezvoltat de
motor, 𝑟 este raza roții.
Cuplul care acționează asupra roților de la motorul de curent continuu este:
𝑀=𝑘𝑚
𝑅𝑎𝑈𝑎−𝑘𝑚𝑘𝑒
𝑅𝑎θ̇ (2.18)
unde: 𝑘𝑚 este constanta de cuplu a motorului, 𝑘𝑒 este constanta tensiunii electromotoare, 𝑅𝑎 este
rezistența nominal, 𝑈𝑎 este tensiunea de alimentare , θ̇ este viteza.
Relația (2.17) devine:
𝐽𝑟𝜃̈=𝑘𝑚
𝑅𝑎𝑈𝑎−𝑘𝑚𝑘𝑒
𝑅𝑎θ̇−𝐹𝑓𝑟 (2.19)
Din relația (2.19), pentru forța de frecare se obține următoarea expresie:
𝐹𝑓=𝑘𝑚
𝑅𝑎𝑟𝑈𝑎−𝑘𝑚𝑘𝑒
𝑅𝑎𝑟θ̇−𝐽𝑟
𝑟𝜃̈ (2.20)
Expresia forței de frecare din relația (2.20) se introduce în relația (2.15):
𝑚𝑟𝑥̈=𝑘𝑚
𝑅𝑎𝑟𝑈𝑎−𝑘𝑚𝑘𝑒
𝑅𝑎𝑟θ̇−𝐽𝑟
𝑟𝜃̈−𝑁 (2.21)
Deoarece mișcarea liniară acționează în centrul roții, rotația unghiulară poate fi transformată
într-o mișcare liniară cu ajutorul relațiilor:
𝑥̈=𝜃̈𝑟⇒𝜃̈=𝑥̈
𝑟 (2.22)
𝑥̇=θ̇𝑟⇒ θ̇=𝑥̇
𝑟 (2.23)
Prin transformarea liniară, relația (2.21) devine:
𝑚𝑟𝑥̈=𝑘𝑚
𝑅𝑎𝑟𝑈𝑎−𝑘𝑚𝑘𝑒
𝑅𝑎𝑟𝑥̇
𝑟−𝐽𝑟
𝑟𝑥̈
𝑟−𝑁 (2.24)
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
19 Deoarece robotul are două roți identice, relația (2.24) se dublează și se prelucrează, obținându -se
astfel următoarea expresie:
2(𝑚𝑟+𝐽𝑟
𝑟2)𝑥̈=2𝑘𝑚
𝑅𝑎𝑟𝑈𝑎−2𝑘𝑚𝑘𝑒𝑥̇
𝑅𝑎𝑟2−(𝑁𝑠+𝑁𝑑) (2.25)
2.2.2 Analiza pendulului
Corpul robotului este modelat ca un pendul invers , iar forțele care acționează asupra lui sunt
reprezentate în figura 2.3.
Aplicând principiul suprapunerii forțelor,
∑𝐹𝑥=𝑚𝑝𝑥̈ (2.26)
Suma forțelor pe orizontală este:
𝑚𝑝𝑥̈=(𝑁𝑠+𝑁𝑑)−𝑚𝑝𝑙𝜙̈𝑐𝑜𝑠𝜙+𝑚𝑝𝑙𝜙̇2𝑠𝑖𝑛𝜙 (2.27)
unde: 𝑚𝑝 este masa pendulului, 𝑁𝑠, 𝑁𝑑 sunt forțe de interacțiune dintre roată și pendul, 𝑙 este
lungimea până la centrul de masă al pendulului, 𝜙 este unghiul pendulului, 𝜙̇ este viteza
unghiulară, 𝜙̈ este accelerația unghiulară.
Din relația (2.27) rezultă:
(𝑁𝑠+𝑁𝑑)=𝑚𝑝𝑥̈+𝑚𝑝𝑙𝜙̈𝑐𝑜𝑠𝜙−𝑚𝑝𝑙𝜙̇2𝑠𝑖𝑛𝜙 (2.28)
Aplicând principiul suprapunerii forțelor pentru sistemul perpendicular pe pendul:
∑𝐹𝑥𝑝=𝑚𝑝𝑥̈𝑐𝑜𝑠𝜙 (2.29) 𝑥̈ 𝜙
∑𝐹𝑥𝑝
(𝑃𝑠+𝑃𝑑) (𝑁𝑠+𝑁𝑑) (𝑀𝑠+𝑀𝑑)
𝑚𝑝𝑔 𝑙𝜙̇2 𝑙𝜙̈
Fig.2. 3. Sistemul de forțe care acționeaza asupra robotulu i [9]
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
20 Suma forțelor după axa x a sistemului perpendicular pe pendul este:
(𝑁𝑠+𝑁𝑑)𝑐𝑜𝑠𝜙+(𝑃𝑠+𝑃𝑑)𝑠𝑖𝑛𝜙−𝑚𝑝𝑔𝑠𝑖𝑛𝜙−𝑚𝑝𝑙𝜙̈=𝑚𝑝𝑥̈𝑐𝑜𝑠𝜙 (2.30)
unde: 𝑃𝑠,𝑃𝑑 sunt forțe de interacțiune dintre roți și pendul, 𝑔 este accelerația gravitațională.
Suma momentelor în raport cu centrul de masă al pendulului:
∑𝑀𝑜=𝐽𝜔̇ (2.31)
𝐽𝑝𝜙̈=−(𝑀𝑠+𝑀𝑑)−(𝑃𝑠+𝑃𝑑)𝑙𝑠𝑖𝑛𝜙−(𝑁𝑠+𝑁𝑑)𝑙𝑐𝑜𝑠𝜙 (2.32)
unde: 𝐽𝑝 este inerția pendulului.
Cuplul aplicat pendulului de la motor este:
𝑀𝑠+𝑀𝑑=2𝑘𝑚
𝑅𝑎𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑥̇
𝑟 (2.33)
Înlocui nd relația (2.33) în (2.32) se obține:
𝐽𝑝𝜙̈=−(2𝑘𝑚
𝑅𝑎𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟𝑥̇)−(𝑃𝑠+𝑃𝑑)𝑙𝑠𝑖𝑛𝜙−(𝑁𝑠+𝑁𝑑)𝑙𝑐𝑜𝑠𝜙 (2.34)
Din (2.34) rezultă:
𝐽𝑝𝜙̈+2𝑘𝑚
𝑅𝑎𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟𝑥̇=−(𝑃𝑠+𝑃𝑑)𝑙𝑠𝑖𝑛𝜙−(𝑁𝑠+𝑁𝑑)𝑙𝑐𝑜𝑠𝜙 (2.35)
Prin înmulțirea relației (2.30) cu –𝑙 rezultă:
[−(𝑁𝑠+𝑁𝑑)𝑙𝑐𝑜𝑠𝜙−(𝑃𝑠+𝑃𝑑)𝑙𝑠𝑖𝑛𝜙]+𝑚𝑝𝑔𝑙𝑠𝑖𝑛𝜙+𝑚𝑝𝑙2𝜙̈=−𝑚𝑝𝑙𝑥̈𝑐𝑜𝑠𝜙 (2.36)
Se înlocuiește relația (2.35) în relația (2.36),
𝐽𝑝𝜙̈+2𝑘𝑚
𝑅𝑎𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟𝑥̇+𝑚𝑝𝑔𝑙𝑠𝑖𝑛𝜙+𝑚𝑝𝑙2𝜙̈=−𝑚𝑝𝑙𝑥̈𝑐𝑜𝑠𝜙 (2.37)
Pentru a elimina termenul (𝑁𝑠+𝑁𝑑) din ecuația de mișcare a roților, se înlocuiește relația (2.28)
în relația (2.25):
2(𝑚𝑟+𝐽𝑟
𝑟2)𝑥̈=2𝑘𝑚
𝑅𝑎𝑟𝑈𝑎−2𝑘𝑚𝑘𝑒𝑥̇
𝑅𝑎𝑟2−𝑚𝑝𝑥̈−𝑚𝑝𝑙𝜙̈𝑐𝑜𝑠𝜙+𝑚𝑝𝑙𝜙̇2𝑠𝑖𝑛𝜙 (2.38)
Ecuațiile de mișcare, neliniare, ale sistemului sunt:
−𝑚𝑝𝑙𝑥̈𝑐𝑜𝑠𝜙=(𝐽𝑝+𝑚𝑝𝑙2)𝜙̈+2𝑘𝑚
𝑅𝑎𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟𝑥̇+𝑚𝑝𝑔𝑙𝑠𝑖𝑛𝜙 (2.39)
2𝑘𝑚
𝑅𝑎𝑟𝑈𝑎=(2𝑚𝑟+2𝐽𝑟
𝑟2+𝑚𝑝)𝑥̈+2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟2𝑥̇+𝑚𝑝𝑙𝜙̈𝑐𝑜𝑠𝜙−𝑚𝑝𝑙𝜙̇2𝑠𝑖𝑛𝜙 (2.40)
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
21
2.2.3 Modelul la stare
Pentru liniarizarea ecuațiilor de mișcare se presupune că unghiul 𝜙 este măsurat fată de poziția
de echilibru a pendulului, deci 𝜙=𝜋+𝜑, unde 𝜑 este un unghi mic fată de verticală.
𝑐𝑜𝑠𝜙=cos(𝜋+𝜑)=−𝑐𝑜𝑠𝜑≅−1,𝑠𝑖𝑛𝜙=sin(𝜋+𝜑)=−𝑠𝑖𝑛𝜑≅−𝜑, 𝜙̇2=0 (2.41)
Ecuațiile de mișcare liniarizate sunt:
𝑚𝑝𝑙𝑥̈=(𝐽𝑝+𝑚𝑝𝑙2)𝜑̈+2𝑘𝑚
𝑅𝑎𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟𝑥̇−𝑚𝑝𝑔𝑙𝜑 (2.42)
2𝑘𝑚
𝑅𝑎𝑟𝑈𝑎=(2𝑚𝑟+2𝐽𝑟
𝑟2+𝑚𝑝)𝑥̈+2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟2𝑥̇−𝑚𝑝𝑙𝜙̈ (2.43)
Pentru a obține modelul la stare al procesului din ecuația (2.42) se obține 𝜑̈, iar din ecuația (2.43)
se obține 𝑥̈:
𝜑̈= 𝑚𝑝𝑙
(𝐽𝑝+𝑚𝑝𝑙2)𝑥̈−2𝑘𝑚
𝑅𝑎(𝐽𝑝+𝑚𝑝𝑙2)𝑈𝑎+2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟(𝐽𝑝+𝑚𝑝𝑙2)𝑥̇+𝑚𝑝𝑔𝑙
(𝐽𝑝+𝑚𝑝𝑙2)𝜑 (2.44)
𝑥̈=2𝑘𝑚
𝑅𝑎𝑟(2𝑚𝑟+2𝐽𝑟
𝑟2+𝑚𝑝)𝑈𝑎−2𝑘𝑚𝑘𝑒
𝑅𝑎𝑟2(2𝑚𝑟+2𝐽𝑟
𝑟2+𝑚𝑝)𝑥̇
+𝑚𝑝𝑙
(2𝑚𝑟+2𝐽𝑟
𝑟2+𝑚𝑝)𝜑̈ (2.45)
Prin înlocuirea ecuației (2.44) în (2.43) și a ecuației (2.45) în (2.42), prin calcule se obține
modelul la stare al procesului [9]: 𝜙 𝜑
Fig.2. 4 Reprezentare unghiuri
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
22 [𝑥̇
𝑥̈
𝜑̇
𝜑̈]=
[ 0 1 00
02𝑘𝑚𝑘𝑒(𝑚𝑝𝑙𝑟−𝐽𝑝−𝑚𝑝𝑙2)
𝑅𝑎𝑟2𝛼𝑚𝑝2𝑔𝑙2
𝛼0
0 0 01
02𝑘𝑚𝑘𝑒(𝑟𝛽−𝑚𝑝𝑙)
𝑅𝑎𝑟2𝛼𝑚𝑝𝑔𝑙𝛽
𝛼0]
[𝑥
𝑥̇
𝜑
𝜑̇]
+
[ 0
2𝑘𝑚(𝐽𝑝+𝑚𝑝𝑙2−𝑚𝑝𝑙𝑟)
𝑅𝑎𝑟𝛼
0
2𝑘𝑚(𝑚𝑝𝑙−𝑟𝛽)
𝑅𝑎𝑟𝛼 ]
𝑈𝑎 (2.46)
[𝑥
𝜑]=[1000
0010][𝑥
𝑥̇
𝜑
𝜑̇]+[0
0]Ua (2.47)
𝛽=(2𝑚𝑟+2𝐽𝑟
𝑟2+𝑚𝑝); 𝛼=𝐽𝑝𝛽+2𝑚𝑝𝑙2(𝑚𝑟+𝐽𝑟
𝑟2) (2.48)
23
3. STRUCTURA DE REGLARE
Analiza răspunsului s istemul ui în circuit deschis
Regulator liniar pătratic
Reglare combinată la stare cu regulator de tip P
Reglare combinată la stare cu regulator de eroare de tip I
3.1.Analiza răspunsului sistemului în circuit deschis
Pentru simularea sistemului în Matlab, s -au folosit date preluate din [9].
Tab.3.1. Parametrii și valorile asociate ale pendulului.
Notație Unitatea de
măsură în SI Valoarea
[9] Semnificație
g m/s2 9,81 Accelerația gravitațională
mr Kg 0,03 Masa roții
mp Kg 1,13 Masa pendulului
L M 0,07 Lungimea până la centrul de greutate al pendulului
R M 0,051 Raza roții
Jp kg*m2 0,0041 Momentul de inerție al pendulului
Jr kg*m2 0,000039 Momentul de inerție al roții
km Nm/A 0,006123 Constanta de cuplu a motorului
ke Vs/rad 0,006087 Constanta electromotoare a motorului
Ra Ω 3 Rezistența nominală a motorului
Răspunsul sistemului la intrare impuls este reprezentat în figura 3.1:
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
24
Fig.3. 1 Răspunsul sistemului în circuit deschis la intrare impuls [9].
Se observă că poziția pendulului și unghiul cresc la infinit, ceea c e duce la răsturnarea robotului,
sau la mișcarea în continuu a pendulului .
Polii sistemului sunt: 0; -0.0078; -13.1202; 13.1183. Se observă că unul din poli este în
semiplanul drept ceea ce evidențiază instabilitatea sistemului. Pentru ca un sistem să fie stabil,
toți polii trebuie s ă se afle în semiplanul stâng, să aibe partea r eală negativă.
3.2.Regulator liniar pătratic
Regulatorul liniar patratic (LQR – Linear Quadratic Regulator) LQR este o metodă modernă de
reglare în spațiul stărilor folosită pentru proiectarea regulatoarelor dinamice optimale.
Presupunând un sistem liniar reprezentat în spațiul stărilor și descris de ecuațiile (3.1) și (3.2),
având starea inițială 𝑥(0)=𝑥0:
𝒙(𝒕)̇=𝑨𝒙(𝒕)+𝑩𝑢(𝑡) (3.1)
𝒚(𝒕)=𝑪𝒙(𝒕)+𝑫𝑢(𝑡) (3.2)
Regulatorul LQR se bazează pe minimizarea unui criteriu de performanț ă, reprezentat în relația
(3.3) [4],[7],[8],[9] :
𝐽=∫[𝒙𝑻(𝒕)𝑸𝒙(𝒕)+𝒖𝑻(𝒕)𝑹𝒖(𝒕)]𝑑𝑡∞
0 (3.3)
Mărimea de comandă optimă, care minimizeaz ă criteriul este [4],[7],[8],[9]:
𝑢=−𝑹−𝟏𝑩𝑻𝑷𝒙; 𝑢= −𝒌𝒙 (3.4)
Matricea 𝑷 din relația (3.4) este simetrică, și rezolvă ecua ția matrice ală de tip Ricatti
[4],[7],[8],[9]:
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
25 𝑷𝑨+𝑨𝑻𝑷−𝑷𝑩𝑹−𝟏𝑩𝑻𝑷+𝑸=0 (3.5)
Matrice le 𝑸 și 𝑹 determină importanța stărilor și a mărimii de comandă în funcția criteriu 𝐽,
relația (3.3). Elementele matrice lor 𝑸 și 𝑹 trebuie să fie pozitive , pot fi simetrice . Dimensiunea
matrice i 𝑸 depinde de mărimea matrice i stărilor 𝑨, iar dimensiunea matrice i 𝑹 depinde de
numărul intrărilor sistemului [8], [9]. Mărimea de comandă obținută prin minimizarea funcției
criteriu este optimă pentru orice stare inițială 𝑥(0) [8].
În cazul unui sistem cu o intrare, și patru stări, matricea 𝑹 are un singur element, ia r matricea 𝑸
poate fi de forma:
𝑸=[𝑞1000
0𝑞200
00𝑞30
000𝑞4] (3.6)
în care 𝑞𝑖≥0,𝑖=1:4, reprezintă ponderi asociate stărilor sistemului. Cu cât ponderile din
matricea 𝑸 sunt mai mari, cu atât restricția impusă stărilor respective este mai mare, deci stările
converg mai repede către z ero. Dacă stările converg foarte repede către zero, mărimea de
comandă crește. Cu câ t ponderea din matricea 𝑹 este mai mare, restricția imp usă mărimii de
comandă este mai mare , deci mărimea de comandă va fi mai mică , ceea ce poate influența timpul
de stabilire al sistemului . În cazul în care această pondere este foarte apropiată de 0 (nu poate fi
0), nu există nici o restricție aplicată mărim ii de comandă. Stabilirea ponderilor reprezintă de
fapt un compromis între rapiditatea timpului de răspuns al sistemului și valoarea mărimii de
comandă utilizată.
În Matlab , regulatorul LQR poate fi aplicat cu ajutorul comenzii [K,P,E] = lqr(SYS, Q,R), unde
K este vectorul factorilor de amplificare de pe reacție, P este soluția ecuației algebrice Ricatti
(3.5), E este vectorul polilor sistemului în circuit închis, descris de matricea (𝑨−𝑩𝑲) [8].
Criteriul de performanță 𝐽, poate fi scris și în fun cție de ieșiri astfel [8]:
𝐽=∫[𝒚𝑻(𝒕)𝑸𝒚(𝒕)+𝒖𝑻(𝒕)𝑹𝒖(𝒕)]𝑑𝑡∞
0 (3.7)
În acest caz, forma lui 𝑸, poate fi determinată cu [7],[24]:
𝑸=𝑪𝑻∗𝑪 (3.8)
Astfel pentru fiecare ieșire a sistemului este asociată o pondere, celelalte stări fiind ignorate.
Pentru a aplica această metodă este necesar ca sistemul să fie controlabil . Dacă se folosește
criteriul J pentru ieșiri, sistemul trebuie să fie observabil.
3.2.1 Controlabilitatea și observabilitatea sistemului
Controlabilitatea unui sistem caracterizează capacitatea de modificare (de control) a întregului
set de variabile de stare de către mărimea de intrare. Un sistem descris de matricele A, B se
spune că e ste controlabil dacă există o mă rime de intrare u carepoate transfera orice stare inițială
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
26 x(0) în orice altă stare dorită x(t). Pentru sistemul modelat la stare cu ecuația diferențială
matriceală
𝒙̇=𝑨𝒙+𝑩𝑢 (3.9)
proprietatea de controlabilitate se poate verifica analitic cu ajutorul matricei de controlabilitate
𝑷=[𝑩𝑨𝑩𝑨𝟐𝑩…𝑨𝒏−𝟏𝑩] (3.10)
care este de dimensiune nxn, unde n e ste ordinul sistemului [5].
Matematic, sistemul considerat este controlabil daca rang P=n, conditie care este îndeplinită dacă
determinantul matricei de controlabilitate, P, este diferit de zero [5].
Matricea de controlabilitate pentru sistemul considerat este:
𝑷=[𝑩𝑨𝑩𝑨𝟐𝑩𝑨𝟑𝑩] (3.11)
Controlabilitatea sistemului poate fi verificată în Matlab cu ajutorul functiei ctrb(A,B), care
oferă ca rezultat matricea de controlabilitate. Rangul matricei de controlabilitate este 4, deci
sistemul este controlabil.
Observabilitatea unui sistem caracterizează capacitatea de estimare a unei variabile de stare din
valorile mărimii de ieșire. Spunem că un sistem este observabil, dacă mărimea de ieșire are
componentele determinate (este influențată ) de toate variabilele de stare [5].
Un sistem este observabil dacă, și numai dacă, o stare inițială x(0) poat fi determinată prin
observarea, pe un interval de timp finit T, a mărimii de ieșire y(t) și a mărimii de intrare u(t).
Proprietatea de observabilitate se poate verifica analitic cu ajutorul matri cei de observabilitate
[5]:
𝑸=[𝑪
𝑪𝑨
⋮
𝑪𝑨𝒏−𝟏] (3.12)
Matricea de observabilitate pentru sistemul considerat este:
𝑸=[𝑪
𝑪𝑨
𝑪𝑨𝟐
𝑪𝑨𝟑] (3.13)
Observabilitatea sistemului poate fi verificată în Matlab cu ajutorul functiei obsv(A,C), care
oferă ca rezultat matricea de observabilitate . În raport cu deplasarea x, ca mărime de ieșire
sistemul este observabil, iar rangul matricei de obser vabilitate este 4.
3.2.2 Metode de alegere a matrice lor Q și R
Pentru a alege ponderile celor două matrici, o variantă este de a stabili valorile prin încercări
repetate, și prin simulări până la obținerea rezultatelor dorite.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
27 Pentru alegerea ponderilor se poate opta pentru modificarea matricei R, în timp ce Q=I, se poate
opta pentru modificarea ponderilor din matricea Q, în timp ce R=1, sau se pot modifica
ponderile astfel încât să se modifice raportul Q/R. Trebuie ținut cont de faptul că, regulatorul
LQR se simulează, și se testează pentru o stare inițială x(0).
O altă metodă recomandată în [6] este regula lui Bryson . Se aleg matricile Q și R diagonale, în
care ponderile se stabilesc astfel [6]:
𝑞𝑖𝑖=1
𝑣𝑎𝑙𝑜𝑎𝑟𝑒𝑎 𝑚𝑎𝑥𝑖𝑚ă 𝑎𝑐𝑐𝑒𝑝𝑡𝑎𝑡 ă 𝑝𝑒𝑛𝑡𝑟𝑢 𝑥𝑖2, (3.14)
𝑟𝑖𝑖=1
𝑣𝑎𝑙𝑜𝑎𝑟𝑒𝑎 𝑚𝑎𝑥𝑖𝑚ă 𝑎𝑐𝑐𝑒𝑝𝑡𝑎𝑡 ă 𝑝𝑒𝑛𝑡𝑟𝑢 𝑟𝑖2, (3.15)
3.2.3 Stabilirea ponderilor și simularea sistemului
Pentru stabilirea ponderilor, consider starea inițială a sistemului x(0)=1 , pentru toate stările
sistemului. Pentru început se aleg matricile Q=I și R=1. Ieșirile sistemului sunt reprezentate în
figura 3.2. Se observă timpul mare în care deplasarea ajunge la zero c omparativ cu timpul de
stabilire al unghiului pe care îl face pendulul cu verticala. Timpul de stabilire aproximativ pentru
poziție și unghi : 𝑡𝑠𝑥=34 𝑠, 𝑡𝑠 𝜙=4 𝑠.
Sistemul este stabil. Prin mărirea ponderii asociate deplasării, notată în continuare cu 𝑞1, timpul
de stabilire se micșorează.
Fig.3. 2 Poziția și unghiul pendulului pentru Q=I și R=1;
Pentru 𝑞1=10 și R=1, răspunsul procesului este reprezentat în fig ura 3.3, timpul de stabilire în
acest caz este: 𝑡𝑠𝑥=19 𝑠, 𝑡𝑠 𝜙=3 𝑠.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
28
Fig.3. 3 Poziția și unghiul pendulului pentru Q=I și R=1;
Pentru 𝑞1=100 și R=1, răspunsul procesului este reprezentat în fig ura 3.4, timpul de stabilire
în acest caz este: 𝑡𝑠𝑥=10 𝑠, 𝑡𝑠 𝜙=2.5 𝑠.
Fig.3. 4 Poziția și unghiul pendulului pentru 𝑞1=100 și R=1;
Pentru 𝑞1=1000 și R=1, răspunsul procesului este reprezentat în fig ura 3.5, timpul de stabilire
în acest caz este: 𝑡𝑠𝑥=5.5 𝑠, 𝑡𝑠 𝜙=1.5 𝑠.
Fig.3. 5 Poziția și unghiul pendulului pentru 𝑞1=1000 și R=1;
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
29 Dacă ponderea q1 se mărește mai mult timpul de stabilire se va micșora.
Aplicând regula lui Bryso n, se pot alege ponderile date în (3.11), considerând xmax=1 m, 𝑥̇𝑚𝑎𝑥=
1 𝑚/𝑠, 𝜙𝑚𝑎𝑥=0.52 𝑟𝑎𝑑, 𝜙̇𝑚𝑎𝑥=1 𝑟𝑎𝑑/𝑠.
Răspunsul sistemului este reprezentat în figura 3.6, timpul de stabilire în acest caz este:
𝑡𝑠𝑥=5.6 𝑠, 𝑡𝑠 𝜙=1.5 𝑠.
𝑞11=1; 𝑞22=1; 𝑞33=1
0.522=3.7; 𝑞44=1;𝑟=1
242=0.05. (3.16)
Fig.3. 6. Poziția și unghiul pendulului pentru ponderi stabilite cu regula lui Bryson
3.3. Reglare combinată la stare cu regulator de tip P
Principala caracteristică a reglării la stare este aceea că, prin intermediul acestei metode, toate
stările converg la zero. În cazul în care se dorește ca mărimea de ieșire să urmărească o referința,
în acest caz treaptă unitară, reacția la stare este completată cu un f actor de amplificare , care este
de fapt factorul de amplificare de la regulatorul la sta re, pentru starea considerată.
𝑘𝑟=𝑘1. (3.17)
Schema bloc a structurii de reglare combinată la stare cu regulator de tip P este prezentată in
figura 3.7.:
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
30
Fig.3. 7 Schema bloc a structurii de reglare cu regulator la stare si regulator de eroare [2] .
Pentru modelul considerat, mărimea care trebuie să urmărească referința este deplasarea notată
cu x. Nu se dorește ca unghiul pendulului cu verticala să urmărească o referintă, deoarece acesta
trebuie să fie cât mai mic, și sa tindă către zero.
Pentru simularea sistemului la intrare treaptă se utilizează Matlab și Simulink. Schema Simulink
utilizată pentru generarea ieșirilor este prezentată în figura 3.8. Blocul lqr din figură reprezintă
regulatorul la stare, fară factorul de amplificare pentru deplasare.
Fig.3. 8 Schema de simulare a sistemului la intrare treaptă cu regulator de eroare de tip P.
Timpul de stabilire cel mai mic, pentru regulatorul la stare, l -am obținut pentru ponderi le:
q1=1000 , q2=1, R=1, și pentru ponderile obținute cu regula lui Bryson.
Răspunsul sis temului este reprezentat în figura 3.9. Deoarece unghiul exprimat în radiani, este
foarte mic, timpul de stabilire va fi precizat pentru unghiul exprimat în grade în acest caz .
Performanțele sistemului sunt : 𝑡𝑠𝑥(2%)=4.3 𝑠, 𝑡𝑠 𝜙=5.17 𝑠,𝑚𝑣𝑥=4.3%.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
31
Fig.3. 9 Răspunsul sistemului la treaptă pentru q1=1000, q2=1, R=1
În figura 3.10 este reprezentat răspunsul sistemului la treaptă pentru regulatorul la stare obținut
cu regula lui Bryson. Performanțele sistemului sunt: 𝑡𝑠𝑥(2%)=4.3 𝑠, 𝑡𝑠 𝜙=5 𝑠,𝑚𝑣𝑥=0 %.
Mărimea de comandă, în cazul celor două seturi de ponderi, pentru intrare treaptă , este
reprezentată în figura 3.10. Se observă că în cazul sistemului obținut cu regula lui Bryson,
comanda este mai mică.
.
Fig.3. 10 Răspunsul sistemului la treaptă pentru q33=3.7, R=0.05.
Fig.3. 11 Mărimea de comandă pentru cele două cazuri.(Bryson – dreapta).
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
32 3.4.Reglare combinată la stare cu regulator de eroare de tip I
Regulatorul de eroare de tip I se folosește pentru ca ieșirea să urmărească mărimea de referință,
și eroarea staționară să fie nul ă.
Schema bloc a structurii de reglare combinată la stare cu regulator de tip I este prezentată în
figura 3.12.
Fig.3. 12 Schema bloc a structurii de reglare cu regulator la stare si regulator de eroare de tip I [2];
În [2] se recomandă folosirea acetui tip de reglare atunci când sistemul este de tipul 0, adică nu
are pol în origine. Sistemul în circuit deschis are pol în origine, deci este de tipul 1, de aceea este
suficientă folosirea reglării combinate la stare cu regulator de tip P . Totuși, în acest caz, se
dorește simularea sistemului și cu regulator de eroare de tip I.
Pentru si mularea sistemului s -a folosit Matlab și Simulink. Schema Simulink utilizată pentru
generarea ieșirilor este prezentată în figura 3.13. Blocul lqr din figură reprezintă regulatorul la
stare complet. Blocul I din figură conține integratorul, urmat de factor ul de integrare ki.
Fig.3. 13 Schema de simulare a sistemului la intrare treaptă cu regulator de eroare de tip I.
Pentru regulatorul la stare, se folosesc valorile q1=1000, q2=1, R=1, și valorile obținute cu regula
lui Bryson. Se determină prin simulări valoarea factorului de amplificare al integratorului ki.
Răspunsul sistemului, și mărimea de comandă , pentru q1=1000, q2=1, R=1, este reprezentat în
figura 3.14. Deoarece unghiul exprimat în radiani, este foarte mic, timpul de stabilire va fi
precizat pentru unghiul exprimat în grade în acest caz.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
33 Performanțele sistemului sunt: 𝑡𝑠𝑥(2%)≫30 𝑠,𝑚𝑣𝑥=0%. Se obser vă că sistemul este stabil iar
răspunsul sistemul ui în acest caz este foarte lent. Comanda este foarte mică în acest caz, fată de
comanda obținută cu regulatorul de tip P, la fel și pentru unghi.
Fig.3. 14 Răspunsul sistemului la treaptă pentru q1=1000, q2=1, R=1 și ki=-1;
Deoarece se dorește un răspuns mai rapid, se mărește valoarea factorului de amplificare ki.
Răspunsul sistemului este reprezentat în figura 3.15. Performanțele sistemului sunt: 𝑡𝑠𝑥(2%)=
5.78 𝑠, 𝑡𝑠 𝜙=6.75 𝑠,𝑚𝑣𝑥=0 %.
Fig.3. 15 . Răspunsul sistemului la treaptă pentru q1=1000, q2=1, R=1 și ki=-11;
Pentru valorile obținute cu regula lui Bryson pentru regulatorul la stare, răspunsul sistemului
pentru ki=-1 este reprezentat în figura 3.16. Performanțele sistemului sunt: 𝑡𝑠𝑥(2%)≫30 𝑠,
𝑚𝑣𝑥=0 %. Se observă că răspunsul este puțin mai rapid decât în primul caz, pentru același
factor ki, iar comanda este mai mică.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
34
Fig.3. 16 Răspunsul sistemului la treaptă pentru q33=3.7, R=0.05 și ki=-1
Pentru valorile obținute cu regula lui Bryson pentru regulatorul la stare, răspunsul sistemului
pentru ki=-5 este reprezentat în figura 3.17. Performanțele sistemului sunt: 𝑡𝑠𝑥(2%)=
11.67 𝑠, 𝑡𝑠 𝜙=8.8 𝑠,𝑚𝑣𝑥=0 %. În acest caz, se ating performanțe acceptabile pentru o valoare
mai mică a lui ki. Chiar dacă timpul de stabilire pentru poziție este mai mare, valorile maxime
pentru unghi și comandă sunt mai mici.
Fig.3. 17. Răspunsul sistemului la treaptă pentru q33=3.7, R=0.05 și ki=-5
3.5. Descrierea aplicației grafice de simulare a sistemului
Pentru urmărirea parametrilor sistemului s-a realizat o simulare grafică în care este reprezentat
robotul folosind elemente grafice 3D . Pentru realizarea robotului grafic am folosit V -Realm
Builder, o extensie a MATLAB -ului. V-Realm Builder este un program cu ajutorul căruia se pot
crea lumi virtuale. Programul generează codul VRML (Virtual Reality Modeling Language –
limbaj de modelare a realității virtuale) necesar simulării 3D. Folosind un astfel de program
utilizatorul nu trebuie să stie limbajul pentru a crea o lume virtual ă.
Modelul 3D al sistemului a fost realizat folosind ob iecte predefinite în acest mediu de lucru.
Robotul a fost creat utilizând două cilindre pentru roți și un paralelipiped pentru corpul
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
35 robotului. Mișcarea efectivă a robotului s -a realizat în acest caz prin modificarea coordonatelor
elementelor grafice.
Lumea v irtuală generată se utilizează î mpreună cu modelul cre at în Simulink. M ișcarea
pendulului este generată de fapt de modelul matematic implementat și reglat. Deci se i -a in
considerare doar deplasarea p endulului fată de verticală , 𝜙, și deplasarea ro botului , x. Pentru
păstrarea simplitătii animației, mișcarea robotului este o mișcare liniară (nu s -a reprezentat grafic
mișcarea roților). Legătura efectivă dintre modelul simulat cu ajutorul Simulik și lumea virtuală
creată este realizată cu ajutorul blo cului VR Sink. Acest bloc scrie valoril e generate cu simulink
în câmpurile corespunzătoare în fișierul ce descrie lumea virtuală. Tot cu acest bloc se poate
deschide automat și programul cu ajutorul caruia se vizualizează lumea virtuală, Simulink 3D
Animation software.
Schema Simulink cu ajutorul căreia este realizată simularea și animația sistemului este
prezentată în figura 3.18 .
Fig.3. 18 Schema simulink pentru simularea grafică a sistemului.
3.5.1 Descriere a animatiei
Deoarece robotul are două deplasări ce trebuie vizualizate simultan , a fost necesară generarea a
două fișiere de lume virtuală, pe baza unei singure reprezentări grafice. Astfel pentru a se vedea
deplasarea unghiulară a pendulului fată de verticală este ne cesară apropierea de pendul, și
deplasarea punctului de vizualizare, odată cu robotul. Iar pentru a se vedea efectiv mișcarea
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
36 robotului este nevoie ca punctul de vizualizare să fie fix, și mai depărtat. Acest lucru este posibil
folosindu -se două blocuri si mulink VR Sink, câte unul pentru fiecare mod de vizualizare.
În fig ura 3.1 9. este reprezentată simularea grafică. Forma finală a simulării prezentate în figură a
fost realizată cu ajutorul exemplului din Matlab „Vehicle Dynamics Visualization with Graphs”
care poate fi găsit în help/Simulink 3D Animation/Demos/Simulink Examples.
Fig.3. 19 Simulare grafică.
37
4. CONCLUZII
Concluzii generale
Contribuții personale
Posibile dezoltări ulterioare
4.1 Concluzii generale
În această lucrare s -a studiat procesul de deplasare și ec hilibrare a unui robot pe două roți,
modelat cu ajutorul conceptului de pendul invers.
Pentru a putea realiza structura de reglare pentru robot a fost necesară modelarea matematică a
acestuia. Pentru a realiza reglarea s -a obținut modelul la stare al procesului. S -a dorit utilizarea
metodei de reglare optima lă sau regulatorul LQR. Pentru a obține factorii de amplificare de pe
reacție, trebuie rezolvată ecuația Riccatti. Acest lucru a fost posibil datorită faptului că în Matlab
se poate rezolva ecuația Riccatti cu ajutorul funcției are, iar apoi pe baza soluției se poate
calcula vectorul K. Deasemenea în Matlab este implementată o funcție lqr care oferă direct
vectorul K. Astfel regulatorul LQR devine o metodă destul de ușoară de aplicat din punct de
vedere al codului scris. De asemenea dacă sistemul este controlabil, în urma aplicării acestei
metode, sistemul va fi și stabil.
Principala provocare este aceea de a alege într -un mod cât mai bun, valori pentru cele două
matrici Q și R. O metodă recomandată în bibliografie este aceea de a utiliza regula lui Bryson , în
funcție de anumite restricții impuse variabilelor de stare. O a doua metodă este aceea
experimentală, în care incerci să obții cele mai bune performanțe modificând valorile celor două
matrici. Din primele simulări, pentru stare inițială 1, se observă că timpul de stabilire pentru
poziție este foarte mare, iar cel pentru unghi este bun. Deci s -a dorit micșorarea timpului pentru
poziție. La aceste simulări s -au obținut rezultate bune cu ambele tipu ri de valori. În cazul reglării
combinate la stare cu regulator de eroare de tip P, s -au obținut rezultate mai bune, cu valorile
calculate cu regula lui Bryson. În cazul reglării combinate la stare cu regulator de tip I,
principalul avantaj este acela că m ărimea de comandă este mult mai mică, în ambele cazuri. Cu
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
38 această reglare se poate utiliza regula lui Bryson, dacă nu se dorește un răspuns foarte rapid
pentru poziție, deoarece mărimea de comandă este mai mică. Cu cât mărimea de comandă e mai
mică, timpu l de stabilire pentru poziție va fi mai mare. Din această cauză este destul de greu de
obținut performanțe bune cu o mărime de comandă mică.
Aplicația grafică a fost realizată destul de ușor, cu ajutorul documentației oferite de matlab. A
fost necesară întelegerea și aplicarea informațiilor oferite în documentație. Au fost mici
probleme cu vizualizarea, deoarece nu se vedea mișcarea pendului sau a unghiului. Acest lucru a
fost rezolvat prin adăugarea textului, și a graficelor de sub reprezentări. Tot din această cauză am
realizat cele două reprezentări, de aproape și de departe.
4.2 Contribuții personale
Contribuțiile personale aduse acestei lucrări au fost implementarea pe procesul studiat a
metodelor de reglare la stare: regulatorul LQR împreună cu obținer ea valorilor pentru acesta,
reglarea combinată cu regulator la stare și regulator de er oare de tip P și I și realizarea unei
simulări grafice a sistemului .
4.3 Posibile dezvoltări ulterioare
Se poate face o cercetare mai bună legată de regulatorul LQR, astfel încât, dacă este posibil, să
fie găsită o legătură mai clară între valorile celor două matrici și sistemul ce trebuie reglat.
Pentru acest sistem mai poate fi aplicată și metoda de reglare LQG ( Linear Quadratic Gaussian ),
metodă ce se bazează pe regulator ul LQR, și pe estimator realizat cu filtrul Kalman . De
asemenea se pot aplica și metode avansate de control, cum ar fi SMC (Sliding Mode Control –
control în regim de alunecare).
Legat de simularea grafică a sistemului, în cazul în care suportul fizic o permite, poate fi
îmbunătățită destul de mult. Se pot modela roțile într -un mod în care să se poată vedea mișcarea
acestora. Se poate adăuga un peisaj (numai dacă acesta nu afectează simularea).
Simularea grafică ar putea fi transformată într -o aplicație, în care să se poată modifica anumite
caracteristici ale modelului, eventual să poată fi aplicate mai multe legi de reglare.
39
BIBLIOGRAFIE
[1] Boldișor C., ”Ingineria reglării automate. Îndrumar de laborator.”, Universitatea
Transilvania din Brașov.
[2] Boldișor C., ”Ingineria reglării automate” – Note de curs, Universitatea Transilvania din
Brașov.
[3] Canale M., Brunet Casale S., ”A Lego Mindstorms NXT Experiment for Model Predictive
Control education”, European Control Conference – ECC 2013, Zurich , Switzerland , pp.
2549 -2554.
[4] Carlsson B., Orback P., “Mobile Inverted Pendulum”, Master of Science Thesi s, Chalmers
University of Technology, Gothenburg, Sweden, 2009.
[5] Comnac V., Coman S., Boldișor C., ”Sisteme liniare continue”, Ed. Universității
Transilvania , Brașov, 2009.
[6] Hespanha J. P., ”Lecture Notes on LQR/LQG Controller Design”, 2005.
http://www.uz.zg ora.pl/~wpaszke/materialy/kss/lqrnotes.pdf
[7] Murray R. M., “Lecture 2 – LQR Control”, California Institute of Technology, 2006, –
http://www.cds.caltech.edu/~murray/courses/cds110/wi06/lqr.pdf
[8] Ogata K, “Modern Control Engineering – Fifth Edition”, Prentice Hall Inc. ,2010
[9] Ooi R. C. ”Balancing a Two -Wheeled Autonomous Robot”, Final Year Thesis, University
of Western Australia, 2003.
[10] Sisak F., ” Mașini și acționări electrice”, Note de curs, Universitatea Transilvania din Brașov
[11] Sultan K., ”Inverted Pendulum, Analysis, Design and Implementation ”, Karachi, Pakistan
2003.
[12] White W. N., Wagner J., Blankenau B., Wang Z., Salazar V., ”Design, Build, and Test of an
Autonomous Inverted Pendulum Cart”, American Control Conference (ACC),
2013,Washington, DC, USA, pp. 5913 -5918.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
40 [13] ***http://journal.frontiersin.org/article/10.3389/frobt.2015.00021/full – articol despre
controlul balansului unui robot umanoid
[14] ***http://www.sisgeo.com/products/pendulums/item/direct -and-inverted -pendulum.html –
instrumente de monitorizare geotehni că
[15] ***https://en.wikipedia.org/wiki/Ballbot – robotul mobil Ballbot.
[16] ***http://lejos -osek.sourceforge.net/nxtway_gs.htm
[17] ***http://www.mne.ksu.edu/research/laboratories/dynamic -systems -controls -laboratory –
1/inverted -pendulum – pendul invers Kansas State Uni versity.
[18] ***https://en.wikipedia.org/wiki/Segway_PT – dispozitivul de transport Segway.
[19] ***http://www.dekaresearch.com/ibot.shtml – scaun cu rotile IBOT.
[20] ***https://en.wikipedia.org/wiki/IBOT – scaun cu rotile IBOT.
[21] ***www.segway.com – compania Segway.
[22] ***https://swagway.com/product/real -hoverboard -for-sale/ – magazin on -line.
[23] ***https://msu.edu/~luckie/segway/iBOT/iBOT.html – scaun cu rotile IBOT.
[24] ***http://ctms.engin.umich.edu/CTMS/index.php?example=InvertedPendulum§ion=Sy
stemModeling – tutoriale d e control pentru Matlab și Simulink
41
Anexa A: Coduri Matlab
%Valorile asociate pendulului
g=9.81; %acceleratia gravitationala(m/s^2);
r=0.051; %raza rotii(m);
mr=0.03; %masa rotii (kg);
mp=1.13; %masa pendulului (kg);
Jr=0.000039; %Inertia rotii (kg*m^2);
Jp=0.0041; %inertia pendulului (kg*m^2);
L=0.07; %lungimea pana la centrul de masa;
%Valorile asociate motorului
km=0.006123; %ct de cuplu a motorului (Nm/A);
ke=0.006087; %ct tens electromotoare (Vs/rad);
Ra=3; %rezist nominala (Ohm);
beta=(2*mr+(2*Jr/r^2)+mp);
alpha=(Jp*beta+2*mp*L^2*(mr+Jr/r^2));
%elementele matricei A
a1=(2*km*ke*(mp*L*r -Jp-mp*(L^2)))/(Ra*(r^2)*alpha);
a2=((mp^2)*g*(L^2))/alpha;
a3=(2*km*ke*(r*beta -mp*L))/(Ra*(r^2)*alpha);
a4=(mp*g*L*beta)/alpha;
%elementele matricei B
b1=(2*km*(Jp+mp*L^2 -mp*L*r))/(Ra*r*alpha);
b2=(2*km*(mp*L -r*beta)/(Ra*r*alpha));
A=[0 1 0 0;
0 a1 a2 0;
0 0 0 1;
0 a3 a4 0];
B=[0;
b1;
0;
b2];
C=[1 0 0 0;0 0 1 0];
D=[0;0];
% raspunsul sist in bucla deschisa
sys=ss(A,B,C,D);
[y,t]=impulse(sys,1);
figure('Name','Raspunsul sistemului la impuls in bucla
deschisa' ,'NumberTitle' ,'off','color','w');
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
42 plot(t,y(:,1), '–k',t,y(:,2), '-k','LineWidth' ,1);
title('Raspunsul procesului la impuls ' );
xlabel('timp[s]' );
ylabel('unghi[rad], pozitie[m]' );
xlim([0 1]);
ylim([0 10]);
% simulare sistem stare initiala 1
tmax=10;
T=0:0.02:tmax;
U=zeros(size(T));
%verificare controlabilitate
rang=rank(ctrb(A,B));
sys=ss(A,B,C,D);
%Bryson rule
% Rreg=1/(24^2);
% q1=1;
% q2=1;
% q3=1/(0.52^2);
% q4=1;
Rreg=1;
q1=1000;
q2=1;
q3=1;
q4=1;
Q=[q1 0 0 0;0 q2 0 0;0 0 q3 0;0 0 0 q4];
[k,p,e]=lqr(sys,Q,Rreg)
x0=[1;1;1;1];
Ac=A-B*k;
syso=ss(Ac,B,C,D);
[Y,X]=lsim(Ac,B,C,D,U,T,x0);
[n m]=size(X);
intr=zeros(n);
for i=1:n
intr(i)= -k*X(i,:)';
end;
figure('Name','Raspunsul sistemului -x','NumberTitle' ,'off','color','w');
plot(T,Y(:,1), '-k','LineWidth' ,1);
title('Pozitie' );
xlabel('timp[s]' );
ylabel('pozitie[m]' );
xlim([0 tmax]);
grid;
hold;
figure('Name','Raspunsul sistemului -fi','NumberTitle' ,'off','color','w');
plot(T,Y(:,2), '-k','LineWidth' ,1);
title('Unghi');
xlabel('timp[s]' );
ylabel( 'unghi[rad]' );
xlim([0 tmax]);
grid;
%ylim([0 10]);
figure('Name','Marimea de comanda' ,'NumberTitle' ,'off','color','w');
plot(T,intr, '-k','LineWidth' ,1);
title('Marimea de comanda' );
xlabel('timp[s]' );
ylabel('Va[V]');
xlim([0 1]);
grid;
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
43 %regulator
q1=1000;q2=1;
Q=[q1 0 0 0;0 1 0 0;0 0 q2 0;0 0 0 1];
Rreg=1;
Q=[q1 0 0 0;0 q2 0 0;0 0 q3 0;0 0 0 q4];
%obtinere regulator la stare
[k,s,e]=lqr(A,B,Q,Rreg);
k1=k(1);
k2=k(2);
k3=k(3);
k4=k(4);
kr=k1; %factor amplificare regulator de eroare P
ki=-11; %factor amplificare regulator de eroare I
%afisare grafice reglare combinata simulink
figure('Name','Unghi-Bryson','NumberTitle' ,'off','color','w');
plot(t,fi, '-k','LineWidth' ,1);
title('Unghi');
xlabel('timp[s]' );
ylabel('unghi[grade]' );
grid;
figure('Name','POzitie -Bryson','NumberTitle' ,'off','color','w');
plot(t,x, '-k','LineWidth' ,1);
title('Pozitie ' );
xlabel('timp[s]' );
ylabel('pozitie[m]' );
grid;
figure('Name','Comanda -Bryson','NumberTitle' ,'off','color','w');
plot(t,com, '-k','LineWidth' ,1);
title('Tensiune' );
xlabel('timp[s]' );
ylabel('tensiune[V]' );
grid;
% Codul s-function pentru realizarea ferestrei
function [sys, x0, str, ts, simStateCompliance] = pend_sfunc(t, ~, u, flag,
ax,fis_a,fis_d)
blockHandle = gcbh;
switch flag
% Initializare
case 0
[sys, x0, str, ts, simStateCompliance] = mdlInitializeSizes(ax);
SetBlockCallbacks(blockHandle,fis_a,fis_d);
% Update
case 2
sys = mdlUpdate(t, u, ax, blockHandle);
% Start
case 'Start'
LocalBlockStartFcn(blockHandle,fis_a,fis_d)
% Stop
case 'Stop'
LocalBlockStopFcn(blockHandle)
% NameChange
case 'NameChange'
LocalBlockNameChangeFcn(blockHandle)
% CopyBlock, LoadBlock
case { 'CopyBlock' , 'LoadBlock' }
LocalBlockLoadCopyFcn(blockHandle)
% DeleteBlock
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
44 case 'DeleteBlock'
LocalBlockDeleteFcn(blockHandle)
% DeleteFigure
case 'DeleteFigure'
LocalFigureDeleteFcn();
% Unused flags
case { 3, 9 }
sys = [];
% Unexpected flags
otherwise
if ischar(flag)
DAStudio.error( 'VR:unhandledflag' , flag);
else
DAStudio.error( 'VR:unhandledflag' , num2str(flag));
end
end
% end switchyard
%============================================================================
=
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S -function.
%============================================================================
=
function [sys, x0, str, ts, simStateCompliance] = mdlInitializeSizes(ax)
if length(ax)~=6
DAStudio.error( 'VR:axislimitsmustbedefined' );
end
sizes = simsizes;
sizes.NumCo ntStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 0;
sizes.NumInputs = 3;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [-1 0];
% specify that the simState for this s -function is same as the default
simStateCompliance = 'DefaultSimState' ;
% end mdlInitializeSizes
%============================================================================
=
% mdlUpdate
% Handle discrete state updates, sample time hits, and major time step
% requirements.
%============================================================================
=
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
45 function sys = mdlUpdate(t, u, ax, block)
% always return empty, there are no states
sys = [];
% Locate the figure window associated with this block. If it' s not a valid
% handle (it may have been closed by the user), then return.
FigHandle = Get_3GFigure(block);
if ~ishandle(FigHandle)
return;
end
% get UserData of the figure
ud = get(FigHandle, 'UserData' );
if isempty(ud.XData)
x_data = [t t];
y1_data = [u(1) u(1)];
y2_data = [u(2) u(2)];
y3_data = [u(3) u(3)];
else
x_data = [ud.XData(end) t];
y1_data = [ud.Y1Data(end) u(1)];
y2_data = [ud.Y2Data(end) u(2)];
y3_data = [ud.Y3Data(end) u(3)];
end
% set the graph ranges
set(ud.G1_Axes, 'YLim', ax(1:2));
set(ud.G2_Axes, 'YLim', ax(3:4));
set(ud.G3_Axes, 'YLim', ax(5:6));
% plot the input lines
set(ud.G1_Line, …
'Xdata', x_data, …
'Ydata', y1_data);
set(ud.G2_Line, …
'Xdata', x_data, …
'Ydata', y2_data);
set(ud.G3_Line, …
'Xdata', x_data, …
'Ydata', y3_data);
% update the stored data points
ud.XData(end+1) = t;
ud.Y1Data(end+1) = u(1);
ud.Y2Data(end+1) = u(2);
ud.Y3Data(end+1) = u(3);
set(FigHandle, 'UserData' , ud);
% flush event que ue
drawnow;
% end mdlUpdate
%============================================================================
=
% LocalBlockStartFcn
% Function that is called when the simulation starts.
% Initialize the figure.
%============================================================================
=
function LocalBlockStartFcn(block,fis_a,fis_d)
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
46
% get the figure associated with this block, create a figure if it doesn't
% exist
FigHandle = Get_3GFigure(block);
if ~ishandle (FigHandle)
FigHandle = Create_3GFigure(block,fis_a,fis_d);
end
% get UserData of the figure
ud = get(FigHandle, 'UserData' );
% allow to erase previously drawn lines (if any)
set(ud.G1_Line, 'Erasemode' , 'normal' );
set(ud.G2_Line, 'Erasemode' , 'normal' );
set(ud.G3_Line, 'Erasemode' , 'normal' );
% clear lines
set(ud.G1_Line, 'XData', [], 'YData', []);
set(ud.G2_Line, 'XData', [], 'YData', []);
set(ud.G3_Line, 'XData', [], 'YData', []);
% start at [0,0]; line will be appended in each simulation step
set(ud.G1_Line, 'XData', 0, 'YData', 0, 'Erasemode' , 'none');
set(ud.G2_Line, 'XData', 0, 'YData', 0, 'Erasemode' , 'none');
set(ud.G3_Line, 'XData', 0, 'YData', 0, 'Erasemode' , 'none');
ud.XData = [];
ud.Y1Data = [];
ud.Y2Data = [];
ud.Y3Data = [];
set(FigHandle, 'UserData' , ud);
% end LocalBlockStartFcn
%============================================================================
=
% LocalBlockStopFcn
% At the end of the simulation, set the graph's data to contain
% the complete set of points that were acquired during the simulation.
% Recall that during the simulation, the lines are only small segments from
% the last time step to the current one.
%============================================================================
=
function LocalBlockStop Fcn(block)
FigHandle = Get_3GFigure(block);
if ishandle(FigHandle)
% Get UserData of the figure.
ud = get(FigHandle, 'UserData' );
set(ud.G1_Line, …
'Xdata', ud.XData, …
'Ydata', ud.Y1Data);
set(ud.G2_Line, …
'Xdata', ud.XDat a, …
'Ydata', ud.Y2Data);
set(ud.G3_Line, …
'Xdata', ud.XData, …
'Ydata', ud.Y3Data);
end
% end LocalBlockStopFcn
%============================================================================
=
% LocalBlockNameChangeFcn
% Function that handles name changes of the block.
%============================================================================
=
function LocalBlockNameChangeFcn(block)
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
47 % get the figure associated with this block, if it's valid, change
% the name of the fig ure
FigHandle = Get_3GFigure(block);
if ishandle(FigHandle)
set(FigHandle, 'Name', BlockFigureTitle(block));
end
% end LocalBlockNameChangeFcn
%============================================================================
=
% LocalBlockLoadCopyFcn
% This i s the block LoadFcn and CopyFcn. Initialize the block's
% UserData such that a figure is not associated with the block.
%============================================================================
=
function LocalBlockLoadCopyFcn(block)
Set_3GFigure(block, -1);
% end LocalBlockLoadCopyFcn
%============================================================================
=
% LocalBlockDeleteFcn
% This is the block DeleteFcn. Delete the block's figure window,
% if present, upon deletion of the block.
%============================================================================
=
function LocalBlockDeleteFcn(block)
% Get the figure handle associated with the block, if it exists, delete
% the figure.
FigHandle = Get_3GFigure(block);
if ishandle(FigHandle)
delete(FigHandle);
Set_3GFigure(block, -1);
end
% end LocalBlockDeleteFcn
%============================================================================
=
% LocalFigureDeleteFcn
% This is the figure DeleteFcn. The figure window is
% being deleted, update the block UserData to reflect the change.
%============================================================================
=
function LocalFigureDeleteFcn()
% Get the block associated with this figure and set its figure to -1
ud = get (gcbf, 'UserData' );
if ~isempty(ud)
Set_3GFigure(ud.Block, -1);
end
% end LocalFigureDeleteFcn
%============================================================================
=
% Get_3GFigure
% Retrieves the figure window associated with this S -function block
% from the block's parent subsystem's UserData.
%============================================================================
=
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
48
function FigHandle = Get_3GFigure(block)
if strcmp(get_param(block, 'BlockType' ), 'S-Function' )
block = get_param(block, 'Parent' );
end
FigHandle = get_param(block, 'UserData' );
if isempty(FigHandle)
FigHandle = -1;
end
% end Get_3GFigure
%============================================================================
=
% Set_3GFigure
% Stores the figure window associated with this S -function block
% in the block's parent subsystem's UserData.
%============================================================================
=
function Set_3GFigure(block, FigHandle)
if strcmp(get_param(bdroot, 'BlockDiagramType' ), 'model')
if strcmp(get_param(block, 'BlockType' ), 'S-Function' )
block = get_param(block, 'Parent' );
end
set_param(block, 'UserData' , FigHandle);
end
% end Set_3GFigure
%============================================================================
=
% Create_3GFigure
% Creates the figure window associated with this S -function block.
%============================================================================
=
function FigHandle = Create_3GFigure(block,fis_a,fis_d)
% the figure doesn't exist, create one
scrsz = get(0, 'ScreenSize' );
FigHandle = figure( 'Units', 'pixels' , …
'OuterPosition' , [100 100 scrsz(3) -scrsz(3)/4
scrsz(4) -scrsz(4)/4 ], …
'Color', [0.314 0.314 0.314], …
'Name', BlockFigureTitle(block), …
'Tag', 'pendul_fig' , …
'NumberTitle' , 'off', …
'IntegerHandle' , 'off', …
'Toolbar' , 'none', …
'DeleteFcn' , 'pend_sfunc([], [], [],
''DeleteFigure'', [], [],[])' );
%[1 50 scrsz(3) -50 scrsz(4) -50]
% store the block handle in the figure UserData
ud.Block = block;
% the x-axis (time) range corresponds to the model Stop time
stoptime = str2double(get_param(bdroot, 'StopTime' ));
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
49 % create the first graph in the figure
ud.G1_Axes = axes( 'Position' , [0.05 0.05 0.25 0.3], …
'XGrid', 'on', …
'YGrid', 'on', …
'Color', 'k', …
'XColor' , 'w', …
'YColor' , 'w', …
'XLim', [0 stoptime]);
set(ud.G1_Axes, 'Title', title( 'Pozitie [m]', 'Color', 'w'));
ud.G1_Line = line(0, 0, 'EraseMode' , 'None', 'Color', 'y', 'LineStyle' , '-');
ud.XData = [];
ud.Y1Data = [];
% create the second graph in the figure
ud.G2_Axes = axes( 'Position' , [0.35 0.05 0.25 0.3], …
'XGrid', 'on', …
'YGrid', 'on', …
'Color', 'k', …
'XColor' , 'w', …
'YColor' , 'w', …
'XLim', [0 stoptime]);
set(ud.G2_Axes, 'Title', title( 'Unghi pendul [grade]' , 'Color', 'w'));
ud.G2_Line = line(0, 0, 'EraseMode' , 'None', 'Color', 'y', 'LineStyle' , '-');
ud.XData = [];
ud.Y2Data = [];
% create the third graph in the figure
ud.G3_Axes = axes( 'Position' , [0.65 0.05 0.25 0.3], …
'XGrid', 'on', …
'YGrid', 'on', …
'Color', 'k', …
'XColor' , 'w', …
'YColor' , 'w', …
'XLim', [0 stoptime]);
set(ud.G3_Axes, 'Title', title( 'Comanda pendul [V]' , 'Color', 'w'));
ud.G3_Line = line(0, 0, 'EraseMode' , 'None', 'Color', 'y', 'LineStyle' , '-');
ud.XData = [];
ud.Y3Data = [];
% open vrworld if not open already
vr_world_a = vrworld(fis_a);
if ~isopen(vr_world_a)
open(vr_world_a);
end
ud.vr_world_a = vr_world_a;
% open vrworld if not open already
vr_world_d = vrworld(fis_d);
if ~isopen(vr_world_d)
open(vr_world_d);
end
ud.vr_world_d = vr_world_d;
% create two canvases in the figure
vr.canva s(vr_world_a, 'Parent' , FigHandle, …
'Units', 'normalized' , …
'Position' , [0.03 0.45 0.45 0.4]);
c2 = vr.canvas(vr_world_d, 'Parent' , FigHandle, …
'Units', 'normalized' , …
'Position' , [0.5 0.45 0.45 0.4]);
set(c2, 'Viewpoint' , 'departe' );
% Associate the figure with the block, and set the figure's UserData.
Set_3GFigure(block, FigHandle);
set(FigHandle, 'UserData' , ud, 'HandleVisibility' , 'callback' );
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
50 % end Create_3GFigure
%============================================================================
=
% BlockFigureTitle
% String for figure window title
%============================================================================
=
function title = BlockFigureTitle(block)
iotype = get_param(block, 'iotype' );
if strcmp(iotype, 'viewer' )
title = viewertitle(block, false);
else
title = get_param(block, 'Name');
end
% end BlockFigureTitle
%============================================================================
=
% SetBlockCallbacks
% This sets the callbacks of the block if it is not a reference.
%============================================================================
=
function SetBlockCallbacks(block, fis_a,fis_d)
% the actual source of the block is the parent subsystem
parent = get_param(block, 'Parent' );
% set the callbacks for the block so that it has the proper functionality
callbacks = {
'CopyFcn' , 'pend_sfunc([], [], [], ''CopyBlock'', [], [],[])' ; …
'DeleteFcn' , 'pend_sfunc([], [], [], ''DeleteBlock'', [], [],[])' ; …
'LoadFcn' , 'pend_sfunc([], [], [], ''LoadBlock'', [], [],[])' ; …
'StartFcn' , sprintf( 'pend_sfunc([], [], [], ''Start'', [],
''%s'',''%s'')' , fis_a,fis_d); …
'StopFcn' 'pend_sfunc([], [], [], ''Stop'', [], [],[])' ; …
'NameChangeFcn' , 'pend_sfunc([], [], [], ''NameChange'', [], [],[])' ; …
};
for i=1:length(callbacks)
if ~strcmp(get_param(parent, callbacks{i,1}), callbacks{i,2})
set_param(parent, callbacks{i,1}, callbacks{i,2})
end
end
% end SetBlockCallbacks
51
Rezumat
Pendulul invers este un sistem neliniar și instabil, utilizat pentru aplicarea diverselor metode de
reglare. Este implementat și stiudiat în universităti, este utilizat pentru transport. Poate fi
implementat în diverse forme fizice, cum ar fi o bară prinsă de un cărucir sau roboții pe două
roți. În această lucrare este modelat cu ajutorul conceptului de pendul invers, un robot mobil pe
două roți. Indiferent de implementarea pendulului invers, se dorește echilibrarea pend ulului
folosind legi de reglare.
Modelul matematic al sistemului, necesar pentru aplicarea legilor de reglare se obține folosind
legile lui Newton. În modelul matematic, roțile sunt mișcate de două motoare de curent
continuu, câte unul pentru fiecare roat ă.
Ecuațiile modelului sunt reprezentate folosind variabile de stare, obținându -se astfe l modelul în
spațiul stărilor al robotului.
În acestă lucrare s -a dorit echilibrarea pendulului și urmărirea unei referințe pentru deplasarea
robotului. S -a utilizat re glarea combinată la stare cu regulator de eroare proporțional și cu
regulator de eroare integrativ. Pentru regulatorul de stare s -a utilizat metoda de control LQR.
Sunt prezentate câteva concluzii legate de regulatorul LQR.
Pentru evidențierea rezultatelor într-o formă grafică, a fost realizată o simulare 3D a unui robot
pe două roți, pe baza sistemului modelat și reglat.
52
Abstract
The inverted pendulum is a nonlinear and unstable system used for the application of different
methods of control. It is implemented and studied in universities, it is used for transportation. It
can be implemented in v arious physical forms, such as a rod attached to a cart or robots on two
wheels. In this paper, using the concept of inverted pendulum, a mobile robot on two wheels is
repre sented . Regardless of t he implementation of the inverted pendulum, it is desired to balance
the pendulum using control laws.
The mathematical model of the system , required for th e application of control laws is obtained
using Newton's laws. In the mathematical model, the wheels are driven by two DC motors, one
per wheel.
The model’s equa tions are represented using state variables, thereby obtaining state -space model
of the robot.
In this paper , balancing the pendulum and tracking a reference for the robot displacement was
desired. It was used state control combined with proportional error control and with integrative
error control. For the state controller was used LQR control method. Some conclusions on the
LQR control are presented.
To highlight the results in a graphical form, a 3D simulation of the robot was made based on the
controlled system.
Facultatea de Inginerie Electrică și Știința Calculatoarelor
Departamentul Automatică și Tehnologia Informației
Automatică și Informatică Aplicată
53 DECLARAȚIE
PRIVIND ORIGINALITATEA LUCRĂRII DE DIPLOMĂ
UNIVERSITATEA TRANSILVANIA DIN BRAȘOV
FACULTATEA INGINERIE ELECTRICĂ ȘI ȘTIINȚA CALCULATOARELOR
PROGRAMUL DE STUDIU: AUTOMATICĂ ȘI INFORMATICĂ APLICATĂ
NUMELE ȘI PRENUMELE: CETENICI ELENA VICTORIA
PROMOȚIA: 2016
SESIUNEA DE LICENȚĂ: FEBRUARIE 2017
DENUMIREA LUCRĂRII:
STRUCTURĂ DE CONTROL PENTRU UN ROBOT MOBIL AUTONOM CU DOUĂ
ROȚI DE TIP PENDUL INVERS. MODELARE, ANALIZĂ, SIMULARE
CADRUL DIDACTIC ÎNDRUMĂTOR: PROF. DR. ING. FLORIN MOLDOVEANU
Declar pe propria răspundere că lucrarea de față este rezultatul muncii mele, pe
baza cercetărilor proprii și pe baza informațiilor obținute din surse care au fost citate și
indicate conform normelor etice, în textul lucrării, în note și bibliografie.
Declar că nu am folosit în mod tacit sau ilegal munca altora și că nici o parte din
teză/proiect nu încalcă drepturile de proprietate intelectuală ale altcuiva, persoană fizi că
sau juridică.
Declar că lucrarea nu a mai fost prezentată sub această formă vreunei instituții de
învățământ superior în vederea obținerii unui grad sau titlu științific ori didactic.
În cazul constatării ulterioare a unor declarații false, voi suporta rigorile legii.
Data: Cetenici Elena Victoria
02.02.2017
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: 1. INTRODUCERE ………………………….. ………………………….. ………………………….. …………………… 9 1.1…. [614317] (ID: 614317)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
