Živjo, Habr! Že smo o platformi LEGO MINDSTORMS Education EV3. Glavni cilji te platforme so usposabljanje skozi praktične primere, razvoj STEAM spretnosti in oblikovanje inženirskega mišljenja. Omogoča izvedbo laboratorijskih del pri preučevanju mehanike in dinamike. Laboratorijski stojali iz LEGO kock in orodja za beleženje in obdelavo podatkov naredijo eksperimente še bolj zanimive in pregledne ter pomagajo otrokom bolje razumeti fiziko. Na primer, učenci lahko zberejo podatke o temperaturi taljenja in jih sistematizirajo s pomočjo aplikacije ter predstavijo v obliki grafikona. Ampak to je šele začetek: danes bomo govorili o tem, kako dopolniti ta komplet z okoljem za programiranje MicroPython in ga uporabiti za učenje robotike.

Učimo programiranje s pomočjo EV3
Sodobni učenci želijo videti privlačen rezultat. Da, dolgočasno jim je, če program izpisuje številke v konzolo, in želijo gledati barvite grafike, diagrame ter ustvarjati prave robote, ki se gibljejo in izvajajo ukaze. Običajna koda se otrokom zdi preveč zapletena, zato je bolje začeti učenje s čim lažjim.
Osnovno okolje za programiranje EV3 je zasnovano na grafičnem jeziku LabVIEW in omogoča vizualno določanje algoritmov za robota: ukazi so predstavljeni v obliki blokov, ki jih lahko premikate in povezujete.

Tak način dobro deluje, ko je treba pokazati, kako se gradijo algoritmi, vendar ni primeren za programe z veliko bloki. Ob zapletanju scenarijev je treba preiti na programiranje s pomočjo kode, vendar otrokom ta korak predstavlja težavo.
Tukaj je nekaj trikov, eden od njih pa je pokazati, da koda izvaja iste naloge kot bloki. V okolju EV3 to lahko storimo zahvaljujoč integraciji z MicroPython: otroci ustvarjajo isto program v osnovnem okolju programiranja s pomočjo blokov in v jeziku Python v Visual Studio Code od Microsofta. Vidijo, da oba načina delujeta enako, vendar je z naravno kodo lažje reševati zapletene naloge.
Preidemo na MicroPython
EV3 среды je zasnovana na ARM9 procesoru, pri čemer so razvijalci posebej pustili odprto arhitekturo. Ta rešitev je omogočila nalaganje alternativnih vdelkov, med katerimi je tudi slika za delo z MicroPython. Ta omogoča uporabo Pythona za programiranje EV3, kar dela delo s kompletom še bližje nalogam iz resničnega življenja.
Da bi začeli delati, je potrebno prenesti na katero koli microSD kartico, jo vstaviti v mikroračunalnik EV3 in ga vključiti. Nato je potrebno namestiti za Visual Studio. In lahko začnemo delati.
Programiramo prvega robota na MycroPython

