domingo, 28 de abril de 2013

Competición interna

Propongo la siguiente competición interna.

Teniendo en cuenta el Desafío Seniors Solutions de la First Lego League, vamos a realizar una competición entre los tres  equipos utilizando algunas de las misiones.

Vamos a distribuirlas misiones de la siguiente forma:

EQUIPO 1EQUIPO 2EQUIPO 3
acolchado azul30acolchado naranja60jardinería25
videollamada40cocina25cocina25
flexibilidad40flexibilidad40medicina25
bolos60bolos60bolos60
transiciones65transiciones65transiciones65
max puntos235max puntos250max puntos200
Misiones opcionales
balón balón balón 
madera madera madera 
cardiovascular cardiovascular cardiovascular 
animales animales animales 
Para calcular los puntos de cada equipo en la competición se dividirán los puntos obtenidos entre su máximo.
Las misiones principales se pueden hacer en cualquier orden.
Las misiones opcionales se deben realizar en el orden indicado.
Las misiones opcionales no puntúan si no se completan las misiones principales.


El último día que nos juntemos en Junio realizaremos la competición interna.

Para obtener más información de las misiones y las reglas podéis consultar los siguientes documentos y este vídeo:
http://www.firstlegoleague.es/docs/FLL/FLL_12SS_El_Desafio_Senior_Solutions_120910.pdf
http://www.firstlegoleague.es/docs/Revista_FLL_Senior_Solutions_CAST_WEB.pdf



jueves, 25 de abril de 2013

Horarios

Nuestro horario habitual de reunión es los lunes de 14:30 (finalización de las clases de secundaria) a 16:00. Debido a la hora de la cual se trata aprovecharemos para comer un tentempié al principio de la reunión, mientras hablamos entre nosotros, trazamos la hoja de ruta del día y planeamos como vamos a dividirnos y a trabajar. 
No obstante estamos barajando la posibilidad de poder establecer algún otro día que nos venga bien a todos y nos sea de provecho.

Normas

NORMAS GENERALES
1. Uno de los responsables del equipo debe estar presente en todo momento en la sala de reunión. 
2. No se permitirá a los alumnos permanecer en los pasillos durante el tiempo que duren las sesiones. 
3. Los equipos de trabajo se utilizarán únicamente para actividades del equipo.
4. El comportamiento en la sala de reunión debe ser apropiado y no correr ni jugar en su interior.
5. No se podrá comer en la propia sala de reunión sin autorización.
6. Si no tienes ninguna tarea pendiente entonces pregunta a los coordinadores que debes hacer.
7. Coloca siempre los útiles de trabajo que hayas usado después de haberlos limpiado correctamente.
8. No utilices partes nuevas si no has sido específicamente autorizado a hacerlo.
9. TODOS LOS MIEMBROS DEBEN RESPETARSE. Si tienes un problema con alguien díselo a los coordinadores.
10.Siempre se respetarán las horas de trabajo del equipo. Y se realizará un seguimiento de la asistencia pudiendo ser esta asistencia el referente para viajes, premios o felicitaciones a final de curso. Estas horas de asistencia podrán perderse si el comportamiento es inadecuado.
11.Si el equipo participa en un torneo de competición todos los miembros deberán conocer las normas de este torneo previamente.
12.Se observarán y respetarán todas las secciones aplicables del Reglamento de Régimen Interior del centro.
NORMAS DE SEGURIDAD
1. Utiliza siempre el sentido común y si dudas si algo es seguro o no, no lo realices.
2. Deberán usarse los equipos de seguridad necesarios para aquellas tareas que lo requieran. Estos serán de forma habitual gafas de seguridad y guantes.
3. Herramientas eléctricas:
3.1. No se pueden usar sin permiso.
3.2. No se pueden usar si no te has sido enseñado a usarlas.
4. No se corre en la sala de reunión.
5. No se fuerzan los mecanismos de ajuste más allá de su tope.
6. En las soldaduras se comprobará siempre el estado del material, del soldador y se esperará a que no haya nadie más realizando esta tarea en las proximidades.
7. Siempre que haya que realizar algún corte se utilizará una guía, un tornillo de ajuste y material de protección.
8. Cuando haya robots en operación se establecerá previamente la zona de utilización y se avisará al resto del equipo de la operación que se va a llevar a cabo.
NORMAS PARA LAS COMPETICIONES
1. Todas las normas establecidas por los organizadores del torneo serán seguidas por todos los miembros del equipo.
2. Todos los miembros del Equipo deben ser respetuosos con los miembros de otros equipos.
3. Los miembros del Equipo deberán llevar la misma indumentaria si así lo exige el reglamento del torneo tanto en el lugar de la competición como en las redes sociales o foros en los que participe el equipo. Hay que tener siempre presente que no sólo se representa a uno mismo sino también al equipo, al colegio y a los patrocinadores.
4. Se ayudará al resto de los equipos siempre que sea posible.
5. Se observarán todas las competiciones en las que el equipo participe con respeto y con ánimo de aprender y disfrutar, intentando siempre animar a nuestro equipo sin faltar al respeto del contrario e incluso se podrán valorar positivamente aquellas acciones del contrario dignas de ese elogio.
6. No se abandonará nunca una competición sin el expreso permiso de los coordinadores o responsables del Equipo.
7. Se respetarán todas las normas de seguridad establecidas por los organizadores del torneo.
8. El equipo dejará siempre el área que le ha sido asignada durante el torneo, al menos tan limpia y ordenada, como se la encontró.
9. Todos los miembros del equipo respetarán las disposiciones de los coordinadores sobre salidas, viajes, horarios y alojamiento que puedan requerirse en las acciones del equipo.

