Curs per a professors d’Introducció a LEGO® Mindstorms NXT i EV3

(versió 4.5)

 

UNITAT 4. Explorant llindars: “experiment” amb un bloc espera i una bifurcació associats a un sensor.

 

Aquesta unitat didàctica quatre està íntegrament dedicada a realitzar un exercici extremadament simple, però que permet als alumnes reflexionar més profundament sobre el concepte de llindar i, donat que no és molt complicat, es podria realitzar abans que la unitat didàctica 3 anterior (s’ha afegit després donat que utilitza una bifurcació).

 

Aquest exercici fins i tot es pot fer amb alumnes que no han programat mai, amb la finalitat només d’explicar i d’aprofundir sobre el concepte de llindar entre vàries mesures (explicat en la unitat didàctica anterior) i d’introduir-los ràpidament a la programació amb estructures lògiques. És molt interessant observar que en aquesta pràctica el repte no està en la programació dels blocs espera i bifurcació (el programa es pot donar fet als alumnes, a més amb aquest exemple, els alumnes entenen aquests blocs de forma molt intuïtiva i amb poques explicacions), sinó que està en quins llindars s’han de triar en cada bloc per fer que el robot detecti correctament les línies i el seu color.

 

Al final, es realitza un “experiment” en Mindstorms per tal de generar una gràfica de les mesures preses pel sensor de llum (NXT) o de color (EV3) que il·lustra perfectament el funcionament del sensor, que permet verificar els criteris estudiats i que es pot extrapolar a altres sensors.

 

Unitat 4 exercici 1: Combinació del bloc “Wait” o espera amb el bloc “Switch” o bifurcació: detectar intensitats de llum diferents per esbrinar colors de línies diferents utilitzant els blocs espera i bifurcació associats al sensor de llum i el bloc “Motor” o “Move” amb durada il·limitada.

 

Abans de començar aquest exercici convé recordar als alumnes una mica de teoria sobre el concepte de llindar entre vàries mesures i com es calcula, fent la mitjana aritmètica entre les diferents mesures, tal com hem vist en la unitat didàctica anterior. En aquest exercici utilitzarem varis llindars, però sempre entre dues mesures corresponent a dos colors diferents.

 

Per començar l’exercici, cal posar sobre el fons blanc del tauler una línia de color verd o blau, és a dir, amb una intensitat de llum superior al negre i inferior al blanc. Es pot utilitzar una de les línies negres del tauler de l’exercici incremental.

 

 

Com mostra la figura, l’exercici consisteix en trobar els llindars adequats per fer, primer, que el robot vagi endavant fins que trobi la línia negra i s’aturi, només utilitzant un bloc espera. Seguidament cal fer el mateix però fent que el robot s’aturi al trobar la línia verda. Finalment, cal fer que el robot “salti” la línia verda i s’aturi a la línia negra. Per acabar l’exercici, cal fer que el robot s’aturi a qualsevol línia (verda o negra) i mitjançant una bifurcació associada al sensor de llum o de color digui el color de la línia, utilitzant també un bloc “Sound” o de so per esbrinar si diu correctament el color.

 

El primer pas consisteix en fer que cada alumne o grup d’alumnes ompli una taula amb els valors de lectura del sensor de llum o de color del seu robot sobre els colors blanc, verd i negre (les lectures seran una mica diferents per a cada sensor) –mitjançant l’opció “View” del maó intel·ligent, seleccionant “Reflected light” i triant el port corresponent al sensor de llum o de color– i calculi els llindars entre els diferents colors. En aquest punt és important que els alumnes facin proves i se’n adonin que la lectura de la intensitat de la llum reflectida del sensor de llum o de color sobre un mateix color o punt pot variar en funció de l’enllumenat.

 

Negre

Llindar Negre-Verd

Verd

Llindar Verd-Blanc

Blanc

32% NXT

 6% EV3

36% NXT

 7% EV3

40% NXT

 9% EV3

48% NXT

42% EV3

55% NXT

75% EV3

 

 

Llindar Negre-Blanc

 

 

 

 

44% NXT

40% EV3

 

 

 

Crear un nou programa, per exemple “u4ex1.rbt”, i en NXT posar dos blocs Motor (o un bloc Move) amb ambdós motors amb durada il·limitada i amb potència 40%, un bloc espera associat al sensor de llum (verificar el port del sensor) i dos blocs Motor finals per aturar el robot. En EV3 podem utilitzar un bloc “Move Tank”, per arrancar i aturar el robot, i un bloc espera o “Wait” associat al sensor de color utilitzant l’opció de comparació “Reflected Light Intensity” o intensitat de llum reflectida.

 

