Social Icons

dilluns, 30 de desembre del 2013

Dibuixant

A l'equip1 de cara a la exhibició de Nadal es va proposar fer que el robot pugues realitzar nombres. Després d'una pluja d'idees es va proposar que portes un llapis i que dibuixes el nombre de vegades que havíem pitjat el polsador. Aquest és l'interior d'aquest repte:

El primer aspecte que cal tenir en compte és que sigui capaç de comptar quantes vegades s'ha pitjat el polsador. S'ha establit una variable de manera que cada vegada que es pitjes li sumes +1 i que aquest valor fos el que s'ha de dibuixar. 
La variable té el nom de "rot". Primerament s'observa que se li assigna el valor 0 i dins del bucle es llegirà, se li sumarà 1 i es tornarà a escriure cada vegada que el polsador tingui una senyal

Un inconvenient és quanta estona ha de estar comprovant el nombre de pulsacions. Si només ho comproves un cop com a molt es podria polsar una vegada, i si s'establis un temps determinat o no tindries prou temps per fer per exemple 30pulsacions i si en fessis una s'estaria molta estona a realitzar l'acció. L'opció ha set que el temps a esperar fos 3 segons des de la última pulsació, de manera que és té aquest marge de temps per fer cada pulsació. La manera d'introduir-ho és que amb cada pulsació a part de sumar a la variable es renicii el cronòmetre i hi hagi un bloc que compari si el temps és major de 3.
Cada vegada es renicia el cronòmetre
Sempre es va comprovant si el temps és més gran de 3segons, si ho és es deixa de repetir el bucle amb l'opció interrumpir el bucle. També se li pot assignar una informació visual com és el cas de les llums, quan hagin passat els tres segons es mostraran vermells
El nombre de pulsacions també es pot veure a la pantalla mitjançant un bloc que mostra el nombre associat a la variable.

Si el temps és major s'atura el bucle que estava comprovant el nombre de pulsacions i salta al següent bloc. Ara només cal llegir el valor de la variable i associar-lo amb tots els possibles nombres. Primerament s'ha realitzat de manera més simple amb un so. A la condició existeix un mode numèric on per cada valor que rep realitza una acció diferent. La variable s'introdueix al lector d'aquesta condició.
valor de la variable introduit al interruptor
Ara només cal relacionar cada valor amb el so existent al programa per cada nombre. 

Si el valor és 0 el so que es repruirà sera Zero
Al programa només existeixen els sons del 0 al 9. Per realitzar els nombres més grans de zero primer s'identifiquen amb un >10 i si és verdader es reprodueix primer el nombre 1 i després es resta 10 al valor i al ser un nombre del 0 al 9 ja es pot reproduir exactament com s'ha explicat abans.

A continuació ve la part més artística. S'ha de muntar el robot d'una manera que pugui sostenir un llapis i pugui aixecar i abaixar. Aquest braç va controlat amb el servomotor mitjà i col·loca el llapis en posició perquè ratlli.

    


Per aconseguir que el robot dibuixi un número amb aquesta eina s'ha de baixar la palanca i llavors programar els motors de les rodes perquè al moure's el robot el traç del llapis sigui un nombre. 
A cada nombre que s'hagi pitjat al polsador li correspon la respectiva configuració.

Com a exemple els vídeos del robot dibuixant els números 1, 2, 4 i 9:














dissabte, 28 de desembre del 2013

Solucions 1er torneig

Missió 1: Avançar 792 graus, retrocedir amb rotacions fins la posició incial (2,2voltes), avançar 50 centímetres.