Propuesta de colaboración con ordenadores

En el equipo queremos colaborar con las familias que no tienen medios económicos suficientes para hacer frente a la compra de un equipo informático. Nuestra propuesta es que cuando vayas a cambiar tu ordenador (que aún funciona) por uno más moderno y con mejores prestaciones, nos dones tu antiguo ordenador. Nosotros lo formatearemos e instalaremos software libre (no hay que pagar por su utilización) y lo cederemos por un precio simbólico a alguien que no pueda permitirse uno nuevo.

Anímate a colaborar con nosotros

Si te gusta la apuesta por la innovación, por la educación, por las nuevas propuestas puedes colaborar con nosotros. 
Para colaborar puedes ayudarnos con nuestra financiación, con material, con conocimientos que puedes compartir con nosotros, donando ordenadores que nosotros formateamos, instalamos software libre y los cedemos a familias con pocos recursos e hijos en edad escolar…etc. 
Es importante que sepas que puedes hacer esta colaboración de muchas maneras, tanto que te invitamos a proponernos nuevas formas de colaboración, tu nombre y el logotipo de tu empresa serán colocados en un lugar de honor en nuestros medios sociales (no será así, si no lo deseas). 
Trabajamos en la robótica con los alumnos del Colegio pero nuestras actividades no se limitan a trabajar con robots. También estamos interesados en la creatividad, en la solidaridad y en enseñar y compartir los valores que hagan de nuestros alumnos, buenas y honradas PERSONAS.

lunes, 15 de abril de 2013

Nuestras cosillas de equipo

Este apartado será para nuestros temas, el cajón desastre de todo lo que nos pase, se nos ocurra o hagamos y no clasifiquemos en los otros apartados.

Amigos de otros centros

En este espacio tendrán cabida aquellos otros equipos de robótica de otros centros con los que podremos compartir soluciones y estrategias. Y si eres de otro equipo y estás leyendo esto, ¡Bienvenido!

Colaboradores

Espacio para colaboradores, ideas, mensajes, propuestas, posters, vídeos... etc.

Robot

En este apartado vamos a ir contando los avances, problemas y SOLUCIONES que vayamos aprendiendo para el Robot.

Proyecto científico

En este apartado podremos poner los avances en el Proyecto científico

Valores

Pestaña dedicada al trabajo de valores FLL en la que iremos colgando los trabajos y presentaciones que hagamos.