Suggeriment: Tal com s’ha comentat anteriorment, si volem frenar els motors d’un robot per aconseguir un moviment precís en NXT cal utilitzar blocs Motor. Recordar no utilitzar mai blocs Move per frenar els motors, ja que no són capaços de fer-ho encara que l’atribut “frenar” o “Brake” estigui seleccionat en “Acció Següent” o “Next Action” del bloc Move. En EV3 podem utilitzar un bloc “Move Tank” per controlar ambdós motors amb un sol bloc. En aquest cas, cal assegurar-se que els ports amb les lletres dels motors corresponen als ports utilitzats pels motors del robot.

 

Els 3 exercicis inicials tracten de variar el llindar de la intensitat de llum del bloc espera per fer que el robot s’aturi a les línies volgudes.

 

Parar el robot a la línia negra (NXT)

 

 

Parar el robot a la línia negra (EV3)

 

Com podem observar, aquest primer exercici farà que el robot s’aturi a la línia negra, i òbviament hem d’utilitzar el llindar entre negre i blanc, en el nostre exemple, 44% en NXT i 40% en EV3. Cal verificar que la opció per defecte de “Generate light”, o generar llum, en l’atribut del sensor de llum està seleccionada en NXT, i “Reflected Light Intensity” o intensitat de la llum reflectida està seleccionada en la opció de comparació del sensor de color en EV3.

 

Per tal de fer el segon exercici, és a dir, aturar el robot a la línia verda, cal posar el llindar entre el verd i el blanc, 48% en NXT i 42% en EV3. Però, si no modifiquem el llindar, s’aturarà el robot a la línia verda? La resposta és que sí donat que el valor de la intensitat de la llum reflectida mesurada pel sensor de llum o de color sobre el verd és 40% en NXT i 9% en EV3, mesures que estan encara per sota del llindar entre el negre i el blanc, 44% en NXT i 40% en EV3.

 

El tercer exercici és més interessant donat que ara sí que cal que els alumnes pensin una mica per tal de posar un llindar que faci que el robot “salti” o passi per sobra de la línia verda sense aturar-se i pari al trobar la línia negra. Per tal de fer això cal posar el llindar entre el negre i el verd, 36% en NXT i 7% en EV3.

 

Finalment, el quart exercici, aturar el robot a qualsevol línia i fer que aquest digui el seu color, permet que els alumnes acabin de reflexionar sobre el concepte de llindar, tal com veurem a continuació.

 

Per tal de fer aquest quart i últim exercici, cal afegir una bifurcació associada també al sensor de llum o de color. Així, el primer bloc espera farà aturar el robot a una línia de qualsevol color (en el nostre exemple negra o verda) i la bifurcació permetrà esbrinar el color de la línia. Un cop explicat el criteri i el funcionament dels blocs “Wait” o espera i “Switch” o bifurcació, cal que els alumnes esbrinin quins són els llindars que cal posar en cada cas per realitzar correctament l’exercici. Si els alumnes fan aquest exercici sense tenir nocions de programació, és important que facin proves, que s’equivoquin i que pensin en el que fan.

 

Cal que els alumnes descobreixin que per tal de fer que el robot s’aturi a qualsevol línia, cal posar en el bloc espera el llindar entre el blanc i la línia més clara, en el nostre cas la línia verda, 48% en NXT i 42% en EV3. D’aquesta manera, si el robot s’atura al verd, també s’aturarà al negre. Però en la bifurcació, cal posar el llindar entre els colors que volem diferenciar, en el nostre cas el verd i el negre, 36% en NXT i 7% en EV3, tal com mostren les imatges a continuació.

 

Parar el robot a qualsevol línia i dir el seu color (NXT)

 

 

Parar el robot a qualsevol línia i dir el seu color (EV3)

 

Cal observar que dins la bifurcació, en la branca del color més fosc cal posar un bloc “Sound” de so i cal triar “Black” (negre) en l’atribut “File” o fitxer per a que el robot digui aquesta paraula i en la branca de la bifurcació corresponent al color més clar cal triar “Green” (verd).

 

La pregunta és: dirà el robot el color adequat? La resposta és: encara no. Cal deixar que els alumnes facin proves i descobreixin que si posen el robot directament sobre cada línia, el robot no es belluga, donat que està sobre la línia, però diu correctament el color. Perquè? És important que facin les seves teories i que les discuteixin entre ells.

 

La resposta té a veure amb un fet molt important que és entendre que el canvi del valor de la mesura d’un sensor de llum o de color durant el canvi de color és progressiu, és a dir, el valor no canvia de cop. Això és així perquè el sensor va variant progressivament la seva posició sobre els colors a mida que el robot avança, la qual cosa produeix un canvi progressiu del valor de la intensitat de la llum reflectida llegida pel sensor de llum o de color, tal com mostra la imatge següent.

 