Aquesta missió es basa en utilitzar només blocs de avanç del motor, però configurant-los de diferents maneres.
El primer bloc, tal com diu l'enunciat, ha de ser amb l'opció graus, i s'introdueix el valor de 792.
Per retornar a la posició inicial només caldria tornar a introduir el valor de 792 graus i que la potència fos negativa. Però s'ha d'introduir en rotacions, de manera que s'han de passar els graus a rotacions. Recordar que 1 rotació equival a 360graus. Per tal de no usar cap calculadora i fer-ho directament, s'introdueix un bloc de operacions on divideixi el 792 per 360 i el valor del resultat serà el nombre de voltes que haurà de fer el motor, en aquest cas 2,2.
Per a l'última part no existeix cap bloc específic que et permeti introduir una distància, ja que aquesta variarà segons el radi de les rodes. A les classes s'havia explicat com fer-ho, dividint la distància a recòrrer per la que recorreia un gir de la roda (la distància de l'arc de la roda). S'explica també a aquesta entrada. De la mateixa manera que la part anterior, també es pot utilitzar un bloc d'operacions perquè et realitzi la divisió automàticament. El resultat són rotacions del motor per tant s'han d'introduir a un bloc d'avanç en l'opció de rotacions del motor.



Resultat final:

Missió 2: Girar sobre la roda dreta (360 graus son 340 al programa), que avançi 1500º del motor, torni a girar, ara sobre la roda esquerra, 360º, i finalment que retrocedeixi fins la posició inicial amb la funció voltes.

La base d'aquesta missió és la utilització del girosensor. Existeixen dos maneres de utilitzar-lo, en forma de condició o amb un bloc esperar. El girosensor és el que et permet controlar el gir que fa el robot sobre si, en aquest cas una volta completa sobre la roda dreta.
És més util utilitzar el bloc esperar perquè el programa manté el motor obert (en aquest cas només el de la roda esquerra, i la dreta quieta perquè giri sobre aquesta) i s'espera a continuar fins que el girosensor no incrementa un valor de 360º. Un cop ja ha girat la volta ha de parar de girar, per tant aturar el motor esquerre. El mode que s'ha d'utilitzar no és ni amb rotacions ni graus, simplement mode encés i després mode apagat.

Un cop ha girat i la roda esquerra ha parat de girar s'ha de introduir un bloc avaç dels dos motors amb el mode graus.

A continuació es repeteix el mateix que el primer apartat, lúnic que s'ha de programar pel motor dret en comptes del dret.

El robot haurà de retrocedir per arribar a la posició inicial. Per tant s'introdueix la potència amb un valor negatiu, i tal com diu l'enunciat es col·loca en mode rotacions. El procediment a realitzar per passar els 1500º a rotacions és l'explicat a la missió 1, dividint-ho per 360.


 Resultat final:


Utilitzant condicions quedaria de la següent manera:

Missió 3: Avançar, quan estigui a 50 cm faci un so, quan arribi a 30 es pari el so i el robot.

Aquesta missió tot i semblar molt complicada es basava simplement a entendre l'eunuciat i a saber-lo transcriure al llenguatge programació.

Perquè el robot vagi avançant cal col·locar al principi un bloc de avanç del motor en mode engegat.

Per tal que reprodueixi un so a una distància de 50cm es pot fer mitjançant el bloc esperar o una condició, és però més simple la primera opció. Un cop hagi esperat a que la distància sigui més petita que 50cm (<50) s'ha de col·locar un bloc de so, que reprodueixi indefinidament.
                                             
Llavors s'ha de utilitzar un altre bloc d'esperar, que en aquest cas s'esperarà a que la distància sigui més petita de 30cm (<30) i a continuació aturarà so i motors, o simplement tot el programa. Per aturar el programa s'utilitza aquest bloc:




El programa és pot introduir de manera que estigui esperant a que sigui més petit de 50cm al mateix temps que espera que sigui més petit de 30cm. (Es connecta l'interruptor d'inici a els dos apartats) 
 
O bé es col·loca una part radera l'altra, si més no, perquè sigui més petit de 30cm ha d'haver set anteriorment més petit de 50cm.

Utilitzant condicions s'han de col·locar una dins de l'altra, ja que perquè quan és més petit de 30 és verdader que és més petit de 50. En aquest cas en comptes de col·locar un bloc d'aturar el programa, que no encaixa dins del bucle, és col·loca una interrupció del bucle, que deixa de repetir-se. Despés del bucle no hi ha res més i per tant el programa ja s'hatura.





dimecres, 25 de desembre del 2013

Missions 3r torneig


1- Avançar 1500 graus (lent), emetre un so , retrocedir amb rotacions fins la posició inicial (lent), emetre un so, avançar 90 centímetres (normal)  i girar sobre la roda dreta 3 segons (ràpid).




2- Avançar 1200º, girar  180º(165 al programa) sobre la roda dreta , que torni fins la posició inicial amb la funció voltes.
Finalment giri 360º(345 al programa) sobre la roda esquerra.





3- Des d’una posició inicial de 10cm de la paret, que el robot retrocedeixi i quan estigui a una distància de 50cm de la mateixa paret doni mitja volta (180º són 165 al programa) i després emeti un so.





4- S’ha de detectar les quatre parets del taulell: apropar-s’hi a una distància de aprox 30cm de cada paret i emetre un so. (Optatiu, que els sons siguin one, two, three i four.)




5- Avançar, quan estigui a 60 cm faci un so, quan arribi a 25 es pari el so i el robot.Quan es pari tot, que faci un so diferent i s’il·luminin les tecles del robot de color vermell.

Missions 2n torneig


1- Avançar 1584 graus (ràpid), retrocedir amb rotacions fins la posició inicial (lent), avançar 75 centímetres (normal)  i girar sobre una roda 5 segons (ràpid).



Total 10 punts



2- Avançar 1440º del motor, girar  180º(165 al programa) sobre la roda dreta , que torni fins la posició inicial amb la funció voltes.
Finalment giri 180º(165 al programa) sobre la roda esquerra.

Total 14 punts



3- Des d’una posició inicial de 10cm de la paret, que el robot retrocedeixi i quan estigui a una distància de 50cm de la mateixa paret (US OBIGATORI DEL SENSOR ULTRASONIC) doni mitja volta (180º són 165 al programa) i després emeti un so.

Total 18 punts


Missions 1er torneig


1- Avançar 792 graus, retrocedir amb rotacions fins la posició incial (2,2voltes), avançar 50 centímetres.

Total 10 punts



2- Girar sobre la roda dreta (360 graus son 340 al programa), que avançi 1500º del motor, torni a girar, ara sobre la roda esquerra, 360º, i finalment que retrocedeixi fins la posició inicial amb la funció voltes.

Total 14 punts



3- Avançar, quan estigui a 50 cm faci un so, quan arribi a 30 es pari el so i el robot.

Total 18 punts

dilluns, 16 de desembre del 2013

NORMES GENERALS DEL TORNEIG

  • El torneig començarà exactament a les 11:00h, moment en que es faran públiques les missions. Per tant és recomanable que els ordenadors ja estiguin preparats amb el programa obert. El temps per realitzar les missions serà de 15min, acabants-se a les 11:15h.
  • Les missions s’han de fer des de tres ordenadors dels participants, que hauran de penjar al moodle avanç de que s’acabi el termini. 
  • La missió s’ha de penjar amb el nom P-(número de la tasca)-(número de grup). Exemple: P1-1 (missió 1 del grup 1).
  • Es revisarà el temps d’entrega al moodle i es descomptarà 1 punt per 2min de retard i 2punts per 5min de retard.
  • Si es sobrepassa el temps 10min s’anul·larà la prova.
  • Les missions s’introduiran a uns ordenadors especials per transferir directament al robot. 
  • Un cop tothom hagi acabat és farà la comprovació de les missions conjuntament i s’apuntarà la puntuació pel jurat. Es realitzaran les missions seguides per ordre. 
  • Haurà de vigilar cadascú a un equip que no sigui el seu.

dilluns, 18 de novembre del 2013

Distància "X"

El programa LEGO no ens ofereix la possibilitat de controlar la distància recorreguda en centímetres, solament es pot fer per rotacions o per segons.
Si volem recorrer una distància determinada la manera més eficaç és calcular el nombre de voltes que s'han de fer:

D'aquesta manera trobem la longitud del períetre de la roda, o dit d'una altra manera, la distància que recorre al donar una rotació completa. Llavors per trobar el nombre de voltes que ha de fer només cal dividir la distància entre la distància que recorre amb una volta.

A l'hora de realitzar les operacions amb el programa es realitza de la següent manera:
En aquest cas la distància que es vol recòrrer són 10cm, introduïts al bloc d'operacions, una divisió per 17 tal com s'ha explicat anteriorment, i el valor resultant es el nombre que determina les rotacions. D'aquesta manera es calculen les rotacions directament. 



dilluns, 4 de novembre del 2013

Motor gran: avançar i retrocedir


Començarem amb un dels actuadors més utilitzats, el motor gran, normalment utilitzat per moure l'estructura del robot. Aquest motor ens permetrà moure objectes grans però no podrà anar molt ràpid.
El bloc que veiem més amunt té una sèrie d'opcions com ara el port (1), el mode (2), i les diferents entrades (3).

Port

Podem seleccionar en quin port tenim el motor gran que volem que realitzi l'acció. (A, B, C o D)

Mode

Disposem de 5 modes diferents que detallarem a continuació:

Apagat

Aquest mode ens permet apagar un motor encès previament

Encès

Aquest mode encén el motor i no s'atura fins que un altre bloc li mana o s'acaba el programa 

Encès per segons

Amb aquesta opció el motor s'engega durant un període de temps determinat en segons que pot ser decimal

Encès per grau

Amb aquesta opció el motor s'engega fins realitzar una rotació especifica amb graus. 

Encès per rotacions

Amb aquesta opció el motor s'engega fins realitzar una rotació especifica amb voltes. 

Entrades


Tenim 3 tipus d'entrades d'esquerra a dreta:

La potència: Afectarà a la velocitat de motor o la quantitat de pes que podrà moure i tindrà un valor de -100 a 100. Segons la direcció en que vulguem fer moure el motor, el valor serà positiu o negatiu. 
Valor: Quantitat de moviment, depenen del mode seran segons, graus o voltes. En el cas dels segons no podran ser negatius. 

Parar al final: En aquesta entrada tenim 2 opcions. La primera, verdader, ens permetrà parar el motor immediatament el valor del bloc s'acabi. L'altra opció, fals, el robot deixarà de donar potencia al motor però aquest es podrà continuar movent pel seu propi impuls.

Avançar i retrocedir

Per avançar i retrocedir en el nostre robot, el qual té 2 rodes, podríem utilitzar un bloc de motor gran per cada una de les rodes. Però el nostre software ens facilita la feina i té un altre bloc que ens permet fer actuar els 2 motors alhora.


Els modes i entrades d'aquest bloc són els mateixos que l'anterior i podem realitzar les mateixes funcions. 
Per tant si el volem fer avançar donarem valor 0 a la direcció i una potencia i angle positiu, i si el volem fer retrocedir també donarem valor 0 a la direcció però la potencia haurà de ser negativa.

EXEMPLE

Aquest programa fa avançar al robot 2 segons i que retrocedeixi 2 segons aturant-se al final.
Clica per descarregar 

MISSIÓ 1.1

Per acabar amb l'explicació us proposem aquest petit repte que s'ha de dur a terme mitjançant l'últim tipus de bloc que us hem ensenyat.

Hem de fer avançar el robot 1000º amb una velocitat baixa llavors hem de fer retrocedir-lo fins la posició inicial utilitzant l'opció rotació(voltes) i finalment hem de fer-lo avançar durant  2 segons a una velocitat rapida i s'aturi.





Motor gran: gir amb un únic motor

Amb aquest bloc podem encendre i apagar un motor mentre que l'altre romà quiet.

Selector de port

Et permet saber la entrada al bloc EV3 en que està col·locat aquest motor podent triar quin dels motors connectats fer servir.

Selector de mode 

Diferents formes de controlar el motor:

 - Encès/apagat: 

activa el motor a una certa potència i no s'atura fins que un altre factor activa un bloc per apagar el motor.

 - Per segons: activa el motor una certa quantitat de segons, que cal especificar en la respectiva entrada, i després s'atura. També cal especificar la potència a la que treballa i la forma com s'atura.

 - Per graus: activa el motor un cert nombre de graus, que cal especificar en la respectiva entrada, i després s'atura. També cal especificar la potència a la que treballa i la forma com s'atura.

 - Per voltes: té la mateixa funció del encès per segons, ja que 360 graus és una volta. El seu ús és degut a que és més fàcil de manipular. El motor està activat un nombre de voltes fins que s'atura. També cal especificar la potència a la que treballa i la forma com s'atura.

3- Entrades: 
 - Potència: és la velocitat en que el motor gira. Si la potència és negativa, el motor gira en sentit contrari.
 - Numero de segons/graus/voltes: és on s'ha d'especificar la distància que ha de recórrer el motor fins que s'hagi d'aturar.
 - Aturar al final: si és cert el motor para en sec, i si és fals el motor continua movent-se per la pròpia inèrcia fins que s'atura.

Missió 1.2.1. →Fer un circuit entre dos pilars. El gir en el pilar de la dreta s'ha de fer per segons i l'altre per voltes. El gir s'ha de fer amb una única roda.





Gir amb un únic motor

Amb aquest bloc podem encendre i apagar un únic motor, mentre que l'altre roman quiet.
1- El selector de port és la entrada del bloc EV3 en que està conectat aquest motor (A-B-C-D).

2- El selector de mode és la forma en que pots fer que aquest motor giri:
 - Encés/apagat: en aquest mode encenem el motor a una potència constant i fins que un altre factor ho desitji, gira fins que un altre bloc en mode apagat apaga el motor.

 - Per segons:

 - Per graus:

 - Per voltes:


3- Entrades on hi han les seguents parts:
 - La potència:
 - Numero de voltes/graus/segons:
 - Per graus:
 - Per voltes:
 - Detenir al final: si aquesta entrada és certa, el motor pararà ensec, i si és falsa, el motor avançarà per inércia fins aturar-se.

Moviment tanc



El bloc TANC ens permet moure el robot controlant la potència dels dos motors per separat. D'aquesta manera es pot pivotar sobre una roda, o bé que les dos rodes girin en sentits contràris per tal que el robot giri sobre un eix fix, sense desplaçar-se.


1. Selector de port 

És seleccionen els ports on estan connectats els motors que vols controlar. Els motors són actuadors i per tant sempre hauran d'anar connectats als ports amb lletres (A, B, C o D).


2. Selector de mode

Els motors es poden controlar segons les rotacions o graus de l'eix, encendre els motors i seguir al següent bloc o bé apagar els motors.


Rotacions: Encén els dos motors i s'espera fins que un d'ells hagi realitzat el número de graus establert a la entrada de graus. Llavors, apaga els dos motors. Això pot utilitzar-se per fer que el robot recorri una distància concreta o dongui una quantitat específica de girs. 

Graus: És el mateix sistema que les rotacions, però utilitza una unitat diferent, on 360 graus de rotació equivalen a un gir complet del motor.

RotacionsGraus
1360
2720
0.5180
1.25450
7.22592
Segons: Encén els dos motors durant un temps establert a l'entrada temps.

Encés: engega els motors i continua amb el següent bloc. Els motors va funcionant fins que no es configura algun bloc perquè s'aturin.

Apagat: Apaga els dos motors.

3. Entrades

Segons el mode que utilitzem tindrem diferents tipus de valors a especificar.

Potència: En tots els modes menys en l'apagar s'ha d'especificar. Es pot introduir qualsevol valor d'entre -100 a 100, on els positius (1) és en el sentit de les agulles del rellotge, els negatius (2) és en sentit antihorari i el 0 significa aturat. A més potència més velocitat i més consum de bateria. 
Aquest bloc ens dona l'opció de configurar les dos potències per separat, així doncs podem fer que el robot giri amb una curva (si una potència és superior a l'altra), o bé que giri sobre si mateix (si les dos velocitats són iguals i de signe oposat).
A continuació hi ha exemples respectivament:

