Problema Urmaririi Traiectoriei Impuse de Catre Un Robot Mobil Utilizand Reactia de Pozitie de la O Camera Video

Cuprins

Lista figurilor

Figura 1 Structura sistemului de urmărire a traiectoriei cu reacție de la camera video………………1

Figura 1.1 Robotul Boe-Bot………………………………………………………………………5

Figura 1.2 Robotul MARK III……………………………………………………………………6

Figura 1.3 Robotul SRV-1 Blackfin………………………………………………………………6

Figura 1.4 Principiul de funcționare al encoderului magnetic……………………………………7

Figura 1.5. Sistemul GPS folosit pe roboți mobili…………………………………..……………8

Figura 2.1  Etape fundamentale în prelucrarea digitală de imagini……………………………….9

Figura 2.2 Binarizarea imaginilor……………………………………………………………….12

Figura 2.3 Reducerea zgomotului………………………………………….……………………13

Figura 2.4 Profiluri tipice pentru muchii………………………………..………………………13

Figura 2.5  Convenția de axe folosită în reprezentarea imaginilor………………………………14

Figura 2.6 Robotul A4WD1 imagine originală………………………………………………….15

Figura 2.7 Transformarea formatului imaginii intr-o imaginea grayscale………………………16

Figura 2.8 Histograma imaginii………………………………………………………………….16

Figura 2.9 Segmentarea imaginii,imaginea binarizată……………………………………….….17

Figura 2.10 Eliminarea regiunilor mici………………………………………………………….18

Figura 2.11 Perimetrele regiunilor obținute……………………………………………….…….18

Figura 2.12 Camera video Microsoft LifeCamVX-1000………………………………………..19

Figura 2.13 Achiziția imaginilor de la un dispozitiv extern, în MATLAB. …………………….20

Figura 3.1 Robotul A4WD1 Combo Kit……………………………………………..………….22

Figura 3.2 Schema bloc a robotului A4WD1 Combo Kit…………………………………..….23

Figura 3.3 Portul serial…………………………………………………………………………..24

Figura 3.4 Model cinematic sistem de locomoție diferențial………………………………….25

Figura 3.5 Deplasare robot…………………………………………………………….………..27

Figura 3.6 Robotul mobil intr-o scenă de operare cu mai multe obstacole fixe…………….…..29

Figura 4.1 Microcontrolerul Pro BasicATOM………………………………………………….30

Figura 4.2 Interfața mediului de lucru BASIC ……………………………………………..…..31

Figura 4.3 Procesarea fuzzy a informației………………………………………… …………..35

Figura 4.4 Structura unui sistem cu logică fuzzy Mamdani…………………………………….36

Figura 4.5 Interpretarea diagramei fuzzy de inferența de tip Mamdani ………………………37

Figura 4.6 Sistemul de inferență fuzzy proiectat pentru problema urmăriri traictoriei…………38

Figura 4.7 Fuzzificarea distanței………………..………………………………………………39

Figura 4.8 Fuzzificarea derivatei distanței………….…………………………………….……39

Figura 4.9 Fuzzificarea erori de orientare ……………………………………………………..40

Figura 4.10 Sistemul de inferență al derivatei distanței……………………………………….40

Figura 4.11 Defuzzificarea comenzii de corecție a unghiului de orientare………….…………41

Figura 4.12 Baza de reguli a regulatorului Fuzzy……………………………………..………42

Figura 4.13 Structura bazei de reguli a regulatorului Fuzzy……………………………………42

Figura 4.14 Suprafața regulatorului Fuzzy…………………………………………………..…43

Figura 4.15 Schema Simulink de control a robotului ……………..………..………………….44

Figura 4.16. Poziția x inițială și cea rezultată……………..…..……………..…………………45

Figura 4.17 Poziția y inițială și cea rezultată………………..……………..……………….…..46

Figura4.18 Evoluția erorii teta…………..……………..……………….…………………………46

Figura4.19 Evoluția distanței………………………………………………………………………………………….47

Figura4.20 Evoluția erorii de orientare……………………………………………………………………………..47

Figura 4.21 Schema Simulink cu referință înregistrare video………………………………….48

Figura4.22 Evoluția pe x a robotului……………………………………………………………………………….49

Figura4.23 Evoluția pe y a robotului……………………………………………………………………………….49

Figura4.24 Evoluția erorii teta a robotului………………………………………………………………………..50

Figura4.25 Evoluția vitezei robotului………………………………………………………………………………50

Lista tabelelor

Tabelul 3.1 Datele tehnice ale robotului A4WD1 Combo Kit………………..…………………23

Introducere

Tema lucrării

Unul din cele mai importante aspecte în evoluția ființei umane este folosirea uneltelor care să simplifice munca fizică. În aceasta categorie se înscriu și roboții, ei ocupând totuși o poziție privilegiată datorită complexității lor.

În cadrul lucrării de față se va analiza problema implementării unei legi de comandă pentru un robot mobil și urmărirea traiectoriei impuse. Deoarece pe roboți de multe ori nu pot fi montate sisteme de determinare a poziții și pentru că în practică ipoteze precum lipsa alunecării roților pe suprafața de rulare nu sunt îndeplinite, s-a impus ca metodă de detecție a poziției robotului utilizarea imaginilor recepționate de la o cameră video. Suplimentar, utilizarea imaginilor de la camera video pot oferi informati despre mediul în care evoluează robotul precum prezența unor obstacole.

Evoluția actuală în domeniul procesării de imagine face ca abordarea utilizatorului, de a primi reacție de poziție de la o cameră video să fie fezabilă atât din punct de vedere al vitezei de reacție cât și din punct de vedere al costurilor de implementare.

Având în vedere că scopul principal al lucrării este dezvoltarea și testarea unui algoritm de urmărire a traictoriei cu reacție de poziție de la o cameră video, s-a adoptat o implementare în Matlab a algoritmului și nu în C. Alegerea realizată este justificată de prezența în Matlab a unui Toolbox de achiziție de imagini, precum și de facilitățile de implementare a regulatoarelor.

Pornind de la poziția robotului furnizată de algoritmul ce determină prezența acestuia în mediu, un controler fuzzy va fi proiectat pentru a furniza comenzile de viteză de translație și viteză de rotație ale robotului.

Figura 1 Structura sistemului de urmărire a traiectoriei cu reacție de la camera video

Robotul A4WD1 produs de firma Lynxmotion este un robot de tip hilar cu 4 roți motoare, cele de pe aceeași parte fiind acționate sicron (cu viteze egale). Modelul robotului implementat în Simulink primește la intrare vitezele celor doua roți și furnizează la ieșire pozițiile x,y,θ ale robotului.

Robotul A4WD1 este echipat cu un microcontroller BasicATOM Pro autonom, un calculator cu circuite de memorie și de sprijin într-un singur pachet. Microcontroller BasicATOM Pro este programat cu ajutorul compilatorului Basic Micro Pro.

Mediul de lucru Basic Micro Pro permite crearea de noi aplicații prin parcurgerea următoarelor etape. Scriere programului și validarea corectitudinii acestuia, evidențiind eventualele erori. Compilarea, obținerea codului executabil, și încărcarea aplicației în memoria controlerului. Monitorizarea execuției programului prin afișarea într-o fereastră a mesajelor trimise de acesta pe serială.

Structura lucrării

Prezenta lucrare începe cu o succintă introducere în problematica roboților mobili. După prezentarea modelelor posibile de roboți cu roți se trece la analiza variantelor practice de determinare a poziției unui robot în mediu. Capitolul 1 se încheie cu o comparare a avantajelor și dezavantajelor utilizării encoderelor și respectiv a sistemelor GPS pentru controlul navigației roboților.

În capitolul 2 este prezentată problematica legată de utilizarea imaginilor pentru determinarea poziției unui robot. Se prezintă un algoritm de extragere a informației de poziție și performanțele acestuia.

Capitolul 3 conține descrierea robotului ținând cont de mecanica și modelul cinematic al acestuia. Se prezintă și planificarea traiectoriei robotului care are ca scop punerea cap la cap a unor reguli folosite pentru mișcarea acestuia.

În capitolul 4 se prezintă problema urmăriri traiectoriei de către un robot mobil, aceasta fiind rezolvată utilizând un regulator Fuzzy. Proiectarea regulatorului a pornit de la modelul cinematic al robotului care a fost prezentat în capitolul 3. Modelul utilizat este cel al unui sistem MIMO cu doua ieșiri (vL,vR) și trei intrări (pozițiile pe x, y și orientarea θ) . Pe baza unui comportament dorit din partea robotului s-au formulat regulile pe care motorul de inferență al regulatorului Fuzzy le va prelucra. Regulile vor da în mod firesc prioritate corectări erori de orientare comparative cu eroarea de distanță. Prin această prioritizare se vor elimina evoluții în care robotul se deplaseze cu viteză mare pe o direcție greșită.

CAPITOLUL I Studiul privind roboți mobili

Scurt istoric

Noțiunea de robot datează de peste 4000 de ani. Omul și-a imaginat dispozitive mecanizate inteligente care să preia o parte însemnată din efortul depus de ei. Astfel au construit jucării automate și mecanisme inteligente.

Revoluția informatică a marcat saltul de la societatea industrializată la societatea avansată informatic, generând un val de înnoiri în tehnologie și în educație. Acest lucru a dus și la apariția roboților.

Roboții mobili reprezintă un subiect de cercetare în plină ascensiune. Folosiți prima oara în proiectele din cadrul departamentului de apărare din armată și apoi în industrie pe post de vehicule ghidate autonome, roboții mobili reprezintă mai nou atracția principală a omenirii secolului XXI.

Introducere in teoria roboților mobili. Domeniul de utilizare

Robotul mobil este un sistem complex care poate efectua diferite activități intr-o varietate de situații specifice lumii reale. El este o combinație de dispozitive echipate cu servomotoare și senzori ce operează într-un spațiu real, marcat de o serie de proprietăți fizice și care trebuie să planifice mișcările astfel încât robotul să poată realiza o sarcină în funcție de starea inițială a sistemului și în funcție de mediul de lucru.

Roboții mobili sunt de fapt niște vehicule terestre, aeriene sau acvatice dotate cu inteligență, ceea ce le dă posibilitatea să acționeze autonom. După cum am arătat deja, roboții mobili au aplicații în toate domeniile. În plus se prevede implementarea tehnicilor din robotică în circulația rutieră, realizându-se vehicule care sa meargă singure,în timp ce omul se odihnește, mai ales la drumuri lungi pe autostrăzi.

Utilizările pentru care au fost, sunt și vor fi concepuți roboții mobile sunt dintre cele mai diverse. La fel de spectaculoase sunt și multe utilizări ale macro-roboților:

în domeniul industrial: vehicule pe roți care transportă și manipulează piese;

în domeniul distractiv și recreativ: roboții-jucării;

în domeniul serviciilor: roboți pentru deservirea bolnavilor în spitale;

în domeniul securității: roboți folosiți pentru dezamorsarea unor pachetelor explozibile;