El pas d’un color a un altre és progressiu,

així com les lectures del sensor de llum o de color

 

Al final de l’exercici es realitza un “experiment” en Mindstorms NXT-G i EV3 que mostra els valors llegits pel sensor de llum de forma gràfica i que permet entendre molt millor el seu funcionament.

 

Donat que la lectura de la intensitat de llum reflectida pel sensor de llum o de color és progressiva, quan el robot s’atura, ho fa al llindar de la línia més clara, per tant, el robot sempre, o quasi sempre, dirà verd. Dit d’una altra manera, sobre la línia negra el robot s’aturarà abans que sobre la línia verda, quan detecti el llindar especificat, i a simple vista això és quasi imperceptible.

 

Què hem de fer per a que el robot digui el color de la línia correctament? Els alumnes de seguida entenen que cal aturar el robot just a sobre cada línia per a que el sensor de llum o de color llegeixi el color amb tota la seva intensitat i, per tant, digui el seu nom correctament. La solució és senzillament fer que el robot vagi una mica endavant just després del bloc espera, en comptes de parar-lo immediatament, tal com mostren les imatges següents. Cal recordar que per aturar el robot amb precisió en NXT cal utilitzar blocs Motor i no un bloc Move, donat que aquest no és capaç de frenar els motors i el robot no s’aturarà amb precisió.

 

Parar el robot a qualsevol línia i dir el seu color, versió final (NXT)

 

Parar el robot a qualsevol línia i dir el seu color, versió final (EV3)

 

Però existeix una altra manera per diferenciar els colors utilitzant el sensor de color en EV3, que consisteix en utilitzar el mode de comparar color o “Compare Color” del sensor de color en el bloc espera o “Wait” i el mode de mesurar color o “Measure Color” en el bloc bifurcació o “Switch”. El bloc espera permet especificar el conjunt de colors o “Set of Colors” que volem trobar i el bloc bifurcació permet afegir vàries branques, una per a cada color que volem diferenciar. Cal observar que podem afegir una branca per defecte i sense color (amb “No Color”), per si un cas el robot troba un color diferent als que ens interessen, i donat que és la branca per defecte, el robot la utilitzarà per aquells colors que no coincideixin amb els especificats en les altres branques. Però alguna vegada executarà el programa aquesta branca per defecte? La resposta és no, perquè el bloc espera mai pararà a un color que no sigui negre o verd! Si teniu cinta blava, per exemple, podeu comprovar-ho... Finalment, cal observar que després d’executar el bolc espera, no necessitem fer que el robot vagi una mica endavant per assegurar que s’atura just a sobre de la línia, tal com hem fet anteriorment en utilitzar el sensor en el mode intensitat de llum reflectida o “Reflected Light Intensity”, perquè en el mode comparació de color o “Compare Color” el bloc òbviament ja s’ocupa de llegir correctament el color.

 

Parar el robot a qualsevol línia i dir el seu color utilitzant els colors detectats, (EV3)

 

Finalment, per acabar d’entendre el funcionament del sensor de llum o de color, les seves lectures i l’ús dels llindars, podem utilitzar una funcionalitat molt interessant del programari Mindstorms NXT-G i EV3 anomenada “experiment” (més endavant en la unitat didàctica 6 aprofundirem en el seu ús, pel registre de dades). Els experiments permeten enregistrar dades dels sensors en funció del temps i generar gràfiques automàticament que permeten relacionar totes les dades en una mateixa finestra.

 

En el nostre exemple, simplement posarem un bloc Move en NXT i un bloc “Move Tank” en EV3 amb suficients rotacions per passar per sobre la línia negra i la verda, i amb una potència de 40%. L’experiment captarà les intensitats de llum llegides pel sensor durant el funcionament del robot. Les imatges següents mostren com realitzar l’experiment posant un bloc “Start Datalog” o iniciar registre de dades al principi y un bloc “Stop Datalog” o aturar registre de dades al final en NXT, o dos “Data Logging” blocs en EV3. En NXT, la finestra d’atributs del bloc d’inici del registre de dades mostra com configurar l’experiment, i en EV3 els mateixos blocs mostren la configuració. Bàsicament cal triar el número de mostres per segon (“Samples per Second”), 15 en el nostre cas, i el sensor de llum (NXT) o de color (EV3) amb el seu port. Cal observar que la durada del registre és il·limitada donat que volem realitzar l’experiment mentre el robot es desplaça, i aturar-lo just quant el robot para.

 

