Hatodik Magyar Alkalmazott Mérnöki Tudományok Versenye

Magyarok a Marson 2011

A Magyarok a Marson egy olyan esemény, ami a robotika szerelmeseinek ad teret kreálmányuk tudásának megmérettetésére. A versenyen a csapatoknak évről-évre más, előre specifikált feladatokat kell teljesíteniük saját építésésű robotjaikkal. Mint a neve is mutatja, általában űrkutató jellegű feladatokat kell teljesíteni a Marson, zord körülmények között. A marsi körülmények hitelességéhez hozzájárul, hogy a szabályzat szerint manuális módon csak
15 másodperc késleltetéssel lehet kiadni parancsokat, tehát ajánlott minél inkább autonóm
megoldásokat készíteni. Nagy segítséget nyújt még egy, a Mars körül keringő műhold, melynek
adását igénybe vehetik a csapatok, és a virtuális Marsbázis, ahol a nagyobb számításigényű, de automata vezérlők futhatnak, amennyiben ez a robot hardverén nem megoldható. Az eddigi
kihívások közül egy pár: szigeten rekedt űrhajó törötteket megmentése vizes pályán, mintavétel egy marsi virág DNS-éből, adott volt egy LCD kijelző amiről képfeldolgozással kellett megállapítani, hogy az milyen kódsorozatot tartalmaz, vízminta vételezése, lecsatolható űrlift készítése 3 méteres táv megmászásához.

Az idei versenyen 35 csapat vett részt több mint 100 fővel, melyen sok újdonsággal
találkozhattak az előző évekhez képest. Eddig a pályán csak egy csapat lehetett jelen, most
egyszerre négyen versengtek a győzelemért. A többi csapathoz képest nemcsak jobbnak kellett
lenni, hanem lehetőség volt szabályos hátráltatásra is. Erre egy helyszínen kapott eszköz, az
infraágyú adott lehetőséget, mely sikeres találat esetén 1 percre blokkolta a másik csapat robotját. A méretekre is voltak korlátok a pálya kapui alatt való áthaladás miatt. Határozott kérés volt a szervezőktől a Lego NXT, illetve más előre gyártott robotoktól való tartózkodás.
A pálya mérete 8x8 méter volt, ami 5 részre lett bontva.
Minden részben (más néven világban) két-két piramis és egy csapat kezdőpontja helyezkedett el. A középső világban csak egy piramis volt, méghozzá a „Főgonoszé”. A világokat palánkok választották el, melyeken “csillagkapuk” segítségével történhetett az átjárás.
A pontszerzésnek három lehetséges módja volt. Minden piramison az egyszeri áthaladásért pont járt. Egy piramison való átkelés akkor volt érvényes, ha különböző ponton lépet be és ki. A kezdőhelytől különböző világban lévő piramisért több pontot lehetett kapni. Az egyes piramisokért az azokon utoljára áthaladó csapat plusz pontot kapott. Pontot ért még más robot sikeres eltalálása is az infraágyúval. Összességében a feladat egy bázisfoglaló játékhoz hasonlított.

A versenyen a Buggers csapat színeiben szerepelt Pálóczi Árpád, és Magyar Bence az
NJSZT Robotika Szakosztály színeiben. 

Buggers
A BUGGERS csapat a 2010-ben rendezett 5. Magyar Alkalmazott Mérnöki Tudományok Versenye - azaz Magyarok a Marson 2010 - alkalmából alapult. Az alapító tagok: Csibrák Tamás, Lepárt Levente, Magyar Bence, Pálóczi Árpád. Az idén csatlakozott hozzánk Bauer Márk. A csapattagjai vegyesen az ELTE Informatika Karról, a DE Informatika Karról, valamint a BME Gépészmérnöki Karról jöttek.
Az alábbi ábra szemlélteti az architektúrát:

A PC-s vezérlőprogram

Fő funkciói:

  • Hálózati kapcsolatok kezelése a roboton lévő router felé
  • Manuális vezérlőfelület
  • A műholdkép folyamatos frissítése hálózaton keresztül
  • A frissítés mellett a kép átesik egy úgynevezett visszatorzításon is, amivel a pálya fölötti kamera halszemobjektíve által okozott torzítás semlegesíthető.
  • Manuális útvonaltervezés műholdkép alapján. Felület, amelyen kattintással lehet manuálisan elhelyezni "checkpoint"-okat, amiket a robotnak érintenie kell. Ezek a pontok áthelyezhetőek, és különböző típusokkal is rendelkeznek.
  • Az útvonalterv elküldése a robotnak manuálisan vagy automatikusan bizonyos időközönként
  • Automatikus robotpozíció frissítés műholdkép alapján. A robot automatikus felismeréséhez általános módszert alkalmazunk, így a megoldás hordozhatóbb és hibatűrő is lesz. A képfeldolgozáshoz az OpenCV könyvtárat használjuk, ebből is a mintaillesztés, "region of interest", illetve egyedi megoldásokat a keresés hibatűrésének biztosításához.
  • Automatikus útvonalterv módosítás a robotpozíció alapján (elért, törölhető checkpoint)
  • Automatikus robotpozíció frissítés a roboton a műholdkép alapján
  • Debug felület. Felhasználja a routerre megírt "felfelé szervert", illetve az Arduinon futó program visszajelzéseit.