Există două mari categorii de roboți:

roboți staționari, care au mereu o poziție fixă și bine determinată;

roboți mobili, roboți care se deplasează într-un anumit mediu fără intervenție umană și realizează anumite obiective.

Un robot mobil ar putea fi descris ca un robot care trebuie să se deplaseze într-un anumit mediu, fără ajutorul unui operator uman și să execute anumite sarcini date de acesta. Deci principala caracteristică este mobilitatea. [1]

Roboți mobili

Un robot mobil este alcătuit dintr-o serie de componente, hardware și software. Din punct de vedere al componentelor hardware, un robot mobil poate fi considerat ca o colecție de sisteme pentru:

Locomoție, modalitatea prin care robotul se mișcă în mediul său ambiant;

Sesizare prin sistem senzorial, modalitatea prin care robotul măsoară proprietățile lui și ale mediului înconjurător;

Procesare, modalitatea prin care robotul procesează și ia decizii în legătură cu informațiile primite de la sistemul senzorial;

Comunicare, modalitatea prin care robotul comunică cu alți roboți sau cu un operator din mediu.

În ce privește locomoția și acțiunea, pentru a se putea deplasa în mediul ambiant și a executa anumite acțiuni prin intermediul organelor sale mobile, roboții mobili au nevoie de anumite componente electro-mecanice care să le permită o mișcare precisă, bazate pe transformarea energiei electrice în energie mecanică de către motoare specifice.

Roboții mobili trebuie să posede capacități de comunicare, fie cu alți roboți din mediu, fie cu un operator uman, pentru a trimite raporte despre sarcinele efectuate, preluare comenzi sau schimb de informații cu mediul exterior. Sistemele de comunicare aferente roboților mobili pot fi de două categorii: cu fir sau fără fir.

Comunicația cu fir este modalitatea cea mai simplă de transfer de date între robot și operator. O serie de probleme asociate transmisiei fără fir, dispar în cazul comunicației de date cu fir, cu prețul reducerii mobilității robotului.

Avantajul principal al sistemelor de comunicare cu fir este acela că, pe lângă datele transmise între robot și operatorul uman, se mai poate transmite și curent electric, eliminând astfel necesitatea unei baterii onboard pe robot și mărind autonomia robotului.

Un dezavantaj direct al folosirii unui sistem de comunicare cu fir, ar fi faptul că spațiul de lucru al robotului va fi limitat de lungimea maximă admisibilă a cablului. De asemenea, cablul ar putea interfera cu sistemul de locomoție sau chiar cu senzorii, aceștia putând raporta valori eronate.

Sistemele de comunicare fără fir se folosesc de o serie de tehnologii de transmitere a datelor prin aer, dintre care amintim: transmisia prin unde infraroșu, bluetooth, radio modem-uri, WiFi și altele.

Mecanismele de transmitere a datelor prin unde infraroșu sunt cele mai puțin robuste, ele neputând fi folosite decât la distanțe relativ mici. De asemenea, ele funcționează doar în linie dreaptă în câmp deschis, orice obstacol aflat între dispozitivele de transmisie și recepție obturând semnalul. Un alt dușman al tehnologiilor de transmitere în infraroșu este lumina solară.

Tehnologiile WiFi sunt deja răspândite în domeniul calculatoarelor personale și oferă un suport complet de integrare al roboților în rețele de calculatoare. O problemă a acestor tehnologii ar fi faptul că sunt consumatoare de energie, lucru care nu este prielnic robotului mobil.

Eliminând problema energiei consumate, tehnologiile Bluetooth oferă servicii similare cu dispozitivele WiFi, însă distanța maximă admisibilă între emițător și receptor este mult mai mică decât în cazurile celorlalte tehnologii.[2]

Clasificarea roboților mobili

Roboții mobili se clasifică astfel:

În funcție de dimensiuni: macro,micro și nano-roboți;

În funcție de mediul în care acționează: roboți tereștri, roboți subacvatici,roboți extratereștri;

În funcție de sistemul care le permite deplasarea în mediul în care acționeză există de exemplu pentru deplasarea pe sol:

roboți pe roți sau șenile

roboți pășitori: bipezi, patrupezi, hexapozi, miriapozi

roboți târâtori: care imită mișcarea unui șarpe

roboți săritori: care imită deplasarea broaștelor

roboți de formă sferică.

Exemple de roboți mobili

În Figura 1.4 avem robotul mobil Boe-Bot produs de firma Parallax. Care este folosit de educatori și studenți din întreaga lume. Robotul este pus în mișcare de două motoare servo cu rotație continuă și controlat cu extensia CMUcam, care permite implementarea diferitelor funcții bazate pe procesarea imaginilor.

Figura 1.4 Robotul Boe-Bot

În Figura 1.5 avem robotul mobil MARK III. Robotul este comandat de un microcontroler PIC și poate fi reprogramat prin interfața serială. Mai avem și un senzor de distanță cu infraroșu Sharp, cu care putem să măsurăm distanțe între 10 cm și 80 cm cu precizie ridicată.

Figura 1.5 Robotul MARK III

În Figura 1.6 avem robotul SRV-1 Blackfin. Controlul robotului este efectuat cu un procesor Analog Devices Blackfin și este echipat cu o cameră video cu rezoluție de la 160×128 până la 1280×1024 pixeli. Robotul este controlabil prin rețea wireless.

Figura 1.6 Robotul SRV-1 Blackfin

Comparație între roboți cu encodere și roboți cu sistem GPS

Encoderele sunt necesare ca un senzor de feedback fundamental pentru controlul motorului. Există mai multe tehnici de construcție pentru un encoder. Cele mai des utilizate sunt encoderele magnetice sau optice. Encoderele magnetice utilizează un senzor cu efect Hall și un disc pe axul de rotație al motorului, cu un număr de magneți montat într-un cerc. Fiecare revoluție a axului motorului învârte magneții lângă senzorul Hall și prin urmare, rezultă 3 impulsuri pe linia encoderului. Encoderele sunt de obicei montate direct pe axa motorului înainte de reductor, astfel încât au o rezolutie maximă, comparativ cu viteza de rotație mult mai lentă a axei după redactor.[3]

Un encoder cu un singur senzor magnetic sau optic poate număra doar segmentele care trec pe lângă el. Dar nu poate să determine, dacă axa motorului se deplasează în sensul orar sau anti-orar.

Acest lucru este important mai ales în cazul aplicațiilor realizate pe roboți, care ar trebui să fie capabili să se deplaseze înainte sau înapoi. Din acest motiv majoritatea codificatoarelor sunt echipate cu doi senzori (magnetic sau optic), care sunt poziționate cu un decalaj de fază unul față de altul. Acest lucru ne oferă o posibilitate de a  determina direcția de rotație a axei motorului, dacă este înregistrată care dintre cei doi senzori primește primul impuls pentru un nou segment. Deoarece fiecare dintre cei doi senzori al encoderului este un senzor digital binar, am putea să le conectăm la un microcontroler prin folosirea a două linii digitale de intrare. Cu toate acestea, acest lucru nu ar fi foarte eficient, deoarece atunci procesorul ar trebui să verifice constant liniile de date a senzorului,  pentru a înregistra orice modificare și actualizare a numărului de impulsuri. Din fericire, acest lucru nu este necesar, deoarece microcontrolere au hardware-ul de intrare special pentru cazurile de acest gen de semnale. Ele sunt de obicei numite "numărătoare" și pot număra impulsurile de intrare până la o anumită frecvență complet independent de activitatea realizata pe CPU. Aceasta înseamnă că procesorul nu este încetinit și, prin urmare, poate lucra la programe de aplicație de nivel superior.  Encoderul de rotație  este un traductor standard pentru roboți mobili, pentru a determina poziția și orientarea robotului.

Encoderele optice sunt traductoare incrementali care permit măsurarea distanței parcurse de robot sau a vitezei de rotație a roților motrico-directoare. Constructiv, sunt formate dintr-o diodă cu emisie în spectru infraroșu și un fototranzistor ce captează semnalul infraroșu reflectat de suprafața roții, ambele inserate în aceeași capsulă. Pe fața lateral interioară a roților sunt aplicate două discuri împărțite în sectoare de culori alb-negru alternante.

Senzori GPS

Sistemul de poziționare globală prin satelit a fost inițial dezvoltat de către Departamentul de Apărare al Statelor Unite ale Americii incepand cu anul 1973.

Sistemul este alcătuit din aproximativ 21 de sateliți și permite oricărui recepror autorizat să își calculeaze poziția și viteza cu care se deplasează. Sistemul GPS nu poate fi folosit în interiorul clădirilor, deoarece el necesită ca între receptor și satelit să existe vizibilitate directă.

Momentan există mai multe implementări ale serviciului,printre care SPS (eng. Standard Positioning System) disponibil pentru civili, respectiv PPS (eng. Precise Positioning System) disponibil pentru armată. SPS are o acuratețe de aproximativ 100 m pe orizontală, fapt pentru care nu este folosit prea mult in lumea roboților mobili.

Prin folosirea unei combinații de senzori GPS care comunică unul cu celălalt, este posibilă obținerea unei estimări mult mai precise de poziție. Sistemul astfel construit poartă denumirea de DPGS (eng. Differential Global Possitioning System) acuratețea lui fiind undeva între 1 și 10 m pentru civili, deci substanțial mai mare decat cea a sistemului SPS clasic, dar și decat cea a sistemului PPS. O implementare și mai precisă a unui sistem diferențial GPS este DCGPS (eng. Differențial Carrier Global Positioning System), cu ajutorul căruia se poate obține o acuratețe de aproximativ 10cm.

Din punct de vedere al roboților mobili, este recomandat folosirea unor sisteme hibride de poziționare, prin folosirea informațiilor de la un sistem de senzori GPS și unul clasic.[4]

Figura 1.5. Sistemul GPS folosit pe roboți mobili

Capitolul II. Achiziția și Prelucrarea Imaginilor Video

Prelucrarea video și importanța sa

O definiție atotcuprinzătoare poate suna în felul următor: prelucrarea video reprezintă totalitatea de operații efectuate asupra unui semnal de intrare, în acest caz un videoclip pentru ca la ieșirea sistemului de procesare să fie generate fie caracteristici esențiale sau dorite ale imaginii, informații utile, sub forma de parametrii căutați, sau funcții de nivel înalt precum luarea de decizii.

Indiferent de definiție, scopul prelucrări video este evident, în contextul actual, în care dispozitivele de achiziție video pot fi întâlnite în domenii din ce în ce mai multe, nevoia înlocuirii experților umani este din ce în ce mai acută. Prelucrarea video îi propune:

îmbuntirea informaiei vizuale în vederea optimizrii analizei i interpretrii de ctre om, cu aplicaii în diverse domenii cum ar fi medicin, criminalistic,industrie, etc.

extragerea informaiilor într-o form intern pentru analiza cu ajutorul calculatorului a informaiilor video, în recunoatrea caracterelor recunoaterea amprentelor i a feei etc.

