Sunteți pe pagina 1din 49

Bucureti, Calea Vcreti, nr.

189, corp M sector 4, cod 004051


Tel: +4 021. 330.10.83; Fax: +4 021. . . ;
e-mail: lucian.grigore@prof.utm.ro ;
web: www.lumina.org

UNIVERSITATEA TITU MAIORESCU


FACULTATEA: INFORMATIC
DEPARTAMENT: INFORMATIC
Programa de studii: INFORMATIC
DISCIPLINA: INFORMATIC APLICAT N ROBOTIC

Nr. 1

Beerings Robot Autonomous Mobile


Conf.dr.ing.

Lucian tefni GRIGORE

Rover 4x4 Laborator Nr. 1 1


UNIVERSITATEA TITU MAIORESCU

Cuprins

Cuprins ............................................................................................................................................................... 2
1. INTRODUCERE ....................................................................................................................................... 3
2. Robot care urmeaz un traseu predefinit - Line Following Robot (LFR)................................................ 11
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 Senzor infrarou QRB1114 ...................................................................................................... 18
2.1.4 Senzor infrarou QRD1114 ...................................................................................................... 20
2.2 Logica algoritmului .......................................................................................................................... 23
2.3 Cod surs .......................................................................................................................................... 27
3. MODELARE PROGRAM LINE FOLLOWING ROBOT - SIMULINK .............................................. 31
4. CONSTRUIREA UNUI MODEL SIMPLU ........................................................................................... 34
5. EXPERIMENT - exemplificare............................................................................................................... 39
6. REZULTATE EXPERIMENTALE ........................................................................................................ 42
6.1 Line Following cu senzor IR ............................................................................................................ 42
6.2 Forma grafic a rezultatelor ............................................................................................................. 44
6.3 Interpretarea rezultatelor .................................................................................................................. 46
7. BIBLIOGRAFIE ..................................................................................................................................... 47
8. FIGURI .................................................................................................................................................... 48
9. ABREVIERI ............................................................................................................................................ 49

ndrumarul de laborator Informatic Aplicat pentru Robotic este elaborat n conformitate cu


programa de studiu la specializarea: Informatic, programa de studii: Informatic, pentru Universitatea
TITU MAIORESCU Bucureti.

Rover 4x4 Laborator Nr. 1 2


UNIVERSITATEA TITU MAIORESCU

1. INTRODUCERE

Roboii mobili sunt roboii capabili s-i modifice poziia elementului de baz n raport cu un
sistem de referin considerat fix, legat de suprafaa de susinere.
Acest tip de roboi permit intervenia n diferite puncte ale mediului n care lucreaz, n acest
fel obinndu-se o considerabil mrire a spaiului de lucru ceea ce conduce la transformarea acestuia
ntr-un adevrat cmp de lucru.
n principiu, roboii mobili pot asigura evitarea sau chiar depirea obstacolelor de pe
suprafaa de susinere, deplasarea pe scri i alte suprafee artificiale precum i navigaia n preajma
sau peste denivelri majore ale acesteia, n mod independent.
Locomoia este deplasarea n care corpul, considerat ca un ntreg, se mic pe suprafee de
sprijin naturale sau artificiale. Deplasarea pe suprafee trebuie s ia n considerare reaciunile acestora.
Comportarea suprafeei de sprijin depinde n principal de forele aplicate asupra ei n cursul
locomoiei. Reaciunea exercitat de substratul de sprijin depinde de asemenea de forma precum i
de natura suprafeei. Suprafeele naturale sunt continue, prezint obstacole, denivelri, pante, guri,
etc. i pot fi ferme sau alunecoase, n timp ce suprafeele artificiale, dei de cele mai multe ori ferme,
pot prezenta discontinuiti.
Analiza global a problemei locomoiei pe suprafee conduce la identificarea a patru tipuri de
fore, printre acestea incluzndu-se i fora de propulsie:
propulsia fora de mpingere exercitat asupra substratului n direcia micrii;
adeziune fora care s permit ancorarea pentru faza de propulsie;
coeziunea fora care s permit rezistena mobilului fa de tendinele de detaare a
acestuia de substrat;
susinere fora care s compenseze tendina unor fore exterioare de prbuire a mobilului
pe suprafaa de sprijin.
Analiza condiiilor de mediu n care are loc locomoia mobilului are o importan deosebit,
deoarece acestea impun restricii de gabarit, structurale, cinematice i dinamice asupra acestora.
Pentru a realiza configurarea geometric a unui propulsor trebuie luat n calcul influena pe care o
au caracteristicile geometrice ale acestuia asupra:
mobilitii robotului pe terenuri cu configuraii i consistene diverse;
stabilitii robotului pe timpul deplasrii i pe timpul executrii misiunii specifice.

Fig. 1-1 Reprezentarea sistemelor robotizate autonom/semiautonome

Pentru toate aceste situaii, interaciunea dintre robot i mediu se restrnge la interaciunea
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 studierii atente a

Rover 4x4 Laborator Nr. 1 3


UNIVERSITATEA TITU MAIORESCU

influenei pe care larga diversitate de parametri ai terenului o exercit asupra caracteristicilor de


mobilitate i stabilitate. Platformele trebuie s se caracterizeze printr-o concepie modular, un grad
sporit de versatilitate conferit de capacitatea de a conlucra cu diferite tipuri de suprastructuri,
flexibilitate ridicat datorit existenei posibilitilor de adaptare constructiv i funcional la
cerinele 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 nct, s permit ajustarea/reglarea elementelor de geometrie
(translaie, rotaie) n mod separat dar i compus. Cinematica robotului i constrngerile de
dinamicitate (viteze, acceleraii) trebuie s fie compatibile cu geometria robotului, n caz contrar nu
vom putea utiliza modelul analitic.

Fig. 1-3 Schematizarea constrngerilor cinematice i dinamice

De aceea se recomand o analiz de stabilitate i de senzitivitate, n scopul de a obine liniile


