TechLab - Laboratórium budúcnosti
- Laboratórium budúcnosti
- Naše vybavenie
- 1. MICROBIT-BLOCKLY
- 2. JOYSTICKBIT-BLOCKLY
- 3. MAKECODE ARCADE
- 4. SCULPFUN LASER
- Linux – Rýchlokurz
- 5. DOBOT MAGICIAN - PYTHON + LINUX
- 6. XGO ROBOTICKÝ PES - BLOCKLY
- 7. CUTEBOT - AUTONÓMNE VOZIDLO
- 8a. Joystick:bit – Rozšírenie – Lekcia 1
- 8b. Joystick:bit – Rozšírenie – Lekcia 2
- 8c. Joystick:bit – Rozšírenie – Lekcia 3
- 8d. Joystick:bit – Rozšírenie – Lekcia 4
- 8e. Joystick:bit – Rozšírenie – Lekcia 5
8e. Joystick:bit – Rozšírenie – Lekcia 5
Ladenie oneskorenia, rozšírené funkcie, finálny projekt
Trvanie: 90 minút
Vek: 12–15 rokov
Potrebné vybavenie: Micro:bit v2 (3 ks), Joystick:bit, Cutebot, Wonder Rugged Car, XGO Lite, USB kábel, notebook
Software: MakeCode editor – makecode.microbit.org
Predchádzajúce znalosti: Joystick:bit Lekcie 1–4
Čo sa dnes naučíš
- Merať a znižovať oneskorenie ovládania (latency)
- Pridať pokročilé funkcie: rýchlostné profily, kombinácie tlačidiel
- Navrhnúť a realizovať vlastnú scénu s viacerými zariadeniami
- Pochopiť limity bezdrôtového ovládania micro:bitu
Prečo záleží na oneskorení
Keď pohneš joystickom, auto nereaguje okamžite. Medzi pohybom a reakciou uplynie čas – oneskorenie (latency). Skladá sa z:
Zdroj oneskorenia Typická hodnota Čítanie joysticku (pauza v slučke) 50–150 ms Odoslanie cez rádio micro:bit 10–30 ms Príjem a spracovanie prijímača 10–50 ms Pauza v slučke prijímača 50–150 ms Celkové oneskorenie 120–380 ms Pri hodnote nad 200 ms začína ovládanie pôsobiť „tuhým" dojmom. Pod 100 ms je reakcia plynulá.
💡 Pre porovnanie: profesionálne herné ovládače majú oneskorenie 1–8 ms. Bluetooth gamepad cca 30 ms. My pracujeme s rádiom micro:bit – je to dostupný HW, nie herný controller.
Krok 1 – Meranie oneskorenia (15 minút)
Cieľ: Zistiť aké oneskorenie má tvoj aktuálny systém.
Metóda – vizuálna:
- Drž joystick v ruke pred fotoaparátom mobilu
- Zapni záznam videa (spomalené 240fps ak podporuje)
- Rýchlo pohni joystickom – sleduj kedy sa auto začne hýbať
- V prehrávači počítaj snímky medzi pohybom joysticku a pohybom auta
- Pri 30fps: 1 snímka = 33ms, pri 240fps: 1 snímka = 4ms
Metóda – kódom:
Pridaj do prijímača dočasný kód:
pri prijatí rádiového páru (name, value): ak name = "ping": rádio odošli hodnotu "pong" = value ← odraz späť pri prijatí rádiového páru (name, value): ← na ODOSIELATEĽOVI ak name = "pong": nastav latencia = rozdiel (čas teraz) - value zobraziť číslo latenciaA na odosielateľovi každú sekundu pošli:
pri aktualizácii každých 1000ms: rádio odošli hodnotu "ping" = čas behu (ms)💡
čas behu (ms)je blok z kategórie Vstup → Viac – vráti počet milisekúnd od zapnutia micro:bitu.
Krok 2 – Zníženie oneskorenia (15 minút)
Cieľ: Upraviť program tak aby oneskorenie kleslo pod 150 ms.
Technika 1 – Zníž pauzy:
Kde Pôvodná pauza Nová pauza Odosielateľ – slučka 100 ms 40 ms Prijímač – slučka 100 ms 40 ms Technika 2 – Posielaj menej dát:
Namiesto posielania oboch osí každých 40 ms, posielaj len keď sa hodnota zmenila:
nastav posledX = 512 nastav posledY = 512 stále opakovať: nastav jx = joystickbit X value nastav jy = joystickbit Y value // Pošli len ak sa hodnota zmenila o viac ako 20 ak abs(jx - posledX) > 20: rádio odošli hodnotu "jx" = jx nastav posledX = jx ak abs(jy - posledY) > 20: rádio odošli hodnotu "jy" = jy nastav posledY = jy pauza 30ms💡
abs()= absolútna hodnota – rozdiel bez ohľadu na znamienko. Blok nájdeš v kategórii Matematika.Technika 3 – Vyber pohybový model:
Model A – príkaz každých 40 ms (push):
- Odosielateľ stále posiela aktuálnu pozíciu
- Prijímač vždy vykoná posledný prijatý príkaz
- Pros: jednoduché, reaktívne
- Cons: ak prídu dve správy za sebou, staršia sa prejaví len na zlomok sekundy
Model B – príkaz len pri zmene (event):
- Odosielateľ pošle príkaz len keď joystick zmení zónu (stred → dopredu, dopredu → stred)
- Prijímač vykoná príkaz a drží ho kým nepríde nový
- Pros: menej rádiovej prevádzky, predvídateľnejšie správanie
- Cons: ak sa rádio stratí, zariadenie zostane v poslednom stave (nemusí zastať)
Pre auto a psa je Model B zvyčajne lepší. Implementuj ho:
nastav zóna = "stop" nastav posledZona = "" stále opakovať: nastav jx = joystickbit X value nastav jy = joystickbit Y value // Urči zónu ak jy < 380: nastav zóna = "forward" inak ak jy > 640: nastav zóna = "backward" inak ak jx < 380: nastav zóna = "left" inak ak jx > 640: nastav zóna = "right" inak: nastav zóna = "stop" // Pošli len ak sa zóna zmenila ak zóna ≠ posledZona: rádio odošli text zóna nastav posledZona = zóna pauza 30msPrijímač potom len spracúva text:
pri prijatí rádiového textu (receivedString): ak receivedString = "forward": Cutebot go forward speed 70 ak receivedString = "backward": Cutebot go backward speed 70 ak receivedString = "left": Cutebot turn left speed 60 ak receivedString = "right": Cutebot turn right speed 60 ak receivedString = "stop": Cutebot stop
Krok 3 – Rýchlostné profily (10 minút)
Cieľ: Tlačidlami prepínať medzi pomalým (presným) a rýchlym (normálnym) režimom.
Pridaj premennú
rychlostny_profilna odosielateľ:nastav profil = "normal" ← 0 = normal, 1 = slow on joystickbit button C pressed: ak profil = "normal": nastav profil = "slow" zobraziť obrázok [korytnačka] rádio odošli text "speed_slow" inak: nastav profil = "normal" zobraziť obrázok [šípka] rádio odošli text "speed_normal"Na prijímači (Cutebot):
nastav max_speed = 70 pri prijatí rádiového textu (receivedString): ak receivedString = "speed_slow": nastav max_speed = 30 ak receivedString = "speed_normal": nastav max_speed = 70 ak receivedString = "forward": Cutebot go forward speed max_speed ...
Krok 4 – Finálny projekt: vlastná scéna (40 minút)
Cieľ: Navrhnúť a realizovať scénu kde sa zmysluplne zapoja všetky tri zariadenia.
Toto je najdôležitejší krok celého modulu. Nie je tu presný kód – len zadanie a smer.
Výber scény
Vyber si jednu (alebo vymysli vlastnú):
Scéna 1 – Záchranná misia
Prostredie: priestor s prekážkami (krabice, knihy)
Priebeh:
- Cutebot (prieskumné vozidlo) vyjde zo základne a preskúma priestor
- Keď nájde „obeť" (predmet), zastaví a signalizuje (LED červená)
- XGO pes príde k miestu – ramenom uchopí predmet
- WRC (transportér) príde, pes položí predmet na neho
- WRC odvezie predmet do „nemocnice" (označené miesto)
Každé zariadenie ovládaš joystickom – prepínaš medzi nimi tlačidlami C/D/E.
Scéna 2 – Robotický sklad
Prostredie: označená dráha na podlahe (izolepa)
Priebeh:
- WRC jazdí po dráhe ako dopravný pás (manuálne ovládanie)
- Cutebot čaká na určenom mieste – prevezme „tovar" (predmet ktorý WRC privezie)
- XGO pes triedi tovar – ramenom ho presunie na jedno z dvoch miest podľa farby (simulovaná – ty rozhoduješ)
Scéna 3 – Slobodná voľba
Vymysli vlastnú scénu. Pravidlá:
- Musia byť zapojené aspoň 2 zariadenia
- Každé zariadenie má iná úlohu
- Existuje jasný začiatok a koniec scény
- Napíš postup na papier pred tým ako začneš programovať
Ako postupovať
- Nakresli si schému – kde sú zariadenia, kde je štart, kde je cieľ, aké sú prekážky
- Rozdeľ na kroky – čo sa deje ako prvé, čo ako druhé, kto čo robí
- Naprogramuj každé zariadenie zvlášť – Cutebot prijímač, WRC prijímač, XGO prijímač
- Naprogramuj odosielateľ – prepínanie skupín rádia + príkazy pre každý krok scény
- Nacvič scénu – najprv pomaly, jedno zariadenie po druhom
- Spusti celú scénu – všetky zariadenia naraz
Zhrnutie celého modulu Joystick:bit s rozšírením
Čo si za 5 lekcií zvládol:
Lekcia Obsah 1 Rozšírenie Joystickbit, čítanie osí a tlačidiel, mapovanie hodnôt, rádio 2 Cutebot 4-smerový + plynulý ovládač, Wonder Rugged Car 8 smerov 3 XGO pes, prepínanie režimov chôdza/rameno, vlastný protokol 4 Kombinovaný ovládač pre 3 zariadenia, prepínanie skupín rádia, debug 5 Meranie oneskorenia, znižovanie latency, rýchlostné profily, finálna scéna Kľúčové pojmy:
Pojem Vysvetlenie Rozšírenie (Extension) Balík blokov od výrobcu HW Skupina rádia „Kanál" – zariadenia na rovnakej skupine sa počujú Protokol Dohodnutý formát správ medzi zariadeniami Oneskorenie (Latency) Čas medzi vstupom a reakciou Mŕtva zóna Oblasť okolo stredu joysticku kde sa nič nedeje Zónový model Posiela príkaz len pri zmene zóny – menej rádiovej prevádzky Rýchlostný profil Prepínanie medzi normálnym a pomalým (presným) režimom Mecanum kolieska Umožňujú pohyb do strany bez otáčania (Wonder Rugged Car) Diferenciálny pohon Otáčanie zmenou rýchlosti ľavého/pravého motora (Cutebot) Núdzové zastavenie Príkaz stop odoslaný na všetky skupiny rádia
Kam ďalej
Zvládol si bezdrôtové ovládanie viacerých robotov jedným joystickom. Ďalší prirodzený krok:
- Cutebot – autonómne vozidlo – sledovanie čiary, ultrazvuk, AI kamera – robot sa rozhoduje sám
- Dobot Magician – Python – priemyselný robot, programovanie v skutočnom jazyku
- XGO – pokročilé pohyby – choreografia, synchronizované sekvencie