Router, Openwrt és a C szerver
A vezetéknélküli távvezérléshez egy Linksys WRT54GL routert használtunk. Ezekre az
eszközökre egy kis barkácsolás segítségével könnyen rá lehet szerelni egy soros portot. Az egyedire szabást biztosítja az OpenWRT Linux disztribúció, ami nem csak arra ad lehetőséget, hogy szabadabban konfiguráljuk a routerünket, hanem saját programokat is írhatunk az OpenWRT SDK felhasználásával. Ahhoz, hogy használni tudjuk előtte le kell cserélnünk a gyári firmwaret. Az új operációs rendszer (vagy firmware) telepítése kockázatos lehet, ugyanis ha nem megfelelő verziót használunk vagy épp áramkimaradás történik, akkor könnyen bedobozolhatjuk (boxing) routerünket, ezzel azt használhatatlanná téve. Az ilyen típusú problémákra megoldást nyújt az eszközön található JTAG port, segítségével közvetlenül újra lehet "égetni" a firmwaret. Az OpenWRT SDK ANSI C99 kódot fordít mipsel architektúrára.

Így sikeresen lekódoltunk tehát egy szerver programot a routerre, melynek az a célja, hogy a
klienstől érkező üzeneteket továbbítsa soros portján az Arduino felé. Viszonylag egyszerű program lett, de elmondható, hogy nagyon stabilra sikerült. Verseny közben mikor a router nem kapott elég áramot, fél perc alatt újra tudtuk indítani az egész vezérlőrendszert.

Fedélzeti vezérlő
A robot vezérlése nem a motorvezérlővel való közvetlen kommunikációból áll, hanem egy plusz réteg a robot saját "agya" lehetővé teszi fél, vagy teljesen autonóm viselkedések elkészítését is. Ennek a megközelítésnek a hátránya közvetlen manuális irányításkor vehető észre, mert
a komponensek közötti kommunikáció miatt megjelenhet kisebb mértékű overhead, késleltetés. Ennek a vezérlő rétegnek a megvalósítására használt eszköz: Arduino Duemilanove.

Részletek a technológiáról: http://www.arduino.cc/ .

Motorvezérlő
A roboton elhelyezkedő 4 db 40W-os motor meghajtásához készült egy motorvezérlő, mely
a hajtás mellett egy plusz mechanikus féket is irányít. A külön megvalósított motorvezérlőre azért van szükség, hogy a gyengébb képességű Arduino-nak ne kelljen enkoderekkel, illetve
motorvezérléssel foglalkoznia. A későbbi bővíthetőséget így hardver és szoftverszinten is
megkönnyítettük.

Videók tesztelés közben:
http://www.youtube.com/watch?v=HEV8G14e7b4
http://www.youtube.com/watch?v=mA-9lO4Ym18
http://www.youtube.com/watch?v=ABoNSjjv3w8
http://www.youtube.com/watch?v=WYXz07mRry4
http://www.youtube.com/watch?v=uXTsSXnLBRs

Infraradar
Az infraradar a pályán található objektumok egyedi infrajelének észlelését végzi. Egy folyamatosan forgó periszkópot alkalmazunk, hogy egy infratranzisztorra juttassunk a jeleket, ahol nagysebességű ADC (analog digital converter) dolgozza fel őket. A pályán lévő objektumok egyedi infrajelének frekvenciájának meghatározásához Fourier-transzformációt
hajtunk végre az adatokon.

Sikeres részvételért számos jutalmat kaphattak a résztvevők: pólót, szoftvereket,
mikrovezérlő szetteket, illetve pénzjutalmat.

Az győztes robot készítője: Kocsis Vitor (19 éves, BME)
A versenyt Sipos Attila és Vízi Pál Gábor szervezte, élő közvetítést a Galileo Webcast biztosított.

Szerzők: Pálóczi Árpád, Magyar Bence