UNIVERSITATEA POLITEHNICA DIN BUCURETI FACULTATEA DE AUTOMATIC I
CALCULATOARE DEPARTAMENTUL CALCULATOARE
PROIECT DE DIPLOMRobot autonom pentru competiia Eurobot 2011
Coordonatori tiinifici Prof. dr. ing. Radu Vrbnescu Conf. dr.
ing. Rzvan Rughini
Absolvent Matei ene
BUCURETI2011
Robot autonom pentru competiia Eurobot 2011
Cuprins
Introducere
........................................................................................................................................................
1 1. Competiia Eurobot
......................................................................................................................................
1 1.1. Tematica Eurobot 2011
.....................................................................................................................
5 1.2. Sistemul de balize
..............................................................................................................................
7 1.3. Proba de omologare
..........................................................................................................................
8 1.4. Soluiile concurenilor
.....................................................................................................................
10 2. Prezentarea
soluiei....................................................................................................................................
11 2.1. Etapele dezvoltrii soluiei
..............................................................................................................
13 2.2. Mecanismul de manipulare a pieselor
............................................................................................
17 2.3. Sistemul de poziionare pe mas
....................................................................................................
19 2.4. Sistemul de evitare a adversarului
..................................................................................................
22 2.5. Strategia
..........................................................................................................................................
23 2.6. Caracterul inovativ
..........................................................................................................................
23 3. Hardware
....................................................................................................................................................
24 3.1. Descriere mecanic
.........................................................................................................................
24 3.1.1. Gheara
...............................................................................................................................
24 3.1.2. Mecanismull de ridicare
....................................................................................................
27 3.1.3. Carcasa
..............................................................................................................................
27 3.1.4. Blocul motor
......................................................................................................................
28 3.1.5. Sistemul de detecie a adversarului
..................................................................................
29 3.2. Descriere electronic
.......................................................................................................................
29 3.2.1. Sursa de energie
................................................................................................................
29 3.2.2. Motoarele de deplasare
....................................................................................................
30 3.2.3. Motoarele mecanismului de manipulare a pieselor
.......................................................... 31
3.2.4. Senzori
...............................................................................................................................
32 3.2.5. Placa de conectare a senzorilor
.........................................................................................
35 3.2.6. Placa de achiziie de date
..................................................................................................
36 3.2.7. Placa de adaptare USB RS232
.........................................................................................
37 4.
Software......................................................................................................................................................
38 4.1. Sistemul de I/O
................................................................................................................................
38 4.2. Interfaa sistemului de deplasare
....................................................................................................
39 4.3. Interfaa mecanismului de manipulare a
pieselor...........................................................................
40 4.4. Sistemul de achiziie de date
...........................................................................................................
42 4.5. Computer vision: detecia adversarului
..........................................................................................
43 4.6. Computer vision: sistemul de balize fixe
.........................................................................................
44 4.7. Poziionarea pe mas
......................................................................................................................
46 4.8. Programul de control i strategie
....................................................................................................
46 Rezultate. Concluzii.
Mulumiri.......................................................................................................................
48 Bibliografie
.......................................................................................................................................................
49 Anexe
...............................................................................................................................................................
51
1
MATEI ENE
IntroducereApariia roboilor a fost determinat de dorina noastr
de a ne automatiza sarcinile cotidiene. Ideea este consemnat nc din
operele filozofilor antici [1], dar primele implementri pe scar
larg au fost posibile numai dup invenia primului motor, n urm cu 3
secole. n prezent, exist peste 8,6 milioane de roboi la nivel
mondial [2]. Fie c sunt construii pentru mediul industrial sau
pentru sarcini personale, majoritatea sunt gndii pentru a funciona
n condiii precizate sau cu variaii controlate ntre anumite limite.
Aceti roboi nu au capacitatea s se adapteze dac sunt scoi din
context. Un robot care opereaz ntr-un mediu aflat n continu
schimbare are nevoie de asistena unui operator uman care s-i indice
aciunile corecte. Este vorba despre o colaborare, n cadrul creia
omul observ caracteristicile mediului, iar robotul primete comenzi
n concordan cu acestea. Din pcate, sub aceast form, sistemul are o
utilitate limitat, eficiena fiind dat de timpul de rspuns al
operatorului. Pentru a depi bariera trebuie s cretem gradul de
autonomie al robotului, adugandu-i capabilitile de achiziie i
interpretare a datelor din ambient. Proiectul de fa i propune s
evidenieze etapele necesare realizrii unui robot complet autonom,
avnd ca studiu de caz competiia Eurobot 2011. Aplicaia practic a
presupus construcia i programarea unui robot care se deplaseaz pe o
mas n form de tabl de ah cu scopul de a plasa ct mai multe piese pe
ptratele de culoare proprie. Concursul se desfoar anual la nivel
european, iar formatul bine definit i numrul mare de participani
faciliteaz evidenierea punctelor tari i slabe ale soluiilor
propuse. n capitolele ce urmeaz voi descrie structura robotului,
etapele construciei i dezvoltrii sale i rezultatele obinute.
Capitolul 1
Competiia EurobotEurobot este o competiie internaional dedicat
tinerilor pasionai de robotic. Prima ediie a avut loc in 1998, cnd
proaspta format asociaie Eurobot a transformat cupa de robotic a
Franei (care se desfura nc din 1993) ntr-un eveniment la nivel
european. Concursul se este organizat anual i gzduit de una din
rile din Europa. Se accept ca o echip s aib membri de diferite
naionaliti, atta timp ct reprezint o singur ar. Mai mult,
regulamentul prevede ca, n cazul n care exist mai mult de 3 echipe
candidate pentru o anumit ar, s se organizeze o etap naional pentru
departajare. Participanii trebuie s construiasc roboi complet
autonomi care s realizeze o sarcin, conform tematicii stabilite de
reguli [3]. Cu toate c aceasta se schimb de la an la an, formatul
competiiei rmne acelai: o rund dureaz 90 de secunde, timp n care
doi roboi adversari evolueaz pe masa de joc cu scopul de a obine ct
mai multe puncte la final. Inclusiv dimensiunile mesei rmn aceleai
ntre ediii: 3 m x 2,1 m. Spiritul competiiei este acela de
fair-play, de aceea roboii nu au voie s se loveasc sau s se ncurce
n mod intenionat. Pentru a exemplifica, voi face n continuare un
scurt sumar al temelor din ultimii ani:2
Robot autonom pentru competiia Eurobot 2011
2007. Robot Recycling Rally
n acest an, misiunea roboilor era s colecteze deeuri
reciclabile. Dozele de aluminiu, sticlele de plastic i bateriile
puse n containerele corespunztoare aduceau puncte echipei. A fost
prima ediie la care a participat o echip din partea facultii
noastre. Am obinut locul 1 pe ar i locul 23 n Europa.
Fig. 1. Masa de joc de la ediia 2007
2008. Mission to Mars
Tematica acestei ediii era o expediie pe Marte, unde roboii
primeau puncte pentru colectarea mostrelor de sol. Acestea erau
reprezentate de bile colorate i trebuiau depozitate n containerele
de pe margine. Mai mult, pe mas erau i bile albe care repezentau
ghea. Deoarece mostrele se conserv mai bine la temparaturi sczute,
se acordau puncte n plus pentru strngerea combinaiilor ghea + sol.
n acest an, echipa facultii s-a clasat pe locul 3 la faza naional i
pe 43 la faza internaional.Fig. 2. Masa de joc de la ediia 2008
3
MATEI ENE
2009. Temples of AtlantisDe aceast dat, roboii trebuiau s adune
piese de lemn (pucuri i grinzi) cu care s construiasc turnuri ct
mai nalte pe zonele maronii. Fa de ediiile anterioare, zonele
destinaie erau comune i roboii puteau colabora. Echipa noastr a
participat cu 2 roboi, ns nici unul dintre ei nu s-a clasat ntre
primele locuri pe ar.Fig. 3. Masa de joc de la ediia 2009
2010. Feed the World
Dup o pauz de un an, au revenit n scen clasicele containere.
Scopul era culegerea i depozitarea a ct mai multor fructe i legume.
Recolta era constituit din porumbi (cilindri albi), roii (bile roii
uoare) i portocale (bile portocalii grele). Cilindrii negri
reprezentau porumbi stricai i erau fixai de mas pentru a fi
imposibil de cules. De data aceasta am trecut de faza naional pe
locul 2 i am obinut locul 45 n Europa.Fig. 4. Masa de joc de la
ediia 2010
4
Robot autonom pentru competiia Eurobot 2011
1.1.
Tematica Eurobot 2011
Anul acesta tema poart numele ChessUP! i are un specific diferit
celor din anii precedeni. S-a renunat la containere i la ideea de a
aduna i sorta diversele obiecte de pe mas. De data aceasta zona de
lucru este i zon de punctare i avem de-a face cu un joc de ah
adaptat pentru roboi. Roboii pornesc din zonele de start vopsite n
culoarea echipei (rou n stnga i albastru n dreapta). Se obin puncte
prin plasarea pieselor galbene n ptratele de culoare proprie din
tabla de ah 6x6 desenat n centrul mesei. O parte din piese sunt
aezate iniial pe punctele de intersecie dintre ptrate, dar
majoritatea se gsesc pe zonele verzi. Culorile echipelor i
configuraia mesei se stabilesc la nceputul rundei, prin tragerea la
sori a unor cartonae, ns roboii nu primesc nici o informaie legat
de rezultatul extragerii.
Fig. 5. Masa de joc de la ediia 2011
O schimbare fa de ceilali ani reprezint faptul c toate piesele
sunt neutre. Cu alte cuvinte, un robot poate fura piesele plasate
de adversar, modificnd scorul chiar i n ultima clip. Unele dintre
ptrate sunt marcate cu un punct negru n centru. Ocuparea acestora
aduce puncte bonus echipei. Deasemenea, exist ptrate protejate,
aflate pe latur opus zonelor de start. Acestea sunt singurele de pe
care adversarul nu are voie s fure piese, deci pot oferi un ctig
garantat pn la sfrit. Exist 3 tipuri de piese, ilustrate n fig. 6 n
ordinea valorii. Pionii sunt cilindri cu diametrul de 200 mm i
nlimea de 50 mm. Regii i reginele au baza identic cu un pion i
acoperit pe lateral cu un cod de bare de 5 caractere, pentru
identificare (KING- , respectiv QUEEN; liniua a fost adugat pentru
a compensa diferena de lungime). Ornamentul de deasupra poate
varia, cu condiia s se ncadreze ntr-un cilindru cu diametrul de 160
mm i nalimea de 180 mm. Se observ c dimensiunile pieselor sunt mult
mai mari fa de ediiile anterioare.5
MATEI ENE
Fig. 6. Piesele de joc
Piesele sunt prevzute cu magnei i se pot construi turnuri
stivuindu-le. Un turn valid este format dintr-unul sau doi pioni i
un rege sau o regin n vrf. Valorea crete proporional cu nlimea i
este mai mare dect suma valorilor individuale ale pieselor. Totui,
regulamentul interzice roboilor s construiasc atunci cnd se afl n
zona verde. O ultim modalitate de a ctiga puncte este prin
realizarea aa-numitei funny configuration. Aceasta presupune ca, la
finalul rundei, robotul s duc un pion n baza proprie pe care s se
urce, astfel nct nici o component a sa s nu ating masa. Punctele se
numr doar la sfritul rundei. Dup expirarea celor 90 de secunde, se
scad eventualele penalizri pentru nclcarea regulilor i ctig echipa
cu scorul cel mai mare. La acest punctaj se adaug bonusul pentru
victorie/egal/nfrngere i totalul se trece n clasament. Regulamentul
menioneaz c n cazul n care ambele echipe obin scorul 0 (sau
negativ), situaia nu este una de egalitate ci o dubl nfrngere
(ambele echipe primesc bonusul de nfrni). Punctajele sunt date n
urmtorul tabel: Pies / Aciune Pion Regin Rege Turn de 2 piese Turn
de 3 piese Ptrat bonus Funny configuration Victorie Egal nfrngere
Valoare 10p 20p 30p 2 x valoarea piesei din vrf 3 x valoarea piesei
din vrf 30p 50p 40p 20p pentru fiecare echip 10p
Tabel 1. Punctajele acordate roboilor
6
Robot autonom pentru competiia Eurobot 2011
1.2.
Sistemul de balize
ntr-un joc de strategie, poziia pe mas a robotului propriu i a
adversarului sunt informaii eseniale. Pentru aceasta, echipele pot
opta s foloseasc un sistem de balize. Pe marginea mesei sunt
prevzui cte 3 supori pe care se pot instala balize fixe: 2 dintre
acetia se afl n colurile limii adiacente bazei proprii, iar cellalt
n mijlocul laturii opuse (fig. 7). Suporii sunt nite platforme
acoperite cu velcro, aflate la nlimea de 350 mm fa de mas. Balizele
fixe pot s conin orice fel de senzori, cu urmtoarele condiii:
Fig. 7. Poziiile suporilor pentru balizele fixe
s se ncadreze ntr-un paralelipiped de 80 mm x 80 mm x 160 mm. s
aib surs proprie de energie (deci nu se pot alimenta de la priz). s
nu fie conectate prin fire la robot. Totui, este permis un fir de
legtur ntre ele (de exemplu, pentru sinconizare sau alimentare). s
aib baza acoperit cu velcro, pentru fixare (partea complementar
celei de pe supori) s respecte condiiile de siguran (pentru
participani, roboi i integritatea mesei). Pe lng aceste balize
fixe, se pot folosi i 2 balize mobile: una pe robotul propriu i una
pe adversar. Acestea trebuie s se ncadreze ntr-un cub cu latura de
80 mm i trebuiesc montate la nlimea de 350 mm, respectiv 430 mm
(practic, peste baliza proprie a adversarului). Aa cum rezult i din
fig. 8, aceste poziii i faptul c balizele fixe sunt de dou ori mai
nalte dect cele mobile prmit comunicaii simultane fr obstacole.
Chiar i n cazul nefericit, n care poziia adversarului este pe
direcia uneia dintre balizele de pe margine, calea este liber ctre
celelalte dou.
Fig. 8. Poziiile balizelor mobile 7
MATEI ENE
Indiferent dac o echip folosete sau nu balize, dac adversarii
solicit, trebuie ca robotul s aib disponibil o suprafa acoperit cu
velcro la nlimea de 430 mm fa de suprafaa de joc. n caz contrar,
runda nu se va juca ci se va considera victorie pentru echipa
advers. Cteva exemple de sisteme de balize pe care am avut ocazia s
le observ la ediiile din anii precedeni se bazau pe: msurarea
distanei prin diferena de vitez n transmisia a 2 semnale, de
exemplu ntre sunet i lumin (unde infraroii i ultrasonice) un emitor
de semnal, plasat pe robot, care se rotete cu vitez constant.
Receptorii din balizele de pe margine calculeaz distana, msurnd
timpul scurs ntre 2 recepii. prelucrare video
Totui, majoritatea echipelor nu folosesc balize, bazndu-se
exclusiv pe metode de localizare relativ (de exemplu encoderele
incrementale montate pe axele motoarelor de micare).
1.3.
Proba de omologare
Pentru ca robotul s poat lua parte la concursul propriu-zis,
trebuie mai nti s treac o prob de omologare. Aici se verific dac
echipa a respectat toate prevederile din regulament, mai exact: a)
Robotul trebuie s fie echipat cu un buton rou de urgen, care, la
apsare, s ntrerup complet alimentarea. b) Robotul trebuie s se
ncadreze n limitele de dimensiune prevzute n regulament. La
pornire, perimetrul su convex nu trebuie s depeasc 1200 mm, iar n
timpul competiiei, 1400 mm (fig. 9). Verificarea se face nfurndu-l
cu o sfoar sau folie marcat.
Fig. 9. Constrngerile de dimensiune ale roboilor
8
Robot autonom pentru competiia Eurobot 2011
Deasemenea, nlimea sa trebuie s fie de maxim 350 mm (fig. 8).
Doar butonul rou i baliza proprie, respectiv platforma rezervat
balizei adversarului, pot depi aceast limit. Anul acesta a aprut o
nou precizare legat de transparena robotului, pentru a se evita
situaia n care adversarul nu-i poate detecta prezena. Mai exact, se
recomand ca proiecia robotului s aib o lime de cel puin 180 mm
(fig. 8), indiferent de unghiul de observare i s fie suficient de
opac (cu alte cuvinte s nu aib caviti pronunate). c) Tot pentru a
evita confuzia, nu este permis ca robotul s fie vopsit n culori
care apar pe masa de joc sau pe piese. Excepie face culoarea negru,
n care sunt vopsite marginile mesei, acestea fiind, oricum,
obstacole ce trebuiesc evitate. d) Pornirea, la nceputul rundei de
concurs, se face prin tragerea unei sfori, fr ca vreun membru al
echipei s ating robotul. Acest lucru se ntmpl pentru a evita
tentativele de a tria, deoarece n acest moment s-a stabilit
configuraia mesei. e) Robotul trebuie s se opreasc singur la
expirarea celor 90 de secunde ale rundei. f) O condiie esenial de
participare este implementarea unui sistem de evitare a
obstacolelor, pentru a proteja adversarul. Verificarea se face
folosind o machet din lemn, care este pus n drumul robotului.
Aceasta va avea prevzut suportul pentru baliz, dac echipa solicit
acest lucru.
g) A doua condiie de participare este competitivitatea. Robotul
trebuie s fie capabil s nscrie minim 1 punct jucnd singur pe mas.
h) Dac robotul folosete un sistem de balize, trebuie demonstrat
utilitatea acestuia pentru a se evita tentativele de fraud (de
exemplu: baliza pentru adversar are greutate excesiv sau bruiaz
semnale). i) Robotul nu trebuie s fac aciuni care distrug masa,
care pun n pericol participanii sau adversarul i nu trebuie s se
dezmembreze n timpul rundelor. Sursele de energie nu trebuie s fie
periculoase sau de natur biologic. Nu se permit tensiuni mai mari
de 48 V, dect n dispozitive comerciale, certificate i nemodificate.
Folosirea laserelor i a acumulatorilor de tip Litiu-Polimer au
meniuni speciale n regulament [3]. Competiia are o pronunat latur
educativ, participanii fiind ncurajai s comunice i s schimbe idei.
De aceea, fiecare echip trebuie s ntocmeasc un poster tehnic i un
film de prezentare, n care s descrie robotul i etapele de
planificare i dezvoltare care au fost parcurse.
j)
n cazul n care, robotul sufer modificri n timpul concursului,
sau arbitrii constat neregulariti (de exemplu: sistemul de evitare
a adversarului nu funcioneaz corect), este necesar o nou prob de
omologare. Condiiile probei ar trebui ndeplinite fr probleme de
orice robot competitiv. Totui, la ediiile precedente, n medie un
sfert dintre participani nu au trecut cu succes de aceasta.
9
MATEI ENE
1.4.
Soluiile concurenilor
n continuare, voi prezenta cteva dintre soluiile echipelor care
au participat la ediia de anul acesta a competiiei Eurobot. Fiecare
robot se difereniaz de ceilali prin concept, construcie sau
software, de aceea am ncercat s fac o clasificare dup sistemul
folosit pentru manipularea pieselor. Dimensiunile acestora sunt
comparabile cu cele ale roboilor i au limitat posibilitile la doar
cteva, multe echipe abordnd soluii asemntoare. Totui, dup cum vom
vedea, au fost i idei unice. 1) O ghear frontal cu sistem de
ridicare Exclusiv sau n combinaie cu alte sisteme, majoritatea
roboilor au fost echipai cu gheare pentru manipularea pieselor.
Cele dou brae ale ghearei sunt, de cele mai multe ori, controlate
prin servomotoare. Pentru construcia turnurilor, echipele au
prevzut un sistem asemntor unui lift, care fie ridic gheara, fie
acioneaz independent de aceasta. La etapa naional a Eurobot, am
avut ocazia s studiez robotul echipei EA BEARS [4], din Sibiu.
Pentru prinderea piesei, acesta folosete o ghear acionat de 2
servomotoare, iar, pentru ridicare, fiecare bra este prins pe un
urub vertical, rotit cu ajutorul unui motor de curent continuu.
Robotul proiecteaz fascicule laser asupra obiectelor din jur pentru
a calcula distanele fa de acestea. Ali doi roboi, aparinnd
echipelor Gambit i Scholars Mate [5] din Elveia, au adus o
modificare interesant strategiei cu o ghear frontal. Acetia dispun
de un compartiment n spatele ghearei, unde se pot stoca pioni sau
turnuri parial construite, pentru a le finaliza mai trziu. 2) Dou
gheare independente Echipa Coffee Machine, din Frana, a fost
printre primele care a publicat filmri cu robotul lor [6], n iarna
anului trecut. Cu aceast ocazie, conceptul cu 2 gheare
independente, una n faa i celalt n spatele robotului, a ctigat
popularitate. Pe lng capacitatea crescut de stocare a pieselor, un
alt avantaj const n exploatarea poziiei ptratelor bonus din centrul
mesei. Robotul, ncrcat cu 2 turnuri, se plaseaz n ptratul advers
dintre zonele bonus i mpinge rapid turnurile pe acestea. Campionii
europeni din ultimii ani, echipa RCVA, din Frana, a construit tot
un robot cu dou gheare [7]. ns acestea nu sunt simetrice: celei din
spate i lipsete mecanismul de ridicare, fiind folosit doar pentru a
ine turnurile construite de gheara din fa. 3) Magnei i pompe de
vacuum Cu toate c regulamentul nu garanteaz c este ntotdeauna
posibil, unele echipe s-au folosit de magneii ncorporai n piese
pentru a le manipula. Altele, au folosit ventuze i pompe de vacuum
pentru a-i lipi piesele de brae. Echipa belgian OS Inraci are un
robot scund, de tip portal [8]. Spaiul dintre cele dou roi de
micare este deschis, permind pionilor s treac dintr-o parte n alta.
Acetia sunt analizai i dac nu sunt plasai pe ptratul corect, sunt
agai cu ajutorul unor magnei retractabili. Datorit greutii i lipsei
magneilor pe partea de sus, regii i reginele sunt abordai cu
ajutorul unei perechi de ventuze cu pompe de vid. Robotul nu are
prevzut sistem de ridicare, echipa propunndu-i doar s ocupe cu
piese ct mai multe ptrate de pe tabla de ah.
10
Robot autonom pentru competiia Eurobot 2011
4)
Idei inedite
Echipa UNICT, din Italia, a construit un robot [9] care dispune
de toate elementele prezentate mai sus. n fa are o ghear cu sistem
de ridicare pentru regi i regine, pe laterale sunt nu mai puin de 4
brae retractabile cu magnei pentru prinderea pionilor, iar n spate
e prevzut o ventuz cu pomp de vacuum pentru piesele din zona verde.
Toate acestea fac ca robotul s dispun de o capacitate impresionant
de stocare a pieselor, iar construcia turnurilor se ntmpl rapid, la
faa locului. O alt idee original vine din partea echipei elveiene
CRH. Pentru prinderea pieselor, ei au venit cu un mecanism inspirat
din natur. L-au denumit sistemul cameleon [10] i este constituit
dintr-un bra metalic retractabil, plasat n faa robotului. ntr-adevr
rapiditatea micrii sale amintete de stilul de vntoare al unui
cameleon. Pionii sunt stivuii n interiorul robotului, iar regii sau
reginele, se opresc pe masca frontal, care se mic pe vertical. De
departe, cei mai excentrici roboi au fost multipozii echipelor Team
1000, respectiv XD, din Frana. Design-ul celor de la XD [11]
amintete de romanul Rzboiul lumilor, de H.G. Wells. Cele 4 picioare
articulate cu servomotoare se deplaseaz printre piesele de pe mas
cu ajutorul roilor siliconice de pe tlpi. Sub corpul robotului se
gsete un sprijin cu care se poate aeza pe pioni. Strategia echipei
este realizarea funny configuration, numrndu-se printre puinele
care reuesc acest lucru. Ideea original le-a adus premiul de
creativitate la cupa Franei, iar comitetul naional le-a acordat
ansa de a reprezenta ara la etapa european de la Astrakhan, Rusia.
n aceast trecere n revist, am amintit doar o mic parte dintre
soluiile echipelor participante. Chiar dac tema concursului a fost
destul de restrictiv, ideile inedite nu au fost mpiedicate s apar.
Pe lng caracteriul educativ, finalele naionale i cea european au i
o latur de divertisment, fiind menite s atrag publicul larg ctre
domeniul roboticii. Acestea se bucur de apariii n pres i de
emisiuni de televiziune dedicate. Mai mult, echipele cu tradiie au
cluburi de fani i susintori, care-i nsoesc la concursuri.
Capitolul 2
Prezentarea soluieiSpre deosebire de ultimele 4 ediii ale
concursului, anul acesta nu mai exist garania c punctajul acumulat
pe parcursul rundei se va pstra pn la final. O strategie fix, dar
bine pus la punct, s-ar putea s nu mai fie suficient pentru
obinerea unuia dintre primele 3 locuri pe ar i calificarea la faza
european. Mai mult, dimensiunile neobinuit de mari ale pieselor au
transformat ntr-o adevrat provocare simpla ncadrare n limitele de
gabarit prevzute de regulament. n timpul primelor edine de
planificare, am stabilit urmtoarea list de condiii pentru
proiectarea robotului: 1) Structur modular, cu posibilitate de
nlocuire i adugare de componente. Indiferent ct de bun este ideea
care a stat la baza design-ului, aceasta devine inutil, dac robotul
nu reuete s treac de proba de omologare. Pornind de la aceast
premis, am decis s proiectez o structur care suport adugarea de
module, pe parcurs. Cu alte cuvinte, odat ce am11
MATEI ENE
obinut un nucleu care ndeplinete cerinele minimale, i se vor
putea aduga funcionaliti pentru mrirea competitivitii, n limita
timpului rmas. O alt lecie pe care am nvat-o din experienele
precedente este necesitatea componentelor de rezerv. La etapa
european din anul trecut, ni s-a defectat una din plcile
electronice eseniale, chiar n noaptea dinaintea primei etape de
calificri. Timpul de remediere necesar ne-a costat puncte preioase,
deoarece am intrat n concurs abia n a treia rund. Robotul de anul
acesta trebuie s permit accesul uor la toate componentele pentru o
nlocuire rapid. 2) Surse redundante de date. n timpul multor
meciuri, roboii se blocheaz sau iau deciziile greite datorit unor
valori eronate de la senzori. Cel mai grav este cnd aceste erori
intervin la sistemele vitale: de poziionare pe mas i de detecie a
adversarului. Existena mai multor surse de informaie pentru acelai
eveniment, mpreun cu o ierarhie de credibilitate a acestora, poate
preveni multe dintre situaiile neprevzute. 3) Sistem de manipulare
a pieselor simplu i uor de controlat. Micrile complexe implic
existena multor motoare, care trebuiesc sincronizate cu precizie.
Un sistem simplu de manipulare a pieseleor este mai robust i mai
rapid de dezvoltat. Mai mult, componentele pe care le am la
dispoziie sunt din clasa hobby, iar acumularea erorilor poate
produce rezultate nedorite, chiar i dup cteva zeci de secunde de
funcionare. 4) Sistem de poziionare pe mas tolerant la erorile de
deplasare. Deplasarea robotului de-al ungul unei linii drepte sau
rotaia sa la unghiuri precise sunt rezultate eseniale, dar greu de
obinut. Chiar dac se reuete sincronizarea motoarelor pe baza unui
algoritm de control, intervenia factorilor precum construcia roilor
sau distribuia greutii vor destabiliza sistemul. Metodele de
poziionare relativ au dezavantajul acumulrii nemrginite a erorilor
cu trecerea timpului, de aceea m-am decis s ncerc realizarea unui
sistem de poziionare absolut, bazat pe balize. 5) Sistem de evitare
a adversarului att pentru micrile nainte ct i napoi Dup plasarea
unei piese pe un ptrat, robotul este de cele mai multe ori nevoit s
se deplaseze cu spatele. Mai mult, pentru a oferi siguran, un
sistem de evitare trebuie s in cont c adversarul nu se afl
ntotdeauna perfect n faa sau n spatele robotului propriu. Trebuie
luate n considerare i poziiile pe diagonal (n codificarea cu puncte
cardinale: NE, NW, SE, SW), sau sub un anumit unghi intermediar. 6)
ncadrarea ntr-un buget restrns, provenit din surse proprii Aceasta
este partea mai trist a listei de condiii. Pentru a avea un robot
competitiv, majoritatea echipelor apeleaz la componente i
tehnologii de prelucrare care cresc gradul de precizie. Bugetul pe
care acetia l au la dispoziie se ridic la mii sau zeci de mii de
euro. Totui, lipsa acestor beneficii i a mijloacelor materiale
necesare face cu att mai motivant provocarea. Cutarea de soluii la
ndemn pentru diversele probleme care apar n construcia roboilor au
fcut din participrile la concurs din ultimii 3 ani, adevrate
experiene educative.
12
Robot autonom pentru competiia Eurobot 2011
2.1.
Etapele dezvoltrii soluiei
Proiectarea robotului a fost un proces iterativ, cu o durat mai
lung dect construcia efectiv. Am studiat, pe rnd, mai multe
variante, diferenele dintre ele fiind modul de abordare a pieselor
de joc sau soluionarea unor deficiene descoperite. Tabelul 2
reprezint un sumar al etapelor parcurse n cele aproximativ 6 luni
de lucru: Dat 1 15 15 22 22 30 1 20 20 Dec 8 8 28 1 15 15 30 1 7 7
14 14 21 21 Apr. 4 4 11 11 18 18 31 1 7 8 15 15 30 Etap Studiu
reguli. Idei. Proiectare varianta 1. Analiz deficiene. Proiectare
varianta 2. Confecionare piese. Vopsire mas de joc. Srbtori de
iarn. Sesiune de examene. Prototip varianta 2. Teste de micare.
Analiz deficiene. Proiectare varianta 3. Construirea ghearei.
Sistemul de ridicare a ghearei. Construirea carcasei. Asamblare
componente. Construire i montare senzori. Computer vision: detecie
adversar, simulare sistem balize. Software. Teste. Competiii.
Asamblare robot folosit pe post de adversar. Software. Teste.
Pregtire proiect de diplom.Tabel 2. Calendarul etapelor de
dezvoltare a robotului.
Noi Noi Noi Dec Feb Feb Mar Mar Apr Apr Apr Mai Mai Mai Mai Iun
Iun Iun
La prima vedere, s-ar putea spune c timpul acordat proiectrii
primelor dou versiuni i a prototipului a fost irosit. Fr aceste
etape, ns, n-a fi putut ajunge la o varianta final care s
funcioneze. n cutrea soluiilor pentru diverse probleme, am
contactat diverse companii i organizaii pentru sprijin material sau
profesional: Microsoft. Noul lor dispozitiv periferic pentru
consola Xbox 360, Kinect, ar fi fost util n testele de detecie a
adversarului i de cartografiere a mesei [12]. PandaBoard. Este o
plac de dezvoltare cu procesor ARM dual-core, 1 GB de RAM i multe
interfee de comunicaie (USB, I2C, Serial, Ethernet, VGA, etc) [13].
Datorit puterii de procesare i dimensiunilor mici, ar fi fost
nlocuitorul ideal pentru netbook-ul pe care l-am ncorporat n robot.
TURCK Industrial Automation. Mi-au oferit sprijin prin consultri i
mprumutul unor senzori de calitate industrial: un encoder
incremental i 2 senzori fotoelectrici cu mod TEACH [14]. n
continuare, voi descrie cele 3 versiuni ale robotului pe care le-am
proiectat, urmnd ca n subcapitolele urmtoare s fie detaliate toate
subsistemele variantei finale.13
MATEI ENE
a) Prima variantPentru construirea turnurilor robotul are nevoie
de o modalitate de a prinde piesele i de a le ridica. Prima idee pe
care am studiat-o (fig. 10) este inspirat dup structura robotului
cu care am participat la ediia de anul trecut. Cele 2 brae mobile
dirijeaz piesele ctre o platform. Aceasta se poate ridica cu
ajutorul unui mecanism cu 4 scripei: 2 sunt prini pe extremitile
sale laterale, iar ceilali 2 pe tavanul robotului (fig. 11). Prin
aceti scripei circul un cablu cu un capt fixat de carcas, iar
cellat prins pe un mosor. Rotaia unui motor de curent continuu
determin nfurarea sau desfurarea cablului, imprimnd micarea dorit.
Pentru a menine platforma paralel cu masa, pe lateralele ei sunt
montate dou cursoare care gliseaz prin ghidajele verticale.
Raportul de transmisie al sistemului de ridcare este de 4:1.
Deplasarea pe mas se face cu ajutorul celor dou roi din spate.
Bilele omnidirecionale din fa asigur puncte de sprijin, fr a
influena micarea. Se poate opta i pentru montarea roilor la
mijlocul robotului, dar n acest caz este necesar montarea a nc 2
bile i n partea din spate. n plus, condiia de coplanaritate pentru
cele 6 puncte de sprijin este dificil de satisfcut.
Fig. 10. Prima variant a robotului
Fig. 11. Detaliu mecanism prima variant
Din discuii i simularea micrilor pe modelul 3D, am identificat
urmtoarele dezavantaje: Greutatea ncrcturii (200 1500 g) se exercit
asupra prii din fa a robotului (mai exact, asupra bilelor de
sprijin). Acest lucru produce modificarea centrului de greutate al
ntregului sistem i pierderea din aderena roilor, conducnd la
dereglri n deplasarea pe mas. Cursorul care circul pe una din
glisiere se poate bloca, ducnd la destabilizarea sau chiar
rsturnarea turnului ncrcat. Efecte similare punctului precedent pot
aprea i la micri brute ale robotului. Lungimea i micarea braelor
sunt limitate de constrngerile de perimetru14
Robot autonom pentru competiia Eurobot 2011
b) A doua variantA doua variant reprezint o abordare total
diferit fa de prima. Este vorba despre un robot portal, prevzut cu
dou perechi de ui rotative [12], care va ncerca s mute ct mai multe
piese pe ptratele proprii. Piesa int va ptrunde n incint, dirijat
de plugul format prin deschiderea uilor n form de V. Prin nchiderea
uilor se creeaz un spaiu controlat, n care piesa captiv i zona
mesei pot fi analizate cu precizie, fr perturbaii cauzate de
factorii externi (iluminare, zgomote, etc). Eliberarea se face prin
simpla deschidere a uilor, robotul putnd s plece mai departe n
direcia dorit. Pentru a respecta regula de transparen, ct i
constrngerile de gabarit, nu se vor deschide niciodat concomitent
ambele perechi de ui. Sistemul necesit utilizarea a 4 servomotoare,
cte unul pentru fiecare u. O alternativ simplificatoare pe care am
avut-o n vedere este nlocuirea acestora cu 2 jaluzele orizontale cu
tambur, controlate de motoare. Toate componentele electronice sunt
montate n cele dou picioare laterale, iar legtura ntre ele se poate
face prin cabluri prinse de tavan, n interior. Chiar dac proiectul
nu include nici un mecanism de stivuire, acesta se poate aduga
ulterior n spaiul destinat pieselor (v. condiia 1 din lista de la
nceputul capitolului). nc de la nceput am avut temeri legate de
stabilitatea robotului, avnd n vedere lipsa pereilor din fa i din
spate. Totui, simplitatea i elegana soluiei m-au determinat s
construiesc un prototip din placaj (fig. 13).
Fig. 12. A doua variant a robotului
Fig. 13. Prototipul realizat pentru varianta 2
Primele teste de micare au confirmat temerile iniiale. Rotaiile
robotului, chiar i fr ncrctur, fceau ca distana dintre roi s
varieze sub aciunea forei centrifuge cu efecte vizibile i dificil
de compensat din software. Din nefericire, nlimea maxim a turnului,
foarte apropiat de cea a robotului (330 mm fa de 350 mm), nu
permite ranforsarea structurii. Deficienele importante m-au
determinat s renun i la aceast idee, ns nu complet. Dup cum vom
vedea n continuare, varianta final a robotului va mprumuta din
concluziile i prile bune ale acestor dou ncercri.15
MATEI ENE
c) Varianta finalDesign-ul care a fost pus n practic (fig 14 i
15), aduce mecanismul primei variante n carcasa celei de-a doua.
Desigur, ambele concepte au suferit modificri: Carcasa Am renunat
la cele dou plane nclinate ale acoperiului, optnd pentru un
paralelogram cu dimensiunile foarte apropiate de limitele din
reguli. Pentru rigidizare a fost mecesar adugarea peretelui din
spate i a celui de jos. Am desfiinat pereii interiori pentru un
acces uor la componente. N-a mai fost nevoie de ui, dar ideea
plugului mi s-a prut util, de accea am construit pereii frontali n
form de V. Mecanismul Cele dou brae folosite pentru prinderea
pieselor trebuie s execute micri simetrice. Pentru un control mai
uor, am decis articularea lor la mijloc. Deasemenea, sistemul de
ridicare pe baz de scripei a fost nlocuit cu un urub vertical.
Toate acestea au adus mbuntiri structurii mecanismului, fr a
sacrifica independena celor dou micri (pe orizontal i vertical).
Deficiena cea mai mare a primei variante era instabilitatea
provocat de greutatea suplimentar a pieselor crate. De data
aceasta, mecanismul este montat pe peretele din spate, astfel nct
sarcina s se descarce integral asupra roilor, sporind aderena
robotului pe mas.
Fig. 14. Modelul 3D al variantei finale
Fig. 15. Varianta final a robotului
Funcionarea mecanismului este descris n subcapitolul urmtor, iar
structura detaliat a acestuia i a carcasei, n capitolul 3.
16
Robot autonom pentru competiia Eurobot 2011
2.2.
Mecanismul de manipulare a pieselor
Manipularea pieselor se face cu ajutorul unei gheare frontale cu
braele articulate la mijloc. Fiecare bra este prins pe o piuli
cilindric, montat pe filetul unui urub orizontal (fig. 16). Pentru
a obine micarea dorit, urubul are filet n sens anti-orar pe
jumtatea dreapt i filet n sens orar pe jumtatea stng (fig. 16
medalion). Aadar, rotaia motorul de curent continuu care antreneaz
urubul, va determina apropierea sau deprtarea piulielor (n funcie
de sensul de rotaie). Se observ c micarea braelor este opus micrii
piulielor (foarfec ntoars). n aceast soluie constructiv, se obine o
vitez dubl de apropiere, respectiv deprtare, a braelor, dearece
ambele piulie particip la micare. Exist un raport favorabil, de
multiplicare, ntre lungimea braului dintre articulaia median i axul
piuliei, respectiv din articulaia median i centrul concavitii
ghearei. Motorul este prevzut cu encoder incremental (un senzor
Hall montat pe ax) cu 360 impulsuri/rotaie complet (1 implus/grad).
Chiar dac acesta ofer precizie suficient pentru determinarea
capeteleor de curs, pentru siguran, am prevzut i nite
microntreruptoare (v. punctul 2 din lista de condiii de la nceputul
capitolului). Unul dintre butoane este montat pe exteriorul
ghearei, n partea stng (privit din faa robotului), i limiteaz
micarea la atingerea poziiei de extindere maxim. Alte dou butoane
sunt montate pe interiorul ghearei, n apropierea vrfului (unul pe
stnga i cellalt pe dreapta; fig 18.D). Acestea se apas la contactul
cu piesa, semnalnd atingerea poziiei de apropiere maxim a
braelor.
Fig. 16. Mecanismul de strngere a ghearei (medalion: detaliu
urub orizontal) 17
MATEI ENE
urubul are filetul cu pasul de 0,5 mm (distana dintre dou
spire), dar faptul c piuliele se mic simultan determin o vitez de
apropiere/deprtare 1 mm/rotaie. Motorul EMG30 [15] are o turaie
maxim de 200 RPM, deci cursa total a piulielor, de 9 mm (v.
capitolul 3), se parcurge n aproximativ 2,5 secunde. Pentru
construcia turnurilor, ntreg subansamblul prezentat mai devreme
este suspendat pe piulia unui urub vertical, de data aceasta cu
acelai filet de la un capt la cellalt (fig. 17). Acesta este rotit
de un motor identic cu cel al urubului orizontal, micarea ridicnd
sau cobornd gheara. Am prevzut butaone i pentru detectarea
capetelor de curs ale acestei micri, pentru a avea o surs de date
suplimentar celei oferite de encoder. Butonul pentru ridicare este
montat pe suportul motorului vertical i este apsat de ctre jugul
montajului de pe piuli (desenat cu alb n medalionul fig. 17).
Cellalt buton, care determin captul de curs la coborre, este fixat
pe peretele exterior al casetei urubului orizontal i este apsat
prin contactul cu carcasa.
Fig. 17. Mecanismul de ridicare a ghearei (medalion: detaliu
montaj urub vertical)
urubul vertical are pasul de 1,5 mm, iar cursa piuliei este de
60 mm (am lsat o marj de 10 mm peste nlimea unui pion). Avnd n
vedere turaia motorului, de 200 RPM, o micare complet pe vertical
dureaz aproximativ 12 secunde. Pe lng micarea de ridicare, pentru
construcie, robotul mai are nevoie de urmtoarele informaii:
18
Robot autonom pentru competiia Eurobot 2011
Dac piesa a intrat complet n interiorul robotului n acest scop,
am montat cte un buton n apropierea articulaiei, pe fiecare bra al
ghearei (fig. 18.A). Cnd piesa apas mcar unul dintre aceste
butoane, nseamn c a ajuns ntr-o poziie n care poate fi prins
corect, fr riscul de a o scpa. Ce tip de pies se afl n ghear Pentru
a obine aceast informaie, am profitat de faptul c regii i reginele
au cod de bare pe suprafaa lateral. Nu prezint interes s distingem
ntre cele dou piese importante, de aceea am folosit un senzor de
culoare (fig. 18.B) cu care determin dac piesa are laterala galben
sau nu. Dac a intrat sau nu un pion sub piesele ridicate Am montat
un senzor SHARP [16] pe peretele interior din dreapta carcasei
(fig. 18.C). Acesta folosete raze infraroii pentru a calcula
distana fa de obiectele din fa. n aplicaia mea este folosit pe post
de senzor de prezen, asemntor razelor laser din sistemele de
securitate bancar.
Fig. 18. Senzorii de pe ghear: A. Butoane prezen pies n
interiorul robotului, B. Sezor culoare, C. Senzor prezen pion, cnd
ghear este ridicat, D. Palpator dreapta nchidere ghear
2.3.
Sistemul de poziionare pe mas
Majoritatea echipelor participante la Eurobot se bazeaz pe
odometrie (cu ajutorul encoderelor incrementale) pentru a calcula
poziia robotului pe mas. Cu alte cuvinte, locaia curent se determin
cunoscnd-o pe cea anterioar i deplasamentul fiecrei roi. Aceast
metod are dezavantajul c erorile se cumuleaz fr limit superioar, cu
trecerea timpului. Motoarele cu encoder, EMG30 [15], pe care leam
folosit la deplasarea robotului de anul trecut, nu ncap n spaiul
rmas n jurul ghearei. Aadar am fost nevoit s apelez la colegii din
ED303, care mi-au mprumutat o pereche de motoare GHM-16, fr
encoder, de pe rover-ul lor de la Lynxmotion.19
Fig. 19. Vedere de sus a colului din dreapta spate interior
MATEI ENE
Chiar i aa, a fost nevoie s ajustez puin exteriorul braelor
(fig. 19) pentru ca totul s aib loc. Datorit acestor condiionri, a
trebuit s caut alte metode pentru sistemul de poziionare. O prim
idee a fost folosirea senzorului din mouse-ul optic pentru a
calcula deplasarea robotului. Avantajele pe care le-am identificat
la aceast abordare au fost: Independena fa de motoare. Dac roata
derapeaz, micarea motorului nu se transform integral n deplasare a
robotului. n aceast situaie, un encoder montat pe axul motor va
nregistra greit citiri. Mouse-ul urmrete podeaua, deci este imun la
aceste erori. Hardware-ul este deja fcut, singurul efort fiind de
programare Din pcate, aa cum au artat i testele, precizia
mouse-ului este insuficient pentru aceast aplicaie. ntr-adevr,
micarea cursorului pe ecran este un proces n bucl nchis,
utilizatorul fiind cel care face reglajul. Mai mult, micrile
cursorului sunt influenate de un factor de acceleraie, iar
ncercrile mele de a dezactiva complet acest comportament au euat. n
timpul cutrilor, am gsit un articol [18] care prezint o metod de
odometrie apropiat de principiul mouse-ului optic. Autorii au
folosit o camer ndreptat spre podea pentru a calcula deplasarea
robotului. Cutnd un loc unde se poate pune camera, am avut o alt
idee: s montez senzori de culoare pe fundul carcasei. Prin
informaiile de la acetia, pot reconstitui o imagine aproximativ a
zonei de pe masa de joc pe care se afl robotul la un moment dat.
Masa de joc de la concursul de anul acesta favorizeaz aceast
abordare, culorile albastru i rou alternnd pe tabla de ah. Ptratele
de pe mas au dimensiunile apropiate de cele ale robotului (latura
de 350 mm, iar carcasa are proiecia un dreptunghi de 280 mm x 320
mm), astfel nct ghidarea dup marginile acestora nu produce erori
prea mari. Un raionament simplu arat c 4 senzori, fiecare montat n
unul din coluri, nu sunt suficieni pentru a acoperi toate cazurile.
De exemplu, n situaia din fig. 20 robotul va considera c se afl pe
un ptrat albastru, ns plasarea pieselor pe acest zon nu-i va aduce
nici un punct. Pentru siguran, am montat n total 7 senzori: 4 n
coluri i 3 pe mijlocul laturilor disponibile (fig. 21).
Fig. 20. Ambiguitate cu 4 senzori de culoare
Fig. 21. Poziiile senzorilor de culoare de pe fundul
carcasei
20
Robot autonom pentru competiia Eurobot 2011
Tema de anul acesta confer o importan deosebit poziiei
adversarului. Pe lng obligaia de a-l evita dac se afl pe direcia de
deplasare a robotului, de data aceasta trebuie monitorizat tot
timpul fiindc de aciunile sale depinde punctajul propriu. n acest
scop, am gndit un sistem de balize care s ofere informaii despre
configuraia mesei: att poziiile roboilor ct i ale pieselor. Este
vorba de montarea unor camere video n cele 3 poziii prevzute pe
extremitile mesei. Acestea vor identifica obiectele i le vor
calcula poziiile prin triangulaie. Piesele pot fi recunoscute dup
culoarea galben, deoarece regulamentul garanteaz c roboii nu vor fi
vopsii cu aceast nuan. Pentru identificarea roboilor, o prim idee
care mi-a venit a fost desenarea unor markere vizuale pe balizele
mobile. Totui, cu ajutorul informaiilor de la senzorii de culoare,
putem determina zona n care se afl robotul propriu, poziia
adversarului rezultnd prin excludere. Sistemul de balize fixe are
nevoie de performane sporite de procesare i de o modalitate de a
transmite datele robotului. Rspunsul acestor cerine a fost
folosirea a 3 smartphone-uri care vor efectua prelucrarea
imaginilor utiliznd biblioteca OpenCV [19] [20] i vor comunica ntre
ele i cu netbook-ul din robot printr-o reea wireless. Suporii
pentru smartphone-uri, redai n fig. 22, trebuie s ofere
posibilitatea reglrii nclinrii pentru a calibra sistemul nainte de
concurs . Aceast operaie se poate face prin slbirea piuliei fluture
de la baz (vizibil la suportul din dreapta din fig. 22) i strngerea
la loc dup ce s-a obinut poziia dorit (asemntor unei lmpi de
birou).
Fig. 22. Suporii construii petru smartphone-urile folosite pe
post de balize fixe
Imaginile de la camere sunt influenate de condiiile de iluminare
ale mesei. Pentru a nelege i a testa algoritmii de triangulaie
video, am folosit imagini simulate. n acest scop, am modelat masa
de joc i camerele n Blender [21]. O descriere detaliat a metodei i
a rezultatelor obinute se gsete n capitolul 4.21
MATEI ENE
2.4.
Sistemul de evitare a adversarului
Informaiile de la sistemului de balize fixe fac inutil existena
unui sistem dedicat poziiei adversarului. Totui, complexitatea sa i
faptul c nu am putut mprumuta cele 3 smartphone-uri numai pentru
perioada competiiei, m-au determinat s caut i soluii alternative
(v. punctul 2 din lista de condiii de la nceputul capitolului).
Alternativa pe care am proiectat-o se bazeaz tot pe prelucrare de
imagine. Mai exact, o camer montat pe acoperiul robotului va
identifica baliza de pe adversar (fig. 23) i-i va estima distana.
Am ales s colorez aceast baliz complet n roz deoarece nuana nu se
gsete nicieri pe mas i nu este frecvent ntlnit pe tavanele
ncperilor. n cazul n care mediul unde se desfoar concursul nu este
favorabil , aveam pregtite i alte culori (cyan). i implementarea
acestui sistem a avut mai multe iteraii:
Fig. 23. Baliza de pe adversar
a) Prima variant a fost fcut n criz de timp (v. calendarul
etapelor de la nceputul capitolului) i este o camer ndreptat pe
direcia nainte a robotului (fig. 24). Identificarea balizei se face
prin filtrarea obiectelor dup culoare, alegndu-l pe cel mai mare.
Cnd dimensiunea ariei depete o anumit valoare, se consider c
adversarul este foarte aproape i trebuie evitat. b) Varianta final
a fost proiectat dup concurs. Am modificat sistemul prin folosirea
unei oglinzi conice prins pe tavan (fig. 25). nlimea la care se
gsete baliza pe adversar este cu 80 mm mai mare dect cea a balizei
proprii. Astfel, camera va vedea reflexia acesteia pe marginea
oglinzii, indiferent de orientare. Vederea de ansamblu este
important pentru micrile cu spatele ale robotului (v. condiia 5 din
lista de la nceputul capitolului).
Fig. 24. Prima variant a balizei de evitare a adversarului
Fig. 25. Varianta final a balizei de evitare a adversarului
Tranziia dintre cele dou variante a necesitat doar schimbri
hardware, algoritmul de segmentare fiind acelai. N-am mai folosit
platforma cu 4 picioare, deoarece montajul a fost fcut dup concurs.
Cu mici modificri, acest sistem se poate utiliza i anii urmtori.
Pentru detalii de funcionare, algoritm i rezultate se va consulta
capitolul 4.22
Robot autonom pentru competiia Eurobot 2011
2.5.
Strategia
nainte de a discuta strategia, a dori s amintesc faptul c
strngerea ghearei dureaz mult mai puin dect ridicarea ei (2,5 fa de
12 secunde). Runda de concurs de doar 90 de secunde nu va permite
robotului s execute foarte multe operaii de construcie. Pe mas sunt
disponibili doar 2 regi i 2 regine, deci indiferent de performane,
nu se pot realiza mai mult de 4 turnuri. Toate aceste condiii
contureaz o strategie axat pe ocuparea ct mai multor ptrate cu
pioni, iar eventualele operaii de construcie trebuiesc executate
concomitent cu deplasarea robotului, pentru a economisi timp.
Ptratele bonus trebuiesc ocupate mai nti, ns cu pioni i nu cu
turnuri. Importana lor va atrage atenia adversarului, de aceea nu
trebuie s i se dea ocazia de a fura construcii valoroase. Ptratul
bonus din apropierea zonelor protejate poate oferi siguran sporit,
deoarece scoaterea pieselor din col este dificil. Nici zonele
protejate nu trebuiesc neglijate, dar ocuparea lor cu altceva dect
pioni nu este profitabil. Pe lng preocuprile de a puncta, robotul
trebuie s aloce timp patrulrii zonelor importante. Astfel, poate
profita de piesele plasate de adversar, n acelai timp asigurndu-se
c piesele sale sunt mai greu de furat. Algoritmul de determinare a
urmtoarei aciuni nu este complicat. Dac robotul are o viziune de
ansamblu asupra mesei (prin utilizarea sistemului de balize fixe),
un simplu greedy poate oferi rezultate bune. n caz contrar, trebuie
stabilit manual mprirea rundei ntre explorare i exploatare, robotul
schimbndu-i comportamentul n funcie de aceast intenie.
2.6.
Caracterul inovativ
Prin comparaie cu soluiile studiate, att la concursul de anul
acesta, ct i la ediiile precedente, robotul descris n aceast
lucrare aduce urmtoarele elemente de noutate: 1. Sistem de
manipulare a pieselor controlat prin doar 2 motoare de curent
continuu. 2. Detecia prezenei adversarului n vecintatea robotului
se face indiferent de orientare. 3. Conceptul sistemului de balize
fixe, cu viziune global asupra configuraiei mesei. Acesta poate fi
folosit independent de tema concursului, singurele modificri
necesare fiind stabilirea caracteristicilor distincitve dup care
pot fi recunoscute diversele elemente 4. Orientarea pe mas n funcie
de culorile zonei pe care se afl robotul. Erorile sunt mult mai
mici fa de metodele bazate pe encodere. Pentru a profita de
avantajele lor, cele dou metode se pot chiar combina. 5. Asigurarea
surselor redundate de date pentru evenimentele importante: a)
senzorii de culoare i balizele fixe pentru poziia robotului b)
encoderele motoarelor i butoanele pentru capetele de curs ale
micrilor ghearei c) sistemul cu oglind conic i balizele fixe pentru
poziia adversarului 6. Comunicaia pe magistrala I2C efectuat prin
intermediul portului VGA al netbook-ului. 7. n fine, ncadrarea
ntr-un buget sub 1000 RON. Mai exact, sumele cheltuite au fost: 140
EUR pentru driver-ul Sabertooth 2x5. 150 RON pentru acumulatori
aprox. 150 RON pentru celelalte componente electronice23
MATEI ENE
Capitolul 3
HardwareAcest capitol analizeaz n detaliu componentele hardware
ale robotului. Prima parte este o descriere mecanic, concentrat n
special n jurul dispozitivului de manipulare a pieselor. A doua
parte analizeaz componentele electronice i modul lor de
interconectare. Subiectul central aici este sistemul de
senzori.
3.1.
Descrierea mecanic
Construcia robotului a nceput n luna martie, cu gheara i
mecanismul su de ridicare. Acestea au determinat apoi forma
carcasei i poziiile celorlalte componente. Dintre materialele
folosite predomin alama (pentru componentele mobile), aluminiul
(componentele care nu sunt supuse la efort) i oelul. Este primul an
n care construiesc un robot cu carcas i componente metalice, de
aceea ajutorul tatlui meu la prelucrri a fost indispensabil.
Execuia a fost precedat de proiectarea componentelor cu programul
de modelare 3D, SolidWorks. Acesta are i capabiliti de simulare a
micrilor care m-au ajutat la identificarea anumitor probleme nc din
faza de design (v. descrierea primei variante a proiectului
robotului, din capitolul 2). Sigur c nu am putut proiecta ntregul
robot de la nceput; modelul a fost realizat n etape, n paralel cu
construcia. n continuare voi descrie subansamblele, n ordinea
cronologic a construciei.
3.1.1. GhearaGheara este format din dou brae simetrice
articulate. n poziia nchis aceasta copiaz forma pieselor, de aceea
mi-a fost util s construiesc mai nti o machet din carton (fig. 26).
Dup ce am obinut forma dorit, am transpus cu uurin conturul pe
foaia de tabl din care urma s fie croit varianta final.
Fig. 26. Macheta din carton a ghearei 24
Robot autonom pentru competiia Eurobot 2011
Cu ajutorul machetei am putut determina i cursa micrii pe care o
va efectua gheara. Aa cum rezult din fig. 27, n poziia deschis cele
dou piulie sunt apropiate, cu distaa dintre axe de 63 mm, n timp ce
n poziia nchis acestea sunt deprtate la 72 mm. Rezult o curs total
de 9 mm de-a lungul urubului orizontal. Faptul c piuliele se
apropie/deprteaz simultan, njumtete cursa efectiv la 4,5 mm.
Cunoscnd pasul urubului, de 0,5 mm, avem nevoie de 9 rotaii pentru
extinderea/contracia ghearei.
Fig. 27. Cursa micrii ghearei
Un bra al ghearei are o structur spaial cu dou elemente de form
asemntoare unei seceri. Acestea sunt croite din tabl i unite prin
distanieri de plastic, de genul celor folosii pentru plcile
electronice. Elementul inferior este ndoit n apropierea
articulaiei, pentru a ajunge n contact cu solul cnd gheara este
compet cobort. n acelai timp, se observ c acesta este mai lat dect
cell superior i are marginea interioar ascuit pentru a intra sub
pies la strngere. Am urmrit astfel s profit de faptul c piesele au
marginile teite (2 mm x 45), pentru a nu risca alunecarea lor din
ghear n timpul micrilor. Articulaia este un distanier de alam cu
guri filetate la capete, prins de brae cu dou uruburi M6. Tot din
alam sunt i piuliele de pe urubul orizontal pe care sunt prinse
braele ghearei. Montajul este redat n fig. 28.
Fig. 28. Montajul componentelor ghearei 25
MATEI ENE
Pentru a monta gheara pe urubul orizontal i, mai trziu pe cel
vertical, am prevzut o caset de tabl, n form de U. urubul este
susinut de dou buce de alam, prinse pe lateralele casetei. Buca din
dreapta are rol dublu, deoarece prin intermediul ei se face i
ataarea motorului de urub. Axul motorului intr ntr-un canal prevzut
n captul urubului i este fixat cu ajutorul unui tift filetat.
Caseta are un capac superior prevzut cu canale n care culiseaz
bolurile piulielor de micare. Pe partea dinspre peretele din spate
al robotului sunt montai doi supori cu bile de rulment ncasetate.
Scopul acestor bile este de a preveni frecarea casetei de perete la
micrile pe vertical (fig. 29). Acest ntreg subansamblu este
suspendat de piulia urubului vertical prin intermediul a dou urechi
metalice. Acestea sunt prinse, n partea de jos, de caseta ghearei.
n partea de sus se observ o pies din aluminiu n form de jug (de
culoare alb n fig. 30), care intermediaz prinderea urechilor de
piuli. Jugul are rol de distanier, pentru a mpiedica urechile s
loveasc urubul sau suporii acestuia la micrile de ridicare/coborre
(fig. 30). n plus, acesta permite ghearei s oscileze pe direcia
fa-spate, absorbind eventualele imprefeciuni ale peretelui
carcasei. Greutatea pieselor inute n ghear se va opune acestor
oscilaii, pstrnd contactul mecanismului cu peretele, pe bile.
Astfel am eliminat riscul ca sistemul s se blocheze pe timpul
micrii pe vertical, pastrndu-l, n acelai timp, n echilibru. Dac
robotul ar avea greutatea distribuit uniform, atunci mecanismul ar
putea permite executarea operaiei funny configuration. Pentru asta,
sunt necesari 2 pioni suprapui. Dac gheara este strans pe pionul de
deasupra, prin coborrea ei, robotul se va ridica de pe mas,
sprijinindu-se pe pionul de jos. Manevra este ns riscant i necesit
o modalitate de a fixa mecanismul n poziie vertical pe perioada
desfurrii sale (v. paragraful anterior).
Fig. 29. Montajul pentru prinderea ghearei pe urubul
orizontal
Fig. 30. Montajul pentru prinderea ghearei pe urubul
vertical
26
Robot autonom pentru competiia Eurobot 2011
3.1.2. Mecanismul de ridicareSubansamblul de ridicare este prins
de peretele din spate al carcasei prin doi supori/lagre de
aluminiu. urubul vertical este montat pe acetia prin dou buce de
alam. Pentru a reduce frecrile, urubul pivoteaz n lagrul de jos pe
o bil de rulment introdus n buc. Prinderea motorului se face prin
buca de sus, ntr-un mod similar urubului orizontal. Dup cum se
observ n fig. 31, spre deosebire de buca de jos, care este prins de
suport cu o piuli, cea de jos este lsat liber pentru a nu se opune
eventualelor oscilaii ale motorului, n timpul micrii. Piulia care
circul pe vertical are dou guri M6 pe feele laterale. Acestea
corespund gurilor din urechile metalice i piesa n form de jug din
fig. 30, i au fost prevzute pentru fixarea ghearei. O curs complet
are 60 mm. Cunoscnd pasul urubului, de 1,5 mm, rezult c avem nevoie
de 40 de rotaii pentru ridicarea/coborrea ghearei.
3.1.3. CarcasaCu excepia tavanului, carcasa este construit
dintr-o masc de main de splat Albalux (fig. 32). Pereii laterali
sunt confecionai din aceeai foaie, ndoit la abkant. Pereii de jos i
sus au fost croii separat i prini cu nituri pop (dup ce tentativa
de a-i suda a euat). Peretele de jos a fost decupat dup forma
ghearei, pentru a-i permite s ating solul la poziia cobort. Tot
aici au fost fcute decupri pentru roi, bilele de sprijin i cei 7
senzori de culoare. Distana dintre sol i fundul robotului este de
numai 3 mm, pentru a nu permite luminii ambientale s influeneze
senzorii de culoare. Cu toate acestea, testele au artat c nu este
suficient, i am fost nevoit s lipesc band de cauciuc pe margine,
pentru o izolare i mai bun (fig. 33 jos). Nici tavanul nu a scpat
neperforat. A fost nevoie de guri pentru: butonul rou, firul
camerei pentru detecia adversarului, aerisirea i cablul de
alimentare al netbook-ului (fig. 33 sus). Prinderea componentelor
am fcut-o cu uruburi M3. Excepie fac netbook-ul i bateria, pentru
care a fost nevoie s construiesc supori speciali, din plastic.
Deasemenea, pentru a evita dezordinea, am trecut traseele firelor
prin baghete de plastic (cele n care se ambaleaz circuitele
integrate) prinse pe pereii carcasei. Am avut cteva bti de cap la
montarea senzorului de culoare de pe mijlocul laturii din spate,
fiindc se afl sub mecanism. Soluia a fost tragerea firelor pe
exteriorul carcasei pn ce depesc zona casetei de susinere a
ghearei. Carcasa a fost iniial vopsit alb, ns numeroasele prelucrri
i guri de montaj au lsat amprente inestetice. La final, am
acoperit-o cu autocolant albastru pentru a-i da un aspect
frumos.Fig. 31. Montajul mecanismului de ridicare 27
MATEI ENE
Fig. 32. Construcia carcasei
Fig. 33. Exteriorul feelor de sus i jos ale carcasei
3.1.4. Blocul motorRobotul are 4 puncte de contact cu masa: 2 n
spate, pe roi, i 2 n fa, pe bile omnidirecionale. Pentru a pstra
coplanaritatea, distana dintre suporii bilelor i carcas poate fi
ajustat prin numrul de aibe folosite pe post de distanieri.
Motoarele sunt prinse de fundul carcasei prin intermediul unor
colare metalice (fig. 34). Axele motoarelor ies n exteriorul
carcasei prin nite guri date n pereii laterali, pentru a avea
garania c rmn aliniate. Nu am avut roi care s se potriveasc cu
motoarele, de aceea a trebuit s confecionez o pereche. Acestea au
fost executate pe strung i au corpul din plastic, buca de montaj
din aluminiu i pe post de pneuri am folosit 2 curele de transmisie,
dinate, de cauciuc.
Fig. 34. Blocul motor 28
Robot autonom pentru competiia Eurobot 2011
3.1.5. Sistemul de detecie a adversaruluiPentru detecia
adversarului am folosit o oglind conic mprumutat din laboratorul
ED304. Aceasta are diametrul bazei de 80 mm i unghiul la vrf de 120
(fig. 35) i este prins de acoperiul robotului printr-un urub M4.
Suportul camerei ndreptate spre oglind este confecionat din
aluminiu. Datorit nlimii necesare pentru a cuprinde ntrega imagine,
sistemul nu respect Fig. 35. Dimensiunile oglinzii folosite
dimensiunile specificate n reguli (cub cu latura de 80 pentru
detecia adversarului mm). Acest lucru nu m-a afectat, fiindc am
definitivat sistemul dup perioada competiiei. Pentru anii viitori,
dimensiunile se pot aduce n limitele admise, fie prin modificarea
oglinzii, fie, mai simplu, prin utilizarea unei camere cu unghi de
vedere mai larg.
3.2.
Descrierea electronic
Fig. 36 ilustreaz modul de interconectare al componentelor din
robot. Unitatea de comand este un netbook cu procesor Intel Atom
1,6 GHz i 1 GB RAM. Pe acesta ruleaz sistemul de operare Ubuntu
Linux, care permite folosirea oricrui limbaj pentru programarea
robotului. La pornire, netbook-ul creeaz o reea wireless Ad-Hoc
nesecurizat, cu numele Robot. Pentru configurri se poate deschide o
conexiune ssh n linie de comand, sau cu suportul de desenare a
ferestrelor activat (opiunea X va rezerva o sesiune pe server-ul X
Window System). Comunicaia cu perifericele se face pe magistrala
USB, respectiv I2C. Datorit dimensiunilor laptop-ului, am fost
nevoit s-l montez lipit de tavanul carcasei, lsnd inaccesibile dou
din cele 3 porturi USB. Pentru a compensa lipsa acestora, am
folosit un Hub USB 2.0 cu 4 porturi. Conexiunea I2C se realizeaz
prin portul VGA [22], fapt pe care-l voi detalia n subcapitolele
urmtoare.
3.2.1. Sursa de energien timp ce laptopul folosete bateria
proprie, toate celelalte componente sunt alimentate dintr-un
acumulator cu plumb-acid sigilat, de 12V i 2200 mAh [23]. Am ales
acest model datorit dimensiunilor sale; celelalte variante fie nu
puteau debita suficient curent, fie ar fi stnjenit mecanismul cu
ghear. Cele dou borne sunt conectate prin butonul de urgen la
contactele de distribuie. n poziia apsat, butonul deconecteaz
bateria de sistem i robotul se oprete, n timp ce la eliberare,
legturile se restabilesc. Din acest motiv, folosesc butonul pentru
a porni sau opri robotul i n mod obinuit.
29
MATEI ENE
Fig. 36. Diagrama electronic a robotului
3.2.2. Motoarele de deplasarePentru micarea robotului pe mas am
folosit o pereche de motoare de pe rover-ul 4WD de la Lynxmotion
[17]. Acestea se controleaz cu tensiuni ntre 0 i 12 V, ating turaia
maxim de 200 RPM i pot consuma pn la 2 A. Driver-ul de pe rover,
Sabertooth 2x10 R/C [24], a fost gndit pentru vehiculele
radiocomandate. Acesta primete comenzi pe 2 canale analogice, iar
reprezentanii Dimension Engineering mi-au comunicat c l pot
controla prin semnale PWM cu frecvena de 50 Hz i perioada ntre 1000
us (full reverse) i 2000 us (full forward). ncercrile mele de a
genera semnale de comand cu microcontroller-ul Atmega16, au
ntmpinat dificulti. Prima dintre ele a fost gsirea valorii pentru
oprire, care a necesitat multe30
Robot autonom pentru competiia Eurobot 2011
tatonri (orice valoare cu puin mai mic sau mai mare fcea
motoarele s se mite). ns cel mai important neajuns era lipsa
oricrui mecanism de sincronizare ntre motoare, pentru mersul nainte
sau ntoarcerile pe loc. Vehiculele telecomandate nu au nevoie de aa
ceva, reglajul fiind fcut de ctre utilizator. n concluzie, am decis
c este nevoie de o variant mai capabil a driver-ului. Cu sprijinul
financiar al colegului i prietenului meu, Andrei Avram, am
achziionat driver-ul Sabertooth 2x5 [25]. Acesta are multe moduri
de operare, ns cele care prezint interes pentru aplicaia mea sunt
Simplified Serial i Packetized Serial. Am preferat s-l folosesc pe
cel de-al doilea fiindc are opiuni pentru operarea sincronizat a
motoarelor. Comunicaia se realizeaz prin interfaa serial n modul
8N1 (cuvnt de 8 bii, fr paritate, 1 bit de stop), fr flow control,
iar viteza fie se determin dinamic (Packetized Serial), fie se
specific prin configuraia comutatoarelor DIP de pe plac (Simplified
Serial). Netbook-ul nu are interfa serial, de aceea am avut nevoie
de un convertor USB RS232 (v. subcapitolul 3.2.7). Driver-ul
primete comenzi fr s ofere feedback, de aceea este nevoie doar de
firul de transmisie (TX). Canalul de recepie are un rol special:
cnd este conectat la 0V, driver-ul oprete motoarele i i ncheie
funcionarea. Productorii recomand ca acesta s fie cuplat la butonul
de urgen.
3.2.3. Motoarele mecanismului de manipulare a pieselorMecanismul
cu ghear i cel de ridicare sunt puse n micare de motoarele
recuperate de pe robotul de anul trecut. Acestea dispun de encodere
incrementale (2 senzori Hall montai pe axul motor) cu 360 de
impulsuri la fiecare rotaie complet (rezoluie de 1 grad). Precizia
este mai mult dect suficient pentru controlul rotaiilor celor dou
uruburi cu piulie de micare. Driver-ul MD23 [26] folosit pentru
comanda motoarelor are capabiliti pentru: Citirea encoder-ului
fiecrui motor Citirea curentului consumat de fiecare motor Citirea
nivelului bateriei Partajarea magistralei cu mai multe dispozitive,
difereniate prin adres
Comunicaia se realizeaz pe magistrala I2C (Inter-Integrated
Circuit) i se bazeaz pe scrierea sau citirea regitrilor pui la
dispoziie de driver. Netbook-ul nu are o interfa de dedicat acestei
magistrale, ns am putut realiza legtura prin pinii DDC ai plcii
video [22]. Acetia se folosesc de obicei pentru a negocia
parametrii imaginii (rezoluie, palet de culori, etc.) ntre placa
video i monitor, ns sunt, n esen, o interfaa I2C complet funcional.
Din pcate nu toi productorii permit accesul sitemului de operare la
aceast facilitate, ns, cu puin noroc, netbook-ul nu s-a numrat
printre cazurile nefericite. Realizarea legturii electrice
presupune doar lipirea firelor conform fig. 37., fr a fi nevoie de
alte componente. Pinul +5V DC, nu este necesar, deoarece ambele
dispozitive au surs de alimentare, ns pentru o comunicaie corect
trebuie fcut legtura ntre mase (GND).Fig. 37. Pinii DDC de pe
portul VGA 31
MATEI ENE
3.2.4. SenzoriRobotul dispune de urmtorii senzori: a) Encoderele
celor 2 motoare ale mecanismului de manipulare Micrile ghearei
trebuiesc limitate pentru a evita contactul cu elementele carcasei.
Encoderele motoarelor care efectueaz aceste micri sunt o bun surs
de informaie n acest scop. Montajul dintre urub i motor este ferm;
spre deosebire de roile de deplasare, aici nu exist riscul
deraprilor (micrea motorului se trasmite integral asupra urubului).
Encoderele nregistreaz 360 de impulsuri la o rotaie complet. Am
stabilit n capitolele anterioare c sunt necesare 9 rotaii pentru
strngerea sau extinderea complet a ghearei i 40 de rotaii pentru
ridicare/coborre. Deci, pentru micarea pe orizontal avem 3240
impulsuri, iar pe vertical 14400. n apropierea punctelor de oprire,
motoarele sunt decelerate, pentru a diminua pe ct posibil efectele
ineriei. b) 8 butoane Unul dintre acestea este montat pe acoperi i
l-am folosit n timpul testelor pentru a comunica cu robotul. Dup
montarea senzorilor de culoare, i-am gsit nc o utilitate: la
nceputul rundei, robotul trebuie s nvee nuanele de rou i albastru
de pe ptratele mesei. Aceasta presupune deplasri manuale pe
diferite zone ale mesei. Pentru a simplifica aceast operaie, am
programat robotul s atepte apsarea butonului pentru a ncepe
citirile. Celelalte 7 butoane sunt montate pe ghear ca o surs
suplimentar de date pentru capetele de curs. Acestea se apas n
contact cu piesa sau carcasa, anunnd robotul c trebuie s opreasc
micarea.
Fig. 38. Poziiile butoanelor pentru micarea orizontal 32
Fig. 39. Poziiile butoanelor pentru micarea vertical
Robot autonom pentru competiia Eurobot 2011
Rolurile i poziiile butoanelor sunt dup cum urmeaz: Pentru
detectarea prezenei piesei, 2 butoane sunt montate n apropierea
articulaiei ghearei, cte unul pe fiecare bra (fig. 38.1). Gheara se
va nchide dac oricare dintre acestea se apas Gheara s-a strns
complet cnd ambele butoane din vrfurile braelor sunt apsate pe pies
(fig 38.2) Gheara s-a extins complet cnd butonul de pe lateralul ei
face contact cu opritorul de plastic montat pe carcas (fig. 38.3)
La coborrearea complet a ghearei, butonul montat pe caseta sa va
face contact cu latura de jos a carcasei (fig 39.5) Pentru
ridicare, am montat un buton pe suportul de sus al urubului
vertical. Acesta va fi apsat de piuli sau de piesa n form de jug
(fig. 39.6).
c) 1 senzor de prezen cu infraroii Cnd gheara este ridicat
pentru construcie, este nevoie de un senzor care s detecteze
ptrunderea pionului sub turn. Aceast sarcin revine senzorului de
distan SHARP, montat pe peretele lateral dreapta al carcasei. n mod
normal, acesta va simi peretele opus, ns la ptrunderea pionului,
valoarea sa se va schimba brusc. d) 8 senzori de culoare Dintre
acetia, 7 sunt montai pe fundul robotului pentru a oferi informaii
despre culoarea zonei de pe mas pe care se afl robotul, iar unul
este montat pe ghear i difereniaz ntre pioni i piesele importante
(regi/regine). Datorit bugetului restrns i a numrului mare de
senzori necesari, am fost nevoit s-i construiesc singur. Un senzor
este format dintr-un led RGB i o fotorezisten (fig. 40). Led-ul
RGB, conine, de fapt, 3 surse de lumin, pentru fiecare din cele 3
culori primare (rou, verde, albastru). Astfel, prin aprinderea lor
la diferite intensiti se poate obine orice nuan. Fotorezistena
este, un rezistor care-i modific valoarea n funcie de intensitatea
luminii care cade asupra sa.
Fig. 40. Componentele senzorului de culoare 33
Fig. 41.Montajul senzorului de culoare
MATEI ENE
Funcionarea senzorului se bazeaz pe faptul c obiectele pe care
le percepem ca avnd o anumit culoare reflect predominant acea
component a spectrului. Aadar, pentru a distinge ntre o suprafa
roie i una albastr, vom aprinde led-ul, pe rnd cu ambele nuane pe
ambele suprafee i vom msura intensitatea reflexiei prin valoarea
fotorezistenei. Suprafaa albastr va absorbi lumina roie, dnd o
valoare mare rezistenei, i va reflecta lumina albastr, rezultnd
ntr-o valoare mic pe rezisten. Pentru suprafaa roie, comportamentul
este inversat. Orientarea led-ului i distana dintre el i
fotorezisten sunt parametri importani. De aceea, am prins cele dou
componente ntr-un suport de plastic. Led-ul este orientat la 45 fa
de vertical i distanat de fotorezisten la 6 mm (v. fig. 42). Pentru
a evita ca razele s ajung direct de la led pe ea, fotorezistena
este montat pe faa suportului, n timp ce led-ul este ngropat n
plastic.
Fig. 42. Poziia componentelor senzorului
Pentru msurarea fotorezistenei, am format un divizor rezistiv cu
un rezistor de valoare cunoscut (2,2 K), i am msurat tensiunea de
la mijloc printr-o intrare analogic a microcontrollerului Atmega16.
Senzorul de pe ghear face diferena ntre pioni i celelalte piese
stabilind dac culoarea suprafeei laterale este galben sau nu (regii
i reginele au cod de bare). e) 1 jumper pentru pornire Acesta nu
este un senzor propriu-zis, ci este folosit pentru pornirea
robotului la startul rundei de concurs. Jumper-ul este legat cu o
sfoar i montat iniial pe 2 pini de pe acoperiul robotului. La
pornirea programului, robotul ateapt eliberarea contactului, prin
tragerea sforii.
34
Robot autonom pentru competiia Eurobot 2011
3.2.5. Placa de conectare a senzorilorUn numr mare de senzori
implic un numr mare de fire de legtur, de aceea a fost nevoie de o
plac intermediar, unde se conecteaz toate acestea, mpreun cu
celelalte componente necesare. Circuitul este realizat pe plac de
test (fig. 43). Alimentarea se face de la baterie prin intermediul
un stabilizator de 5V (circuit integrat 7805 [27]). Fiecare canal
al led-urilor RGB [28] are nevoie de rezisten n serie, pentru
limitarea curentului. Canalul rou are tensiunea proprie mai mic
dect a celor albastru i verde, de aceea a necesitat o rezisten cu
valoare dubl (150 fa de 75 ). Aprinderea tuturor led-urilor trebuie
s se ntmple simultan, de aceea canalele de aceeai culoare ale
tuturor led-urilor sunt legate printr-un tranzistor NPN la mas
(2N2222 [30]). Tranzistorii au n baz cte o rezisten de 10 K i sunt
legai la cte un pin microcontroller-ului (deci n total 3 pini de
control al ledurilor, cte unul pentru fiecare canal de culoare).
Fotorezistenele [29] sunt legate n divizori cu rezistori de 2,2 K.
Microcontroller-ul msoar tensiunea dintre cele dou rezistene prin
pinii ADC. Senzorul SHARP este, deasemenea, citit prin ADC, ns cele
8 intrri analogice ale Atmega sunt deja ocupate de fotorezistene.
Acesta partajeaz primul pin ADC cu una dintre fotorezistene, prin
intermediul unui multiplexor (74HC4051 [31]). Astfel am adugat nc 7
posibile intrri analogice celor 8 native. Firele senzorilor se
conecteaz pe plac prin headere de pini, pentru a fi demontate uor,
dac este cazul.
Fig. 43. Placa de conectare a senzorilor: vedere de sus (stnga)
i de jos (dreapta)
35
MATEI ENE
3.2.6. Placa de achiziie de dateCitirea senzorilor i raportarea
rezultatelor se face printr-o placa cu microcontroller Atmega16
[33] realizat la laboratorul cursului de Proiectarea cu
Microprocesoare. Microcontroller-ul funcioneaz cu un cristal extern
de 16 MHz i este alimentat de la baterie printr-un stabilizator de
5V (7805). Interfaa RS232 are nivelele de tensiune ajustate la
intervalul 0-5V de ctre un circuit MAX232 [33]. Pe lng componentele
necesare funcionrii, placa mai are 2 led-uri (unul legat la
alimentare i cellalt programabil) i un buton (care este dublat de
butonul de pe acoperiul robotului, pentru a-l face mai accesibil).
Pinii utilizai sunt urmtorii: Cei 8 pini de ADC citesc
fotorezistenele senzorilor de culoare. Primul pin este partajat de
2 senzori (o fotorezisten i senzorul SHARP), deci citirea trebuie
precedat de alegerea canalului corespunztor al multiplexorului
extern. 8 pini cu rezistenele de pull-up activate pentru cele 8
butoane nc un pin cu rezisten de pull-up pentru jumper-ul de start
3 pini de aprindere a celor 3 canale de culoare ale led-urilor RGB
1 pin de selecie pentru multiplexorul de pe ADC 2 pini pentru
comunicaia pe serial cu netbook-ul (9600 baud, 8N1, fr flow
control). n fig. 44 este ilustrat PCB-ul plci, iar n Anexe se gsete
schematic-ul. Aceastea au fost realizate n Eagle de membrii echipei
laboratorului de Proiectarea cu Microprocesoare. Le-am inclus
pentru referin, cu acordul lor.
Fig. 44. Placa de achiziie de date cu Atmega16 36
Robot autonom pentru competiia Eurobot 2011
3.2.7. Placa de adaptare USB RS232Laptop-ul nu are interfa
serial, de aceea a fost nevoie de o plac de adaptare, care s-i
permit s comunice cu componentele (driver-ul Sabertooth 2x5 i placa
de achiziie) prin USB. Am folosit varianta FT2232D a chip-ului FTDI
[34]. Aceasta ofer suport pentru dou interfee seriale prin aceeai
conexiune USB; un lucru util avnd n vedere c 2 din cele 3 mufe ale
laptop-ului nu sunt accesibile din cauza carcasei. Cele 2 interfee
seriale au ieiri prin headere de pini, pentru a permite conectarea
oricrui dispozitiv. Intrarea este o muf USB de tip A, aceasta fiind
mai uor de lipit dect varianta B (pinii sunt mai distanai).
Deasemenea, lipirea chip-ului FTDI a ridicat cteva probleme datorit
picioruelor foarte apropiate (a fost nevoie de mai multe ncercri,
crora le-a czut victim unul din cele 2 chip-uri cumprate). Placa
are 4 led-uri: cte 2 pentru fiecare interfa serial. Acestea sunt
conectate la pinii de recepie i transmisie, feedback-ul vizual
generat de fluxul de date fiind util n depanare. PCB-ul plcii este
redat n fig. 45, iar schematic-ul n Anexe. Aceasta poate fi folosit
i la roboii din anii urmtori, sau la alte aplicaii care necesit
interfaarea cu laptop-ul.
Fig. 45. Placa de conversie USB RS232 cu chip-ul FT2232D
37
MATEI ENE
Capitolul 4
SoftwareFolosirea netbook-ului cu Linux ca unitate de comand a
dat o mare flexibilitate n alegerea modalitilor de programare. Am
optat pentru o structur orientat pe obiect, pentru a putea refolosi
codul i n anii urmtori sau la alte proiecte nrudite. Codul este
scris n C++, fiindc, dup prerea mea limbajul este de nivel destul
de jos pentru a fi aproape de sistemul de operare, de interfeele de
comunicaie i de driver-ele dispozitivelor. n aceali timp este de
nivel destul de nalt pentru a produce obiecte i metode uor de neles
pentru cei care nu sunt familiarizai cu subiectul. Chiar dac unele
teste le-am fcut n Java sau Python, n final totul a fost migrat la
C++ pentru un control mai bun al resurselor partajate i pentru
evitarea folosirii mecanismelor de comunicare inter-proces.
Regulile proceduriii de compilare se gestioneaz printr-un Makefile
centralizat, care se afl n rdcina proiectului. Rezultatul acestei
operaii este o bibliotec de tip shared object, numit librobot.so.
Orice program compilat mpreun cu aceasta va avea acces la funciile
de control ale robotului. Dezvoltarea software-ului s-a ntmplat n
tandem cu dezvoltarea hardware-ului fiindc fiecare component a
necesitat teste. Perifericele refolosite de la robotul de anul
trecut aveau interfeele scrise n C i am profitat de ocazie pentru a
le face orientate pe obiect. Codul surs i toate celelalte resurse
digitale pe care le-am creat n timpul dezvoltrii proiectului de
diplom se gsesc pe CD-ul ataat lucrrii. Acestea au fost publicate,
pentru referin, i pe server-ul de version control (n prezent Trac +
Mercurial) al echipei de roboi din laboratorul ED304
(http://www.ed304.cs.pub.ro/trac), ns, din pcate, accesul la acesta
nu este fcut public. n subcapitolele urmtoare voi detalia structura
software-ului, pornind de jos (clasele pentru operaii de I/O i de
interfaare a componentelor) n sus (procesare video, soft de control
i strategie).
4.1.
Sistemul de I/O
Un lucru plcut n utilizarea sistemelor de operare Linux este
faptul c totul este un fiier. Aceast uniformitate mi-a fost de mare
ajutor n scrierea claselor care se ocup de comunicaie, fiindc toate
operaiile se reduc la primitivele open, close, read i write. Clasa
IO_Connection implementeaz operaiile de baz, de deschidere de fiier
(cu flag-urile specificate prin parametru), citire i scriere.
Acestea se execut asupra unicului cmp al clasei: filedescriptorul
ctre fiierul de interes. IO_Connection are urmtorii fii:
Serial_Connection, care implementeaz o conexiune serial. Singura
diferen fa de IO_Connection sunt este flag-ul specific O_NOCTTY.
Pentru a pstra simplitatea, clasa nu seteaz parametrii conexiunii,
acetia putnd fi configurai din linie de comand (folosind stty),
nainte de rularea programului. Un exemplu de instruciune stty des
utilizat este: stty F /dev/ttyUSB0 9600 raw unde /dev/tty* este
fiierul device int, 9600 este baud-ul, iar raw precizez c nu se
folosete flow control (modul 8N1 este cel implicit, deci nu este
nevoie s fie configurat).38
Robot autonom pentru competiia Eurobot 2011
I2C_Connection, care reprezint o conexiune pe magistrala I2C. Aa
cum am precizat i mai devreme, netbook-ul nu are o interfa I2C
nativ, ns aceasta se poate obine prin pinii DDC ai plcii video.
Pentru a avea acces la aceast interfa este necesar instalarea
pachetului i2c-tools [35], care conine modului de kernel i2c-dev.
La ncrcare, acesta creeaz cte un fiier cu numele de forma
/dev/i2c-* (numere de ordine ncepnd cu 0) pentru fiecare magistral
I2C prezent n sistem. Numrul magistralei DDC poate varia de la o
versiune a pachetului la alta, de exemplu anul trecut aceasta era
/dev/i2c-0, dar ncepnd cu Ubuntu 11.04, aceasta a devenit
/dev/i2c-3. Pe lng desciderea fiierului, iniializarea conexiunii
mai necesit i un apel ioctl I2C_SLAVE pentru precizarea adresei
device-ului cu care se dorete comunicarea (pe magistral poate
exista un singur master dar mai muli slaves, difereniai prin
adres). Comunicaia pe I2C se bazeaz pe citiri i scrieri de regitri.
Astfel, pentru citire, se trimite un octet care reprezint adresa
registrului dorit i se ateapt rspunsul (un alt octet care reprezint
valoarea). Pentru scrierea unui registru, se trimit 2 octei: adresa
registrului i valoarea. Network_Connection, care realizeaz
transmisia de mesaje pe reea, indiferent dac este vorba de
Ethernet, Wireless sau loopback. Secretul st n faptul c i sockeii
inet sunt, de fapt, file descriptori. Singura diferen fa de
IO_Connection este iniializarea, cnd trebuie s se stabileasc o
conexiune (TCP n aceast implementare). Fiierele surs se gsesc n
directorul io/, relativ la rdcina proiectului.
4.2.
Interfaa sistemului de deplasare
Driver-ul Sabertooth 2x5, folosit pentru comanda motoarelor de
deplasare, are 4 moduri de operare: 2 n care primesc semnale
analogice i 2 n care comunicaia are loc pe interfaa serial. Pentru
aplicaia mea sunt utile doar ultimele dou, pe care le voi prezenta
n continuare (informaiile despre celelalte se gsesc n manual [25]).
n modul Simplified Serial comanda are lungimea unui octet (0-255).
Primul bit specific motorul, iar ceilali 7 dau puterea i sensul de
rotaie. Cu alte cuvinte, valorile de la 1 (full reverse) la 127
(full forward), controleaz motorul 1 (64 pentru stop), iar cele de
la 192 (full reverse) la 255 (full forward) controleaz motorul 2
(128 pentru stop). Modul Packetized Serial ofer mai multe
funcionaliti, dar necesit mai mult efort de programare. O prim
diferen fa de modul precedent este c baudrate-ul la care se
desfoara comunicaia nu se mai configureaz din comutatoarele DIP de
pe plac, ci se determin dinamic, prin trimiterea octetului de start
(170 n baza 10, 0xAA n hexa sau 10101010 n binar). Pachetele sunt
formate din 4 octei: (fig. 46)
Fig. 46. Structura pachetelor n modul Packetized Serial al
driver-ului Sabertooth 2x5
39
MATEI ENE
Octetul de adres se folosete pentru a diferenia ntre drivere, n
cazul n care se conecteaz mai multe pe aceeai interfa serial
Checksum-ul se calculeaz prin suma fr semn a primilor 3 octei urmat
de operaia AND pe bii cu masca 0111111 (n binar). Comanda i octetul
de date au, mpreun, urmtoarele semnificaii Comand 0 1 2 3 4 5 6 7 8
9 10 11 12 13 Data 0 127: 0 stop, 127 putere maxim 0 127: 0 stop,
127 putere maxim 0 120: o unitate nseamn 0,2 V 0 120: o unitate
nseamn 0,2 V 0 127: 0 stop, 127 putere maxim 0 127: 0 stop, 127
putere maxim 0 127: 0 full reverse, 64 stop, 127 full forward 0
127: 0 full reverse, 64 stop, 127 full forward 0 127: 0 stop, 127
putere maxim 0 127: 0 stop, 127 putere maxim 0 127: 0 dezactivat,
127 ntoarcere pe loc 0 127: 0 dezactivat, 127 ntoarcere pe loc 0
127: 0 full reverse, 64 stop, 127 full forward 0 127: 0 max left,
64 dezactivat, 127 max right Semnficaie Motor 1 forward Motor 1
backward Min battery voltage Max battery voltage Motor 2 forward
Motor 2 backward Motor 1 drive Motor 2 drive Forward Backward Turn
right Turn left Drive straight Turn
Tabel 3. Descrierea comenzilor driver-ului Sabertooth 2x5 n
modul Packetized Serial
Pragurile de tensiune definesc limitele normale de alimentare. O
valoare sub sau peste acest interval va duce la nchiderea automat a
driver-ului. Linia ngroat din tabelul 3 delimiteaz comenzile de
control individual de cele de control sincron (mixed) al
motoarelor. Comenzile de tip mixed au dou componente care definesc
micarea rezultat: drive i turn. Drive specific puterea de referin,
iar turn diferena dorit ntre vitezele lor. Aadar, iniial trebuie
specificate ambele componente pentru ca micarea s aib loc. Testele
au artat c pentru turn minim, motoarele se vor nvrti cu aceeai
vitez, direct proporional cu drive, i robotul va merge drept, n
timp ce pentru turn maxim, acestea vor executa o ntoarcere pe loc,
rotindu-se tot cu o vitez direct proporional cu drive. Clasa
Saberooth_Driver se ocup de detaliile comunicaiei cu driver-ul, n
timp ce Sabertooth_Motors conine metode pentru micrile uzuale
(control individual al motoarelor, mers drept, rotaii pe loc sau cu
un anumit coeficient). Fiierele surs se gsesc n directorul
components/sabertooth/, relativ la rdcina proiectului.
4.3.
Interfaa mecanismului de manipulare a pieselor
Interfaa driver-ului MD23 [26], folosit pentru controlul
motoarelor dispozitivului cu ghear, este compus din 2 clase. Ca i n
cazul motoarelor de deplasare, clasa MD23_Driver se ocup de40
Robot autonom pentru competiia Eurobot 2011
aspectele specifice comunicaiei cu placa, n timp ce MD23_Motors
reprezint o abstractizare, oferind metode pentru micrile uzuale.
Driver-ul pune la dispoziie urmtorii regitri: Adres 0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15 16 Descriere Viteza motor 1 Viteza motor
2/Viteza rotaie Encoder 1A Encoder 1B Encoder 1C Encoder 1D Encoder
2A Encoder 2B Encoder 2C Encoder 2D Nivel baterie Curent motor 1
Curent motor 2 Versiune Rat de accelerare Mod ComandTabel 4.
Descrierea regitrilor driver-ului MD23
Acces R/W R/W R R R R R R R R R R R R R/W R/W R/W
Sunt definite 4 moduri de operare: primele dou sunt pentru
controlul individual al motoarelor, iar celelalte pentru micri
sinconizate. Modurile din aceeai categorie difer doar prin faptul c
accept valori cu sau fr semn pentru vitezele motoarelor (0 255 sau
-127 +127). Rata de acceleraie este un coeficient care afecteaz
modul de tranziie dintre 2 viteze. Valorile encoderelor se obin
prin alipirea valorilor din cei 4 regitri corespunztori. Comenzile
posibile au urmtoarele semnificaii: Comand 32 48 49 50 51 160 170
165 Aciune Resetare encodere la 0 Dezactiveaz/activeaz algoritmul
de meninere a vitezei motoarelor Dezactiveaz/activeaz
comportamentul de oprire dup 2 secunde de inactivitate Secvena de
octei necesar n procesul de schmbare a adresei I2C
Tabel 5. Descrierea operaiilor suportate de driver-ului MD23
41
MATEI ENE
Chiar dac unele dintre ele n-au fost folosite pn acum toate
aceste funcii au fost implementate n clasa MD23_Driver n sperana c
vor fi utile pe viitor. Fiierele se gsesc n directorul
components/md23/, relativ la rdcina proiectului.
4.4.
Sistemul de achiziie de date
Microcontroller-ul Atmega16 de pe placa de achiziie de date este
programat n C, utiliznd biblioteca de funcii specifice din pachetul
avr-libc. Compilatorul folosit este avr-gcc, programul final fiind
transferat n memoria flash a Atmega cu avrdude prin intermediul
programatorului AVR ISP mkII. Procesul descris mai sus este
gestionat cu ajutorul unui Makefile. Acesta are reguli definite,
att pentru compilare (make build, care este i regula implicit), ct
i pentru transfer (make flash, pentru care sunt necesare
priviliegii de root). La punerea sub tensiune, microcontroller-ul
intr n secvena de iniializare, la finalul creia se aprind toate
led-urile RGB pe culoarea alb. n acest moment se ateapt nceperea
procedurii de nvare pentru senzorii de culoare, care presupune: a)
Poziionarea robotului complet pe un ptrat rou, plasarea unui pion
lipit de senzorul de pe ghear i apsarea butonului b) Robotul va
comuta led-urile pe culoarea rou i le va menine aa o perioad. n
acest timp se iau 2000 de citiri de pe fotorezistene i se reine
media aritmetic n vectorul de valori de referin (cte o intrare
pentru fiecare senzor n parte). c) Se execut paii a i b pentru
culoarea albastru. n acest moment nvarea s-a ncheiat, iar robotul
va comuta led-urile conform secvenei: rou off albastru off. Fiecare
pas dureaz 40 ms, timp n care valoarea pe fotorezisten se
stabilizeaz i poate fi citit. Se observ c nu se repet secvena de
nvare i pentru culoarea verde. Aceasta nu prezint interes, fiind
asimilat, mpreun cu negrul, categoriei ce nu este rou sau albastru.
Dup ncheierea acestei etape, placa va satisface 3 tipuri de cereri
pe serial: 1. La primirea caracterului r, va trimite valorile de
referin nvate, cte 3 pe o linie, separate de spaii (R G B pentru
fiecare senzor, ns valoarea pentru verde va fi 0 peste tot). Aceast
comand este folosit pentru depanare. 2. La primirea caracterului s,
va trimite valorile tuturor senzorilor ntr-un pachet de 5 octei:
Primii 3 codific senzorii de culoare. Pentru senzorul cu numrul i,
culoarea se compune lund bitul i din fiecare din cei 3 octei,
primul fiind pentru R, al doilea pentru G i al treilea pentru B.
Deci 111 va fi alb, 110 galben, 100 rou, etc. Senzorul 0 este cel
de pe ghear i va avea valorile