Tema de anul ăsta pentru Eurobot, concursul de robotică autonomă la care participăm de câțiva ani, se numește „Chess’up”, și în esență spune că ai o tablă de șah și robotul care are mai multe piese la sfârșitul timpului de 90 de secunde pe culoarea lui câștigă. Am mai scris aici de regulile Eurobot, pentru cei interesați puteți găsi mai multe detalii la oameni pe site.
Una din ideile pe care le încercăm anul ăsta este determinarea obiectelor de pe masa de concurs cu ajutorul a 3 camere video (avem la dispoziție trei locuri pentru a plasa balize, la o anumită înălțime, pe marginea mesei). Ideea o avem din octombrie, dar zilele astea am reușit să fac ceva progrese.
N-am mai scris, nici de la Rapperswil nici după. Nu a mai fost timp, dar nici putere. Pentru cei care nu au urmărit blogul echipei, după ce am montat-o pe petronela și am luat cina, am început niște teste, care la 5AM s-au terminat dezastruos cu distrugerea uneia dintre plăcile de control.
La „consiliul de urgență” de dimineață am reușit să facem un ugly (and I mean ugly) hack și să facem câteva lucruri să funcționeze. Am reușit să ne omologăm și am jucat trei ture de calificare și ne-am clasat pe penultimul loc. Un rezultat dezamăgitor, dar având în vedere circumstanțele, nici nu cred că se putea face mai mult.
Înafara problemelor noastre legate de Petronela, organizarea a fost, ca de obicei, foarte OK. Cazare la sala de sport, abonament gratuit pentru participanții Eurobot la transportul în comun în zona interesantă, mâncare ok (chiar și un BBQ într-una din seri), reducere la un mega party studențesc :P
Nu mai știu exact pe zile cum s-au întâmplat lucrurile, dar înafară de aspecte competiționale:
ne-a prins ploaia pe podul de peste Zurichsee
ne-am plimbat pe la castelul din Rapperswil și am văzut și căprioarele ălora de acolo
am găsit un Ferrari și un hangar de Porche-uri
am mers la un festival studențesc la care am avut reducere la jumate :)
am dormit peste tot pe unde am stat jos (pe scări, pe scaune, pe mese, …)
am văzut elefanți și girafe și canguri la Kinderzoo
Sâmbătă seara și duminică seara am ieșit cu băieții la o plimbare (peste lac, în celălalt canton) și la o bere prin oraș (mulțumim Upsiders și Fratelli pentru bere :P).
Adi a pus o selecție de poze aici. Eu n-am mega poze :)
Nu știu dacă mai trebuie să spun ce este Eurobot, cei mai mulți dintre voi care mă cunoașteți ați auzit povestea: e 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 (aka nu sunt telecomandați). Detalii aici.
Tema de anul ăsta 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 porbum (cilindri albi și negri – cei negri sunt stricați și nu pot fi culeși).
Am început lucrul pentru robot din timp anul ăsta, dar după primele întâlniri a devenit clar că aveam probleme. Micvs încărcat de ore, Dan, plecat în Germania să îi facă pe ăia mai deștepți, eu, printre altele, cu probleme cu banii … Acum câteva săptămâni am reluat treaba. Împreună cu Dan, Micvs, Adi, Matei, Mircea și Sergiu, am făcut de toate, mecanică, electronică, programare, grafică, măturat pe jos :). În ultimele săptămâni am pus toți osul la robotul pentru anul ăsta. Am avut tot felul de probleme, și în ultima săptămână aproape că nu am dormit deloc. Ca de obicei, în ultima seara înainte de concurs, toată lumea era în laborator.
Petronela, robotul nostru, era gândit să facă lucruri mărețe și precise. Pe măsură ce ultimele ore și minute până la concurs treceau, am renunțat pe rând la mai multe subsisteme (adica în termeni plastici i-am făcut o lobotomie :D). La ora 9:15 eram prezenți la concurs.
La etapa națională care a fost vineri, 14 mai, în corpul AN, au venit cam 10 echipe, din care 6 de la Sibiu, noi din UPB împreună cu colegii de la RobotiqueFF de la Fils, niște baieți e la Iași și o echipă de la Oradea.
Omologările (pentru că roboții trebuie să demonstreze că corespund regulilor înainte să intre în concurs) s-au terminat la ora 14, noi am fost a 4-a echipă omologată din cele 5 care au rămas în total. Chiar înainte de omologarea oficială am dat de câteva probleme destul de serioase (one of them caused by me :|), totuși, le-am depășit.
Au urmat apoi meciurile, fiecare cu fiecare, deci 4 meciuri. În primul nu am reușit să marcăm, dar am plecat din zona de start, deci am luat 50 de puncte. În al doilea am reușit și am marcat două bile roșii, și am câștigat meciul, deci am strâns ceva puncte. Echipele de la Sibiu erau foarte bine pregătite, și ne depășeau lejer. Al treilea meci l-am ratat cu totul, ne-am blocat într-o margine. A fost un moment destul de trist și ne cam pierdusem speranța, dar, în al patrulea meci, Petronela a fost în formă și s-a dat cumva peste cap și a împins două bile și un porumb alb în zona de marcare, ceea ce ne-a clasat direct minim pe locul III, la o distanță (infimă dar existentă) de celălalte două echipe mai „mici”. Apoi, una din echipele de la Sibiu nu a reușit să marcheze „cu poarta goală” și ne-am dus direct pe II. Iuhuuu :)
O să încerc să povestesc despre robot altă dată, ce are prin el și de ce e deștept. Ce e important acum este că Petronela și echipa OVP participă la finalele Eurobot 2010, care vor avea loc la 30 de km de Zurich, în Elveția, peste două săptămâni! :D
Sper să revin cu filmulețe de la meciuri, și cu poze de la Ioana, care a fost și ea în vizită.
Semetrul ăsta, înafară de documentarea și punerea în temă pentru doctorat, am dat o mână de ajutor la o materie numită Rețele Industriale Eterogene și Tolerante la Defecte. Am pus acum ceva vreme niște prezentări aici pe blog, care au fost prezentări pe care le-am făcut la cursurile de RIETD cand au venit mai mulți studenți decât profesori (s-a întâmplat de vreo trei ori).
Înafară de cursuri, a fost o serie de teme de laborator, în care s-au implicat 8 studenți din cei aproximativ 20 de la modulul lor de master, și 6 au predat temele la sfârșitul semestrului. Când le-am propus, lui Alex și mie ni s-au părut temele mișto, dar se pare că lor nu :). Temele se ocupau cu roboței Mindstorms NXT, cu comunicație Bluetooth, cu comunicație ZigBee și cu alte trăznăi în aceeași gamă (lista completă cu temele și cu descrierea lor este aici).
Până la urmă, am avut niște rezultate interesante, spre exemplu toate cele 3 echipe au implementat comunicația Bluetooth între doi roboți, într-o formă sau alta. Una din echipe s-a evidențiat în mod deosebit, prin implementarea unui task condus prin Bluetooth între mai mulți roboți, dar și un sistem de pasare a mesajelor printr-un nod central și o interfața de conducere a robotului prin intermediul unui GUI cu un volan, de pe PC.
Băieților din echipa asta din urmă le-am propus să își mai rafineze proiectul și să încerce să scrie un articol pentru conferința Eurobot.
Înafară de studenții de mai sus, au mai fost trei studenți la doctorat care au ales materia asta ca una din cele 4 materii care trebuie făcute în pregătirea doctorală, care în principiu toți trei s-au ocupat de ZigBee.
Cu acordul lor, voi pune codul în SVN-ul de la robot, așa că dacă sunt pasionați Mindstorms NXT out there, să poată să refolosească ce au făcut ei :)
Testul final pentru materie a fost grilă și l-am pregătit eu. Am încercat să pun întrebări de bun simț, cu răspunsuri nu neapărat evidente dar deductibile și ușor de identificat chiar dacă dădeai numai un ochi pe prezentări, nu și pe documentația relativ serioasă pe care am pus-o pe site. Totuși, din 19 întrebări, doar 2 din cei 8 studenți a făcut mai mult de jumătate, ceea ce m-a cam întristat. Adică măcar pe prezentările care erau pe site puteau să dea un ochi…
Luni a fost preselecția pentru faza pe facultate a Freescale Race Challenge 2010, despre care am mai scris mai demult. Foarte pe scurt, echipele de pe la noi din departament s-au calificat și au trecut mai departe, toate mai puțin a mea :). Ce m-a lovit cel mai tare nu a fost că nu ne-am calificat, ci că nici nu am apucat să arătăm ce știm. Cu programul nostru mașinuța a „murit” în tura de învățare, înainte să facă orice deștept, la o viteză cu care alte echipe au mers destul de bine. Nu știu, cauciucurile, uzura mecanică a motorului, nu știu ce s-a întâmplat. Cert este că nici nu am apucat să concurăm.
Aaaaaanyway :) Am lucrat cu Adi un weekend încheiat la program (30 și ceva de ore cu pauză de budă și de ciorbă de burtă), și alte câteva ore împrăștiate prin decembrie. Am dezvoltat un algoritm destul de deștept de învățare, care parcurgea traseul, îl reducea la un set de curbe, și apoi îl scria pe card într-o formă redus (fișierele de învățare aveau până într-o sută de bytes).
După aia aveam un algoritm de rulare care prima data citea într-un array curbele astea, și verifica daca nu cumva s-a trecut la urmatoarea curbă în funcție de ce facea accelerometrul ala care masura accelerația laterală. Am mai făcut noi un fel de filtru acolo, să se sincronizeze bine pe circuit, și i-am mai zis să accelereze pe o bucată (gen 40 – 50%) din liniile drepte. Am încercat să mai implementăm și o accelerare pe ieșirile din curbă în cazul în care după curbă urma linie dreaptă, dar am renunțat la asta, pentru că era prea târziu.
Duminică după masa devenise aproape imposibil să putem testa extensiv algoritmul, l-am testat cât o fost, și i-am dat send. Ghinion cu tura de învățare.
În cazul în care v-ați întrebat vreodată cum merg mașinuțele astea, uite, o tură de test a lui Matei: