Difference between revisions of "Seguidor de línies virtual"
m |
|||
Line 8: | Line 8: | ||
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 ordres que els hi indiquem. | 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 ordres que els hi indiquem. | ||
+ | |||
== '''Descripció del procés''' == | == '''Descripció del procés''' == | ||
− | El present exercici es presenta mitjançant la programació amb | + | El present exercici es presenta mitjançant la programació amb ''Snap!''. El mateix exercici es pot seguir amb Scratch a [[Seguidor_de_línies_virtual_amb_Scratch|Seguidor de línies virtual amb Scratch. ]]També enim 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 del següent [http://djdolphin.github.io/Snapin8r2/ enllaç]. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | [[ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | == '''Seguidor de línies virtual amb Snap''!''''' == | |
− | L’exemple que seguirem serà | + | L’exemple que seguirem serà el Seguidor de línies que es pot trobar en [https://snap.berkeley.edu/snapsource/snap.html#present:Username=edutec&ProjectName=Seguidor%20línies aquest enllaç] |
− | + | [[File:Seguidor1.png]] | |
− | <p style="text-align: justify | + | <p style="text-align: justify">L'aproximació a la realització del seguidor de línies amb <span class="hiddenSpellError" onkeypress="MORFOLOGIK_RULE_CA_ES---#---undefined---#---Possible error ortogràfic---#---Sap#Nap#Anap#Esnap#Nep---#---Snap">Snap</span>! és més semblant a un robot físic que la mateixa versió amb <span class="hiddenSpellError" onkeypress="MORFOLOGIK_RULE_CA_ES---#---undefined---#---Possible error ortogràfic---#---Escreix#Sceaux#Acreix#Sketch---#---Scratch">Scratch</span>. Per fer-ho s'aprofiten dues característiques úniques <span class="hiddenGrammarError" onkeypress="DE_SCHOLA---#---3---#---No s'apostrofa.---#---de ---#---d'">d'</span><span class="hiddenSpellError" onkeypress="MORFOLOGIK_RULE_CA_ES---#---undefined---#---Possible error ortogràfic---#---Sap#Nap#Anap#Esnap#Nep---#---Snap">Snap</span>!, com són la possibilitat de vincular objectes i la comunicació entre ells.</p> <p style="text-align: justify">Si observem amb deteniment el projecte es compon del robot "Robot" i 2 sensors "Sensor Dret" i "Sensor Esquerra" vinculats al robot. Per veure com es vinculem consulteu la introducció a ''Snap!''.</p> <p style="text-align: justify">El 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.</p> |
− | == | + | L'altre caracterisitica és la posibilitat de preguntar a un altre objecte, per exemple poden preguntar si el sensor esta tocant a altre objecte. Per fer-ho es fa servir el bloc "pregunta ... per ..." que es pot trobar a control i que demana un sprite (objecte) i una expressió lambda (una funció a la qual poden cridar).''' '''La icona de ''Snap! ''ve d'aquesta característica i fent una mica de recerca sobre expressió lambda a Internet es pot esbrinar perquè el personatge de l'''Scratch'' es diu Alonzo. |
− | <p style="text-align: justify;">Un possible codi del projecte seria el següent:</p> <p style="text-align: justify | + | <p style="text-align: justify">[[File:Seguidor3.png]]</p> <p style="text-align: justify">Així el següent blocs retornarà veritat o fals depenent si el sensor tocva el camí o no:</p> <p style="text-align: justify"> </p> <p style="text-align: justify"> </p> <p style="text-align: justify">Un possible codi del projecte seria el següent:</p> <p style="text-align: justify">''' [[File:Seguidor2.png]]'''</p> <p style="text-align: justify">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:</p> <p style="text-align: justify">En primer lloc l’ús dels blocs “Quan” que simplifica molt la realització del programa. Serveixen per definir una resposta provocada per una condició.</p> <p style="text-align: justify">L’altre concepte important és el bloc “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.</p> |
− | {| | + | {| style="width: 700px" cellspacing="1" cellpadding="1" border="1" |
|- | |- | ||
− | | <p style="text-align: center | + | | <p style="text-align: center">'''Veiem com està construït el bloc “ask”:'''</p> <p style="text-align: justify">''' [[File:Seg51.png|RTENOTITLE]]'''</p> |
Els paràmetres de "ask" (pregunta a) són un sprite (objecte) i una expressió lambda (una funció a la qual poden cridar). La clau està en poder cridar qualsevol codi d'un altre objecte i es marca escollint la següent opció a la definició del bloc''': '''[[File:Seg52.png|RTENOTITLE]] | Els paràmetres de "ask" (pregunta a) són un sprite (objecte) i una expressió lambda (una funció a la qual poden cridar). La clau està en poder cridar qualsevol codi d'un altre objecte i es marca escollint la següent opció a la definició del bloc''': '''[[File:Seg52.png|RTENOTITLE]] | ||
Line 188: | Line 58: | ||
|} | |} | ||
− | <p style="text-align: justify | + | <p style="text-align: justify"> </p> |
=== Opció 2: === | === Opció 2: === | ||
Revision as of 12:44, 3 December 2018
Contents
Què és un seguidor de línies?
Un seguidor de línies és un rastrejador que té com a objectiu com el mateix nom indica, seguir una línia d’un color més fosc situada sobre un fons d’un color més clar. El rastrejador funciona mitjançant els 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. Aquest exercici permet introduir els conceptes bàsics de robòtica, com són els sensors, la presa de decisions amb un mecanisme de control oi la resposta per modificar el comportament del sistema.
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 ordres que els hi indiquem.
Descripció del procés
El present exercici es presenta mitjançant la programació amb Snap!. El mateix exercici es pot seguir amb Scratch a Seguidor de línies virtual amb Scratch. També enim 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 del següent enllaç.
Seguidor de línies virtual amb Snap!
L’exemple que seguirem serà el Seguidor de línies que es pot trobar en aquest enllaç
L'aproximació a la realització del seguidor de línies amb Snap! és més semblant a un robot físic que la mateixa versió amb Scratch. Per fer-ho s'aprofiten dues característiques úniques d'Snap!, com són la possibilitat de vincular objectes i la comunicació entre ells.
Si observem amb deteniment el projecte es compon del robot "Robot" i 2 sensors "Sensor Dret" i "Sensor Esquerra" vinculats al robot. Per veure com es vinculem consulteu la introducció a Snap!.
El 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.
L'altre caracterisitica és la posibilitat de preguntar a un altre objecte, per exemple poden preguntar si el sensor esta tocant a altre objecte. Per fer-ho es fa servir el bloc "pregunta ... per ..." que es pot trobar a control i que demana un sprite (objecte) i una expressió lambda (una funció a la qual poden cridar). La icona de Snap! ve d'aquesta característica i fent una mica de recerca sobre expressió lambda a Internet es pot esbrinar perquè el personatge de l'Scratch es diu Alonzo.
Així el següent blocs retornarà veritat o fals depenent si el sensor tocva el camí o no:
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 el bloc “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ó 2:
A partir de la versió 4.1 de l'Snap, ja disposem 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: