Robot Vision

Pentru Robot Vision se lucrează de mai multe săptămâni și încă mai avem de lucru… :-s În continuare, va urma o scurtă descriere a ceea ce s-a realizat până acum.

Detectarea obiectelor folosind OpenCV

După ce am citit o cantitate enormă de documentație despre OpenCV, am reușit în sfârșit să realizăm o formă funcțională a unui algoritm care să poată detecta obiectele dintr-o imagine. O problemă mare a algoritmilor de detecție este acela că nu există algoritm care să funcționeze foarte bine. De exemplu, dacă se dorește detectarea marginilor dintr-o imagine, algoritmul va funcționa bine doar dacă între culoarea obiectului și cea a fundalului există o diferență mare de culoare. Dacă culorile sunt foarte asemănătoare, una sau mai multe margini nu vor fi detectate. Iar asta e o mare problemă dacă detectarea obiectelor se face după forma lor.

În cazul în care se dorește detectarea culorilor, problema apare atunci când există multe nuanțe ale aceleași culori, atunci unele nu vor putea fi detectate. Problema cea mai gravă este aceea că poate detecta culori care nu ar trebui să apară, de exemplu nuanțele culorii gri. Scrierea unui algoritm care să detecteze corect culorile, dar care e lent în ceea ce privește timpul de execuție, nu se poate folosi în aplicații în care se doreste detecția în timp real. Dificultatea în detectarea culorilor constă în modelele de culori care se folosesc: RGB (RED, GREEN, BLUE – fiecare culoare fiind formată din aceste trei, dar în diferite proporții), HSV (HUE, SATURATION, VALUE ) și altele, dar acestea două fiind cele mai folosite, fiecare având avantaje și dezavantaje.

În imaginile care vor urma vor fi câteva exemple de detectare a culorii și a marginilor, culoarea detectată fiind albastru.

În imaginea de mai sus, se poate observa cum s-a detectat obiectul de culoare albastră, dar și o portiune de culoare gri. Porțiunea cu rosu și verde este o încercare nereușită de detectare a unei forme pătratice.

Mai sus am reușit să detectăm un obiect care are patru colțuri. Dar, nici aici nu am reușit să eliminăm detectarea culorii gri.

Aici se poate vedea rezultatul unui algoritm de detecție a marginilor. Se poate vedea că nu a detectat toată marginea(în centru este un caiet și un pix..).

Pentru detectarea unei cutii poștale se va aplica următorul algoritm:
- se detectează culoarea, iar în imaginea nouă vor fi două culori, culoarea obiectului, respectiv negrul de pe fundal
- se vor detecta marginile din imaginea nouă
- se detectează obiectele a căror formă se potrivește cu forma unei cutii poștale

Un mic exemplu :

Posted in Uncategorized | Scrie un comentariu

Senzorul US SRF08

Săptămâna 7 :

În sfârșit am rezolvat și această problemă, care ne-a chinuit destul de mult timp. Senzorul merge foarte bine acum și detectează precis distanța până la cel mai apropiat obiect situat în fața lui, în timp real, adică în timp ce robotul nostru se află în mișcare.

În această imagine puteți vedea cum funcționează senzorul nostru, la apropierea și depărtarea unui obiect de el :

Pentru buna sa funcționare am scris câteva funcții, și anume :

  • O funcție de inițializare a senzorului nostru US SRF08
  • O funcție care determină distanța până la cel mai apropiat obiect
  • O funcție care determină distanța cât mai precis, deoarece se fac 15 măsuratori, după care se elimină extremele și se face o medie a celorlalte rămase, astfel determinându-se extrem de precis distanța.
  • Posted in Uncategorized | Scrie un comentariu

    IRobot

    Săptămâna 6
    În această săptămână am conectat IRobotul, si am incercat toate comenzile pe rand pentru a ne da seama cum functioneaza. A fost putin mai greu pentru ca la inceput nu ne prea asculta :) .

    …am incercat sa facem si o rotire.. (cam la intamplare cei drept :-s)…

    ..dupa mai multe incercari am reusit sa scriem cateva functii care fac robotul sa mearga o distanta fixa, sau sa roteasca intr-o anumita directie un anumit numar de grade…

    …apoi mai spre sfarsitul saptamanii am incercat sa conectam si senzorul de ultrasunete pe care il vom folosi la robotul nostru…am avut probleme, deoarece in cele patru ore petrecute joi la laborator n-am reusit nicicum sa gasim nicicum un exemplu functionabil (doar multe exemple cu biblioteci lipsa sau exemple care afisau rezultate gresite) pentru senzorul nostru SRF08…dar speram sa reusim asta saptamana viitoare ! :)

    …spre sfarsitul laboratorului am vrut sa conectam simultan si LynxArm-ul si IRobotul pentru a putea face cateva miscari cu fiecare si a simula din nou “colectarea unei scrisori” din “stiva de scrisori” si lasarea ei la “destinatie”, dupa care robotul nostru se intoarce pentru a pleca spre o “noua destinatie”…(la rotatie cablurile ne-au cam incurcat, iar robotul nu a putut face rotatia completa de 90°)..mai jos puteti vedea ce a iesit ! :D

    Posted in Uncategorized | Tagged , , , | 2 comentarii

    Progrese la LynxArm

    Săptămâna 5
    În această săptămână am aranjat puțin cablurile de la braț pentru că riscam să se încâlcească destul de urât. Apoi am reușit să facem câteva mișcări mai legate cu LynxArm-ul și să simulăm colectarea unei scrisori din “stiva de scrisori” și lăsarea ei în “cutia poștală”.

    Posted in Uncategorized | Tagged , , | Scrie un comentariu

    Cum am început ?

    Săptămâna 4
    Pentru început am conectat motoarele LynxArm-ului, pentru a putea face câteva mișcări cu brațul.

    ..am inceput mai greu… :-s

    ..dar am reușit ceva până la urmă… :)

    Posted in Uncategorized | Scrie un comentariu