Prelucrarea digitală a imaginilor video presupune o succesiune de etape de procesare hardware și software, precum și de implementare a unor metode teoretice.

Figura 2.1  Etape fundamentale în prelucrarea digitală de imagini

Prima etapă în acest proces este achiziția de imagini. Aceasta necesită un senzor de imagine și capacitatea de a digitiza semnalul de la ieșirea acestuia. În cadrul aplicației realiyate în preyentul proiect senzorul este cel corespunzător camerei Microsoft LifeCamVX-1000, care captează o imagine completă cu o frecvență de 30 de cadre pe secundă. Dacă la ieșirea camerei rezultă un semnal analogic, este necesară digitizarea lui cu ajutorul unui convertor analog-numeric.

După obținerea imaginii digitale, următoarea etapă este preprocesarea acesteia. Scopul primordial al preprocesării este îmbunătățirea imaginii în sensul măririi șanselor de succes ale prelucrărilor ulterioare. .

Segmentarea imaginii, reprezintă împărțirea acesteia în părți constituente sau în obiecte distincte. În general, segmentarea este una dintre cele mai dificile etape în prelucrarea digitală de imagini. Pe de o parte, algoritmii sofisticați de segmentare, cu șanse mari de selectare a regiunilor de interes, necesită calcule complicate deci un timp îndelungat de procesare.

Rezultatul segmentării este, un șir de intensități ale pixelilor, reprezentând fie conturul regiunii de interes, fie întreaga regiune. În fiecare caz este necesară conversia datelor într-o formă mai potrivită pentru prelucrarea pe calculator.

Selecția caracteristicilor reprezintă procesul de selectare a caracteristicilor, având ca rezultat caracteristici ce diferențiază o clasă de obiecte de altele.

Recunoșterea reprezintă procesul de clasificare a unui obiect într-o anumită categorie, pe baza informației rezultate în urma descrierii imaginii segmentate. Interpretarea presupune găsirea unei anumite semnificații pentru un ansamblu de obiecte recunoscute.

Baza de cunoștințe necesară pentru rezolvarea unei anumite probleme prin prelucrarea digitală de imagini este codificată în sistem sub forma unei baze de date. Cunoștințele pot fi de tip simplu, de exemplu detalierea unei regiuni dintr-o imagine, unde se presupune că este localizată informația de interes, limitându-se în acest fel procedura de căutare a respectivei informații. Pe lângă faptul că dirijează operațiile din fiecare modul de prelucrare, baza de cunoștințe are și rolul de a controla interacțiunea dintre diferite module. Distincția este făcută în figura prin săgețile cu vârf dublu dintre baza de cunoștințe și modulele de prelucrare, spre deosebire de săgețile cu un singur vârf, ce fac legătura între modulele de prelucrare propriu-zise.

Schema bloc subliniază și faptul că între modulele de prelucrare comunicarea se face în funcție de cunoașterea anterioară a ceea ce ar trebui să se obțină, ca rezultat final al prelucrării.

Vizualizarea imaginii rezultate în urma prelucrării se poate face după fiecare etapă a acesteia.

Prelucrarea imaginilor este un domeniu foarte complex și în continuă dezvoltare, făcându-se cercetări continue pentru realizarea unor algoritmi meniți să vină în întâmpinarea problemelor ce apar permanent.[5] 

Îmbunătațirea imaginilor video

Îmbunătățirea imaginilor este o sintagmă generală ce se referă la o clasă largă de operații al căror scop este mărirea detectabilității componentelor imaginii. Detectabilitatea componentelor este legată mai mult de percepția vizuală a unui observator uman decât de o analiză automată cantitativă. Percepția vizuală de referință este cea a unui expert uman în domeniul aplicației din care provine imaginea.

Scopul îmbunătățiri imaginilor video îl constituie accentuarea sau punerea în eviden a unor caracteristici coninute în imagine pentru a putea fi observate mai bine la studiul acestora.

Din punctul de vedere al metodelor utilizate, putem distinge mai multe tipuri de operații

de îmbunătățire:

operații punctuale, prin care se realizează o corespondență de tip “unu la unu” între vechea valoare a nivelului de gri și noua valoare a acestuia, pentru fiecare pixel al imaginii.

operații locale, prin care noua valoare a nivelului de gri într-un pixel este obținută din vechea valoare a pixelului repectiv și din valorile unor pixeli vecini pixelului considerat.

2.2.1 Operațiile punctuale

Acestea permit trecerea de la o nuan de gri u[0,L] la alt nuan v[0,L] , conform unei transformri v=f(u) , unde f : [0,L][0,L].

Accentuarea contrastului

Aceast transformare este recomandat imaginilor cu contrast sczut obinute de exemplu într-un mediu cu iluminare slab..

Fiind date dou limite a i b pentru care se cunosc valorile va = f(a)<a, respectiv

vb = f(b) < b, transformarea este:

u * va / a pentru 0 u a

f(u) = (u-a) / (b-a) * (vb – va ) + va pentru a < u b

(u-b) / (L-b) * (L – vb ) + vb pentru b < u L.

Observaie.

Valorile a i b se pot obine din histograma imaginii;

Parametrii va i vb precizeaz amplificarea contrastului;

Pentru va > a i vb < b se obine transformarea invers.

Binarizarea imaginilor

Aceast operaie are ca obiectiv obinerea unei imagini alb-negru dintr-o imagine care conine i alte nuane nedorite provenite din diverse motive tehnice. Aceste zgomote aprute în imagine vor fi eliminate prin studierea histogramei imagini.

0 (sau o valoare minim vmin ) pentru 0 u a

f(u) =

L pentru a< u L.

sau

Figura 2.2 Binarizarea imaginilor

2.2.2 Operații locale

Acestea țin cont de o anumită vecinătate a pixelului al carui nivel de gri va fi modificat. De obicei, vecinătățile cu care se lucrează sunt pătratice, de dimensiuni 3×3, 5×5, 7×7 de forma (2p+1)x(2p+1) centrate pe pixelul supus transformării.

În funcție de scopul lor operațiile locale se pot clasifica în două categorii:

operații care vizează "netezirea" imaginii sau a unor regiuni din aceasta, având drept scop reducerea zgomotului sau altor defecte ale imaginii;

operații care vizează detecția muchiilor, bazate pe derivatele fucției asociată imaginii;

Reducerea zgomotului

Aceast transformare se realizeaz prin limitarea culorilor imaginii, tiind c acestea se afl în domeniul [a,b]. Prin aceast metod se pot pune în eviden nuane greu vizibile. Operaia este un caz particular al celei precedente pentru va = 0 i vb = L. Transformarea se poate realiza conform unuia din cele dou grafice de mai jos:

0 (sau o valoare minim vmin ) pentru 0 u a

f(u) = (u-a) / (b-a) * L pentru a < u b

L pentru b < u L

sau

Figura 2.3 Reducerea zgomotului

Observaie.

Valorile a i b se pot fixa studiind histograma imaginii.

Creșterea uniformității regiunilor este însă asimilată eliminării unui eventual zgomot suprapus imaginii, operație denumită filtrare. Filtrarea liniarã se bazeazã pe înlocuirea nivelului de gri al unui pixel cu media ponderatã a valorilor pixelilor din vecinãtatea sa.

Operații care vizează detecția muchiilor

Muchiile, care caracterizeaz conturul obiectului, sunt utile în recunoaterea obiectelor. Muchiile sunt locaii de pixeli cu salturi mari de nuan de gri. În imaginile alb-negru, muchiile sunt formate din pixeli de culoare neagr cu cel puin un punct alb în vecintate.

Muchiile sunt adesea folosite în analiza unei imagini pentru detectarea frontierelor regiunilor. Luând în considerare că regiunile au o variație lentă a intensității imaginii, frontiera regiunii va fi formată din pixelii în care funcția intensitate are o variație abrupt. [6]

Figura 2.4 Profiluri tipice pentru muchii

Tipuri de imagini digitale

Toolbox-ul Image Processing conține o serie largă de funcții utile procesării imaginilor, imaginile fiind stocate în tablouri de valori numerice de tip uint8, uint16 sau double.

Există mai multe tipuri de imagini suportate de către mediul de lucru Matlab. Pentru o imagine de m * n pixeli, vom avea:

imagine binară (binary image), conține doar pixeli albi sau negri, reprezentații sub forma unor tablouri de valori 1 (alb) și 0 (negru) informațiile preluate vor fi stocate într-o matrice m*n;

imagine indexată (indexed image) , a caror pixeli conține valoarea indicelui culorii dintr-o paletă de culori. Paleta de culori este un tablou p*3, cele trei coloane reprezentând valorile RGB, unde p reprezintă numărul de nuanțe din paletă;

imagine în nuanțe de gri (grayscale), valorile tabloului imagine conține direct nuanța de gri, fără a fi nevoie de o paletă de culori;

imagine multiframe (multicadru), este tablou de imagini, reprezentat în Matlab ca tablouri 4-dimensionale, a patra dimensiune a tabloului fiind numarul cadrului;

imagine RGB (Red-Green-Blue) , fiecare pixel este reprezentat de trei valori, câte una pentru fiecare componentă: roșu, verde și respectiv albastru.

Termenul de imagine monocromă se referă la funcția de intensitate bidimensională f(x,y), unde x și y reprezintă coordonatele spațiale, iar f este funcția proporțională în fiecare punct (x,y),  proporțională cu strălucirea sau cu nivelul de gri al imaginii în acel punct.

O imagine digitală este o funcție f(x,y) care a fost discretizată atât în coordonate spațiale, cât și ca strălucire. Ea poate fi considerată ca o matrice la care indicele rândurilor și coloanelor identifică un punct din imagine, iar elementul corespunzător al matricii reprezintă nivelul de gri în punctul respectiv.[7]

Figura 2.5  Convenția de axe folosită în reprezentarea imaginilor

Exemplificarea operațiilor de îmbunătățire

Se achiziționează o imagine cu robotul folosit pentru planificarea și urmărirea traiectoriei. Se va folosi o imagine achiziționată în laborator. În continuare este prezentată implementare în Matlab a operațiilor de îmbunătațire a imaginilor video.

Pasul 1 reprezintă citirea și afișarea imaginii originale:

J= imread('robot2.jpg');

map=colormap(gray(128));

figure, imshow(J), title('Robotul A4WD1 imagine originala');

Figura 2.6 Robotul A4WD1 imagine originală

Pasul 2 reprezintă transformarea formatului imaginii într-o imagine grayscale.

I = ind2gray(J, map);

R= rgb2gray(J);

figure, imshow(I), title('Transformarea formatului imaginii intr-o imaginea grayscale')

Figura 2.7 Transformarea formatului imaginii intr-o imaginea grayscale

Pasul 3 reprezintă afișarea histogramei imaginii grayscale.

figure, imhist(R), title('Histograma imaginii')

Figura 2.8 Histograma imaginii

