Bucureşti, Calea Văcărești , nr. 189, corp M sector 4, cod 004051 Tel: +4 021. 330.10.83; Fax: +4 021. . . e-mail:
[email protected] ; web: www.lumina.org
;
UNIVERSITATEA TITU MAIORESCU
FACULTATEA: INFORMATIC INFORMATICĂ DEPARTAMENT: INFORMATICĂ Progr ama de studii : INFORMAT INFORMATIC ICĂ DISCIPLINA: INFORMATICĂ APLICATĂ ÎN ROBOTICĂ
1
Beeringʼs Robot Autonomous Mobile Conf.dr.ing. Lucian Ștef ăniță GRIGORE
Rover 4x4 – Laborator Nr. 1
1
UNIVERSITATEA TITU MAIORESCU
Cuprins Cuprins .................................................................. ....................................................................................................................................... ............................................................................................. ........................2 1.
INTRODUCERE INTRODUCERE ............................................................... ....................................................................................................................................... ........................................................................3
2.
init - Line Following Robot (LFR)................................................11 Robot care urmează un traseu predef init 2.1
Senzori........................................................................................................................ .............................................................................................................................................. ...................... 16
2.1.1
Senzor IR QRE1113 ................................................................................................................. .................................................................................................................16
2.1.2
Senzor IR QTR-1RC, QTR-L-1RC, QTR-3RC, QTR-8RC .....................................................17
2.1.3
...................................................................................................... ................................. 18 Senzor infraroșu QRB1114 .....................................................................
2.1.4
Senzor infraroșu QRD1114 ..................................................................... ...................................................................................................... .................................20
2.2
Logica algoritmului .......................................................................................................................... .......................................................................................................................... 23
2.3
.......................................................................................................................................... .....................................................................27 Cod sursă .....................................................................
3.
MODELARE MODELARE PROGRAM PROGRAM LINE FOLLOWING ROBOT - SIMULINK .............................................. .............................................. 31
4.
CONSTRUIREA CONSTRUIREA UNUI MODEL SIMPLU S IMPLU ........................................................................................... 34
5.
EXPERIMENT EXPERIMENT - exemplificare................................................................... ............................................................................................................... ............................................39
6.
REZULTATE REZULTATE EXPERIMENTALE EXPERIMENTALE........................................................................................................42 6.1
Line Following cu senzor IR ............................................................................................................ ............................................................................................................42
6.2
Forma grafică a rezultatelor .............................................................. ............................................................................................................. ...............................................44
6.3
Interpretarea Interpretarea rezultatelor rezultatelor ...................................................................... .................................................................................................................. ............................................46
7.
BIBLIOGRAFIE BIBLIOGRAFIE ............................................................... ..................................................................................................................................... ......................................................................47
8.
FIGURI .................................................................... ......................................................................................................................................... ................................................................................ ........... 48
9.
ABREVIERI ABREVIERI ........................................................... ................................................................................................................................... ................................................................................. ......... 49
Îndrumarul de laborator „ Informatică Aplicată pentru Robotică” este elaborat în conformitate cu programa de studiu la specializarea specializarea: „ Informatică”, programa de studii: „ Informatică”, pentru „Universitatea TITU MAIORESCU – Bucure Bucureș ti”.
Rover 4x4 – Laborator Nr. 1
2
UNIVERSITATEA TITU MAIORESCU
Cuprins Cuprins .................................................................. ....................................................................................................................................... ............................................................................................. ........................2 1.
INTRODUCERE INTRODUCERE ............................................................... ....................................................................................................................................... ........................................................................3
2.
init - Line Following Robot (LFR)................................................11 Robot care urmează un traseu predef init 2.1
Senzori........................................................................................................................ .............................................................................................................................................. ...................... 16
2.1.1
Senzor IR QRE1113 ................................................................................................................. .................................................................................................................16
2.1.2
Senzor IR QTR-1RC, QTR-L-1RC, QTR-3RC, QTR-8RC .....................................................17
2.1.3
...................................................................................................... ................................. 18 Senzor infraroșu QRB1114 .....................................................................
2.1.4
Senzor infraroșu QRD1114 ..................................................................... ...................................................................................................... .................................20
2.2
Logica algoritmului .......................................................................................................................... .......................................................................................................................... 23
2.3
.......................................................................................................................................... .....................................................................27 Cod sursă .....................................................................
3.
MODELARE MODELARE PROGRAM PROGRAM LINE FOLLOWING ROBOT - SIMULINK .............................................. .............................................. 31
4.
CONSTRUIREA CONSTRUIREA UNUI MODEL SIMPLU S IMPLU ........................................................................................... 34
5.
EXPERIMENT EXPERIMENT - exemplificare................................................................... ............................................................................................................... ............................................39
6.
REZULTATE REZULTATE EXPERIMENTALE EXPERIMENTALE........................................................................................................42 6.1
Line Following cu senzor IR ............................................................................................................ ............................................................................................................42
6.2
Forma grafică a rezultatelor .............................................................. ............................................................................................................. ...............................................44
6.3
Interpretarea Interpretarea rezultatelor rezultatelor ...................................................................... .................................................................................................................. ............................................46
7.
BIBLIOGRAFIE BIBLIOGRAFIE ............................................................... ..................................................................................................................................... ......................................................................47
8.
FIGURI .................................................................... ......................................................................................................................................... ................................................................................ ........... 48
9.
ABREVIERI ABREVIERI ........................................................... ................................................................................................................................... ................................................................................. ......... 49
Îndrumarul de laborator „ Informatică Aplicată pentru Robotică” este elaborat în conformitate cu programa de studiu la specializarea specializarea: „ Informatică”, programa de studii: „ Informatică”, pentru „Universitatea TITU MAIORESCU – Bucure Bucureș ti”.
Rover 4x4 – Laborator Nr. 1
2
UNIVERSITATEA TITU MAIORESCU
1. INTRODUCERE Roboții mobili sunt robo ții capabili să -și modifice pozi ția elementului de bază în raport cu un sistem de referință considerat fix, legat de suprafaț a de susținere. Acest tip de robo ți permit intervenția în diferite puncte ale mediului în care lucrează, în acest fel obținându-se o considerabilă mărire a spaț iului de lucru ceea ce conduce la transformarea acestuia aces tuia într -un adevărat câmp de lucru. În principiu, roboții mobili pot asigura evitarea sau chiar depășirea obstacolelor de pe suprafața de susținere, deplasarea pe scări ș i alte suprafețe artificiale precum și navigația în preajma
sau peste denivelări majore ale acesteia, în mod independent. Locomo ția este deplasarea în care corpul, considerat ca un întreg, se mișcă pe suprafeț e de sprijin naturale sau artificiale. Deplasarea pe suprafețe trebuie să ia în considerare reacțiunile acestora. Comportarea suprafeței de sprijin depinde în principal de forțele aplicate asupra ei în cursul locomoției. Reacțiunea exercitată de substratul de sprijin depinde de asemenea de forma precum ș i de natura suprafeței. Suprafețele naturale sunt continue, prezintă obstacole, denivelări, pante, găuri, etc. și pot fi ferme sau alunecoase, în timp ce suprafeț ele artificiale, deși de cele mai multe ori ferme, pot prezenta discontinuităț discontinuități. Analiza globală a problemei locomoț iei pe suprafețe conduce la identificarea a patru tipuri de for țe, țe, printre acestea incluzându -se și for ța de propulsie: for ța ța de împingere exercitată asupra substratului în direcția mișcării; • propulsia – for for ța ța care să permită ancorarea pentru faza de propulsie; • adeziune – for for ța ța care să permită rezistenț a mobilului față de tendinț ele de detașare a • coeziunea – for acestuia de substrat; inere – for for ța • sus ț inere ța care să compenseze tendinț a unor for țe țe exterioare de prăbuș ire a mobilului pe suprafața de sprijin. Analiza condițiilor de mediu în care are loc locomoț ia mobilului are o importanță deosebită, deoarece acestea impun restricții de gabarit, structurale, cinematice și dinamice asupra acestora. Pentru a realiza configur area area geometrică a unui propulsor trebuie propulsor trebuie luată în calcul influența pe care o au caracteristicile geometrice ale acestuia asupra: • mobilității robotului pe terenuri cu configura ții și consistențe diverse; •
stabilității robotului pe timpul deplasării și pe timpul executării misiunii specifice.
Fig. 1-1 Reprezentarea sistemelor robotizate autonom/semiautonome
Pentru toate aceste situații, interacțiunea dintre robot și mediu se restrânge la interacț iunea dintre propulsorul și teren. Efectele terenului asupra robotului pot fi grupate în categoriile prezentate în (Fig. 1-1). Configurarea platformei și a propulsorului trebuie să fie rezultatul s tudierii atente a
Rover 4x4 – Laborator Nr. 1
3
UNIVERSITATEA TITU MAIORESCU
influenței pe care larga diversitate de parametri ai terenului o exercită asupra caracteristicilor de mobilitate și stabilitate. Platformele trebuie să se caracterizeze printr-o concepție modulară, un grad sporit de versatilitate conferit de capacitatea de a conlucra cu diferite tipuri de suprastructuri, flexibilitate ridicată datorită existenței posibilităților de adaptare constructivă și funcțională la cerințele unei palete largi de utilizatori. etc.
Fig. 1-2 Reprezentarea efectelor terenului asupra propulsorului
Deplasarea robotului este gestionată de un controler, care introduce în schemă parametrii modelului cinematic și dinamic, astfel încât, să permită ajustarea/reglarea elementelor de geometrie (translație, rotație) în mod separat dar și compus. Cinematica robotului și constr ângerile ângerile de dinamicitate (viteze, accelerații) trebuie să fie compatibile cu geometria robotului, în caz contrar nu vom putea utiliza modelul analitic.
Fig. 1-3
Schematizarea constrângerilor cinematice și dinamice
De aceea se recomandă o analiză de stabilitate și de senzitivitate, în scopul de a obține liniile directoare pentru un controler de tuning. Controlerul prime ște un set de valori a parametrilor de funcționare, în sensul, timpilor de integrare și de derivare, astfel încât răspunsul dinamic în buclă închisă să permită obținerea unei comportări dorite. Ajustarea buclei reprezintă principalul punct de contact între operator și sistemul de control. Controlerul efectuează de fapt un compromis între obiectivele prevăzute în: caietul de sarcini și cerințele de performanță. Există criterii foarte rar absolute pentru selectarea ajustărilor. De aceea este necesară pregătirea unei bucle de reacție, care să ia în considerare o serie de preocupări ș i obiective. De asemenea modelul dinamic ia în considerare constrângerile cinematice ș i dinamice ale robotului, ceea ce permite determinarea analitică a vitezelor ș i accelerațiilor și care valori se aproprie de cele măsurate. Rover 4x4 – Laborator Nr. 1
4
UNIVERSITATEA TITU MAIORESCU
Fig. 1-4 Reprezentarea schemei de control a cinematicii și dinamicii.
Modul de func ționare
este de tipul buclă închisă. Este un model simplificat, dar reprezintă bazele sistemelor de astăzi. Abordarea simplificată are avantajul că parametrii fizici pot fi reglați ușor pentru a obține comportamentul dinamic dorit. Controlerul func ționează ca un generator de miș care. Nu realizează reglări suplimentare, iar navigația se efectuează pe baza unor modele prestabilite, fără ca acestea să fie modificabile. Controlerul în cauză generează traiectorii sau funcționează pe principiul navigării reactive. Ecuațiile (1.1) care permit reglarea caracteristicilor de dinamicitate ale robotului sunt:
∙ ω̇2∙ m ∙ s ∙ v ∙ ω ∙∙d ∙ω F∙h s∙ s i n θ m∙vIzz m∙s m∙s∙ω μ∙m∙g ∙ ∙v F∙cosθ ‖‖ ̇ ∙∙ 0 0 F∙cosθ ẋ 0 ∙∙∙d∙x0 ∙F∙sinθ ‖‖ , , , ,,,
(1.1)
unde: F - modul de ; m - masa robotului; I zz - momentul de iner ție în jurul axei verticale; b coeficientul de frecare vâscoasă ; - coeficientul de frecare Coulomb. După câteva simplificări legate de termenii neglijabili (s - se consideră a fi nulă sau destul de mică), ecuațiile anterioare se vor transforma în ecuaț ii diferențiale liniare, care pot fi exprimate ca o ecuație spațială de tipul: .
(1.2)
Acest model de ecuație diferențială de mișcare a unui robot mobil se datorează acț iunii for ței . Modelul prezentat, așa cum am mai amintit are avantajul că ț ine cont și de constrângerile cinematice dar și de cele dinamice. Se poate constata că modelul de referință poate determina analitic poziția robotului: , valoare care este comparată cu poziția măsurată:
. Întotdeauna există erori între valorile calculate și cele măsurate. În cazul de față eroarea . Având introdus elementul de eroare pentru o aproximare cât mai bună, schema este notată cu de control se poate simplifica.
Fig. 1-5 Reprezentarea controlerului tip buclă închisă.
Rover 4x4 – Laborator Nr. 1
5
UNIVERSITATEA TITU MAIORESCU
,
În ipoteza că robotul mobil are un sistem de control al vitezei încorporat, acesta va încerca să controleze viteza robotului în baza ecuaț iei: . Această ecuație este valabilă doar dacă: viteza de reacție a controlerului este mult mai mare decât a întregului sistem de control; accelerațiile care pot fi impuse prin controller se regăsesc în intervalul de accelerare al robotului. Cu alte cuvinte, func țiile de transfer pentru vitezele controlate au valoarea 1. Modelul de referință în sine poate fi folosit ca un controler în buclă directă. În acest caz, eroarea , între robotul de locație , este , iar apoi sistemul de control final este cel și locația calculată reprezentat în blocul cu dublă aliniere. Ecuaț iile de mișcare utilizate de controler sunt obținute din modelul:
, 0 ̇ ∙∙ (, ) ∙cos, ∙sin arct(an,yl) −y l− {
Fig. 1-6 Direcția forței de acționare în funcție de
(1.3)
punctul de aplicație.
Stabilitatea traiectoriei se bazează pe modele predictive liniare și neliniare ale dinamicii unui vehicul terestru - MPC (Model Predictive Control) , modele care se validează prin experimente: algoritmi de orientare și navigare;
controlul robust al dinamicii robotului Following Line Robot; realizarea unui model virtual pentru co ntrolul orientării acestuia; implementarea unui NLMPC (Model Predictiv de Control Neliniar); implementarea unui LTV-MPC (Model Predictiv de Control Liniar); validarea modelului prin obținerea de rezultate experimentale.
Fig. 1-7 Algoritm pentru navigație/orientare și control al traiectoriei
Rover 4x4 – Laborator Nr. 1
6
UNIVERSITATEA TITU MAIORESCU
Schema algoritmului de navigare/orientare și control generează traiectorii urmate de un sistem de Plannig al traiectoriei și de un sistem de control, având în vedere minimizarea erorilor de poziț ie și reorientarea în funcție de traiectoria de referință planificată. Acest lucru implică introducerea de date aleatorii precum: schimbarea unghiului de rotire al robotului cât și efectele produse de frânare. Ecuația simplificată care descrie dinamica roții este: , (1.4) modelul dinamic asociat fiind:
[̇, ̇, , ̇,,,, , , , ] 1ℎ( )(, ) .
(1.5)
Pentru ca modelarea să fie completă trebuie luată în calc ul și deformarea balonului roții. Rezistența la rulare Rr este o for ță cu acțiune permanentă la rularea roț ilor pe cale, de sens opus sensului deplasării robotului . Cauzele fizice ale acestei rezistențe la înaintare sunt: deformarea cu histerezis a pneului, frecări superficiale între pneu și cale, frecările din lagărele roții, deformarea căii, percuția dintre elementele pneului și micro-neregularități ale căii, efectul de ventuză produs de profile cu contur închis pe banda de rulare etc. Fa ță de cauzele det erminate, rezistența la rulare depinde de un număr mare de factori de influență, printre care semnificativi sunt: construcț ia pneului, viteza de deplasare, presiunea aerului din pneu, for țele și momentele ce acționează asupra roț ii. În calculele de proiectare dinamică a roboților, rezistența la rulare este luată în considerare prin f - coeficientul rezisten ț ei la rulare, care reprezintă o forță specifică la rulare definită prin relaț ia:
∙ ∙
unde: R r – este rezistența la rulare;
(1.6)
- componenta greutății normală pe cale .
Deoarece pneul nu este perfect elastic, energia consumată pentru deformarea elementelor sale componente este mai mare decât energia cedată în timpul revenirii lor la forma inițială, diferenț a transformându-se în căldură – fenomenul de histerezis (Eroare! Fără sursă de referință. ). Având în vedere că rularea pneului pe drum constă dintr -o succesiune continuă de comprimări și destinderi ale elementelor de pneu se poate u șor înțelege că diferența dintre energia consumată la comprimare și cea recuperată la destindere se manifestă prin încălzirea pneului ș i prin apariția unei for țe rezistente care se opune rulării acestuia. Se observă (Fig. 1-8) că pentru aceeaș i deformație este necesară, la comprimare o forță g g pe care o dezvoltă elementul elastic la destindere. Rezultă că presiunile de contact dintre pneu și cale vor avea o distribuție asimetrică, rezultanta lor Z r se va afla pe un suport, deplasat cu distan ța a în sensul de mers, față de axa verticală, care trece prin centrul roț ii. Reacțiunea Z r va genera un moment de rezistență la rulare, definit prin relația (3.19): 2
1
∙
Fig. 1-8 Distribuția presiunii în zona de contact și
Rover 4x4 – Laborator Nr. 1
(1.7)
histerezisul cauciucului
7
UNIVERSITATEA TITU MAIORESCU
Pentru a scoate în evidență existenț a for ței de rezistență la rulare, trebuie studiat echilibrul roții motoare (Fig. 1-9), aplicând metoda izolării corpurilor. Astfel, în articulația de legătură cu puntea asupra roții acționează două forț e perpendiculare: -G greutatea repartizată pe roată; F for ța cu care puntea împinge roata. Ca urmar e a acțiunii acestor for țe în suprafața de contact a roții cu calea de rulare, apar reacțiunile drumului asupra ro ții: -Z r reacțiunea normală; -X reacțiunea tangențială. Contactul dintre roată și cale se face pe lungimea l, iar for ța Z r este rezultanta for țelor de presiune dintre anvelopă și cale.
Fig. 1-9
Echilibrul roții motrice
Ecuațiile de echilibru de for țe și momente ale roții motoare, la deplasarea robotului 6x6 cu
viteză uniformă, sunt: F X 0 F Y 0 Mo 0
(1.8)
X F t 0 Z r Gr 0 X r Z a M 0 d r R
(1.9)
Relația (3.20) este echivalentă cu:
Din (1.9) se poate determina expresia for ței R r, numită rezistență la
rulare, care apare la roată
și care se opune înaintării sale: F X Z r
a r D
f Z r Rr [N]
(1.10)
În mod convenț ional se definește forța la roată FR for ța rezultantă a eforturilor de frecare dintre pneu și calea de rulare, care ar produce asupra ro ții același efect pe care-l produce momentul la roată MR , adică: F R
M R r d
[N]
(1.11)
Din analiza relațiilor (1.10) și (1.11) se ajunge la expresia:
Rover 4x4 – Laborator Nr. 1
8
UNIVERSITATEA TITU MAIORESCU
F t
F R f Gr
F R
Rr [N]
(1.12)
Putem concluziona că forț a de tracțiune F t , cu care roata motoare împinge puntea robotului, este dată de diferenț a dintre for ța la roată F R , generată de momentul la roată M R și rezistența la rulare Rr proprie roții motoare. MPC reprezintă modele predictive de control on -line (Fig. 1-10). Acestea din cauza controlului optimal care trebuie aplicat în fiecare moment, limitează aplicabilitatea, astfel încât se produc încetiniri ale calculelor privind dinamica robotului. Prin urmare teoria controlului optimal a condus la urmă torul algoritm de NLMPC: • funcția obiectiv sau cost; • funcția de optimizare; • dinamica vehiculului – neliniar; • constrângeri inițiale; • varianta constrângerilor iniț iale.
Fig. 1-10 MPC – model predictiv de control
După cum se poate constata controlerul NLMPC trebuie să poată rezolva s imultan următoarele:
probleme de optimizare non-liniare; să rezolve neliniaritățile din cadrul operațiilor de optimizare;
să posede o putere mare de calcul; să poată compara rezultatele ana litice cu cele obținute pe cale experimental pentru validarea; să f uncționeze stabil.
min,Δ,Δ ∑=+, , ∑=−Δ+, +, ,(,, ,) ≍ , ℎ(,) |,, , …+,, Δ, {Δ,, ≤ ≤,Δ ≤, ≤,Δ, : ,…, 1
(1.13)
În principiu modelul prezentat trebuie să rezolve aproximativ 83 de ecuații diferențiale.
Rover 4x4 – Laborator Nr. 1
9
UNIVERSITATEA TITU MAIORESCU
Teoria conform căreia stabilitatea unui sistem neliniar presupune o abordare robustă, în care numărul de iterații ales să fie optim, astfel încât secvenț a de eșantionare să acopere cât mai mult din rezultatele reale. Pentru un sistem MIMO foarte rapid: • NLMPC nu se poate implementa cu metodologiile/tehnologiile actuale; • MPC liniare nu sunt stabile; • modelul empiric PWA dă soluț ii aproximative ().
Fig. 1-11 CARSIM – rezultate analitice
https://www.carsim.com/
Rover 4x4 – Laborator Nr. 1
10
UNIVERSITATEA TITU MAIORESCU
2. Robot care urmează un traseu predefinit - Line Following Robot (LFR)
LFR este un sistem robotizat autonom, care are drept scop să urmeze o cale vizibilă, într -un spectru de culoare. Cele mai frecvente soluții utilizează o linie neagră trasată pe o suprafață albă.
Fig. 2-1 Reprezentarea spectrului de lumină și lungimea de
undă
Când folosim noțiunea de culoare neagră trebuie să amintim de „ corpul negru”, care măsoară căldura și dinamica acesteia (termodinamica). Energia degajată de corpurile negre este produsă de radiația electromagnetică. Conform leg ii lui Max Planck distribuția spectrală a energiei radiate de un corp negru este dată de :
unde:
∙∙∙ ∙∙∙∙−
,
− ∙ ℎ 6. 6 26068 ∙10 300000
– distribuția spectrală a energiei; h – constanta lui Plank
viteza de propagare a undelor electromagnetice în vid ; k – constanta lui Boltzmann, T – temperatura .
;
2.1 ; c –
– lungimea de undă
Fig. 2-2 Spectrul vizibil și invizibil al luminii
Rover 4x4 – Laborator Nr. 1
11
UNIVERSITATEA TITU MAIORESCU
Fig. 2-3 Lungimea de undă a corpului negru https://260h.pbworks.com/w/page/69071363/Beginnings%20of%20Quantum%20Mechanics
Fig. 2-4 Graficele spectrelor
în funcție de frecvență și lungime de undă.
https://260h.pbworks.com/w/page/69071363/Beginnings%20of%20Quantum%20Mechanics
Fig. 2-5 Lungimea de undă a radiației electromagnetice și domeniul de aplicație. http://www.societyofrobots.com/sensors_color.shtml
Senzorii de lumină EO ș i IR nu văd culori, ei detectează diverse lungimi de undă, care sunt asociate unor culori (Fig. 2-5). Fotorezistoarele iau în consideraț ie diversele nuanțe, respectiv diversele intensități ale luminii, astfel încât, să putem distinge ș i/sau decela așa zisele culori. Fotorezistoarele au niveluri diferite de sensibilitate la difer ite culori, optimul din acest punct de vedere realizându-se în zona lungimii de undă de aprox imativ 520 [nm]. Modificarea pozi ției, a unghiului de reflexie, dar și al gradului de refracție vor contribui la modificarea citirii.
Rover 4x4 – Laborator Nr. 1
12
UNIVERSITATEA TITU MAIORESCU
De aceea lumina ambientală la o scanare simplă, în funcț ie de nivelul de vibra ții al suportului dar și al mediului (aer spre exemplu), are citiri diferite. Măsurarea este un capitol aparte. Similitudinea și segmentarea imaginilor se realizează prin nivelul de calibrare al senzorilor respectivi. Robotul va efectua sarcinile în funcț ie de capacitatea acestor senzori, dar și în funcție de timpul de reacție (viteza de analiză a controlerelor). Urmărirea unei linii albe/negre pe un fond negru/alb presupune calibrarea fotorezistorului la valorile analogice de 95 pentru podea gri, 112
pentru o linie de culoare albă, iar valoarea de adevăr, că robotul se află pe linie este de 108. , Segmentarea imaginii (thresholding) se realizează prin media aritmetică a celor două valori: care va decela informația legată de linia albă pe o podea gri. În cazul că terenul de lucru conț ine mai
9+
multe culori, pragul se va stabili prin metoda similitudinii: abs(new_reading - calibrating_reading)/calibrated_reading * 100 = similarity now using our numbers: grey floor = (108 - 95)/95 * 100 = 13.7% different white line = (108 - 112)/112 * 100= 3.6% different compare: white line < grey floor therefore the sensor sees a white line
Fig. 2-6 Calibrarea fototranzistorilor în funcție de numărul de
culori.
Programarea senzorul de culoare este foarte simplă: se porneș te un LED, se a șteaptă aproximativ 50 [ms], apoi se opre ște LED-ul/LED-urile. În cazul în care robotul are trei LED-uri de culori diferite, se poate aplica următorul pseudocod: turn on green LED wait 50ms record sensor reading G turn off green LED turn on red LED wait 50ms record sensor reading R turn off red LED turn on blue LED wait 50ms record sensor reading B turn off blue LED
Rover 4x4 – Laborator Nr. 1
13
UNIVERSITATEA TITU MAIORESCU
Există senzori (Sharp IR Range) care funcționează pe baza procesului de triangulare. Un impuls de lumină (lungimea de undă de 850nm +/ - 70nm) est emisă și apoi reflectat înapoi (sau nu ). Lumina se întoarce la un unghi care depinde de distanț a fa ță de obiectul țintă. Triangulare necesită detectarea unghiului de reflexie.
Fig. 2-7 Reprezentarea modului de funcționare al senzorilor Sharp IR Range.
Senzorii sunt limitați de intensitatea cu care luminează LED -ul, respectiv de ordinul [cm]. Acest inconvenient se poate diminua prin utilizarea unui laser (vezi semnalul telecomenzilor TV). Alimentarea unui led la o tensiune mai mare poate conduce la o intensitate a luminii mai mare, cu riscul de a arde led-ul. Dar dacă secvența de alimentare ca puls de tensiune se poate gestiona de către controler, în funcție de capacitatea de răcire a led -ului, atunci putem crește capacitatea de acțiune a robotului.
LFR este util pentru că permite folosirea unui mecanism de feedback simplu de tip buclă închisă. Astfel, programul introdus în controler răspunde la stimulii exterior i prin intermediul unor senzori. Este un preconcept de robo ți ce pot fi utilizați în hale industriale, magazine, depozite etc. Este un robot din clasa robo ților paraleli ce poate fi autonom dar care poate controlat prin intermediul unui joystick sau direct din calculator în regim wireless. Clasificarea în cadrul roboț ilor paraleli este dată de modul de conectare a senzorilor la pinii de date.
Fig. 2-8 Diagrama bloc de bază.
Realizarea acestui LFR necesită utilizarea a patru componente principale: calculator, microprocesor, microcontroler, software. INPUT: LFR trebuie să poată citi podeaua în culori le alb/negru și apoi să condiț ioneze semnalul prelevat de senzor și de a-l transmite controlerului MPU/CPU. De aceea
trebuie răspuns la următoarele întrebări: ce tip de senzori de detectare a liniei utilizează: lumină albă, LED, IR – infraroșu; Rover 4x4 – Laborator Nr. 1
14
UNIVERSITATEA TITU MAIORESCU
numărul de senzori; antenă Inverted VEE – antene orizontale, cu dipol inversat pentru orientare în spații înguste; modul de transmitere a informa țiilor: analog sau digital; PROCESS: MPU/CPU urmează să decidă cum trebuie modificată turația motoarelor astfel încât LFR să își poată modifica direcț ia și viteza de deplasare, concomitent cu „ rămânerea pe linia neagră”. Ce procesor se utilizează (PIC18F8680), limbajul de programare (asamblare) C++. OUTPUT: transmite noile semnale de control în funcție de viteză ș i direcție, conține informații despre motoarele DC, sursa de alimentare tensiune/curent, numărul de roți (de regulă două), rola de alunecare, tipul de PID pentru controlul direcț iei. STORAGE: programul și datele prelevate de senzori, viteza de deplasare, direcție de mers etc. trebuie stocate, pentru a putea relua procedurile de luare a deciziilor, față de o referință fixă și una variabilă.
ALGORITM: 1. L = senzor care citește 0 pentru lateral stânga; R = senzor care citește 0 pentru lateral dreapta. Dacă nu există un senzor L/R este 0, atunci L/R sunt egale cu 0. L4 1
L3 0
L2 0
L1 1
Stânga
R1 1
L3 1
L2 0
R4 1 Dreapta
R=0 L1 0
Stânga
R1 0
R2 0
Centru L=2
2.
R3 1
Centru L=3
L4 1
R2 1
R3 0
R4 0 Dreapta
R=4
În cazul în care toț i senzorii citesc 1: Goto step 3 If L>R move left If L
3. Move Clockwise (sens trigonometric) dacă mutarea s-a efectuat pe R (dreapta); Move counter Clockwise (în sens trigonometric) dacă mutarea s-a efectuat pe L (stâng a);
Se repetă Step 3 până când este găsită linia. 4. Goto step 1
Rover 4x4 – Laborator Nr. 1
15
UNIVERSITATEA TITU MAIORESCU
2.1 Senzori 2.1.1
Senzor IR QRE1113
Senzorii de reflectanți IR 1 pentru detecția caracteristicilor cu privire la suprafața de sub Line Follower, funcționează prin emiterea unui fascicul de lumină în infraroșu (IR) în jos spre suprafaț a podelei și măsurarea semnalului reflectat. Senzorul IR este constituit din două elemente de lucru: un emițător (Transmiter IR LED) și un receptor (Receive IR Detector) (Fig. 2-9).
Fig. 2-9 Senzor IR de linie analog QRE1113. https://robosavvy.com/store/sparkfun-redbot-sensor-line-follower.html
Senzorii IR (model QRE1113) func ționează cel suprafața de contact, distanța optimă fiind de aproximativ
3,175
mai bine atunci când sunt aproape de .
#include
RedBotSensor IRSensor1 = RedBotSensor(A3); // initialize a sensor object on A3 RedBotSensor IRSensor2 = RedBotSensor(A6); // initialize a sensor object on A6 RedBotSensor IRSensor3 = RedBotSensor(A7); // initialize a sensor object on A7 void setup() { Serial.begin(9600); Serial.println("Welcome to experiment 6!"); Serial.println("------------------------"); } void loop() { Serial.print("IR Sensor Readings: "); Serial.print(IRSensor1.read()); Serial.print("\t"); // tab character Serial.print(IRSensor2.read()); Serial.print("\t"); // tab character Serial.print(IRSensor3.read()); Serial.println(); delay(100); }
1
https://learn.sparkfun.com/tutorials/sparkfun-inventors-kit-for-redbot/experiment-6-line-followingwith-ir-sensors
Rover 4x4 – Laborator Nr. 1
16
UNIVERSITATEA TITU MAIORESCU
Senzorul IR acționează prin transmiterea unui fascicul de lumină IR în jos spre suprafață. În cazul în care detectorul este de peste o suprafață albă, lumina reflectată este recepționată de d etector
și emite un semnal LOW. Când senzorul este pe o suprafață neagră în care lumina este absorbită sau nu reflectată, detectorul IR emite un semnal HIGH. Senzorul IR furnizează o valoare analogică 0÷1023 invers dependentă de cantitatea de lumină reflectată IR. Valorile analogice citite în mediul , Arduino variază 0÷1023, deoarece Arduino utilizează Converter analog digital (ADC) pe vom citi următoarele: 0 pentru 0 [V] și 1023 pentru 5 [V]. Configurare cu Arduino – setup(), implică utilizarea comenzii: Serial.begin (9600); 9600 se referă la o rată de transfer sau numărul de biți pe secundă . 9600 este o rată bună de date moderată pentru majoritatea aplicaț iilor. Cu toate acestea, alte viteze, inclusiv: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 și 115200 sunt suportate de placa de dezvoltare Arduino.
…bps ∙
,
Funcționarea acestui senzor pentru detecția liniei de urmat este în • • •
10 bit
2.2
principiu următoarea:
urmează o linie dreaptă; urmează o linie dreaptă ș i se rotește la stânga sau la dreapta; urmează un labirint trasat cu bandă izolatoare de culoare neagră.
Fig. 2-10 Reprezentarea funcționării IR cu Arduino. https://circuitdigest.com/microcontroller-projects/line-follower-robot-using-arduino
2.1.2
Senzor IR QTR-1RC, QTR-L-1RC, QTR-3RC, QTR-8RC
Senzorii IR QTR-3RC, QTR-1RC, QTR-L-1RC, QTR-8RC sunt senzori de reflexie tip matrice de senzori, concepuți ca un senzor de linie. Modulul este realizat ca un suport bloc, atât pentru emițător cât și receptor (fototranzistor) în perechi de IR eg al distanțate la intervale de 0.375" (9.525 mm).
Pentru a utiliza un senzor, trebuie aplicată o tensiune la pinul OUT. Citirea datelor indică timpul de reflexie, care poate fi mai mare sau mai mic în funcție de tensiunea de ie șire. Acest lucru este necesar pentru a putea regla reacția robotului, astfel încât, corelarea cu viteza motoarelor să permită parcurgerea traseului și apoi reducerea timpului până la încheierea cursei. Multiplicarea numărului de senzori IR QTR de la 1 la 8 va asigura un consum mai red us de energie, atât pentru consumul aferent IR, dar mai ales pentru cel al motoarelor, întrucât timpul de reglare stânga -dreapta față de linie se reduce. Citirea simultană a unui număr cât mai mare de senzori este permisă de plăcile Arduino, în comparaț ie cu driverele obișnuite care erau integrate pe o placă ATmega128RFA12. Plăcile Arduino nu mai necesită convertoare analog digitale (ADC), au o sensibilitate mărită față de citirea analogică și poate citi în paralel toț i senzorii care sunt implementați pe robot. Ieșirile de pe IR QTR sunt independente, iar LED-urile sunt perechi pentru a reduce consumul de energie. LED-urile sunt controlate de un MOSFET . Oprirea alimentării LED-urile este avantajoasă, mai ales pe timpul cât acestea nu funcționează. 2
https://www.robofun.ro/platforme/avr/ATmega128RFA1
Rover 4x4 – Laborator Nr. 1
17
UNIVERSITATEA TITU MAIORESCU
20÷25mA
Tensiunea de alimentare curent de aproximativ
este limitată la .
5 V
, pentru a permite func ționarea la
3.3 V
și un
Fig. 2-11 Reprezentarea Senzorilor IR QTR-: 1RC, L-1RC, 3RC, 8RC. https://www.pololu.com/product/961
Fig. 2-12 Reprezentarea diagramei schematizate de lucru a senzorilor IR QTR-: 1RC, L-1RC, 3RC, 8RC. / https://www.pololu.com/product/961
2.1.3
Senzor infraro șu QRB1114
Senzorul QRB1114 constă dintr -o diodă emițătoare de infraroș u și un fototranzistor de siliciu NPN, montate unul lângă altul pe o axă optică convergentă într -o carcasă de plastic negru. Fototranzistorul este sensibil la radiațiile emise de dioda care emite numai atunci când un obiect reflectiv se află în câmpul de vedere al robotu lui. Senzorul QRB1114 este în esență un rezistor variabil. Principiul de func ționare este următorul: - linia neagră absoarbe o parte din lumină, astfel încât senzorul vede mai puțin din unda reflectată, iar tensiunea este mai mică (rezistență mai mare); - linia albă va reflecta înapoi mai multă lumină ș i vom avea o tensiune mai mare (rezisten ță mai mică). , care vor afișa valori cuprinse între Senzorii monitorizează tensiunea de alimentare de 0÷1024 pentru tensiuni cuprinse între . Calibrarea senzorului se face atât pentru dunga albă cât și cea neagră cu X, unde pentru se primeș te valoarea 500, iar pentru negru 100.
0÷5 V
Rover 4x4 – Laborator Nr. 1
5 V
18
UNIVERSITATEA TITU MAIORESCU
Pentru acest proiect vom monitoriza cantitatea de 5v a revenit la una dintre intrări analogice Arduino lui. Vom utiliza mai degrabă an alogic apoi digital, deoarece digitale este fie pornit sau oprit, și analogic este o scara de alunecare. Senzorii raportează o valoare 0 -1024 (pentru 5v). Noi calibra codul astfel încât să știm că = alb și negru X = X. De exemplu, atunci când senzorul este pe o suprafață albă senzor primește o valoare de 500 de la senzor. O suprafață neagră poate raporta 100. Se folosesc regulile următoare: X <300 = linia neagră , X > 300 = suprafa ță albă Pentru acuratețea informației se utilizează minim 2 senzori, astfel încât linia să fie permanent aflată între emisiile celor doi senzori.
Fig. 2-13 Reprezentarea senzorului QRB1114 https://www.sparkfun.com/datasheets/Sensors/QRB1114.pdf http://www.electronics-tutorials.ws/io/input-interfacing-circuits.html
Fig. 2-14 Reprezentarea senzorului QRB1114 http://www.botbuilder.co.uk/codeandprojects/bbline/
Codul de calibrare de configurare pentru Arduino, cu valori ideale în cazul utilizării unei linii de culoare neagră. Dacă totul este conectat corect trebuie să avem: Stânga: XXX Dreapta: XXX
Rover 4x4 – Laborator Nr. 1
19
UNIVERSITATEA TITU MAIORESCU
Se poziționează partea din față a robotului pe o suprafață de lumină clară / albă ș i așteptăm repetarea informației reflectate. Apoi se mută senzorii de pe linia neagră, din nou se așteaptă o secundă ș i apoi se înregistrează numărul care apare pe monitor. Al doilea set de numere trebuie să fie mai mare decât primul set de numere. // Bot builder BoxBot line follower code for the Photoreflector sensor bar calibration. int LeftOpto = 0; // Create a variable called LeftOpto on analog pin 0 so we can read the value of the Left Photosensor. int RightOpto = 1; // Create a variable called RightOpto on analog Pin 1 so we can read the value of the Right Photosensor. int lval = 0; // Initialise a variable called lval, this is used to store the Left sensors value, set it to 0. int rval = 0; // Initialise a variable called rval, this is used to store the Left sensors value, set it to 0. void setup() { Serial.begin(9600); // Start the serial service @ 9600 baud rate. } void loop() { lval = analogRead(LeftOpto); // Read the value incoming from the photoreflector on pin 0 and assign it to the variable lval. Serial.print("Left"); Serial.println(lval); // Print to the serial port the lval value so you can see what it is. rval = analogRead(RightOpto); // Read the value incoming from the photoreflector on pin 1 and assign it to the variable rval. Serial.print("Right:"); Serial.println(rval); // Print to the serial port the rval value so you can see what it is. } delay(1000); // Delay 1 second on each read so you have a chance to see the value. } int LeftOpto = 0; // Create a variable called LeftOpto on analog pin 0 so we can read the value of the Left Photosensor. int RightOpto = 1; // Create a variable called RightOpto on analog Pin 1 so we can r ead the value of the Right Photosensor. int TurnLED = 13; // We need to declare that we are using pin 13 for our turn indicator LED. int lval = 0; // Initialise a variable called lval, this is used to store the Left sensors value, set it to 0. int rval = 0; // Initialise a variable called rval, this is used to store the Left sensors value, set it to 0. #include // Include the servo library, so we can easily use servos. Servo LeftServo; // Tell the library that we want to create a servo called LeftServo. Servo RightServo; // Tell the library that we want to create a servo called RightServo. void setup() { pinMode(TurnLED, OUTPUT); // Set the turn LED pin t o be an output (so we can turn it on and off). LeftServo.attach(9); // Tell the servo object to attach the LeftServo to Pin 9. RightServo.attach(10); // Tell the servo object to attach the LeftServo to Pin 10. } void loop() { lval = analogRead(LeftOpto); // Read the value incoming from the photoreflector on pin 0 and assign it to the variable lval. if (lval > 550) { // If lval is greater that the threshold of what we determined the black line is - ie. we are on white. digitalWrite(TurnLED, HIGH); // Turn on the Turn LED on pin 13. LeftServo.write(90); // Stop the left servo by centering it. } else { digitalWrite(TurnLED, LOW); // Turn off the turn LED on pin 13. LeftServo.write(120); // Drive the left servo forward. } rval = analogRead(RightOpto); // Read the value incoming from the photoreflector on pin 1 and assign it to the variable rval . if (rval > 550) { // If rval is greater that the threshold of what we determined the black line is - ie. we are on white. digitalWrite(TurnLED, HIGH); // Turn on the Turn LED on pin 13. RightServo.write(90); // Stop the right servo by centering it. } else { digitalWrite(TurnLED, LOW); // Turn off the turn LED on pin 13. RightServo.write(50); // Drive the right servo in reverse (makes the bot go forward, as the servos are inverted). } delay(200); // Delay 200 microseconds, just to smooth out any jerky movements. }
2.1.4
Senzor infraro șu QRD1114
Senzorul QRD1114 3 este format din două componente: un emițător IR (diodă) ș i un fototranzistor de siliciu cu jonc țiune NPN. Tranzistorul bipolar NPN este confec ționat dintr-un monocristal: • E – emitor; • B – este baza; • C – colector. În cazul în ca re nu se poate determina ce tip de tranzistor avem PNP sau NPN se poate efectua
măsurarea conform Fig. 3
2-15
http://bildr.org/2011/03/various-proximity-sensors-arduino/
Rover 4x4 – Laborator Nr. 1
20
UNIVERSITATEA TITU MAIORESCU
Fig. 2-15 Reprezentarea tranzistorului bipolar (pnp sau npn) http://www.tehnium-azi.ro/page/articole_articles/_/articles/notiuni-teoretice-din-electronica/Tranzistorul_bipolar
Atât semnalul incident (de la emițător) cât ș i cel detectat (de fototranzistor) sunt perpendiculare pe fața senzorului. QRD1114 4 este capabil să sesizeze obiecte aflate la o distanță , iar pe Arduino vom citi valor i cuprinse între . Pentru o cuprinsă între funcționare corectă sunt necesare adăugarea unor rezistenț e (Fig. 2-16) de și
5,6 kΩ
.
0÷30
600÷1024 200 ÷2000 Ω 4,7÷
Fig. 2-16 Reprezentarea schemei funcționale a senzorului QRD1114
4
http://www.robotshop.com/letsmakerobots/hooking-qrd1114-line-sensor
Rover 4x4 – Laborator Nr. 1
21
UNIVERSITATEA TITU MAIORESCU
Întrucât suprafețele albe reflectă mai multă lumină decât cele negr e, este posibil ca în funcț ie de alte surse externe de lumină (flash aparat fotografiat, lămpi, lumina solară etc.) să obț inem rezultate false.
Fig. 2-17 Reprezentarea senzorului QRD1114 https://www.fairchildsemi.com/products/optoelectronics/infrared/reflective-sensors/QRD1114.html
Rover 4x4 – Laborator Nr. 1
22
UNIVERSITATEA TITU MAIORESCU
2.2 Logica algoritmului Logica acestui algoritm are următoarea reprezentare grafică 5 a părții din față a liniei următoare
bot pentru referință.
Fig. 2-18 Reprezentarea schemei logice de
funcționare a u nui Line Follower Robot
Software6 Arduino UNO motor pentru PWM pe pinul 11: http://arduino.cc/en/Reference/Libraries */ #include //Setting up the Hardware pins // First the line following (IR) sensors const int irLeft = 2; //Left line sensor is on pin A2 const int irRight = 3; //Right line sensor is on pin A3 //Setting up the Arduino Motor Shield const int leftDIR = 12; const int rightDIR = 13; const int leftPWM = 3; const int rightPWM = 11; const int leftBrake = 9; const int rightBrake = 8; const char bothSpeed = 100; //sets how fast the motors will spin (0 to 255) //Here we set up variable that will hold the ADC value representing the line sensor values int leftSees = 0; //A2 ADC value (0 to 1023) int rightSees = 0; //A3 ADC value (0 to 1023) void setup() { //Make sure to set all of our control signal pins as output
5 6
http://chipkit.net/arduino-mc-line-follower/
http://www.chipkit.org/wiki/index.php?title=Library_Status#SoftPWMServo_library
Rover 4x4 – Laborator Nr. 1
23
UNIVERSITATEA TITU MAIORESCU pinMode(leftDIR, OUTPUT); pinMode(rightDIR, OUTPUT); pinMode(leftBrake, OUTPUT); pinMode(rightBrake, OUTPUT); //Next we make sure our brake signals are set LOW digitalWrite(leftBrake, LOW); digitalWrite(rightBrake, LOW); } void loop() { //Start by reading the left sensor on A2 int leftEye = analogRead(irLeft); //delay a little bit delay(5); //next read the right sensor connected A3 int rightEye = analogRead(irRight); //Next, we run the motors based on the sensor reading //If both sensors see black (ADC value greater than 1000), then back up if ((leftEye >= 1000)&&(rightEye >= 1000)) reverse(); //Otherwise, if only the left sensor sees black, then turn off the left motor //so the robot veer to the left else if ((leftEye >= 1000)&&(rightEye < 1000)) turnLeft(); //Otherwise, if only the right sensor sees black, then turn off the right motor //so the robot veer to the right else if ((leftEye < 1000)&&(rightEye >= 1000)) turnRight(); //Otherwise, move forward else forward(); } //Turn right by turning off the right motor //i.e disable the PWM to that wheel void turnRight(void) { digitalWrite(leftDIR, HIGH); digitalWrite(rightDIR, HIGH); SoftPWMServoPWMWrite(leftPWM, bothSpeed); SoftPWMServoPWMWrite(rightPWM, 0); } //Turn left by turning off the left motor //i.e disable the PWM to that wheel void turnLeft(void) { digitalWrite(leftDIR, HIGH); digitalWrite(rightDIR, HIGH); SoftPWMServoPWMWrite(leftPWM, 0); SoftPWMServoPWMWrite(rightPWM, bothSpeed); } //Move forward by enabling both wheels void forward(void) {
Rover 4x4 – Laborator Nr. 1
24
UNIVERSITATEA TITU MAIORESCU digitalWrite(leftDIR, HIGH); digitalWrite(rightDIR, HIGH); SoftPWMServoPWMWrite(leftPWM, bothSpeed); SoftPWMServoPWMWrite(rightPWM, bothSpeed); } //Reverse by enabling both wheels void reverse(void) { digitalWrite(leftDIR, LOW); digitalWrite(rightDIR, LOW); SoftPWMServoPWMWrite(leftPWM, bothSpeed); SoftPWMServoPWMWrite(rightPWM, bothSpeed); }
Un exemplu foarte răspândit este acela care utilizează cip -ul Atmel AT89C51 7 pe 8 biți cu 4kB de memorie Flash programabilă. Acesta oferă o soluție flexibilă pentru aplicațiile de embe dded control. În exemplul nostru robotul urmărește o linie neagră folos ind senzori IR.
Fig. 2-19 Reprezentarea schemei logice pentru programarea în AT89C51
// black line follower robot #include sbit IR_left=P1^0; sbit IR_right=P1^1; sbit L_motor=P3^0; sbit R_motor=P3^1; void main() { L_motor=0; R_motor=0; //IR_left=0; //IR_right=0; while(1) { if(IR_left == 1 && IR_right == 0) { L_motor=1; R_motor=0; }
7
http://embedded-electronics.blogspot.ro/p/at89c51-programming.html
Rover 4x4 – Laborator Nr. 1
25
UNIVERSITATEA TITU MAIORESCU else if(IR_right == 1 && IR_left == 0) { L_motor=0; R_motor=1; } else { L_motor=1; R_motor=1; } } }
Rover 4x4 – Laborator Nr. 1
26
UNIVERSITATEA TITU MAIORESCU
2.3 Cod sursă /***************************************************** Project : http://files.spogel.com/miniprojectsin-ece/p-0026--line_follower_robot.pdf *****************************************************/ //#define debug 1 #include #include #ifdef debug #include #endif #define FWD 0xAA #define REV 0x55 #define R 0x22 #define L 0x88 #define CW 0x99 #define CCW 0x66 #define STOP 0x00 #define B 0xFF #define RSPEED OCR1AL #define LSPEED OCR1BL #define SPEED0 255 #define SPEED1 0 #define SPEED2 0 #define SPEED3 0 #define MAX 3 #define HMAX 1 void move (unsigned char dir,unsigned char delay,unsigned char power); unsigned char i,rdev,ldev,ip,delay,dir,power,dirl,history[MAX],hcount=0,rotpow; #ifdef debug unsigned char rep=0,prev=0; #endif void main(void) { // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0xFF;
Rover 4x4 – Laborator Nr. 1
27
UNIVERSITATEA TITU MAIORESCU // Port D initialization // Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x30; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 921.600 kHz // Mode: Fast PWM top=00FFh // OC1A output: Non-Inv. // OC1B output: Non-Inv. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0xA1; TCCR1B=0x0A; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0xFF; OCR1BH=0x00; OCR1BL=0xFF; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; #ifdef debug // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 57600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00;
Rover 4x4 – Laborator Nr. 1
28
UNIVERSITATEA TITU MAIORESCU UBRRL=0x07; #endif // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; while (1){ #ifdef debug if (rep<255) rep++; if (prev!=PINA) { prev=PINA; printf("%u\r",rep); for (i=0;i<8;i++) printf("%u\t",(prev>>i)&0x01); rep=0; } #endif if (PINA!=255){ rotpow=255; ldev=rdev=0; if (PINA.3==0) rdev=1; if (PINA.2==0) rdev=2; if (PINA.1==0) rdev=3; if (PINA.0==0) rdev=4;
if (PINA.4==0) ldev=1; if (PINA.5==0) ldev=2; if (PINA.6==0) ldev=3; if (PINA.7==0) ldev=4; if (rdev>ldev) move(R,0,195+12*rdev); if (rdev
Rover 4x4 – Laborator Nr. 1
29
UNIVERSITATEA TITU MAIORESCU else { for (i=0,dirl=0;i
if (dirl>HMAX) {move(CW,0,rotpow);} else {move(CCW,0,rotpow);} } }; } void move (unsigned char dir,unsigned char delay,unsigned char power) { PORTC=dir; if (dir==L || dir==R) { hcount=(hcount+1)%MAX; history[hcount]=dir; } LSPEED=RSPEED=255; //power; //delay_ms(delay); }
Rover 4x4 – Laborator Nr. 1
30
UNIVERSITATEA TITU MAIORESCU
3. MODELARE PROGRAM LINE FOLLOWING ROBOT - SIMULINK8
Modelarea în Simulink a comportamentului cinematic și dinamic al unui robot de linie include următoarele ecuații care descriu cinematica și dinamica robotului.
∙∙ ⁄
unde: V – viteza de mers înainte
de rotație a roții din stânga .
3.1
; VR – viteza de rotație a roții din dreapta ; VL – viteza ; L – axului punții motrice [mm]; – viteza de rotați e a motoarelor
Fig. 3-1 Exemplu de folder Motor în Simulink
Modelul acceptă viteza „V“ și unghiul de rotire „ “, ca variabile pentru cele două intrări privind r oata din stânga și cea din dreapta. Subsistemul care se ocupă cu conversia celor două mărimi de intrare V și , implementează sistemul de relații matematice (3.1):
∗ ℎ / 2 __ ∗ℎ/2
.
3.2
Fig. 3-2 Schema bloc – modul conversie semnale intrare
▪
Urmează descrierea primului bloc „change parameters” care efectuează operația de multiplicare.
▪
▪
8
Al doilea bloc „ symmetrize motors”, care multiplică turațiile celor două motoare, astfel încât, robotul să se poată deplasa rectiliniu, din construcție vitezele unghiulare ale motoarelor au fluctuații în jurul unei valori de referință. Al treilea bloc „change units” efectuează conversia unităților de măsură.
https://learn.adafruit.com/line-following-zumo-robot-programmed-with-simulink?view=all
Rover 4x4 – Laborator Nr. 1
31
UNIVERSITATEA TITU MAIORESCU
Fig. 3-3 Blocuri de comandă
Întrucât parametri descriși mai sus diferă de la Robot la Robot, valorile implicite cu care sunt livrate kit-ur ile de roboți de linie este bine să fie ajustate de fiecare dată. Utilizarea contrastului dintre o linie neagră și un teren alb este benefic, întrucât lina de culoare neagră reflectă mai puțină lumină decât culoarea albă. Cei 6 senzori (în funcție de tipu l de robot) permit determinarea poziției robotului față de linia neagră. Senzorii întorc o valoare cuprinsă între
0÷5000}
().
Fig. 3-4
Poziția relativă a robotului detectată de senzorii de linie, față de o linie de culoare neagră
Se consideră valoarea de 2.500 ca fiind reprezentarea poziției LFR față de linia neagră. Orice valoare mai mică sau mai mare decât 2.500 reflectă poziți ei LFR în stânga , respectiv dreapta liniei negre. Diferențele dintre valoarea de referință și cele reale se numesc erori, sau semnale de eroare.
Fig. 3-5
Diagramele blocurilor responsabile de simularea determinării poziției robotului
Rover 4x4 – Laborator Nr. 1
32
UNIVERSITATEA TITU MAIORESCU
Semnalul de eroare odată determinat (prin însumarea la valoare a de 2.500), putem trece la repoziționarea LFR.
Fig. 3-6 Repoziționarea robotului în funcție de informațiile primite de la senzori.
Rover 4x4 – Laborator Nr. 1
33
UNIVERSITATEA TITU MAIORESCU
4. CONSTRUIREA UNUI MODEL SIMPLU
Fig. 4-1 Reprezentarea schemei func ționale cu Arduino și senzori IR QRE1113 . http://chipkit.net/arduino-mc-line-follower/
https://www.youtube.com/watch?v=EF8ds1fm7x8 https://www.youtube.com/watch?v=KgjF3KVV_X0 https://www.pololu.com/product/961
Fig. 4-2 Reprezentarea schemei funcționale cu Arduino cu trei senzori IR QRE1113 . http://keywordsuggest.org/gallery/256468.html
Construirea unui LFR cu ajutorul controlerelor ALU (Arithmetic Logic Unit) este foarte
facilă, deoarece acesta poate efectua calcule matematice ce se regăsesc în PID. În acest caz se vor aplica standardele PID cu parametri de reglaj flexibili folosind AVR ATMega periferic și cu stocarea informațiilor pe EEPROM de 521 Bytes.
Rover 4x4 – Laborator Nr. 1
34
UNIVERSITATEA TITU MAIORESCU
Fig. 4-3 Reprezentarea schemei funcționale a unui LFR cu senzori QRB1114 . http://www.ermicro.com/blog/?p=1163
Aceste soluții de BRAM (Beginnerʼs Robot Autonomous Mobile - roboți mobili autonomi pentru inițiere) cu un c ontrol proporțional, integral și derivat ( PID) este de fapt doar una dintre metodele de control care pot fi aplicate sistemului embedded. C ealaltă metodă de control include teoria bang-bang9 și logica fuzzy, de asemenea, utilizat pe scară largă în sistem ele încorporate.
Fig. 4-4 Reprezentarea schemei funcționale a unui PID pentru LFR cu
senzori QRB1114 .
http://www.ermicro.com/blog/?p=1163
Funcția BRAM_PIDControl () se ocupă de smanalul obținut de senzor prin reflexie și îl transformă în funcție obiect ca element de ieșire pentru matricea funcției BRAM_IRSensor () și calculează răspunsul de control necesar pentru a controla motoarele de curent continuu, prin furnizarea valorii PWM necesară pentru funcția BRAM_DriveMotor (). „Controlul Proporțional“ este folosit pentru a repara eroarea produsă de poziția robotului față de linia de bandă neagră în comparație cu valoarea de referință (TARGET_VAL), care reprezintă poziția robotului pe centrul liniei. F uncția de eroare este dată de : 9
Un controller bang-bang (controler on-off), cunoscut ca un controler de histerezis, este un controler de feedback care
comută brusc între cele două stări. Aceste controlere pot fi realizate în ceea ce privește orice element care oferă histerezis . Funcția pas Heaviside în forma sa discretă este un exemplu de un semnal de control bang - bang. Datorită semnalului de control discontinuu, sisteme care includ controllere bang- bang sunt sisteme de structură variabilă.
Rover 4x4 – Laborator Nr. 1
35
UNIVERSITATEA TITU MAIORESCU
ERROR SENSOR−VALUETARGET−VALUE RESPONSE k × ERROR 0÷120} VALUE 6060 0 −VALUETARGET − ERROR SENSORRESPONSE k × ERROR 0 BRAM−DriveMotorLeft−Max−PWM,Right−Max−PWM VALUETARGET VALUE 060 60 − − ERROR SENSOR RESPONSE k × ERROR 60∙k BRAM−DriveMotorLeft−Max−PWMRESPONSE,Right −Max−PWM VALUE 12060 60 −VALUETARGET − ERROR SENSORRESPONSE k × ERROR 60∙k BRAM−DriveMotorLeft−Max−PWM,Right−Max−PWMRESPONSE .
4.1
Controlul proporțional funcționează prin aplicarea unui factor de câștig K p (factor de proporționalitate). Prin urmare, redresarea spre partea dreaptă (spre exemplu) constă î ntr-un răspuns de control, care are formula:
.
4.2
Funcția BRAM_IRSensor () va returna valoarea senzorului , unde 0 înseamnă re poziționarea robotului spre dreapta în timp ce 120 înseamnă re poziționarea robotului spre stânga; când funcția BRAM_IRSensor () transmite 60, înseamnă robotul nostru se află chiar pe centrul liniei. .
4.3
În cazul în care răspunsul este 0 înseamnă că ar robotul se poate deplasa cu viteza maximă, astfel încât am putea apela funcția BRAM_DriveMotor () după cum urmează: .
4.4
Când funcția BRAM_IRSensor () va returna valoarea 0, vom avea:
.
4.5
Răspunsul negativ înseamnă că trebuie să se întoarcă sau să efectueze un arc de cerc spre stânga pentru a face corecția, acest lucru ar putea fi realizat prin reducerea valorii PWM a motorului din stânga, în timp ce păstrează valoarea PWM a motorului din dreapta la valoarea maximă: . 4.6
Când funcția BRAM_IRSensor () va returna valoarea 120, vom avea:
.
4.7
Răspunsul pozitiv înseamnă că trebuie să se întoarcă sau să efectueze un arc de cerc spre dreapta pentru a face corecția, acest lucru ar putea fi rea lizat prin reducerea valorii PWM a motorului din dreapta, în timp ce păstrează valoarea PWM a motor ului din dstânga la valoarea maximă: . 4.8
ar putea fi orice număr care va spori valoarea de răspuns, ca urmare este partea de cod C a funcției BRAM_PIDControl () care implementează următoarea explicație: Valoarea constantei K p
... ... // Negative result mean BRAM is on the right, so we need to adjust to the left // Positive result mean BRAM is on the left, so we need to adjust to the right if (motor_res < 0) BRAM_DriveMotor(MaxSpeed + motor_res,MaxSpeed); // Left less speed, Right full speed else BRAM_DriveMotor(MaxSpeed,MaxSpeed - motor_res); // Left full speed, Right less speed
Folosind doar „control proporțional“ singur va rezulta un comportamentul al direcției robotului în zigzag, prin urmare, trebuie să combinăm cu „control integrat“ sau „control derivat“, sau ambele dintre ele pentru a realiza o modificare mai precisă și mai stabilă a direcției robotului. Formula standard a unui controler PID este următoarea.
∙ ∙ ∫ ∙ ∙
Rover 4x4 – Laborator Nr. 1
4.9
36
UNIVERSITATEA TITU MAIORESCU
„Control integral“ este utilizat pentru a reduce eroarea acumulată produsă de controlul proporțional asupra timpului eroare a stării de echilibru, altfel spus, dacă robotul produce o eroare față de centrul liniei negre, atunci cu aceeași valoare se modifică răspunsul de ieșire dat de „control integrat“. „Control derivat“ este utilizat pentru a accelera răspunsul de eroare al „control proporțional“, deoarece un robot mai rapid produce sigur erori , cum ar fi mișcarea în zigzag ceea ce impune un răspuns dat de „control derivat“ pentru valoarea de ieșire. Funcția de „control derivat“ va ajuta la reducerea comportamentului de deplasare în zigzag a robotului. PID utilizează ca metodă de rezolvare a ecuației (4.9) regula trapezoidală 10:
− ∙ − ∙ + ∙ 2− −
− − −
Simbol
Descriere
Răspunsul curent al motorului electric Răspunsul anterior al motorului electric Parametrul factorului proporțional Eroare curentă Eroare anterioară 1 Parametrul factorului de integrare Parametrul factorului de derivare
Eroarea anterioară 2
Variabile implementate motor_res prev_res K P err_func prev_err_1 K I K D prev_err_2
4.10 Tip int int int int int int int int
Mai departe este prezentat modulul de programare al PID-ului:
... unsigned char MaxSpeed; // Hold Motor Maximum Speed unsigned int Kp,Ki,Kd; // PID Parameters int prev_res=0, prev_err_1=0, prev_err_2=0; // PID Control Variables int motor_res,err_func; float KP,KI,KD,cont_res; // Get the Error Function err_func=sensor_val - TARGET_VAL; // Divide all the PID parameters for decimal value KP=Kp * 0.1; KI=Ki * 0.01; KD=Kd * 0.01; // Calculate the Motor Response using PID Control Equation cont_res=(float)(prev_res + KP * (err_func - prev_err_1) + KI * (err_func + prev_err_1)/2.0 + KD * (err_func - 2.0 * prev_err_1 + prev_err_2)); // Now we have to Limit the control response to the Maximum of our motor PWM Motor Value motor_res=(int)cont_res; if (motor_res > MaxSpeed) motor_res = MaxSpeed; if (motor_res < -MaxSpeed) motor_res = -MaxSpeed; // Save the Motor Response and Error Function Result prev_res=motor_res; prev_err_2=prev_err_1; prev_err_1=err_func;
După ce programul este rulat se poate regla parametrul de control PID, prin modulul de setare BRAM II și conectarea ATMega la portul RS232 pentru a salva programul pe computer
10
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.474.8129&rep=rep1&type=pdf , pg. 56
Rover 4x4 – Laborator Nr. 1
37
UNIVERSITATEA TITU MAIORESCU
Fig. 4-5 Execuția parametrului de control PID . http://www.ermicro.com/blog/?p=1163
Fig. 4-6 Schema electronică pentru conexiunile PID-ului.
Fig. 4-7 Schema electronică pentru conexiunile PID -ului. http://www.ridgesoft.com/intellibrainbot/images/IntelliBrainBotDeluxe600.jpg
Rover 4x4 – Laborator Nr. 1
38
UNIVERSITATEA TITU MAIORESCU
5. EXPERIMENT - exemplificare
https://www.instructables.com/id/Line-following-robot-with-PID-algorithm/ #include void calculateIntegral(); void calculateProportional(); void readValues(); #define NUM_SENSORS 8 #define TIMEOUT 2500 #define EMITTER_PIN 0 #define avgSpeed 255 int time = 0; int pwmA = 3; int pwmB = 11; int dirA = 12; int dirB = 13; int kp = 1; int kd = 1; int ki = 1; int error = 0; int lastError = 0; int proportional = 0; int derivative = 0; int integral = 0; QTRSensorsRC qtrrc((unsigned char[]) {2, 4, 5, 6, 7, 8, 9, 10}, NUM_SENSORS, TIMEOUT, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS]; void setup(){ Serial.begin(9600); pinMode(pwmA, OUTPUT); pinMode(pwmB, OUTPUT); pinMode(dirA, OUTPUT); pinMode(dirB, OUTPUT); pinMode(1, OUTPUT); for (int i=0; i<5; i++){ digitalWrite(1, HIGH); delay(50); digitalWrite(1, LOW); delay(950); } analogWrite(pwmA, avgSpeed); analogWrite(pwmB, avgSpeed); } void loop(){
Rover 4x4 – Laborator Nr. 1
39
UNIVERSITATEA TITU MAIORESCU readValues(); calculateProportional(); derivative = error-lastError; integral += proportional; if(integral > 255){ integral=255; }; if(integral < -255){ integral=-255; }; int turn = proportional*kp + derivative*kd + integral*ki; if(turn>=255) turn=255; if(turn<=-255) turn=-255; int speedA=0; int speedB=0; if(turn>=0){ speedA=avgSpeed; speedB=avgSpeed-turn; } else{ speedA=avgSpeed+turn; speedB=avgSpeed; } Serial.print("P="); Serial.print(proportional); Serial.print('\t'); Serial.print("I="); Serial.print(integral); Serial.print('\t'); Serial.print("D="); Serial.print(derivative); Serial.print('\t'); Serial.print("Turn="); Serial.print(turn); Serial.print('\t');
Serial.print("speedA="); Serial.print(speedA); Serial.print('\t'); Serial.print("speedB="); Serial.print(speedB); Serial.print('\t'); analogWrite(pwmA, speedA); analogWrite(pwmB, speedB); lastError=error; Serial.println(); } void readValues(){
Rover 4x4 – Laborator Nr. 1
40
UNIVERSITATEA TITU MAIORESCU qtrrc.read(sensorValues); for (int i=0; i400) sensorValues[i]=1; else sensorValues[i]=0; } } void calculateProportional(){ int sum = 0; int posLeft = 10; int posRight = 10; for (int i=0; i=NUM_SENSORS/2; i--){ sum=sum+sensorValues[i]; if(sensorValues[i]==1){ posLeft=i-4; } } if(sum>=3){ sum=2; } if(sum==0){ if(lastError<0){ error=-8; } else{ error=8; } } else if((posLeft!=10)&&(posRight!=10)){ error=0; } else if(posLeft!=10){ error=posLeft*2+sum; } else if(posRight!=10){ error=posRight*2-sum; } proportional = error; }
Rover 4x4 – Laborator Nr. 1
41
UNIVERSITATEA TITU MAIORESCU
6. REZULTATE EXPERIMENTALE 6.1 Line Following cu senzor IR #include RedBotSensor left = RedBotSensor(A3); // initialize a left sensor object on A3 RedBotSensor center = RedBotSensor(A6); // initialize a center sensor object on A6 RedBotSensor right = RedBotSensor(A7); // initialize a right sensor object on A7 // constants that are used in the code. LINETHRESHOLD is the level to detect // if the sensor is on the line or not. If the sensor value is greater than this // the sensor is above a DARK line. // // SPEED sets the nominal speed #define LINETHRESHOLD 800 #define SPEED 60 // sets the nominal speed. Set to any number from 0 - 255. RedBotMotors motors; in t leftSpeed; // variable used to store the leftMotor speed in t rightSpeed; // variable used to store the rightMotor speed void setup() { Serial.begin(9600); Serial.println("Welcome to experiment 6.2 - Line Following"); Serial.println("------------------------------------------"); delay(2000); Serial.println("IR Sensor Readings: "); delay(500); } void loop() { Serial.print (left.read()); Serial.print ("\t"); // tab character Serial.print (center.read()); Serial.print ("\t"); // tab character Serial.print (right.read()); Serial.println();
// if on the line drive left and right at the same speed (left is CCW / right is CW) if (center.read() > LINETHRESHOLD) { leftSpeed = -SPEED; rightSpeed = SPEED; } // if the line is under the right sensor, adjust relative speeds to turn to the right else if (right.read() > LINETHRESHOLD) { leftSpeed = -(SPEED + 50); rightSpeed = SPEED - 50; } // if the line is under the left sensor, adjust relative speeds to turn to the left else if (left.read() > LINETHRESHOLD) { leftSpeed = -(SPEED - 50); rightSpeed = SPEED + 50; }
Rover 4x4 – Laborator Nr. 1
42
UNIVERSITATEA TITU MAIORESCU // if all sensors are on black or up in the air, stop the motors. // otherwise, run motors given the control speeds above. if ((left.read() > LINETHRESHOLD) && (center.read() > LINETHRESHOLD) && (right.read() > LINETHRESHOLD) ) { motors.stop(); } else { motors.leftMotor(leftSpeed); motors.rightMotor(rightSpeed); } delay(0); // add a delay to decrease sensitivity. }
Rover 4x4 – Laborator Nr. 1
43
UNIVERSITATEA TITU MAIORESCU
6.2 Forma grafică a rezultatelor
Pentru studiul din materialul de față s -au utilizat cele mai simple modele funcționale de LFR. Programul cel mai simplu presupune ca robotul să se întoarcă mereu la centrul liniei negre de pe podea. În funcție de constanta de proporțio nalitate, suma, cu care robotul transformă pentru o anumită valoare a semnalului de eroare, va fi varia bilă. Această constantă de proporționalitate „P“ este un parametru al modelului, care trebuie să fie reglat în funcție de cerințele beneficiarului. Limitările acestui tip de PID sunt date de constrângerile de a sta pe ce ntrul liniei negre. Acestea introduc în sistem oscilații datorate inerției. Aceasta este explicația faptului că LFR oscilează în mod continuu în jurul axului liniei negre. Componenta derivativă a PID -ului ajută la amortizarea oscilațiilor . În acest caz, vo m calcula derivata instantanee a semnalului de eroare care ar servi pentru a amortiza oscilațiile. Astfel, constanta este multiplicată cu rezultatul derivării și produsul este adăugat la semnalul de control. Această constantă este cunoscută sub numele de câștig derivat și corespunde componentei „D“ a controlerului PID.
Fig. 6-1 Graficul răspunsului proporțional al PID-ului.
Fig. 6-2 Graficul răspunsului proporțional/derivativ al PID-ului.
Rover 4x4 – Laborator Nr. 1
44
UNIVERSITATEA TITU MAIORESCU
În exemplul descris în lucrare componenta de Integrare „I“ nu a fost utilizată. Astfel în mod specific, acest controler este cunoscut ca un controler PD. În Fig. 6-3, blocul etichetat „PID controller“ reprezintă controlerul descris mai sus. Se pot observa valorile pentru „P“, „I“, „D“ prin tr-un dublu clic pe exemplu, modelul block. Avem valorile implicite pentru „P“ și „D“ în timp ce, pentru acest exemplu, „I=0“. • • • • •
Controlerul PD se poate regla și fără a utiliza un algoritm matematic, după cum urmează: se reglează câștigul proporțională a controlerului până când se obține un răspuns adecvat; de regulă, se va seta valoarea câșt igului derivatului cu 1/10 din câștigul proporțional; apoi se va ajusta câștigul derivat până în momentul în care se observă o schimbare adecvată a comportamentului robotului; creșterea datorată componentei „P“ proporțională va crește cantitatea cu care robotul creșterea câștigul ui derivat va amortiza magnitudinea oscila țiilor robotului.
se transformă
Fig. 6-3 Funcția bloc din toolbox-ul Simulink pentru un controler PID.
Rover 4x4 – Laborator Nr. 1
45
UNIVERSITATEA TITU MAIORESCU
6.3 Interpretarea rezultatelor
Rover 4x4 – Laborator Nr. 1
46
UNIVERSITATEA TITU MAIORESCU
7. BIBLIOGRAFIE 1. The Online Computer Library Center. Melvil, DEWEY. http://en.wikipedia.org/wiki/Online_Computer_Library_Center. [Interactiv] Library of Congress, 1 07 2010. [Citat: 04 02 2011.] http://en.wikipedia.org/wiki/Dewey_Decimal_Classification. ISBN: 978-1-55653-315-0. 2. M., Rădoi și E., Deciu. MECANICA. [ed.] Nicolae A. Ediția a II - a, revizuită. București : Editura Didactică
și Pedagogică, 1981. p. 677. Vol. I. 9113 / 22.11.1981.
3. Mesures, Bureau International des Poids et. The International System of Units (SI). [ed.] Organisation Intergouvernementale de la Convention du Metre. The International System of Units (SI). 8th edition. Paris : STEDI MEDIA, 2006, p. 88. Depot legal, no 8844. 4. http://www.melcor.com/. [Interactiv] 5. J., Craig. Introduction to Robotics. s.l. : Addison-Wesley, Reading, MA, 2nd, 1989. 6. Direct-Flux Vector Control of IPM Motor Drives in the Maximum Torque Per Voltage Speed Range. Pellegrino, G. și Dept. of Electr. Eng., Politec. di Torino, Torino, Italy. 10, Torino : Industrial Electronics, IEEE Transactions on, Octombrie 2012, Industrial Electronics, IEEE, Vol. Volume:59 , pg. 3780 - 3788. ISSN: 0278-0046; Digital Object Identifier : 10.1109/TIE.2011.2178212. 7. A KINEMATIC AND DYNAMIC MODEL-BASED MOTION CONTROLLER FOR MOBILE ROBOTS. Montano, J. R. Asensio L. [ed.] Juan A. de la Puente Luis Basañez. Part# 1, Barcelona, Spain : World Congress, 21-26 07 2002, International Federation of Automatic Control, Vol. Volume # 15, pg. 1294-1294. Copyright © 2007. ISSN: 1474 -6670; ISBN: 978-3-902661-74-6.
Rover 4x4 – Laborator Nr. 1
47
UNIVERSITATEA TITU MAIORESCU
8. FIGURI FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG. FIG.
1-1 REPREZENTAREA SISTEMELOR ROBOTIZATE AUTONOM/SEMIAUTONOME ................................................................ ................ 3 1-2 REPREZENTAREA EFECTELOR TERENULUI ASUPRA PROPULSORULUI ......................................................................................... 4 1-3 SCHEMATIZAREA CONSTRÂNGERILOR CINEMATICE ȘI DINAMICE ............................................................................................ 4 1-4 REPREZENTAREA SCHEMEI DE CONTROL A CINEMATICII ȘI DINAMICII ....................................................................... ................ 5 1-5 REPREZENTAREA CONTROLERULUI TIP BUCLĂ ÎNCHISĂ . ............................................................................. ........................... 5 1-6 DIRECȚIA FORȚEI DE ACȚIONARE ÎN FUNCȚIE DE PUNCTUL DE APLICAȚ IE. ........................................... ...................................... 6 1-7 ALGORITM PENTRU NAVIGAȚIE/ORIENTARE ȘI CONTROL AL TRAIECTORIEI ................................................................................ 6 1-8 DISTRIBUȚIA PRESIUNII ÎN ZONA DE CONTACT ȘI HISTEREZISUL CAUCIUCULUI ............................................................................ 7 1-9 ECHILIBRUL ROȚII MOTRICE ............................................................ ............................................................... ................ 8 1-10 MPC – MODEL PREDICTIV DE CONTROL ............................................................... ......................................................... 9 1-11 CARSIM – REZULTATE ANALITICE ............................................................ ............................................................... ... 10 2-1 REPREZENTAREA SPECTRULUI DE LUMINĂ ȘI LUNGIMEA DE UNDĂ ............................................................... ......................... 11 2-2 SPECTRUL VIZIBIL ȘI I NVIZIBIL AL LUMINII .................................................................................... .................................... 11 2-3 LUNGIMEA DE UNDĂ A CORPULUI NEGRU ........................................................................ ............................................... 12 2-4 GRAFICELE SPECTRELOR ÎN FUNCȚIE DE FRECVENȚĂ ȘI LUNGIME DE UNDĂ . ........................................ .................................... 12 2-5 LUNGIMEA DE UNDĂ A RADIAȚIEI ELECTROMAGNETICE ȘI DOMENIUL DE APLICAȚIE . ................................................................. 12 2-6 CALIBRAREA FOTOTRANZISTORILOR ÎN FUNCȚIE DE NUMĂRUL DE CULORI . ........................................................................ ..... 13 2-7 REPREZENTAREA MODULUI DE FUNCȚIONARE AL S ENZORILOR SHARP IR RANGE. .................................................................... 14 2-8 DIAGRAMA BLOC DE BAZĂ . .............................................................. .............................................................. .............. 14 2-9 SENZOR IR DE LINIE ANALOG QRE1113. .............................................................................................. ......................... 16 2-10 REPREZENTAREA FUNCȚIONĂRII IR CU ARDUINO................................................................ ............................................ 17 2-11 REPREZENTAREA SENZORILOR IR QTR-: 1RC, L-1RC, 3RC, 8RC. .................................... ............................................... 18 2-12 REPREZENTAREA DIAGRAMEI SCHEMATIZATE DE LUCRU A SENZORILOR ...................................................... ......................... 18 2-13 REPREZENTAREA SENZORULUI QRB1114 ..................................................................... ............................................... 19 2-14 REPREZENTAREA SENZORULUI QRB1114 ..................................................................... ............................................... 19 2-15 REPREZENTAREA TRANZISTORULUI BIPOLAR (PNP SAU NPN) .................................................................... ......................... 21 2-16 REPREZENTAREA SCHEMEI FUNCȚIONALE A SENZO RULUI QRD1114 .................................................................................. 21 2-17 REPREZENTAREA SENZORULUI QRD1114 ...................................................................................................... .............. 22 2-18 REPREZENTAREA SCHEMEI LOGICE DE FUNCȚIONA RE A UNUI LINE FOLLOWER ROBOT ............................................................ 23 2-19 REPREZENTAREA SCHEMEI LOGICE PENTRU PROGRAMAREA ÎN AT89C51 ....................................... .................................... 25 3-1 EXEMPLU DE FOLDER MOTOR ÎN SIMULINK .................................................. ............................................................... ... 31 3-2 SCHEMA BLOC – MODUL CONVERSIE SEMNALE INTRARE ........................................................................... ......................... 31 3-3 BLOCURI DE COMANDĂ ................................................................. ............................................................... .............. 32 3-4 POZIȚIA RELATIVĂ A ROBOTULUI DETECTATĂ DE SENZORII DE LINIE, FAȚĂ DE O LINIE DE CULOARE NEAGRĂ .................................. 32 3-5 DIAGRAMELE BLOCURILOR RESPONSABILE DE SIMULAREA DETERMINĂRII POZIȚIEI ROBOTULUI ............................................. ..... 32 3-6 REPOZIȚIONAREA ROBOTULUI ÎN FUNCȚIE DE INFORMAȚIILE PRIM ITE DE LA SENZORI. .............................................................. 33 4-1 REPREZENTAREA SCHEMEI FUNCȚIONALE CU ARDUINO ȘI SENZORI IR QRE1113. ................................ .................................. 34 4-2 REPREZENTAREA SCHEMEI FUNCȚIONALE CU ARDUINO CU TREI SENZORI IR QRE1113. .......................................................... 34 4-3 REPREZENTAREA SCHEMEI FUNCȚIONALE A UNUI LFR CU SENZORI QRB1114. ................................................................. ..... 35 4-4 REPREZENTAREA SCHEMEI FUNCȚIONALE A UNUI PID PENTRU LFR CU SENZORI QRB1114. .................................................... 35 4-5 EXECUȚIA PARAMETRULUI DE CONTROL PID. .............................................................................. .................................... 38 4-6 SCHEMA ELECTRONICĂ PENTRU CONEXIUNILE PID-ULUI. ..................................................................................... .............. 38 4-7 SCHEMA ELECTRONICĂ PENTRU CONEXIUNILE PID-ULUI. ..................................................................................... .............. 38 6-1 GRAFICUL RĂSPUNSULUI PROPORȚIONAL AL PID-ULUI. ....................................................................................... .............. 44 6-2 GRAFICUL RĂSPUNSULUI PROPORȚIONAL /DERIVATIV AL PID-ULUI. ...................................................................................... 44 6-3 FUNCȚIA BLOC DIN TOOL BOX-UL SIMULINK PENTRU UN CONTROLER PID. ........................................................................ ..... 45
Rover 4x4 – Laborator Nr. 1
48