Robotický seminář ČVUT 26. 27. 1. 2018 PROGRAMOVÁNÍ LEGO MINDSTORMS EV3 Štěpánka Baierlová ZŠ a SVČ Sušice Jan Preclík Jiráskovo gymnázium Náchod
MOŽNOSTI PROGRAMOVÁNÍ V grafickém prostředí pro začátečníky EV3 Home Edition pro NXT i EV3, volné založeno na LabView Open Roberta pro NXT i EV3 (online) Klasickým programovacím jazykem zápis příkazů v textové podobě Robot C, komerční C Java + vývojové prostředí Eclipse, Netbeans NXC (BricxCC) + NXC4EV3
HLAVNÍ OKNO EV3 Startovní kostka Palety kostiček = příkazů Action = výstup (pohyb, displej, zvuk) Flow Control = běh programu (cykly, podmínky) Sensor = senzory, vstupy Data Operations = proměnné, výpočty Advanced = soubory, Bluetooth My Blocks = vlastní kostky (podprogramy)
OVLÁDÁNÍ ŘÍDÍCÍ KOSTKY Typ připojené kostky (EV3, NXT) Název kostky + stav baterie Nahrát program do kostky Nahrát a spustit Zaplnění paměti kostky + možnost editace obsahu paměti
PORT VIEW Na kartě Port View můžeme velice snadno odečítat hodnoty ze vstupů i výstupů (tato možnost je i přímo na řídící kostce) Auto ID = připojená zařízení jsou ihned automaticky rozpoznávána
VÝPIS NA DISPLEJ (DISPLAY) Náhled obsahu displeje Co se bude zobrazovat (text, tvary, obrázek) Zda před zobrazením vymazat celý displej Zobrazovaný soubor nebo text Pozice na displeji Poznámka: Po zobrazení na displeji je nutno počkat, jinak program skončí a nic neuvidíme
ČEKÁNÍ (WAIT) Čekat lze na různé hodnoty senzorů nebo po zadaný čas Na co se bude čekat a jak dlouho nebo na jakou hodnotu
CVIČENÍ 01 DISPLEJ Ať vaše kostička vypíše na displej pozdrav, po 1 sekundě k pozdravu ještě přidá úsměv (Smile), tak vydrží další sekundu a program skončí.
CVIČENÍ 01 ŘEŠENÍ ROBOTICKÝ SEMINÁŘ ČVUT
ZVUK (SOUND) Přehrávaný soubor Co se bude přehrávat (soubor nebo tón) Hlasitost Co se stane po přehrání (0 = čeká na dokončení zvuku a pak program pokračuje, 1 = začne přehrávat zvuk a program běží dál, 2 = přehrává zvuk opakovaně a program běží dál)
CVIČENÍ 02 ZVUK Přidejte k vašemu programu zvuk Ať vaše kostička vypíše na displej pozdrav, po 1 sekundě k pozdravu ještě přidá úsměv (Smile), tak vydrží další sekundu, na závěr se rozloučí (zvuk Goodbye) a program skončí.
CVIČENÍ 02 ŘEŠENÍ přidaný zvuk
VÝPIS NA DISPLEJ, ZVUK NÁMĚTY Komiks Usmívat se dokud není stisknuto nějaké (zvolené) tlačítko na kostičce. Mračit se dokud někdo nepootočí levým kolem o celou otočku. Když někdo pohne kostkou (gyro), zablikat diodami. Světelná závora = jakmile někdo přeruší paprsek, zahoukat.
DOTYKOVÝ SENZOR (TOUCH) tlačítko lze použít v cyklu, čekání i podmínce lze testovat uvolnění (Released) 0 stisknutí (Pressed) 1 stisknutí a uvolnění (Bumped) 2
CVIČENÍ 03 TOUCH SENSOR Přidejte, aby na začátku vašeho programu robot počkal na stisk tlačítka a teprve potom: ať vaše kostička vypíše na displej pozdrav, po 1 sekundě k pozdravu ještě přidá úsměv (Smile), tak vydrží další sekundu, na závěr se rozloučí (zvuk Goodbye) a program skončí.
CVIČENÍ 03 ŘEŠENÍ čekání na stisk tlačítka (port 1)
DOTYKOVÝ SENZOR NÁMĚTY Nárazník robot jede rovně tak dlouho, až narazí na překážku (tlačítko stisknuto), pak se zastaví couvne, otočí Zvířátko, které čeká na pohlazení, pak zavrčí, pohne se Pastička na myši
PODSVÍCENÍ ŘÍDÍCÍ KOSTKY Blikání (ANO/NE) Akce (On/Off) Barva (červená, oranžová, zelená) Poznámka: Barva na displeji se dá využít i k ladění programu
CVIČENÍ 04 PODSVÍCENÍ Přidejte do programu různé barvy podsvícení řídící kostky: kostka se rozbliká červeně robot čeká na stisk tlačítka, vaše kostička vypíše na displej pozdrav, kostka se rozsvítí zeleně po 1 sekundě k pozdravu ještě přidá úsměv (Smile), tak vydrží další sekundu, na závěr se rozloučí (zvuk Goodbye) a program skončí.
CVIČENÍ 04 ŘEŠENÍ podsvícení tlačítek
OPAKOVÁNÍ, CYKLUS (LOOP) předem zadaný počet opakování po zadaný čas dokud nebude zvolená hodnota Hodnota (podmínky, počet opakování ) Podmínka cyklu
CVIČENÍ 05 CYKLUS Zopakujte třikrát: kostička svítí 1 s červeně, kostička svítí 1 s zeleně. Nekonečný cyklus: po každém stisku tlačítka kostička změní barvu
CVIČENÍ 05 ŘEŠENÍ opakuj třikrát nekonečný cyklus
PODMÍNKA, VĚTVENÍ (SWITCH) Větev ANO (true) Podmínka Větev NE (false)
PODMÍNKA, VĚTVENÍ (SWITCH) Zobrazení Tabbed View lze využít pro úsporu místa Tabbed View Flat view
CVIČENÍ 06 PODMÍNKA Když je tlačítko v portu 1 stisknuto, robot svítí červeně, jinak svítí zeleně. Můžete přidat i obrázek (usměvavý či smutný smajlík)
CVIČENÍ 06 ŘEŠENÍ podmínka
TYPY ROBOTICKÝCH PODVOZKŮ Diferenciální podvozek Automobilový (Ackermanův) podvozek Trojkolový podvozek s řízeným předním kolem
MOTOR (LARGE/MEDIUM MOTOR) Který motor (resp. port, do kterého je zapojen) Akce Síla = rychlost Počet (sekund, stupňů, otáček) Co se stane po dokončení akce: Brake = motor bude zabržděn, Coast = něžné zastavení
MOTOR (LARGE/MEDIUM MOTOR) Akce Off = motor bude zastaven O způsobu zastavení rozhoduje Brake/Coast. On = motor bude zapnut a poběží tak dlouho, až ho jiná kostička vypne Program mezitím poběží dál! On for Seconds = motor poběží uvedený čas Na této kostičce se čeká, až běh motoru bude ukončen! On for Degrees = motor se otočí o zadaný počet stupňů, na této kostce se bude čekat tak dlouho, až se motor o zadaný úhel otočí, na to pozor například při zablokování motoru! On for Rotations = motor se otočí o zadaný počet otáček, pozor viz výše!
POHYB (MOVE STEERING) Kostička ovládá dva motory a umožňuje jejich současný pohyb a zatáčení změnou poměru jejich otáček intuitivnější ovládání Podobnou funkci má i kostička Move Tank, kde lze přímo nastavit síly pro jednotlivé motory. toto ovládání může být někdy přesnější
POHYB (MOVE STEERING) Jízda rovně Pozvolné zatáčení v jednom směru Zatáčení jedním kolem Zatočení na místě 32
CVIČENÍ 07 UJEĎ 28 CM A ZASTAV! V naší úloze jsou rozměry dlaždic 28 x 28 cm Naučte robota ujet přesně 28 cm a zastavit. Jak na to? Metoda pokus-omyl (a třeba trojčlenka na základě předchozích pokusů ) Měřit a počítat?
CVIČENÍ 07 UJEĎ 28 CM A ZASTAV! Měřit a počítat! Každé kolo má na sobě rozměry: průměr x šířka (mm) Za jednu otáčku motoru se robot posune o obvod kola obvod = * průměr Jak vypočítat ujetou vzdálenost? vzdálenost = #otáček * * průměr 1 otáčka = 360 stupňů vzdálenost = #stupňů/360 * * průměr Jak nastavit počet stupňů, aby robot ujel danou vzdálenost? #stupňů = (360 * vzdálenost) / ( * průměr)
CVIČENÍ 07 ŘEŠENÍ #stupňů = (360 * vzdálenost) / ( * průměr) Kolik stupňů je potřeba, aby robot ujel 28 cm? #stupňů = (360 * 28) / ( * 5,6) při průměru kola 5,6 cm 573 stupňů
CVIČENÍ 08 UJEĎ 28 CM VLASTNÍ BLOK Tools/My Block Builder Použití v programu
CVIČENÍ 08 UJEĎ DANOU VZDÁLENOST #stupňů = (360 * vzdálenost) / ( * průměr) Vytvořte program, ve kterém můžeme nastavovat vzdálenost, kterou chceme ujet. Co budeme potřebovat? proměnné konstanty početní operace
CVIČENÍ 08 ŘEŠENÍ #stupňů = (360 * vzdálenost) / ( * průměr) průměr kola vzdálenost počet stupňů
CVIČENÍ 09 UJEĎ DANOU VZDÁLENOST (PODPROGRAM S PARAMETREM) Podprogram Použití v programu
POHYB NÁMĚTY Ozubená kola a převody kalkulátor/simulace na http://gears.sariel.pl 40
POHYB NÁMĚTY Rychlostní závody (sice jen jízda rovně, ale to není tak jednoduché) + třeba zastavení na určitém místě Závody do vrchu (nakloněná plošina) + případně robot silák (táhne zátěž, vozík, pet láhev s vodou ) Přetahovaná/přetlačovaná robotů
BAREVNÝ SENZOR (COLOUR) Pracuje ve třech různých režimech Color Mode = rozlišuje 7 barev černá, bílá, zelená, modrá, červená, žlutá, hnědá, žádná Reflected Light = odražené světlo 0 = černá, 100 = bílá Ambient Light = okolní světlo
CVIČENÍ 09 ZASTAV NA BARVĚ Naprogramujte robota, který pojede rovně a zastaví až na červené barvě (nebezpečná zóna). Robot čeká na stisk tlačítka, jede rovně, když narazí na červenou, zastaví.
CVIČENÍ 09 ŘEŠENÍ čekání, až robot uvidí červenou barvu (nastavení senzoru v režimu colour)
CVIČENÍ 10 RŮZNÉ BARVY Naprogramujte robota, který pojede rovně a na každé barvě přehraje jiný zvuk. využijeme podprogram Dopredu_JednaDlazdice využijeme větvení na více částí přidání další větve větvení na základě číselné hodnoty
CVIČENÍ 10 ŘEŠENÍ hodnoty barev
CVIČENÍ 10 ŘEŠENÍ Vypisuje na displej hodnotu ze senzoru výpis na displej
PARALELNÍ PROCESY Více úloh může běžet zároveň ROBOTICKÝ SEMINÁŘ ČVUT v jednom vláknu například ovládání motorů ve druhém vláknu hraje nějakou melodii
CVIČENÍ 10 ŘEŠENÍ S PARALELISMEM v jednom vlákně jede robot vpřed ve druhém vlákně hlídá změnu barvy pokud dojde ke změně barvy, zahraje a uloží novou barvu do proměnné barva nová barva porovnání stará barva
ZATÁČENÍ (MOVE STEERING) Pozvolné zatáčení v jednom směru Zatáčení jedním kolem Zatočení na místě 50
CVIČENÍ 11 ZATOČTE O 90 Naučte robota otočit se o pravý úhel Jak na to? Metoda pokus-omyl Měřit a počítat?
CVIČENÍ 11 ZATOČTE O 90 Počítat? Vzdálenost kol: Průměr kola: v = * d/4 (čtvrtina obvodu kruhu, po kterém se kola pohybují) Každé kolo musí urazit vzdálenost: každé kolo se musí otočit o úhel: #stupňů = (360 * v) / ( * průměr) (již známe) po dosazení za v: d = 13,5 cm průměr = 5,6 cm #stupňů = (90 * d) / průměr
CVIČENÍ 11 ŘEŠENÍ #stupňů = (90 * d) / průměr Kolik stupňů je potřeba, aby se robot otočil o 90? #stupňů = (90 * 13,5) / 5,6 = 217 při vzdálenosti kol 13,5 cm a průměru kola 5,6 cm
CVIČENÍ 12 ZATOČ O DANÝ ÚHEL vzdálenost kol: d průměr kola: průměr úhel otočení robota: u (0 360 ) Co už víme? každé kolo musí urazit vzdálenost: (část obvodu kruhu, po kterém se kola pohybují) v = u / 360 * * d každé kolo se musí otočit o úhel: #stupňů = (360 * vzdálenost) / ( * průměr) #stupňů = (u * d) / průměr
CVIČENÍ 12 ŘEŠENÍ vzdálenost kol: d průměr kola: průměr úhel otočení robota: u (0 360 ) #stupňů = (u * d) / průměr
CVIČENÍ 13 GYRO (OTOČ SE O 45 ) Využijte gyro k přesnému zatočení o 45. Robot se otáčí, čeká, dokud hodnota gyra nenasčítá minimálně hodnotu (úhel) 45, zastaví motory.
CVIČENÍ 13 ŘEŠENÍ otáčej se reset hodnoty gyra čeká, až bude nasčítaná hodnota aspoň 45
CVIČENÍ 14 GYRO (OTOČ SE O ZADANÝ ÚHEL) Využijte gyro k přesnému zatočení o zadaný úhel využijeme předchozí úlohu vytvoříme vlastní podprogram (blok) s parametrem parametrem je velikost úhlu
CVIČENÍ 14 ŘEŠENÍ (PODPROGRAM S PARAMETREM) velikost úhlu
CVIČENÍ 15 GYRO JEĎ ROVNĚ Šlo by využít gyro, abychom dokázali jezdit opravdu rovně? Spíš ne, gyro má velký teplotní drift ale zkuste to! Vytvořme program, kde se robot snaží udržet přímý směr, jako měl na začátku. A když ho násilím pootočíte, bude se snažit jet původním směrem Co budeme potřebovat? rozsah hodnot (interval)
CVIČENÍ 15 ŘEŠENÍ ANO jeď rovně Je odchylka v intervalu (-2, 2)? NE srovnej se