sábado, 6 de abril de 2013

Robot P4


A continuación os presentamos nuestro primer robot de pruebas, que hemos llamado “P4”.
Se llama así porque es la cuarta modificación respecto al robot Tribot que hemos hecho para llegar hasta su diseño. El robot Tribot es el robot oficial que viene en el manual de instrucciones de montaje de Lego Mindstorms®. Vamos a describir el proceso y explicar las modificaciones.
Lo primero que hicimos es sacar de las  bolsas para organizar todos los componentes Lego®. Seguramente sea de las prácticas más importantes, ya que tener bien organizadas las piezas ayuda al proceso de construcción.
Montamos el robot tal como viene en las instrucciones, lo cual es una fenomenal toma de contacto con todas las piezas, así como la primera experiencia de montaje. En mi opinión, en caso de no haber tratado nunca con piezas Lego o con el kit NXT, este debe ser el primer paso ya que te da muchas ideas de cómo poder anclar piezas y cómo montar los motores.


Podemos encontrar en esta URL http://ro-botica.com/img/nxt/pdf/BI_Driving_Base.pdf el proceso de construcción.
    A falta del cableado, así es como quedaría:
Al final del proceso podemos programar directamente en el ladrillo inteligente, sin necesidad de ordenador, instrucciones como la siguiente:
Jugando un poco con esto ya tenemos a nuestra base motora moviéndose por la casa:

A continuación pongo una serie manuales que pueden ser útiles a la hora de comenzar. Principalmente explican los distintos módulos y la programación:
Guía de iniciación rápida en cast. Lego® Education MINDSTORMS NXT (2 MB)
Guía de usuario Lego® Education MINDSTORMS NXT (7,4 MB)
Instrucciones de montaje Lego® MINDSTORMS NXT (Pack educativo)
Base motriz (9,67 MB)
Módulo motor (8,72 MB)
Soporte pelota (3,82 MB)
Módulo lámpara (2 MB)
Módulo sensor de luz "up" (1,5 MB)
Módulo sensor de luz "down" (2 MB)
Módulo sensor de sonido (2 MB)
Módulo sensor de tacto (3 MB)
Módulo sensor ultrasónico (2 MB)
Apéndice (4 MB)

El siguiente paso fue añadir el sensor de luz “down” centrado y mirando hacia el suelo, tal como indican las instrucciones ·”Módulo sensor de luz "down"” con el objetivo de realizar el primer programa para seguir líneas. Como no tenía tapete cogí directamente un folio y le dibujé una línea:

El siguente paso fue añadir el “Módulo motor” de las instrucciones de Lego®, pero lo puse en el lado contrario (en la izquierda) y al otro lado puse el sensor de luz para seguir líneas. He situado el sensor de luz en la izquierda para probar el comportamiento de seguir líneas sencillo teniendo el sensor desviado. El resultado es que no ha afectado en nada, y además podemos dejar la línea a la derecha, como debería pasar en varias misiones del tapete Senior Solutions de este año de la la First Lego® League.
Para comenzar con las pruebas y la programación me hice un tapete con dos cartulinas y una serie de líneas negras con cinta aislante.



El siguiente paso fue ponerme una pequeña misión similar a las que se hacen en la First Lego® League. Me puse como objetivo coger un rollo de cinta aislante con el brazo robótico.
El robot tenía que seguir la línea, y cuando el sensor de ultrasonidos, situado en la parte de la izquierda debajo del motor, tuviera un valor menor que 12 el robot paraba, indicando que tenía la cinta a la izquierda. En ese momento sube el brazo y coger la cinta. Un video más explicativo:

