Az OTP Bank IT Competition döntő feladata:
Feladat
- A robotnak 5 perc áll rendelkezésre a feladat elvégzésére.
- Egy valós LEGO EV3 robottal kell a lehető legrövidebb idő alatt bejárni ea döntős pályát és összeszámolni a pálya mellett elhelyezett zöld jelöléséket a robot szenzorjaira támaszkodva.
- A roboton található távolságmérő szenzor, amely előre néz. Illetve egy szín és fényérzékelő szenzor, amely a pálya felé (lefelé) van irányítva. Ezt használva kell bejárni a pályát a rajta lévő fekete útvonal követésével.
- A pálya szélétől kb. 30 cm-re fal található.
- A robotnak 5 perc áll rendelkezésre a feladat elvégzésére.
- Amikor a robot talál egy új zöld mezőt, az alábbiakat kell tennie:
- Hangjelzés: play tone 1975,53 Hz / 1 sec / volume 100
- Kiírni a robot kijelzőjére, hogy eddig hány zöld mezőt talált
Pontozás
- A csapat +1 pontot szerez, ha egy új zöld mező megtalálásakor a kért
hangjelzést adja a robot.
- A csapat nem szerez pontot az adott zöld mezőnél, ha egy új zöld mező megtalálásakor a robot nem ad hangjelzést.
- A csapat büntetőpontot (-1) szerez:
- - ha robot többször számolja ugyanazt a zöld jelölést, amit egyszer már számolt (hangjelzést ad), akkor annyi büntető pontot kap amennyi többletet számolt. Az OTP logó nem része a pályának és büntető pont jár, ha beszámítják a zöld jelölések közé.
- - összpontszámából 1 pont levonás jár (egyszer), ha a robot kijelzőjén nem szerepel vagy nem az a szám szerepel, amennyi hangjelzést adott a program futási ideje alatt.
- Az a robot, amelyik beért a célba a megadott időn belül és megáll (színérzékelője a piros felett van, és ott fejezi be a versenyt) további 2 plusz pontot kap.
- Maximális szerezhető pontszám tehát: 15 pont.
- Pontegyenlőség esetén az nyer, aki hamarabb hajtotta végre az utolsó pontszerző műveletet (plusz pontot érő utolsó zöld mező elérésének ideje, vagy ha az is egyezik, akkor a célbaérés ideje).
Információk, javaslatok
- Az elődöntőben használt algoritmust kell tovább fejleszteni és olyan állapotra hozni, hogy az elinduljon hasonló felépítésű valós roboton. A döntőn maximum 8 órát tudunk fejlesztésre biztosítani, ezért célszerű előre készülni a feladatra.
- A döntőn bármilyen kód felhasználható lesz, a kód futtattassál kapcsolatban a lenti két linken lehet tájékozódni. A döntőn lehet a lego szoftverét használni, illetve az ev3dev által támogatott nyelvvel megoldani a feladatot. Kérünk a döntős kérdőívben jelezd, hogy melyiket használjátok majd és azt is, hogy melyik nyelvet választottátok.
- A döntőbe a 24 legjobb csapat jutott tovább, és 4 robotot fogunk tudni biztosítani tesztelés céljából, ezért előre meghatározott menetrend szerint lehet majd tesztelni.
- Az elődöntős feladathoz hasonló feladat várható a döntőben valós lego robotokkal.A robot felépítéséről a döntő helyszínén adunk információt.
- A döntőben az elődöntőben kiadott minta pálya lett tovább bővítve és átalakítva. A döntőben az elődöntőhöz hasonlóan lesz minta pálya és döntős versenypálya is.
- A minta pálya és a döntős pálya új elemeket és színeket is tartalmazni fog. A pálya köré akadály lesz elhelyezve, hasonlóan, mint ahogy az elődöntőben is volt.
- Oldalak felkészüléshez:
Szabályok
A pálya fehér ponyvára került nyomtatásra, az a robot amelyiknek mind a két lánctalpa elhagyta a pálya ponyváját, nem folytathatja tovább az útját és csak az addig elért eredményei számítanak az értékelésbe. A pályát körbeveszi egy fal, amely érzékelhető az (infrás) távolság érzékelő segítségével.
Két fejlesztési eszköz, környezet használható:
LEGO standard vizuális fejlesztő környezete: LEGO MINDSTORMS EV3 SOFTWARE (PC/MAC)
ev3dev image, ami programozási nyelvek használatát teszi lehetővé
Egyedi programnyelvek esetén a versenyzők feladata a fejlesztéshez szükséges környezetet beállítani a gépeiken. Ehhez elérhető az ev3dev oldalán egy docker image. Az ennek megfelelő ugyanazon web oldalról letölthető image került installálásra a robotokra is. A fő image, amit használunk a STRETCH, azonban lesznek előkészített JESSIE image-ek is külön SD kártyákon.
A szervezők idő hiányában nem tudnak támogatást adni a környezet beállításához.
A következő program nyelvek támogatottak (ezekhez biztosítottak a futtató környezetek):
C/C++: Ajánlott a fejlesztő gépen kereszt fordítást (cross compile) használni ARM5telj processzorra, és csak a binárisokat beadni. A robotokon 6.3-as verziójú gcc, és g++ áll rendelkezésre. [ gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ]
Python: Az image tartalmaz 2.7.13 és 3.5.3 verziókat is, azonban javasolt a 3.5 használata (lásd lenti példa). [ Python 2.7.13 (default, Nov 24 2017, 17:33:09) , Python 3.5.3 (default, Sep 27 2018, 17:25:39) ]
Java: Java SE 1.8 futtató környezet (jre) található a robotokon. Vagyis Java fordító (javac) nincs telepítve. Ennek megfelelően a fordítást a versenyzők a saját gépükön végzik el összecsomagolva az összes szükséges class és jar állományokat egyetlen .jar fájlba. (Természetesen lehetőség van a szükséges jar-ok és class-ok célkönyvtárba helyezésére is összecsomagolás helyett.) A könyvtárnak tartalmaznia kell egy futtató script-et, ami megfelelően paraméterezve indítja a java kódot. [ java version "1.8.0", Java(TM) SE Embedded Runtime Environment (build 1.8.0-b132, headless), Java HotSpot(TM) Embedded Client VM (build 25.0-b70, mixed mode) ]
One click programokat kell készíteni, amelyeket a roboton lévő fájlböngészővel fogjuk tallózni és indítani is. Azokat a programokat, amelyek így nem indulnak nem tudjuk figyelembe venni (részletek a tesztelésnél).
Tesztelés
Kettő robot áll rendelkezésre a Lego (LEGO MINDSTORMS EV3) programjával készített kódok tesztelésére. A másik kettő roboton ev3dev image fut, és ezek a különböző programozási nyelvekben írt programok tesztelését fogják biztosítani.
Követelmények
Fájl- és mappa-nevek ne tartalmazzanak szóköz, ékezetes valamint speciális karaktereket, vagyis az angol ABC betűiből, számokból, kötőjelből (-), aláhúzásból (_) állhatnak.
Lego programok (LEGO MINDSTORMS EV3) tesztelése
Egy .ev3 kiterjesztésű projektfájlt várunk, amit kábel vagy bluetooth segítségével rátöltünk a robotra, majd közvetlen a robotról indítjuk manuálisan a pályán.
Az ev3 projekt azonosítója a csapatnév kell legyen (a feltételeknek megfelelően) , a projektben pedig egy programot várunk, ami a startrobot nevet viseli. Ezzel indítjuk a kódot.
Egyéni programozási nyelven írt kódok tesztelése
A kész programokat, WinSCP segítségével másoljuk a robotra. A versenyzőktől egy mappát várunk, melynek neve a csapatnév kell legyen (a feltételeknek megfelelően). Ebben a mappában kell elhelyezni a "lefordított" kódot vagy pl. Python esetén forrás fájlt, valamint az indító script-et.
Az indítófájl rendszerint egy bash script fájl, amelynek a neve 'startrobot.sh'. A script fájl első sora tartalmazhat hivatkozást a shell-re ('#!/bin/bash'), a második sorában pedig a parancs ami elindítja a megírt programot, lehetőleg a fájl teljes elérésével. A home könyvtár: '/home/robot/'
Python példa a startrobot.sh-ra:
#!/bin/bash
python3 /home/robot/csapatnev/my_program_v1.py
A tesztelések során javasolt az indító (one click) programokat módosítani a megfelelő indításhoz. Erre a döntő futam során már nem lesz lehetőség.
Kiértékelés
A pontozás az elődöntő szabályai szerint lesz, az időt egy versenybíró méri stopperrel és egy másik jelöli a pálya
kicsinyített másán a megszerzett pontokat és büntetéseket.
A döntőről filmfelvétel készül.
Pálya