Seguidor de línies virtual amb Scratch
Contents
Introducció
Un seguidor de línies és un rastrejador que té com a objectiu, com el seu nom indica, seguir una línia d’un color més fosc pintada sobre un fons d’un color més clar. El rastrejador funciona mitjançant sensors. En funció de la complexitat del recorregut, són necessaris més o menys sensors. Distingim entre seguidors de línies virtuals i reals. En l’exemple que durem a terme, treballem un seguidor de línies virtual.
Els sensors
Els sensors són els encarregats de fer el treball de detecció, en aquest cas de la línia, mitjançant la informació que interpreten de les instruccions que els hi indiquem.
Seguidor de línies virtual amb Scratch
El present exercici es presenta mitjançant la programació amb Scratch. El mateix programa es pot realitzar amb Snap! per observar les diferències i aprendre així a realitzar el mateix procés amb eines diferents. Es pot trobar a Seguidor de línies virtual
L’exemple que seguirem el podem en en aquest enllaç.
Elements del programa
Disseny del fons
Dibuixem un circuit que determina la línia a seguir. Ens dirigim a la pestanya Fons i premem el pinzell d’edició. Dibuixem un circuit tancat que contingui corbes i pintem el fons d’un altre color.
Disseny de l’objecte
Dibuixem l’objecte amb l’editor gràfic. Simulem un cotxe i remarquem amb diferents colors les parts del cotxe que faran la funció de sensors (en aquest cas treballem amb 3 sensors).
Moviment del cotxe
En primer lloc és necessari programar el cotxe perquè es mogui amb les següents línies de codi:
Reconducció del moviment
Fins aquí hem aconseguit que el cotxe es mogui mentre el sensor turquesa es troba sobre la línia negre, però quant aquest arriba a una corba i el sensor turquesa deixi de detectar el color negre observem que s’atura. Així que modifiquem el programa, tot incloent dos condicionals nous que fan referència als dos sensors restants, perquè això no passi.
Aconseguim que el cotxe es mantingui seguint la línia durant tot el trajecte, No obstant, tenim un altre repte a resoldre, aconseguir que quant el cotxe es trobi fora del recorregut, aquest retornant a ell. Per fer-ho creem un nou bloc anomenat "retorna" i li indiquem la següent línia de codi;
D'aquesta forma el cotxe es mantindrà en moviment fins a retorbar la línia negra.
Fem ús d’un nou condicional que indiqui que quant el color turquesa NO estigui sobre negre, llavors s’executin les condicions que hem encomanat al bloc perquè es mogui fins trobar-la.
Finalment l’àrea de treball ens ha de quedar amb la següent programació definida;
Tancament del joc
A més, podem fer més atractiu el joc tot afegint més pantalles amb diferents circuits. Observem l’exemple dels diferents dibuixos i també de la programació per tal que canvi d’un fons a un altre.
Comparació amb Snap!...
Repliquem el seguidor de línies amb Snap!
Snap!, com s'ha vist a l'activitat de dibuixar una nòria, permet unir objectes. Una aplicació pràctica directa és la versió que es pot fer per a programar el robot seguilínies, usant tres objectes (encara que visualment sempli un) que es comuniquen entre ells en comptes d'un. El codi resultant utilitzant menys línies de codi.
Tenim la opció d’importar el projecte creat amb Scratch a l’Snap! i aconseguir així exactament el mateix programa traduït amb el software d’Snap! a través d'aquest enllaç.
L’exemple que seguirem serà PathFollower que es pot trobar en aquest enllaç
Si observem amb deteniment el projecte es compon del robot "Bot" i 2 sensors "Right Sensor" i "Left Sensor" vinculats al robot. L'exemple aprofita la vinculació d'objectes de l'Snap!. Per veure com es vinculem consulteu la introducció a Snap!.
Aquesta aproximació té molt a veure amb la realitat, un robot té incorporats una sèrie de sensors, que van a sobre d'ell i que són els que saben detectar els paràmetres físics, en aquest cas un canvi de color o un canvi de contrast.
Opció A: Usant el bloc Ask
Un possible codi del projecte seria el següent:
El robot es mou, que és el que sap fer, i va preguntant als sensors si està tocant la linea, que és el que saben fer. Quan el sensor esquerra la toca, el robot gira una mica en aquesta direcció, quan toca el dret fa el contrari. Darrere d’aquesta aparent simplicitat s’amaguen uns quants conceptes interessants:
En primer lloc l’ús dels blocs “Quan” que simplifica molt la realització del programa. Serveixen per definir una resposta provocada per una condició.
L’altre concepte important és elbloc “ask” (pregunta) que mostra la potencia de l’Snap! per definir blocs. Es tracta d’un bloc que té per paràmetre un objecte i que retorna el resultat d’un codi que executarà aquest objecte. Això és possible pel disseny de l’Snap! on els objectes i el codi tenen la mateixa entitat que un nombre o un text i es poden fer servir amb la mateixa facilitat que aquests.
Opció B: Usant el bloc Pregunta
La versió 4.1 de l'Snap! i les posteriors ja disposen d'un bloc que fa la mateixa funció que el bloc "ask" que hem creat abans:
Ho podem provar per veure si funciona:
I ara ja ho podem incorporar en el nostre codi:
Bitbot.cat
Aquest és un article del programa Bitbot.cat, podeu consultar la resta d'articles a:
Bitbot.cat és un programa implusat per la Secretaria de Telecomunicacions, Ciberseguretat i Societat Digital de la Generalitat de Catalunya, en col·laboració amb el Departament d’Ensenyament, que neix amb l’objectiu d’impulsar la millora de les competències digitals del jovent i promoure el creixement de les vocacions tecnològiques.
Una de les accions que es proposa aconseguir és la capacitació de monitores i monitors per a conduir i desenvolupar activitats educatives de lleure en els camps de la robòtica i la programació, per tal d’anar formalitzant aquesta oferta amb monitores i monitors certificats.