A küldetés
Építeni kell egy robotot mely megfelel a következő feltételeknek:
- ■ maximális mérete 18cm x 18cm x 18cm, tömege legfeljebb 1kg
- ■ meghajtása bármennyi és bármilyen paraméterű N20 motorokkal történhet
- ■ A robot irányítása valós idejű és kizárólag a 868MHz ISM sávon keresztül történhet az alkatrész csomagban található RFM95W modulokkal.
- ■ videó kapcsolathoz a wifi sávok használhatóak (2.4 & 5.8 GHz)
- ■ a roboton egyetlen infra led lehet melynek típusa SFH4546 és az alkatrész csomag részét képezi
- ■ a robotot a pálya sarkából kell irányítani nem lehet menet közben a jobb rálátás miatt körbegyalogolni a pályát még a csapattagoknak sem.
- ■ a roboton legyen egy csatlakozási pont egy 4mm átmérőjű hurkapácika rögzítéséhez (pac-man / ghost szerep azonosításához egy kis zászló)
Itt az elején írnám le, hogy nem lehet minden kiskaput becsukni. Végtelen hosszú lenne a szabályrendszer és még akkor is maradna lyuk a falon. Leírhatnám, hogy nem lehet akadályokat telepíteni, 1000 wattos infralámpával blokkolni mindenki jeladóját, átgázolni a kapukon... Ha úgy érzitek az ötletetek kicsit is karcos írjatok egy levelet.
A feladat két részre bontható:
- ■ amikor a csapat a PAC-MAN akkor a lehető leggyorsabban átjutni a 8 kapun bezsákolva az érte járó pontokat és elkerülni a szellemeket. Az utolsó kapun átmenve a megmaradt idő pontokká konvertálódik.
- ■ amikor a csapat GHOST akkor lehetőleg elsőként elkapni a PAC-MAN robotot.
A pályán egyszerre 4 csapat versenyez. Mindenki lesz egyszer PAC-MAN és háromszor GHOST szerepben. A kapuk digitális kóddal nyithatóak. Pontot ér a kapun való első sikeres áthajtás, ha a robot teljes terjedelmével áthaladt rajta. Az elfogás fizikai érintkezéssel azaz ütközéssel történik. Ezt a pálya fölé elhelyezett kamera detektálja, ha nem lenne egyértelmű a dolog. Ilyenkor az órát leállítjuk mindenki visszamegy a kiindulási pontra kivéve azt a szellem robotot aki elkapta a PAC-MAN-t. Ha mindhárom szellem sikeres akkor a PAC-MAN csapat már csak egyedül marad a pályán.
Legyen a csapat PAC-MAN. A 300 másodperces forduló elindul, az óra visszaszámol. A fejlesztés meghozta a gyümölcsét és a kapukon úgy haladtok át mint kés a vajon. Már öt kapun átmentetek, de a "destroyer" nevű GHOST csapat elér titeket. Ebben a pillanatban leállítjuk az órát. A "pusztító" GHOST csapat megkapja a pontot és már nem vesz részt a hátralévő küzdelemben. Mindenki visszamegy a kiindulási pontra és megpróbáljátok a maradék 3 kaput aktiválni. Mivel már csak 2 GHOST van a pályán ez sikerül is és a fentmaradó 86 másodperc hozzáadódik a kapukért kapott pontokhoz.
A kapuk
Egy 4 bites vizuális kódot megjelenítő szerkezet aminek közepén egy infraszenzor található. Ide kell visszasugározni a megjelenített 3 számjegyű hexadecimális számot. A kapu szimmetrikus azaz mindkét irányból nyitható.
A kód F értékkel indul tehát minden ablak aktív. Ezt követi 200ms-ként 3 számjegy. A szám nem lehet nulla és nem lehet azonos az előzővel. Így minden változás egy új számjegyet jelent.
A kapu az érvényes kóddal azonnal nyílik és 10 másodpercig marad nyitva.
A piros számok a helyiértéket jelentik az adott ablakhoz. A sárga az alakzatok méretét mutatja.
A középpont a talajtól 75mm ide kell a kódot visszajátszani. A kapu szélessége 50 cm, az infravevő a 'kódtárcsa' középen helyezkedik el.
A kód: CA6
Ezt visszasugározva a kapu azonnal felnyílik.
Az adatátvitel egy darab infra LED felhasználásával történik. Az infra jel 38KHz impulzusokból áll amit soros (1200 baud, 8 bites, nincs paritás) jellel modulálunk.
A LED-en mérhető jel. A kód: 789
A soros jel egy szelete. Jól látható, hogy 38KHz impulzusok sorozatából áll.
A cél az volt, hogy nagyvonalakban (+/-20°) a kapu közepére célozva már fél méter távolságból érzékelje a kódot. Ezt csak modulált infrajellel lehetett megoldani. Szerettem volna megtartani a robot oldaláról a legegyszerűbb kódkezelést ami a soros portra kiküldött 3 karaktert jelenti. Az <itt> látható kapcsolási rajzon egy lehetséges megoldás található. A <forráskód> arduino alapú és csak a softwareserial könyvtárat használja így könnyen adaptálható más hw platformokra. A méltán híres 555 IC előállít egy 38KHz négyszögjelet ami egy kapcsolótranzisztoron keresztül meghajtja az infraledet. A mikrokontrollerről érkező soros adat ezt a jelet kapcsolja. Természetesen megoldható, hogy a 38KHz jelet is programból állítsuk elő.
A kapuban használt infravevő a 950nm hullámhosszon a legérzékenyebb ahogy az alkatrész csomag részét képező SFH4546 led is.
A kód másodpercenként kétszer sugározható elkerülve az infra 'szmogot' a pályán.
A kapu kódja a közvetített kép alapján emberi vagy gépi látással is megfejthető. A teszteléshez Írtam egy kis c# tesztprogramot ami innen letölthető. Én egy ESP32-S3 sense modult külső 2.4GHz antennával és egy OV5640 kamerát használtam. A kamera egy videó stream-et adott amit egy openvc-python program dekódolt.
A kód megfejtéséhez 3 módszert találtunk. Lehet a közvetített videót kikockázva manuálisan megadni a robotnak a kódot vagy automatikusan (opencv) elemezni. A harmadik módszert nem árulom el a negyediket ötödiket pedig meglátjuk a verseny napján:)
Pálya és pontok
A pálya 8m x 8m. Külön borítást nem kap így a díszaula járólap burkolata lesz a talaj. Ide jól tapadó gumikerekek az ideálisak. A kapuk 50cm szélesek és a legszűkebb átjáró is 75cm. Így bőven lesz hely manőverezni a max 18x18x18 cm robotokkal.
A PAC-MAN robot középről indul. A palánkok magassága 13cm.
Kisorsolásra kerül a forduló négyes beosztása. Ez az első kör esetén teljesen véletlenszerű. A következő fordulóknál már a megszerzett pontok számítanak ki kivel fog egy csoportba kerülni.
Egy csoport meccse négy 5 perces menetből fog állni. Mindegyik csapat lesz egyszer PAC-MAN és 3x GHOST szerepben.
- ■ ha a csapat PAC_MAN minden kapun amin először áthaladt 40 pont. Így 8 x 40 = 320 pont szerezhető. A nyolcadik kapun átmenve az óra leáll és a hátralévő másodpercek hozzáadódnak az összpontszámhoz. Ha valaki 3 perc alatt letudja a kapukat akkor a pontja 320 + 120 = 440
- ■ ha a csapat GHOST akkor a kapuk aktiválásáért nem jár pont csak a PAC-MAN elfogásáért. Ez idő alapú ami az elfogás pillanatában hátralévő másodpercek ötöde. Például nektek csak a menet felénél sikerül elkapnotok a PAC-MAN-t akkor 150 / 5 = 30 pont jár csak.
Csak érdekességképpen számoljuk ki az egy forduló alatt elérhető maximális pontszámot:
- ■ 1 x PAC-MAN 320 pont a kapukért és 300 pont a fénysebességért = 620 pont
- ■ 3 x GHOST sikerül elkapni a PAC-MAN-t 1 másodpercen belül az 3 x 60 = 180 pont
Azért senki ne keseredjen el ha nem éri el fordulónkként a 800 pontot.
Amennyiben technikai ok miatt be kell menni a pályára a robotot vissza kell tenni a kiindulási pontra és 1 percet várakozni az indulásig.
20 csapat esetén egy forduló kb. 2-2.5 óra. Így két forduló biztos belefér a napba. Ez azt jelenti minden csapatnak 8 menete lesz amiből 2x PAC-MAN 6x GHOST-ként szerezhet pontokat. A legjobb 8 csapat középdöntője után a finálé a négyes döntő következik.
Idén szeretnénk a díjakat pontszámok alapján szétosztani. Ez azt jelenti, hogy mindenki a megszerzett pontjai arányában részesül a díjalapból.
A pályát péntek délután felépítjük így egész éjszaka lehet tesztelni.
Köszönöm pár vén róka segítségét, hogy átnézték és segítettek megalkotni a végleges kiírást.
demó robot és távirányító