Histograma afișeaza intensitatea luminozitătii pe orizontală și cantitatea sa pe verticala. În total, histograma conține 256 niveluri de luminozitate de la 0 la 255 (de la negru pur, la alb pur), care pote fi arbitrar grupate în mai multe zone în funcție de intensitatea luminozitații.

Pasul 4 și Pasul 5 reprezintă calcularea nivelului de prag pentru segmentare și segmentarea imaginii

prag = graythresh(I);

BW = im2bw(I, prag);

str = sprintf('Segmentarea imaginii,imaginea binarizata', prag*255);

figure, imshow(BW), title(str);

Figura 2.9 Segmentarea imaginii,imaginea binarizată

Pasul 6 reprezintă eliminarea regiunilor mici folosind operația morfologică de deschidere se folosește ca obiect morfologic, un patrat de latura 5.

se = strel('square',5);

BWopen = imopen(BW,se);

figure, imshow(BWopen), title('Eliminarea regiunilor mici')

Figura 2.10 Eliminarea regiunilor mici

Pasul 7 reprezintă calcularea frontierelor regiunilor și afișarea acestora

BWperim = bwperim(BWopen, 8);

figure, imshow(BWperim), title('perimetrele regiunilor obtinute')

Figura 2.11 Perimetrele regiunilor obținute

Prezentarea camerei video

Informația vizuală a fost obținută cu ajutorul camerei Microsoft LifeCamVX-1000 produsă de Microsoft, camera a fost amplasată pe tavan pentru a oferi informați despre determinarea traictoriei și detectarea robotului.

Cu ajutorul camerei video se obțin în final imagini digitale care sunt apoi prelucrate pentru a extrage informația de care este nevoie. Acest proces de prelucrare este în general extrem de laborios: conversia din imagine tridimensională la o imagine bidimensională implică pierderea de informație. În plus, imaginile obținute au de obicei o rezoluție foarte scăzută precum și o gama relativ redusă de culori.

Specificațiile tehnice ale camerei web folosite sunt prezentate în continuare:

Calitate video superioară cu o rezoluție video și fotografică de 0,31 magapixeli adică 640 x 480 pixeli;

Captează până la 30 de cadre pe secundă, însemnând că imaginiile video sunt clare și fluente;

Cablul are o lungime de 1,8 m oferind mai mult spațiu de mișcare;

Conectivitatea se face prin portul USB;

Senzorul de imagine este de tip CMOS VGA;

Unghiul de vizibilitate este de 55°;

Focalizarea imaginilor este ajustată manual;

Temperatura de stocare și umiditatea este cuprinsă între -40°C și 60°C;

Temperatura de operare este cuprinsă între 0°C și 60°C;

Figura 2.12 Camera video Microsoft LifeCamVX-1000

Pentru determinarea exactă a poziției robotului este nevoie de achiziția imaginilor la o rezoluție cât mai bună. Deoarece poziția robotului este determinată în pixeli, rezoluția determină eroarea de măsurare care poate fi mai mică sau mai mare în funcție de rezoluție.

Timpul de raspuns este un alt indice important care reprezintă timpul scurs din momentul în care se preia o imagine și pană când se procesează pentru a se obține informația “în ce poziție” este robotul.

Pentru o calitate îmbunătațită a imaginilor un factor important este iluminarea corespunzătoare a spațiului de activitate din care se preiau imaginile. [8]

Procedura de achiziție a imaginilor

Atunci când vorbim de prelucrare video, sursa imaginilor este mai mult sau mai puțin importantă, în schimb în aplicații din domeniul vederii robotice achiziția în timp real este de importanță majoră.

Pentru realizarea achiziției, MATLAB oferă facilitățile toolbox-ului Image Acquisition, acesta fiind un pachet de instrumente ce implementează o abordare orientată pe obiecte. Toolbox-ul conține o serie de componente numite adaptoare hardware pentru a realiza conexiunea cu dispozitivele fizice prin intermediul driverelor acestora. Legătura dintre MATLAB și diferitele dispozitive este descrisă în următoarea figură:

Figura 2.13 Achiziția imaginilor de la un dispozitiv extern, în MATLAB.

MATLAB permite lucrul cu majoritatea dispozitivelor de captură ce pot fi conectate la computer, acestea fiind recunoscute instantaneu odată conectate la calculator. Utilizând funcția imaqhwinfo, poate fi lansată o aplicație cu interfață în mod text interactivă ce permite explorarea și configurarea tuturor dispozitivelor de achiziție conectate la calculator.

Primul pas în achiziția imaginilor, în MATLAB, constă în inițializarea și configurarea parametrilor camerelor. Pentru inițializare, se utilizează:

cam=videoinput('winvideo', 1, 'RGB24_320x240');

, unde winvideo este denumirea adaptorului, cel de-al doilea parametru indicând ID-ul dispozitivului, reprezentat de un număr, funcția returnând un obiect de dimensiune 1×1. Pentru a se putea opera ulterior asupra unor caracteristici precum luminozitatea, contrastul, trebuie mai întâi găsită sursa video asociată obiectului cam:

src=getselectedsource(cam);

Înainte de inițializare, se poate opta pentru ajustarea diferiților parametrii caracteristici, precum compensarea luminii de fundal, modalitatea de expunere sau contrastul, utilizând funcția set, prin care se selectează atributul dorit și valoarea dorită pentru acesta.

set(cam,΄FramesPerTrigger΄,1);

΄FramesPerTrigger΄ decide câte frame+uri să fie achiziționate la execuția funcției ΄trigger΄.

Dacă se dorește achiziția imaginilor în mod manual, atunci când aceasta este cerută de algoritm, atunci se va utiliza funcția următoare pentru a declanșa camera la cere:

triggerconfig(cam2,'manual');

Inițializarea camerelor, odată ce acestea au fost aduse la parametrii optimi se realizează cu funcția:

start(cam);

Pentru achiziția manuală de imagini, se utilizează liniile de cod:

trigger(cam);

a2 = getdata(vid,1);

, unde a2 este o matrice tridimensională ce conține valorile fiecărui pixel al imaginii capturate reprezentată în modelul RGB, putând fi acum pre-procesată.

Ștergerea intrării video este necesară la finalizarea achiziției de imagine, pentru a evita încărcarea buffer-ului.

Capitolul III. Descrierea robotului și a traiectoriei

Mecanica robotului

Robotul A4WD1 Combo este comandat cu ajutorul unui modul Boat Board II echipat cu un microcontroller Pro BasicATOM 28M care are 32 de K de memorie flash pentru programele folosite, 2K de ram, care reprezintă suficient spațiu pentru variabilele și este programabil în Basic, C sau ASM.

Acesta este un robot robust din aluminiu produs de firma Lynxmotion, cu șasiul modificabil pentru diferite experiente pe care dorim să le realizăm.Prin folosirea unor cauciucuri de tip “camion” i se oferă o aderență foarte bună.

În figura este prezentat robotul A4WD1 Combo în starea asamblat.

Figura 3.1 Robotul A4WD1 Combo

Robotul A4WD1 Combo este o platformă robotică eficientă pentru dezvoltarea de aplicații didactice potrivite pentru înțelegerea controlării unui proces utilizând un microcontroller. Toate microcontrolerele au un număr oarecare de intrări și ieșiri numerice organizate sub forma unor porturi I/O; conexiunile exterioare sunt bidirecționale sau unidirecționale, iar unele sunt multifuncționale.

Datele tehnici ale robotului sunt prezentate in tabelul de mai jos:

Tabelul 3.1 Datele tehnice ale robotului A4WD1 Combo

În figura de mai jos este prezentată schema bloc de comadă a robotului.

Figura 3.2 Schema bloc a robotului A4WD1 Combo

Porturile seriale sunt destinate transferului de date de mare viteză cu unele periferice specializate (sisteme de afișare, convertoare analog-numerice, etc.) sau care permit conectarea într-o rețea de comunicație.

Interfața serială asincromă a fost proiectată ca un port de comunicație de la sistem la sistem. Asincron se traduce prin faptul că nu exista nici o sincronizare sau semnal de ceas, astfel incât caracterele pot fi transmise la orice interval de timp.

Fiecare caracter transmis prin intermediul unei conexiuni seriale este încadrat de un semnal standard de inceput și de sfarșit. Un singur bit 0, denumit bit de start, precedă fiecare caracter, informând sistemul receptor că urmatorii 8 biți constituie un octet de date.

Termenul serial se referă la date transmise pe un singur fir, biții plasându-se intr-o serie pe măsură ce sunt transmiși. Sunt disponibile porturi seriale suplimentare pentru PC se pot conecta la o gamă largă de dispozitive, precum modemuri, imprimante, alte calculatoare, cititoare de cod de bare,roboți. In fond, oricare are nevoie de o conexiune bidirectionala la PC folosește portul serial standard industrial RS-232C. Acest dispozitiv permite transferul de date intre dispozitive altfel incompatibile.

Robotul este conectat la PC printr-un port serial sau un cablu USB cu serială, pentru programarea memoriei interne a microcontrolerului. [9]

Figura 3.3 Portul serial

Modelul cinematic al robotului

În cadrul acestei analize, considerăm robotul ca un corp rigid cu roți, deplasându-se pe un teren plat. Sunt necesari 3 parametri pentru a poziționa corpul robotului în planul respectiv: doi pentru a determina poziția acestuia în raport cu originea sistemului de axe atașat planului, iar al treilea pentru determinarea orientării acestui corp în raport cu axa verticală, perpendiculară pe plan. Există mișcări suplimentare datorate rotației roților în jurul axelor proprii, respective cuplelor cinematice de orientare.

Robotul care face obiectul lucrării este un robot cu acționare diferențială. Sistemele diferențiale sunt printre cele mai simple sisteme de locomoție întâlnite la un robot mobil. Un sistem diferențial este alcătuit din două roți montate pe un ax comun controlate prin două motoare separate. Utilizarea de viteze unghiulare diferite pentru cele 2 roți conduce la schimbarea direcției de mers.

Figura 3.4 Model cinematic sistem de locomoție diferențial

Cinematica se ocupă de relațiile între parametrii de control și comportamentul sistemului în spațiul stărilor. În cadrul unui sistem de locomoție diferențial, robotul trebuie să se rotească în jurul unui punct care se află pe axa comună a celor două roți motoare. Prin modificarea vitezelor celor două roți, traiectoria poate fi modificată. Vitezele celor două roți respectă următoarele relații:

unde,

vs reprezintă viteza roții din partea stângă,

vd viteza roții din partea dreaptă,

R reprezintă distanța dintre mijlocul axei celor două roți și centrul de curbură CC,

ω viteza unghiulară,

l distanța între cele două roți.

Unghiul de rotație este reprezentat de θ. Rezolvarea sistemului de ecuații de mai sus conduce la următoarele soluții:

Un caz special îl constituie vs=vd. Distanța R devine în acest caz infinită, deci robotul se va mișca în linie dreaptă. Dacă vs= – vd, distanța R devine 0, iar robotul se va mișca pe loc în jurul mijlocului axei l. Pentru orice alte valoari ale lui vs și vd, robotul se va roti pe un cerc de rază R față de centrul de curbură.