directoare pentru un controler de tuning. Controlerul primete un set de valori a parametrilor de
funcionare, n sensul, timpilor de integrare i de derivare, astfel nct rspunsul dinamic n bucl
nchis s permit obinerea unei comportri dorite. Ajustarea buclei reprezint principalul punct de
contact ntre operator i sistemul de control. Controlerul efectueaz de fapt un compromis ntre
obiectivele prevzute n: caietul de sarcini i cerinele de performan. Exist criterii foarte rar
absolute pentru selectarea ajustrilor. De aceea este necesar pregtirea unei bucle de reacie, care s
ia n considerare o serie de preocupri i obiective.
De asemenea modelul dinamic ia n considerare constrngerile cinematice i dinamice ale
robotului, ceea ce permite determinarea analitic a vitezelor i acceleraiilor i care valori se aproprie
de cele msurate.

Rover 4x4 Laborator Nr. 1 4


UNIVERSITATEA TITU MAIORESCU

Fig. 1-4 Reprezentarea schemei de control a cinematicii i dinamicii.

Modul de funcionare este de tipul bucl nchis. Este un model simplificat, dar reprezint
bazele sistemelor de astzi. Abordarea simplificat are avantajul c parametrii fizici pot fi reglai uor
pentru a obine comportamentul dinamic dorit. Controlerul funcioneaz ca un generator de micare.
Nu realizeaz reglri suplimentare, iar navigaia se efectueaz pe baza unor modele prestabilite, fr
ca acestea s fie modificabile.
Controlerul n cauz genereaz traiectorii sau funcioneaz pe principiul navigrii reactive.
Ecuaiile (1.1) care permit reglarea caracteristicilor de dinamicitate ale robotului sunt:
2bd2
(Izz + m s2 ) 2 m s v + = F (h s) sin
r
{ 2b
(1.1)
m v 2 + m s 2 + m g + r v = F cos
unde: F - modul de ; m - masa robotului; Izz - momentul de inerie n jurul axei verticale; b -
coeficientul de frecare vscoas; - coeficientul de frecare Coulomb.
Dup cteva simplificri legate de termenii neglijabili (s - se consider a fi nul sau destul de
mic), ecuaiile anterioare se vor transforma n ecuaii difereniale liniare, care pot fi exprimate ca o
ecuaie spaial de tipul: = + .
2b 1
mr 0 0
m F cos
x = [ 2bd 2 ] x + [ h][ ] (1.2)
0 0 I F sin
rIzz zz
Acest model de ecuaie diferenial de micare a unui robot mobil se datoreaz aciunii forei
. Modelul prezentat, aa cum am mai amintit are avantajul c ine cont i de constrngerile
cinematice dar i de cele dinamice. Se poate constata c modelul de referin poate determina analitic
poziia robotului: = ( , , , ) , valoare care este comparat cu poziia msurat: =
(, , , ) . ntotdeauna exist erori ntre valorile calculate i cele msurate. n cazul de fa eroarea
este notat cu ( ). Avnd introdus elementul de eroare pentru o aproximare ct mai bun, schema
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 ecuaiei: = ( , ) .
Aceast ecuaie este valabil doar dac:
viteza de reacie a controlerului este mult mai mare dect a ntregului sistem de control;
acceleraiile care pot fi impuse prin controller se regsesc n intervalul de accelerare al
robotului.
Cu alte cuvinte, funciile 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 locaie () i locaia calculat ( ), este = 0, iar apoi sistemul de control final este cel
reprezentat n blocul cu dubl aliniere. Ecuaiile de micare utilizate de controler sunt obinute din
modelul:
= +
= (( , )) = ( cos , sin )
= (( , )) (1.3)
y yA
= = arctan xgoal x
{ goal A

Fig. 1-6 Direcia forei de acionare n funcie de punctul de aplicaie.

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 controlul orientrii acestuia;
implementarea unui NLMPC (Model Predictiv de Control Neliniar);
implementarea unui LTV-MPC (Model Predictiv de Control Liniar);
validarea modelului prin obinerea de rezultate experimentale.

Fig. 1-7 Algoritm pentru navigaie/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, avnd n vedere minimizarea erorilor de poziie
i reorientarea n funcie de traiectoria de referin planificat. Acest lucru implic introducerea de
date aleatorii precum: schimbarea unghiului de rotire al robotului ct i efectele produse de frnare.
Ecuaia simplificat care descrie dinamica roii este:
= [ , , , , , , , , , , ], (1.4)
modelul dinamic asociat fiind:
( + 1) = ((), ())
{ . (1.5)
= (())
Pentru ca modelarea s fie complet trebuie luat n calcul i deformarea balonului roii.
Rezistena la rulare Rr este o for cu aciune permanent la rularea roilor pe cale, de sens opus
sensului deplasrii robotului. Cauzele fizice ale acestei rezistene la naintare sunt: deformarea cu
histerezis a pneului, frecri superficiale ntre pneu i cale, frecrile din lagrele roii, deformarea cii,
percuia dintre elementele pneului i micro-neregulariti ale cii, efectul de ventuz produs de profile
cu contur nchis pe banda de rulare etc. Fa de cauzele determinate, rezistena la rulare depinde de
un numr mare de factori de influen, printre care semnificativi sunt: construcia pneului, viteza de
deplasare, presiunea aerului din pneu, forele i momentele ce acioneaz asupra roii. n calculele de
proiectare dinamic a roboilor, rezistena la rulare este luat n considerare prin f - coeficientul
rezistenei la rulare, care reprezint o for specific la rulare definit prin relaia:

= [] (1.6)

unde: Rr este rezistena la rulare; - componenta greutii normal pe cale.


Deoarece pneul nu este perfect elastic, energia consumat pentru deformarea elementelor sale
componente este mai mare dect energia cedat n timpul revenirii lor la forma iniial, diferena
transformndu-se n cldur fenomenul de histerezis (Eroare! Fr surs de referin.).
Avnd n vedere c rularea pneului pe drum const dintr-o succesiune continu de comprimri
i destinderi ale elementelor de pneu se poate uor nelege c diferena dintre energia consumat la
comprimare i cea recuperat la destindere se manifest prin nclzirea pneului i prin apariia unei
fore rezistente care se opune rulrii acestuia.
Se observ (Fig. 1-8) c pentru aceeai deformaie este necesar, la comprimare o for
g 2 g1 pe care o dezvolt elementul elastic la destindere. Rezult c presiunile de contact dintre pneu
i cale vor avea o distribuie asimetric, rezultanta lor Zr se va afla pe un suport, deplasat cu distana
a n sensul de mers, fa de axa vertical, care trece prin centrul roii. Reaciunea Zr va genera un
moment de rezisten la rulare, definit prin relaia (3.19):

= [] (1.7)

Fig. 1-8 Distribuia presiunii n zona de contact i histerezisul cauciucului

Rover 4x4 Laborator Nr. 1 7


UNIVERSITATEA TITU MAIORESCU

Pentru a scoate n eviden existena forei de rezisten la rulare, trebuie studiat echilibrul
roii motoare (Fig. 1-9), aplicnd metoda izolrii corpurilor. Astfel, n articulaia de legtur cu puntea
asupra roii acioneaz dou fore perpendiculare: -G greutatea repartizat pe roat; F fora cu care
puntea mpinge roata. Ca urmare a aciunii acestor fore n suprafaa de contact a roii cu calea de
rulare, apar reaciunile drumului asupra roii: -Zr reaciunea normal; -X reaciunea tangenial.
Contactul dintre roat i cale se face pe lungimea l, iar fora Zr este rezultanta forelor de presiune
dintre anvelop i cale.

Fig. 1-9 Echilibrul roii motrice

Ecuaiile de echilibru de fore i momente ale roii motoare, la deplasarea robotului 6x6 cu
vitez uniform, sunt:

FX 0

FY 0 (1.8)
Mo 0

Relaia (3.20) este echivalent cu:

X Ft 0

Z r Gr 0 (1.9)
X r Z a M 0
d r R

Din (1.9) se poate determina expresia forei Rr, numit rezisten la rulare, care apare la roat
i care se opune naintrii sale:

a
F X Zr f Z r Rr [N] (1.10)
rD
n mod convenional se definete fora la roat FR fora rezultant a eforturilor de frecare dintre
pneu i calea de rulare, care ar produce asupra roii acelai efect pe care-l produce momentul la roat
MR, adic:

MR
FR [N] (1.11)
rd
Din analiza relaiilor (1.10) i (1.11) se ajunge la expresia:

Rover 4x4 Laborator Nr. 1 8


UNIVERSITATEA TITU MAIORESCU

Ft FR f Gr FR Rr [N] (1.12)
Putem concluziona c fora de traciune Ft , cu care roata motoare mpinge puntea robotului,
este dat de diferena dintre fora la roat FR , generat de momentul la roat MR i rezistena la rulare
Rr proprie roii 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 nct se
produc ncetiniri ale calculelor privind dinamica robotului.
Prin urmare teoria controlului optimal a condus la urmtorul algoritm de NLMPC:
funcia obiectiv sau cost;
funcia de optimizare;
dinamica vehiculului neliniar;
constrngeri iniiale;
varianta constrngerilor iniiale.

Fig. 1-10 MPC model predictiv de control

Dup cum se poate constata controlerul NLMPC trebuie s poat rezolva simultan
urmtoarele:
probleme de optimizare non-liniare;
s rezolve neliniaritile din cadrul operaiilor de optimizare;
s posede o putere mare de calcul;
s poat compara rezultatele analitice cu cele obinute pe cale experimental pentru validarea;
s funcioneze stabil.
2 1 2
((), ) = =1 +, +, + =1 +,

min ( , )

+1, = , (, , , )
|, = (, )
(1.13)
, = ()
| =
, +1, + ,
= , , +
, , ,
{, , , : = , , ( + 1)
n principiu modelul prezentat trebuie s rezolve aproximativ 83 de ecuaii difereniale.

Rover 4x4 Laborator Nr. 1 9


UNIVERSITATEA TITU MAIORESCU

Teoria conform creia stabilitatea unui sistem neliniar presupune o abordare robust, n care
numrul de iteraii ales s fie optim, astfel nct secvena de eantionare s acopere ct 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 soluii 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 soluii utilizeaz o linie neagr trasat pe o suprafa alb.

Fig. 2-1 Reprezentarea spectrului de lumin i lungimea de und

Cnd folosim noiunea de culoare neagr trebuie s amintim de corpul negru, care msoar
cldura i dinamica acesteia (termodinamica). Energia degajat de corpurile negre este produs de
radiaia electromagnetic. Conform legii lui Max Planck distribuia spectral a energiei radiate de un
corp negru este dat de:

= ( ) , 2.1


2
unde: distribuia spectral a energiei; h constanta lui Plank = 6.626068 1034 [ ]; c


viteza de propagare a undelor electromagnetice n vid = 300000 [ ]; lungimea de und

[]; k constanta lui Boltzmann, T temperatura [].

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 funcie de frecven i lungime de und.


https://260h.pbworks.com/w/page/69071363/Beginnings%20of%20Quantum%20Mechanics

Fig. 2-5 Lungimea de und a radiaiei electromagnetice i domeniul de aplicaie.


http://www.societyofrobots.com/sensors_color.shtml

Senzorii de lumin EO i IR nu vd culori, ei detecteaz diverse lungimi de und, care sunt


asociate unor culori (Fig. 2-5). Fotorezistoarele iau n consideraie diversele nuane, respectiv
diversele intensiti ale luminii, astfel nct, s putem distinge i/sau decela aa zisele culori.
Fotorezistoarele au niveluri diferite de sensibilitate la diferite culori, optimul din acest punct de vedere
realizndu-se n zona lungimii de und de aproximativ 520 [nm]. Modificarea poziiei, a unghiului
de reflexie, dar i al gradului de refracie vor contribui la modificarea citirii.

Rover 4x4 Laborator Nr. 1 12


UNIVERSITATEA TITU MAIORESCU

De aceea lumina ambiental la o scanare simpl, n funcie de nivelul de vibraii al suportului dar i
al mediului (aer spre exemplu), are citiri diferite. Msurarea este un capitol aparte.
Similitudinea i segmentarea imaginilor se realizeaz prin nivelul de calibrare al senzorilor
respectivi. Robotul va efectua sarcinile n funcie de capacitatea acestor senzori, dar i n funcie de
timpul de reacie (viteza de analiz a controlerelor). Urmrirea 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 adevr, c robotul se afl pe linie este de 108.
(95+112)
Segmentarea imaginii (thresholding) se realizeaz prin media aritmetic a celor dou valori: ,
2
care va decela informaia legat de linia alb pe o podea gri. n cazul c terenul de lucru conine mai
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 funcie de numrul de culori.

Programarea senzorul de culoare este foarte simpl: se pornete un LED, se ateapt


aproximativ 50 [ms], apoi se oprete LED-ul/LED-urile. n cazul n care robotul are trei LED-uri de
culori diferite, se poate aplica urmtorul 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 funcioneaz 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 distana fa de obiectul int. Triangulare necesit
detectarea unghiului de reflexie.

Fig. 2-7 Reprezentarea modului de funcionare al senzorilor Sharp IR Range.

Senzorii sunt limitai 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 secvena de alimentare ca puls de tensiune se poate gestiona de ctre
controler, n funcie de capacitatea de rcire a led-ului, atunci putem crete capacitatea de aciune a
robotului.
LFR este util pentru c permite folosirea unui mecanism de feedback simplu de tip bucl
nchis. Astfel, programul introdus n controler rspunde la stimulii exteriori prin intermediul unor
senzori. Este un preconcept de roboi ce pot fi utilizai n hale industriale, magazine, depozite etc.
Este un robot din clasa roboilor paraleli ce poate fi autonom dar care poate controlat prin
intermediul unui joystick sau direct din calculator n regim wireless. Clasificarea n cadrul roboilor
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 culorile alb/negru i apoi s condiioneze
semnalul prelevat de senzor i de a-l transmite controlerului MPU/CPU. De aceea
trebuie rspuns la urmtoarele ntrebri:
ce tip de senzori de detectare a liniei utilizeaz: lumin alb, LED, IR
infrarou;

Rover 4x4 Laborator Nr. 1 14


UNIVERSITATEA TITU MAIORESCU

numrul de senzori;
anten Inverted VEE antene orizontale, cu dipol inversat pentru orientare n
spaii nguste;
modul de transmitere a informaiilor: analog sau digital;
PROCESS: MPU/CPU urmeaz s decid cum trebuie modificat turaia motoarelor astfel nct
LFR s i poat modifica direcia i viteza de deplasare, concomitent cu rmnerea
pe linia neagr.
Ce procesor se utilizeaz (PIC18F8680), limbajul de programare (asamblare) C++.
OUTPUT: transmite noile semnale de control n funcie de vitez i direcie, conine informaii
despre motoarele DC, sursa de alimentare tensiune/curent, numrul de roi (de regul
dou), rola de alunecare, tipul de PID pentru controlul direciei.
STORAGE: programul i datele prelevate de senzori, viteza de deplasare, direcie 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 citete 0 pentru lateral stnga; R = senzor care citete 0 pentru lateral dreapta.
Dac nu exist un senzor L/R este 0, atunci L/R sunt egale cu 0.

L4 L3 L2 L1 R1 R2 R3 R4
1 0 0 1 1 1 1 1
Stnga Centru Dreapta
L=3 R=0

L4 L3 L2 L1 R1 R2 R3 R4
1 1 0 0 0 0 0 0
Stnga Centru Dreapta
L=2 R=4

2. n cazul n care toi senzorii citesc 1:


Goto step 3
If L>R move left
If L<R move right
If L=R move forward
Goto step 4

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 (stnga);
Se repet Step 3 pn cnd este gsit 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 reflectani IR1 pentru detecia caracteristicilor cu privire la suprafaa de sub Line
Follower, funcioneaz prin emiterea unui fascicul de lumin n infrarou (IR) n jos spre suprafaa
podelei i msurarea semnalului reflectat. Senzorul IR este constituit din dou elemente de lucru: un
emitor (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) funcioneaz cel mai bine atunci cnd sunt aproape de
suprafaa de contact, distana optim fiind de aproximativ 3,175 [].

#include <RedBot.h>
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-following-
with-ir-sensors

Rover 4x4 Laborator Nr. 1 16


UNIVERSITATEA TITU MAIORESCU

Senzorul IR acioneaz 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 recepionat de detector
i emite un semnal LOW. Cnd 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
01023 invers dependent de cantitatea de lumin reflectat IR. Valorile analogice citite n mediul
Arduino variaz 01023, deoarece Arduino utilizeaz Converter analog digital (ADC) pe 10 [bit],
vom citi urmtoarele: 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 numrul de bii pe secund [bps]. 9600 este o rat bun de date
moderat pentru majoritatea aplicaiilor. 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.

= [] , 2.2

Funcionarea acestui senzor pentru detecia liniei de urmat este n principiu urmtoarea:
urmeaz o linie dreapt;
urmeaz o linie dreapt i se rotete la stnga sau la dreapta;
urmeaz un labirint trasat cu band izolatoare de culoare neagr.

Fig. 2-10 Reprezentarea funcionrii 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, concepui ca un senzor de linie. Modulul este realizat ca un suport bloc, att pentru emitor
ct i receptor (fototranzistor) n perechi de IR egal distanate 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 funcie de tensiunea de ieire. Acest lucru este necesar
pentru a putea regla reacia robotului, astfel nct, corelarea cu viteza motoarelor s permit
parcurgerea traseului i apoi reducerea timpului pn la ncheierea cursei. Multiplicarea numrului
de senzori IR QTR de la 1 la 8 va asigura un consum mai redus de energie, att pentru consumul
aferent IR, dar mai ales pentru cel al motoarelor, ntruct timpul de reglare stnga-dreapta fa de
linie se reduce. Citirea simultan a unui numr ct mai mare de senzori este permis de plcile
Arduino, n comparaie cu driverele obinuite care erau integrate pe o plac ATmega128RFA12.
Plcile Arduino nu mai necesit convertoare analog digitale (ADC), au o sensibilitate mrit fa de
citirea analogic i poate citi n paralel toi senzorii care sunt implementai pe robot.
Ieirile 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 alimentrii LED-urile este
avantajoas, mai ales pe timpul ct acestea nu funcioneaz.

2
https://www.robofun.ro/platforme/avr/ATmega128RFA1

Rover 4x4 Laborator Nr. 1 17


UNIVERSITATEA TITU MAIORESCU

Tensiunea de alimentare este limitat la5 [V], pentru a permite funcionarea la 3.3 [V] i un
curent de aproximativ 20 25 [mA].

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 infrarou QRB1114

Senzorul QRB1114 const dintr-o diod emitoare de infrarou i un fototranzistor de siliciu


NPN, montate unul lng altul pe o ax optic convergent ntr-o carcas de plastic negru.
Fototranzistorul este sensibil la radiaiile emise de dioda care emite numai atunci cnd un obiect
reflectiv se afl n cmpul de vedere al robotului. Senzorul QRB1114 este n esen un rezistor
variabil. Principiul de funcionare este urmtorul:
- linia neagr absoarbe o parte din lumin, astfel nct senzorul vede mai puin 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).
Senzorii monitorizeaz tensiunea de alimentare de 5 [V], care vor afia valori cuprinse ntre
01024 pentru tensiuni cuprinse ntre 0 5 [V] . Calibrarea senzorului se face att pentru dunga alb
ct i cea neagr cu X, unde pentru se primete valoarea 500, iar pentru negru 100.

Rover 4x4 Laborator Nr. 1 18


UNIVERSITATEA TITU MAIORESCU

Pentru acest proiect vom monitoriza cantitatea de 5v a revenit la una dintre intrri analogice Arduino
lui. Vom utiliza mai degrab analogic 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 nct s tim c = alb i negru X = X. De exemplu, atunci cnd senzorul este pe o suprafa alb
senzor primete o valoare de 500 de la senzor. O suprafa neagr poate raporta 100.
Se folosesc regulile urmtoare: X <300 = linia neagr, X > 300 = suprafa alb
Pentru acurateea informaiei se utilizeaz minim 2 senzori, astfel nct 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 utilizrii unei linii de
culoare neagr. Dac totul este conectat corect trebuie s avem:
Stnga: XXX
Dreapta: XXX

Rover 4x4 Laborator Nr. 1 19


UNIVERSITATEA TITU MAIORESCU

Se poziioneaz partea din fa a robotului pe o suprafa de lumin clar / alb i ateptm repetarea
informaiei reflectate. Apoi se mut senzorii de pe linia neagr, din nou se ateapt o secund i apoi
se nregistreaz numrul care apare pe monitor. Al doilea set de numere trebuie s fie mai mare dect
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 read 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 <Servo.h> // 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 to 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 infrarou QRD1114

Senzorul QRD11143 este format din dou componente: un emitor IR (diod) i un


fototranzistor de siliciu cu jonciune NPN. Tranzistorul bipolar NPN este confecionat dintr-un
monocristal:
E emitor;
B este baza;
C colector.
n cazul n care nu se poate determina ce tip de tranzistor avem PNP sau NPN se poate efectua
msurarea conform Fig. 2-15

3
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

Att semnalul incident (de la emitor) ct i cel detectat (de fototranzistor) sunt
perpendiculare pe faa senzorului. QRD11144 este capabil s sesizeze obiecte aflate la o distan
cuprins ntre 0 30 [] , iar pe Arduino vom citi valori cuprinse ntre 600 1024 . Pentru o
funcionare corect sunt necesare adugarea unor rezistene (Fig. 2-16) de 200 2000 [] i 4,7
5,6 [k] .

Fig. 2-16 Reprezentarea schemei funcionale a senzorului QRD1114

4
http://www.robotshop.com/letsmakerobots/hooking-qrd1114-line-sensor

Rover 4x4 Laborator Nr. 1 21


UNIVERSITATEA TITU MAIORESCU

ntruct suprafeele albe reflect mai mult lumin dect cele negre, este posibil ca n funcie
de alte surse externe de lumin (flash aparat fotografiat, lmpi, lumina solar etc.) s obinem 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 urmtoarea reprezentare grafic5 a prii din fa a liniei urmtoare
bot pentru referin.

Fig. 2-18 Reprezentarea schemei logice de funcionare a unui Line Follower Robot

Software6 Arduino UNO motor pentru PWM pe pinul 11:


http://arduino.cc/en/Reference/Libraries

*/

#include <SoftPWMServo.h>

//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
http://chipkit.net/arduino-mc-line-follower/
6 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 rspndit este acela care utilizeaz cip-ul Atmel AT89C517 pe 8 bii cu
4kB de memorie Flash programabil. Acesta ofer o soluie flexibil pentru aplicaiile de embedded
control. n exemplul nostru robotul urmrete o linie neagr folosind senzori IR.

Fig. 2-19 Reprezentarea schemei logice pentru programarea n AT89C51

// black line follower robot


#include<reg51.h>
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 <mega16.h>
#include <delay.h>
#ifdef debug
#include <stdio.h>
#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<ldev)
move(L,0,195+12*ldev);

if(rdev==ldev)
move(FWD,0,200);
}

Rover 4x4 Laborator Nr. 1 29


UNIVERSITATEA TITU MAIORESCU

else {

for(i=0,dirl=0;i<MAX;i++) {

if(history[i]==L)
{dirl++;}
}
if(rotpow<160) {rotpow=160;}

if(rotpow<255) {rotpow++;}

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 urmtoarele ecuaii care descriu cinematica i dinamica robotului.

= 2
{ 3.1
= + 2
unde: V viteza de mers nainte [] ; VR viteza de rotaie a roii din dreapta [] ; VL viteza
de rotaie a roii din stnga []; L axului punii motrice [mm]; viteza de rotaie a motoarelor
[].

Fig. 3-1 Exemplu de folder Motor n Simulink

Modelul accept viteza V i unghiul de rotire , ca variabile pentru cele dou intrri
privind roata din stnga i cea din dreapta. Subsistemul care se ocup cu conversia celor dou mrimi
de intrare V i , implementeaz sistemul de relaii matematice (3.1):
_ = /2
{ . 3.2
_ = + /2

Fig. 3-2 Schema bloc modul conversie semnale intrare

Urmeaz descrierea primului bloc change parameters care efectueaz operaia de


multiplicare.
Al doilea bloc symmetrize motors, care multiplic turaiile celor dou motoare, astfel nct,
robotul s se poat deplasa rectiliniu, din construcie vitezele unghiulare ale motoarelor au
fluctuaii n jurul unei valori de referin.
Al treilea bloc change units efectueaz conversia unitilor de msur.

8
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

ntruct parametri descrii mai sus difer de la Robot la Robot, valorile implicite cu care sunt
livrate kit-urile de roboi de linie este bine s fie ajustate de fiecare dat.
Utilizarea contrastului dintre o linie neagr i un teren alb este benefic, ntruct lina de culoare
neagr reflect mai puin lumin dect culoarea alb. Cei 6 senzori (n funcie de tipul de robot)
permit determinarea poziiei robotului fa de linia neagr. Senzorii ntorc o valoare cuprins ntre
{0 5000} ().

Fig. 3-4 Poziia relativ a robotului detectat de senzorii de linie, fa de o linie de culoare neagr

Se consider valoarea de 2.500 ca fiind reprezentarea poziiei LFR fa de linia neagr. Orice
valoare mai mic sau mai mare dect 2.500 reflect poziiei LFR n stnga , respectiv dreapta liniei
negre. Diferenele dintre valoarea de referin i cele reale se numesc erori, sau semnale de eroare.

Fig. 3-5 Diagramele blocurilor responsabile de simularea determinrii poziiei robotului

Rover 4x4 Laborator Nr. 1 32


UNIVERSITATEA TITU MAIORESCU

Semnalul de eroare odat determinat (prin nsumarea la valoarea de 2.500), putem trece la
repoziionarea LFR.

Fig. 3-6 Repoziionarea robotului n funcie de informaiile primite de la senzori.

Rover 4x4 Laborator Nr. 1 33


UNIVERSITATEA TITU MAIORESCU

4. CONSTRUIREA UNUI MODEL SIMPLU

Fig. 4-1 Reprezentarea schemei funcionale 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 funcionale 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 regsesc n PID. n acest caz se vor
aplica standardele PID cu parametri de reglaj flexibili folosind AVR ATMega periferic i cu stocarea
informaiilor pe EEPROM de 521 Bytes.

Rover 4x4 Laborator Nr. 1 34


UNIVERSITATEA TITU MAIORESCU

Fig. 4-3 Reprezentarea schemei funcionale a unui LFR cu senzori QRB1114.


http://www.ermicro.com/blog/?p=1163

Aceste soluii de BRAM (Beginners Robot Autonomous Mobile - roboi mobili autonomi
pentru iniiere) cu un control proporional, integral i derivat (PID) este de fapt doar una dintre
metodele de control care pot fi aplicate sistemului embedded. Cealalt metod de control include
teoria bang-bang9 i logica fuzzy, de asemenea, utilizat pe scar larg n sistemele ncorporate.

Fig. 4-4 Reprezentarea schemei funcionale a unui PID pentru LFR cu senzori QRB1114.
http://www.ermicro.com/blog/?p=1163

Funcia BRAM_PIDControl () se ocup de smanalul obinut de senzor prin reflexie i l


transform n funcie obiect ca element de ieire pentru matricea funciei BRAM_IRSensor () i
calculeaz rspunsul de control necesar pentru a controla motoarele de curent continuu, prin
furnizarea valorii PWM necesar pentru funcia BRAM_DriveMotor ().
Controlul Proporional este folosit pentru a repara eroarea produs de poziia robotului fa de linia
de band neagr n comparaie cu valoarea de referin (TARGET_VAL), care reprezint poziia
robotului pe centrul liniei. Funcia 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 stri. Aceste controlere pot fi realizate n ceea ce privete orice element care ofer histerezis

. Funcia 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 VALUE TARGET VALUE. 4.1

Controlul proporional funcioneaz prin aplicarea unui factor de ctig Kp (factor de


proporionalitate). Prin urmare, redresarea spre partea dreapt (spre exemplu) const ntr-un rspuns
de control, care are formula:
RESPONSE = k P ERROR. 4.2

Funcia BRAM_IRSensor () va returna valoarea senzorului {0 120} , unde 0 nseamn


repoziionarea robotului spre dreapta n timp ce 120 nseamn repoziionarea robotului spre stnga;
cnd funcia BRAM_IRSensor () transmite 60, nseamn robotul nostru se afl chiar pe centrul liniei.
ERROR = SENSOR VALUE TARGET VALUE = 60 60 = 0
{ . 4.3
RESPONSE = k P ERROR = 0

n cazul n care rspunsul este 0 nseamn c ar robotul se poate deplasa cu viteza maxim,
astfel nct am putea apela funcia BRAM_DriveMotor () dup cum urmeaz:
BRAM DriveMotor(Left Max PWM, Right Max PWM. 4.4

Cnd funcia BRAM_IRSensor () va returna valoarea 0, vom avea:


ERROR = SENSOR VALUE TARGET VALUE = 0 60 = 60
{ . 4.5
RESPONSE = k P ERROR = 60 k P

Rspunsul negativ nseamn c trebuie s se ntoarc sau s efectueze un arc de cerc spre
stnga pentru a face corecia, acest lucru ar putea fi realizat prin reducerea valorii PWM a motorului
din stnga, n timp ce pstreaz valoarea PWM a motorului din dreapta la valoarea maxim:
BRAM DriveMotor(Left Max PWM + RESPONSE, Right Max PWM. 4.6

Cnd funcia BRAM_IRSensor () va returna valoarea 120, vom avea:


ERROR = SENSOR VALUE TARGET VALUE = 120 60 = 60
{ . 4.7
RESPONSE = k P ERROR = 60 k P

Rspunsul pozitiv nseamn c trebuie s se ntoarc sau s efectueze un arc de cerc spre
dreapta pentru a face corecia, acest lucru ar putea fi realizat prin reducerea valorii PWM a motorului
din dreapta, n timp ce pstreaz valoarea PWM a motorului din dstnga la valoarea maxim:
BRAM DriveMotor(Left Max PWM, Right Max PWM RESPONSE. 4.8

Valoarea constantei Kp ar putea fi orice numr care va spori valoarea de rspuns, ca urmare
este partea de cod C a funciei BRAM_PIDControl () care implementeaz urmtoarea explicaie:
...
...
// 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 proporional singur va rezulta un comportamentul al direciei robotului


n zigzag, prin urmare, trebuie s combinm cu control integrat sau control derivat, sau ambele
dintre ele pentru a realiza o modificare mai precis i mai stabil a direciei robotului. Formula
standard a unui controler PID este urmtoarea.
1 ()
() = [() + 0 () + ] 4.9

Rover 4x4 Laborator Nr. 1 36


UNIVERSITATEA TITU MAIORESCU

Control integral este utilizat pentru a reduce eroarea acumulat produs de controlul
proporional asupra timpului eroare a strii de echilibru, altfel spus, dac robotul produce o eroare
fa de centrul liniei negre, atunci cu aceeai valoare se modific rspunsul de ieire dat de control
integrat.
Control derivat este utilizat pentru a accelera rspunsul de eroare al control proporional,
deoarece un robot mai rapid produce sigur erori, cum ar fi micarea n zigzag ceea ce impune un
rspuns dat de control derivat pentru valoarea de ieire. Funcia de control derivat va ajuta la
reducerea comportamentului de deplasare n zigzag a robotului.
PID utilizeaz ca metod de rezolvare a ecuaiei (4.9) regula trapezoidal10:
( + )
= 1 + ( 1 ) + 21 + ( 21 + 2 ) 4.10

Simbol Descriere Variabile implementate Tip


Rspunsul curent al motorului electric motor_res int
1 Rspunsul anterior al motorului electric prev_res int
Parametrul factorului proporional KP int
Eroare curent err_func int
1 Eroare anterioar 1 prev_err_1 int
Parametrul factorului de integrare KI int
Parametrul factorului de derivare KD int
2 Eroarea anterioar 2 prev_err_2 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 Execuia 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 <QTRSensors.h>

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; i<NUM_SENSORS; i++){
// Serial.print(sensorValues[i]);
// Serial.print('\t');
if(sensorValues[i]>400)
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){
posRight=i-3;
}
}
for (int i=NUM_SENSORS-1; 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 <RedBot.h>
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;
int leftSpeed; // variable used to store the leftMotor speed
int 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 funcionale de LFR.
Programul cel mai simplu presupune ca robotul s se ntoarc mereu la centrul liniei negre de pe
podea. n funcie de constanta de proporionalitate, suma, cu care robotul transform pentru o anumit
valoare a semnalului de eroare, va fi variabil. Aceast constant de proporionalitate P este un
parametru al modelului, care trebuie s fie reglat n funcie de cerinele beneficiarului.
Limitrile acestui tip de PID sunt date de constrngerile de a sta pe centrul liniei negre.
Acestea introduc n sistem oscilaii datorate ineriei. Aceasta este explicaia faptului c LFR oscileaz
n mod continuu n jurul axului liniei negre. Componenta derivativ a PID-ului ajut la amortizarea
oscilaiilor. n acest caz, vom calcula derivata instantanee a semnalului de eroare care ar servi pentru
a amortiza oscilaiile. Astfel, constanta este multiplicat cu rezultatul derivrii i produsul este
adugat la semnalul de control. Aceast constant este cunoscut sub numele de ctig derivat i
corespunde componentei D a controlerului PID.

Fig. 6-1 Graficul rspunsului proporional al PID-ului.

Fig. 6-2 Graficul rspunsului proporional/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 printr-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 fr a utiliza un algoritm matematic, dup cum urmeaz:
se regleaz ctigul proporional a controlerului pn cnd se obine un rspuns adecvat;
de regul, se va seta valoarea ctigului derivatului cu 1/10 din ctigul proporional;
apoi se va ajusta ctigul derivat pn n momentul n care se observ o schimbare adecvat a
comportamentului robotului;
creterea datorat componentei P proporional va crete cantitatea cu care se transform
robotul
creterea ctigului derivat va amortiza magnitudinea oscilaiilor robotului.

Fig. 6-3 Funcia 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. Melvil, DEWEY. The Online Computer Library Center.


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., Rdoi i E., Deciu. MECANICA. [ed.] Nicolae A. Ediia a II - a, revizuit. Bucureti : 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 Basaez. 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. 1-1 REPREZENTAREA SISTEMELOR ROBOTIZATE AUTONOM/SEMIAUTONOME ................................................................................ 3


FIG. 1-2 REPREZENTAREA EFECTELOR TERENULUI ASUPRA PROPULSORULUI......................................................................................... 4
FIG. 1-3 SCHEMATIZAREA CONSTRNGERILOR CINEMATICE I DINAMICE ............................................................................................ 4
FIG. 1-4 REPREZENTAREA SCHEMEI DE CONTROL A CINEMATICII I DINAMICII....................................................................................... 5
FIG. 1-5 REPREZENTAREA CONTROLERULUI TIP BUCL NCHIS. ........................................................................................................ 5
FIG. 1-6 DIRECIA FOREI DE ACIONARE N FUNCIE DE PUNCTUL DE APLICAIE. ................................................................................. 6
FIG. 1-7 ALGORITM PENTRU NAVIGAIE/ORIENTARE I CONTROL AL TRAIECTORIEI ................................................................................ 6
FIG. 1-8 DISTRIBUIA PRESIUNII N ZONA DE CONTACT I HISTEREZISUL CAUCIUCULUI ............................................................................ 7
FIG. 1-9 ECHILIBRUL ROII MOTRICE ........................................................................................................................................... 8
FIG. 1-10 MPC MODEL PREDICTIV DE CONTROL ........................................................................................................................ 9
FIG. 1-11 CARSIM REZULTATE ANALITICE .............................................................................................................................. 10
FIG. 2-1 REPREZENTAREA SPECTRULUI DE LUMIN I LUNGIMEA DE UND ........................................................................................ 11
FIG. 2-2 SPECTRUL VIZIBIL I INVIZIBIL AL LUMINII ........................................................................................................................ 11
FIG. 2-3 LUNGIMEA DE UND A CORPULUI NEGRU ....................................................................................................................... 12
FIG. 2-4 GRAFICELE SPECTRELOR N FUNCIE DE FRECVEN I LUNGIME DE UND. ............................................................................ 12
FIG. 2-5 LUNGIMEA DE UND A RADIAIEI ELECTROMAGNETICE I DOMENIUL DE APLICAIE.................................................................. 12
FIG. 2-6 CALIBRAREA FOTOTRANZISTORILOR N FUNCIE DE NUMRUL DE CULORI. ............................................................................. 13
FIG. 2-7 REPREZENTAREA MODULUI DE FUNCIONARE AL SENZORILOR SHARP IR RANGE. .................................................................... 14
FIG. 2-8 DIAGRAMA BLOC DE BAZ. .......................................................................................................................................... 14
FIG. 2-9 SENZOR IR DE LINIE ANALOG QRE1113. ....................................................................................................................... 16
FIG. 2-10 REPREZENTAREA FUNCIONRII IR CU ARDUINO............................................................................................................ 17
FIG. 2-11 REPREZENTAREA SENZORILOR IR QTR-: 1RC, L-1RC, 3RC, 8RC. ................................................................................... 18
FIG. 2-12 REPREZENTAREA DIAGRAMEI SCHEMATIZATE DE LUCRU A SENZORILOR ............................................................................... 18
FIG. 2-13 REPREZENTAREA SENZORULUI QRB1114 .................................................................................................................... 19
FIG. 2-14 REPREZENTAREA SENZORULUI QRB1114 .................................................................................................................... 19
FIG. 2-15 REPREZENTAREA TRANZISTORULUI BIPOLAR (PNP SAU NPN) ............................................................................................. 21
FIG. 2-16 REPREZENTAREA SCHEMEI FUNCIONALE A SENZORULUI QRD1114 .................................................................................. 21
FIG. 2-17 REPREZENTAREA SENZORULUI QRD1114 .................................................................................................................... 22
FIG. 2-18 REPREZENTAREA SCHEMEI LOGICE DE FUNCIONARE A UNUI LINE FOLLOWER ROBOT ............................................................ 23
FIG. 2-19 REPREZENTAREA SCHEMEI LOGICE PENTRU PROGRAMAREA N AT89C51 ........................................................................... 25
FIG. 3-1 EXEMPLU DE FOLDER MOTOR N SIMULINK .................................................................................................................... 31
FIG. 3-2 SCHEMA BLOC MODUL CONVERSIE SEMNALE INTRARE .................................................................................................... 31
FIG. 3-3 BLOCURI DE COMAND .............................................................................................................................................. 32
FIG. 3-4 POZIIA RELATIV A ROBOTULUI DETECTAT DE SENZORII DE LINIE, FA DE O LINIE DE CULOARE NEAGR .................................. 32
FIG. 3-5 DIAGRAMELE BLOCURILOR RESPONSABILE DE SIMULAREA DETERMINRII POZIIEI ROBOTULUI .................................................. 32
FIG. 3-6 REPOZIIONAREA ROBOTULUI N FUNCIE DE INFORMAIILE PRIMITE DE LA SENZORI. .............................................................. 33
FIG. 4-1 REPREZENTAREA SCHEMEI FUNCIONALE CU ARDUINO I SENZORI IR QRE1113. .................................................................. 34
FIG. 4-2 REPREZENTAREA SCHEMEI FUNCIONALE CU ARDUINO CU TREI SENZORI IR QRE1113. .......................................................... 34
FIG. 4-3 REPREZENTAREA SCHEMEI FUNCIONALE A UNUI LFR CU SENZORI QRB1114. ...................................................................... 35
FIG. 4-4 REPREZENTAREA SCHEMEI FUNCIONALE A UNUI PID PENTRU LFR CU SENZORI QRB1114. .................................................... 35
FIG. 4-5 EXECUIA PARAMETRULUI DE CONTROL PID. .................................................................................................................. 38
FIG. 4-6 SCHEMA ELECTRONIC PENTRU CONEXIUNILE PID-ULUI. ................................................................................................... 38
FIG. 4-7 SCHEMA ELECTRONIC PENTRU CONEXIUNILE PID-ULUI. ................................................................................................... 38
FIG. 6-1 GRAFICUL RSPUNSULUI PROPORIONAL AL PID-ULUI. ..................................................................................................... 44
FIG. 6-2 GRAFICUL RSPUNSULUI PROPORIONAL/DERIVATIV AL PID-ULUI....................................................................................... 44
FIG. 6-3 FUNCIA BLOC DIN TOOLBOX-UL SIMULINK PENTRU UN CONTROLER PID. ............................................................................. 45

Rover 4x4 Laborator Nr. 1 48


UNIVERSITATEA TITU MAIORESCU

9. ABREVIERI

ADC Analog-Digital-Convertor
bps Numrul de bii pe secund viteza de transfer date
BRAM Beginners Robot Autonomous Mobile
CPU Central Processor Unit
DC Motor de curent continuu
EO Electro-optic
IR Infrarou
LED Light-Emitting Diode
LFR Line Following Robot
LTV-MPC Model Predictiv de Control Liniar
MIMO Multiple-Input and Multiple-Output
MOSFET MetalOxideSemiconductor Field-Effect Transistor
MPC Model Predictive Control
MPU Micro Processor Unit
NLMPC Model Predictiv de Control Neliniar
PID ProportionalIntegralDerivative controller

https://www.youtube.com/watch?v=EIpPDZY8BPw&list=PLhoXNQqrCmEfAaTf0AfQ1Ztxmz2D
oZiCk&index=27

http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/f2016/ak634_jmw483_dm797/ak634_jmw4
83_dm797/ak634_jmw483_dm797/index.html

https://www.mathworks.com/help/supportpkg/arduino/examples/arduino-robot-line-follower-
application.html

Rover 4x4 Laborator Nr. 1 49

S-ar putea să vă placă și