En este caso utilizamos el sensor de ultrasonidos como condición de parada. Es decir, si yo no hubiera puesto un sensor para detectar el rollo de cinta, el robot habría seguido y sólo se podría haber parado si programamos directamente en el código que anduviera por ejemplo 20 cm o 3 rotaciones de motor o lo que fuera. En tal caso, para que siempre cogiera el rollo deberíamos partir del mismo sitio, y en este caso es difícil hacer eso con exactitud. Lo ideal es poder programar una condición de parada en función del entorno, para que de esa manera los cambios de dirección del robot o de longitud no afecten tanto al resultado final.
Como considero importante lo de la condición de parada en función del entorno, y teniendo en cuenta el diseño de los tapetes de los años anteriores, he decidido rediseñar el robot poniendo 2 sensores en la parte frontal. Uno de luz a la izquierda y otro de color a la derecha. De esta forma cuando haya cambios de color en la línea o fin de línea se podrá distinguir con facilidad utilizando el sensor de color.
También he modificado el brazo, ya que no me resultaba muy estable por el mecanismo de engranajes que tiene. Al disponer sólo de un motor adicional hay que aprovecharlo al máximo y considero importante que tenga movilidad en los distintos ejes horizontales X e Y y acceso a ambos lados del robot y a la parte frontal y quizás a la trasera. Por ello he cambiado la posición del motor a una zona más elevada y más centrada. También he cambiado la posición del ladrillo y ahora está en vertical. He realizado inicialmente un mecanismo de engranaje para cambiar de eje la rotación, que se puede ver en la siguiente imagen:
   Otra modificación en cuanto a las ruedas es que he cambiado el diseño de la rueda del Tribot por otra rueda sin goma y más pequeña para que el robot deslice mejor, esté más centrada y esté más baja para que los sensores estén más cercanos al tapete.
A partir de aquí es cuando empieza a formarse el robot P4 que presentamos. Con estas pequeñas modificaciones de diseño he ido mejorando algunos aspectos, pero hay otros como el hecho de que las ruedas puedan moverse en el eje libremente que he mejorado metiendo bloques. Es muy importante que las ruedas tengan la misma distancia a los motores para que sea lo más simétrico posible el bloque de motor. Si esto no sucede al realizar desplazamientos se pueden generar desviaciones en la trayectoria.
Después de utilizar varias veces el robot, he visto que el hecho de tener el ladrillo puesto en vertical es poco práctico, así que he cambiado su orientación a horizontal. Al hacer esto también he retrasado un poco el motor del gancho. De esta forma tenemos mejor acceso tanto al cableado como a la pantalla y los botones. Es importante dejar accesible las conexiones del ladrillo, especialmente la de cargar la batería o la de USB, conexiones que a la hora de montarlo no se ven cableadas pero que luego se necesitan utilizar.
Teniendo en cuenta mucha de las pruebas de FLL he decidido hacer en la parte frontal una pequeña plancha giratoria que permita coger cosas y a la vez que sirva de refuerzo de los sensores y evite cambios fuertes en su luz. También he añadido una pala que va a la parte frontal hasta la plancha, donde se pueden poner accesorios según la misión que se quiera hacer.
Por otro lado, he rediseñado el engranaje para cambio de eje, y aunque todavía se puede mejorar mucho, permite adaptar rápidamente accesorios para coger elementos en el tapete. De esta forma se pueden realizar varios movimientos con el mismo motor.
También he cambiado la posición del sensor de ultrasonido, poniéndolo a la altura del accesorio gancho, pero se puede cambiar en función de la misión.
Llegados a este punto he considerado que tenía un robot lo suficientemente completo por el momento con el que comenzar a estudiar la parte de la programación en NXT-G. Se pueden realizar todavía bastantes mejoras como el enganche del ladrillo al chásis, o mejorar el bloque del motor auxiliar. No obstante me interesaba meterme con la parte de la programación par ver las dificultades que nos podíamos encontrar.
La primera dificultad fue al intentar poner el Bluetooth con Windows 7. El problema es que para que NXT-G utilice el dispositivo Bluetooth, este debe estar utilizando el driver Genérico de Windows, que en mi caso no sucedía porque los señores de HP habían puesto el suyo. Tenéis en esta dirección un manual de cómo usar el Bluetooth en NXT-G, y en esta una descripción del problema. Al final no conseguí ponerlo en mi HP, por lo que utilizé un dongle de los chinos que tenía por casa.
Utilizar Bluetooth es opcional, pero ayuda mucho a que el cable USB no se lie con el robot cuando programas giros especialmente.