O multitudine de puncte diferite de punctul de start se pot atinge prin alegerea vitezelor vs și vd. Determinarea unui punct care poate fi atins de robot prin manipularea parametrilor de control poarta numele de ecuațiile cinematice directe ale robotului.

Ecuația de mai sus descrie mișcarea de rotație a unui robot la o distanță R dintre mijlocul axei celor două roți și centrul de curbură CC cu viteza unghiulară ω.

Prin integrarea ecuației de mai sus, pornind de la un set de condiții inițiale (x0, y0, θ0), se poate determina poziția robotului la un moment timp t, pe baza parametrilor de control vd(t) și vs (t).

Determinarea legilor de control a vitezelor vs și vd pentru a ajunge într- un anumit punct stabilit, poartă numele de ecuațiile cinematice inverse ale robotului. Datorită faptului că rezolvarea sistemului de ecuații de mai sus este anevoioasă, se propun două cazuri speciale de mișcare a robotului cu sistem de locomoție diferențial.

În primul caz, dacă se egalează vs cu vd = v, ecuația de mai sus devine:

În al doilea caz, dacă se alege vs = -vd = v, ecuația devine:

Astfel, pentru a deplasa un robot din (xs, ys, θs) în (xg, yg, θg), cu θg ≠ θs, se poate folosi legea a doua de control (vs = -vd) până în momentul în care θg = θs, urmând apoi a deplasa robotul folosind prima lege de control (vs = vd). [10]

Figura 3.5 Deplasare robot

Planificarea traiectoriei

În multe cazuri funcția principală a unui robot este planificarea. Ideal noi îi specificăm robotului doar un scop care trebuie atins, iar robotul are la dispoziție o mulțime de mișcări elementare. Robotul trebuie să pună cap la cap o serie de astfel de mișcări care conduc la realizarea scopului.

Planificarea se poate face la nivele diferite și poate fi extrem de sofisticată dacă avem de-a face cu un mediu în schimbare și în care avem constrângeri dinamice importante.

Cel mai simplu tip de planificare trebuie doar să decidă ordinea în care o suită de operații trebuie efectuate pentru a atinge un anumit scop.

Găsirea planurilor pentru a transforma o configurație a mediului în alta este o problemă dificilă și mai complicat este când ai de-a face cu un spațiu continuu, și nu doar cu un număr finit de configurații posibile.

Asta se întâmplă când vrei să planifici de pildă mișcarea. Dacă iei la socoteală și faptul că robotul are inerție, viteză, masă, accelerație, poate are articulații inerte , problema deplasării într-un mediu cu obstacole de forme variate este și mai complicată.

Dificultatea planificării mișcării crește de asemenea foarte rapid cu numărul de grade de libertate al robotului, un robot în formă de șarpe, cu multe articulații, poate ajunge în foarte multe feluri dintr-un loc într-altul.

Robotul fiind o mașină cu abilități în mișcare sau de manipulare una din cele mai importante probleme de rezolvat este de a îi planifica mișcările, ceea ce implică modelarea spațiului de lucru, cu obstacolele pe care le conține, și a robotului, ca entitate de formă complexă și variabilă.

În robotica mobilă, planificarea traiectoriei globale într-o scenă de operare complectă sau incomplectă cunoscută, reprezintă unul dintre aspectele esențiale pentru asigurarea funcționalității dorite.

Există multe metode de planificare care pot fi împărțite în trei categorii principale:

metoda maparii drumului,

descompunerea celulelor,

metoda campului de potențial.

Abordarea metodei maparii drumului se folosește în cazul în care zona liberă a obstacolelor este modelată ca o rețea de linii.

Descompunere celulelor se folosește în cazul în care zona liberă a obstacolelor este împărțită în celule care sunt interconectate între ele.

Metodele câmpului de potențial folosește domeniul de utilizare a forțelor care acționează asupra forțelor imaginare a robotului.

O traiectorie este o cale, care reprezintă o funcție explicită de timp. Pentru a avea mișcare liniară, traiectoria trebuie să fie de două ori derivabilă pentru a oferi o viteză și o accelerație continuă.

Tehnici simple de planificare a traictoriei presupun că robotul este omnidirecțional și este capabil să execute căi impecabile. Cu toate acestea, în lumea reală, aceste ipoteze nu sunt de multe ori valabile.[11]

Lucrări anterioare în planificarea traiectoriei adaugă constrângerile simplificate cinematic pentru a planifica o traiectorie fezabilă. Louste [11] utilizează raza minimă de cotitură și dimensiunile unui robot pentru a planifica o traiectorie.

Calea a fost împărțită în segmente drepte și curbe, precum și viteza au fost planificate în mod individual, pentru fiecare segment.

Pentru formularea problemei de bază se are în vedere cazul elementar, respectiv considerarea unui singur robot mobil într-o scenă de operare cu mai multe obstacole fixe. Se vor neglija aspectele dinamice ale deplasării robotului și parțial cele cinematice. Unica restricție constă în determinarea unei traiectorii fără coliziuni cu obstacolele.

Figura 3.6 Robotul mobil intr-o scenă de operare cu mai multe obstacole fixe

Capitolul IV. Controlul robotului rezultate experimentale

Platforma Basic Micro Pro

BasicATOM Pro este un microcontroler autonom, un calculator cu circuite de memorie și de sprijin într-un singur pachet. Microcontroller BasicATOM Pro este programat cu ajutorul compilatorului Basic Micro Pro, care ruleaza pe un PC. Această versiune specială de bază este foarte puternică și ușor de utilizat, oferind instrumente de programare și depanare.

Figura 4.1 Microcontrolerul BasicATOM Pro

Acesta include următoarele facilități de sprijin:

un microprocesor pentru a rula programul;

un incarcator frontal pe program pentru a instala programe dezvoltate folosind compilator Basic ;

32K sau 56K bytes ROM program flash, pentru programele de depozitare. Flash-ul poate fi șters și rescris de mai multe ori;

2K sau 4K de RAM pentru calcule și depozitul de variabile.

Basic Micro Pro ne sprijina în procesul de realizare a aplicației. Astfel, el permite:

crearea unei noi aplicații (manual sau cu ajutorul Application Wizard);

 testarea aplicației și corectarea eventualelor erori;

compilarea și obținerea programului executabil, distribuirea aplicatiei (cu utilitarul Package and Deployment Wizard) [12]

Mai multe informații despre modul de utilizare a compilatorului, este inclus în fișierul de ajutor on-line http://www.basicmicro.com.

Pentru a intra în mediul de lucru faceți dublu clic pe pictograma Atom ,apoi faceți clic pe File | New pentru a deschide dialogul CreateFile. Aceasta are valoarea implicită a fișierelor de tip BAS, dar poate fi setat pentru C / C + + fișiere, asm sau Txt. După alegerea directorului de a crea fișierul, tastați numele fișierului pe care doriți să îl utilizați.

Este utilizat fișierul "robot.bas" cel folosit pentru a programa robotul.

Figura 4.2 Interfața mediului de lucru BASIC

Structura programului

Codul sursă pentru dezvoltarea aplicațiilor Basic Micro Pro este implementat în module. Un modul poate conține declarații de variabile sau definiții de proceduri și funcții.

În Basic Micro Pro există trei tipuri de module: 

module standard (.BAS);

module atașate formelor (. FRM) care conțin proceduri de tratare a evenimentelor declanșate de forme sau controale ale acestora;

module de definire de clase (. CLS) pentru crearea de obiecte. 

Declararea de variabile în Basic Micro Pro este folosită pentru a stoca valori temporare în timp ce rulează programul. La fel ca la majoritatea compilatoarelor cu trebuie definite variabilele înainte de a le utiliza. Variabilele sunt întotdeauna stocate în memoria RAM de utilizare acestea se declară la începutul programului la fel ca și pinii pentru fiecare componentă conectată la Basic

'Declarare pinii

'Pin 16 Jumper to battery (VS)

'Pin 17 Left GP2D12 Sensor (Right facing sensor)

'Pin 18 Right GP2D12 Sensor (Left facing sensor)

'Pin 19 Rear GP2D12 Sensor

'Pin 0 Left Sabertooth channel.

'Pin 1 Right Sabertooth channel.

'Pin 9 Speaker.

΄Declarare variabile

temp var byte

filter var word(10)

ir_right var word

ir_left var word

ir_rear var word

LSpeed var word

RSpeed var word

contor var word

Declararea constantelor este definită prin cuvântul cheie CON. Tipul numeric este setat automat de compilator pe baza valorii de intrare.

minspeed con 1750

maxspeed con 1150

Declararea unui tabel poate fi utilizat pentru a stoca un număr de constante. Tabelele urmeză aceleași reguli de stocare ca variabile și constante.

Pot fii mai multe tipuri de tabele:

ByteTable (8 biți de date)

WordTable (16 biți de date)

LongTable (32 biți de date)

FloatTable (virgulă mobilă de date)

Declararea vitezelor pentru roata din stângă vL și roata din dreată vR

vL WordTable 65,65,65,65,65,65,65,65,65,65,66,67,69,70,71,71,71,70,69,69,68,67,67,67,67,67,67,67,66,66,65,63,61,59,56,53,49,45,41,36,31, 26, 21,16,12 10, 9,10,13,17, 22,27, 32,37,42,47, 51, 54, 57, 59, 61, 63, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 67, 69,70, 71, 71 71,70, 69, 68, 68, 67, 67, 67, 67, 67, 67, 67, 66, 65, 64,63, 61, 59,56, 53,0,0

vR WordTable 62,60,58,55,52,48,44,39,34,29,24,19,14,11,9,9,11,14,19,24,29,34,39,44,48,52,55,58,60,62,64,65,65,65,65,65,65,65,65,65,65,66,67,68,69,71,71,71,71,70,69,68,67,67,67,67,67,67,67,67,66,65,64,62,60,57,54,51,47,43,38,33,28,23,18,14,11,9, 9, 11,15, 20,25, 30, 35,40, 45, 49, 53, 56, 58, 61, 62, 64, 65, 65, 65, 65,65,0 ,0

Generarea unui puls pe pin-ul specificat se face cu comanda pulsout. Un puls va fi generat, în funcție de starea inițială a pivotului. Pulsout comută starea pivotului de ridicat în scăzut de două ori pentru a genera un puls. Odata ce pulsul este emis, codul pin va rămâne în starea finală care este la fel ca starea inițială,până la alte comenzi care afectează pini.

pulsout 0,(LSpeed*2)

pulsout 1,(RSpeed*2)

Comanda de intrare-ieșire ADIN configurează hardware convertorului Analog / Digital și stochează valoarea rezultată într-o variabilă.

adin 17, filter(temp)

adin 18, filter(temp)

adin 19, filter(temp)

Pini analog utilizați pentru intrarile Analog / Digitale sunt P17, ​​P18 și P19 care sunt apoi scrise în variabila filter iar aceasta stochează valoarea returnată de conversie.

