Robotul echipei noastre, Petronela, a participat la competiția internațională Eurobot 2010, ținută în Rapperswil-Jona, Elveția. Eurobot este un concurs anual de robotică autonomă în care doi roboți concurează unul împotriva celuilalt pe o masă de 3 x 2 metri, fără să se încurce unul pe celălalt, și au 90 de secunde pentru a îndeplini o sarcină. Roboții sunt perfect autonomi, adică nu se pot controla de la o telecomandă. Pentru mai multe detalii: Eurobot.
Tema de anul acesta se numește Feed the World, și pe scurt trebuie să găsești și să transporți roșii (bile roșii), portocale (bile portocalii, mai grele decât roșiile), și știuleți de porumb (cilindri albi și negri – cei negri sunt stricați și nu pot fi culeși). Robotul care strange de pe masa de joc cele mai multe fructe/legume în cele 90 secunde este declarat câștigător.
Principalele sisteme ale robotului:
Tamburul de prins rosii este activat permanent pe modul de “inghitire”. Rosiile sunt antrenate de tambur si inghitite; pentru eliberarea rosiilor, tamburul este actionat in sens invers.
Prezenta porumbilor este detectata cu ajutorul unui senzor infrarosu SHARP, cate unul pe fiecare laterala. Acestia sunt loviti de bratul mobil, pentru a ajunge pe platforma liftului, care este inclinata spre peretele robotului. Am prevazut 2 deschideri in spatele robotului: porumbii patrund in robot prin cea de sus si sunt eliberati prin cea de jos. Pentru a-i retine in interior, am construit 2 “gheare” cu servomotoare, pe post de “usita”. Cand acestea ii elibereaza, porumbii vor parasi robotul prin cadere libera.
Cu o seara inainte de prima runda a concursului ni s-a ars placa de baza (PMS5005), datorita unui scurtcircuit pe unul din motoarele de la tambur.
Am gasit, in cele din urma o solutie de backup - functiile PMS-ului au fost preluate de microcontroller-ul de la baliza (AtMEGA16), astfel:
Am creat o structura software care sa ne permita modificarea usoara a strategiei robotului si separarea ei de partea de achizitii de date (senzori) si comenzi (motoare). Pentru citirea senzorilor in timp util, s-au definit mai multe fire de executie: unul pentru webcam, unul pentru baliza si un ultim fir pentru encoderele motoarelor de miscare si busola. Aceste informatii sunt prelucrate de un fir specializat, numit Manager de stare, pentru a actualiza structura care descrie starea robotului.
Strategia este data printr-o multime de reguli; o regula este un obiect cu doua metode: una de match - calculeaza un scor care arata daca regula se aplica la pasul curent (scorul maxim da regula aplicata) - si una de actiune, care opereaza modifcari asupra stivei de actiuni. Firul care se ocupa de aceasta parte este Responsabilul de reguli. Actiunile din stiva sunt de tipul: “mergi inainte o anumita distanta”, “roteste-te la un anumit unghi”, “asteapta un anumit timp”, “culege un porumb”,etc. Exista un fir, numit Responsabil cu executia, care extrage varful stivei si executa actiunea asociata.
Am folosit un webcam Canyon pentru a obtine imagini cu suprafata de joc. Imaginii curente îi sunt aplicate diferite operatii si filtre (ex: blur, dilate, threshold, masca de culoare) pentru a reliefa obiectele ce dorim sa le identificam. Am folosit o transformata Hough pentru detectia cercurilor si apoi am masurat cantitatea de rosu continuta în fiecare cerc pentru a determina rosiile. Pentru porumbii cilindrici am propus transformata Hough pentru detectia liniilor combinata cu calculul cantitatii de alb, respectiv negru cu diferite variante de simplificare/optimizare.
Viteza de detectie a rosiilor a fost de 10 frame/sec dar cea pentru porumbi a fost sub un frame/sec.
Trebuie sa imbunatatim partea de miscare pe masa prin:
Trebuie sa alocam mai mult timp fazei de proiectare a robotului, cu finalitate in realizarea unui model 3D. Astfel vom putea comanda realizarea automata a pieselor de care avem nevoie si vom sti in prealabil structura, masa, centrul de greutate al robotului.
Vom studia noi tehnici de prelucrare grafica si optimizari pentru detectarea formelor obiectelor de joc, in timp util.
Vom avea in vedere sporirea timpului de raspuns al robotului (viteza de miscare, de achizitie si prelucrare de date). Deasemeni ne vom concentra pentru a crea mai multe subsisteme independente din punct de vedere hardware, pentru a reduce pagubele si timpul de reparatie in cazul unor avarii.
Constructia unui robot presupune o conlucrare a mai multor ramuri ale ingineriei. Trebuie sa ne concentram mai bine pe impartirea task-urilor intre membrii echipei pentru a spori productivitatea, si in acelasi timp vom cauta membri noi care sa se ocupe si de partea de promovare, documentare sau de formalitati.
Concursul a fost, pentru toti membrii echipei, o experienta de invatare. Am vazut nivelul la care se pregatesc si colegii din alte tari si ce inseamna sa ai cu adevarat un robot competitiv. In speranta ca vom ajunge, la un moment dat, la aceasta performanta, vom praticipa si anii viitori.
Blogul echipei: Robots are nonstop.