Robotika › Robotcsapat › Leckék
ROBOTIKA · ELEMENTARY · WORD BLOCKS
Az Elementary csapatok leckéi lépésről lépésre, blokkos programokkal. Saját blokkokat építetek, amelyekből minden versenyfeladat összerakható.
← Vissza a Robotcsapat-felületreA pontos robot nem egyetlen ügyes program, hanem 8–10 megbízható saját blokk (My Blocks), amelyekből minden küldetés összerakható. Itt ezeknek a receptjei vannak a SPIKE App szóblokkos (Word Blocks) programozásához.
Minden pontos blokk így működik. A FORDUL, a VONALKÖVET és a KAR ugyanez a kör, csak más szenzorral.
Minden programot a START blokkal kezdtek: beállítja a motorokat, nyugalomban nullázza a giroszkópot, és lenullázza a kart. A két segédblokk kiszámolja, merre néz a robot, és mennyivel tér el a céltól.
⌨️ Mindent ti raktok össze blokkokból. A receptet a „Másolás” gombbal kimásolhatjátok egy jegyzetbe, hogy a gép mellett legyen.
START (amikor a program elindul)
mozgásmotorok legyenek B + F (set movement motors to B+F)
1 motorfordulat legyen 17.6 cm (set 1 motor rotation to 17.6 cm)
KERÜLET = 17.6
E = 1 (előjelpróba után 1 vagy -1)
OFFSET = 0
várj 0.5 mp-et (a robot álljon mozdulatlanul!)
yaw szög legyen 0 (set yaw angle to 0)
KAR_NULLAIRÁNY_MÉR (saját blokk, nincs bemenete)
MOST = (yaw szög) × E + OFFSET
ha MOST > 180 akkor MOST = MOST - 360
ha MOST < -180 akkor MOST = MOST + 360
HIBA_SZÁMOL (cél)
IRÁNY_MÉR
HIBA = cél - MOST
ha HIBA > 180 akkor HIBA = HIBA - 360
ha HIBA < -180 akkor HIBA = HIBA + 360IRÁNYJAVÍTÁS (valódi) – akkor hívjuk, amikor biztosan tudjuk, merre néz a robot
yaw szög legyen 0
OFFSET = valódiPélda: a robot hátával nekitolat a pálya falának, és tudjátok, hogy ilyenkor pontosan a 90°-os irányba néz. Ekkor IRÁNYJAVÍTÁS 90 – a giroszkóp addig összegyűlt hibája eltűnik.
E = 1, ha negatív, E = -1.Indítsátok el a START-ot, majd forgassátok a robotot kézzel jobbra 90°-ra. Az IRÁNY_MÉR 90 körüli számot ír ki? Balra fordítva −90 körülit?
A robot menet közben folyamatosan méri, mennyire tér el a kívánt iránytól, és a hibával arányosan visszakormányoz. Ezért akkor is egyenesen megy, ha az egyik motor kicsit gyengébb, vagy a szőnyeg hullámos.
EGYENES (cm, seb, irány)
B relatív pozíciója legyen 0 (set relative position to 0)
CÉLFOK = cm × 360 / KERÜLET
ismételd, amíg abs(B relatív pozíciója) > CÉLFOK (repeat until)
HIBA_SZÁMOL irány
KORR = HIBA × 2 (KP_EGYENES, hangolandó)
induljon: bal = seb + KORR, jobb = seb - KORR (start moving at % % speed)
állj meg (stop moving)EGYENES_LÁGY (cm, seb, irány)
B relatív pozíciója legyen 0
CÉLFOK = cm × 360 / KERÜLET
MEGTETT = 0
ismételd, amíg MEGTETT > CÉLFOK
MEGTETT = abs(B relatív pozíciója)
S = seb
GYORS = 15 + MEGTETT × 0.2
LASS = 10 + (CÉLFOK - MEGTETT) × 0.2
ha GYORS < S akkor S = GYORS
ha LASS < S akkor S = LASS
HIBA_SZÁMOL irány
KORR = HIBA × 2
induljon: bal = S + KORR, jobb = S - KORR
állj megA 0.2-es szorzókkal a robot 50%-ra kb. 9 cm alatt gyorsul fel, és az utolsó kb. 10 cm-en lassul le (56 mm-es keréknél).
EGYENES 30, -40, 0) – a korrekció ugyanúgy működik.200 cm-es út közben finoman lökjétek oldalra a robotot – vissza kell találnia az eredeti irányba. Cél: 2 m-en 1 cm-nél kisebb oldalirányú eltérés.
A FORDUL nem „ennyi fokot fordul”, hanem egy irányba áll be (pl. 90°). Messziről gyorsan fordul, a cél közelében arányosan lassít, és 1°-on belül áll meg.
FORDUL (cél)
HIBA_SZÁMOL cél
ismételd, amíg abs(HIBA) < 1
HIBA_SZÁMOL cél
S = HIBA × 0.7 (KP_FORDUL, hangolandó)
ha S > 40 akkor S = 40 (legnagyobb sebesség)
ha S < -40 akkor S = -40
ha (S > 0) és (S < 10) akkor S = 10 (legkisebb sebesség:
ha (S < 0) és (S > -10) akkor S = -10 e nélkül megállna a cél előtt)
induljon: bal = S, jobb = -S
állj meg
várj 0.15 mp-etbal = 2 × S, jobb = 0 – ilyenkor a robot közepe elmozdul, ezt az útvonaltervben számolni kell.FORDUL -90. Megfordulás: FORDUL 180.Négyzet: 4 × (EGYENES 30 cm, FORDUL a következő irányra: 90, 180, −90, 0). A végén a robot ±1°-on belül nézzen a kiinduló irányba, és 1 cm-en belül álljon a kezdőponthoz.
A legjobb csapatok robotja sem tökéletes: kb. méterenként igazodik valamihez, ami biztosan a helyén van – egy vonalhoz vagy a pálya falához. Így a hosszú úton összegyűlt hiba lenullázódik.
max_cm biztonsági határ: ha nem látja a vonalat, nem fut le az asztalról.VONALIG (seb, irány, max_cm) – egyenesen megy, amíg vonalat nem lát
B relatív pozíciója legyen 0
MAXFOK = max_cm × 360 / KERÜLET
ismételd, amíg (C fényvisszaverés < HATÁR) vagy (abs(B relatív pozíciója) > MAXFOK)
HIBA_SZÁMOL irány
KORR = HIBA × 2
induljon: bal = seb + KORR, jobb = seb - KORR
állj megKIEGYENESÍT (seb, irány) – két szenzorral merőlegesen a vonalra áll
BALKÉSZ = 0
JOBBKÉSZ = 0
B motor induljon seb sebességgel előre (egyedi motorblokk!)
F motor induljon seb sebességgel előre
ismételd, amíg (BALKÉSZ = 1) és (JOBBKÉSZ = 1)
ha C fényvisszaverés < HATÁR akkor: B motor álljon meg, BALKÉSZ = 1
ha D fényvisszaverés < HATÁR akkor: F motor álljon meg, JOBBKÉSZ = 1
IRÁNYJAVÍTÁS irányFALHOZ (irány) – hátával a pálya falához simul
induljon: bal = -25, jobb = -25
várj 1 mp-et
állj meg
várj 0.2 mp-et
IRÁNYJAVÍTÁS irányIndítsátok a robotot 5-ször, szándékosan kicsit ferdén, majd FALHOZ → EGYENES 40 cm → KIEGYENESÍT. Cél: mind az 5 alkalommal ugyanott álljon meg (±0,5 cm).
A robot a vonal szélét követi a színszenzorral. Előtte megmérjük, mit lát a szenzor a fehéren és a feketén.
VONALKÖVET (cm, seb) – a vonal bal szélét követi a C szenzorral
B relatív pozíciója legyen 0
CÉLFOK = cm × 360 / KERÜLET
ismételd, amíg abs(B relatív pozíciója) > CÉLFOK
HIBA = (C fényvisszaverés) - HATÁR
KORR = HIBA × 0.4 (KP_VONAL, hangolandó)
induljon: bal = seb + KORR, jobb = seb - KORR
állj megbal = seb - KORR, jobb = seb + KORR.D fényvisszaverés < HATÁR – a jobb szenzor jelzi a keresztvonalat.Mérjétek meg a FEHÉR és a FEKETE értéket ablak mellett és lámpa alatt is. Mennyire tér el? Utána kövessetek egy 1 m-es ívelt vonalat 5-ször: hányszor maradt a vonalon végig?
A kar csak akkor áll mindig ugyanoda, ha a program elején egy fix pontról (ütközőről) indul. Ezért a START végén a kar lemegy az alsó ütközőig, és ott nullázzuk a helyzetét.
KAR_NULLA
A motor induljon -30% sebességgel (lefelé – az irányt próbáljátok ki)
várj 0.2 mp-et
várj, amíg abs(A motor sebessége) < 5 (a kar elérte az ütközőt)
A motor álljon meg
várj 0.1 mp-et
A relatív pozíciója legyen 0
KAR (cél) – cél motorfokban, 0 = legalsó helyzet
H = cél - (A relatív pozíciója)
ismételd, amíg abs(H) < 2
H = cél - (A relatív pozíciója)
S = H × 1.5
ha S > 60 akkor S = 60
ha S < -60 akkor S = -60
ha (S > 0) és (S < 12) akkor S = 12
ha (S < 0) és (S > -12) akkor S = -12
A motor induljon S sebességgel
A motor álljon megKAR 120 tízszer egymás után, közben KAR 0. Cél: a kar vége minden alkalommal ugyanarra a jelölésre álljon egy függőleges mércén. Ha megvan, pipáljátok ki a mérföldkövet!
A véletlen elemeknél (2026-ban Elementaryban a 4 hangjegy) a robot először végigolvassa a színeket, eltárolja egy listában, és csak utána szállít. Ez megbízhatóbb, mint ha minden tárgynál menet közben döntene.
SZÍNOLVAS (hely) – a robot áll, a szenzor kb. 1 cm-re a tárgytól
várj 0.1 mp-et
SZÍN = (C szín) (color)
ha SZÍN = „nincs szín” akkor:
EGYENES 1, 15, IRÁNY (közelebb megy)
SZÍN = (C szín)
SZÍNEK lista „hely”-edik eleme legyen SZÍN (replace item)
FŐPROGRAM – részlet
SZÍNEK lista = [0, 0, 0, 0]
... a robot az 1. hely elé áll ...
SZÍNOLVAS 1
EGYENES (helyek távolsága), 30, IRÁNY
SZÍNOLVAS 2
... ugyanígy 3 és 4 ...
P = (piros helye a SZÍNEK listában) (item # of piros in SZÍNEK)
ha P = 1 akkor HOZD_1 / ha P = 2 akkor HOZD_2 / ...Keverjétek össze a tárgyakat tízszer, különböző fényben (ablak mellett, lámpa alatt). Cél: 10-ből 10 helyes lista.
A kezdőértékek egy átlagos SPIKE Prime alvázra jók. A saját robototokhoz mindig egyesével, 5 próbafutással hangoljatok, és írjátok fel az eredményt.
| Érték | Kezdőérték | Ha túl kicsi | Ha túl nagy |
|---|---|---|---|
| KP_EGYENES (EGYENES) | 2 | lassan javít, ív alakban elhúz | kígyózik, rángat |
| KP_FORDUL (FORDUL) | 0.7 | sokáig araszol a cél előtt | túlfordul, oda-vissza billeg |
| Legkisebb fordulósebesség | 10% | a cél előtt megáll, nem éri el | túllő 1–2 fokkal |
| Legnagyobb fordulósebesség | 40% | lassú fordulás | megcsúszik a kerék, túllő |
| Egyenes sebesség | 50% | lassú futam | megcsúszik induláskor (→ EGYENES_LÁGY) |
| KP_VONAL (VONALKÖVET) | 0.4 | kanyarban lesodródik a vonalról | cikázik a vonal két oldala között |
| Tűrés fordulásnál | 1° | – | pontatlan irány |
| Kar szorzó (KAR) | 1.5 | lassan éri el a célt | túllő, rezeg |
Szabály: egyszerre csak egy értéket változtassatok. Ha egy érték bevált, írjátok be a csapatnaplóba – a versenyen nem lesz idő újra kikísérletezni.
A jó emelő három dolgot tud: elég erős (áttétel), mindig ugyanoda áll (nullázás, holtjáték nélkül), és a tárgy magától a helyére csúszik benne (terelő). A legtöbb pontot a „teljesen benne és állva” lerakás adja – ezt a szerkezet dönti el, nem a program.
áttétel = hajtott kerék fogszáma ÷ hajtó (motoron lévő) kerék fogszáma
| Emelőtípus | Működése | Mire jó | Vigyázz |
|---|---|---|---|
| Forgó kar | egy tengely körül fordul felfelé | egyszerű; tolás, billentés, lefogás | a vége ívben mozog, a tárgy megdől |
| Párhuzamos (négycsuklós) kar | két egyforma hosszú rúd tartja a fogót | a fogó végig vízszintes, a tárgy állva marad | több alkatrész, merevíteni kell |
| Villás (függőleges) emelő | fogaslécen vagy csigán egyenesen fel-le | pontos magasság: ráhelyezés, egymásra rakás | magas, figyelj a 25 cm-es kockára |
| Leereszthető „kalitka” | keret, ami a tárgy köré ereszkedik | állva szállítás szorítás nélkül; több tárgy egyszerre | a tárgy csak tolva mozog, emelni nem tud |
A teljes futam rövid küldetésekből áll, és minden küldetés egy ismert helyzetből indul, és oda érkezik (fal, vonal, kiegyenesítés). Így ha egy küldetés kicsit pontatlan, a következő nem örökli a hibát. Ez csak egy minta a szerkezetre, nem versenymegoldás.
START
// 1. küldetés: tárgy felvétele
EGYENES_LÁGY 40, 50, 0
FORDUL 90
VONALIG 25, 90, 30
KIEGYENESÍT 15, 90 ← ismert helyzet
KAR 0
EGYENES 8, 20, 90
KAR 120 (felemeli a tárgyat)
// 2. küldetés: lerakás
EGYENES 8, -30, 90
FORDUL 180
EGYENES_LÁGY 60, 50, 180
KAR 20 (lerakja)
KAR 120
EGYENES 10, -30, 180
FALHOZ 0 ← ismert helyzet
...Ezek alapozó építőkövek, nem kész versenymegoldások. A versenyprogramot nektek kell megírnotok, és el kell tudnotok magyarázni. 🤖