Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICENȚĂ
Absolvent
Crișu Alin Gabriel
Coordonator
S.l.dr.ing. Florin Stoican
București, 2016
Cuprins
1 Introducere 5
5 Strategii de control 26
5.1 Controlul de traiectorie cu un controller PID . . . . . . . . . . . . . . . . . 26
5.2 Cuplarea controller-ului de stabilizare TC cu controller-ul PID de control
al traiectoriei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3 Introducerea frecării cu aerul . . . . . . . . . . . . . . . . . . . . . . . . . 33
8 Concluzii 52
9 Anexă 54
1
C Cuplarea controller-ului TC de nivel jos cu controller-ul PID de nivel
sus 58
C.1 Controller-ul PID de nivel sus . . . . . . . . . . . . . . . . . . . . . . . . . 58
C.2 Schema Simulink a cuplării . . . . . . . . . . . . . . . . . . . . . . . . . . 58
C.3 Scriptul de inițializare de parametrii(conține și coeficienții de frecare) . . . 58
Bibliografie 67
2
Listă de figuri
2.1 Quadcopter Crazyflie 2.0[9] . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Structura Hardware a quadcopterului[9] . . . . . . . . . . . . . . . . . . . 8
2.3 Modulul radio Crazyradio[9] . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4 Controlul UAV-ului de pe PC . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Controlul UAV-ului de pe telefon . . . . . . . . . . . . . . . . . . . . . . . 11
3.1 Ilustrarea forțelor, mărimilor și a celor două cadre de referință[3] . . . . . . 13
4.1 Schema clasică de control al quadcopter-ului . . . . . . . . . . . . . . . . . 15
4.2 Mulțimile fezabile de parametrii de reglare ai controller-ului TC bazat pe
factori de corecție PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Mulțimile fezabile de parametrii de reglare ai controller-ului TC bazat pe
factori de corecție PID cu Kp = 25 . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Mulțimile fezabile de parametrii de reglare ai controller-ului TC bazat pe
factori de corecție PD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.5 Urmărire de unghi cu PID . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.6 Urmărire de unghi cu TC . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.7 Urmărire de unghi cu PID . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.8 Urmărire de unghi cu TC . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.1 Interacțiunile dintre stări, derivatele stărilor și comenzile de intrare . . . . 27
5.2 Influențele variației unghiurilor de rotație față de poziționarea în spațiu . . 28
5.3 Monitorizarea comportamentului sistemului cuplat (TC+PID) . . . . . . . 29
5.4 Monitorizarea comportamentului sistemului cuplat (TC+PID) . . . . . . . 30
5.5 Monitorizarea comportamentului sistemului cuplat (TC+PID) . . . . . . . 30
5.6 Monitorizarea comportamentului sistemului cuplat (TC+PID) . . . . . . . 31
5.7 Monitorizarea comportamentului sistemului cuplat (TC+PID) . . . . . . . 32
5.8 Monitorizarea comportamentului sistemului cuplat (TC+PID) . . . . . . . 33
5.9 Monitorizarea comportamentului sistemului cuplat(TC+PID) cu frecare . . 34
5.10 Monitorizarea comportamentului sistemului cuplat(TC+PID) cu frecare . . 35
6.2 Monitorizarea comportamentului sistemului cuplat (TC+PD) cu frecare . . 36
6.1 Monitorizarea comportamentului sistemului cuplat (TC+PD) cu frecare . . 37
6.3 Monitorizarea comportamentului sistemului cuplat (TC+PD) cu frecare . . 37
6.4 Monitorizarea comportamentului sistemului cuplat (TC+PD) cu frecare . . 38
7.1 Schema MPC discretă[11] . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2 Monitorizarea comportamentului sistemului cuplat(TC+MPC+PID) . . . 47
7.3 Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit 47
7.4 Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit 48
7.5 Monitorizarea comportamentului sistemului cuplat(TC+MPC+PID) cu
frecare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.6 Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit 50
7.7 Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit 51
3
Listă de tabele
3.1 Controlul vitezelor rotoarelor ale UAV-ului[12] . . . . . . . . . . . . . . . . 14
4.1 Parametrii de reglare a controller-ului PID de nivel jos . . . . . . . . . . . 23
4.2 Parametrii de reglare a controller-ului TC bazat pe PID de nivel jos . . . . 24
4.3 Al doilea set de parametrii de reglare a controller-ului PID de nivel jos . . 25
4.4 Al doilea set de parametrii de reglare a controller-ului TC bazat de PID
de nivel jos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.1 Primul set de parametrii de reglare corespunzătoare primei strategii de
control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.2 Al doilea set de parametrii de reglare corespunzătoare primei strategii de
control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.3 Ultimul set de parametrii de reglare corespunzătoare primei strategii de
control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7.1 Parametrii de reglare a controller-ului PID din cadrul ultimei strategii de
reglare optimale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4
1 Introducere
5
o dinamică internă a dronei. Pe baza acestei dinamici obținute vom detalia separat câte
o strategie de control, după care o vom analiza din punct de vedere al implementabilității
prin intermediul unor simulări în Simulink/Matlab.
Aceste strategii de control se bazează pe aceeași structură de reglare de tip cascadă,
diferențele făcându-se remarcate la nivel de legi de reglare a cel puțin unuia dintre cele
două controllere de nivel sus sau jos. Menționez că pentru situația controller-ului de nivel
jos se va testa separat funcționalitatea acestuia prin decuplarea de bucla externă, însă
pentru situația controller-ului de nivel sus decuplarea nu va fi posibilă și deci testarea se
va realiza cu o variantă deja aleasă a controller-ului de nivel jos(varianta cu cele mai bune
performanțe înregistrate).
Așadar, inițial se vor analiza separat 3 variante de control al buclei interne de
reglare din punctul de vedere al stabilității și al urmăririi de referință, după care va avea
loc cuplarea buclei interne de reglare cu cele mai bune perfomanțe înregistrate cu cealaltă
buclă de reglare externă, proces ce va presupune găsirea parametrilor de reglare potriviți
pentru o asemenea sarcină. Voi detalia apoi 3 seturi de parametrii de reglare cu scopul de
evidenția influența pe care o are modificarea unor parametrii asupra procesului însine de
reglare. Desigur voi motiva alegerea de creștere sau de scădere a valorilor parametrilor de
reglare față de valorile precedent și voi menționa așteptările pe care le am de la răspunsul
sistemului modificând anumiți parametrii.
Apoi în cadrul strategiei de control curente voi folosi setul cu care am obținut cele mai
bune rezultate pentru a efectua o simulare mai realistă, alegând să nu mai neglijez forțele
de frecare cu aerul. În mod normal ar trebuie să se sesizeze o degradare a performanțelor,
însă în situația în care impactul este mult prea mare voi analiza situația și voi porni o
discuție pe baza graficelor simulării.
În continuare voi prezenta a doua strategie de control, al cărui controller la nivel înalt
va diferi de controller-ul de nivel înalt al strategiei de control precedente. Voi încerca să-mi
dau seama dacă acestă nouă strategie de control este mai viabilă pe baza unor considerente
teoretice, realizând un scenariu de simulare și comentând rezultate obținute.
În ultima parte a acestui proiect voi detalia o a treia strategie de control bazată
pe un controller de nivel jos similar cu cel din prima strategie de control. Spre deosebire
de prima strategie de control aceasta din urmă se bazează pe un regulatorul MPC(Model
Predictive Control) înclus în cadrul controller-ului de nivel jos al cărui lege de reglare
se bazează pe rezolvarea unei probleme de optimizare și deci acest lucru ar putea oferi
strategiei de control un caracter optimal, ea putea fi considerată în consecință singura
strategie de reglare optimală.
Să începem, așadar, printr-o prezentare a quadcopterului pe a cărui dinamică se
bazează toate aceste strategii de control.
6
2 Informații despre drona Crazyflie 2.0
7
Figura 2.2: Structura Hardware a quadcopterului[9]
După cum se poate observa din figura de mai sus, rolurile fiecărui microcontroller
sunt bine definite, astfel că:
Motoarele
8
lățimii pulsurilor sau PWM(Pulse Width Modulation), viteza lor putând fi schimbată fără
vreo variație de voltaj.
Bateria
Modulul radio
9
Accelerometrul
Giroscopul
Magnetometrul
10
2.2 Aspecte software
11
3 Modelul dinamic al quadcopter-ului
C(ψ)C(θ) C(ψ)S(θ)S(ϕ) − S(ψ)C(ϕ) C(ψ)S(θ)C(ϕ) + S(ψ)S(ϕ)
R = S(ψ)C(θ) S(ψ)S(θ)S(ϕ) + C(ψ)C(ϕ) S(ψ)S(θ)C(ϕ) − C(ψ)S(ϕ) , (3.3)
−S(θ) C(θ)S(ϕ) C(θ)C(ϕ)
12
Figura 3.1: Ilustrarea forțelor, mărimilor și a celor două cadre de referință[3]
13
unde k este un factor de ridicare, b este o constantă de frecare(drag), iar IM este inerția
unui moment M. De cele mai multe ori valoare lui ω̇i este mult prea mică și deci este omis
al doilea termen din relația cuplului. Dispunem de 4 astfel de rotoare și deci trebuie să
luăm în calcul forța de propulsie rezultantă T (o forță ce afectează accelerația pe axa Z și
ține drona în aer) și cuplurile generate τϕ , τθ , τψ în direcția fiecărui unghi de rotație. Vom
nota cu Tt thrust-ul total pe toate cele 3 axe si τt cuplul total :
∑ 4 ∑ 4 0
T = fi = k ωi , T t = 0 ,
2 (3.8)
i=1 i=1 T
τϕ lk(−ω22 + ω42 )
τt = τθ = lk(−ω12 + ω32 ) , (3.9)
τψ b(ω1 − ω2 + ω3 − ω4 )
2 2 2 2
ẍ 0 C(ψ)S(θ)C(ϕ) + S(ψ)S(ϕ) Ax 0 0 ẋ
T 1
ÿ = −g 0 + S(ψ)S(θ)C(ϕ) − C(ψ)S(ϕ) − 0 Ay 0 ẏ , (3.10)
m m
z̈ 1 C(θ)C(ϕ) 0 0 Az ż
−1 Iyy −Izz
ṗ τϕ Ixx qr
−1
q̇ = τθ Iyy IzzI−I
xx
− Iyy pr ,
xx
(3.11)
−1 Ixx −Iyy
ṙ τψ Izz pq
Izz
p 1 0 −S(θ) ϕ̇
q = 0 C(ϕ) C(θ)S(ϕ) θ̇ , (3.12)
r 0 −S(ϕ) C(θ)C(ϕ) ψ̇
14
unde Ax , Ay , Az sunt coeficienți ai forțelor de drag (de frecare) pentru vitezele de pe
T
fiecare direcție a cadrului inerțial, matricea corespunzătoare coeficientului m reprezintă
rezultatul înmulțirii matricii de rotație R cu Thrust-ul Tt ce conține doar propulsia T pe
axa Z , iar p,q și r reprezintă vitezele unghiulare exprimate în bodyframe.
Mai există câteva efecte aerodinamice ce ar putea fi incluse în model precum depen-
dența unghiului de atac față de propulsie, fluturarea de elice sau întreruperi ale fluxului
de aer. Influența efectelor aerodinamice sunt complicate, iar efectele sunt dificil de mode-
lat. De asemenea, unele efecte au un impact important doar pentru viteze mari. Totuși,
aceste efecte le vom exclude din modelul nostru.
Pentru controlul quadcopter-ului se propune descompunerea problemei de reglare
într-o buclă externă de reglare a poziției liniare (x,y,z) și o buclă internă de reglare a po-
ziției unghiulare (ϕ, θ, ψ) [2]. Dinamicile unui corp rigid sunt caracterizate de neliniarități
puternice și de aceea atenția trebuie focusată pe planificarea de traiectorie și optimizare
de problemă.
cuplurile unghurilor
unghiurile reale
Controller cupluri
15
fixat sau menținerea unei altitudini dorite [2]. Controller-ul de orientare generează cu-
plurile necesare dinamicii interne a UAV-ului pentu a realiza mișcări de rotație simultane
sau consecutive în jurul oricăror cele 3 axe (X,Y,Z).
Fiind o schemă de reglare în cascadă nu trebuie sub nicio formă neglijat faptul că
bucla internă de reglare trebuie să fie de minim 3 ÷ 4 ori mai rapidă decât bucla externă,
acest aspect urmând a fi tratat mai târziu cand vom aplica criteriul analitic de stabilitate
Hurwitz.
În secțiunile următoare vom detalia cele două controllere și vom simula un scenariu
de evoluție.
Pentru a stabiliza quadcopterul este necesară utilizarea unui regulator PID, sta-
bilizarea realizându-se în nivelul inferior de control a dronei. Avantajele unui controller
PID sunt constituite de structura și implementarea simplă a sa. Forma generală a unui
PID [7]:
e(t) = xref (t) − x(t),
∫ t
d e(t)
u(t) = KP e(t) + KI e(τ )dτ + KD , (4.1)
0 dt
unde u(t) reprezintă comanda de control , e(t) reprezintă eroarea staționară, xref (t)
reprezintă starea dorită, de referință, x(t) reprezintă starea curentă și KP , KI , KD repre-
zintă parametrii elementelor proporțional, integral și derivativ din regulatorul PID.
Într-un UAV, sunt 6 stări(poziții ξ și unghiuri η), și doar 4 semnale de control
și anume vitezele unghiulare al celor 4 rotoare ωi . Interacțiunile dintre stări, propulsia
totală T și cuplurile τ create de rotoare sunt vizibile în dinamica internă a dronei definită
la ecuațiile (3.10),(3.11),(3.12).
Prin urmare ecuațiile regulatorului PID sunt [7]:
∫ t
τϕ = (Kϕ,D (ϕref˙ (t) − ϕ̇(t)) + Kϕ,I (ϕref (τ ) − ϕ(τ ))dτ + Kϕ,P (ϕref (t) − ϕ(t)))Ixx
o
∫ t
τθ = (Kθ,D (θref˙ (t) − θ̇(t)) + Kθ,I (θref (τ ) − θ(τ ))dθ + Kθ,P (θref (t) − θ(t)))Iyy (4.2)
o
∫ t
τψ = (Kψ,D (ψref˙ (t) − ψ̇(t)) + Kψ,I (ψref (τ ) − ψ(τ ))dτ + Kψ,P (ψref (t) − ψ(t)))Izz
o
unde g este accelerația gravitațională, Kx,P , Kx,I , Kx,D reprezintă valorile parametri-
lor controllerelor PID pentru elemente proporțional,integral și derivative corespunzătoare
unghiurilor ϕ, θ și ψ (altfel spus avem 3 regulatoare pentru unghiurile ϕ, θ, ψ ). Mai avem
masa m și momentul de inerție al UAV-ului I.
Dacă în plus s-ar dori și un control asupra înălțimii la care s-ar poziționa quadcopterul
atunci se poate introduce un al patrulea controller de tip PID pentru reglarea propulsiei
16
T astfel încât să se mențină altitudinea(drona să rămână în hovering).
∫ t
m
T = (g + Kz,D (zref˙ (t) − ż(t)) + Kz,I (zref (τ ) − z(τ ))dτ + Kz,P (zref (t) − z(t))) ,
o C(ϕ)C(θ)
17
Generarea cuplurilor de către TC se bazează pe relația[8]:
τη = M (η)τη′ + V (η, η̇) (4.4)
unde τη′ se consideră a fi un factor de corecție :
∫ t
′ ¨ ˙ − ηref˙ (t)) (4.5)
τη = ηref (t) − Kp (η(t) − ηref (t)) − Ki (η(τ ) − ηref (τ ))dτ − Kd (η(t)
0
18
Înlocuind η − ηref cu ε vom obține:
∫ t
¨ + Kp ε(t) + Ki
ε(t) ˙ =0
ε(τ )dτ + Kd ε(t)
0
Dacă luăm în considerare cazul real în care intervine o perturbație d(t) atunci
această ecuație nu va mai nulă și deci va intra în acțiune factorul de corecție τη′ :
∫ t
¨ + Kp ε(t) + Ki
ε(t) ˙ = d(t)
ε(τ )dτ + Kd ε(t)
0
ε(s)
s2 ε(s) + Kp ε(s) + Ki + Kd ε(s)s = D(s)
s
⇒ funcția de transfer corespunzătoare sistemului automat este :
ε(s) 1
H(s) = = 3 (4.11)
D(s) s + Kd s2 + Kp s + Ki
În alegerea acestor parametrii trebuie să ne asigurăm că polii acestei funcții de
transfer au parte reală negativă pentru a se asigura stabilitatea sistemului. Așadar, pentru
a defini constrângerile necesare asigurării stabilității, vom aplica în continuare criteriul
de stabilitate Hurwitz.
Menționăm că pentru a respecta structura schemei de reglare automată de tip
cascadă, parametrii de reglare trebuie aleși astfel încât bucla aceasta(internă) să fie de cel
puțin 3 ÷ 4 ori mai rapidă decât bucla externă. Acești timpi se reflectă în soluțiile acestui
polinom și anume cu cât partea reală dorită negativă este mai mică, cu atât timpii vor fi
mai mici.
Criteriul general de stabilitate menționează faptul că pentru ca un sistem automat
să fie stabil, este necesar și suficient ca toți polii funcției de transfer să fie localizați în
semiplanul stâng al planului complex [1].
Criteriul de stabilitate Hurwitz(denumit și criteriul coeficienților) [1] este un criteriu
analitic de stabilitate ce se bazează pe relația care trebuie să existe între coeficienții unei
ecuații diferențiale pentru ca rădăcinile sale să se localizeze în semiplanul stâng din cadrul
reprezentării în planul complex. În ceea ce privește condiția de aplicare a acestui criteriu,
toți coeficienții trebuie să fie pozitivi.
În funcție de gradul polinomului se determină numărul de determinanți Hurwitz
ce trebuiesc construiți. Pentru ca un sistem să fie stabil, este necesar și suficient ca acei
coeficienți corespunzători polilor sistemului să contribuie la construcția determinanților
Hurwitz strict pozitivi. În situația polinomului de la ecuația (4.11), calculăm determi-
nanții Hurwitz și obținem:
H1 = K d ⇒ K d > 0
[ ]
Kd Ki
H2 = > 0 ⇒ Kd Kp − Ki > 0
1 Kp
Avem 2 cazuri :
1. Kd ∈ (0, 1) ⇒ Kd Kp < Ki ⇒ caz nefavorabil pentru îndeplinirea condiției propuse
2. Kd ∈ [1; ∞) ⇒ Kp > Ki
19
Kd Ki 0
H3 = 1 Kp 0 > 0 ⇒ Kd Kp Ki − Ki2 > 0 ⇒ Kd Kp > Ki
0 Kd Ki
1.Kd > 1
Avem așadar constrângerile : 2.Kp > Ki
3.Kd Kp > Ki
Aceste constrângeri de alegere a parametrilor de reglare Kp , Kd și Ki ar fi asigurat
așadar, stabilitatea sistemului nostru. Pentru a ilustra mai bine această interpretare a
constrângerilor, puteți vedea în Figura 4.2 o reprezentare în 3 dimensiuni a mulțimilor
fezabile de parametrii de reglare. Fiecare axă va reprezenta câte un parametru de re-
glare, iar mulțimile de parametrii ce vor respecta aceste constrângeri vor avea următoare
reprezentare:
20
4.3 Stabilizarea UAV-ului folosind controller-ul TC(varianta cu
PD)
¨ + Kp ε(t) + Kd ε(t)
ε(t) ˙ =0
Dacă luăm în considerare cazul real în care intervine o perturbație d(t) atunci
această ecuație nu va mai nulă și deci va intra în acțiune factorul de corecție τη′ :
¨ + Kp ε(t) + Kd ε(t)
ε(t) ˙ = d(t)
ε(s) 1 1
H(s) = = 3 = (4.13)
D(s) s + Kd s 2 + Kp s s(s2 + Kd s + Kp )
Din forma acestui polinom se poate observa că un pol este nul (s1 = 0) și deci sistemul
nostru va manifesta în cel mai bun caz un comportament marginal stabil. Pentru a verifica
acest aspect vom aplica în continuare criteriul de stabilitate Hurwitz pentru polinomul
s2 + Kd s + Kp și obținem:
H1 = K d ⇒ K d > 0
[ ]
Kd 0
H2 = > 0 ⇒ Kd Kp > 0 ⇒ Kp > 0
1 Kp
{
1.Kd > 0
Avem așadar constrângerile :
2.Kp > 0
Aceste constrângeri de alegere a parametrilor de reglare Kp și Kd ar fi asigurat
așadar, stabilitatea marginală a sistemului nostru. Pentru a ilustra mai bine această in-
terpretare a constrângerilor, puteți vedea în Figura 4.4 o reprezentare în două dimensiuni
a mulțimilor fezabile de parametrii de reglare. Ambele axe va reprezenta câte un para-
metru de reglare, iar mulțimile de parametrii ce vor respecta aceste constrângeri vor avea
următoare reprezentare:
21
Figura 4.4: Mulțimile fezabile de parametrii de reglare ai controller-ului TC bazat pe
factori de corecție PD
Dacă s-ar fi considerat același gen de exemplu în care s-ar fi dorit respectarea unei
constrângeri suplimentare de fixare a unui parametru, atunci una din cele două mulțimi
s-ar fi concentrat într-un singur punct, iar în consecință s-ar fi ilustrat valorile fezabile
rămase de parametrii de reglare de tip Kd ce ar fi definit un segment de dreaptă într-o
singură dimensiune.
22
Pentru varianta reglării de cupluri doar cu un PID, ne bazăm pur și simplu pe faptul
că factorii de corecție corespunzători elementului proporțional, integrativ și proporțional
vor reuși să anuleze efectul neliniarităților, parametrii de reglare fiind obținuți printr-o
metodă empirică. De aceea ne așteptăm ca performanțele obținute din cadrul variantei
de control cu TC să fie mai bune.
Din moment ce am specificat că vom analiza momentan cele două strategii din
punctul de vedere al stabilității, am ales să stimulez ambele variante de controllere cu o
”treaptă” de valoare 0 și am obținut următoarele rezultate:
°(grade) 0
−5
−10
−15
0 2 4 6 8 10 12 14 16 18 20
sec
→ varianta controlului cu TC
În ceea ce privește stabilitatea am reușit să configurez ambele controllere să func-
ționeze cu aceeași parametrii de reglare. Din graficele obținute se poate observa cum
ambele pot asigura stabilitatea atâta timp cât referința este nulă, iar cum era de așteptat
performanțele TC sunt mai bune decât cele ale PID-ului. Față de TC, regulatorul PID
manifestă inițial o perioadă scurtă de variație rapidă de rotație pe fiecare axă, însă această
perioadă scurtă de timp este suficient de mare pentru a face ca sistemul să se stabilizeze
cu aproximativ 2 secunde mai târziu față de TC.
23
Parametrii de reglare x y z ϕ θ ψ
Kp 10 10 10 10 10 10
Ki 0 0 0 0 0 0
Kd 5 5 5 5 5 5
6
°(grade)
−2
−4
0 2 4 6 8 10 12 14 16 18 20
sec
24
Parametrii de reglare x y z ϕ θ ψ
Kp 10 10 10 10 10 10
Ki 0 0 0 0 0 0
Kd 0 0 0 5 5 5
Tabela 4.3: Al doilea set de parametrii de reglare a controller-ului PID de nivel jos
14
x 10
0.5
φ
θ
0 ψ
-0.5
-1
°(grade)
-1.5
-2
-2.5
-3
-3.5
0 2 4 6 8 10 12 14 16 18 20
sec
Parametrii de reglare x y z ϕ θ ψ
Kp 10 10 10 10 10 10
Ki 0 0 0 0 0 0
Kd 0 0 0 5 5 5
25
Orientarea UAV-ului în spațiu
140
φ
θ
120 ψ
"Treapta" lui φ incepe la t=7, a lui θ la t=9 si a lui ψ la t=12
100
80
°(grade)
60
40
20
−20
0 2 4 6 8 10 12 14 16 18 20
sec
5 Strategii de control
26
Unghiurile η pot fi integrate din vitezele unghiulare η̇, iar acestea din urmă pot fi integrate
din accelerațiile unghiulare η̈. Accelerațiile liniare ξ¨ depind de propulsia totală T , de
unghiurile η și de vitezele liniare ξ.˙ Pozițiile liniare ξ sunt integrate din accelerațiile
liniare ξ¨ prin vitezele liniare ξ˙ .
T ξ¨ ξ˙ ξ
τ η̈ η̇ η
Această metodă propune generarea unor accelerații liniare care să urmărească traiec-
toria dorită conform pozițiilor x,y și z din fiecare moment. Din ecuațiile dinamicii interne
(3.10),(3.11) și (3.12) putem obține următoarele 3 ecuații [7] :
dx S(ψ) − dy C(ψ)
ϕ = arcsin( ),
d2x + d2y + (dz + g)2
dx C(ψ) + dy S(ψ)
θ = arctg( ), (5.1)
dz + g
T = m(dx (S(θ)C(ψ)C(ϕ)+S(ψ)S(ϕ)+dy (S(θ)S(ψ)C(ϕ)−C(ψ)S(ϕ))+(dz +g)C(θ)C(ϕ),
unde
∫ t
dx = ẍref − (Kx,D (ẋ(t) − xref˙ (t)) + Kx,I (x(τ ) − xref (τ ))dτ + Kx,P (x(t) − xref (t))),
o
∫ t
dy = ÿref − (Ky,D (ẏ(t) − yref˙ (t)) + Ky,I (y(τ ) − yref (τ ))dτ + Ky,P (y(t) − yref (t))), (5.2)
o
∫ t
dz = z̈ref − (Kz,D (ż(t) − zref˙ (t)) + Kz,I (z(τ ) − zref (τ ))dτ + Kz,P (z(t) − zref (t)))
o
27
5.2 Cuplarea controller-ului de stabilizare TC cu controller-ul
PID de control al traiectoriei
dx = ẍref ,
dy = ÿref , (5.3)
dz = z̈ref
Controller-ul de nivel jos are în continuare aceeași referință de tip treaptă ca mai sus.
Propulsia T
0 0.5
x
y
cm
-5000 0
N
z
xref
-10000 yref -0.5
zref
-15000 -1
0 5 10 15 20 0 5 10 15 20
sec sec
N/m2
50 θref 0
ψref
°
0 -50
-50 -100
0 5 10 15 20 0 5 10 15 20
sec sec
28
și deviațiile mărimilor de poziție față de referința externă dată. În continuare voi fo-
losi controller-ul de nivel sus de tip PID, voi prezenta 3 seturi similare de parametrii
de reglare în cadrul cuplării celor două bucle de reglare și voi detalia concret diferențele
apărute. Menționez că în elaborarea acestor 3 seturi de parametrii de reglare am respec-
tat constrângerile de stabilitate Hurwitz impuse parametrilor de reglare corespunzătoare
regulatorului TC de nivel jos, parametrii de reglare au fost aleși respectând structura de
reglare de tip ”cascadă”, adică o buclă de reglare să fie mai rapidă decât cealaltă, iar
traiectoria de referință este una liniară.
Referința dată este xref = 0 cm, yref = 5 cm, zref = 3 cm și ψref = 0 ◦
Tabela 5.1: Primul set de parametrii de reglare corespunzătoare primei strategii de control
6
cm
yref 0
4 zref
2 -5
0
-2 -10
0 5 10 15 20 0 5 10 15 20
sec sec
1.5
N/m2
0
θref
1
°
ψref
0.5
-0.5 -0.05
0 5 10 15 20 0 5 10 15 20
sec sec
29
Variația propulsiei în timp
Propulsia T
5.5
N
4.5
3.5
0 5 10 15 20
sec
Propulsia T
5.5
5
N
4.5
3.5
0 5 10 15 20
sec
30
Poziționarea UAV-ului în spațiu Variația factorului de corecție a poziției pe fiecare axă
15 10
x dx
y dy
z 5 dz
10
xref
adim
yref
cm
0
5 zref
-5
0
-10
0 5 10 15 20 0 5 10 15 20
sec sec
1.5
N/m2
θref 0
1 ψref
°
0.5
-0.5 -0.05
0 5 10 15 20 0 5 10 15 20
sec sec
După cum se poate vedea în acest tabel și în Figura 5.5 și 5.6, am încercat să
măresc amplificarea controller-ului TC și valoarea componentei integrale și derivative a
controller-ului de nivel sus.
De obicei o amplificare mai mare (nu cu mult mai mare deoarece poate conduce
sistemul într-o stare de instabilitate) micșorează eroarea staționară, iar împreună cu o
componentă integrală mai puternică evoluția dinamicii sistemului către referință ar fi mai
accelerată. Evident m-am gândit să măresc și componenta derivativă pentru a reduce pe
cât posibil suprareglajul indus de celelalte două însă din păcate s-a accentuat semnificativ
sensibilitatea față de perturbații.
Nu am obținut așadar performanțe mai bune față de setul precedent, iar dacă ne
31
gândim, de exemplu la o referință nenulă pentru toate cele 3 mărimi de poziție și pentru
ψ atunci pentru acești parametrii de reglare sistemul va intra cu siguranță în instabilitate.
Urmează acum ultimul set de parametrii:
Tabela 5.3: Ultimul set de parametrii de reglare corespunzătoare primei strategii de con-
trol
100 0
yref
zref
50 -5
0 -10
0 5 10 15 20 0 5 10 15 20
sec sec
100
N/m2
θref 0
°
ψref
50
0 -0.05
0 5 10 15 20 0 5 10 15 20
sec sec
Acest ultim set de parametrii de reglare prezintă valorile aflate în vecinătatea celor
optime, acestea determinând sistemul să facă tot posibilul pentru a urmări referințele
date. Am ales să cresc amplificările pentru ambele controllere(o diferență sesizabil mai
mare față de seturile anterioare observându-se la amplificarea controller-ului TC), să reduc
parametrii componentei integrale corespunzătoare reglării de poziție la valoarea unitară,
să mențin parametrii componentei integrale corespunzătoare reglării de orientare nuli, să
cresc valorile componentei derivative a controller-ului de nivel jos de aproximativ 6 ori și
32
să păstrez parametrii de reglare a componentei derivative a controller-ului PID la valoarea
10.
Menționez că am obținut acest set după multe încercări practice, însă m-am bazat
pe faptul că o amplificare destul de mare poate reduce substanțial eroarea staționară, ea
putând fi anulată de o componentă integrală mică aici, iar orice potențial suprareglaj sau
subreglaj introdus de aceste două să fie redus prin intermediul componentei derivative.
Evident și sensibilitatea la perturbații a crescut însă s-au obținut totuși rezultate bune
datorită echivalenței realizate de controller-ul TC a sistemului nostru neliniar cu unul
sistem liniarizat.
Se poate observa în Figura 5.8 că inclusiv propulsia T face eforturi mult mai relaxate
pentru a stabiliza quadcopterul. Pentru a dovedi capacitățile acestui set am complicat
referința, introducând o referință distinctă pentru cele 4 mărimi. Așadar noua referință
dată este xref = 15 cm, yref = 110 cm, zref = 100 cm și ψref = 90 ◦
Propulsia T
5.5
5
N
4.5
3.5
0 5 10 15 20
sec
Până acum orice fel de forțe de rezistență sau de frecare au fost neglijate și, deci,
voi folosi acest ultim set de parametrii de reglare pentru scenariul în care quadcopterul
întâmpină rezistență rezultată din frecarea cu aerul. Practic am introdus valori nenule
corespunzătoare coeficienților de frecare(de drag) Ax ,Ay și Az .
Ne așteptăm să obținem performanțe mai puțin bune, însă acceptabile în sensul că
această simulare este mai realistă, iar dacă se dovedește a urmări, totuși, referința dată
atunci vom putea fi mai toleranți asupra unor timpi mai mari de stabilizare sau asupra
vreunui suprareglaj mărit spre exemplu.
33
Poziționarea UAV-ului în spațiu Variația factorului de corecție a poziției pe fiecare axă
250 10
x dx
200 y dy
5 dz
z
150 xref
adim
cm
yref 0
100
zref
-5
50
0 -10
0 5 10 15 20 0 5 10 15 20
sec sec
x 10
4
Orientarea UAV-ului în spațiu Cuplurile generate pentru urmărirea referinței
4 0.05
τφ
φ
3 θ τθ
ψ τψ
(grade)
2 φref
N/m2 0
θref
°
1 ψref
0
-0.05
0 5 10 15 20 0 5 10 15 20
sec sec
60
N
40
20
0 5 10 15 20
sec
Din Figura 5.9 se poate observa cum referința folosită până acum este mult prea dură
pentru strategia de control curentă. Mai precis se poate observa cum variația mărimilor
y și z se influențează reciproc, dar mai ales că influențează destul de intens urmărirea
referinței de către mărimea ψ , reușind chiar să împiedice mărimea x să-și urmărească
referința.
Variind referința dată, am constatat că doar mărimile x și ψ au fost cele mai
afectate de frecarea cu aerul, o relaxare a referințelor acestora rezolvând problema noastră.
Menționez că am păstrat același set de parametrii de reglare.
Așadar referința dată este xref = 12 cm, yref = 110 cm, zref = 100 cm și ψref =
◦
45
34
Poziționarea UAV-ului în spațiu Variația factorului de corecție a poziției pe fiecare axă
200 10
x dx
y dy
150 z 5 dz
xref
adim
cm
100 yref 0
zref
50 -5
0 -10
0 5 10 15 20 0 5 10 15 20
sec sec
100
φref N/m2
0
θref
°
50 ψref
0 -0.05
0 5 10 15 20 0 5 10 15 20
sec sec
6
N
0 5 10 15 20
sec
Rezultatele obținute pentru această nouă referință sunt neașteptat de bune în sensul
că sistemul evoluează rapid către referință, fără erori staționare și fără un suprareglaj sau
subreglaj semnificativ. Variația factorilor de corecție a poziției prezintă un mic subreglaj
la începutul simulării din cauza referinței mari însă reușește să stabilizeze sistemul. În
cadrul evoluției în timp a cuplurilor se pot observa oscilațiile întreținute corespunzătoare
celor 3 cupluri, acesta reprezentând pe de o parte apropierea de limita de stabilitate a
sistemului nostru, iar pe de altă parte cuplarea celor 3 mărimi. Deși referința este dată
decât pentru ψ, mărimile ϕ și θ prezintă și ele oscilații întreținute, mai mici într-adevăr,
însă scopul lor este doar de a stabiliza sistemul.
35
6 A doua strategie de control
dx = Kx,P (xref (t) − x(t)) + Kx,D (xref˙ (t) − ẋ(t)) + Kx,DD (xref¨ (t) − ẍ(t))
dy = Ky,P (yref (t) − y(t)) + Ky,D (yref˙ (t) − ẏ(t)) + Ky,DD (yref¨(t) − ÿ(t)) (6.1)
dz = Kz,P (zref (t) − z(t)) + Kz,D (zref˙ (t) − ż(t)) + Kz,DD (zref¨(t) − z̈(t))
Cu acești coeficienți se calculează apoi unghiurile de referință ηref , împreună cu
propulsia T folosind relațiile (5.1). În continuare se pot observa în Figurile 6.1 și 6.2
rezultatele simulărilor în care se cuplează controller-ul TC cu această variantă de PD
modificat.
6
N
0 5 10 15 20
sec
36
Poziționarea UAV-ului în spațiu Variația factorului de corecție a poziției pe fiecare axă
200 10
x dx
y dy
150 5 dz
z
xref
adim
cm
100 yref 0
zref
50 -5
0 -10
0 5 10 15 20 0 5 10 15 20
sec sec
1000
θref N/m2 0
°
ψref
500
0 -0.05
0 5 10 15 20 0 5 10 15 20
sec sec
5
N
4.5
3.5
0 5 10 15 20
sec
37
Poziționarea UAV-ului în spațiu Variația factorului de corecție a poziției pe fiecare axă
1 10
x dx
y dy
0.5 z 5 dz
xref
yref
adim
cm
0 0
zref
-0.5 -5
-1 -10
0 5 10 15 20 0 5 10 15 20
sec sec
N/m2
θref 0
°
ψref
50
0 -0.05
0 5 10 15 20 0 5 10 15 20
sec sec
38
Un MPC va ține cont de două tipuri de variabile: cele dependente de sistemul dina-
mic(măsurători sau constrângeri de proces) și cele independente(referințe sau ieșiri)[11].
El va predicta variația variabilelor dependente în funcție de variația variabilelor indepen-
dente, acestea din urmă afectând deci sistemul dinamic.
Principalul avantaj al reglării MPC este reprezentat de posibilitatea optimizării unei
perioade de timp, sau mai precis, optimizarea unui orizont temporal predictiv finit cu
implementarea soluției corespunzătoare momentului de timp curent. Practic, are grijă ca
prima schimbare a variabilelor independente să fie implementată, repetând apoi calculele
atunci când este necesară următoarea schimbare. Spre deosebire de alte regulatoare PID
sau LQR, MPC-ul are abilitatea de a anticipa evenimente viitoare de timp și să preia
controlul corespunzător dinamicii predictate[11].
MPC-ul se bazează pe o problemă de optimizare iterativă, de orizont temporal finit
al unui model de proces. La un moment de timp t, starea procesului este eșantionată și
se calculează în timp real(online) o strategie de control de minimizare a costului până la
următorul moment de eșantionare t + Te .
Doar primul pas va fi implementat, urmând ca la următorul moment de eșantionare
să se verifice dacă s-a schimbat starea sistemului. În caz afirmativ, atunci se reiau calculele
pentru această nouă stare și se obține o nouă strategie de control pentru noul traseu de
stări predictat.
Alt avantaj important îl constituie faptul că este printre puținele metode de control
ce poate face față stărilor generice și a constrângerilor de control[10]. Mai precis, el poate
include modele generice(liniare sau neliniare) și constrângeri în problema de control bazată
pe optimizare. În plus, merită menționată capacitatea MPC-ului de a redefini funcția de
cost și constrângerile pentru a ține cont de schimbările de sistem sau de mediu.
Principalul dezavantaj al strategiei de orizont culisant, așa cum mai este cunoscut
MPC-ul[11], este reprezentat de cerința computațională mare datorată regulii ce dictează
faptul că un algoritm de optimizare trebuie să ruleze și să ajungă să își termine execuția
la fiecare actualizare a blocului controller(acesta fiind sincronizat de obicei cu ceasul de
eșantionare).
39
Principiile unui control MPC
Funcția de cost constă dintr-o funcție de cost terminală Vf (·) : IRn → IR și o funcție
de cost intermediară Vn (·) : IRn → IR.
Tipic, funcția obiectiv al unui MPC penalizează deviațiile stărilor și comenzilor
de la valorile lor de referință, în timp ce constrângerile sunt tratate explicit. Fiecare
optimizare a orizontului predictat generează o traiectorie de control optimal ce ține cont
de dinamicile sistemului(cu proprietatea generică f(0,0) = 0), de constrângerile stărilor și
comenzilor h(·) și de constrângerea terminală hf (·).
În ceea ce privește forma funcției de cost aceasta poate fi pătratică,
liniară,
Vn (x(k + s), u(k + s)) = f T x(k + s) + g T u(k + s) (7.3)
sau neliniară, însă pentru implementare vom considera mai târziu forma pătratică[10].
40
MPC-ul neliniar
MPC-ul robust
41
7.2 Yalmip
η̈ − τη′ = 0
iar împreună cu notația η − ηref se va folosi în continuare dinamica de buclă închisă (4.8):
∫ t
¨
ε(t) + Kp ε(t) + Ki ˙ =0
ε(τ )dτ + Kd ε(t)
0
42
reglare de tip MPC operează în timp discret, vom dori să obținem reprezentarea în timp
discret a dinamicelor sistemului de forma:
{
x(k + 1) = Ax(k) + Bu(k)
y(k) = Cx(k) + Du(k)
unde un pas de timp corespunde perioadei de eșantionare Te , iar fiecare pas reactualizează
orizontul temporal finit de predicție. Pentru acest lucru ne propunem să exprimăm
ϕ̇
θ̇
[ ]
ψ̇ ε̇
starea ca x(k) = sau x(k) = și evident u(k) să reprezinte diferența dintre
ϕ̈ µ̇
θ̈
ψ̈
unghiurile de rotație reale și unghiurile de rotație de referință u(k) = ε(k)
Dacă din { relația (7.4) folosim ε̈(t) = −µ̇M P C și dacă notăm µ̇ = −µM P C atunci
ε̈ = −µ̇(t)
obținem x(k) =
ε̇ = µ(t)
Aceste două relații scrise în formă matriceală ⇒
[ ] [ ][ ] [ ]
ε̇ 0 1 ε(t) 0
= + µM P C
−1
µ̇ 0 0 µ
(7.5)
[ ]
[ ] ε(t) [ ]
ε(t) = 1 0 + 0 µM P C
µ
Identificând matricile A, B, C și D constatăm că am obținut reprezentarea pe stare în
timp continuu : [ ] [ ]
ε̇ ε(t)
=A + BµM P C
µ̇ µ
[ ]
ε(t)
ε(t) = C + DµM P C
µ
Această reprezentare pe stare este exprimată în timp continuu și deci în continuare
vom trece în domeniul de timp discret prin metoda de discretizare Euler:
[ ] [ ]
ε̇ ε̇
(k + 1) − (k) [ ]
µ̇ µ̇ ε(t)
=A + BµM P C
Te µ
⇒
[ ] [ ] [ ]
ε̇ ε̇ ε(t)
(k + 1) − (k) = Te A (k) + Te BµM P C
µ̇ µ̇ µ
Trecând starea aferentă momentul de timp curent k în partea dreaptă , vom obține
[ ] [ ]
ε̇ ε(t)
(k + 1) = (I6 + Te A) + Te BµM P C
µ̇ µ
unde I6 reprezintă matricea unitate iar Te perioada de eșantionare
43
Identificând noile matricile Ad și Bd (Cd și Dd rămânând aceleași) constatăm că am
obținut reprezentarea pe stare în timp discret căutată :
[ ] [ ]
ε ε(t)(k)
(k + 1) = Ad (k) + Bd µM P C
µ µ
(7.6)
[ ]
ε(t)
ε(k) = Cd + Dd µM P C
µ
44
strângeri de cuplu :
−2318, 2 N
m
τ ϕ 2318, 2 N
m
−2318, 2 N < τθ < 2318, 2 N (7.7)
m m
−788, 29632 N
m
τ ψ 788, 29632 N
m
Aceste constrângeri de cuplu τη trebuiesc adaptate pentru τη′ , iar apoi acestea din
urmă vor trebui și ele adaptate la comenzile µM P C . Conform relației (4.4) și (4.5) avem:
′
τη = M (η)τη + V (η, η̇)
∫t
τη′ = ηref¨(t) − Kp (η(t) − ηref (t)) − Ki 0 (η(τ ) − ηref (τ ))dτ − Kd (η(t)
˙ − ηref˙ (t))
−τmax − M (η)η̈ref − V (η, η̇) < M (η)µM P C + V (η, η̇) < τmax − M (η)η̈ref − V (η, η̇)
Știind că matricea M (η) este nesingulară, vom înmulți la stânga acestă relație cu
opusul inversei acesteia și vom obține:
−M −1 (η)τmax + η̈ref + M −1 (η)V (η, η̇) < µM P C < M −1 (η)τmax + η̈ref + M −1 (η)V (η, η̇)
(7.9)
Această relație va defini așadar constrângerile comenzii MPC, acestea trebuind a fi
determinate la fiecare pas al orizontului de predicție pentru ca acele constrângeri fizice de
turație să fie respectate.
Problema în această situație o constituie faptul că matricile obținute din relațiile
de bază ale controller-ului TC și anume M (η), V (η, η̇), dar și accelerațiile unghiulare
de referință η̈ref variază și ele în timp. Așadar în funcție de aceste variații ale acestor 3
componente, constrângerile MPC trebuiesc recalculate la fiecare pas din cadrul orizontului
temporal de predicție finit.
La asemenea cerințe efortul computațional este destul mare, suficient cât să re-
prezinte o piedică de netolerat. Pentru a soluționa un astfel de incovenient se propune
considerarea unei ipoteze simplificatoare ce se referă la faptul că variațiile acestor 3 mă-
rimi la fiecare pas de predicție nu sunt atât de mari încât să necesite schimbări drastice
a constrângerilor MPC. Desigur, la reactualizarea orizontului de predicție se recalculează
oricum constrângerile MPC după valorile din acel moment de timp ale acelor 3 compo-
nente.
Trebuie menționat faptul că pentru o astfel de ipoteză simplificatoare este o necesitate
să considerăm un interval temporal de predicție mic și o perioadă de eșantionare la fel de
mică.
45
Parametrii de reglare x y z
Kp 25 25 25
Ki 1 1 1
Kd 10 10 10
Tabela 7.1: Parametrii de reglare a controller-ului PID din cadrul ultimei strategii de
reglare optimale
46
Vizualizarea traiectoriilor
Poziționarea UAV-ului în spațiu
Urmarirea referintei
80 x
Traiectoria de referinta
y 60
60 z
xref 40
cm
40 yref
cm
20
zref
20
0
0 10
40
0 20
-20 0
0 5 10 15 20 cm -10 -20 cm
sec
φref
40
N
θref
°
ψref 0
20
0 -5
0 5 10 15 20 0 5 10 15 20
sec sec
5
Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit
x 10
u_φ max 5
u_φ min -5
0 2 4 6 8 10 12 14 16 18 20
5 Eșantioane de timp
x 10
5
u_θ max
u_θ min
-5
0 2 4 6 8 10 12 14 16 18 20
5 Eșantioane de timp
x 10
1
u_ψ max
0.5
0
-0.5
u_ψ min 47
-1
0 2 4 6 8 10 12 14 16 18 20
După cum se poate observa, în cadrul constrângerilor fiecărei comenzi MPC cores-
punzătoare unghiului de rotație η se poate observa o variație inițială, mai mică sau mai
mare în funcție de caz, însă relevant din aceste grafice este faptul că încă din timpul pri-
mului eșantion de timp aceste constrângeri se stabilizează și rămân constante până finalul
simulării. Acesta reprezintă un argument solid pentru care ipoteza noastră simplificatoare
se dovedește a fi utilă, reducând considerabil efortul de calcul.
Puteți observa mai jos aceeași reprezentare restrânsă la o perioadă de timp mai
mică, evidențiind astfel procesul de cuantizare.
Evoluția constrângerilor comenzilor MPC pentru o perioadă mai mică decât orizontul de predicție finit
5
x 10
u_φ max
4
2
0
u_φ min -2
-4
6.55 6.6 6.65 6.7
5 Eșantioane de timp
x 10
u_θ max
4
2
0
u_θ min -2
-4
6.55 6.6 6.65 6.7
Eșantioane de timp
4
x 10
u_ψ max
0
u_ψ min
-5
Figura 7.4: Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit
48
7.6 Introducerea frecării cu aerul
Până acum orice fel de forțe de rezistență sau de frecare au fost neglijate în cadrul
acestei strategii de reglare optimale și, deci, voi simula în cele ce urmează scenariul în care
quadcopterul întâmpină rezistență rezultată din frecarea cu aerul. Practic am introdus
valori nenule corespunzătoare coeficienților de frecare(de drag) Ax ,Ay și Az .
Ne așteptăm să obținem performanțe mai puțin bune, însă acceptabile în sensul că
această simulare este mai realistă, iar dacă se dovedește a urmări, totuși, referința dată
atunci vom putea fi mai toleranți asupra unor timpi mai mari de stabilizare sau asupra
vreunui suprareglaj mărit spre exemplu.
x Urmarirea referintei
80
y Traiectoria de referinta
60
60 z
xref 40
40 yref cm
cm
20
20 zref
0
0 2
40
-11 0 20
x 10 0
-20
0 5 10 15 20 cm -2 -20 cm
sec
θref
1
°
ψref 0
0
-1 -5
0 5 10 15 20 0 5 10 15 20
sec sec
Referința din secțiunea anterioară s-a dovedit a fi mult prea dură pentru acest
scenariu și deci am fost nevoit să o fac mai lejeră. Mai precis am decis să setez o referință
nulă pentru mărimea de poziție y și cea de orientare ψ. Așadar referința dată este xref =
30 cm, yref = 0 cm, zref = 40 cm și ψref = 0◦ .
Spre deosebire de strategia de control constituită dintr-un controller TC bazat pe
PID cuplat cu un controller PID, se observă un impact mai pronunțat în sensul că a fost
necesară renunțarea la referințele nenule pentru două mărimi din 4 din cauza cuplării
puternice dintre acestea. Practic se încerca urmărirea referințelor anulate aici, însă influ-
49
ențau atât de mult unghiul de rotație θ sau mai ales se influențau reciproc atât de mult
încăt nu mai erau capabile nici măcar să se stabilizeze.
Cu toate că acestă nouă referință este urmărită cu succes, se poate observa în cadrul
vizualizării traiectoriilor cuplarea mărimilor x și z cu y, astfel că în starea inițială există
o decalare inexplicabilă pe axa Y, însă din fericire sistemul va converge în scurt timp la
traiectoria de referință. În cele ce urmează vom ilustra încă o dată evoluția contrângerilor
comenzilor MPC pentru a realiza dacă ipoteza noastră simplificatoare a avut vreun impact
major asupra metodei de reglare a MPC-ului.
u_φ min -5
0 2 4 6 8 10 12 14 16 18 20
5 Eșantioane de timp
x 10
u_θ max 5
u_θ min -5
0 2 4 6 8 10 12 14 16 18 20
5
Eșantioane de timp
x 10
u_ψ max 1
0.5
0
-0.5
u_ψ min -1
0 2 4 6 8 10 12 14 16 18 20
Eșantioane de timp
Figura 7.6: Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit
După cum se poate observa și în acest caz, în cadrul constrângerilor fiecărei comenzi
MPC corespunzătoare unghiului de rotație η se poate observa o variație inițială, mai mică
sau mai mare în funcție de caz, însă relevant din aceste grafice este faptul că încă din
timpul primului eșantion de timp aceste constrângeri se stabilizează și rămân constante
până finalul simulării. Acesta reprezintă un argument solid pentru care ipoteza noastră
simplificatoare se dovedește a fi utilă, reducând considerabil efortul de calcul.
Puteți observa mai jos aceeași reprezentare restrânsă la o perioadă de timp mai
mică, evidențiind astfel procesul de cuantizare.
50
Evoluția constrângerilor comenzilor MPC pentru o perioadă mai mică decât orizontul de predicție finit
5
x 10
u_φ max 4
2
0
-2
u_φ min -4
6.55 6.6 6.65 6.7
5 Eșantioane de timp
x 10
u_θ max
4
2
0
-2
u_θ min
-4
6.55 6.6 6.65 6.7
4
Eșantioane de timp
x 10
u_ψ max
5
-5
u_ψ min
6.55 6.6 6.65 6.7
Eșantioane de timp
Figura 7.7: Evoluția constrângerilor comenzilor MPC pentru un orizont de predicție finit
51
fiabilă și realistă variantă strategie de control din cele analizate ce se poate implementa
pe quadcopterul Crazyflie 2.0. Evident se poate încerca și prima strategie de control,
obținându-se poate rezultate mai bune însă în mod cert vom fi conștienți că în orice
moment comportamentul dronei va fi imprevizibil.
8 Concluzii
52
ce ține cont implicit de constrângerile fizice ale UAV-ului, ea putând garanta stabilitatea
sistemului atâta timp cât este dată o referință către care poate converge. De asemenea
este singura strategie de control despre care putem afirma că oferă o comandă optimală
rezolvând o problemă de optimizare la fiecare orizont de predicție.
Un alt aspect important al acestei strategii de reglare este că regulatorul MPC
pe care se bazează controller-ul de nivel jos operează doar în timp discret, permițând
utlizatorului să aleagă o perioadă de eșantionare convenabilă. Spre deosebire de strategia
de control precedentă reacția unei reglări poate fi controlată tocmai prin această perioadă
de eșantionare, influențele unei variații rapide a comenzii putând fi acum controlate, iar
impactul asupra sistemului minimizându-se.
Putem afirma că acestă strategie de control optimală reprezintă cea mai fiabilă
și realistă variantă strategie de control din cele analizate ce se poate implementa pe
quadcopterul Crazyflie 2.0. Desigur există și alte strategii de control, poate chiar strategii
la fel de realiste precum strategia de control optimal prin intermediul căruia se pot obține
performanțe superioare celor obținute cu ce-a dea doua strategie de control, însă cu această
ocazie aș dori să menționez și propriile direcții viitoare.
Aș fi dorit ca în cadrul acestei strategii de control optimale să introduc constrângeri
ale comenzilor mai detaliate fără să mă folosesc de ipoteza simplificatoare cu privire la
variația constrângerilor comenzilor elaborate astfel încât conform relațiilor de dependență
să se respecte constrângerile fizice ale quadcopterului. Poate chiar și introducerea unor
constrângeri de stare sau de variație a stării ar fi ajutat la obținerea unor performanțe mai
bune, însă pentru toate acestea ar fi trebuit neapărat să măresc perioada de eșantionare
împreună cu orizontul temporal de predicție deoarece putem intui că evoluția efortului de
calcul necesar ar fi avut o caracteristică exponențială.
Altă direcție viitoare este constituită de propria dorință de a reveni la o schemă de
reglare clasică folosind un regulator de tip MPC, însă o mare problemă ar fi constituită
de cuplarea puternică a parametrilor de stare și neliniaritatea rezultantă sistemului. Rea-
mintesc că MPC-ul l-am putut aplica în cadrul strategiei de control optimal mulțumită
echivalenței realizate a sistemului nostru neliniar cu unul liniarizat.
Și nu în ultimul rând aș fi dorit să realizez mai multe experimente practice pentru
a găsi strategia de control potrivită, cu parametrii de reglare aferenți care să fie capa-
bilă să urmărească referințe ce pot defini forme geometrice în spațiu. Au existat câteva
tentative de schimbare a acestei traiectorii, însa strategiile de control discutate în cadrul
acestui proiect nu au putut face față unor referințe ce își variau în timp coordonatele. Cel
mult reușeau să pornescă din punctul inițial și să ajunga în poziția finală însă traiectoria
parcursă nu se putea spune că definea vreo formă geometrică regulată.
Vă mulțumesc pentru atenție și vă invit a studia anexa acestui proiect pentru a vă
lămuri mai mult în privința implementării acestor variante și strategii de control pentru
drona Crazyflie 2.0.
53
9 Anexă
A Stabilizarea UAV-ului cu controllerul PID
A.1 Funcția de generare a traiectoriei liniare
1 f u n c t i o n [ x , y , z , p s i ]= gendata ( xf , yf , z f , p s i _ f , t f , xi , yi , z i , p s i _ i , t i , t )
2
3
4 x=x i +(t−t i ) * ( xf−x i ) / ( t f −t i ) ;
5 y=y i +(t−t i ) * ( yf−y i ) / ( t f −t i ) ;
6 z=z i +(t−t i ) * ( z f −z i ) / ( t f −t i ) ;
7 p s i=p s i _ i +(t−t i ) * ( p s i _ f −p s i _ i ) / ( t f −t i ) ;
6 %i n e r t i i l e
7 I_xx=4. 8 5 6 e −3;
8 I_yy=4. 8 5 6 e −3;
9 I_zz=8. 8 0 1 e −3;
10
11 %c o e f i c i e n t i f o r t e de drag ( f r e c a r e ) ( i i n e g l i j e z i n i t i a l )
12 Ax = 0 ;
13 Ay = 0 ;
14 Az = 0 ;
15
16 %d i s t a n t a de l a c e n t r u l UAV−u l u i l a o r i c e e l i c e d i n c e l e 4 r o t o a r e
17 L=0. 2 2 5 ;
18
19 %f a c t o r de drag
20 K_T=2. 9 8 e −6;
21
22 %f a c t o r de t h r u s t
23 b=1. 1 4 e −7;
24
25 %f a z a i n i t i a l a
26 p h i 0 =0;
27 t h e t a 0 =0;
28 p s i 0 =0;
29
30 %v i t e z a u n g h i u l a r a maxima admisa pt c e l e 4 r o t o a r e
31 omega_i =58800;
32
33 time=l i n s p a c e ( 0 , 2 0 , 1 0 0 0 ) ;
34 %param g e n d a t a _ l i n i a r : xf , yf , z f , p s i _ f , t f , xi , yi , z i , p s i _ i , t i , t
35 [ x , y , z , p s i ]= g e n d a t a _ l i n i a r ( 0 , 0 , 1 0 0 , 9 0 , 2 0 , 0 , 0 , 0 , 0 , 0 , time ) ;
36
37 %p a r a m e t r i i r e g u l a t o r
38 k_x_deriv =5;
39 k_y_deriv =5;
54
40 k_z_deriv =5;
41 k_phi_deriv =5;
42 k_theta_deriv =5;
43 k_psi_deriv =5;
44 k_x_propor =10;
45 k_y_propor =10;
46 k_z_propor =10;
47 k_phi_propor =10;
48 k_theta_propor =10;
49 k_psi_propor =10;
50 k_x_integ =0;
51 k_y_integ =0;
52 k_z_integ =0;
53 k_phi_integ =0;
54 k_theta_integ =0;
55 k_psi_integ =0;
56
57 %a f i s a r e a r a d a c i n i l o r p o l i n o a m e l o r c o n s t i t u i t e d i n c o e f i c i e n t i i
58 %p a r a m e t r i l o r de r e g l a r e de i n t e r e s d o r e s c s a vad daca i n
59 %urma a l e g e r i i unor p a r a m e t r i i de r e g l a r e p o l i i s i s t e m u l u i
60 %s u n t s t a b i l i a d i c a daca au p a r t e a r e a l a n e g a t i v a
61 r o o t s ( [ 1 k_phi_deriv k_phi_propor k_phi_integ ] )
62 r o o t s ( [ 1 k_x_deriv k_x_propor k_x_integ ] )
63
64 %c r e a r e v a r i a b i l e p e n t r u i n t r a r i l e s i m u l a r i l o r n o a s t r e
65 x _ r e f . t i m e=time ;
66 x _ r e f . s i g n a l s . v a l u e s=x ’ ;
67 x_ref.signals.dimensions =[1];
68
69 y _ r e f . t i m e=time ;
70 y _ r e f . s i g n a l s . v a l u e s=y ’ ;
71 y_ref.signals.dimensions =[1];
72
73 z _ r e f . t i m e=time ;
74 z _ r e f . s i g n a l s . v a l u e s=z ’ ;
75 z_ref.signals.dimensions =[1];
76
77 p s i _ r e f . t i m e=time ;
78 p s i _ r e f . s i g n a l s . v a l u e s=p s i ’ ;
79 psi_ref.signals.dimensions =[1];
55
A.4 Controller-ul PID de nivel jos
56
B.2 Controller-ul TC de nivel jos
57
C Cuplarea controller-ului TC de nivel jos cu controller-
ul PID de nivel sus
C.1 Controller-ul PID de nivel sus
58
6 g=9 . 8 1 ; % a c c g r a v i t a t i o n a l a
7
8 %i n e r t i i l e
9 I_xx=4. 8 5 6 e −3;
10 I_yy=4. 8 5 6 e −3;
11 I_zz=8. 8 0 1 e −3;
12
13 %c o e f i c i e n t i f o r t e de drag ( f r e c a r e ) ( i i n e g l i j e z i n i t i a l )
14 Ax=0 . 2 5 ;
15 Ay=0 . 2 5 ;
16 Az=0 . 2 5 ;
17
18 %d i s t a n t a de l a c e n t r u l UAV−u l u i l a o r i c e e l i c e d i n c e l e 4 r o t o a r e
19 L=0. 2 2 5 ;
20
21 %f a c t o r de drag
22 K_T=2. 9 8 e −6;
23
24 %f a c t o r de t h r u s t
25 b=1. 1 4 e −7;
26
27 %f a z a i n i t i a l a
28 p h i 0 =0;
29 t h e t a 0 =0;
30 p s i 0 =0;
31
32 %v i t e z a u n g h i u l a r a maxima admisa pt c e l e 4 r o t o a r e
33 omega_i =58800;
34
35 time=l i n s p a c e ( 0 , 2 0 , 1 0 0 0 ) ;
36 %param gendata : xf , yf , z f , p s i _ f , t f , xi , yi , z i , p s i _ i , t i , t
37 [ x , y , z , p s i ]= gendata ( 1 2 , 1 1 0 , 1 0 0 , 9 0 , 2 0 , 0 , 0 , 0 , 0 , 0 , time ) ;
38
39 %p a r a m e t r i i r e g u l a t o r
40 k_x_deriv =10;
41 k_y_deriv =10;
42 k_z_deriv =10;
43 k_phi_deriv =30;
44 k_theta_deriv =30;
45 k_psi_deriv =30;
46 k_x_propor =25;
47 k_y_propor =25;
48 k_z_propor =25;
49 k_phi_propor =225;
50 k_theta_propor =225;
51 k_psi_propor =225;
52 k_x_dd = 0 . 6 ;
53 k_y_dd = 0 . 2 ;
54 k_z_dd = 0 . 6 ;
55 k_phi_integ =0;
56 k_theta_integ =0;
57 k_psi_integ =0;
58
59 roots ([1 k_phi_deriv k_phi_propor k_phi_integ ] )
60 roots ([1 k_theta_deriv k_theta_propor k_theta_integ ] )
61 roots ([1 k_x_deriv k_x_propor k_x_integ ] )
62 roots ([1 k_z_deriv k_z_propor k_z_integ ] )
63
64 x _ r e f . t i m e=time ;
65 x _ r e f . s i g n a l s . v a l u e s=x ’ ;
59
66 x_ref.signals.dimensions =[1];
67
68 y _ r e f . t i m e=time ;
69 y _ r e f . s i g n a l s . v a l u e s=y ’ ;
70 y_ref.signals.dimensions =[1];
71
72 z _ r e f . t i m e=time ;
73 z _ r e f . s i g n a l s . v a l u e s=z ’ ;
74 z_ref.signals.dimensions =[1];
75
76 p s i _ r e f . t i m e=time ;
77 p s i _ r e f . s i g n a l s . v a l u e s=p s i ’ ;
78 psi_ref.signals.dimensions =[1];
79
80 %d e s c h i d e r e model S i m u l i n k
81
82 open ( ’ sim_quadcopter_23_06_2016 ’ )
83 set_param ( ’ sim_quadcopter_23_06_2016 ’ , ’ StopTime ’ , . . .
84 num2str ( 2 0 ) ) % s e t a r e timp de s i m u l a r e
85 set_param ( ’ sim_quadcopter_23_06_2016 ’ , ’ A l g e b r a i c L o o p S o l v e r ’ , ’ L i n e S e a r c h ’ )
86 load_system ( ’ sim_quadcopter_23_06_2016 ’ ) % s e i n c a r c a modelul s i m u l i n k ;
87 sim ( ’ sim_quadcopter_23_06_2016 ’ ) % s e r u l e a z a modelul s i m u l i n k
88
89 % Grafice
90
91 c l o s e a l l ; h o l d on ; g r i d on ;
92 c o l o r = ’ rgb ’ ;
93 f o r i =1:3
94 plot ( simout.time , s i m o u t . s i g n a l s . v a l u e s ( : , i ) , c o l o r ( i ) ) ;
95 end
96 p l o t ( x _ r e f . t i m e , x _ r e f . s i g n a l s . v a l u e s , c o l o r ( 1 ) , ’ L i n e S t y l e ’ , ’−− ’ ) ;
97 p l o t ( y _ r e f . t i m e , y _ r e f . s i g n a l s . v a l u e s , c o l o r ( 2 ) , ’ L i n e S t y l e ’ , ’−− ’ ) ;
98 p l o t ( z _ r e f . t i m e , z _ r e f . s i g n a l s . v a l u e s , c o l o r ( 3 ) , ’ L i n e S t y l e ’ , ’−− ’ ) ;
99 legend ( ’x ’ , ’y ’ , ’ z ’ , ’ xref ’ ) ;
100
60
D Cuplarea controller-ului TC de nivel jos cu controller-
ul PD de nivel sus
D.1 Controller-ul PD de nivel sus
2 %p a r a m e t r i i r e g u l a t o r
3 k_x_deriv =10;
4 k_y_deriv =10;
5 k_z_deriv =10;
6 k_phi_deriv =30;
7 k_theta_deriv =30;
8 k_psi_deriv =30;
9 k_x_propor =25;
10 k_y_propor =25;
11 k_z_propor =25;
12 k_phi_propor =225;
13 k_theta_propor =225;
14 k_psi_propor =225;
15 k_x_dd = 0 . 6 ;
16 k_y_dd = 0 . 2 ;
17 k_z_dd = 0 . 6 ;
18 k_phi_integ =0;
19 k_theta_integ =0;
20 k_psi_integ =0;
61
E Cuplarea controller-ului TC bazat pe MPC de nivel
jos cu controller-ul PID de nivel sus
E.1 Funcție de extragere a comenzii MPC din variabila de tip
container a Yalmip-ului
1 f u n c t i o n [ y]= quadMpcController ( t , u )
2
3
4
5 global controller
6
7 [ y , e r r o r c o d e ]= c o n t r o l l e r {u } ; % don ’ t f o r g e t : we u s e c u r l y%
8 %b r a c k e t s and not p a r a n t h e s e s
9 i f isnan (y)
10 y=z e r o s ( l e n g t h ( y ) , 1 ) ;
11 yalmiperror ( errorcode )
12 end
19 %d i s t a n t a de l a c e n t r u l UAV−u l u i l a o r i c e e l i c e d i n c e l e 4 r o t o a r e
20 L=0. 2 2 5 ;
21
22 %f a c t o r de drag
23 K_T=2. 9 8 e −6;
24
25 %f a c t o r de t h r u s t
26 b=1. 1 4 e −7;
27
28 %f a z a i n i t i a l a
29 p h i 0 =00;
30 t h e t a 0 =0;
31 p s i 0 =0;
32
33 %v i t e z a u n g h i u l a r a maxima admisa pt c e l e 4 r o t o a r e
62
34 omega_i =58800;
35
36
37 time=l i n s p a c e ( 0 , 2 0 , 1 0 0 0 ) ;
38 %param gendata : xf , yf , z f , p s i _ f , t f , xi , yi , z i , p s i _ i , t i , t
39 [ x , y , z , p s i ]= gendata ( 3 0 , 5 , 4 0 , 3 0 , 2 0 , 0 , 0 , 0 , 0 , 0 , time ) ;
40
41 %p a r a m e t r i i r e g u l a t o r
42 k_x_deriv =10;
43 k_y_deriv =10;
44 k_z_deriv =10;
45 k_x_propor =25;
46 k_y_propor =25;
47 k_z_propor =25;
48 k_x_integ =1;
49 k_y_integ =1;
50 k_z_integ =1;
51
52 %a f i s a r e a r a d a c i n i l o r p o l i n o a m e l o r c o n s t i t u i t e d i n
53 %c o e f i c i e n t i i p a r a m e t r i l o r de r e g l a r e de i n t e r e s
54 %d o r e s c s a vad daca i n urma a l e g e r i i unor p a r a m e t r i i
55 % de r e g l a r e p o l i i s i s t e m u l u i s u n t s t a b i l i
56 %a d i c a daca au p a r t e a r e a l a n e g a t i v a
57 r o o t s ( [ 1 k_phi_deriv k_phi_propor k_phi_integ ] )
58 r o o t s ( [ 1 k_theta_deriv k_theta_propor k_theta_integ ] )
59 r o o t s ( [ 1 k_x_deriv k_x_propor k_x_integ ] )
60 r o o t s ( [ 1 k_z_deriv k_z_propor k_z_integ ] )
61
62 %c r e a r e v a r i a b i l e p e n t r u i n t r a r i l e s i m u l a r i l o r n o a s t r e
63 x _ r e f . t i m e=time ;
64 x _ r e f . s i g n a l s . v a l u e s=x ’ ;
65 x_ref.signals.dimensions =[1];
66
67 y _ r e f . t i m e=time ;
68 y _ r e f . s i g n a l s . v a l u e s=y ’ ;
69 y_ref.signals.dimensions =[1];
70
71 z _ r e f . t i m e=time ;
72 z _ r e f . s i g n a l s . v a l u e s=z ’ ;
73 z_ref.signals.dimensions =[1];
74
75 p s i _ r e f . t i m e=time ;
76 p s i _ r e f . s i g n a l s . v a l u e s=p s i ’ ;
77 psi_ref.signals.dimensions =[1];
78
79 %p a r t e a d e d i c a t a f o r m u l a r i i de problema de o p t i m i z a r e
80 %f o l o s i n d u −ne de m a t r i c i l e
81 %c e d e f i n e s c r e p r e z e n t a r e pe s t a r e a s i s t e m u l u i
82 global controller
83
84 A = [ z e r o s ( 3 ) eye ( 3 ) ; z e r o s ( 3 ) z e r o s ( 3 ) ] ;
85 B = [ z e r o s ( 3 ) −eye ( 3 ) ] ’ ;
86 C = [ eye ( 3 ) z e r o s ( 3 ) ] ;
87 Ad = eye (6)+ sampleTime *A;
88 Bd = sampleTime *B ;
89 Cd = C ;
90
91 %s c o p : s a s e c o n t r o l e z e i e s i r e a s i s t e m u l u i a s t f e l i n c a t s a m a n i f e s t e
92 %s t a b i l i t a t e s i s a s a t i s f a c a c o n s t r a n g e r i
93 %s o l u t i e : s a s e r e z o l v e o problema MPC cu un c o s t p a t r a t i c
63
94 % tinandu−s e c o n t
95 %de dinamica s i s t e m u l u i s i de c o n s t r a n g e r i
96
97 %f o r m u l a r e a p r o b l e m e i
98 %s a l v a r e a d i m e n s i u n i i s i s t e m u l u i
99 [ dx , du ] = s i z e (Bd ) ;
100 dy = s i z e (Cd , 1 ) ;
101
102 %m a t r i c i de p o n d e r a r e
103 Q = eye ( dx ) ; % m a t r i c e a de c o s t a s t a r i i x
104 Qy = eye ( dy ) ; % m a t r i c e a de c o s t a i e s i r i i y
105 P = 10*Q; % m a t r i c e a de c o s t t e r m i n a l
106 R = 0; % c o s t u l comenzii u
107
108 Npred = 5 ; % o r i z o n t u l de p r e d i c t i e
109
110 %In c o n t i n u a r e d e f i n i m v a r i a b i l e l e de o p t i m i z a r e s i formulam problema de
111 %o p t i m i z a r e i n s i n t a x a s p e c i f i c a Yalmip
112 u = sdpvar ( repmat ( du , 1 , Npred ) , o n e s ( 1 , Npred ) ) ;
113 umin = sdpvar ( du , 1 ) ;
114 umax = sdpvar ( du , 1 ) ;
115 u i n i t = sdpvar ( du , 1 ) ;
116 uprev = sdpvar ( du , 1 ) ;
117 x = sdpvar ( repmat ( dx , 1 , Npred +1) , o n e s ( 1 , Npred + 1 ) ) ;
118 y = sdpvar ( repmat ( dy , 1 , Npred +1) , o n e s ( 1 , Npred + 1 ) ) ;
119
120 %i n i t i a l i z a r e a c o n s t r a n g e r i s i o b i e c t i v e
121 c o n s t r a i n t s = [ y{1}==Cd*x { 1 } ] ;
122 objective = 0;
123
124 %s c r i e c o n s t r a n g e r i l e s i o b i e c t i v e l e p e s t e o r i z o n t u l de p r e d i c t i e
125 f o r k = 1 : Npred
126 i f ( k==1)
127 uprev = u i n i t ;
128 else
129 uprev = u{k −1};
130
131 end
132 constraints = [ constraints , . . .
133 x{k+1} == Ad*x{k}+Bd*u{k} , . . . %dinamica
134 umin <= u{k} <= umax , . . . %c o n s t r a n g e r i l e de comanda
135 y{k+1} == Cd*x{k} ] ;
136 o b j e c t i v e = o b j e c t i v e+y{k } ’ *Qy*y{k}+(u{k}−uprev ) ’ *R* ( u{k}−uprev ) ;
137 %f u n c t i a de c o s t p a t r a t i c a i n t e r m e d i a r a
138 end
139 o b j e c t i v e = o b j e c t i v e+y{ Npred +1} ’*Qy*y{ Npred +1};
140 %f u n c t i a de c o s t t e r m i n a l a
141
142 %o p t i o n s = s d p s e t t i n g s ( ’ v e r b o s e ’ , 1 , ’ s o l v e r ’ , ’ + c p l e x ’ ) ; %impune ca s o l v e r
143 %c p l e x , nu e s t r i c t n e c e s a r ; i m p o rt a n t e s t e semnul ”+” c e t r a s m i t l u i
144 %yalmip
145 %ca problema e n e l i n i a r a
146 options =[];
147
148 %c a l c u l a r e c o n t r o l l e r MPC
149 %−−pr i m u l s i a l d o i l e a argument r e p r e z i n t a c o n s t r a n g e r i l e s i o b i e c t i v u l
150 %−−a l t r e i l e a argument r e p r e z i n t a s e t a r i l e o p t i o n s sau s d p s e t t i n g s
151 %−−a l p a t r u l e a argument r e p r e z i n t a v a r i a b i l e l e de i n t r a r e sau p a r a m e t r i i
152 %−−a l c i n c i l e a argument r e p r e z i n t a v a r i a b i l e l e de i e s i r e sau v a r i a b i l e l e
153 % de d e c i z i e
64
154
155 p a r a m e t e r s = { [ x { 1 } ; umin ; umax ; u i n i t ] } ;
156 output = {u { 1 } } ;
157 c o n t r o l l e r = o p t i m i z e r ( c o n s t r a i n t s , o b j e c t i v e , o p t i o n s , parameters , output ) ;
158 %d e f i n e s t e a i c i p a r a m e t r i i s i i n t r a r i l e
159
160 %r u l a r e model s i m u l i n k
161 open ( ’ untitledCrisuMPC ’ )
162 % s e t a r e timp de s i m u l a r e
163 set_param ( ’ untitledCrisuMPC ’ , ’ StopTime ’ , num2str ( 2 0 ) )
164 set_param ( ’ untitledCrisuMPC ’ , ’ A l g e b r a i c L o o p S o l v e r ’ , ’ L i n e S e a r c h ’ )
165 load_system ( ’ untitledCrisuMPC ’ ) % s e i n c a r c a modelul s i m u l i n k ;
166 sim ( ’ untitledCrisuMPC ’ ) % s e r u l e a z a modelul s i m u l i n k
167
168 %r e p r e z e n t a r e a g r a f i c a a d a t e l o r de i n t e r e s
169 subplot (2 ,2 ,1)
170 %c l o s e a l l ;
171 h o l d on ; g r i d on ;
172 c o l o r = ’ rgb ’ ;
173 f o r i =1:3
174 plot ( simout.time , s i m o u t . s i g n a l s . v a l u e s ( : , i ) , c o l o r ( i ) ) ;
175 end
176 p l o t ( x _ r e f . t i m e , x _ r e f . s i g n a l s . v a l u e s , c o l o r ( 1 ) , ’ L i n e S t y l e ’ , ’−− ’ ) ;
177 p l o t ( y _ r e f . t i m e , y _ r e f . s i g n a l s . v a l u e s , c o l o r ( 2 ) , ’ L i n e S t y l e ’ , ’−− ’ ) ;
178 p l o t ( z _ r e f . t i m e , z _ r e f . s i g n a l s . v a l u e s , c o l o r ( 3 ) , ’ L i n e S t y l e ’ , ’−− ’ ) ;
179 l e g e n d ( ’ x ’ , ’ y ’ , ’ z ’ , ’x_{ r e f } ’ , ’y_{ r e f } ’ , ’ z_{ r e f } ’ ) ;
180 a x i s ( [ 0 20 −20 90 ] )
181 y l a b e l ( ’cm ’ ) ;
182 xlabel ( ’ sec ’ ) ;
183
184 subplot (2 ,2 ,2);
185 h o l d on ; g r i d on ;
186 plot3 ( simout.signals.values (: ,1) , simout.signals.values (: ,2) , . . .
187 simout.signals.values (: ,3))
188 plot3 ( x_ref.signals.values , y_ref.signals.values , z_ref.signals.values , . . .
189 ’ Color ’ , ’ r ’ )
190 view ( 3 )
191 l e g e n d ( ’ Urmarirea r e f e r i n t e i ’ , ’ T r a i e c t o r i a de r e f e r i n t a ’ )
192 y l a b e l ( ’cm ’ ) ;
193 x l a b e l ( ’cm ’ ) ;
194 z l a b e l ( ’cm ’ ) ;
195
65
214 legend ( ’ Propulsia T’ )
215 ylabel ( ’N ’ ) ;
216 xlabel ( ’ sec ’ ) ;
217 axis ([0 20 −5 1 0 ] )
218
219 %p l o t a r e a v a r i a t i e i c o n s t r a n g e r i l o r de comanda pe t o t o r i z o n t u l
220 % de p r e d i c t i e
221 figure
222 f o r i =1:3
223 subplot (3 ,1 , i )
224 h o l d on ; g r i d on ;
225 plot ( simout5.time , s i m o u t 5 . s i g n a l s . v a l u e s ( : , i ) , ’b ’ )
226 plot ( simout6.time , s i m o u t 6 . s i g n a l s . v a l u e s ( : , i ) , ’ r ’ )
227 a x i s ( [ s i m o u t 5 . t i m e ( 1 ) s i m o u t 5 . t i m e (end) 1 . 2 5 *min . . .
228 ( s i m o u t 5 . s i g n a l s . v a l u e s ( end −100 :end , i ) ) 1 . 2 5 * . . .
229 max( s i m o u t 6 . s i g n a l s . v a l u e s ( end −100 :end , i ) ) ] )
230 end
231
232 %p l o t a r e a v a r i a t i e i c o n s t r a n g e r i l o r de comanda pe t o t o r i z o n t u l
233 % de p r e d i c t i e
234 figure
235 i n t e r v a l =[6 . 5 6 . 7 5 ] ;
236 i=f i n d ( s i m o u t 5 . t i m e >i n t e r v a l ( 1 ) , 1 , ’ f i r s t ’ ) ;
237 j=f i n d ( s i m o u t 5 . t i m e <i n t e r v a l (end) , 1 , ’ l a s t ’ ) ;
238 i n t e r v a l=i : j ;
239 i n t S a m p l e=s i m o u t 5 . t i m e ( i n t e r v a l ( 1 ) ) : sampleTime : s i m o u t 5 . t i m e ( i n t e r v a l (end) ) ;
240 f o r i =1:3
241 subplot (3 ,1 , i )
242 h o l d on ; g r i d on ;
243 plot ( simout5.time ( i n t e r v a l ) , s i m o u t 5 . s i g n a l s . v a l u e s ( interval , i ) , ’b ’ )
244 plot ( simout6.time ( i n t e r v a l ) , s i m o u t 6 . s i g n a l s . v a l u e s ( interval , i ) , ’ r ’ )
245 a x i s ( [ s i m o u t 5 . t i m e ( i n t e r v a l ( 1 ) ) s i m o u t 5 . t i m e ( i n t e r v a l (end) ) . . .
246 min ( s i m o u t 5 . s i g n a l s . v a l u e s ( i n t e r v a l , i ) ) . . .
247 max( s i m o u t 6 . s i g n a l s . v a l u e s ( i n t e r v a l , i ) ) ] )
248 stem ( intSample , i n t e r p 1 ( i n t e r v a l , . . .
249 simout5.signals.values ( interval , i ) , . . .
250 intSample , ’ p c h i p ’ ) , ’ b ’ ) ;
251 stem ( intSample , i n t e r p 1 ( i n t e r v a l , . . .
252 simout6.signals.values ( interval , i ) , . . .
253 intSample , ’ p c h i p ’ ) , ’ r ’ ) ;
254 end
66
phi
wx
theta
[A] ddot_phi
psi
wy ddot_theta um1
phi_dot From
ddot_psi
theta_dot [B] m1
wz
m2
psi_dot From1
4 du/dt m3
phi w
[C] m4
Derivative phi
m5 um2
theta From2
5 du/dt wx_dot simout5
m6
psi
theta
m7
Derivative1 phi_dot To Workspace
m8
theta_dot wy_dot
6 du/dt
m9
psi_dot
psi
v1
Derivative2 I_xx
wz_dot v2 um3
I_yy
v3
I_zz
I_xx w_dot
Constant1 u_mpc_min
I_yy
Constant
I_zz ddot_phi
ddot_theta uM1
Constant2
ddot_psi
m1 m1
phi
m2 m2
theta m3 m3
m4 m4
psi
m5 m5 uM2
I_xx
m6 m6 simout6
I_yy m7 m7
To Workspace1
m8 m8
I_zz
m9 m9
M_eta v1
v2 uM3
phi v3
theta v1
psi u_mpc_max
phi_dot
theta_dot v2
psi_dot
I_xx
I_yy v3
I_zz
V_eta_dot_eta
phi
theta tau_phi 1
psi tau_phi
Saturation
tau_phi_prim
1 du/dt du/dt tau_theta_prim
phi_ref
tau_psi_prim
dot phi_ref ddot phi_ref 2
wx_dot
tau_theta
wy_dot tau_theta Saturation1
wz_dot
wx
wy 3
tau_psi
wz
Add Add1 Saturation2
I_xx
I_yy tau_psi
theta_ref
67
dot theta_ref ddot theta_ref Constant4
I_yy main
Constant3
I_zz
Add3
Add2
Constant5
3 du/dt du/dt
psi_ref
dot psi_ref ddot psi_ref [A]
Goto
[B]
Add5 Goto1
Add4
[C]
Goto2
Pulse
Generator
Inputs outputs
0
Triggered
Clock
scheduling controller
du/dt
Derivative3
E.3 Controller-ul TC bazat pe MPC de nivel jos
du/dt
Derivative4
du/dt
Derivative5
Transport
Delay
Bibliografie
[1] Edmund X DeJesus and Charles Kaufman. Routh-hurwitz criterion in the examina-
tion of eigenvalues of a system of nonlinear ordinary differential equations. Physical
Review A, 35(12):5288, 1987.
[2] Simone Formentin and Marco Lovera. Flatness-based control of a quadrotor helicop-
ter via feedforward linearization. In CDC-ECE, pages 6171–6176, 2011.
[4] Meghana Gopabhat Madhusudhan. Control of Crazyflie nano quadcopter using Si-
mulink. PhD thesis, CALIFORNIA STATE UNIVERSITY, LONG BEACH, 2016.
[6] Jong Tai Jang, Hyeon Cheol Gong, and Joon Lyou. Computed torque control of
an aerospace craft using nonlinear inverse model and rotation matrix. In Control,
Automation and Systems (ICCAS), 2015 15th International Conference on, pages
1743–1746. IEEE, 2015.
[7] Teppo Luukkonen. Modelling and control of quadcopter. Independent research project
in applied mathematics, Espoo, 2011.
[8] Ionela Prodan, Sorin Olaru, Ricardo Bencatel, Joao Borges De Sousa, Cristina Stoica,
and Silviu-Iulian Niculescu. Receding horizon flight control for trajectory tracking of
autonomous aerial vehicles. Control Engineering Practice, 21(10):1334–1349, 2013.
[10] C. WEN, X. Ma, and B. Erik Ydstie. Analytical expression of explicit MPC solution
via lattice piecewise-affine function. Automatica, 45(4):910–917, 2009. 00049.
[12] Zongyu Zuo. Trajectory tracking control design with command-filtered compensation
for a quadrotor. Control Theory & Applications, IET, 4(11):2343–2355, 2010.
68