Experiment d’enregistrament de les lectures del sensor de llum (NXT)

 

 

Experiment d’enregistrament de les lectures del sensor de color (EV3)

 

És important observar que si mantenim el robot connectat a l’ordinador via USB o Bluetooth, en NXT podem realitzar l’experiment de forma dinàmica, és a dir, podem veure com es generen les gràfiques en temps real, la qual cosa permet als alumnes relacionar visualment el moviment del robot amb la gràfica generada i entendre-la millor.

 

Per veure dinàmicament en EV3 la generació del graf hem d’activar el mode “Oscilloscope” o oscil·loscopi en la finestra “Experiment” (això es fa per defecte quan s’obre una nova finestra d’experiment). Cal deixar que els alumnes juguin dins la finestra “Experiment” generant grafs només pel sensor desitjat, el sensor de color, i mirin els canvis de la llum reflectida en empènyer el robot amb la ma per tal de que passi per sobre dels diferents colors del tauler. Per realitzar aquest exercici en EV3, però, desactivarem el mode oscil·loscopi per tal de generar els registres de dades programàticament.

 

Però abans de córrer el programa és molt didàctic demanar als alumnes que pintin a la pissarra com creuen que serà la gràfica que generarà el robot. Se’ls pot ajudar pintant una recta a l’alçada del color blanc, sobre el 60%, i una altra a la del negre, sobre el 30% (aquest valors son diferents entre NXT, amb el sensor de llum, i EV3, amb els sensor de color).

 

 

De seguida els alumnes veuen que el canvi de color no es produeix de forma abrupta passant del blanc al negre, com mostra la línia vertical vermella, sinó que proposen la línia groga inclinada. Aquest és un pas molt important perquè relacionen el concepte amb la gràfica. De fet, en la realitat, les lectures del sensor dibuixen una corba com mostren les corbes de color taronja.

 

Si realitzem l’exercici, veurem que la primera corba generada mostra 2 pics pronunciats. En aquest punt és important que els alumnes interpretin el resultat. Òbviament, el primer pic i més llarg correspon al color negre i el segon al verd.

 

Finestra experiment (NXT)

 

Finestra experiment (EV3)

 

A més d’observar les petites variacions de lectura del color blanc, la pregunta és perquè les corbes són tant verticals? Ens hem equivocat amb les prediccions anteriors? Si no ens hem equivocat, aleshores com podem obtenir un resultat més precís o significatiu, on es vegi millor la forma de la corba? La resposta és que per obtenir més precisió i unes corbes més significatives podem incrementar el número de mostres per segon i també podem reduir la velocitat del robot.

 

En les imatges següents observem l’experiment amb 30 mostres per segon (doble de l’anterior) i una potència de motor de 20% (meitat de l’anterior).

 

Segona finestra experiment (NXT)

 

Segona finestra experiment (EV3)

 

En aquest experiment podem observar molt millor les lectures del sensor de llum o de color al llarg de l’experiment. També podem veure que les lectures sobre un mateix color no sempre són les mateixes, perquè passa això? És interessant fer pensar els alumnes sobre quins són els factors que creuen que tenen una influència sobre aquestes variacions de lectura del sensor de llum. Principalment les lectures del sensor poden variar en funció de la brutícia del tauler, les condicions d’enllumenat i els propis errors de lectura del sensor. Observar que les lectures de la llum reflectida sobre les superfícies més fosques són més estables que sobre les superfícies més clares...

 

Finalment, podem veure i entendre visualment on s’atura el robot en cada línia, és a dir, al llindar entre el blanc i la línia més clara, la verda, representat per la línia groga en les imatges anteriors. Per tant, quan el robot arribi a la línia negra s’aturarà una mica abans del cantell de la línia, en canvi quan arribi a la línia verda, s’aturarà just sobre el cantell de la línia, donat que és justament el llindar entre el verd i el blanc, tal com hem comentat anteriorment.

 

Coneixements adquirits: Amb aquesta unitat didàctica l’alumne ha aprés a interpretar una gràfica, a entendre millor el funcionament d’un sensor i el concepte de llindar, i com s’utilitza per programar un robot que prengui decisions en funció de l’entorn. També és important l’esforç mental i intel·lectual que suposa intentar deduir els resultats, abans de realitzar un exercici, per posteriorment comprovar-los a la pràctica, la qual cosa permet assimilar molt millor els coneixements adquirits i posa en pràctica la “gimnàstica” mental.

 

 

 

Creative Commons License

Curs d'introducció a LEGO® Mindstorms NXT i EV3 by Josep Maria Fargas is licensed under a Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España License.

Permissions beyond the scope of this license may be available at www.bogatech.org.