sensor_check

for temp = 0 to 9

Acest lucru va crea o variabilă senzor care indică spre aceeași locație ram ca variabila temp acest lucru formează o buclă între senzor și variabila temp, economisindu-se astfel un octet de memorie RAM.

Această comandă trimite ieșire serială , printr-un anumit I / O pin. SEROUT poate fi utilizat în două moduri:

cu control de flux

serout tpin\fpin,baudmode,{timeout,tlabel,}[OutputData]

cu intervale de timp între biți.

serout tpin,baudmode,{pace,}[OutputData]

Tpin este o variabilă care specifică pini I / O, prin care datele de serie sunt trimise. Acest pin va comuta la modul de ieșire și să rămână în această stare până după încheierea instrucțiunii.

Fpin este o variabilă opțională sau constantă care specifică pini I / O, care vor fi folosiți pentru controlul fluxului. Acest pin va comuta la modul de introducere și rămâne în această stare până după încheierea instrucțiunii.

Baudmode este o variabilă pe 16 biți care specifică momentul de serie și de configurare.

Pace este o variabilă opțională căruia îi spune serout câte milisecunde să aștepte între biți de transmiterea. Dacă ritmul este omis, nu va fi nici o întârziere între biți.

Timeout este un optional de 16 biți variabil care specifică fluxul de control al timeout în milisecunde. În cazul în care datele sunt întrerupte de către aparatul de recepție pentru mai mult timp acesta sare la tlabel.

OutputData este o listă de variabile si modificatori căruia îi spune serout ce să facă cu datele de ieșire.

Comanda de ieșire folosită este cu control de flux:

serout s_out,38400,["ir_right – ", dec ir_right, " ir_left – ", dec ir_left, " ir_rear – ", dec ir_rear, "LSpeed – ", dec LSpeed, " RSpeed – ", dec RSpeed, 13]

Sistemul de reglare Fuzzy a robotului

În proiectarea sistemelor de reglare automată, un algoritm competitiv ar trebui să valorifice orice fel de informație legată de procesul supus automatizării. Pentru o largă categorie de probleme, o bună parte din informație este deținută de expertul uman. Această informație de obicei nu este o informație exactă, pentru descrierea acesteia dezvoltându-se teoria sistemelor cu procesare fuzzy a informației. Apare astfel necesară încorporarea informație lingvistice de la expertul uman într-o manieră sistemică astfel încât sistemul rezultat să poată fi analizat din punct de vedere al performanțelor.

In proiectarea legilor de comandă trebuie să se țină deasemenea cont și de un alt tip de informație și anume informația numerică obținută de la senzori sau conform cu legile fizice care descriu procesul. Această informație este de tip crisp. Între aceste două tipuri de informație există mari diferențe. astfel informație numerică este supusă legilor fizicii sau axiomelor matematicii, inexistente pentru informația lingvistică. Altfel spus legile care guvernează informația lingvistică sunt fundamental diferite de legile care guvernează informația numerică. Există două lumi: lumea fizică și lumea umană, și cum interacțiunea om-mașină este în continuă creștere tot mai multe sisteme inginerești aparțin intersecției acestor două lumi. Scopul sistemelor adaptive fuzzy este tocmai modelarea acestei informații hibride lingvistico-numerice. În principiu un astfel de sistem este un sistem logic fuzzy înzestrat cu un algoritm de antrenare, algoritm care are rolul de a ajusta parametrii sistemului fuzzy pe baza perechilor de intrare-ieșire obținute prin măsurători efectuate pe proces.

Conceptual sistemele fuzzy adaptive combină informația lingvistică cu informația numerică astfel, deoarece sistemul fuzzy e constituit în principiu dintr-un set de reguli if-then, informația lingvistică va fi direct încorporată în baza de reguli, pe de altă parte informația numerică conținută de perechile de intrare-ieșire este încorporată antrenând sistemul conform datelor măsurate de la proces, conform algoritmului de antrenare. Sistemul adaptiv fuzzy poate fi văzut ca un sistem logic fuzzy ale cărui set de reguli sunt generate automat prin antrenare conform setului de antrenare.

Abordarea controlului tradițional necesită modelarea realitații fizice. Trei metode pot fi folosite în descrierea unui sistem:

metoda experimentală: – prin experimente se determină reacția procesului la diferite intrari și se realizează un tabel de intrari și ieșiri. Grafic, metoda este echivalentă cu trasarea unor puncte discrete ale caracteristicii de intrare-iesire, folosind axele orizontale pentru intrare și cele verticale pentru ieșire. Există câteva dezavantaje: echipamentul pentru acest proces poate să nu fie disponibil pentru experimentare, procedura ar fi, foarte costisitoare și pentru un număr mare al mărimilor de intrare nu este practică măsurarea ieșirilor și interpolarea acestora.

metoda matematică: în inginerie se lucreaza dupa un model matematic ideal al procesului controlat, de obicei cu ecuații diferențiale. Pentru a face metodele matematice destul de simple, sunt făcute anumite presupuneri, una dintre ele fiind aceea că procesul este liniar. Următoarele probleme apar în dezvoltarea unei descrieri realistice și pline de înțeles a unui proces industrial: o înțelegere incompletă a fenomenului, valori inexacte ale diferiților parametri, complexitatea metodei.

metoda euristică: această metodă constă în modelarea și înțelegerea în concordanță cu experiența anterioara. O regula euristică este o implicație logica de forma: DACA <condiție> ATUNCI <consecința>, sau in situația tipică de control: DACA<condiție> ATUNCI<acțiune>. Reguliile asociază concluziile cu condițiile. Prin urmare, metoda euristică este în realitate similară cu metoda experimentală a construirii unui tabel de intrări și ieșiri corespunzătoare unde în loc sa avem valori numerice fixe de intrare si variabile de ieșire, se folosesc valori fuzzy: DACA tensiunea de intrare =Mare ATUNCI tensiune de iesire = Medie. Avantajele metodei euristice sunt: nu este necesara presupunerea liniarității și regulile euristice pot fi integrate în strategiile de control ale operatorilor umani.

Principial, în literatura de specialitate se consideră pentru un sistem cu procesarea fuzzy a informației următoarea structură:

Figura 4.3 Procesarea fuzzy a informației

În procesarea fuzzy a informației sunt cuprinse modulele:

Fuzzificarea care reprezintă interfața ce transformă valorile tranșante ale variabilelor de intrare ( x ) înmulțimi fuzzy;

Baza de cunoștințe furnizează modulului inferență informațiile necesare:

mulțimile fuzzy pentru variabilele de intrare ( x );

mulțimile fuzzy pentru variabilele de ieșire ( y );

baza de reguli fuzzy.

Inferență reprezintă blocul care determină valorile fuzzy ale variabilelor de ieșire (y) folosind inferența fuzzy;

Defuzzificare reprezintă interfața ce transformă valorile fuzzy ale variabilelor de ieșire în valori tranșante.

Metoda de inferență mamdani este cea mai des folosită în metodologia fuzzy. Această

metodă a fost cea dintâi metodă de control utilizând logică fuzzy. A fost propusă în 1975 de către Ebrahim Mamdani într-o încercare de a controla legătura dintre un motor pe bază de abur și un boiler prin sintetizarea unei legi de comandă cu reguli lingvistice obținute pe baza unor experimente. Efortul lui Mamdani a fost bazat pe teoriile lui Lotfi Zadeh privitoare la algoritmii fuzzy pentru sisteme complexe și procese decizionale. Structura unui sistem cu logică fuzzy de tip Mamdani este prezentat în continuare.

Figura 4.4 Structura unui sistem cu logică fuzzy Mamdani

Inferența de tip Mamdani, presupune că funcțiile de ieșire să fie mulțimi fuzzy. După finalizarea procesului de agregare, există o mulțime fuzzy pentru fiecare variabilă de ieșire care necesită defuzzificare. Este posibil, și în multe cazuri mult mai eficient, să folosim un singur vârf ca ieșire a funcțiilor membre decât un set de mulțimi fuzzy distribuite. Acest tip de ieșire poartă numele de funcții membre de ieșire de tip “singleton”, și poate fi gândit că un set fuzzy predefuzzificat. Ea îmbunătățește eficiența procesului de defuzzificare, deoarece simplifică modul de calcul cerut de metoda mult mai generală Mamdani, care determină centrul de greutate a unei funcții bidimensionale. De multe ori în locul integrării funcției bidimensionale pentru a determina central de greutate, se poate folosi o medie ponderată pentru câteva puncte date.[13]

Figura 4.5 Interpretarea diagramei fuzzy de inferența de tip Mamdani

Utilizarea Fuzzy Logic Toolbox

Fuzzy Logic Toolbox extinde mediul tehnic de calcul Matlab cu instrumente pentru proiectarea sistemelor bazate pe logică fuzzy. Interfața grafică prezintă pașii de urmat în proiectarea sistemelor fuzzy. Sunt puse la dispoziție funcții pentru numeroase metode cu logică fuzzy comune, inclusiv gruparea fuzzy ori învățarea neurofuzzy adaptivă. Toolboxul permite modelarea comportamentală a sistemelor logice complexe folosind reguli logice simple, iar apoi implementarea acestor reguli într-un sistem de inferență fuzzy. Acest toolbox poate fi folosit ca un motor de inferență de sine stătător. Alternativ, se pot folosi blocuri de inferență fuzzy în Simulink, iar simularea sistemului fuzzy se face folosind un model compresiv al întregului sistem dinamic.[14]

Construirea sistemului de inferență fuzzy a robotului

Există o mare diversitate de moduri în care se pot folosi sisteme de inferența fuzzy in comanda roboților, atât în privința locului în care se aplică în schema de conducere, cât și în privința formei sistemelor de inferență.

Sistemele de inferență fuzzy sunt folosite, la:

generarea traiectoriei,

definirea modelului robotului,

inlocuirea regulatoarelor clasice sau in combinatie cu acestea.

În aceasta lucrare se arată că se pot realiza regulatoare fuzzy cu funcționare similara celor clasice de tipul PID, PI,PD. Se subliniază importanța ajustării parametrilor regulatorului fuzzy. Fata de regulatoarele clasice, acesta se pot ajusta într-o maniera mult mai convenabilă. Din cauza faptului că o mare parte din sistemele de inferența fuzzy au fost implementate pe baza cunostințelor formale adică funcțiile de aparteneță și setul de reguli sunt definite dupa simțul tehnic al specialistului, nu exista garanția unei funcționari sigure sau a stabilitații sistemului în condiții neprevazute.

O serie de cercetări în domeniu au ca scop elaborarea unor metodologii de sinteză și analiză a sistemelor de inferență fuzzy în domeniul roboticii sau într-un domeniu mai larg al sistemelor de reglare automata, și aplicabile în robotică.

