1. UNITAT 4. Bifurcacions i bucles avan巽ats: l嘆gica de despla巽ament i presa de decisions en funci坦 duna combinaci坦 de sensors.<br /><br />En aquesta quarta unitat didctica sabordaran programes una mica m辿s complexes amb combinaci坦 de sensors, bucles i bifurcacions, que permeten que el robot prengui decisions m辿s complexes i realitzi tasques diferents segons es compleixen les diferents condicions. Per poder realitzar aquestes tasques m辿s complexes, sestudiaran els conceptes de l嘆gica i la seva aplicaci坦 en el control del flux dun programa, estudiarem els diferents operadors l嘆gics i les operacions que es poden realitzar amb ells, i veurem com es poden combinar diferents portes l嘆giques en cascada, etc. Finalment, farem 炭s de la capacitat dels blocs en passar-se informaci坦 o valors els uns als altres i construirem el primer rastrejador.<br /><br />Una mica de teoria<br /><br />Tal com hem vist en la unitat didctica 3 anterior, un bucle i una bifurcaci坦 es poden associar als sensors per tal dinterrompre o bifurcar un programa, respectivament. Per嘆, un control que d坦na una gran pot竪ncia al sistema 辿s la possibilitat dassociar-los a un control l嘆gic. s a dir, per exemple, el bucle pot seguir repetint-se o pot finalitzar en funci坦 de si rep el valor veritat o fals per part dun altre bloc. De la mateixa manera, una bifurcaci坦 o una altra poden executar-se segons el valor l嘆gic que reben. Al llarg del curs veurem la gran utilitat daquesta possibilitat.<br /><br />Per tal de poder tenir la interacci坦 necessria, els blocs poden passar-se valors els uns als altres, la qual cosa permet interaccions m辿s complexes i interessants al llarg dun programa. Els blocs emmagatzemen les dades en el Data Hub o concentrador de dades, i la forma en que es passen valors 辿s mitjan巽ant els Data Wires o cables de dades. Els cables de dades tenen colors diferents segons el tipus de dades que es transporten. Per exemple, els que transporten dades num竪riques s坦n grocs, els l嘆gics verds, i els de text taronges. Si un cable de dades es trenca, aleshores apareix en color gris, i cal corregir el problema. Finalment, el concentrador de dades dun bloc t辿 connexions de cables dentrada de dades per davant o a lesquerra i connexions de cables de sortida de dades per darrera o a la dreta. Lajut dusuari explica en detall el funcionament del concentrador de dades i dels seus cables, com afegir-los o esborrar-los, etc.<br /><br />Ara podem repetir els exercicis anteriors, utilitzant el mateix bucle, per嘆 amb control l嘆gic en comptes dassociar-lo a un sensor. Per aix嘆 hem dafegir un bloc amb el sensor de llum dins el bucle i connectar la sortida l嘆gica (s鱈 o no) del sensor a lentrada l嘆gica del bucle, mitjan巽ant un cable de dades.<br /><br />Suggeriment: De vegades el Data Hub o concentrador de dades no sobre del tot al afegir un bloc a la biga de seq端竪ncia. Tal com es mostra a continuaci坦, aquest 辿s el cas de lexemple anterior, on al afegir el sensor de llum, el concentrador de dades mostra nom辿s latribut dintensitat i per a realitzar lexercici volem connectar el valor l嘆gic de sortida al dentrada del bucle. Per obrir totalment el concentrador de dades, cal fer clic a la part inferior del bloc (aquest proc辿s sexplica en detall en lajut del programari). Un cop el concentrador de dades est totalment obert, podem triar latribut amb el valor que volem connectar. Finalment, per optimitzar la visualitzaci坦 del bloc amb nom辿s els connectors utilitzats, i fer que el bloc no ocupi tant despai, un cop hem realitzat les connexions de cables de dades desitjades, podem tornar a fer clic a la part inferior del bloc per tal de col揃lapsar el concentrador de dades a la seva m鱈nima expressi坦.<br /><br />Primer pas, inserci坦 del bloc al lloc correcte:<br /><br />Segon pas, expandir el concentrador de dades del bloc i connectar adequadament<br />lentrada i la sortida de dades de cada bloc amb el cable de dades:<br /><br />Tercer i 炭ltim pas, col揃lapsar el concentrador de dades<br />per ocupar menys espai i facilitar la lectura:<br />que 辿s equivalent a<br /><br />El gran avantatge del bucle amb control l嘆gic 辿s que, per exemple, podem controlar la sortida del bucle en funci坦 de varis sensors alhora. Per exemple, podem fer que el robot pari si arriba a la l鱈nia negra o si abans el sensor de contacte detecta un obstacle al xocar contra ell. Per aix嘆 ens hem de basar en la l嘆gica.<br /><br />Una mica de teoria<br /><br />Suposem que tenim els dos sensors anteriors (llum i contacte) que ens indiquen veritat o fals segons si sactiven o no respectivament. Si aix嘆 辿s aix鱈, el robot haur de sortir del bucle i parar quan el un dels dos sensors sactivi i passi el valor veritat al bucle. Per realitzar aquesta operaci坦 comptem amb el bloc Logic. El concentrador de dades del bloc l嘆gic t辿 dues entrades, A i B, que poden tenir els valors veritat (True o T) o fals (False o F), i tres sortides, els mateixos valors de A i B, i el resultat de loperaci坦 l嘆gica entre A i B. Els operadors l嘆gics poden ser And, Or, XOr o Not. En el nostre cas hem de tornar el valor veritat si un, laltre o tots dos sensors tornen veritat, sin坦 hem de tornar fals. Per tant, loperaci坦 l嘆gica que hem defectuar amb els valors dels dos sensors 辿s un Or. La taula de valors l嘆gics de loperador Or 辿s la seg端ent:<br /><br />T Or T = T<br />T Or F = T<br />F Or T = T<br />F Or F = F<br /><br />Podem comprovar que loperador l嘆gic Or tornar el valor fals nom辿s quan els dos sensors tornin fals, altrament tornar el valor veritat.<br /><br />s tamb辿 interessant confeccionar la taula de valors l嘆gics de la resta doperadors, per altres exercicis posteriors:<br /><br />T And T = TT And F = FF And T = FF And F = FT XOr T = FT XOr F = TF XOr T = TF XOr F = FNot T = FNot F = T(Loperador Not saplica nom辿s a un sol valor)<br /><br />Contrriament a loperador Or, podem veure que loperador And torna veritat nom辿s quan els dos valors s坦n veritat. Per tant, podem dir que:<br />A And B = Not (A Or B)<br />Loperador XOr torna veritat quan els dos valors s坦n diferents i fals quan s坦n iguals.<br /><br />Exercici 9: El bloc Loop o bucle amb control l嘆gic: despla巽aments repetitius endavant i/o enrere per tornar al lloc dorigen utilitzant varis sensors alhora i el bloc Motor o Move amb durada il揃limitada.<br /><br />Crear un nou programa, per exemple ex9.rbt. Deixarem que els alumnes intentin resoldre el seg端ent repte sols. El robot ha danar endavant i parar quan topi amb un obstacle o arribi a la l鱈nia negra. Caldr utilitzar un bloc l嘆gic per combinar el resultat dels dos sensors mitjan巽ant loperador Or. Qu竪 passa si utilitzem un And en comptes dun Or?<br /><br /><br />Donat que el bloc l嘆gic nom辿s t辿 dues entrades, com podem fer que el robot tingui en compte m辿s de dos sensors alhora? Deixar que els alumnes esbrinin com fer que el robot pari en funci坦 de si un dels quatre sensors sactiva. La soluci坦 辿s combinar el resultat de dos blocs l嘆gics amb un tercer bloc.<br /><br /><br />Exercici 10: Combinaci坦 dels blocs bifurcaci坦 i bucle amb control l嘆gic: despla巽aments repetitius endavant i/o enrere utilitzant varis sensors alhora i el bloc Motor o Move amb durada il揃limitada.<br /><br />Crear un nou programa, per exemple ex10.rbt. Com podem fer que el robot, per sempre, vagi endavant fins arribar a una l鱈nia negra i giri sobre el seu eix i torni enrere, fins trobar la l鱈nia negra de sortida? A m辿s, com podem aturar tot el proc辿s si el robot xoca amb un obstacle? La soluci坦 辿s posar una bifurcaci坦 dins dun bucle.<br /><br /><br />Finalment, ja tenim els coneixements necessaris per poder realitzar un primer rastrejador. Aquesta 辿s una altra ocasi坦 per tal de fer pensar als alumnes de forma discursiva, i fer-los trobar vries solucions. Utilitzarem nom辿s un sensor de llum, per嘆 podem tamb辿 comparar les possibles solucions amb dos sensors de llum.<br /><br />Un rastrejador 辿s un robot que segueix una l鱈nia. Si el rastrejador t辿 un sensor, aleshores aquest, pot seguir un costat o laltre de la l鱈nia, donat que la l鱈nia t辿 un gruix. Per exemple, si la l鱈nia 辿s negra sobre un fondo blanc i decidim seguir la l鱈nia per la dreta, aleshores, si el sensor detecta blanc haur de girar cap a lesquerra i si detecta negre cap a la dreta. Aquest algoritme senzill demostra com la combinaci坦 de petits moviments locals, aparentment sense sentit (girs a dreta i a esquerra), impliquen un moviment global amb un sentit molt especial, que en aquest cas 辿s seguir o rastrejar una l鱈nia.<br /><br /><br /><br />Si tenim varis robots rastrejant, aleshores, per evitar col揃lisions, podem controlar la sortida del bucle mitjan巽ant el sensor de contacte, per exemple.<br /><br /><br />Una altra alternativa de rastreig 辿s fer que una roda giri a una velocitat fixa (per exemple el motor B) i reduir o accelerar la roda oposada del robot (per exemple el motor C) segons hagi de girar cap a un costat o cap a laltre. s interessant construir aquests dos rastrejadors i comparar el seu funcionament. El primer 辿s m辿s lent que el segon, per嘆 si les corbes s坦n tancades, aleshores 辿s m辿s prec鱈s i funciona millor (no perd la l鱈nia).<br /><br /><br />Exercici incremental 5: Arribar al final de la gbia utilitzant nom辿s el sensor de llum associat al bloc bucle, per嘆 rastrejant les l鱈nies negres.<br /><br />Per realitzar aquest exercici, en comptes de copiar i modificar lexercici incremental 4 anterior, demanar als alumnes que el construeixin per parts i observin amb atenci坦 com es comporta el rastrejador. De seguida sen adonaran que com el robot pot rastrejar les l鱈nies per la dreta o per lesquerra, en lexemple que tenim, donat que el robot surt per la dreta del tauler i el primer gir 辿s cap a lesquerra, la soluci坦 m辿s eficient 辿s rastrejar per lesquerra. Aix鱈, el robot far el primer gir cap a lesquerra tot seguint la l鱈nia negra interm竪dia que interseca les l鱈nies l鱈mits del tauler. Amb aquesta estrat竪gia, el programa podr ser molt m辿s compacte, com es podr comprovar.<br /><br /><br />En primer lloc, podem observar que el rastrejador es va repetint en els llocs on el robot ha de seguir els l鱈mits del tauler o les l鱈nies interm竪dies, i 辿s id竪ntic, excepte pel que fa el temps de rastreig (control del bucle), que dep竪n de la longitud de cada l鱈nia fins arribar a una intersecci坦 que ha de sobrepassar.<br /><br />Per una altra banda, podem veure que entre el primer bucle rastrejador i el segon, sinsereix un petit gir sobre eix que t辿 la missi坦 dadre巽ar el robot per sobrepassar la primera l鱈nia interm竪dia del tauler. Aix嘆 mateix succeeix al final del segon bucle, per sobrepassar el final de la l鱈nia interm竪dia del tauler. A partir daquest punt, el robot segueix rastrejant fins el final del recorregut sense cap problema fent el gir a la dreta i arribant al final del recorregut. El robot no tindr cap problema per sobrepassar la l鱈nia negra interm竪dia vertical final, donat que rastreja per lesquerra i no hi ha cap interrupci坦 de la mateixa, en aquest costat, donat que estem al l鱈mit del tauler.<br /><br />Pot ser interessant comparar les diferents alternatives de cada grup dalumnes, rastrejant per la dreta o per lesquerra, i fins i tot intentant canviar el costat o el sistema de rastreig.<br /><br />Una altra alternativa molt interessant 辿s rastrejar segons el sensor de rotacions intern dun motor. Al rastrejar, el robot va fent petits moviments a dreta i esquerra, per嘆 quan aquest troba una intersecci坦, aleshores, per tal de seguir el gir de la l鱈nia, una de les rodes fa m辿s rotacions que al seguir la l鱈nia recta, mentre laltra roman parada. Per tal de controlar el moviment global del robot, podem detectar quan es produeixen aquest increment de rotacions de la roda adequada.<br /><br />Per controlar els graus de gir o el n炭mero de rotacions dun motor, el panell de control del bloc del sensor de rotacions intern facilita lopci坦 de comparar les rotacions amb un valor espec鱈fic. Si les rotacions s坦n superiors o inferiors al valor dactivaci坦, aleshores latribut o connexi坦 s鱈/no del concentrador de dades retornar el valor veritat, que podrem connectar a la presa l嘆gica del bucle, mitjan巽ant un cable de dades, per aix鱈 aturar el rastrejador. Per tal de connectar el bloc que est dins duna bifurcaci坦 al connector l嘆gic del bucle, que cont辿 la bifurcaci坦, cal utilitzar la vista plana o Flat View de la bifurcaci坦. Despr辿s de fer algunes proves, podrem comprovar que el valor de 60 graus permet trobar el moment on el robot arriba als punts de gir.<br /><br />Suggeriment: Les bifurcacions o Switch es poden visualitzar amb la biga de seq端竪ncia desdoblada o amb una vista plana o Flat View. Si una bifurcaci坦 est associada a un sensor, aleshores t辿 dos valors, per嘆 m辿s endavant, veurem que una bifurcaci坦 pot tenir varis valors i aleshores, aquests nom辿s es poden visualitzar mitjan巽ant la vista plana. Es pot accedir a cada opci坦 fent clic al Tab o fitxa adequada. Finalment, per tal de connectar un atribut l嘆gic dun bloc, que estigui dins duna bifurcaci坦, al connector l嘆gic dun bucle que contingui la bifurcaci坦, tamb辿 cal utilitzar la vista plana o Flat View de la bifurcaci坦.<br /><br />Panell de control del sensor de rotacions del port B<br /><br />Cal observar, que el sensor de rotacions sha de reiniciar despr辿s de llegir les rotacions de la roda supervisada, per a cada cicle de rastreig. Per comptar les rotacions, el sensor de rotacions sha dubicar tot just despr辿s de parar el motor supervisat i abans de comen巽ar les rotacions del motor oposat.<br /><br /><br /><br />Per aquesta alternativa, a nivell global, lexercici incremental necessita un rastrejador cada cop que hi ha un canvi de direcci坦 o una intersecci坦 de l鱈nia. Per tal de sobrepassar els punts de canvi de direcci坦 nom辿s cal, o b辿 executar algunes rotacions de la roda adequada per girar el robot i comen巽ar un nou rastreig, o b辿 seguir recte, per sobrepassar la intersecci坦. Tamb辿 cal observar que, en funci坦 del sentit de gir del robot, unes vegades cal supervisar la roda dreta i unes altres lesquerra.<br /><br /><br />Quines avantatges comporta la utilitzaci坦 del sensor de rotacions en comptes del sensor de llum, per realitzar lexercici? Si b辿 amb el sensor de rotacions el codi 辿s menys compacte, el gran avantatge daquesta soluci坦 辿s que fins i tot funciona si modifiquem la mida del tauler. Per tant, aquesta soluci坦 辿s m辿s gen竪rica que lanterior.<br /><br />Coneixements adquirits: En la unitat didctica 3 anterior hem vist com el bloc bucle permet repetir accions i si sassocia a un sensor, podem controlar lexecuci坦 del seu contingut fins que aquest sactiva o desactiva. Finalment, en aquesta unitat didctica hem vist que quan el bucle utilitza el control l嘆gic, tenim moltes altres possibilitats de controlar el flux del programa, amb diferents combinacions de sensors, etc. A m辿s, si combinem el bucle amb bifurcacions, tenim un joc de possibilitats infinit, que permet comen巽ar a pensar en el concepte dalgoritme, o conjunt de processos ben definits que permeten realitzar tasques molt concretes i espec鱈fiques, m辿s o menys complexes, com per exemple un rastrejador.<br />Curs d'introducci坦 a LEGO速 Mindstorms NXT by Jos辿 Mar鱈a Fargas Texid坦 is licensed under a Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 Espa単a License.<br />Permissions beyond the scope of this license may be available at www.bogatech.org.<br /><br /><br /><br />