A continuación muestro un resumen de las funciones que hemos desarrollado.




·         Method Detail
·         adelante
void adelante()
Avanza 1 rotación de la rueda a velocidad 50. 360 grados= 1 giro de rueda
·         adelanteParam
void adelanteParam()
Avanza hacia adelante. Se le pasa la información del giro en grados. 360 grados= 1 giro de rueda
Parameters:
Velocidad - velocidad hacia delante
VueltasRuedas - Grados que giran las ruedas hacia delante
·         bajarPala
void bajarPala()
Baja de golpe la pala durante 1 segundo.
·         bajarPalaParam
void bajarPalaParam()
Baja la pala del motor A según los grados que se indiquen.
Parameters:
Grados - Grados que se baja la pala.
·         subirPala
void subirPala()
Sube la pala del motor A según los grados que se indiquen.
Parameters:
Grados - Grados que se sube la pala.
·         atrasParam
void atrasParam()
Avanza hacie atras. Se le pasa la información del giro en grados. 360 grados= 1 giro de rueda
Parameters:
Velocidad - velocidad hacia atras
VueltasRuedas - Grados que giran las ruedas hacia atrás
·         atras
void atras()
Avanza hacia atrás 1 rotación de la rueda a velocidad 50. 360 grados= 1 giro de rueda
·         giroIzquierda
void giroIzquierda()
Gira el robot a la izquierda. Utiliza un giro de 168 grados con una potencia de 50.
·         giroIzquierdaParam
void giroIzquierdaParam()
Gira el robot a la izquierda.
Parameters:
Velocidad - Velocidad de los motores al girar.
Grados - Números de grados que se gira. 180=90grados (angulo recto)
·         giroDerecha
void giroDerecha()
Gira el robot a la derecha. Utiliza un giro de 169 grados con una potencia de 50.
·         giroDerechaParam
void giroDerechaParam()
Gira el robot a la derecha.
Parameters:
Velocidad - Velocidad de los motores al girar.
Grados - Números de grados que se gira. 180=90grados (angulo recto)
·         sigueLineaSimple
void sigueLineaSimple()
Función que se le llama iterativamente para seguir una línea oscura. Se supone que el sensor de luz está previamente calibrado por lo que se toma como media del sesor de luz el valor de 50.
·         sigLineaParam
void sigLineaParam()
Función que se le llama iterativamente para seguir una línea oscura. Se supone que el sensor de luz está previamente calibrado por lo que se toma como media del sesor de luz el valor de 50.
Parameters:
Velocidad - Velocidad del motor más rapido
VelocidadReducida - Velocidad del motor más lento en el giro
·         sigueLineaEscala
void sigueLineaEscala()
Función que se le llama iterativamente para seguir una línea oscura. Se utiliza una escala de 3 rangos. Es en escala de 3. Recto entre 45-55. Supone media 50. Utilizarse para lineas muy rectas. Se supone que el sensor de luz está previamente calibrado por lo que se toma como media del sesor de luz el valor de 50. Valores internos: Velocidad del motor más rapido=50 VelocidadReducida del motor más lento=35
·         sigLineaEscalaParam
void sigLineaEscalaParam()
Función que se le llama iterativamente para seguir una línea oscura. Se utiliza una escala de 3 rangos. Es en escala de 3. Recto entre 45-55. Supone media 50. Utilizarse para lineas muy rectas. Se supone que el sensor de luz está previamente calibrado por lo que se toma como media del sesor de luz el valor de 50.
Parameters:
Velocidad - Velocidad del motor más rapido
VelocidadReducida - Velocidad del motor más lento en el giro
·         sigueLineaP
void sigueLineaP()
Sigue una linea recta o curva utilizando regulador P Proporcional. Función que se le llama iterativamente para seguir una línea oscura. Se supone que el sensor de luz está previamente calibrado por lo que se toma como media del sesor de luz el valor de 50. Valores internos: Velocidad 50. Kp=50

 





Dentro de poco P5...