De asemenea există preocupări privind elaborarea unor modele fuzzy a roboților care să înlocuiască modelele analitice, care necesită calcule îndelungate. Multe dintre cercetările în domeniu încearcă o abordare sistematică a proiectării sistemelor de inferență fuzzy elaborând metodologii de proiectare care să elimine incertitudinile în alegerea funcțiilor de apartenență și a setului de reguli.

Sistemul de inferență fuzzy tipic, presupune o structură de reguli predefinite de utilizator, acesta încearcă să interpreteze caracteristicile variabilelor modelului. În realizarea unui sistem de inferență fuzzy pentru modelarea unui proces la care exista date de intrare și ieșire determinate experimental, acestea se pot utiliza pentru generarea automată a functiilor de apartenență, deci implicit pentru identificarea sistemului.

Sistemul de inferență fuzzy proiectat pentru problema urmăriri traiectoriei de către un robot mobil a pornit de la modelul cinematic al robotului acesta fiind un sistem MIMO și s-a proiectat un controller cu doua ieșiri (derivate vitezei de translatie și viteza rotire) și trei intrari (distanța,derivata distanței și eroareaθ) .

Figura 4.6 Sistemul de inferență fuzzy proiectat pentru problema urmăriri traictoriei

Editorul pentru funcțiile de apartenență permite afișarea și editarea variabilelor de intrare și de ieșire precum și selecția a diferite tipuri de funcții de apartenență pentru fiecare variabilă lingvistică.

Figura 4.7 Fuzzificarea distanței

Figura 4.8 Fuzzificarea derivatei distanței

Figura 4.9 Fuzzificarea erori de orientare

Figura 4.10 Defuzzificarea comenzii de adaptare a vitezei de translație

Figura 4.11 Defuzzificarea comenzii de corecție a unghiului de orientare

Pornind de la comportamentul uman, adică de la ce ar face un om dacă ar fi in locul robotului s-a definit un set de 11 reguli pentru modulul de inferență al regulatorului fuzzy. Regulile dau în mod firesc prioritate corectări erori de orientare comparative cu eroarea de distanță. Aceasta este atitudinea firească a unui om. Atunci când aflându-se în repaus dorește să ajungă într-un anumit punct întâi se va orienta către acesta și abia după aceea va începe să se deplaseze.

În cazul robotului mobil, prin implementarea unui comportament care să corecteze întâi eroarea de orientare și abia apoi să acorde atenție și erorii de poziție, se vor elimina evoluții în care robotul se deplaseze cu viteză mare pe o direcție greșită. Setul de 11 reguli definite este prezentat în figura 4.12.

În figura 4.13 se prezintă și o imagine din modul de verificare a modului de activare a regulilor. Acest modul a permis o primă verificare a faptului că regulatorul fuzzy implementează comportamentul dorit.

Figura 4.12 Baza de reguli a regulatorului Fuzzy

Figura 4.13 Structura bazei de reguli a regulatorului Fuzzy

În figura 4.14 este prezentată suprafața ce realizează legătura intre mărimile de intrare distanță și derivata distanței și mărimea de ieșire derivata vitezei. Toolboxul de fuzzy din Matlab permite vizualizarea pe rănd a câte unei ieșiri în funcție de maxim două intrări.

Figura 4.14 Suprafața regulatorului Fuzzy

Validarea regulatorului fuzzy prin simulare

Regulatorul Fuzzy proiectat în paragraful anterior înainte de a fi pus să lucreze cu robotul real a fost validat prin simulare în Matlab. Pentru aceasta s-a implementat schema Simulink din figura 4.15. Se observă că regulatorul Fuzzy are trei intrări distanța, derivata distanței și eroarea de orientare iar la ieșire oferă derivata de viteză și unghiul de orientare. Derivata vitezei cu cât se dorește să se modifice viteza este integrată și se obține viteza efectivă a robotului. Prin modificările de reprezentare precizate în paragraful 3.2 se trece de la viteza liniară și viteză de rotație la comenzi pentru roata stângă și roata dreaptă acestea reprezintă intrări pentru modelul cinematic al robotului dat în ecuația (4). Ca intrare de referință s-a ales o sinusoidă deoarece în aplicațiile reale robotul trebuie să ocolească și obstacole iar cel mai adesea traiectoriile nu vor fii fragmente de dreaptă ci vor fii traiectori curbe ce pot fi aproximate prin sinusoide. Prin execuția schemei Simulink s-au obținut traiectoriile prezentate în figurile 4.16, 4.17 și 4.18.

Figura 4.15 Schema Simulink cu referință dupa o sinusoida

În figura 4.16 este prezentată evoluția robotului pe direcția x, ea arată că robotul reușește să urmărească direcția perfect liniară impusă prin ecuțiile modelului cinematic.

Figura 4.16. Poziția x inițială și cea rezultată

În figura 4.17 este prezentată evoluția robotului pe direcția y cu albastru este prezentată poziția dorită pe y iar cu roșu poziția simulată a robotului.

Figura 4.17 Poziția y inițială și cea rezultată

În figura 4.18 se poate observa deasemenea si evoluția orientări robotului pe durata celor 70 de secunde.

Figura4.18 Evoluția erorii teta

În figurile următoare se prezintă evoluția erori de distanță și a erori de orientare. Se poate observa din acestea că după un scurt regim tranzitoriu de cateva secunde eroare de distanța și eroarea de orientare ajung în zero.

Figura4.19 Evoluția distanței

Figura4.20 Evoluția erorii de orientare

Validarea regulatorului pe sistemul dorit

Având în vedere rezultatele bune obținute în etapa de validare s-a trecut la o a doua validare a robotului, deoarece nu a fost disponibil un modul de comunicare Wireless cu robotul utilizat s-a încercat o validare prin simulare în care referința de poziție și poziția curentă a robotului sa fie obținută din 2 frame-uri succesive dintr-o înregistrare video sau din execuția în timp real a aplicației în Matlab. Pentru aceasta în schema Simulink din figura 4.21 a fost înlocuit blocul de generare a referinței dupa o sinusoida cu funcția Matlab robotX prezentată în anexă, aceasta preia din imaginea video poziția robotului și o afișează intr-o fereastră pe ecranul calculatorului.

Figura 4.21 Schema Simulink cu referință înregistrare video

Prin execuția schemei Simulink s-au obținut traiectoriile prezentate în figurile 4.22, 4.23 și 4.24.

Figura4.22 Evoluția pe x a robotului

Figura4.23 Evoluția pe y a robotului

Figura4.24 Evoluția erorii teta a robotului

Figura4.25 Evoluția vitezei robotului

Concluzii

În cadrul lucrării de față s-a realizat o prezentare a robotului A4WD1 Combo folosit în analiza problemei implementării unei legi de comandă pentru un robot mobil și urmărirea traictoriei impuse. Robotul este echipat cu 4 roți motoare, cele de pe aceeași parte fiind acționate sicron, acesta conține o placa de comandă dotată cu un microcontroler BasicATOM Pro programabilă cu ajutorul compilatorului Basic Micro. Robotul A4WD1 dispune de un port de comunicație prin serială și pentru navigare de senzorii Sharp de proximitate. Pentru comunicarea cu un computer se folosește interfața serial RS-232, care poate fi folosit la transmiterea comenzilor de mișcare precum vitezele pentru roata stângă respective roata dreaptă.

Pentru rezolvarea problemei urmaririi unei traiectorii date s-a proiectat un regulator fuzzy. Comportamentul implementat prin regulator este cel al unui om care ar dori să parcurgă aceeași traiectorie. Regulator fuzzy funcționeză similara celor clasice de tipul PID, PI sau PD însă ajustarea parametrilor regulatorului se pot face intr-o manieră mult mai convenabilă, fata de regulatoarele clasice. Sistemele de inferența fuzzy pot fi ajustate deoarece baza cunostințelor formale adică funcțiile de aparteneță și setul de reguli definite au fost implementate după simțul tehnic al specialistului. Trebuie menționat însă că aceastea nu aduc garanția unei funcționari sigure sau a stabilitații sistemului în condiții neprevazute.

Regulatorul fuzzy proiectat a fost validat prin simulare în Matlab. Evoluția robotului determinată pe baza modelului cinematic și utilizând comenzile de mișcare ale roților furnizate de regulatorul Fuzzy a fost satisfăcătoare.

Ca metodă de detecție a poziției robotului se utilizează imaginile recepționate de la o cameră video. Această procesare a fost realizată în mediul de lucru Matlab, utilizarea acestuia fiind justificată de prezența unui Toolbox de achiziție de imagini, precum și de facilitățile de implementare a regulatoarelor.

Scopul prelucrări video este evident, în contextul actual, în care dispozitivele de achiziție video pot fi întâlnite în domenii din ce în ce mai diverse. Evoluția actuală în domeniul procesării de imagine face ca abordarea utilizatorului, de a primi reacție de poziție de la o cameră video să fie fezabilă atât din punct de vedere al vitezei de reacție cât și din punct de vedere al costurilor de implementare.

Ca tendințe viitoare pentru o dezvoltare ulterioară a aplicației, se pot face îmbunătățiri sau adăugări de echipamente suplimentare multiple. O camera video mai performantă ar permite vizualizarea unui perimetru mai larg de poziționare a robotului. Implementarea pe robot a unui sistem de senzori GPS sau a unor encodere pentru a obține o informație mai precisă de poziție care doar sporatic să fie recalibrată pe baza informației obținute din procesarea video. Implementarea unui regulator PID pentru a realiza o analiză comparativă între performanțele regulatoarelor. Detecția suplimentară a obstacolelor în cadrul prelucrării video. Integrarea unui sistem de comunicație fără fir între robot și calculator.

Bibliografie

Mircea Nițulescu,[1998], Roboți mobili, Editura SITECH Craiova.

Dumitriu, A., Bucșan, C., Demian, T., Sisteme senzoriale pentru roboți, Editura MEDRO, București, 1996.

Handra – Luca, V.,Mătieș, V.,Brișan, C.,Tiuca, T.Roboți: Structură, cinematică și caracteristici,Editura Dacia, Cluj-Napoca, 1996.

http://ias.cs.tum.edu/people/rusu/publications/own/RusuDissertationThesis.pdf.

S. Nedevski, Prelucrarea Imaginilor i Recunoaterea Formelor, Editura Albastr, Cluj-Napoca, 1998.

A. Vlaicu, Prelucrarea digital a imaginilor, Editura Albastr, Cluj-Napoca, 1997.

C. Vertan: ”Prelucrarea ¸si Analiza Imaginilor”, Ed. Printech, Bucure¸sti, 1999.

http://www.microsoft.com/romania/hardware/digitalcommunication/productdetails.aspx?pid=007.

file:///C:/Documents%20and%20Settings/Boo/Desktop/eu/build135.htm.

Gâlmeanu, C., Contribuții la sinteza roboților mobili cu 3 grade de mobilitate,Teză de doctorat, UPB, 2000.

Razvan Constantin Solea University of Coimbra Faculty of Sciences and Technology Department of Electrical and Computer Engineering "Sliding mode control applied in trajectory tracking of WMRs and autonoms vehicules" March 2009.