Na našem so na voljo nekateri tečaji za obvladovanje osnovnih pojmov robotike. Modeli na EV3 otroke seznanjajo z osnovami, ki se uporabljajo v samovozečih avtomobilih, industrijskih montažnih robotih, strojih s CNR.
Ugotovili bomo primer risalne naprave, ki jo lahko naučimo risati vzorce in geometrijske figure. Ta primer je poenostavljena različica odraslih varilnih ali rezkalnih robotov in prikazuje, kako lahko EV3 uporabimo skupaj z MicroPython za izobraževanje šolarjev. Risalna naprava lahko tudi označi luknje na tiskani vezju za očeta, vendar je to že drug nivo, ki zahteva matematične izračune.
Za delo bomo potrebovali:
- osnovni komplet LEGO MINDSTORMS Education EV3;
- velik list črtastega papirja;
- barvne markerje.
Sestava samega robota je v , mi pa bomo obravnavali primer programiranja.
Najprej inicializiramo knjižnico modulov EV3:
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
Nastavimo platformo, ki vrti ročico kot motor na priključku B. Določimo prenosno razmerje dvostopenjske zobniške prenose s številom zob 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Nastavimo dvigalni mehanizem za ročico kot motor na priključku C:
seesaw_motor = Motor(Port.C)
Nastavimo žiroskop, ki meri naklon ročice, na priključku 2:
gyro_sensor = GyroSensor(Port.S2)
Nastavimo barvni senzor na priključku 3. Senzor se uporablja za določanje bele papirja pod risalno napravo:
color_sensor = ColorSensor(Port.S3)
Nastavimo dotik senzor na priključku 4. Robot začne risati, ko je senzor pritisnjen:
touch_sensor = TouchSensor(Port.S4)
Določimo funkcije, ki dvignijo in spustijo ročico:
def pen_holder_raise():
seesaw_motor.run_target(50, 25, Stop.HOLD)
wait(1000)
def pen_holder_lower():
seesaw_motor.run_target(50, 0, Stop.HOLD)
wait(1000)
Določamo funkcijo za vrtenje držala svinčnika pod določenim kotom ali do določenega kota:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Če je cilj kot večji od trenutnega kota gyroskopske tipala, nadaljujemo z gibanjem v smeri urinega kazalca s pozitivno hitrostjo:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Če je cilj kot manjši od trenutnega kota gyroskopske tipala, se gibamo v nasprotni smeri urinega kazalca:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Ustavimo vrtečo platformo, ko je cilj kot dosežen:
turntable_motor.stop(Stop.BRAKE)
Nastavimo začetni položaj držala svinčnika na zgornji položaj:
pen_holder_raise()
Sedaj sledi glavni del programa - neskončna zanka. Najprej EV3 čaka, da barvni senzor zazna belo papir ali modro startno točko, in da je senzor dotika pritisnjen. Nato nariše vzorec, se vrne v izhodiščni položaj in vse ponovi.
Ko naprava ni pripravljena, LED lučke na krmilniku postanejo rdeče, na LCD zaslonu pa se prikaže slika "prst navzdol":
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Čakamo, da barvni senzor zazna modro ali belo barvo, nastavimo barvo LED lučk na zeleno, na LCD zaslonu pa prikažemo sliko "prst navzgor" in sporočimo, da je naprava pripravljena za delo:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Čakamo na pritisk senzorja dotika, priredimo gyroskopski tipalo v kotu 0 in začnemo risati:
while not touch_sensor.pressed():
wait(10)
gyro_sensor.reset_angle(0)
pen_holder_turn_to(15)
pen_holder_lower()
pen_holder_turn_to(30)
pen_holder_raise()
pen_holder_turn_to(45)
pen_holder_lower()
pen_holder_turn_to(60)
Dvignemo držalo svinčnika in ga vrnemo v izhodiščni položaj:
pen_holder_raise()
pen_holder_turn_to(0)
Takšna preprosta programa smo dobili. Zdaj jo zaženemo in pogledamo robota-risarja v akciji.
Kaj takega pomenijo ti primeri

EV3 je orodje za poklicno usmerjanje v okviru poklicev STEM in točka vstopa v inženirske specialnosti. Ker se na njem lahko rešujejo praktične naloge, otroci pridobivajo izkušnje s tehničnimi razvoji in ustvarjanjem industrijskih robotov, se učijo modelirati resnične situacije, razumeti programe in analizirati algoritme ter obvladati osnovne konstrukcije programiranja.
Podpora MicroPythonu naredi platformo EV3 primerno za poučevanje v višjih razredih. Učenci se lahko preizkusijo v vlogi programerjev v enem najbolj priljubljenih modernih jezikov ter spoznajo poklice, povezane s programiranjem in inženirskim načrtovanjem. Seti EV3 prikazujejo, da pisanje kode ni strašljivo, pripravljajo na resne inženirske naloge in pomagajo narediti prvi korak k obvladovanju tehničnih specialnosti. Za tiste, ki delajo v šoli in so povezani z izobraževanjem, pa smo pripravili in učne materiale. V njih je podrobno opisano, katere veščine se oblikujejo pri izvajanju takšnih ali drugačnih nalog, in kako se pridobljene veščine povezujejo s učnimi standardi.
Izvor: habr.com