Aturar al final: S'ha d'introduir un valor lògic (verdader/fals). Si és verdader els motors s'aturen al instant i mantenen la seva posició. Si és fals, detenen la potència dels motors però aquests mentenenen la sev inèrcia.


Missió 1.2.2

En una superfície semblant a la del dibuix a continuació, donar una volta completa (360º) sense que el robot trepitji el contorn negre de la circumferència.

Missió 1.2.3

En la mateixa figura de la missió 1.2.2, començant amb el robot encarat amb la direcció que indica la fletxa, sortir de la circumferència sense trepitjar la línea (per la part de l'opertura), donar una volta completa a la circumferència, per l'exterior, i aturar-se al punt vermell.




dimecres, 30 d’octubre del 2013

Mala notícia

Avui s'ha confirmat la mala notícia que ens temíem. Per motius legals no tenim el permís per poder assistir per la tarda a l'institut per practicar amb els robots amb els nostres grups de treball.
Aquesta impossibilitat de poder venir per la tarda no és compatible amb poder participar al torneig First Lego League, ja que no tindríem ni el temps ni els coneixements suficients per encarar aquest torneig satisfactòriament.
Però això no és del tot dolent. Amb el nostre tutor del treball hem decidit crear nosaltres mateixos un seguit de proves per examinar els nostres alumnes en el propi centre i que comencin a adquirir coneixements d'aquest món de la robòtica.
La setmana entrant, començarem a les hores del pati a ensenyar els coneixements bàsics i a partir d'allí anar augmentant tan els seus coneixements com els nostres per poder arribar a aconseguir un nivell elevat en aquest tema.
Una llàstima no poder assistir a la tarda però ara ens hem de posar a inventar proves per preparar-nos per una propera edició d'aquest mateix torneig o algun de semblant.



dijous, 17 d’octubre del 2013

Trobada 17 octubre

Ja havíem decidit participar Lego, ara després d'estar buscant hem trobat que cada any surt un repte de la First Lego League, l'únic que només hi poden participar nois d'entre 10 i 16 anys. Així que des del departament de tecnologia es va fer una crida a alumnes interessats a endinsar-se en el món de la robòtica i participar, més endevant, a aquesta competició. El nostre paper llavors serà ensenyar-los-hi els nostres coneixements actuals i dirigint el projecte, sent els seus entrenadors.

Hem fet una reunió amb els alumnes de la ESO interessats i hem quedat sorpressos de la implicació de l'alumnat, som un total de 15 nois i 6 noies entre 2n, 3r i 4t de la Eso. La qual cosa suposa una gran varietat entre edats i gènere, totalment favorable.

Els tres entrenadors ens hem repartit en 3 grups hetereogenis els quals ens desenvoluparem per separat per portar a terme progressos diferents, que més tard posarem en comú. L'objectiu actual és aprendre a programar el robot perquè realitzi les diferents missions de la competició i entrenar-nos en el taulell de joc oficial que s'està construint, i alhora anar pensant en el projecte sobre el tema Nature's Fury (vegeu aquesta entrada del nostre blog). El millor projecte d'entre els tres grups serà l'escollit per participar en el concurs.