http://www.basicmicro.com/.

Preitl, St., Precup, E., Introducerea în conducerea fuzzy a proceselor, Ed. Tehnicã,Bucuresti, 1997.

Adriana Serbencu, Daniela Cristina Cernega, Adrian Emanoil Serbencu, and Ioan Susnea, " Path Following Problem for PatrolBot Solved with Fuzzy Control", International Conference on Automation and Logistics Shenyang, China August 2009.

Image Processing Toolbox User΄s Guide, The Math Works,Inc,2010.

http://www.mathworks.

Anexa1

Programul cu ajutorul căruia implementăm un algoritm de deplasare a robotului descris in capitolul 4 este prezentat mai jos.

'Program name: robot.BAS

'Connections

'Pin 16 Jumper to battery (VS)

'Pin 17 Left GP2D12 Sensor (Right facing sensor)

'Pin 18 Right GP2D12 Sensor (Left facing sensor)

'Pin 19 Rear GP2D12 Sensor

'Pin 0 Left Sabertooth channel.

'Pin 1 Right Sabertooth channel.

'Pin 9 Speaker.

; Declararea variabilelor

temp var byte

filter var word(10)

ir_right var word

ir_left var word

ir_rear var word

LSpeed var word

RSpeed var word

contor var word

minspeed con 1750

maxspeed con 1150

contor = 1

LSpeed = 1500

RSpeed = 1500

low p0

low p1

sound 9, [100\880, 100\988, 100\1046, 100\1175]

;Declararea tabelelor vitezelor pentru roata de pe stânga vL și roata din dreata vR

vL WordTable 65,65,65,65,65,65,65,65,65,65,66,67,69,70,71,71,71,70,69,69,68,67,67,67,67,67,67,67,66,66,65,63,61,59,56,53,49,45,41,36,31, 26, 21,16,12 10, 9,10,13,17, 22,27, 32,37,42,47, 51, 54, 57, 59, 61, 63, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 67, 69,70, 71, 71 71,70, 69, 68, 68, 67, 67, 67, 67, 67, 67, 67, 66, 65, 64,63, 61, 59,56, 53,0,0

vR WordTable 62,60,58,55,52,48,44,39,34,29,24,19,14,11,9,9,11,14,19,24,29,34,39,44,48,52,55,58,60,62,64,65,65,65,65,65,65,65,65,65,65,66,67,68,69,71,71,71,71,70,69,68,67,67,67,67,67,67,67,67,66,65,64,62,60,57,54,51,47,43,38,33,28,23,18,14,11,9, 9, 11,15, 20,25, 30, 35,40, 45, 49, 53, 56, 58, 61, 62, 64, 65, 65, 65, 65,65,0 ,0

main

; Numbers lower than 1500 result in forward direction.

; Numbers higher than 1500 result in reverse direction.

; Accelerează motoarele

LSpeed = (1750 – 10*vL(contor)) min maxspeed

RSpeed = (1750 – 10*vR(contor)) min maxspeed

;Trimite o cerere de impulsuri pe pinul generat

pulsout 0,(LSpeed*2)

pulsout 1,(RSpeed*2)

pause 100

contor= contor +1

if (contor > 64) then

contor=1

endif

goto main

sensor_check

for temp = 0 to 9

adin 17, filter(temp)

next

ir_right = 0

for temp = 0 to 9

ir_right = ir_right + filter(temp)

next

ir_right = ir_right / 85

for temp = 0 to 9

adin 18, filter(temp)

next

ir_left = 0

for temp = 0 to 9

ir_left = ir_left + filter(temp)

next

ir_left = ir_left / 85

for temp = 0 to 9

adin 19, filter(temp)

next

ir_rear = 0

for temp = 0 to 9

ir_rear = ir_rear + filter(temp)

next

ir_rear = ir_rear / 85

serout s_out,38400,["ir_right – ", dec ir_right, " ir_left – ", dec ir_left, " ir_rear – ", dec ir_rear, "LSpeed – ", dec LSpeed, " RSpeed – ", dec RSpeed, 13],return

Anexa2

Funcția folosită în Simulink pentru limitarea unghiului:

function ang = limit_ang(a)

if (a < -pi)

ang = a + 2*pi;

elseif (a > pi)

ang = a – 2*pi;

else

ang = a;

end

Funcția folosită în Simulink pentru orietarea teta

function [teta_ref]=teta_referinta(u)

dx=u(1);

dy=u(2);

% teta_ref1=0.1

% size(teta_ref1)

if dx==0 && dy>0

teta_ref=pi/2;

elseif dx==0 && dy<0

teta_ref=-pi/2;

elseif dx==0 && dy==0

teta_ref=0;

else

if dx<0 && dy>=0

teta_ref(1)=(atan(dy/dx)+pi);

end

if ((dx<0) && (dy<0))

teta_ref(1)=(atan(dy/dx)-pi);

end

if (dx>=0)

teta_ref(1)=(atan(dy/dx));

end

end

Funcția folosită pentru inițializarea filtrări imagini robotului:

%initializare robotX

global axe dreptunghi textvL textvR

imagesc(a2);

axis image off

drawnow;

axe=get(gca,'Children');

hold on;

dreptunghi=rectangle('Position',[ 1 1 5 5],'EdgeColor','b');

textvL=text(5,5,'vL=0','Color','red','FontWeight','bold','FontSize',14)

textvR=text(5,22,'vR=0','Color','red','FontWeight','bold','FontSize',14)

hold off;

Funcția folosită în Simulink pentru filtarea imagini robotului:

function [poz]=robotX(u)

global video xy_filtrat xy_nefiltrat lftln_v tpln_v widh_v heig_v iteratie a2 vid

% rectangle('Position',[lftln_v(iteratie) tpln_v(iteratie) widh_v(iteratie) heig_v(iteratie)],'EdgeColor','r');

x=xy_filtrat(1,iteratie);

y=xy_filtrat(2,iteratie);

figure(3)

a2 = getdata(vid,1);

%getsnapshot(vid);

%imagesc(a2);

set(get(gca,'Children'),'CData',a2);

axis image off

drawnow;

poz=[x/320;y/240];

iteratie=iteratie+1

Program achiziție și procesare de imagine în timp real test4.m

% Inițializarea și configurarea parametrilor camerei.

vid = videoinput('winvideo', 1, 'RGB24_320x240');

%Câte frame-uri să fie achiziționate

set(vid,'FramesPerTrigger',1000);

%Inițializarea camerei, odată ce acestea au fost adusă la parametrii optimi se realizează cu funcția:

start(vid);

%Pentru achiziția manuală de imagini, se utilizează

figure(3)

a2 = getdata(vid,1);

imagesc(a2);

axis image off

drawnow;

axe=get(gca,'Children');

hold on;

dreptunghi=rectangle('Position',[ 1 1 5 5],'EdgeColor','b');

hold off;

m=240;n=320;

k=0;

for ii=1:250

ii

a2 = getdata(vid,1);

set(axe,'CData',a2);

axis image off

drawnow;

%%%%%%%%%%%%%%%

leftsi=0;

lftln=0;

toplen=0;

tpln=0;

k=0;

%%%%%%%%%%%%

a3=zeros(m,n);

a4=zeros(m,n);

a5=zeros(m,n);

for i=1:m

for j=1:n

if (a2(i,j,1)>150 && a2(i,j,2)<130 && a2(i,j,3)<130)

a4(i,j)=1;

end

end

end

for i=2:m-1

for j=2:n-1

if a4(i-1,j-1)+a4(i-1,j)+a4(i-1,j+1)+a4(i,j-1)+a4(i,j+1)+a4(i+1,j-1)+a4(i+1,j)+a4(i,j+1)>5

a3(i,j)=1;

end

end

end

bw1=bwlabel(a3(:,:));

cou=1;

for h=1:m

for w=1:n

if(a3(h,w)==1)

toplen = h;

if (cou == 1)

tpln=toplen;

end

cou=cou+1;

break

end

end

end

coun=1;

for w=1:n

for h=1:m

if(a3(h,w)==1)

leftsi = w;

if (coun == 1)

lftln=leftsi;

coun=coun+1;

end

break

end

end

end

widh=leftsi-lftln;

heig=toplen-tpln;

widt=widh/2;

heit=heig/2;

with=lftln+widt;

heth=tpln+heit;

wth(1)=with;

hth(1)=heth;

set(dreptunghi,'Position',[lftln tpln widh heig]);

end

hold off

stop(vid);

Anexa 3

Poze din timpul experimentelor

Opis

Partea scrisă: 52 pagini

Număr de figuri: 49 figuri

Număr de tabele: 1 tabel

Similar Posts

  • Detector de Trafic cu Ultrasunete

    Cuprins CAPITOLUL 1 – Sisteme Inteligente de Transport 1.1 Introducere Sistemele Inteligente de Transport (ITS – Intelligent Transport Systems) reprezintă rezultatul aplicării unor tehnologii avansate în sisteme și metode de transport pentru sustentabilitatea, confortul și siguranța transportului pe căile rutiere, feroviare, navigabile interioare, aeroporturi, porturi și legăturilor dintre aceste tipuri de transport diferite. ITS-ul cuprinde…

  • Testarea Software

    Listă abrevieri STLC – Software Testing Life Cycle UAT – User acceptance testing ISTQB – International Software Testing Qualifications Board  SEETB – South European Testing Board TDD – Test Driven Development TC (test cases) CSS – Cascading Style Sheets URL – Uniform Resource Locator IDE –  Integrated Development Environment  RC – Remote Control HTML –…

  • Adrese Ip

    ADRESE IP Adresa IP reprezinta un identificator al unui calculator sau dispozitiv dintr-o retea TCP/IP. Retelele care utilizeaza suita de protocoale TCP/IP routeaza mesajele (pachetele) pe baza adresei IP de destinatie. La ora actuala se utilizeaza concomitent 2 tipuri de adrese IP (Internet Protocol): IP ver. 4 (IPv4) si IP ver. 6 (IPv6). IPv4 a…

  • Managementul Drepturilor Digitale (drm) In E Commerce

    Introducere Capitolul I Conceptul de proprietate intelectuala în Internet Notiunea de proprietate Conceptul de proprietate intelectuala in Internet. 1.3. Cadrul juridic cu privire la dreptul de proprietate intelectuala în Internet 1.4 Pirateria – definire, delimitare conceptuala, istoric Capitolul II -Conceptul de managementul drepturilor digitale (DRM) Capitolul III – Arhitecturi pentru Internet DRM și Mobile DRM…

  • Sistem Informatic Privind Activitatea Financiara

    CUPRINS INTRODUCERE Odată cu evoluția economiei mondiale, afacerile au început sa devina tot mai complexe, și astfel volumul de date ce trebuiau prelucrate a crescut într-un ritm accelerat. Evoluția tehnologiei informației și posibilitățile pe care aceasta le oferă au dus la apariția imediată a produselor software de analiză și gestiune a datelor, ca soluție la…