Curs per a professors d’Introducció a LEGO® Mindstorms NXT i EV3
(versió 4.5)
En aquesta unitat didàctica veurem en detall el funcionament del seguidor de línies o rastrejador simple de dues passes amb un sensor de llum i analitzarem de forma gràfica com optimitzar-lo, fins crear un rastrejador proporcional amb un sensor de llum.
Aquest exercici mostra el primer pas per millorar el rastrejador simple de dues passes amb un sensor de llum.
Cal començar per preguntar als alumnes com funciona el seguidor de línies o rastrejador simple de dues passes amb un sensor de llum. A nivell conceptual cal recordar que, tal com mostra la unitat didàctica 5, l’algoritme d’aquest rastrejador es basa en que quan el sensor de llum detecta el color negre amb el sensor de llum (és a dir, una intensitat de la llum reflectida per sota del llindar entre el color blanc i el negre), fa un gir cap al color blanc (un gir sobre punt, és a dir, amb una roda parada) i quan detecta el color blanc fa un gir cap el color negre. Aquests petits moviments locals tenen l’efecte global sobre el robot de seguir una línia de color negre sobre un fons de color blanc.
Seguidor de línies o rastrejador simple de dues passes amb un sensor de llum
En aquest punt és convenient fer un graf de dues dimensions expressant en l’eix de les X la intensitat de la llum reflectida llegida pel sensor de llum del robot i en l’eix de les Y el gir del robot:
Cal observar que la intensitat de la llum reflectida corresponent al color negre és en aquest cas igual a 30% i pel color blanc 60%. Recordar que aquests valors depenen de la llum ambient, dels materials i de cada sensor de llum, així com de la seva alçada respecte del terra. Cal també observar que el graf indica “gir dreta” pel color negre i “gir esquerra” pel color blanc. Cal preguntar als alumnes per quin costat creuen que el robot seguirà la línia negra. La resposta és per la dreta de la línia. Una simplificació del graf és només posar “gir cap el blanc” i “gir cap el negre”...
Un cop els alumnes han recordat com funciona el rastrejador simple de dues passes, cal preguntar com creuen que es podria millorar aquest rastrejador?
En aquest punt cal també recordar que la lectura del sensor de llum no varia de cop entre la intensitat de la llum reflectida del color blanc (60%) al negre (30%), sinó que és progressiva, tal com mostra la unitat didàctica 5. És a dir, la intensitat de la llum reflectida llegida dinàmicament pel sensor de llum mentre el robot es mou anirà variant de valors, com a màxim entre 30% i 60%.
Se’ls pot ajudar preguntant què hauria de fer el robot quan el sensor de llum detecta una intensitat de la llum reflectida igual al llindar entre el color blanc i el color negre, és a dir, quan aquest es troba just a sobre de la vora de la línia. La resposta és òbvia: anar recte!
Aleshores podem preguntar si algú té una idea de com programar-ho? En el graf anterior podem pintar en color vermell just el punt del llindar entre el color blanc i el negre. Resulta evident que cal establir un rang per quan el robot està just a sobre del llindar entre el blanc i el negre...
Podem ajudar els alumnes preguntant com podem generar 3 branques? La resposta és posant un bifurcació dins d’una altra! A partir d’aquí només cal establir correctament els llindars d’ambdues bifurcacions.
Crear un nou programa, per exemple “u8ex1.rbt”, tal com mostra la imatge següent.
Seguidor de línies o rastrejador simple de tres passes amb un sensor de llum
Cal tenir cura en posar el llindar de la primera bifurcació a <40% i posar el llindar de la segona bifurcació a <50%. Amb això aconseguim que el robot vagi recte quan la intensitat de la llum reflectida llegida pel sensor de llum estigui entre 40% i 50%, és a dir, equivalent a la branca definida per >40% en la primera bifurcació i <50% en la segona bifurcació.
Coneixements adquirits: Aquest exercici permet a l’alumne entendre el funcionament de l’algoritme del seguidor de línies o rastrejador simple d’un sensor de llum i permet introduir un raonament gràfic. També permet entendre millor el concepte de llindar i com utilitzar-lo.
Aquest exercici mostra com crear un rastrejador proporcional amb un sensor de llum, com a extensió de l’exercici anterior.
A partir del graf anterior, podem preguntar als alumnes com creuen que es podria fer un seguidor de línies o rastrejador encara més eficient? De seguida veuen que es pot anar afegint més llindars, obtenint una línia cada cop més esglaonada en el graf. Els hi podem demanar com creuen que es podria programar? La solució és anar niant bifurcacions i posant els llindars adequats a cadascuna d’elles. És a dir, anar afegint una bifurcació associada al sensor de llum dins la branca inferior de la bifurcació anterior, tal com mostra la imatge següent.
En el límit, la línia esglaonada es converteix en una recta, tal com mostra la imatge següent, de tal manera que just quan el sensor de llum del robot està a sobre del llindar entre el color blanc i el color negre, el robot va recte. Si el robot es desvia del llindar, el gir del robot és proporcional a aquesta desviació, per tant, el gir del robot varia en funció de la lectura del sensor de llum, és a dir, de la seva desviació respecte del llindar entre el color blanc i el color negre.
Una mica de teoria
L’equació d’una recta en un pla de dues dimensions és: Y = a * X + b
On “a” és el pendent de la recta i “b” és el valor de Y quan X = 0
Per simplificar l’equació, podem anul·lar el terme constant “b” de tal manera que farem passar la recta per l’origen de coordenades 0,0. Per tal de fer això, en comptes de representar la lectura del sensor de llum directament, hem d’expressar la desviació de la lectura del sensor de llum respecte del llindar entre el color blanc i el negre, que anomenarem “error”, de tal manera que quan l’error sigui igual a 0 el gir del robot serà igual a 0, és a dir, el robot anirà recte. Així tindrem que:
error = Lectura del sensor de llum - Llindar entre Blanc i Negre
Cal observar que l’error pot ser o positiu o negatiu, representant un gir cap un costat o cap a l’altre.
D’aquesta manera, la fórmula anterior serà:
Y = a * error (error = Lectura del sensor de llum - Llindar BN)
El rastrejador proporcional senzillament diu que el gir Y del robot és igual a l’error o desviació del robot respecte del llindar entre el blanc i el negre multiplicat per una constant “a” que anomenem “Kp” o constant de proporcionalitat. Així la fórmula del rastrejador proporcional d’un sensor de llum serà:
Gir = Kp * error (error = Lectura del sensor de llum - Llindar BN)
Ara només cal expressar el gir del robot en termes de potència dels motors per tal de que puguem programar el rastrejador proporcional. Per això necessitem establir la potència dels motors quan l’error és 0, el que s’anomena potència nominal o “Pn” (per exemple al 50%):
Potència motor B = Pn – (Kp * error)
Potència motor C = Pn + (Kp * error)
error = Lectura del sensor de llum - Llindar BN
Si substituïm els valors en les fórmules anteriors obtenim:
Potència motor B = 50 – (Kp * (Lectura del sensor de llum - 45))
Potència motor C = 50 + (Kp * (Lectura del sensor de llum - 45))
Finalment, quin valor hem de posar a la constant de proporcionalitat “Kp”? Cal veure que aquesta constant transforma l’error de desviació de la intensitat de la llum reflectida respecte del llindar entre el color blanc i el negre en potència dels motors. Lo millor és fer proves per anar-la ajustant, ja que dependrà de la potència nominal dels motors i sobretot de les corbes del circuit. Si sobre corregim la “Kp” el robot tindrà un comportament massa brusc i anirà d’un costat a l’altre, i si no la corregim prou el robot es desviarà de la línia especialment en les corbes.
Crear un nou programa, per exemple “u8ex2.rbt”, tal com mostra la imatge següent.
Seguidor de línies o rastrejador proporcional
|
Cálcul de l’error amb el llindar, en aquest cas = 45% |
|
Multiplicar l’error per “Kp”, la constant de proporcionalitat, en aquest cas = 2, 3 |
|
Restar “Pn”, la potència nominal dels motors, de la multiplicació anterior per obtenir la potència del motor B |
|
Sumar “Pn”, la potència nominal dels motors, de la multiplicació anterior per obtenir la potència del motor C |
Suggeriment: Per obtenir un codi més “net”, un cop les preses o “data plug” d’entrada i de sortida de dades d’un bloc estan utilitzades, podem col·lapsar el concentrador de dades o “data hub” del bloc per a que ocupi menys espai i sigui més fàcil d’entendre, visualitzant només les preses connectades. Cal també disposar els blocs per tal d’evitar el creuament de cables de dades o “data wires”.
Per comprovar el comportament del seguidor de línies o rastrejador proporcional cal construir un petit circuit amb corbes més o menys pronunciades. Com podem veure en executar el programa, quan aconseguim calibrar adequadament la constant “Kp”, el robot rastrejador és capaç de seguir la línia amb una gran precisió.
Coneixements adquirits: Els alumnes han vist un cas pràctic de com utilitzar les matemàtiques, en aquest cas la geometria analítica, per aplicar l’equació d’una recta en el càlcul del gir del robot segons la intensitat de la llum reflectida del sensor de llum. A més, han utilitzat els cables de dades per passar informació entre els blocs del programa y han utilitzat els blocs matemàtics per fer dinàmicament els diferents càlculs de l’algoritme del seguidor de línies o rastrejador proporcional amb un sensor de llum.
Però és possible fins i tot millorar el rastrejador proporcional?
Una mica de teoria
Suposem l’exemple d’una persona que entra a una dutxa. Inicialment obre la clau d’aigua calenta per augmentar la temperatura fins a un valor acceptable. El problema és que pot arribar el moment en què la temperatura de l’aigua sobrepassi aquest valor desitjat, així que la persona ha d’obrir una mica la clau d’aigua freda per contrarestar la calor i mantenir el balanç. L’aigua freda s’ajusta fins arribar a la temperatura desitjada. En aquest cas, la persona és la que està exercint el control sobre el llaç de control, i és la que pren les decisions d’obrir o tancar alguna de les claus, però no seria ideal si en lloc de nosaltres, fos una màquina qui prengués les decisions i mantingués la temperatura que desitgem?
Aquesta és la raó per la qual el sistema Proporcional Integral Derivatiu (PID) va ser inventat. Per simplificar les tasques dels operadors i exercir un millor control sobre les operacions.
Els reguladors PID són molt útils en la regulació de processos industrials, de manera que la gran majoria de reguladors utilitzats en la industria, són d’aquest tipus, ja que en general, es busca simplicitat en las estratègies de control. Se solen utilitzar en plantes industrials, en el control de nivells, pressions, fluxos, temperatures, moviments o posicions, velocitats, etc.
Algunes de les aplicacions més comunes són:
- Llaços de Temperatura com podrien ser un aire condicionat, escalfadors, refrigeradors, etc.
- Llaços de Nivell com podrien ser el nivell en tancs de líquids d’aigua, de làctics, de mescles, etc.
- Llaços de Pressió per poder mantenir una pressió predeterminada en tancs, tubs, recipients, etc.
- Llaços de Flux que mantenen la quantitat de flux dins d’una línia o tub, etc.
Com hem dit, un sistema Proporcional Integral Derivatiu (PID) és un sistema de control per realimentació que s’utilitza en sistemes de control industrials. Un controlador PID corregeix l’error entre un valor mesurat i el valor que es vol obtenir calculant i després traient una acció correctora que pot ajustar el procés que està realitzant. El controlador PID, és de lluny, l’algoritme de control més comú. Aquest algoritme pot ser utilitzat de diferents maneres: com a controlador independent, com a part d’un paquet de control digital directe, o com a part d’un sistema de control distribuït. El seu estudi es pot realitzar des de diferents punts de vista. Pot ser tractat com un dispositiu que pot ser utilitzat amb unes quantes regles pràctiques, però també pot ser estudiat analíticament. L’algoritme de càlcul del control PID es dóna amb tres paràmetres diferents: el proporcional, l’integral, i el derivatiu. El valor proporcional determina la reacció de l’error actual. L’integral genera una correcció proporcional a la integral de l’error que ha succeït en el passat, la qual cosa assegura que aplicant un esforç de control suficient, l’error de seguiment es redueix a zero. El derivatiu intenta anticipar la reacció del sistema en el futur calculant l’error que es produirà. La suma d’aquestes tres accions s’utilitza per ajustar el procés via un element de control, com per exemple, la posició d’una vàlvula de control o l’energia subministrada a un escalfador.
Més endavant estudiarem com aplicar un sistema Proporcional Integral Derivatiu (PID) a un robot seguidor de línies o rastrejador d’un sol sensor de llum.
Abans de començar, podem copiar l’exercici incremental 7 anterior i posar-li un nom diferent, per tal de mantenir una còpia. Seguidament només haurem de crear un bloc d’usuari “RastrejadorP” amb el codi del rastrejador proporcional anterior amb un argument de temps per controlar la durada d’execució del bucle i substituir el bloc “RastrejadorRotacions” per aquest nou bloc d’usuari.