Introducere

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.

Descriere generală

Principalele sisteme ale robotului:

  • sistem de mișcare: 2 motoare cu roti și 2 bile (puncte de sprijin)
  • sistem de înghițire/eliberare roșii folosind un tambur angrenat de 2 motoare
  • sistem de culegere a porumbilor: 2 brate cu servomotoare și un lift ridicat de 2 motoare
  • sistem de detecție a elementelor de joc - computer vision printr-un webcam și OpenCV
  • sistem de evitare obstacole/adversar: senzori cu infraroșu de pe fata robotului si baliza de pe adversar
  • sistem de determinare a poziției pe masa de joc folosind encoderele motoarelor de miscare, balize cu ultrasunete și infraroșu, giroscop și busola
  • sistem de start: un jumper, eliberat prin tragere
  • sistem de stop - butonul roșu care dezactivează alimentarea de la baterie


Petronela

Hardware Design


Părţi Componente:

  • MSI WIND U90 - “Creierul” robotului, dotat cu procesor Intel Atom și Ubuntu 10.04
  • PMS5005 Sensing and Motion Controller - folosit pentru comandarea motoarelor tamburului de prins rosii, a servomotoarelor de la ghearele pentru porumb și citirea senzorilor de infraroşu
  • Sharp Infrared Sensors - folosiți pentru evitarea obstacolelor
  • Webcam - folosit impreună cu OpenCV pentru detecţia elementelor pe masă
  • 2 roţi cu controller MD23 pentru deplasare, şi 2 bile pe post de puncte de sprijin
  • Tamburul pentru “înghiţirea” bilelor este miscat de 2 motoare de curent continuu
  • 2 brate mobile manevrate de servomotoare si un lift controlat de 2 motoare Lego Mindstorms NXT - instalate pe spatele robotului
  • Sistem de poziţionare bazat pe balize cu ultrasunete şi infraroşii
  • Giroscop si busola pentru determinarea unghiurilor de rotaţie pe masă
  • Baterie de UPS 12V
  • Carcasă policarbonat


Petronela bucatele
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.
Zona arsa din PMS5005
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 folosit puntea H de pe PMS si am conectat-o la pinii microcontroller-ului, pentru a manevra motoarele tamburului (aveam nevoie doar de miscarile inainte si inapoi la viteza maxima, fara citiri de encodere).
  • senzorii de distanta i-am citit cu ajutorul intrarilor analogice (ADC) al AtMEGA
  • am modificat softul balizei pentru ca, pe langa informatiile de pozitie, giroscop si jumper-ul de start, sa trimita si datele de la senzorii nou adaugati si, deasemenea, sa accepte comenzi pentru motoare

Software Design

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.

Webcam

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.

Rezultate Obţinute

  • Am reusit sa testam si sa interfatam o multime de periferice (senzori, motoare, placi electronice, webcam), implementand toate functiile specificate in documentatie, chiar daca nu le-am folosit pe toate. Aceste module se pot refolosi in anii urmatori sau in alte proiecte.
  • Am studiat si implementat comunicatia cu motoarele prin interfata I2C continuta in conexiunea VGA. Deasemenea, deoarece laptop-ul folosit nu dispune de un port serial, ne-am construit in laborator un convertor USB-Serial, bazat pe un chip FTDI.
  • Am folosit surse de informatii redundante pentru diversele operatii: miscare cu encodere si balize, rotatii cu giroscop, busola si encodere.
  • Am obtinut rezultate concrete, in timpul concursului: am depasit faza de omologare (atat la faza locala cat si la cea internationala) - care presupune incadrarea in constrangerile de perimetru si inaltime, evitarea adversarului si inscrierea de puncte - si am reusit sa punctam, obtinand locul 2 pe Romania.


Locul 2 RobotX

Concluzii

Trebuie sa imbunatatim partea de miscare pe masa prin:

  • folosirea unor encodere care nu sunt asezate pe axul motor (pentru a fi imune la derapare)
  • marirea preciziei balizelor de pozitionare si a celei de detectare a adversarului

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.

Jurnal

Blogul echipei: Robots are nonstop.

pm/prj2010/dtudose/ovp.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0