1 Introducere ………………………….. ………………………….. ………………………….. …………………………….. [605189]
1
Cuprins
1 Introducere ………………………….. ………………………….. ………………………….. ………………………….. ……….. 4
2 Aplicabilitate ………………………….. ………………………….. ………………………….. ………………………….. ……… 6
3 Metode de detecție ………………………….. ………………………….. ………………………….. ………………………… 8
3.1 Detecție monoculară ………………………….. ………………………….. ………………………….. ………………… 8
3.1.1 Compensarea mișcării ………………………….. ………………………….. ………………………….. ……… 10
3.2 Detecți e binoculară ………………………….. ………………………….. ………………………….. ………………… 14
3.3 Constrângeri geometrice ………………………….. ………………………….. ………………………….. ………… 17
3.4 Detecție cu retele neuronale ………………………….. ………………………….. ………………………….. …… 19
3.4.1 Operațiile de clasificare a caracteristicilor ………………………….. ………………………….. ………. 19
4 Structura hardware a robotului mobil ………………………….. ………………………….. ………………………….. 21
5 Software f olosit ………………………….. ………………………….. ………………………….. ………………………….. … 23
5.1 Alegerea limbajului de programare pentru realizarea sistemului software …………………………. 24
5.2 Setarea conexiunii la Internet rasp berry -ului ………………………….. ………………………….. …………. 26
5.3 OpenCV ………………………….. ………………………….. ………………………….. ………………………….. ……. 29
5.3.1 Instalarea OpenCV ………………………….. ………………………….. ………………………….. ………….. 30
5.3.2 Metode de captare imagini și video cu OpenCV ………………………….. ………………………….. . 31
5.3.3 Extragere informații din imagini cu OpenCV ………………………….. ………………………….. ……. 31
6 Soluția de recunoaștere a obs tacolelor de pe traseu ………………………….. ………………………….. ……… 33
7 Experimente detecție obstacol ………………………….. ………………………….. ………………………….. ……….. 33
7.1 Recunoașterea bazată pe forme geometrice ………………………….. ………………………….. ………….. 35
7.1.1 Modul de funcționare a algoritmului de detecție ………………………….. …………………………. 35
7.1.2 Etapa de binarizare ………………………….. ………………………….. ………………………….. …………. 37
7.1.3 Analiza grupurilor de pixeli ………………………….. ………………………….. ………………………….. . 38
8 Probleme întâmpinate în recunoașterea bazată pe forme geometrice ………………………….. …………. 38
8.1 Îmbunătățirea algoritmului de recunoaștere a formelor geometrice ………………………….. …….. 40
8.1.1 Detecție prin culoare și formă ………………………….. ………………………….. ………………………. 40
8.2 Detecție prin Convertirea ima ginii RGB în HSV ………………………….. ………………………….. ……….. 41
9 Limitări ………………………….. ………………………….. ………………………….. ………………………….. ……………. 46
2
10 Experimente urmărire traseu ………………………….. ………………………….. ………………………….. ………. 47
11 Structura hardware și software pentru sistemul de urmărire traseu ………………………….. …………. 47
11.1 Experimente urmărire traseu ………………………….. ………………………….. ………………………….. …… 51
11.2 Probleme ap ărute în timpul experimentelor de urmărire a traseului ………………………….. …….. 53
12 Combinarea programului de urmărire a liniei cu cel de detecție ………………………….. ………………. 54
13 Experimente la combinarea programelor de detecție și de urmărire ………………………….. ………… 56
14 Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ………. 58
15 Îmbunătățiri și cercetări viitoare ………………………….. ………………………….. ………………………….. …. 59
16 Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. …… 59
Tabela figuri
Figura 1 Arhitectura detecției monoculare ………………………….. ………………………….. ………………………….. …. 9
Figura 2 Procesarea lanțului de imagini pentru detecția obiectelor aflate în mișcare ………………………….. . 13
Figura 3 Sisteme mobile ce navighează în interiorul unor clădiri sau în mediul exterior ……………………… 15
Figura 4 Niveluri de autonomie și evitare a obstacolelor ………………………….. ………………………….. ……….. 16
Figura 5 Amplasare cameră binoculară ………………………….. ………………………….. ………………………….. …… 16
Figura 6 Detectarea a 3 obstacole dintr -o pereche de imagini – jos, sus si dreapta ………………………….. …. 17
Figura 7 Considerare geometrică pentru un o biect neconcludent din imaginea formată ………………………. 17
Figura 8 Placa Raspberry version 3 Model B ………………………….. ………………………….. ……………………….. 22
Figura 9 Încărcare imagine ISO a sistem ului ………………………….. ………………………….. ………………………… 23
Figura 10 Selectează partiția pe care se află card sd ………………………….. ………………………….. ………………. 24
Figura 11 Pornire Python ………………………….. ………………………….. ………………………….. ………………………. 25
Figura 12 Fereastra pentru introducerea datelor în python ………………………….. ………………………….. ……… 25
Figura 13 Conectarea la raspberry prin cablu ethernet ………………………….. ………………………….. …………… 26
Figura 14 Setare conexiune internet ………………………….. ………………………….. ………………………….. ………… 27
Figura 15 Serverul VNC ………………………….. ………………………….. ………………………….. ……………………….. 28
Figura 16 Mesaj de avertizare ………………………….. ………………………….. ………………………….. ……………….. 28
Figura 17 Intoducere parola pentru server VNC ………………………….. ………………………….. ……………………. 29
Figura 18 Schema planului de realizare a lucrării ………………………….. ………………………….. ………………….. 34
Figura 19 Percepția vizuală ………………………….. ………………………….. ………………………….. ……………………. 35
Figura 20 Funcționarea sistemului de detecție și ocolire ………………………….. ………………………….. ………… 36
Figura 21 Binarizarea 1 – pe timp de zi, fara a fi nevoie de o sursa de lumina auxiliara de la un bec …….. 39
Figura 22 Binarizare 2 -cand mediul e mai intunecat ………………………….. ………………………….. …………….. 39
Figura 23 – Binarizare 3 – cu lumina de la un bec ………………………….. ………………………….. ………………….. 40
Figura 24 Schema logica pentru bara de senzori QTR -C ………………………….. ………………………….. ……….. 48
Figura 25 Pini GPIO ………………………….. ………………………….. ………………………….. ………………………….. … 48
Figura 26 Traseu 1 ………………………….. ………………………….. ………………………….. ………………………….. …… 51
3
Figura 27 Traseu 2 ………………………….. ………………………….. ………………………….. ………………………….. …… 52
Figura 28 Schema logică pentru urmărire traseu si detecție ………………………….. ………………………….. ……. 55
4
1 Introducere
În lucrarea prezentată se abordează diverse metode de recunoaștere a obstacolelor în timp real.
De cele mai multe ori, se dorește să se facă o rec unoaștere atunci când un sistem mobil se
deplasează pe o rută ce conține numeroase obs tacole. Detectarea de obstacole sau spații libere este
o funcție esențială a unui sistem de detecție (senzor) pentru roboți mobili. Chiar dacă robotului i
se oferă o hart ă a traseului, această funcție (detectarea) este esențială pentru a evita obstacolele sau
defecțiunile de pe hartă. În mediul dinamic, robotul trebuie să recunoască poziția și viteza de
mișcare a obstacolelor pentru a evita coliziunea.
Multe lucrări folosesc detectoare cu laser pentru a identifica obstacolul. Aceste detectoare
care scanează un plan 2D, au ca dezavantaj faptul că obiectele pot fi recunoscute numai până la o
anumită înălțime menționată în specif icațiile acestuia.
De asemenea, sistemele conv enționale stereo (binoculare) sunt utilizate pe scară largă (de
exemplu 4). În cadrul acestor sisteme, câmpul de viziune este îngust, deoarece acestea folosesc o
pereche de camere obisnuite. În cazul roboților mobili, câteodată este necesară obținerea
informațiilor a unei imagini panoramice de 360 grade, deoarece obstacolele se pot apropia din
orice direcție. Există două metode de obținere a imaginilor panoramice, și anume :
• Prin captarea unei secvențe de imagini prin rotirea camerei foto și apoi aceste
imagini se compun formând o singura imagine. Cu toate că o astfel de imagine ar
putea avea o rezoluție foarte bună, este nevoie de o peioadă mai lungă de timp
pentru a obține o imagine și nu este deloc potrivită pentru roboții aflați într -un
mediu dinamic.
• Cea de a doua metodă constă în utilizarea unei lentile speciale sau a unei oglinzi
pentru a obține o imagine omnidirecțională în timp real. Cu toate că rezoluția unei
astfel de imagini este una slabă, este una dintre metodele cele mai potrivite pentru
roboți i din mediul dinamic.
Prassler a propus o metodă de urmărire a mișcării obiectelor (obstacolelor) folosind un detector
laser. Metoda detectează mișcarea acestora prin efectuarea calculelor pe baza diferențelor dintre
pozițiile cu rente și cele anterioare. M etoda nu ia în considerare incertitudini ce pot să apară în
gama de date. Mai mult decât atât, din moment ce acestea pot determina/ estima poziția robotului,
eroarea acumulată în ceea ce privește poziția acestuia poate degrada harta cu obstacole, detectân d
obstacole statice în loc de detectarea celor dinamice. Metoda Lindstrom prezintă o problemă
similară cu cea a lui Prassler. Lu a propus o estimare a propriei lor mișcări. Cu toate acestea,
estimarea mișcării lor nu pare să fie aplicabilă în cazul în car e apare o incertitudinea destul de
mare în gama datelor de recunoaștere. [3]
5
În cadrul acestei lucrări se abordează metode de detectare a obstacolelor prezente pe un trase u,
folosind camera web ( 728×488) care captează informații în timp real, ocolirea obst acolelor
întâmpinate și revenirea pe traseul inițial.
Partea practică a lucrării a fost realizată în etape astfel :
1. Căutarea soluțiilor deja existente pe piață în ceea ce privește detectarea obiectelor din
cadrul imaginilor obținute de la una sau mai multe camera (detecție mono sau stereo).
Compararea soluțiilor găsite (avantaje, dezavantaje, limitări) și alegerea unei dintre ele.
2. Priectarea si implementarea hardware a sistemului autonom: alegerea componentelor
hardware necesare unui astfel de sistem (kit r obot pe care se montează componentele,
raspberry, bara de senzori pentru detecție traseu, două motoare pentru controlul robotului,
puntea H, camera web pentru detecția mono, un accumulator 12 V, un card SD pentru
instalare sistem de operare pe raspberry, c ablu Ethernet pentru conexiunea la internet a
raspberryului, baterie externa -acumulator pentru raspberry , fire pentru conectarea
componentelor între ele ), achiziționarea acestora și montarea lor pe șașiu.
3. Documentare despre bibliotecile deja existente fol osite pentru dezvoltarea aplicațiilor de
vedere artificială precum OpenCV și SimpleCV.
4. Pregătirea mediului de lucru pentru realizarea programelor de detecție și control ale
robotului: instalare sistem de operare pe raspberry (Raspbian), instalare Python, instalare
componente necesare pentru utilizarea camerei w eb și procesarea imaginilor, instalarea
serverului VNC pentru conectarea remote la raspberry de pe un laptop.
5. Realizarea mai multor programe de detecție și efectuarea experimentelor care au ca scop
final obținerea programului cel mai potrivit pentru detectarea obstacolului. În realizarea
programelor au fost luate în calcul metode de detecție bazate pe forme geometrice – cerc,
pătrat,etc., bazate pe culoare și formă (adăugarea unui element – culoarea, pentru a limita
găsirea elementelor necorespunzătoare) , bazate doar pe culoare (folosind spațiul RGB),
metode bazate pe imagini convertite din spațiul RGB în spațiul de culoare HSV.
6. Realizarea programului de urmărie a traseului – linia neagră, folosind o b ara de opt senzori
digitali.
7. Efectuarea experimentelor pe baza programului de urmărire traseu pentru diferite comenzi
ale celor două motoare pe diferite trasee .
8. Realizarea progamului combinat pentru detecție, urmărie traseu și ocolire obstacol și
efectuar ea experimentelor pentru a obține program final cu cele mai bune performanțe.
Etapele descrise mai sus, sunt detaliate în secțiunile următoare.
6
2 Aplicabilitate
Prin domeniul vederii artificale se încearcă să se elimine comenzile manuale , efectuate de
către un operator uman , necesare pentru îndeplinirea unor sarcini. Motivul pentru care se realizează
sistemele cu conducere autonomă este cresterea autonomiei decizionale a tuturor vehiculelor, ceea
ce duce la eliberarea șoferilor de stresul drumurilor lungi ș i siguranta traficului prin încercarea de
a elimina erorile umane.
Acest domeniu este foarte căutat, fiind abordat de cercetători de acum douăzeci de ani .
Rezultatele cercetărilor au fost foarte bune, încat s -a crezut ca se va trece foarte repede la mașini
autonome. Cu toate acestea, nici un sistem nu a fost dezvoltat cu o rata de succes de 100%, iar
problemele legate de defecțiunile generate de sistemele autonome au facut ca producătorii să aibă
o atitudine mai conservatoare în ceea ce privește producerea lor. Din acest motiv, majoritatea
sistemelor autonome cu rezultate obținute promițătoare au fost abandonate.
În ultima perioadă, noțiunea pentru sistemele de “conducere autonomă” s -a transformat în
sistemele de “conducere cu asisten ță”, motiv pentru care c ercetătorii au renunțat la a se mai
concentra pe construirea unei mașini care se conduce singura. Schimbarea termenului ințial în
termenul de “conducere cu asisten ță” duce la un termen mult mai prudent, deoar ece sistemul nu
exclude șoferul , el rămânând res ponsabil principal pentru modul în care se comport a
autovehicolul, însă acesta poate fi ajutat , mai ales în situațiile standard. Există două mari probleme
pentru orice sistem de conducere cu asistență precum: problema ceconstă în urmarirea obstacolelor
și cea care ține de urmărirea benzilor de circulație. Aceste două probleme centrale formează cea
mai mare parte din mediul în care mașina evoluează. Traseul mașinii estte dat de banda de
circulație și obstacolele indică unde se poate circula și unde nu. Cele două probleme combinate
duc la obșinerea informatiilor necesare pentru a creea un sistem de control, care accelereaza,
frânează sau virează.
Pentru că așteptările performantelor pentru astfel de sisteme au tot crescut, problema pentru
detecția obstacol elor a diferit în ultima vreme. Există senzori speciali care au ca scop măsurarea
distanțelor până la un anumit obiect. Acest lucru este realizat prin măsurarea timpului necesar
pentru undă care să parcurgă toată distanța pana la obstacol si înapoi. În ca zul senzorilor laser,
aceasta poate fi dată de o lumină sau în cazul radarului, unda poate fi o unda electromagnetica.
Problemele îngrijoratoare la aceste unde pot fi cele legate de interferențe din partea altor
participanți la trafic.
Un sistem folosit pe ntru detecția obstacolelor care se bazează doar pe senzori activi are o
aplicabilitate destul de limitată (exemplu regulator de distanța pentru autovehiculele de lux).
Tocmai din acest motiv, daca se dorește să se construiească un sistem de detecție robust , acești
senzor i activi trebuie să fie c ombinați cu cei bazați p e vedere a artificială. Astfel, prin intermediul
vederii artificiale se poate detecta obiectul ca un întreg, chiar dacă precizia de măsurarea este mică
si senzorul activ folosit asociază preciz ia lui obiectului detectat. Vederea artificială poate să fie :
monoculară – realizând doar detecția, fără măsurarea distanțelor, binoculară – realizând detectia
dar și măsurarea distanței.
Problema cu urmărirea benzilor de circulație (traseul parcurs de si stem), nu se poate rezolva
ușor doar cu senzorii activi. Primul pas pentru a face posibilă urmăreirea benzilor este să se
modifice normele de construicție a drumurilor, pentru ca benzile au delimitatoare pictate de obicei,
și care nuj conțin o strructura care să difere de suprafața drumului, deci ele nu pot fi detectate prin
7
radar, de aceea laserul trebuie sa se bazeze pe m ăsurarea reflectiviții suprafețelor. Pentru a realiza
acest lucru se face procesarea imaginilo r. Așsadar, indiferent de senzorii pe car e ii folosim, trebuie
să fie luate în calcul aspectele vizuale ale tuturor marcajelor pentru a face posibilă detecția
limitelor dintre benzi le de circulație. Cea mai simplă metoda prin care se p oate face acest lucru
este utilzarea vederii artificiale ster eo sau mono.
Senzorii folosiți pentru deteția stereo furnizează informații de tip 3D dar și alte informații
vizuale (forme, culori), fiind astfel cei mai complexi senzori pentru sisteme de conducerea cu
asistență. Procesarea imaginilor în pereche nclude gă sirea tuturor trăsaturilor care corespund
perechilor de imagini. Această sarcină este una dificilă și necesită un timp de procesare
considerabil care depinde foarte mult de apariția erorilor. Pentru a atinge o performanță mare de
la un sistem bazat pe vede rea stereo, trebuie să se stabilească tehnici foarte precise de calibrare a
camerei, tehnici bazate pe modele precise si generale ale camerei. Parametrii care se obțin din
procesul de calibrare sunt folosiți în procesul de corectare a imaginilor obținute d e la cameră și cel
de eliminare a distorsiunilor generate de lentille camerei (exemplu imagini obținute în mișcare) .
Obietivul principal al acestei lucrări este dezvoltarea unui sistem și a unei soluții originale
pentru urmărirea traseului definit de o lin ie neagră pe un fundal alb, detectarea obstacolelor de pe
traseul parcurs și ocolirea lor.
Funcția de detectarea a obstacolelor de pe un traseu se dorește a fi folosită în multe aplicații.
De obicei aceste aplicații sunt folosite în situații în care nici u n operator uman nu poate controla
un sistem aflat în mișcare și în care există pe traseu pericole nesemnalate.
În general, sistemul prezintă senzori de detectare a mediului, iar deciziile cu privire la
comportamentul său sunt luate în mod autonom sau se t ransmit informații la un operator uman la
o locație diferită , care va controla sistemul prin comenzi de la depărtare. Astfel de aplicații sunt
folosite pentru vehiculele autonome (fără pilot). Aceste aplicații au fost identificate atât în zonele
militare c ât și în cele civile, cum ar fi recunoaștere, supraveghere, achiziție țintă, căutare și salvare ,
explorare.
Tehnologia folosită în detectarea obstacolelor poate fi folosită și în alte domenii precum :
• Agricultură – sunt utilizate pentru monitorizare automat ă și protecția culturilor. Acestea
prezintă o importanță mărită în viitorul activităților de agricultură automatizate.
• Securitate – sunt utilizate cu scopul de a colecta informații despre mediu, de exemplu
construirea hărților compuse din elemente ale medi ului înconjurător. Se urmăresc obiecte
de interes cum ar fi oameni sau vehicule. Un exemplu de astfel de aplicații ar fi cele mobile
pentru detectarea diferitelor obstacole pe care persoanele fără vedere nu le pot indentifica.
• Război militar – în departame ntul de Apărare, vehiculul aerian fără pilot are scopul de a
salva vieți și de a imbunătații capabilitășile de apărare națională folosind arhitecturile
sistemului de control , sisteme de senzori avansate, servicii de cercetare, și standarde pentru
a atinge mobilitate autonomă pentru vehiculele aeriene fără pilot. Aceste vehicule pot să
servească de asemenea pentru poliție și militari pentru a reduce amenințările de reducere a
vieților.
• Transport general – în această lume modernă, acest domeniu reprezintă ne voia de
automatizare în fiecare domeniu posibil cu care omul interacționează . Conducerea unui
vehicul este de asemenea un domeniu de preocupare în care eroarea umană cauzează
8
pierderi majore și fatale ( vieți sau proprietăți ). O dată cu creșterea stresului mental și a
factorilor de muncă grea pot apărea situații neașteptate precum adormirea la volanul
vehicolului ceea ce poate duce la devierea de la traseu, adică la un accident fatal.
Însă, folosind mașini instruite și capabile să se deplaseze singure, s e poate reduce numărul de
accidente posibile indiferent de starea de sănătate sau a greselilor indivizilor. [5]
3 Metode de detecție
Pentru a detecta obiecte sau persoane ce staționează folosind camere există mai multe
abordări care folosesc diferențe de i magini, istoria mișcării (traictoria), sau fundalul extras din
cadru imaginii preluate .
3.1 Detecție monoculară
Detectarea obiectelor aflate în mișcare folosind o cameră monoculară, montată în fața unui
robot mobil, reprezintă o problemă mult mai dificilă dec ât alte metode, deoarece prin mișcarea
robotului se induce un flux optic inerent în imagini, care trebuie să se distingă de fluxul optic al
mișcării obiectelor.
Metoda “caracteristicilor – de bază” folosește corespondențe ale imaginii între două și trei
cadre. În cadrul acestei metode, se aplică diferite constrângeri pentru a diferenția caracteristicile
aflate pe obiectele statice și cele aflate pe obiectele în mișcare. Într -o analiză completă a lui
Klappstein se arată faptul că obiectele care se mișcă în p aralel cu camera de fotografiat cu o viteză
mai mică, poate fi greu de detectat. Mai mult decât atât, detect area obiectelor care nu se deplasează
în paralel cu camera de fotografiate este posibilă numai dacă se foloseș te o euristică suplimentară
care să mă rească câmpul de vizibilitate asupra obiectelor.
Un aspect legat de problema de detectare a obiectelor aflate în mișcare, într -o secvență de
imagine monoculară, este reprezentat de segmentarea mișcării. Segmentarea mișcării reprezintă de
fapt împărțirea im aginii în regiuni de pixeli ce se mișcă în mod coerent în cadrul întregii secvențe
de imagini.
9
În abordarea metodei caracteristicii de bază pentru segmentarea mișcării în timp reale este
prezentată ca utilizând un algoritm de maximizare a mediei asupra un ui grup învecinat de
caracteristici cu traictorii similare. Cu toate acestea, problema care apare în detectarea obstacolelor
care se mișcă în paralel cu camera rămâne în continuare în atenția cercetătorilor . Aceste obiecte
vor fi cel mai probabil asignate unor segmente a le mișcării de fundal.
Figura 1 Arhitectura detecției monoculare
În partea de sus a imaginii este afișată reconstrucția scenei pentru părțile statice din mediul
înconjurător. În secvența de imagine capturată, carac teristile sunt urmărite, și pozițiile lor 3D în
scenă sunt estimate folosind EKF -uri. Caracteristicile rezultate, cu pozițiile lor 3D în scena, sunt
utilizate pentru a crea o hartă a scenei statice . Caracteristicie urmărite și poziția lor 3D estimată
sunt folosite pentru detectarea și estimarea obiectelor din scenă, aflate în mișcare.
Pe lângă detectarea obiectelor aflate în mișcare, estimarea pozițiilor lor 3D și a traictoriei
acestora este și mai dificilă. În plus, față de o ambiguitate de scară, mai mul te probleme apar din
cauza mișcării camerei ceea ce duce la imposibilitatea de a estima poziți ile obiectului și a traictoriei
acestuia dacă nu se face nicio ipoteza suplimentară despre mișcarea obiectului. Sunt abordări
precum “Structura de mișcare nerigid ă”, care tratează aceste dificultăți folosind forme apriori sau
baze de forme pentru a constrânge problema. Există autori care aplică o abordare ortogonală și
încearcă să rezolve problema în spațiul traictoriei în loc să o rezolve în spațiul formei. În ac este
metode bazate pe caracteristici, poziția și mișcarea fiecărui punct sunt reprezentate de o combinație
liniară a traictoriilor de bază. Reconstrucția scenei, este apoi realizată prin estimarea coeficienților
unei astfel de combinatii ale traictoriilor de bază.
Abordarea prezentată este strâns legată de problema noastră. Cu toate acestea, autorii
analizează reconstrucția traictoriilor de puncte și ajung la concluzia că reconstruirea punctelor și a
traictoriilor este slabă dacă traictoriile sunt corela te cu mișcările camerei și dacă aparatul de
fotografiat se mișcă încet și fără probleme. Având în vedere că mișcarea camerei de fotografiat,
montate în partea din față a robotului efectuează acest tip de mișcare, atunci această metodă nu
este aplicabilă în acest caz.
Acest capitol prezintă cazul în care se folosește un singur aparat de fotografiat și montat în
fața robotului. În timpul mișcării robotului, camera captează o secvența de imagini (… It-1, It, It+1,…)
care sunt rectificate imediat în funcție de parametrii intrinseci ai camerei pentru a corecta
distrosiunile de lentile. Folosind datele despre distanțe le parcurse de către robot, poziția camerei
10
corespunzătoare, exprimată prin matricea de proiecție Pt = K R t [I| – ct ], poate fi calculată pentru
fiecare imagine It , ce conține orientarea Rt , poziția ct , și matricea de calibrare ontrinsecă K a
camerei. Atât poziția camerei cât și orientarea acesteia sunt exprimate prin tr-o referință globală,
prin coordonate cadru.
Arhitectura completă a sistemu lui software care procesează aceste date de intrare este
afișată în figura de mai sus.(Figura 1) Abordarea structurii de mișcare monoculară pentru
reconstrucția formei 3D a unei scene statice este arătată în partea de sus a figurii. În fiecare dintre
imagi nea preprocesata sau achiziționată, caracteristici diferite din imagine sunt selectate folosind
un detector Shi -Thomas. Aceste trăsături sunt urmărite pe secvența de imagine achiziționate în
timp ce pozițiile lor 3D sunt estimate folosind EKF. Similar cu p oziția camerei, aceste poziții 3D
sunt calculate în raort cu referința globală.
Pentru detecția obstacolelor aflate în repaus, se efectuează o re construcție a scenei
monoculare, pentru 200 -300 caracterisitici importante ale scenei în același timp. Înainte de
utilizarea caracteristicilor reconstruite, pentru a construi o harta a mediului în care se afla robotul,
trebuie să se supună unei post -procesări unde estimările nesigure ce au o mare covarianță și
incertitudine, sunt eliminate.
Partea de jos a figur ii 1 arată fluxul de date pentru detectarea obstacolelor dinamice, care
este scopul principal a acestei lucrări. Caracteristicile urmărite prelucrate de reconstructia scenei
statice de mai sus sunt folosite pentru a efectua o compensare a mișcării : imagin ile de intrare sunt
deformate pentru a elimina efectul de mi șcare a robotului din imagine (eliminare zgomot) . După
această etapă imaginile pot fi tratate ca și cum ar fi capturate de un aparat de fotografiat static. Prin
urmare, operațiunile standard cum a r fi, calcularea diferențelor de imagini, se pot aplica pentru a
detecta și a segmenta mișcarea obstacolului din imagine. Astfel de obiecte, sunt apoi urmărite, și
pozițiile lor în imagini sunt folosite pentru a estima pozițiile și vitezele lor în scenă. Acești pași de
procesare sunt descriși în detaliu în următoarele două secțiuni .
3.1.1 Compensarea mișcării
Una din problemele cele mai mari care apar în detectarea obstacolelor aflate în mișcare este
fluxul optic inerentcare este indus de mișcarea robotului s au a camerei . Se încearcă să se elimine
acest efect din imaginile formate prin corecarea efectivă a scenei. Se va putea observa ca prin
compensația proprie de mișcare se permite în cele de urmă să se aplice metode cunoscute de la
detectarea mișcării cu cam ere statice. Această compensare a mișcării se realizează prin învăluirea
mișcării. Deformarea imaginii se poate calcula ușor cu ajutorul caracteristicilor din imagini care
sunt urmărite de abordarea reconstrucției scenei statice. Cu toate acestea, compens area mișcării
este realizată cu succes doar dacă, caracteristicile obiectelor din scena statică sunt folosite. Pentru
simplificare, aceste caracteristici se numesc caracterisitici statice, în timp ce caracteristicile
obiectelor aflate în mișcare sunt numit e caracteristici dinamice. Utilizarea caracteristicilor
dinamice pentru compensarea mișcării duc la rezultate inferioare și interzice detectar ea obiectelor
aflate în mișcare, în etapele de prelucrare ulterioare ale abordării folosite.
11
A. Caracteristica de fil trare
Mai departe sunt descrise mai multe constrângeri și criterii care permit clasificarea caracteristicilor
care sunt extrase și urmărite în timpul reconstrucției scenei statice, în caracteristicie statice și
dinamice.
Ca o primă constrângere poate fi cea care folosește constrângere epipolară. Pentru o
caracteristică statică, aflată în poziția xt , în cadrul It, punctul din imagine ce ii corespunde, xt’ , în
cadrul It’, va fi localizat pe o linie epipolară care poate fi dscrisă de l = F x’t , unde x’t , denotă
coordonata omogenă a lui xt și F este matricea fundamentală care descrie geometria dintre pozițiile
a două camere care sunt incluse în procesul de detectare. O caracteristică dinamică prin comparație
cu cea statică, va avea o distanță mai mare de l a linia epipolară.
Deși, în locul constrângerii epipolare se folosește o altă constrângere care oferă stabilitate
pe termen lung, și care conține implicit constrângerea epipolară, dar folosește mai mut de două
cadre pentru clasificarea caracteristicilor. Pozițiile 3D aale caracteristicilor urmărite sunt estimate
folosind EKF. Pe lângă această estimare se mai calculează în plus covaranța poziției estimate. În
timpul reconstrucției scenei, algoritmul presupune că scena este una statică. Așadar, caracteristic ile
dinamice s unt estimate cu covarianțe mari, pentru că acestea încalcă ipotezele algoritmului de
estimare. Aici este momentul în care constrângerea epipolară este luată în considerare.
Caracteristicile dinamice pot fi apoi filtrate prin ignorarea tuturo r caracteristicilor a căror
covarianță depășesc un anumit prag. Mai mult decât atât, algooritmul de reconstrucție folosește
estimările caracteristicilor pentru a ghida procesul de urmărire prin prezicerea poziției punctelor
din cadrul următor. Caracteristi cile dinamice care se mișcă rapid și perpendicular pe linia
epipolară, va fi mult mai departe decât locația prezisă si abordarea pentru reconstrucția scenei
statice o să piardă urma acestora. Prin urmare, aceste caracteristici dinamice sunt filtrate într -un
stadiu destul de timpuriu în timpul reconstrucției scenei statice. Din păcate, există în continuare
caracteristici dinamice care trec prin etapa de reconstrucție scenei statice și ca re au estimările
pozițiilor 3D într -o variație redusă. Acest lucru se întâmplă pentru caracteristici de pe obiecte care
se mișcă în paralel cu camera. În primul rând, aceste caracteristici nu încalcă ipoteza unei scene
statice. În schimb algoritmul de estimare este capabil să găsească estimările statice și stabile ale
poziț iilor 3D care corespund cu locațiile unei caracteristici 2D în secvența de imagine. Aceste
estimări nu sunt corecte pentru caracteristici dinamice . Erorile depind de mișcarea obiectului.
Caracteristicile dinamice de pe obiecte care se mișca mai rapid decât camera și prin urmare care
se află mai departe de cameră, sunt reconstruite cu o adâncime negativă. Pentru caracteristici pe
obiecte care se află în mișcare în același sens cu cel al camerei dar cu o viteză mai redusă,
adâncimea estimată este prea mare. D eoarece camera este înclinată spre pământ, aceste
caracteristici sunt reconstruite sub planul mesei. Caracteristicile care se mișca cu aceeași viteză cu
camera, sunt reconstruite la infinit și sub planul mesei. Vom aplica teste simple plauzibile și vom
clasifica aceste caracteristici cu adâncime negativă și o înalțime negativă ca fiind caracteristici
dinamice cu scopul de a le filtra. Trebuie remarcat faptul că detectarea caracteristicilor dinamice
este realizată numai pentru a le exclude din compensarea mișcării. Ele sunt utilizate pentru a
detecta deplasarea obstacolelor din acel moment.
12
Criteriile de mai sus sunt în măsură să dezvăluie un număr mare de caracteristici de pe
obiecte aflate în mișcare. Cu toate acestea, caracteristicile de pe obiecte care se deplasează spre
camera de fotografiat nu pot fi detectate ca fiind caracteristici dinamice. Acestea sunt reconstruite
ca obstacol static poziționat foarte aproape de cameră, comparativ cu distanța lor reală. De fapt,
ele sunt reconstruite aproape de p oziția în care există riscul unei coliziuni cu un obiect aflat în
mișcare ce poate apărea. Prin urmare, pentru detectarea obstacolelor și evitarea acestora, adăugând
aceste caracteristici în cadrul rezultatelor hărții a obstacolelor statice într-un comport ament adecvat
pentru robot. Cu toate acestea, pasul de procesare pentru detectarea obiectelor în mișcare în
imaginile deformate este de asemenea capabil să detecteze majoritatea acesto r obiecte mișcătoare .
B. Deformarea Imaginilor
Caracteristicile statice ca re au fost clasificate cu ajutorul criteriilor de mai sus pot fi folosite
pentru compensarea efectivă a mișcării care se face pprin deformarea imaginii. Defomarea
imaginii ne permite să transformăm orice imagine It , preluată de la poziția Pt a camerei la orice
alt punct Pt0 ,din cadrul It0. Deformarea W depinde de două poziții ale camerei și prin rmare în
acest caz – în care avem o singură cameră de fotografiat pentru cei doi timpi t și t’:
It→t’ = W t→t’ (It) (1)
Imaginea deformată It→t’,corespunde cadrului It, fiind din aceeași poziția unde It’ a fost capturată.
Mai mult decât atât dacă deformarea a fost perfect făcută și scena a fost statică, imaginea deformată
It→t’ ar fi egală sau similar cu imaginea It:
It’≈ It→t’ (2)
Deform area este apro ximată cu o transformare a unei porțiunii afine de triunghi. Ca vertexi ai
triunghiului se folosesc caracteristicile statice F = {f(1), f(2),…… f(n)} care sunt urmărite între două
cadre It și It’. Lăsând xt(i) sa denote poziția imaginii 2D a caracteris ticii f(i), din imaginea It, în timp
ce xt’(i) denotă poziția imaginii It’.
C. Detectarea și estimarea mișcării obiectelor
Se poate implementa metoda de compensare a mișcării pentru detecția obiectelor cu o singură
cameră statică. Pentru motive ce țin de pe rformanță, folosim imagini diferență care pot fi calculate
eficient. Diferența dintre două imagini este apropiată de zero, dacă o imagine este deformată într –
o perspectivă a celeilate imagini și dacă scena este una statică. Mișcând obiecte pe de altă parte ,
se vor produce diferențe mari, așadar pot fi detectate în imagini diferență. Pentru a reduce zgomotul
din imaginea capturată și pentru a crește raportul semnal – zgomot, n u se folosesc doar două
imagini pentru generarea imaginii diferență. În schimb, se folosesc cinci imagini consecutive din
secvența de imagine capturată .
13
Presupunem ca It – este imaginea de referință, unde mișcarea trebuie detectată . Apoi se folosesc
două imagini It-1 și It-2 care au fost achiziționate înainte de a exista imaginea referi nță și alte două
imagini It+1 și It+2 achiziționate după imaginea referință. Toate imaginile (excepție face imaginea
referință) sunt transpormate într -o perspectivă a imaginii referință. Mai departe diferența dintre
patru imagini deformate (transformate în perspectivă It) și imaginea referință se calculează ca în
figura următoare (diferența dintre primul și al doilea rând) :
Figura 2 Procesarea lanțului de imagini pentru detecția obiectelor aflate în mișcare
Mai departe imaginile diferență obținute se binarizează folosindu -se un prag de binarizare
ales experimente . Apoi așa cum se vede în figura 3.2 după binarizare, imaginile difernță sunt
combinate pe perechi folosind operatoul logic AND, adică în imaginea binară rezultată un pix el
este setai numai dacă pixelul a fost setat în ambele imagini diferență binarizate. Imaginile rezultate
sunt combinate utilizându -se operatorul logic OR. La final, prin efectuarea acestor pași zgomotul
este eliminat prin deschiderea și închiderea operato rului morfologic. Această procedură este una
cu cele mai bune rezultate experimentale. Această reduce zgomtul din imaginile diferență, dar în
același timp păstrează și conturul obiectului aflat în mișcare, chiar dacă dimensiunea obiectului
crește sau scade când distanța față de obiect scade sau crește. Așa cm se vede în imaginea 3.2, o
parte din regiunile mai mici din imagine, mai ales cele de -a lungul granițelor de închidere sunt de
asemenea clasificate ca obiecte dinamice cu toate că acestea aparțin mediu lui static. Aceste regiuni
pot fi tratate ca obiecte dinamice în pașii următori de procesare a imaginilor ai metodei abordate.
Cu toate acestea poziția și viteza estimate ar putea dezvălui faptul că acestea sunt de fapt statice.
14
În imaginea finala prelucra tă sub forma de imagine diferență binară , sunt generate cuti de granițe
în jurul fiecărui segment de imagine conectat. Aceste cutii de granițe sunt folosite drept
caracterisitici ale obiectelor dinamice extrase. Ele oferă poziția și mărimea aproximate a f iecărui
obiect din imagine și sunt folosite pentru urmărirea obiectelor din secvența de imagine.
Pentru moment, facem o ipoteză în care avem un singur obiect aflat în mișcare în câmpul vizual al
camerei. În prezent caseta de încadrare cu cea mai mare supra față este aleasă în această ipoteză ca
fiind singurul obiect care se mișcă. Celelalte casete de încadrare sunt ignorate.
Estimarea poziției și vitezei se face cu ajutorul unui EKF. Așa cum am mai spus în
secțiunile anterioare, nu este posibila reconstru irea poziției unui obiect dinamic de la camera fără
constrângeri suplimentare. Prin urmare, se presupune că toate obiectele dinamice se deplasează
pe pământ și partea inferioară a casetei de încadrare extrasă este situată pe planul solului în scenă.
Folosind funcțiile de tranziție și proiecție, predicția uzuală EKF și pașii de actualizare
procesați iterativ pentru fiecare nouă imagine și așadar pentru fiecare casetă de încadrare extrasă
pentru a estima în mod continuu poziția și viteza obiectului dinami c. Esimarea poziției finale este
folosită pentru navigarea și evitarea obstacolului în plus față de caracteristicile reconstruite ale
scenei statice. [7]
3.2 Detecție binoculară
Rolul unui sistem de vedere artificială este de a fforma imagini, de a le analiza și de a le
descrie, astfel încât să rezulte aspectele cele mai esențiale ale spațiului pe care îl vizualizează, utile
pentru îndeplinirea misiunii de către robot. Sistemele care se montează pe robot trebuie să ofere
un câmp vizual cât mai mare și cu o cali tate cât mai bună. Sistemele stereo au un rol foarte
important pentru că, cu ajutorul lor se obțin informații referitoare la distanța raportata față de
obiectul din scena, informații ce pot fi extrem de utile pentru evitarea coliziunilor . Sistemele video
standard au câmp vizual limitat. De aceea, se recomandă ca pentru un robot mobil să se folosească
camere speciale, cu vedere panoramică sau omnidirecțională.
15
Figura 3 Sisteme mobile ce navighează în interiorul unor clădiri sau în mediul exterior
Un astfel de sistem, atunci când este construit și programat trebuie să fie capabil să realizeze
mișcări rapide, controlate și trebuie săfie capabil să ia decizii atunci când întâlnește un obstacol.
Evitarea obstacolelor reprezintă următoa rele: detec ția obstacolului, oprirea robotuului, schimbarea
direcției de deplasare a sistemului mobil care are ca scop evitarea coliziunilor.
Evitarea obstacolelor, reprezinta un termen care descrie mai multe tehnici software, ce permit
sistemelor mobile s ă își modifice traictoria și viteza ținând cont de mediul înconjurator. Termenul
este utilizat în conjuncție cu măsurarea distanțelor și cu controlarea virajelor. Astfel că programul
software creeat oferă tuturor roboților de acest tip, reflexe apropiate f iințelor vii și le oferă
posibilitatea de a naviga într -un mod inteligent.
Există o gamă larga de roboți mobili și de situații în care aceștia trebuie să acționeze. În
funcție de misiunea pe care trebuie să o rezolve, se pot observa mai multe tipuri de au tonomie și
implicit mai multe tipuri de complexitate a tehnicilor de evitare a obiectelor întâlnite pe traseu.
16
Figura 4 Niveluri de autonomie și evitare a obstacolelor
Nivelul superior se referă la navigarea autonomă și la evitarea obstacolelor aflate în mișcare. Cele
mai avansate tehnologii care exista în present permi t navigarea în grup a roboților, redresarea
automata sau urmărirea autonomă a țintelor. În varful piramidei se plasează roboții creați p entru
cercetare pentru a explor a spațiul cosmic – de exemplu roboții trimiși pe lună [25]
O altă metodă de detectare a unui obstacol es te cea bazată pe utilizarea unei camere
binoculară . Camera oferă imagini de calitate foarte mare. Aceasta este instalată în fața robotuui.
Figura 5 Amplasare cameră binoculară
Problema principală în detectarea obstacolelor pe b ază de vedere artificială o constituie
clasificarea caracteristicilor detectate din cele patr u regiuni descrise în figura 3 . Obiectul C din
regiunea I nu poate fi considerat un obstacol și poate fi neglijat. La fel poate fi considerat și
obiectul A din reg iunea III care poate fi considerat ca fiind o umflatură sau un gol în pământ.
Pentru acestă metodă se folosesc imagini diferență. Principalul scop este să fie detectat un singur
grup în imagine, care să reprezinte obstacolul din imaginea diferență așa cum apare în figura
următoare.
17
Figura 6 Detectarea a 3 obstacole dintr -o pereche de imagini – jos, sus si dreapta
Această imagine arată un exemplu în care trei obiecte aflate la distanțe diferite între ele și
de pământ sunt clasific ate corect conform reprezentației din figura 4.1. Întreaga suprafață de
pământ, incl uzând și ziarul, este eliminată, pentru că ambele aparțin regiunii III, care nu se ia în
considerare.
Pământul face ca întreaga imagine să fie o singură grupare, ceea ce fa ce ca orice fel de segmentare
pentru extragerea obstacole și pentru a găsi o cale între ele să fie imposibilă. De aceea având în
vedere că pământul se neglijează în prelucrările următoare, primul pas este cel de a –l scoate din
datele de intrare
3.3 Constrâng eri geometrice
În prelucrarea datelor, valoarea diferită (neconcludentă) depinde de distanța ( d) dintre
senzor și punctul imaginii.
Figura 7 Considerare geometrică pentru un obiect neconcludent din imaginea formată
18
În cazul în care camera este poziționată spre podea la un unghi 𝜃 față de aceasta, fiecare
pixel de pe linia orizontală ar e aceeași valoare neconcludentă, deoarece distanța este independentă
de coordonata orizontală din imagine. Distanța dintre cele două camere o n otăm cu B și cu f notăm
lungimea focală a camerei, care este folosită ca bază în reconstrucție și cu p x notăm dimensiunea
pixelului pe orizontală a camerei : dP =𝐵
𝑑*𝑓
𝑝𝑥. Valoarea neconcludentă (d P) și distanța ( d) trebuie să
fie estimate pe baza informației din imagine. Acest lucru se face printr -un proces de estimare.
Pentru a elimina podeaua din prelucrări trebuie să “învățăm ” cum sunt distribuite distanțele ș i
valorile neconcludente direct de pe rândurile din toate imaginile și să fie puse înt r-o zonă goală
pentru a le utiliza în etapele următoare. Cu toate acestea, această abordare ne se poate adapta la
modificarea unghiurilor de înclinare. În plus, o imagine obișnuită în timpul unei operațiuni
normale de prelucrare poate conține mai multe ob stacole, cee ace face ca învățarea complete a
acestor valori pentru toate rândurile din imagine să fie dificilă. Această tehnică este bună pentru
scenario în care o cel puțin o parte din podea este vizibilă întotdeauna. Aceasta permite eliminarea
unei supr afețe netede. Poate fi utilizat pentru suprafețele de drumuri ce prezintă umflături,
deoarece acest scenariu tipic implică segmente goale de drum, ce pot fi utilizate la învățare. Nu
poate fi utilizată pentru parcurgerea unui teren arbitrar.
Această metodă presupune parcurgerea unui traseu cunoscut și plat. De asemenea
parametrii camere i și orientarea între ele sunt cunoscute din procesul de calibrare făcut la început.
Procesul de recalibrare făcut în timp real la fiecare pas de reconstruire estimează ungh iul camerei
față de podea (traseu) . Așadar procesul de calibrare estimează rotația dintre coordonatele
sistemului camerelor. Valorile de calibrare sunt calculate e baza a două poziții de reconstruire care
sunt parte din planul podelei P. Procesul de recon strucție realizează poziția 3D pentru fiecare punct
din imagine. Doarece sistemul trebuie să fie utilizat pentru a Evita coliziuni, probabilitatea ca
partea de jos (rîndurile de pixeli) a imaginii să fie podeaua (sau cel puțin parția) este mare. În
acestă abordare histograma întregii imagini este calculate și punctele maxime sunt folostie pentru
a estima valorile neconcordante de pe rând. Un pixel de pe fiecare rând cu exact aceasta valoare
estimate este folosit pentru a estima coordonatele punctului Px în sistemul de coordinate al planului
imagine. Unghiul pe care îl formaeaza camerele cu planul orizontal poate fi calculate ca produs
scalar a vectorului diferentă normalizată dintre două sau cele 10 puncte extrase și vectorul
normallizat de -a lungul axei z.
În imaginea rezultată obiectele detectate sunt reprezentate sub forma unor clustere de pixeli
care trebuie segmentate în regiuni. Imperfecțiunile ce apar în procesul de reconstructive și textura
săracăcioasă a imaginii rezultate duce la go luri în imaginil e diferență. De aceea, micșorăm
regiunile vecine pentru 2 grupui de pixeli. Se permit decalaje între clustere vecine pentru a preveni
regiunile reconstruite de împărțirea lor în alte grupuri mai mici. Care are diminua rezoluția
algoritmului de planificare care ar utiliza aceste date. [1]
19
3.4 Detecț ie cu retele neuronale
Aceast ă abordare este inspirat ă din sistemul biologic si are ca model creierul uman. Asadar se
bazeaza pe functii si nume din diferite module ale sistemului de vedere uman. Aceste module
aproxi meaza functii ale partilor lor biologice. Se foloseste un amestec dintre retele neuronale si
algoritmi de procesare standard pentru implementarea a cestor functii .
Sistemul recunoaste imagini in nuante de gri. Imaginile pot avea rotatii si translatii arbitr are.
Se omit anumite trasaturi biologice – binocularitatea, dimensiunea, perceptia miscarii,
sensibilitatea culorilor, si recunoasterea limitelor virtuale. In felul acesta se studiaza arhitectura
simplificata a sistemului de vedere . Mai mult decat atat,ace ste trasaturi sunt irelevante pentru multe
dintre aplicatii.
Arhitectura acestui system include doua canale majore care lucreaza impreuna. Canalul cauta
obiectele de interes in campul vizual, si dupa ce acesta este gasit, canalul al doilea le clasifica.
Studiile facute asupra sistemului de vedere uman ca si cel al animalelor, arata ca functiile de
localizare (cautare) si de clasificare sunt separate.
Canalul de localizare urmareste forma si culoare obiectelor, pe cand cel de clasificare
urmareste miscarea din campul vizual.
Cautarile arata ca in sistemul de vedere uman are loc un process de feedback. Asadar exista
un system de control de feedback aplicat asupra detectorilor de caracteristici. Acest model de
recunoastere este mai mult un proces activ de feed back care poate reconsidera etapa de extragere
a trasaturilor. Aceast pas se repeta pana cand intrarea transformata se potriveste cu clase de stimuli
cunoscute . Cercetatorii sugereaza ca exista un mecanism de directionare a atentiei in campul
vizual. Pe sc urt are loc o suprapunere. Suprapunerea atrage atentia asupra detaliilor mici si de
asemenea distrage atentia de la alte obiecte. Cercetatorii suspecteza faptul ca creierul uman
directioneaza procesul de suprapunere in mod automat.
În concluzie vedere a uma nă reprezintă un sistem in care un numă r mic de etape seriale (senzor
– preprocesor – caracteristici – extragere – clasificator) proceseaza matrici mari de date in paral el.
Arhitectura acestui sistem are doua canale care folosesc semnale de feedforward si feedback. [4]
3.4.1 Operaț iile de clasificare a caracteristicilor
În aceasta sectiune sunt explicate pe scurt operatiile care se efectueaza in procesul de
clasificare .
20
Urmatoarele componente fac parte din arhitectura canalului de clasificare:
• LGN (lateral geni culate nucleus) – este ca un buffer si plaseaza un cadru in jurul unui
obiect ;
• V1 (visual area 1) – extrage caracteristici de rezoltutie inalta din imagine
• V2 (visual area 2) – extrage informatii despre forma generala a unui obiect (arie, perimetru)
Compon enta LGN foloseste intrarile de la canalul de localizare, pentru a plasa cadru asupra
obiectului. Se seteaza marimea cadrului pentru a incadra obiectul, astfel sistemul nu imita
dimensiuni. Pornind de la o imagine de 525×525 rezolutie, exemplu foloseste un cadru de 175×175.
Pentru a calibra si normaliza cadranul LGN lucreaza pe imagine in nuante de gri. Procesul de
calibrare realizeaza o histograma construita pe baza valorilor pixelilor din imaginea formata de
obiect si normalizeaza valoarea fiecarui pixel astfel incat LGN sa formeze o matrice de pixeli de
valori 0 sau 1. Aceste doua trasaturi dezvolta contrastul imaginii si ajusteaza luminozitatea.
Componenta V1 sparge fereastra 175×175 in ferestre mai mici de 7×7. Dimensiunea acestor
subferestre nu are leg atura cu dimensiunea imaginii de la intrare. Fiecare aceasta subfereastra este
procesata de o „harta spirala” si de „visarea1”.
Harta spirala scaneaza subferestrele folosind un model spirala. Maparea realizeaza
urmatoarele: de la stanga la dreapta pe rand ul de sus, jos coloana din dreapta, de la dreapta la
stanga pe randul de jos, si asa mai departe pana cand se finalizeaza procesul (ajungem la centrul
ferestrei) . Scopul maparii in spirala este de a simplifica interpretarea caracteristicilor.
Visarea1 – realizeaza extragerea imaginilor de rezolutie mare. Pentru fiecare fereastra de 7×7
pixeli, VISREA1 masoara gradientul de luminozitate (creste sau scade) in patru directii deiferite .
Gradientul este o caracteristic a a imaginilor in nuante de gri si este ase manatoare cu imaginile
binare. Luminozitatea din sistem este rata de schimbare a luminozitatii subferestrei 7×7 pixeli.
Ferestrele cu o scadere brusca a luminozitatii o sa aiba un gradient mare. Cele care vor avea
21
schimbari de luminozitate o sa aiba gradi ent mic . Si cele cu luminozitate uniforma (exemplu cele
nu nici un fel de margini vizibile) o sa aiba gradientul zero.
Deoarece la schimbarea directiei luminozitatea se poate schimba, gradientul nu este constant.
De aceea se calculeaza gradientul in patru directii deiferite: pe verticala, orizontala, 45o pe
diagonala pentru fiecare subfereastra de 7×7 .
Pentru interpretarea valorilor dupa cele doua etape se foloseste componenta V1. E rearanjeaza
iesirile obtinute intr -un vector vertical. In figura de mai s us sunt 2500 de valori pentru o fereastra
de 175×175. Pentru ca fiecare subfereastra produce 4 valori. In prima parte a vectorului (cea de
sus) pastram valorile partilor care nu ne intereseaza si in partea de jos a vectorului paretile care ne
intereseaza. Datele despre forma generala din imagine poate fi gasit a in partea de sus a vectorului
si datele despre interiorul formei in partea de jos a acestuia.
V2 – este comp onenta care detecteaza marginile. Este parte din canalul de localizare si iesirea
sa ofera informatii despre forma generala din imagine. Pentru a detecta marginile, V2 produce o
defocalizare a imaginii 7×7 in imaginea 175×175. In imaginea defocusata, fiecare pixel corespune
unei subferestre din imaginea de baza. Seturile de medie (average) a dimensiunii subferestrelor
care partitioneaza imaginea de baza si care apoi aduna o valoare a unui pixel semnificativ pentru
fiecare subfereastra. VISAREA2 detecteaza marginile langa ccele 4 pparti ale imaginii defocusate.
Iesirea acestui modul contine 4 valori care masoara marginile nord sud, est, vest ale imaginii
175×175.
Sumatorul este al treile a modul care realizeaza suma dintre valorile pixelilor de la intrarea
ferestrei. Asadar singura iesire din sumator masoara marimea obiectului.
Sistemul clasif ica obiectele prin folosirea caracteristicilor bazate pe structura detaliata (V1),
pe forma (V2), si pe dimensiune (SUM). Mă rimile diferite ale subferestrelor din V1, V2, SUM
aproximeaza dimensiunea suprafetelor ale cortexului vizual. În exemplu din figura de mai sus
pentru o fereastra de 175×175 , exista 2500 valori de la V1, 4 valori de la V2 si o valoare de la
SUM,. Aceste valori pot fi ajustate pentru a influenta marimea, forma si structura obiectului.
Procesul de recunoștere conț ine un clasificator nesupravegheat (ITC1) , urmat de un
supraveghetor (ITC2) . Pentru clasificatorul nesupravegheat , se folosește reteaua neuronală .
4 Structura hardware a robotului mobil
Se urmăreș te să se construiască un robot mobil care să aibe capabilităț i de detectare a unei linii
negre (traseul robotului) și în cazul in care, pe traseul pe care ac esta il parcurge apare un obstacol,
se va realiza o prelucrare a imaginii captate, în timp real, și se va ocoli obstacolul astfel încât să
ajungă tot pe traseul inițial .
Componentele din care este construit robotul sunt urmă toarele:
1. Raspberry PI 3 – este un mini calculato r, de costuri reduse , care permite utilizatorului să
se conecteze la o interfață de tip Desktop fol osind un laptop. Este capabil să realizeze
aceleasși operaț iuni pe care un calculator le poate efectua (navigar e pe internet, redare
video de înaltă calitate , poate procesa cuvinte, poate crea fișiere, le poate șterge sau
modifica, ș i de asemenea poate fi utilizat pentru a programa aplicatii). Prețul unei ast fel de
plăci este de 215 RON (a fost achizitionat de pe Robofun). Desigur, dezavantajul major al
acestu ia ține de puterea de procesare pe care o are. Acest lucru face ca execuția în timp real
a programelor complexes ă fie îngreunată, iar rezultatele să nu poată fi întocmai cele dorite.
22
Figura 8 Placa Raspberry version 3 Model B
2. Componentele suplimentare de care placa Ras pberry PI 3 are nevoie sunt următo arele:
• Cablu Internet (25 RON – Emag) – conectarea minicalculatorului la laptop se
realizează printr -un cablu internet/ wifi (versiunea Rasppbery Versiune 3 Model B
are integrat ad aptor wi -fi).
• Tastatura USB (34 RON – Emag)
• Mouse USB (35 RON – Emag)
• Monitor / Laptop/ Televizor cu intrare HDMI – pentru efectuarea experimentelor
este mai complicată dacă raspberry este conectat prin cablu la un monitor, sau
televizor și de aceea o solu ție ar fi să se creeze un desktop virtual al raspberryu -lui
in sistemul de oper are windows . O altă soluție ar fi conectarea prin remote desktop .
• SD Card -16 GB necesar pentru a putea insta la sistemul de orerare Rasbian și alte
biblioteci de care va fi nevo ie în prelucrarea imaginilor (50 RON Emag) .
• Cablu Micro USB (pentru alimentare raspberry)
3. Senzori QTR -C pentru detective traseu (80 lei – robofun)
4. Camera web (60 RON -Altex )
5. Acumulator 12 V pentru alimentare bara senzori și cele două motoare (70 lei robofu n).
6. Motoare electrice micro metal 100:1 HP (63 RON/bucata – Robofun)
7. Driver de motoare (punte H) – nu putem conecta un motor direct la microcontroller
deoarece acesta nu poate asigura curentul necesar pentru funcționarea motorului. Prin
urmare, controlul m otoarelor este realizat folosind o punte H. Puntea H primește input de
la microcontroller și generează output -ul corespunzător pentru motoare. Aceasta permite
controlarea vitezei și a sensului de rotație a motoarelor. (15 RON – Magazinul de
Mecatronica)
8. Roti cauciuc (24 RON – Robofun)
9. Platforma robot ( 40 RON – Robofun )
23
Așadar, în urma enumerării componentelor din care sistemul mobil este construit, reiese că, prețul
pentru un astfel de robot este destul de ridicat, mai ales în cazurile în care se mai înloc uiesc
componente din diverse motive (de exemplu arderea motororului).
5 Software folosit
Raspbian este un sistem de operare open source bazat pe linux proiectat special pentru
raspberr y pi. La fel cum pe laptopuri gă sim windows, os si linu x asa si raspberry pi-ul are propriul
sistem de operare. Dupa cum poate ati auzit linuxul este gratis, la fel si Wheezy este bazat pe linux,
asta insemnand ca au adaptat kernerul (codu sursa al sistemului) astfel incat sa consume cat mai
putine resurse, deoarece raspberry -ul nu detine un hardware foarte performat. Raspberry PI are un
atuu foarte mare. Sistemul de operare se afla intr -un simplu sd card. Acest sd card il putem folosi
si in telefoanele mobile, doar ca el trebuie sa fie de minim 4 Gb astfel incat sa fie loc si p entru
sistem si pentru eventualele pachete ce vor fi adaugate dupa pornirea lui. Si mai uimitor este faptul
ca daca se doreste un alt sistem de operare, se poate formata sd card -ul si poate fi inlocuit cu altul
sau se poate schimb a sd card -ul cu altul d e schimb.
Primul pas este de a descarca sistemul de operare de pe pagina lor oficiala
(https://www.raspberrypi.org/downloads/) Se allege versiunea in care scrie ”Raspbian”. Se
dezarhiveaza imaginea iso descarcata.
Se instaleaza programul cu care se va fac e imaginea iso bootabila pe sd card. Acest program
se numeste Win32DiskImager.
Se deschide exe -ul de la diskimager -ul si se observa ca in partea dreapta sus ca exista sectiunea
Image File. Acolo vom incarca imagine iso a sistemului.
Figura 9 Încărcare imagine ISO a sistemului
Apoi se selecteaza partiț ia pe care se află sd cardul î n sistem (in cazul meu este H:)
24
Figura 10 Selecteaz ă partiția pe care se află card sd
După ce totul este gata, se apasă butonul Write ( din partea dreapta jos ) și se așteaptă terminarea
scrierii programului .
Ultimul pas, este pasul î n care procesul s -a terminat cu succes. Trebuie inlăturat cardul, pentru a
evita unele probleme și nu î n ultimul rând să se introducă sd cardul î n raspberry pi. După acesti
pași se va putea conecta minicalculatorul la sursa de curent.
5.1 Alegerea limbajului de programare pentru realizarea
sistemului software
Raspberry Pi nu a fost nimic altceva decât o revoluție în introducerea calculatoarelor a
milioane de oameni din întreaga lume și fiind unul dintre cei care au introdus programarea
calulactoarelor. Dispune de un hardware sufficient de puternic pentru a putea programa și rula un
program și are un preț foarte scăzut.
Producătorii de Raspberry Pi au acordat, de a semenea o atenție deosebită pentru a garanta
faptul că barierele de pornire sunt minime. Distribuția recomandată de Linux pentru Raspberry Pi
este Raspbian, care conține mai multe limbi de programare și IDE -uri.
Limbajul de pro gramare care este în mod imp licit instalat pe Raspberry Pi, este Python. Este
una dintre cele mai populare limbaje de programare din lume și este foarte des utilizat în mediile
academice. De asemenea, este o platforma larg acceptată în aplicațiile modern, în special utilitare,
aplica ții desktop și cele web. Este un limbaj recomandat pentru ca este ușor de învățat pentru noii
veniți . Python este un limbaj care convinge prin intermediul structurii clare pe care o are , și în
același timp prin faptul că oferă posibilitatea de a automatiz a orice proces într -un timp destul de
scurt. În cadrul programului Python nu se declara variabile, tipuri, clase sau reguli de aceea modul
25
de utilizare al acestuia este relative simpl u. Are sintaxe ușor de citi și este usor de introdus un nou
venit în limb ajul de programare Python.
Ultima versiune a sistemului de operare Raspbian vine împreuna cu cele două versiuni de
python. Versiunile sunt: Python 2.7.3 sau 3.3.0.
Figura 11 Pornire Python
Cele două versiuni sunt instalate direc t. Diferența dintre cele do uă versiuni o constituie sintaxele
diferite cu care se realizează programele, ceea ce duce la imposibilitatea de a rula același program
pe ambele versiuni python . De asemenea, anumite biblioteci care au un rol destul de important în
realizarea programelor (de exemplu PyGame – folosit în programarea jocurilor și pentru afișarea
grafică pe ecran) nu sunt momentan disponibile pentru versiunea Python 3.x. Acesta este motivul
pentru care, în dezvoltarea acestei aplicații a fost folosit ă versiunea python 2.7.3 .
Python 2.7.3 se deschide de pe desktopul raspberry prin folosirea simbolului IDLE.
Figura 12 Fereastra pentru introducerea datelor în python
În aceasta fereastră se scriu instrucțiuni pentru deschider ea programelor existente python, se pot
edita aceste programe sau se pot prelucra direct prin folosirea comenzilor python. Python este un
limbaj ideal pentru programare, pentru ca este ușor de învățat și de folosit.
Combinația dintre python și raspberry P i poate fi folosită cu mai multe scopuri. Unele
dintre cele maik populare elemene sunt :
26
• Învățarea de a creea aplicații cu ajutorul lui Python
• Conectarea lui Raspberry Pi la mai mulți senzori și primirea informațiilor generate de
aceștia – de exemplu monito rizarea mediului prin senzori de temeperatură etc.
• Folosirea lui Raspberry Pi ca un server web cu un program scris în Python.
• Scrierea numeroaselor utilități scrise în python și utilizarea lui raspberry ca server pentru
monitorizare și urmărirea a multiple lor aplicații, servicii etxc.
Acestea sunt doar o parte din lucrurile pe care raspberry le poate face. Python poate fi deschis fie
din IDE (Integrated Development Environment), c ât și din terminal în funcție de nivelul de confort.
Python vine cu un IDE si mplu numit IDLE. Atât python 2 cât și python 3 IDLE sunt disponibile.
Pentru a efectua diferite tipuri de funcționalități există mai multe pachete python care sunt
puse la dispoziție în arhivele sistemului de operare Raspbian. Aceste pachete sunt în afar a
limbajului de baza si de aceea trebuie instalate separat. Și una dintre modalitățile recomandate de
a instala aceste pachete este prin utilizarea comenzilor standard apt -get:
• Sudo apt -get update
• Sudo apt -get install <python_package -name>
Însă nu toate p achetele sunt disponibile în arhivele sistemului de operare Raspbian, și în acest
caz este mai bine să se folosească sistemul standard pentru managementul pachetelor Python.
5.2 Setarea conexiunii la Internet raspberry -ului
În windows , pe mașina pe care se fa ce conexiunea la raspberry, se accesează : Start>
Panou de c ontrol > Internet ș i partajare > se accesează conexiuni wi -fi.
Figura 13 Conectarea la raspberry prin cablu ethernet
Se accesează apoi butonul de proprietăț i, apoi cel d e partajare ș i se bifează „permite altor
utilizatori să se conecteze”.
27
Figura 14 Setare conexiune internet
După bifare a opțiunii „Allow other network users to connect through the computers
internet connection ” se setează un ip dinamic pe po rtul de internet al laptopului ș i se inclu d toate
dispozitivele conectate la acesta.
Pentru a afla adres a ip se accesează : Start > Run >cmd și în fereastra deschisă se scrie:
$: ipconfig (adresa care se termin ă cu ip v4 este ip -ul alocat l aptopului)
Pasul următor este să se instaleze serverul VNC. Instalarea Serverului VNC pe cele doua
calculatorare face posibila vizualizare virtuala a desktopului a raspbery -ului pe laptop. De
menționat e faptul că se poate acces a internet ul de pe raspberry prin intermediul cablului ethernet
conectat la laptop, iar după ce conexiunea la raspberry s -a efectuat se poate face o conexiune direct
prin wireless care face ca utilizarea cablului de ethernet să numai fi necesară. După ce se realizează
conexiunea se c ompletează credențialele pentru raspberry pi , cele cu care vine automat sunt pentru
parola „raspberry” și pentru utilizator “pi”.
După ce se realizează conexiunea la desktopul raspberry se acceseaza terminalul în care se
scriu următoarele comenzi:
28
#sudo ap t-get update
#sudo apt -get install tightvncserver
Urmează apoi pornirea serverului VNC pe raspberry . Pentru a face acest lucru se executa
urmatoarea comanda: #vncserver :1
Trebuie introdusă o parolă. Se setează o par ola și se introduce de două ori. La intrebarea dacă se
dorește crearea unei parole separate „read -only”,se completează cu litera n ș i se acces ează butonul
enter. După câteva secunde serverul va porni. Se va scrie în terminal următoarea comandă :
#hostname -I (pentru a aparea ip -ul raspberry -ului).
Pentru a realoza u rmătorul pas trebuie descarcat serverul VNC si instalat. Cand fereastra de
conectare la prin VNC va porni pentru prima data , va arata ca in figura de mai jos:
Figura 15 Serverul VNC
În secțiunea „ VNC S erver ” se introduce adresa din raspberry pi indicată prin comanda
#hostname -I și în plus mai trebuie introdus numarul portului care in cazul acesta este 1. Pentru
a realiza con exiunea cu raspberry trebuie ap ăsat butonul „Connect ”. Va aparea un mesaj de
avertiz are, care poate fi ignorat bifand optiunea „ Do not warn me about… ”si se apas ă butonul
„Contiune”.
Figura 16 Mesaj de avertizare
Va aparea o fereastr ă în care trebuie scrisă parola care a fost intro dusă la inceput, la setarea
serverului VNC pe raspberry PI.
29
Figura 17 Intoducere parola pentru server VNC
În final, desktopul vir tual pentru raspberry va fi afișat, astfel încâ t conexiunea la raspberry
va putea fi efectuata fară a mai fi nevoie de cablu hdmi, ci direct prin serverul vnc .
Setarea care mai trebuie făcută pentru ca serverul VNC de pe raspberry să pornească la fiecare
repornire fără să mai necesite alți paș i sup limen tari se introduce o comandă la fiecare repornire.
Mai intâi trebuie introdusă comanda:
#cd /home/pi
#cd .config
Se creează un dosar numit „autostart”. De asemenea se creează un fiș ier numit
„tightvncserver.setup” în acel dosar. Pentru crearea fiș ierului se poate folosi editorul gnome
implementat î n terminal.
#mkdir autostart //creare director autostart
#cd autostart //navigare in director
#gnome tightvncserver.desktop //deschidere fisier in editor gnome disponibil in terminal
În fiș ierul ce se deschide tr ebuie introduse urmă toarele:
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
La urmă toarea repornire a raspberry -ului, serverul VNC va porni automat .
5.3 Open CV
OpenCV reprezint ă o librarie gratuită, folosită pentru dezvo ltare și cercetare î n domen iul
vederii artificiale. Această librarie conține peste 2500 de algoritmi și functionează sub urmă toarele
sisteme de operare: Windows, Linux, Android , Mac OS. Ea poate fi folosita în urmă toarele limbaje
de programare: C++ , C, Java, Python , Matlab . OpenCV oferă o infrastructura bine structurată
30
pentru a realiza diverse aplicaț ii complexe ce se bazează pe vederea artificială . O parte din
algoritmii care se gasesc î n cadrul librariei sunt :
• Cei pentru recunoaș terea feț ei
• Cei pentru id entificarea obiecte lor
• Cei pentru urmărirea obiectelor aflate în miș care (bazați pe diferențe de imagini)
• Cei folosiți pentru găsirea imagini lor similar e făcând comparați cu cele existente deja într –
o bază de date
• Cei pentru e liminarea ochilor rosii din poze
• Cei pentru u rmărirea ochilor în miș care.
Vederea artificiala reprezintă procesul de transformare a datelor primi te de la o camera foto
sau video într -o reprezentare nouă sau chiar î n decizii. Atunci cand vine vorba despre detectarea
unui obstacol de p e traseu, c amera sau camerele (în funcție de cât de precis se dorește a fi procesul
de recunoaștere), poate fi montată pe o maș ina și se poate indica faptul ca mobilul se apropie de la
o anumita distanță (determinată prin experimente) de obiectul din calea acestuia. În gener al, atunci
când nu se ia in calcul vederea artificială, aceste observaț ii – ce țin de distanța față de obbstacol
sau detectarea obstacolului pe trase, se fac intuitiv de către o persoană .
Domeniul vederii artificiale este unul dintre ce le mai căutate domenii și care a ajutat
cercetătorii să dezvolte aplicații foarte utile în care este necesară extragerea informații lor din
imagini . Aplicațiile care conțin astfel de mecanisme sunt :
• Identificarea automată a num ărului de la maș ina
• Identifica rea țintelor aeriene
• Identificarea feț ei
• Identif icarea unor regiuni de interes î ntr-o imagine (grupuri de pixeli)
• Procesarea filmelor
Există deja multe programe care realizează aceste procesări. Însă când avem nevoie să
proce săm zeci, sute sau chiar mii de imagini sau cadre , este es ential să se creeze propria aplicație
care să realizeze aceste lucruri.
5.3.1 Instala rea OpenCV
După descărcarea librăriei OpenCV, înainte să se treac ă la procesul de instalare al acesteia ,
trebuie mai întâ i descarcat programul CMak e (open -source) . CMake e folosit ca sistem de build.
Este o familie de instrumente folosite pentru a constui si a testa. CMake e creat pentru a controla
procesul de compliare software si s pentru fisiere de configurare independente. Acesta genereaza
fisiere make native si spatii de lucru ce pot fi folosite in mediul de compilare dupa alegerea
utilizatorului. Dupa instalare CM ake se trece la instalare OpenCV si se obtine o fereastra, se apasa
31
butonul “Configure” de doua ori apoi se apasa buton “Generate” . Dupa instalarea librariei OpenCV
se verifica dosarul in care a fost pusa aceasta.(Trebuie sa existe un fisier OpenCV.sln)
Comenzile folosite in Debian (sistemul de operare pentru raspberry) sunt urmatoarele:
• tar xvzf raspicamxx.tgz
• cd raspicamxx
• mkdir build
• cd build
• cmake
Pentru a verifica daca libraria OpenCV este instalata trebuie verificat fisierul
/opt/vc/lib/libmmal_core.so;/opt/vc/lib/libmmal_util.so;/opt/vc/lib/libmmal.so si aici sa existe –
CREATE OPENCV MODULE=1. Altfel daca valoarea este 0 inseamna ca libraria nu va putea sa
fie compilata .
După aceasta verificare trebuie să se facă instalarea si actualizarea pentru ldconfi g folosind
urmă toarele comenzi:
• make
• sudo make install
• sudo ldconfig
După executarea acestor comenzi vor e xista programele raspi cam_test ș i raspicam_cv_test (doar
dacă OpenCV a fost activat) .
5.3.2 Metode de captare imagini și video cu OpenCV
După instalarea librariei OpenCV și după ce verificarea a fost făcută cu su ccess, se deschide
terminalul din rasbian și se scrie urmă toarea com anda: #raspvid –t 10000. Această comanda va
desch ide camera ș i va face un video de 10 secunde.
De asemenea atunci câ nd se deschide camera se pot seta următorii parametrii: înălțimea și lăț imea
pozei, formatul conversiei RGBA și frecvenț a. Acest lucru se face apelâ nd metoda StartCamera
cu parametrii doriți. Ea returnează un pointer către un obiect Camera:
Camera* mycamera = StartCamera(512,512,30,1,true); Acest obiect este o imagine de 512*512
de frecvență 30Hz de nivel 1 ș i conversia RGB A active.
5.3.3 Extragere in formații din imagini cu OpenCV
O dată ce camera a pornit se pot extrage mai multe frame -uri de la camera prin apelarea
metodei ReadFrame pe care o punem într-un buffer:
Char mybuffer[512*512*4]
Mycamera.ReadFrame(0,mybuffer,sizeof(mybuffer));
32
Aceasta meto da va returna un num ăr de by tes care sunt cititi sau -valoarea 1 dacă există o eroare.
Eroarea poate să apară din motive precum: lipsa datelor disponibile sau daca bufferul nu are
sufficient spatiu.
In plus fata de metoda ReadFrame sunt alte două functii: BeginReadFrame si
EndReadFreame.
Inchiderea camerei se face apeland metoda StopCamera().
În procesarea imaginilor se obiș nuiește ca datele să aibe diferite rezoluții. Operațiile
scumpe au nevoie să fie făcute cu rezoluț ii mai s labe pentru a rula la o frecv ență cât mai bună, dar
poate că totuși este nevoie de rezoluție mai bună pentru alte operaț ii utilizat e în același program
sau doar pentru a afiș a doar pe ecran. Api-uil PiCam va face asta automat pana la nivelul 3. De
aceea trebuie specificat ca parametru in metoda StartCamera:
CCamera* mycamera = StartCamera(512,512,30,4,true)
Sistemul va genera automat imaginea principal si in plus alte 3 la jumatate din rezolutie, la un
sfert din rezolut ie si la 3 sferturi din rezoluț ia principal. Apoi acestea sunt acc esate prin
specificarea nivelelor de rezoluț ie:
• mycamera ->ReadFrame(0,mybuffer,sizeof(mybuffer)); //la rezoluț ia intreaga
• mycamera ->ReadFrame(1,mybuffer,sizeof(mybuffer)); //la jum ătate din rezoluția
întreagă
• mycamera ->ReadFrame(2,mybuffer,sizeof(mybuffer) ); //la un sfert din rezoluția întreagă
• mycamera ->ReadFrame(3,mybuffer,sizeof(mybuffer)); //la 3 sfert uri din rezoluția
întreagă
Aplicatia demo cu care vine openCV instalata e formata din u rmătoarele fisiere:
• camera.h/camera.cpp
• cameracontrol.h/cameracontr ol.cpp
• mmalincludes.h
33
6 Soluția de recunoaș tere a obstacolelor de pe traseu
Lucrarea prezintă, în linii mari, problematica unui sistem automat care realizează un proces
de prelucrare a imaginilor și de recunoaștere a obiectelor din cadrul acestora.
Preluc rarea imaginilor repr ezintă un domeniu ce are la bază o teorie matematică riguroasă și
care face, în general, ca implementările pe diferite mașini de calcul să fie mari consumatoare de
resurse (memorie, putere de calcul), mai ales când se dorește utilizare a în timp real a informațiilor
extrase din imagini.
Imaginile reprezintă rezultatul unei variații a intensității luminii într -un spațiu bidimensional.
Acest rezultat se concretizează într -un semnal bidimensional. De aceea, pentru implementarea
algoritmilor folosiți în prelucrarea acestor semnale în timp real, se folosesc procesoare dedicate
numite și procesoare digitale de semnal (DSP = Digital Signal Processing). Motivul pentru care
sunt folosite aceste procesoare este acela că oferă optimizări și paraleli sme ce reduc puterea de
calcul necesară în procesarea rapidă.
Prelucrarea imaginilor include mai multe discipline:
• Prelucrarea, compresia și stocarea imaginilor;
• Restaurarea și ameliorarea imaginilor prin corecții geometrice, ajustări de contrast,
filtrare a zgomotului etc.;
• Măsurători ale unor obiecte, fenomene realizate pe baza unor imagini;
• Recunoașterea formelor (pattern matching, shape recognition, face recognition);
• Vederea artificială (computer vision, robot vision);
• Inteligența artificială;
• Sinteza d e imagini, imagini generate de calculator;
Achiziția și prelucrarea imaginilor reprezintă un domeniu relativ nou în raport cu instrumentația
sau culegerea și procesarea datelor.
7 Experimente detecț ie obstacol
În capitolele anterioare a fost prezentată stru ctura hardware a sistemului folosit pentru
elaborarea lucrării.
În acest capitol se prezintă experimentele efectuate prin intermediul unei camere web și un
minicalculator Raspberry PI pentru extragerea și procesarea informațiilor în timp real.
Pentru efe ctuarea acestor experimente s -au realizat diverse programe în Python ce folosesc
biblioteca SimpleCV – este o biblioteca ce aparține de OpenCV . SimpleCV este un framework
open source, folosit pentru construirea aplicațiilor ce țin de vederea artificială. Prin intermediul
34
acestui framework, se obține acces la mai multe biblioteci care ajută la procesarea de mare viteză
a imaginilor, cum ar fi OpenCV – fără a fi nevoie ca sistemul să învețe mai întâi despre adâncimi
de biți, formate de fișiere, spațiile de c uloare, valori proprii sau matrici de stocare. Acest
framework face ca procesarea să fie mai ușor de realizat.
Pentru realizarea lucrării s -au parcurs mai multe etape, acestea fiind prezentat e în figura de mai
jos:
Figura 18 Schema planului de realizare a lucrării
Pașii prin care s -a trecut, în vederea punerii în aplicare a sistemului propus, constau în:
• Proiectarea unui algoritm folosind framework -ul de vederea artificială, SimpleCV, utilizat
pentru detectarea obstacolelor
• Impl ementarea algoritmului pe Raspberry PI
• Implementarea algoritmului de control al celor două motoare pe Raspberry PI folosind
limbajul de programare Python
• Testarea si evaluarea performanței sistemului propus folosind Raspberry PI
• Mai mult decât atât, s -au realizat experimente în care s -au luat în calcul diferite
caracteristici ale obstacolelor:
• Diferite forme geometrice (cerc, pătrat, linii) cu mărime fixată într -un anumit interval
• Diferite culori și nuanțe ale obiectelor (de la cele mai intense la cele mai pale)
• Diferite mărimi ale obiectelor – în care s -au luat în calcul ariile și perimetrele acestora
Sistemul a fost testat și evaluat prin modificarea codului și detectarea obstacolului la diferite
distanțe.
35
7.1 Recunoașterea bazată pe forme geometrice
Un pri m experiment a constat în construirea unui program care să extragă din imagine
diverse geometrice: cerc, pătrat, linii. În prima parte a programului se achiziționează imaginile una
după alta, la un interval de mai puțin de 1 ms. Imaginile au fost capturate la o rezoluție de 320X240.
Înainte de a scrie algoritmul de detecție, a fost necesar să se facă o alegere cu privire la rezoluția
ecranului, care ar permite Raspberry să detecteze și să urmărească obstacolul. Deoarece Raspberry
PI este un computer ce nec esită alimentare scăzută și care are o viteză a procesorului de 700MHz
și o memorie RAM de 1 GB limitată, o intrare video de înaltă rezoluție ar consuma o putere foarte
mare de procesare, ceea ce ar duce în cele din urmă la un sistem nesigur, funcționând f recvent la
limita resurselor sale. Prin urmare, trebuie să fie selectat un domeniu de mijloc pentru rezoluție,
care ar fi suficient pentru calculatorul Raspberry pentru a procesa datele furnizate de camera.
S-au capturat imagini una după alta la diferite r ezoluții în vederea efectuării unor prelucrări asupra
unor imagini mai clare. Rezoluția de la care s -a pornit a fost 1024X720. Rezultatele însă au fost
destul de slabe deoarece distanța de afișare dintre imaginile succesive era de până la 3 secunde.
Altă r ezoluție ce a fost luată în calcul la începutul etapei experimentale a fost: 800×600. Deși
rezultatele obținute au fost mai bune decât în cazul rezoluției 1024×720 (până la 1.5 ms), nu este
suficient de bună pentru prelucrarea în timp real. Astfel s -a ajun s la concluzia că, cu cât se folosește
o rezoluție mai mică (320X240), cu atât prelucrarea e mai rapidă. Acest lucru este limitat de
puterea de procesare a minicalculatorului folosit Raspberry.
7.1.1 Modul de funcționare a algoritmului de detecție
Sistemul pro pus este capabil să detecteze obstacole la diferite distanțe. Acest lucru s -a
realizat prin definirea numărului minim de pixeli în cod a obiectului căutat, fapt ce măsoară
distanța dintre cameră și obstacol. Configurarea pentru acest lucru a fost realizată prin
experimente.
Figura 19 Percepția vizuală
36
Schema următoare explică modul în care robotul ce folosește vedere artificială a fost
proiectat folosind Raspberry PI și framework -ul SimpleCV. După cum este prezentată structura de
comunicare a sistemului în figura de mai jos, o cameră web USB e conectată la Raspberry ca o
intrare de la calculator. Camera USB va scana cadre de intrare pentru o formă geometrică
specificată, în acest caz fiind un cerc, care va fi plasat ca obstacol. Mo tivul pentru care se face
marcarea obstacolelor ca formă geometrică a fost pur și simplu pentru a reduce timpul în momentul
pregătirii algoritmului. De obicei, detectarea obstacolelor pe bază de vedere artificială se realizează
cu ajutorul a două camere fo to, care creează viziune stereo pentru a judeca distanța dintre robot și
obstacolele. De aceea, detectarea unei forme geometrice adică cercuri folosind o singură cameră
foto a fost îndeplinită prin calcularea razei cercului care permite robotului să detect eze distanța
dintre robot și obstacol.
Figura 20 Funcționarea sistemului de detecție și ocolire
Raspberry Pi va rula un script Python, care va rula imagini video în timp ce va urmări să
găsească o formă geometrică – cerc, pătrat. Imaginea capturată este împărțită în două părți, fapt ce
va ajuta în luarea deciziei de control a robotului. Dacă cercul este detectat, atunci, în funcție de
37
locația cercului pe ecran, se va modifica direcția robotului – se vor activa și dezactiva pinii p ortului
GPIO – utilizați pentru a controla direcția robotului.
7.1.2 Etapa de binarizare
După capturarea primei imagini, aceasta trece prin procesul de binarizare. Astfel se va obține
o imagine alb -negru. Binarizarea constă în descompunerea imaginii într -un n umăr de regiuni
disjuncte, fiecare având un anumit grad de omogenitate în raport cu o anumită proprietate: nivel
de gri, culoare, textură, modulul gradientului funcției imagine, etc. Realizarea unei segmentări
corecte și complete în care regiunile separate pot fi puse direct în corespondență cu un anumit
obiect din imagine este dificil de realizat. Pentru a descrie corect obiectele din imagine procesul
de segmentare trebuie să facă apel la o serie de informații suplimentare legate de tipul imaginii de
segme ntat și să coopereze cu alte module de nivel înalt utilizate ulterior segmentării în analiza
imaginii. În cele mai multe cazuri însă procesul segmentării imaginii poate fi dus la bun sfârșit
utilizând tehnici de procesare de nivel scăzut. Astfel de situați i sunt cele în care imaginea constă
dintr -un număr de obiecte situate pe un fond uniform față de care există o diferență mare de
contrast (de exemplu obiectele situate pe o linie de asamblare, caracterele dintr -un fragment tipărit,
etc). Pentru imagini de acest tip operația de segmentare poate fi realizată în mod global, fără a
corela rezultatele obținute cu o serie de cunoștințe apriorice referitoare la obiectele din imagine. [3]
Presupunând ca fondul imaginii are o culoare închisă, pixelii imaginii binariz ate vor fi
etichetați conform relației:
𝑔(𝑖,𝑗)={ 1, 𝑑𝑎𝑐𝑎 𝑓(𝑖,𝑗)≥𝑇
0,𝑖𝑛 𝑟𝑒𝑠𝑡 (1)
Această relație are un caracter local deoarece noua valoare asociată pixelului analizat depinde
numai de valoarea pragului ales și de valoarea nivel ului de gri propriu. Binarizarea este
avantajoasă pentru imagini de dimensiuni NxN pentru că sunt necesare O(N2) operații. Însă ea nu
e deloc avantajoasă în cazul imaginilor cu fundal asemănător cu obiectele ce trebuie extrase.
După binarizarea imaginii este necesară o preprocesare a acesteia înainte de a trece la
detectarea și selectarea obiectelor urmărite, pentru că, în urma segmentării, se creează grupuri de
pixeli de aceeași valoare numiți blobi, care nu fac parte din elementele urmărite din imagine .
Acesta este un fenomen care apare datorită lipsei cantității de lumină necesară din mediul în care
se achiziționează imaginile sau datorită zgomotului din imagine. Cele două aspecte conduc la o
analiză și o interpretare a datelor mai dificile.
Această et apă de preprocesare este constituită din:
38
• Operația de eroziune – elimină toți pixelii izolați din fundal și erodează conturul în funcție
de forma elementului structural. Pentru un pixel P 0 central pentru un anumit grup de pixeli,
se consideră vecinii săi P i. Dacă valoarea unui pixel P i este egală cu 0 atunci P 0 este 0, altfel
P0 este 1.
• Operația de dilatare – are un efect invers eroziunii pentru ca dilatarea realizează erodarea
fundalului. Aceasta elimină toate golurile mici și izolate din imagine și măreșt e conturul
grupurilor de pixeli, în funcție de forma elementului structural. Se considera un pixel
centrat P 0 și se notează toți pixelii lui vecini cu P i. Dacă valoarea unui pixel P i este egală
cu 1 atunci și punctul central P 0 este 1, altfel este 0.
Astfe l, aceste operații înlătură cea mai mare parte din zgomot fără să afecteze în mod semnificativ
trăsăturile grupurilor de pixeli. Dacă există situații în care blobii se ating atunci se repetă operația
de erodare de mai multe ori până se obține o separare a elementelor din imagine.
7.1.3 Analiza grupurilor de pixeli
În urma etapei de binarizare urmează alegerea formelor geometrice. Aici s -au folosit
metode specifice din biblioteca SimpleCV pentru a găsi cercuri, pătrate sau linii.
Metodele findCircle (), findSqua re(), findLines (), măsoară atât coordonatele cercului, pătratului sau
liniei de pe ecran cât și coordonatele poziției relative ale acestora în raport cu regiunea de pe ecran.
Ecranul a fost împărțit în două părți, astfel încât, în funcție de poziția figuri i geometrice pe ecran,
să se poată lua o decizie asupra direcției de ocolire a obstacolului de către robot.
8 Probleme întâmpinate în recunoașterea bazată pe
forme geometrice
O problemă extrem de importantă în recunoașterea formelor dintr -o imagine este st râns
legată despre lumina din mediul în care se fac experimentele. În urma mai multor încercări de a
extrage una dintre cele trei figuri geometrice s -a observat ca acestea sunt greu de recunoscut
datorită zgomotului introdus. Rezultatele binarizării, erozi unii și dilatării sunt foarte diferite și nu
sunt întotdeauna rezultatele cele dorite. Scopul este cel de a înlătura, în urma procesului de
binarizare, dilatare și eroziune toate elementele care nu sunt utile în procesul de detecție astfel
încât, la final să rămână doar elementul căutat.
În acest experiment s -a utilizat un cerc negru pe o foaie albă.
39
Figura 21 Binarizarea 1 – pe timp de zi, fara a fi nevoie de o sursa de lumina auxiliara de la
un bec
Figura 1 7 prezintă un cerc ap roape perfect pentru care algoritmul de prelucrare a imaginii
funcționează, dar timpul de recunoaștere este suficient de mare, încât robotul nu ar avea cum să
modifice direcția în timp util.
Figura 22 Binarizare 2 -cand mediul e mai intunecat
Cercul din figura 18 nu este recunoscut în totalitate și acest lucru se datorează în mare parte lipsei
de lumină din mediul experimental. Algoritmul de prelucrare și detecție în acest caz eșuează .
40
Figura 23 – Binar izare 3 – cu lumina de la un bec
Figura 19 prezintă efectele pe care le are lumina de intensitate scăzută asupra procesului de
achiziție și prelucrare a imaginilor. Astfel, în acest caz se poate preciza faptul că recunoașterea
obiectelor din imagini trebui e efectuată astfel încât să nu depindă foarte mult de lumina din mediul
experimental.
Din experimentele efectuate în această etapă concluzia la care s -a ajuns este că forma detectată nu
este una foarte precisă de aceea nu poate fi detectată ca fiind o figu ră geometrică.
Cu cât lumina este mai slabă cu atât recunoașterea este mai dificilă. Lumina este un aspect
care nu poate fi compensat ușor, aceasta fiind dependentă de mediul în care se lucrează.
8.1 Îmbunătățirea algoritmului de recunoaștere a formelor
geom etrice
Un prim pas în a rezolva această problemă de formă a obstacolului, a fost introducerea unui
element nou, mai exact culoarea obiectului. Astfel pentru figura geometrică – cercul, s -a adăugat
culoarea roșie.
8.1.1 Detecție prin culoare și formă
Detectare a și segmentarea obiectelor sunt cel mai importante funcții în domeniul vederii
artificiale. Este partea cea mai critică în cadrul acestei aplicații și constă în căutarea obiectului din
imagini și vizualizarea clară a scenei. Cea mai mare problemă o consti tuie complexitatea claselor
de obiecte și fundalul în care acestea se găsesc.
41
Cea mai facilă modalitate de detectare și segmentarea a obiectelor din imagini utilizează metodele
bazate pe culori. Pentru aceste metode, obiectul și fundalul trebuie să aibă o diferență semnificativă
de culori pentru a segmenta obiectul pe baza metodelor bazate pe culoare.
Pentru detectarea cercului roșu – cazul experimentului folosit, se achiziționează o secvență video
care conține figura respectivă. Se binarizează fiecare ima gine capturată, creându -se un video binar
prin limitarea culorii roșii.
În imaginea binară, suprafața roșie va avea asignată valoarea 1 și restul suprafețelor vor avea
valoarea 0 astfel încât să se poată deosebi obiectul căutat din imagine.
De asemenea pe ntru a calcula distanța dintre obiect și robot s -a utilizat o metodă din SimpleCV
care calculează distanțele dintre pixelul de culoare roșie și restul pixelilor, astfel încât detecția să
fie făcută la distanța dorită.
În urma experimentelor realizate, avâ nd ca date de intrare cele menționate mai sus (un cerc de
culoare roșie pe o foaie albă )
, au fost întâmpinate următoarele probleme:
• Alegerea oricărei nuanțe de culoare pentru obiectul de detectat, se va găsi în toate culorile
din mediul în care se real izează experimentele, iar acest aspect nu asigură recunoașterea
clară a cercului. Deoarece culoarea roșie, de exemplu, e o nuanță care se găsește în
majoritatea culorilor – portocaliu, galben, alb, verde etc. Acest lucru se întâmplă pentru că
analizatorul vizual compară culoarea luminii reflectate de un obiect cu cele ale luminii din
mediu.
• Formele nu sunt clare deoarece sistemul detectează ca aparținând obiectului căutat grupuri
de pixeli care sunt prea mari și diformi.
Așadar, detecția bazată pe imagini RGB și formă nu se poate realiza datorită aspectelor de
luminozitate și ambianță. Soluția care a fost aleasă pentru a elimina aceasta problem ă este
prezentată în secțiunea 7.1 .
8.2 Detecție prin Convertirea imaginii RGB în HSV
Fiecare pătrat din imagine repr ezintă un pixel al imaginii. În imaginile reale, acești pixeli
sunt atât de mici încât ochiul uman nu îl poate diferenția. De cele mai multe ori spațiul de culoare
RGB (Red Green Blue) este mult mai potrivit pentru segmentarea bazată pe culori. Modelul RGB
este specific imaginilor fotografice digitale și este utilizat pe Internet în grafica web. Acest model
de culoare este folosit și la monitoare pentru producerea culorilor. În modelul RGB pe 24 biți
există 256 de variații ale fiecăreia dintre culorile adit ive primare roșu, albastru și verde. Rezultă
16,777,216 de culori posibile. Intensitatea fiecăreia dintre culorile primare este reprezentată pe o
42
scară de la 0 la 255, unde zero reprezintă absența totală a luminii iar 255 reprezintă intensitatea
maximă de lumină. [5]
Dar spațiu de culoare HSV (Hue Saturation Value) e cel mai potrivit pentru segmentarea
imaginilor bazată pe culoare.
De aceea imaginile au fost convertite din spațiu de culoare a imaginii originale din video
RGB în imagine HSV. Spațiu de culoar e HSV este de asemenea construit din trei matrici: HUE,
SATURATION și VALUE. În SimpleCV, intervalul de valori HUE,SATURATION și VALUE
sunt 0 -179, 0 -255 și 0 -255. HUE reprezintă culoarea selectată din paleta de culori, SATURATION
reprezintă cantitatea de a mestec a culorii cu alb – cât de pură este acea culoare și VALUE
reprezintă cantitatea în care culoarea e amestecata cu negru – intensitatea.
În experimente s -a considerat obiectul roșu ca având HUE,SATURATION și VALUE în
următoarele intervale 0 -255,0 -255, 0-255. Aici HUE este unică pentru o distribuire de culoare
specifică a obiectului. Dar SATURATION și VALUE pot să varieze în funcție de condițiile de
iluminare a mediului. [8]
Valorile HUE pentru culori de bază:
• •Portocaliu – 0-22
• •Galben – 22-38
• •Verde – 38-75
• •Albastru 75 -130
• •Violet 130 -160
• •Roșu 160 -179
Acestea sunt valori aproximative. Trebuie găsite intervale exacte pentru valorile HUE în funcție
de culorile obiectului. De asemenea valorile pentru SATURATION și VALUE depind și de
suprafața pe care se află obiectul.
Datele experimentale alese pentru experimente sunt prezentate în următorul tabel:
Hue Saturation Value Rezultat
43
Red 15 32
Hue Saturation Value Rezultat
Red 20 37
44
Red 25 40
Red 30 45
Hue Saturation Value Rezultat
Red 35 50
45
Red 50 35
Red 65 40
Hue Saturation Value Rezultat
Red 69 40
46
Aceste rezultate sunt unele dintre cele mai bune extrase în urma experimentelor. Cea mai
bună combinație este cea în care saturația este 50, valoarea este 35 și culoarea este ro șie. Aici se
poate observa cea mai mică variație în recunoașterea diferențelor de culoare a celorlalte obiecte.
După limitarea imaginii, se vor obține obiecte izolate. Acest lucru se întâmplă din cauza
zgomotului din imagine sau din cauza obiectelor mici d in scenă care au aceeași culoare (sau
culoare apropiată) cu cea a obiectului. Aceste suprafețe albe care nu sunt necesare pot fi eliminate
prin eroziune, urmată de dilatare cu același element de structurare.
Limitarea imaginii poate avea de asemenea mici găuri albe în obiectele principale (cele de
interes). Acestea apar din cauza zgomotului din imagine. Acestea pot fi eliminate prin dilatare,
urmată de eroziune cu același element de structurare.
9 Limit ări
Procesul de achiziție și prelucrare de imagini din cadrul unui sistem depinde de foarte mulți
factori externi dar și de factori interni. În urma experimentelor efectuate cu ajutorul unui
minicalculator Raspberry și o cameră web conectată prin USB, s -au concluzionat că există
următoarele limitări și dificul tăți pentru achiziția și prelucrarea de imagini cu sistemul ales:
• Lumina din mediul în care se fac experimentele – este unul dintre cei mai importanți factori
de care trebuie să se țină cont. Deoarece obiectele pot fi văzute mai clar sau mai puțin clar
în funcție de acest aspect. De asemenea culorile diferă în funcție de cât de intensă sau nu
este lumina ambientală.
• Raspberry PI este un computer ce necesită alimentare scăzută și care are o viteză a
procesorului de 700MHz și o memorie RAM de 1 GB – limitată, și prin urmare, nu suportă
o intrare video de înaltă rezoluție care ar consuma o putere prea mare de procesare și ar
face sistemul nesigur.
• Funcționalitatea unui computer Raspberry se deteriorează din ce în ce mai mult dacă este
utilizat pentru procesare mai mult de 3 ore. După cele trei ore computerul Raspberry trebuie
oprit pentru cel puțin o jumătate de oră pentru a putea fi din nou folosit în condiții normale.
Pentru detecția obstacolelor nu se poate folosi o rezoluție mai mare de 320×240 datorită
limitării impuse de Raspberry. Dar această rezoluție oferă rezultate satisfăcătoare.
De asemenea, recunoașterea se va baza pe metode de detecție prin culoare, convertind
imaginea din spațiul de culoare RGB în spațiul de culoare HSV. Astfel se va elimina în mar e parte
problematica luminii din mediul experimental.
47
După realizarea programului de detecție și alegerea celei mai potrivite metode, mai departe, se
realiz ează funcția de control pentru evitarea obstacolelor și se efectua ză experimente pentru
optimizare a algoritmului de recunoaștere și evitare a obiectelor urmărite.
10 Experimente urmărire traseu
În capitolul anterioar „Experimente detecție obstacol ”, s-au prezentat aspectele legate de
experimentele de detecție a obstacolelor de pe traseul parcurs de cătr e robot, efectuate în urma
realizării mai multor programe în limbajul de programare Python, bazate pe biblioteca SimpleCV.
Aceste experimente au avut ca rezultat alegerea uneia dintre metodele de detectare a obstacolului
de pe traseul robotului. Această me toda este cea în care imaginea sursă, de la care se pornește,
formată în spațiul de culoare RGB, se transformă într -o imagine în spațiul de culoare HSV.
Experimentele au demonstrat că, cea mai potrivita metodă pentru detecție, tinând cont de
lipsa condiții lor de mediu (luminozitate, intensitate etc), performața camerei web și a procesorului
folosit, a fost considerată cea bazată pe culoare și în care se transformă imaginea din spațiul de
culoare RGB în spatiul de culoare HSV.
În aceasta lucrare se va descri e structura hardware a robotului, adăugarea barei de senzori
și a motoarelor. De asemenea, se vor descrie programul pentru urmărirea traseului, modurile de
abordare pentru combinarea celor două programe: cel pentru detecția obstacolului și cel pentru
urmăr irea traseului.
11 Structura hardware și software pentru sistemul de
urmărire traseu
Pentru a realiza mecanismul de control și de urmărire de către sistemul mobil, s -au utilizat o
bară de senzori (QTR -C folosește diode care sesizează diferenta de reflectivit ate) – cu senzori
digitali, și două motoare pentru ca robotul să fie capabil să se deplaseze în funcție de rezultatele
furnizate de către senzori.
48
Figura 24 Schema logica pentru bara de senzori QTR -C
Placa pentru un minicalculat or Raspberry Pi conține mai multi pini GPIO. Acesti pini
reprezintă o interfață între raspberry pi și restul ansamblului exterior. și funcționează ca un switch
care poate fi deschis sau închis din exterior (input) sau pe care pi poate să îl închidă sau să îl
deschidă (output). Pinii de intrare sau ieșire sunt 26, restul fiind pini de alimentare sau
împământare.
Figura 25 Pini GPIO
Prin intermediul acestor pini se poate interacționa în mai multe moduri cu exteriorul.
Așadar, pentru cei 8 senzori de detecție ai barei s -au utilizat pinii din tabelul de mai jos:
S0 GPIO07 (26)
S1 GPIO10 (19)
49
S2 GPIO27 (13)
S3 GPIO04 (7)
S4 GPIO03 (5)
S5 GPIO09 (21)
S6 GPIO25 (22)
S7 GPIO23 (16)
Tabel 1 Denumire pini GPIO pentru senzori
Modul prin care aceș ti pini pot fi controlați este dat de utilizarea bibliotecii Rpi.GPIO din
limbajul de prog ramare Python. Biblioteca RPi.GPIO trebuie să fie importată în toate programele
Python în care urmează să fie utilizată. Toate funcțiile bibliotecii pot fi activate folosind prefixul
GPIO .
Pentru a accesa și a lua informațiile furnizate de la senzori a fos t realizată o funcție numită
getSensors() cu următorul conținut:
def getSensors():
sensors =[]
GPIO.cleanup()
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(26,GPIO.IN)
GPIO.setup(19,GPIO.IN)
GPIO.setup(13,GPIO.IN)
GPIO.setup(6,GPIO.IN)
GPIO.setup(5,GPIO.IN)
GPIO.setup(21,GPIO.IN)
GPIO.setup(20,GPIO.IN)
GPIO.setup(16,GPIO.IN)
sensors.append(GPIO.input(19))
sensors.append(GPIO.input(13))
sensors.append(GPIO.input(6))
sensors.a ppend(GPIO.input(5))
sensors.append(GPIO.input(21))
sensors.append(GPIO.input(20))
sensors.append(GPIO.input(16))
sensors.append(GPIO.input(26))
for i in range(8):
print ('sensor: ',sensors[i])
return sensors
50
La începutul o ricărui program trebuie să se definească denumirea porturilor folosite de pe
placa raspberry. Există două soluții ce pot fi folosite pentru declararea și utilizarea pinilor GPIO
de pe placa mini -calculatorului raspberry: biblioteca RPi.GPIO suportă două me tode diferite
pentru denumirea porturilor. În modul BCM se folosesc numerele port GPIO, ce sunt folosite și la
nivelul comenzilor sau scripturilor Shell. În modul alternativ BOARD, denumirea pinilor cu
numere de la 1 la 26 corespunde cu cea de pe placa ras pberry -Pi.
De asemenea, pentru a putea reciti valorile de la senzori, trebuie curățate și redeclarate
toate porturile folosite de până atunci. La sfârșitul unui program trebuie resetate toate porturile
GPIO . Acest rând din program („ GPIO.cleanup() ”) realiz ează acest lucru pentru toate porturile
GPIO inițializate din program. Porturile inițializate de alte programe nu sunt afectate. În acest fel
nu este distorsionată desfășurarea altui program care rulează în paralel. Astfel, se poate preveni
pericolul pentr u situațiile în care există un port care are deja o valoare ca ieșire (3.3V) și accidental
se conectează acelasi port la GND – 0V , ceea ce va conduce la scurtcircuitarea portului și chiar la
arderea lui. Intrările pot să fie folosite fie când sunt conecta te la 0V, fie la 3.3V.
În continuare, pentru algoritmul de detecție au fost luate în calcul condițiile din tabelul
următor:
Senzori Valori senzori Directie
S0:S1:S2:S3:S4:S5:S6:S7 10000000 Dreapta
S0:S1:S2:S3:S4:S5:S6:S7 11000000 Dreapta
S0:S1:S2:S3:S4 :S5:S6:S7 01100000 Dreapta
S0:S1:S2:S3:S4:S5:S6:S7 00110000 Dreapta
S0:S1:S2:S3:S4:S5:S6:S7 00010000 Dreapta
S0:S1:S2:S3:S4:S5:S6:S7 00001000 Stanga
S0:S1:S2:S3:S4:S5:S6:S7 00001100 Stanga
S0:S1:S2:S3:S4:S5:S6:S7 00000110 Stanga
S0:S1:S2:S3:S4:S5:S6: S7 00000011 Stanga
S0:S1:S2:S3:S4:S5:S6:S7 00000001 Stanga
S0:S1:S2:S3:S4:S5:S6:S7 00011000 Fata
51
S0:S1:S2:S3:S4:S5:S6:S7 00010000 Fata
S0:S1:S2:S3:S4:S5:S6:S7 00001000 Fata
Tabel 2 Condițiile pentru direcționarea robotului pe t raseu
Decizia de a alege aceste valori pentru deplasarea robotului pentru fiecare direcție, a fost
luată pe baza observațiilor rezultate în urma experimentelor efectuate a programului de urmărire.
11.1 Experimente urmărire traseu
Experimentele pentru urmărirea traseului au fost efectuate pe 2 tipuri de trasee, începând cu
cel mai simplu (o linie neagra dreaptă dintr -un capăt în altul al planșei), și continuând cu unul mai
complex, cu diferite tipuri de unghiuri și o încrucișare. Alegerea acestor trasee a ținut d e obținerea
celei mai potrivite variante de ocolire a obstacolului și revenire la traseul inițial pentru diferite
tipuri de curburi și pentru diferite distanțe între obstacol și robot.
Figura 26 Traseu 1
Pe aceste trasee obstaco lul a fost așezat înainte de punctul de curbură si imediat după
curbura, pentru a obține cea mai potrivită variantă de ocolire a obstacolului, indiferent de tipul
curburii.
52
Figura 27 Traseu 2
În timpul experimentelor s -au luat în calcul și diferite viteze. Pentru viteze mai mici de 20
rotatii/ secunda, motoarele nu se rotesc suficient de tare încât robotul să se deplaseze, iar peste
valori de 50, robotul nu are timp să detecteze linia și de aceea intervalul de valori ales pentru v iteza
este [20,50] astfel:
Motor stang
fata/spate Directie rotire
motor Motor drept
fata/spate Directie rotire
motor Directie
39 Fata 30 Fata Fata
29 Fata 20 Fata Fata
25 Fata 20 Fata Fata
20 Fata 20 Fata Fata
34 Fata 30 Fata Fata
40 Fata 35 Spate Dreapta
35 Fata 30 Spate Dreapta
30 Fata 25 Spate Dreapta
25 Fata 20 Spate Dreapta
29 Fata 25 Spate Dreapta
53
40 Spate 35 Fata Stanga
35 Spate 30 Fata Stanga
30 Spate 25 Fata Stanga
30 Spate 15 Fata Stanga
34 Spate 24 Fata Stanga
25 Spate 20 Fata Stanga
30 Spate 34 Fata Stanga
32 Spate 36 Fata Stanga
Tabel 3 Viteze luate în calcul în timpul experimentelor
În concluzie, în urma rulării programului cu valorile din tabel, cele mai bune rezultate au
fost obținute pentru următoa rele:
Motor stang
fata/spate Directie rotire
motor Motor drept
fata/spate Directie rotire
motor Directie
39 Fata 30 Fata Fata
30 Fata 25 Spate Dreapta
30 Spate 25 Fata Stanga
Tabel 4 Rezultatele potrivite pentru viteze
Așadar pe ntru programul pentru urmărire traseu se vor folosi rezultatele cu cel mai
bune performanțe.
11.2 Probleme apărute în timpul experimentelor de
urmărire a traseului
Deoarece robotul nu este realizat într -un laborator specializat pentru asamblare, iar
component ele utilizate nu sunt tocmai de cea mai bună calitate, apar unele probleme în realizarea
scopului final al sistemului. Printre ele se regăsesc urmatoarele:
➢ Una dintre ele – cea cu cel mai mare impact – este faptul că după un anumit interval de
timp (aproxi mativ un minut), motoarele se opresc, dar programul continuă să ruleze. Cauza
54
acestei probleme nu a fost descoperită (o varianta ar putea fi supraîncălzirea circuitelor de
comandă ale motoarelor), însă, soluția a fost rerularea programului și reluarea tras eului din
punctul în care a rămas.
➢ O altă problemă, o constituie faptul că roțile robotului nu sunt echilibrate. Din acest motiv,
atunci când se dorește parcurgerea înainte a robotului pe traseu, trebuie ca motorul din
dreapta să primească o comandă mai ma re decat cel din stânga. Din experimente a reiesit
că cea mai potrivită diferenta de viteză dintre cele doua motoare este de 9.
➢ Se utilizează motoare de tip GEAR Motors (de la RoboFun). Acestea sunt motoare care nu
ofera control precis în ceea ce privește viteza și nici poziționarea. Deoarece robotul trebuie
să fie mai robust pentru a transporta încărcătura pe care o are (camera web, acumulator
12V, baterie externa pentru raspberry, raspberry, senzori), se folosesc aceste motoare mari,
mai puternice, care p ot face față la limită deplasării. Soluția aplicată pentru această
problemă, a fost introducerea mai multor „sleepuri” între deplasări. ( Această funcție din
biblioteca time, time.sleep(0.1) , determină un timp de așteptare de 0.1 secunde, înainte ca
program ul să ruleze mai departe.) Însă acestă măsura duce la parcurgerea sacadată a
traseului și la obtinerea unui timp foarte mare de parcurgere.
➢ Dintr -un motiv necunoscut, aleator, robotul întră intr -o buclă infinită, și, deși se închide
conexiunea cu programul , robotul începe să se rotească pe loc din ce în ce mai rapid până
când este deconecat din alimentator. Acest lucru poate duce la arderea sistemului de
control. Pentru a proteja sistemul, s -a folosti puntea H. Puntea este de fapt un circuit
electronic care permite aplicarea unei tensiuni pe o sarcina in orice sens, astfel ea permite
motoarelor de curent continuu sa ruleze inainte si inapoi. De asemenea, nu este indicat ca
motoarele fie conectate direct la microcontroller, deoarece acesta nu poate asigura cu rent
necesar pentru functionarea motoarelor. Asadar, controlul se realizeaza prin utilizarea
puntii H, care permite controlarea vitezei si a sensului de rotatie a celor doua motoare.
12 Combinarea programului de urmărire a liniei cu cel
de detecție
După rea lizarea separată a celor două programe, cel pentru detecția obstacolului de pe
traseul parcurs de către robot și cel pentru urmărirea traseului, s -a trecut la etapa de combinare a
celor două, astfel încât să se obțină cele mai bune performanțe în limitele posibilităților.
55
Figura 28 Schema logică pentru urmărire traseu si detecție
Schema logică a programului de urmărire traseu de către robot și detecție obstacol, prezintă
modul în care interacționează componentele hardware între e le. Astfel, bara de senzori transmite
semnal către raspberry pentru fiecare senzor în parte. Mai departe, de la mini -calculatorul
raspberry Pi se transmit comenzi (semnal digital) către motoare pentru viteza și direcție prin
intermendiul punții H, în funcț ie atât de valorile senzorilor, cât și de grupul de pixeli (obiectele de
culoare roșie) care se extrage din imaginile capturate.
Modul în care a fost gândit algoritmul poate fi descris prin următoarele etape:
1. Pentru o perioadă constantă de timp, stabilită de regula de 10 minute, primul pas constă
în verificarea existenței în una dintre cele două părți ale camerei (stânga – dreapta) unui
obstacol de culoare roșie.
1.1. În cazul în care obstacolul se află în partea stânga a ecranului, robotul se va deplasa
în spr e partea dreaptă cu funcția construită în limbajul de programare python
„move_right()”, până când camera nu va mai detecta obstacolul, apoi urmează să
se deplaseze înainte de un număr de ori „ x1”, acesta fiind determinat prin
experimente, apoi în partea st ânga de un număr de ori „ y1”, determinat tot prin
experimente și apoi spre direcția înainte până când robotul ajunge la linia neagră
ce definește traseul.
1.2. În cazul în care obstacolul se află în partea dreaptă a ecranului, robotul se va
deplasa în spre part ea stângă cu funcția construită în limbajul de programare
python „move_left()” până când camera nu va mai detecta obstacolul, apoi
urmează să se deplaseze înainte de un număr de ori „ x2”, acesta fiind determinat
56
prin experimente, apoi în partea dreaptă de un număr de ori „ y2”, determinat tot
prin experimente și apoi spre direcția înainte până când robotul ajunge la linia
neagră ce definește traseul.
2. Dacă nu este detectat niciun obstacol, atunci se vor parcurge toate condițiile din buclă.
Condițiile sunt des crise în Tabel 1 – Condițiile pentru direcționarea robotului pe traseu
de condiții definit mai sus .
3. În cazul în care, prin depășirea obstacolului, nu se ajunge înapoi la traseu, se intră în
condiția de găsire a liniei. Se păstrează direcția în care a fost ocolit obstacolul, și în
funcție de aceasta direcție se alege în ce direcție robotul trebuie să caute traseul.
3.1. Dacă obstacolul a fost găsit în dreapta ecranului, robotul s -a deplasat către stânga.
De aici deducem că linia neagră se află în partea dreaptă. Pentru a căuta traseul,
robotul se va deplasa înainte prin doi pași și apoi în spre partea dreaptă de două
ori. Acest lucru repetându -se până când senzori detectează traseul. Numarul de
pasi a fost ales in urma experimentelor care au aratat care este numa rul cel mai
potrivit de pasi pentru a ajunge inapoi pe traseu. In cadrul experimentelor au fost
incercate combinatii de numar de pasi si de diferite comenzi pentru viteza.
3.2. Dacă obstacolul a fost găsit în stânga ecranului, robotul s -a deplasat către dreapta .
De aici deducem că linia neagră se află în partea stânga. Pentru a căuta traseul,
robotul se va deplasa înainte prin doi pași și apoi în spre partea stânga de două ori.
Acest lucru repetându -se până când senzori detectează traseul.
13 Experimente la combina rea programelor de detecție
și de urmărire
În cadrul experimentelor efectuate, au fost luate în calcul diferite distanțe între obstacol și
robot. Distanța a fost calculată din punctul în care robotul a realizat detecția și până la obstacol.
În programul pentru detecția obstacolului, prin intermediul bibliotecii SimpleCV, a fost
posibilă utilizarea unei functii din frameworkul SimpleCV, mai exact, din clasa de baza Image ,
numită „findBlobs()”. Această functie permite, în cazul în care se regăsesc grupuri d e pixeli cu
aceeași valoare în imaginea rezultată, detectarea unui grup de pixeli de o mărime specificată,
mărimea reprezentând de fapt distanța obstacolului din imagine față de obiectiv. De aceea, cu cât
este mai mica mărimea grupului de pixeli, cu atât o bstacolul se află mai departe de obiectiv.
Aceasta are umratorii parametrii:
findBlobs (threshval= -1, minsize=10, maxsize=0, threshblocksize=0, threshconstant=5)
Această metodă caută regiuni continue de pixeli de aceeași valoare și le returnează ca un
set de caracteristici ale blobilor (grupuri de pixeli de aceeași valoare) în FeatureSet (clasa extinsa
din SimpleCV). Threshval e parametrul care specifică valoarea pragului de binarizare, necesară
după realizarea histogramei pentru netezirea imaginii după pro cesul de binarizare. Algoritmii de
binarizare pot sa ofere un rezultat cat mai corect in cazul in care obiectele din imagine au un nivel
de gri relativ constant ce contrasteaza fata de nivelul de gri asociat fondului. Aceasta face ca
57
separarea regiunilor din imagine sa poata fi realizata fara prea mari dificultati prin impunerea unui
prag de binarizare pe baza caruia fiecare pixel din imagine va fi clasificat ca fiind pixel de fond
sau pixel obiect.
Minsize și maxsize reprezintă parametrii care definesc mă rimea grupurilor de pixeli un
maxim și un minim.
Parametri treshblocksize , treshconstant sunt utilizați doar în procesul de binarizare
adaptivă. Binarizarea adaptivă reprezintă procesul de binarizare cu un prag adaptiv, în care pragul
este variabil. Prag ul adaptiv se calculează ca o medie ponderată a pixelilor dintr -o vecinatate b ×
b din jurul pixelului central minus o constantă, unde b este dată de parametrul threshblocksize , iar
constanta este data de parametrul threshconstant . Metoda de binarizare cu prag adaptiv este utilă
când există gradienți puternici ce provin din iluminări sau de la reflexii extreme care influențează
rezultatul segmentării. Tipul acesta de segmentare se aplică numai pentru imagini cu un singur
canal de 8 biți (imaginile RGB au tr ei canale de culoare) și trebuie să aibă imaginea -sursă diferită
de cea destinație.
Concluzia la care s -a ajuns în urma experimentelor, din punct de vedere al distanței, este
aceea că se urmărește ca obstacolul să nu fie prea departe de obiectiv, dar nici prea aproape.
Distanța potrivită pentru detecție este de 5 cm fața de obstacol, pentru ca în felul acesta va fi o
detecție rapidă, iar procesul de ocolire obstacol și reluare traseu va avea mari șanse de reușită.
Această distanță este corelată cu viteza de deplasare (conform Tabelului 3).
Criteriul de decizie pentru deplasarea robotului atunci când întâlnește obstacolul, a fost
ușor de determinat deoarece, imaginea sursă a fost împărțită pe două nivele (nivel stâng și nivel
drept). Împărțirea ecranului se p oate face cu ajutorul bibliotecii SimpleCV. Se creează un obiect
numit newLayer definit prin metoda DrawingLayer(dimensiune_imagine) din clasa DrawingLayer
a frameworkului SimpleCV. Acesta oferă posibilitatea de a marca imaginea fără a modifica
informațiil e din aceasta. Această clasă – DrawingLayer conține funcții necesare pentru desenare
sau scriere. Desenele de pe imaginea capturată pot fi linie, cerc, pătrat, elipsă, poligon . Atunci
când se definște o figură geometrică, pentru nivelul respectiv, trebuie specificate coordonatele
geometrice. În acest caz, layerul este un dreptunghi care are coordonatele:
➢ pentru coordonata de origine (0, 0) – stânga jos
➢ pentru coordonata din stânga sus (0, 240)
➢ pentru dreapta jos (160, 0)
➢ pentru dreapta sus (160, 240)
Ecranul drept are coordonatele:
➢ pentru coordonata de origine (160, 0) – stânga jos
➢ pentru coordonata din stânga sus (160, 240)
➢ pentru dreapta jos (0, 320)
➢ pentru dreapta sus (320, 240)
58
După stabilirea coordonatelor pe care se va întinde fiecare nivel, se def inește pentru
obiectul newlayer creat la început cu DrawLayer() , cu polygon (cu ajutorul căruia se desenează un
dreptunghi), dreptunghiul atât pentru partea stângă, cât și pentru partea dreaptă. În metoda
polygon() se pot declara următorii parametri:
polyg on(points, color=(0, 0, 0), width=1, filled=False, antialias=True, alpha= -1)
Punctele sunt definite de coordonatele geometrice. Acest parametru este obligatoriu pentru
a seta poziția dreptunghiului pe imaginea capturată. Parametrul color definit fie prin c ele trei valori
pentru spațiul de culoare RGB fie printr -un cuvânt care definește direct culoarea – de exemplu
green, red, etc.
Așadar, dacă obstacolul se găsește înainte de coordonata 160 după coordonata x, înseamnă
ca acesta se află în partea stângă a ro botului și trebuie să fie redirecționat către partea dreaptă
pentru depășire. Dacă se află după coordonata 160, atunci obstacolul se află în parte dreapta a
robotului și trebuie redirecționat în partea stângă.
14 Concluzii
Funcționarea oricǎrui sistem real a ngreneazǎ mecanisme neliniare de transformare a
intrǎrilor ȋn ieșiri. De cele mai multe ori chiar și aspectele linare implicate ȋn funcționarea unui
sistem real nu reprezintǎ decât aproximǎri acceptabile ale realitǎților neliniare. Neliniaritatea
sistemelo r reale este o consecințǎ a “imperfecțiunii” acestora, a potrivirii imperfecte a sistemelor
reale cu modelul lor ideal.
Ȋn cazul robotului “line follower”, descris ȋn capitolul anterior, cele mai evidente elemente
de neliniaritate care afecteazǎ funcționar ea și realizarea misiunii sunt prezentate ȋn continuare :
1. Asimetria geometricǎ a robotului. Diferențele geometrice ȋntre componentele
robotului – dispunerea diferită a roților, poziționarea axelor roților fațǎ de șasiul robotului, abaterea
de la coaxialitat e a roților, dispunerea asimetricǎ a maselor pe șasiul robotului – toate aceste
elemente datorate variabilitǎții inerente a oricǎrui process de fabricație produc efecte neliniare
asupra mișcǎrii robotului ȋn raport cu comanda motoarelor.
2. Frecǎrile din sist emul mecanic al robotului. Frecǎrile din reductoarele motoarelor,
frecarea inegalǎ dintre roti și sol produc, de asemenea, efecte neliniare ȋn mișcarea robotului pe
traseu.
3. Dependențe neliniare intrinseci ȋntre elementele de intrare, parametrii de stare ai
sistemuliui și elementele de ieșire. Ȋn afara elementelor de neliniaritate induse de
“imperfecțiunile” inerente ale execuției robotului, Ȋn funcționarea robotului opereazǎ dependențe
funcționale ȋntre elementele de intrare, parametrii de stare și elemente le de ieșire ale acestuia, care
sunt intrinsec neliniare.
59
4. Efectele dinamice ale funcționǎrii robotului ȋn mișcare. Ȋn timpul deplasǎrii
robotului, elementele constitutive ale șasiului acestuia ȋnregistreazǎ deformǎri – ȋn general cu
caracter elastic – a cǎror amploare variazǎ ȋn funcție de elementele cinetice (vitezǎ, traiectorie etc.)
5. Variațiile din construcția circuitelor electronice. Ȋn funcție de clasa de execuție, de
acuratețea cu care sunt realizate circuitele electronice, acestea funcționeazǎ cu o ac uratețe mai
maire sau mai mica. Un exemplu sugestiv este cel al elementelor de același fel care se gǎsesc pe
placa electronică și care pot funcționa ȋn mod ușor diferit de la o unitate la alta, introducând astfel
unele efecte neliniare.
15 Îmbunătățiri și cer cetări viitoare
Pentru a obține o performanță mai mare din punct de vedere al timpului de parcurgere a
traseului este nevoie de motoare nu foarte rapide, deoarece pentru cele prea rapide procesorul nu
are timp să proceseze informația și nu oferă rezultate le dorite, iar robotul numai poate să
urmărească corect linia neagra. Așadar, dacă se folosesc motoare de tip 30:1 (30 rotații pe minut),
nu va mai fi nevoie să se adauge pauze (sleep()) între comenzile de schimbare direcție pentru
motoare. De asemenea, pe ntru o parcurgere cât mai corectă a traseului, robotul trebuie echilibrat,
astfel încât motoarele să se învârtă corect și la puterea la care s -a dat comanda.
Pentru cercetări viitoare se urmărește :
➢ Îmbunătățirea programului combinat pentru detecția mai mul tor tipuri de obiecte –
după formă și culoare,
➢ Îmbunătățirea timpului de parcurgere a traseului, folosind motoare mai puține cicluri
de rotații pe minut, de exemplu de 30 de rotații pe minut, pentru a nu fi nevoie de introducerea
unor pauze între comenzi, și pentru a fi capabil sistemul de a procesa în tim real datele,
➢ Utilizarea unui procesor cu putere mai mare de calcul pentru a fi capabil să prelucreze
mai rapid datele achiziționate.
16 Bibliografie
[1] Darius B., Stephen L. and Gregory H., Computational I nteraction and Robotics Laboratory
Johns Hopkins University Baltimore, Stereo -Based Obstacles Avoidance in Indoor Environments
with Active Sensor Re -Calibration , Mai 2002
[2] Erik E., Markus F., Christof S., Horst -Michael G., Neuroinformatics and Cognitiv e Robotics
Lab, Ilmenau University of Technology, Germany, Monocular Detection and Estimation of
Moving Obstacles for Robot Navigation , 2011
60
[3] Hiroshi K., Jun M., and Yoshiaki S., Department. of Computer -Controlled Mechanical
Systems, Osaka University, Recongnizing Moving Obstacles for Robot Navigation using Real –
Time Omnidirectional Stereo Vision
[4] Robert L. Harvey, Paul N. DiCaprio, and Karl G. Heinemann, The Lincoln Laboratory Journal
vol. 4 nr. 2, A Neural Network Architecture for General Image Rec ognition ,1999
[5] Shivani T., Virender S., Amit C., International Journal of Innovative Research in Computer
and Communication Engineering vol. 2, Obstacle Tracking Using Image Segmentation , Iunie 2014
[6] Darius B., Stephen L. and Gregory H., Computationa l Interaction and Robotics Laboratory
Johns Hopkins University Baltimore, Stereo -Based Obstacles Avoidance in Indoor Environments
with Active Sensor Re -Calibration, Mai 2002
[7] Erik E., Markus F., Christof S., Horst -Michael G., Neuroinformatics and Cogni tive Robotics
Lab, Ilmenau University of Technology, Germany, Monocular Detection and Estimation of
Moving Obstacles for Robot Navigation, 2011
[8] Hiroshi K., Jun M., and Yoshiaki S., Department. of Computer -Controlled Mechanical
Systems, Osaka University , Recongnizing Moving Obstacles for Robot Navigation using Real –
Time Omnidirectional Stereo Vision
[9] Roberto Cipolla, Sebastiano Battiato and Giovanni Maria Farinella, Computer Vision,
Detection, Recognition and Reconstruction, December 2009
[10] Sumit Badal, Srinivas Ravela, Bruce Draper, Allen Hanson, Research Laboratory, A Practical
Obstacle Detection and Avoidance System, University of Massachutsets, Amherst
[11] Hordur K. Heidarsson and Gaurav S. Sukhatme, Obstacle Detection and Avoidance for an
Autonomous Surface, May 2011
[12] Zhigang Zhu, Xueying Lin , Dingji Shi, Guangyou Xu, Department of ComputerScience and
Technology, Tsinghua University , A Single Camera Stereo System for Obstacle Detection
[13] Iwan Ulrich and Illah Nourbakhsh, The Robotics Institute, Carnegie Mellon University ,
Appearance -Based Obstacle Detection with Monocular Color Vision, August 2000
[14] Akihisa Ohya, Intelligent Robot Laboratory University of Tsukuba , Vision -Based Navigation
of Mobile Robot with Obstacle Avoidance by Si ngle Camera Vision and Ultrasonic Sensing.
[15] Jeff Michels, Ashutosh Saxena, Andrew Y. Ng , Computer Science Department, Stanford
University, Standford , High Speed Obstacle Avoidance using Monocular Vision and
Reinforcement Learning
61
[16] David Aldavert, Arnau Ramisa, Ricardo, Toledo and Ramon Lopez de Mantaras, Obstacle
Detection and Alignment Using an Stereo Camera Pair
[17] Robert Mandelbaum, Luke McDowell, Luca Bogoni, Barry Reich, Mogens L.Hansen,
Univeristy Pennsylvania, Real -Time Stereo Processing, Obstacle Detection
[18] Ioannis Kostavelis, Lazaros Nalpantidis and Antonios Gasteratos, Robotics and Automation
Lab., Real -Time Algorithm for Obstacle Avoidance Using a Stereoscopic Camera
[19] Kamruzzaman Rony and Norris Xu, Obstacle Avoidance and Color Detection using Image
Segementation
[20] Sanketh Shetty, Compter Vision and Robotics Laboratory, University of Illinois Urbana –
Champaign , Computer Vision For Robot Navigation
[21] Mehmet Serdar Guzel and Robert Bicker, Newcastle University, United Kingdom , Vision
Based Obstacle Avoidance Techniques
[22] Liana M. Lorigo, Rodney A. Brooks, W.E.L. Grimson , Arficial Intelligence Laboratory,
Cambridge , Visually -Guided Obstacle Avoidance in Unstractured Environments
[23] Tae-Jae Lee, Dong -Hoon Yi and Dong -IL, A monocular Vision Sensor -Based Obstacle
Detection Algoithm for Autonomous Robots
[24] Tamer F. Rabie and Demetri Terzopoulos, Department of computer Science, Univeristy of
Toronto, Stereo and Color Analysis for Dynamic Obstacle Avoidance
[25] Dana Granciu, Ioan Lihet, Utilizarea Vederii stereo si o mnidirectionale pentru evitarea
obstacolelor de catre un robot de cercetare
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: 1 Introducere ………………………….. ………………………….. ………………………….. …………………………….. [605189] (ID: 605189)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
