CENTRO DE BACHILLERATO TECNOLÓGICO
INDUSTRIAL Y DE SERVICIOS NO. 41
TÉCNICO EN ELECTRÓNICA
MANUAL DE ROBOTICA LEGO MINDSTORMS NTX 2.0
EQUIPO 8:
CASTRO PÉREZ MIGUEL ÁNGEL
GARCÍA LÓPEZ ROGEBERTO
Ensenada, B.C, a 16 de junio de 2015
INTRODUCCIÓN.
LEGO MINDSTORMS
Es una plataforma para el diseño y desarrollo de robots, que sigue la filosofía de la marca LEGO,
armar y construir todo tipo de objetos simplemente uniendo bloques interconectables.
El bloque central es un microcontrolador, al que se le ha añadido un “cáscara” de ladrillo con forma
de LEGO. La conexión de sensores y actuadores es muy sencilla, por simple presión en cualquiera
de las puertas y en cualquier posición Mediante un PC, se realiza la programación del ladrillo,
usando diferentes programas y lenguajes.
Figura 1. Lego Mindstorm NXT
Ventajas:
• -Fácil de montar y desmontar, no es necesario usar soldadura, ni tornillo permite usar las
piezas en múltiples diseños distintos.
• -Muy extendido por todo el mundo, lo que permite encontrar gran cantidad de información e
ideas por Internet, diseños, soluciones, participar en foros, competiciones.
• Se puede comprar más ampliaciones de lego, adquirir piezas deterioradas o perdidas, o
añadir piezas echas manualmente, como por ejemplo, sensores o motores, e incluso
circuitos neumáticos.
• -Muy indicado para entornos educativos, desde colegios a universidades, pues se puede
aprender de forma fácil tanto mecánica como electrónica.
Desventajas
• Estructura. Está formada por bloques de LEGO, Golpes, caídas, pueden debilitar
rápidamente la estructura, llegando a desarmar el robot.
• No se pueden construir estructuras circulares, pues todas las piezas y ladridos de LEGO
son rectangulares.
• -Colocación de las baterías. se alimentan mediante seis pilas AA R6. Esto obliga a diseñar
el robot con la necesidad de acceder directamente al bloque, para poder cambiar las pilas,
limitando la construcción del robot.
• -Precio. Obviamente, comprar un robot “prefabricado”, resulta más caro que construirte tu
propio robot.
OBJETIVO
Emplear el software de programación NXT 2.0 de la empresa LEGO así como nuestro ingenio
para poder resolver los distintos retos o desafíos que se presenten a lo largo del parcial, haciendo
uso del sistema robótico interactivo LEGO Mindstorms para ello.
MATERIAL
Cantidad Descripción
1 Ordenador con programador NXT
2.0 instalado
1 Ladrillo NXT
2 Servomotores
1 Sensor ultrasónico
1 Sensor de luz
1 Sensor de tacto
1 Cable de comunicación USB
Componentes robóticos del sistema LEGO® MINDSTORMS® Education NXT:
Figura 2. Material Lego Mindstorms
1. Ladrillo NXT: el cerebro controlado por ordenador del robot Mindstorms
2. Sensor de tacto: permite al robot sentir y reaccionar al entorno mediante el tacto.
3. Sensor de sonido: permite al robot reaccionar al sonido.
4. Sensor de luz: puede detectar luz y diferenciar colores a nivel de escala de grises.
5. Sensor de ultrasonidos: permite al robot medir distancias y reaccionar al movimiento.
6. Servomotores: asegura los movimientos del robot con precisión controlada.
SENSORES
Son los dispositivos que se añaden a la estructura y que permite al robot “visualizar” la realidad
que le rodea. De esta manera el robot será capaz de detectar un cambio en el color de una
superficie, detectar un objeto, detectar que ha alcanzado el límite de una mesa, etc.
ASPECTOS A CONSIDERAR:
PANEL DE CONFIGURACIÓN Y EL CONTROLADOR
Cada bloque de programación tiene un panel de configuración en el cual se pueden ajustar las
características del bloque seleccionado. Cuando se selecciona un bloque en el área de trabajo, su
panel de configuración se hace visible y activo en la parte baja de la pantalla. Se puede
particularizar el bloque cambiando los parámetros en el panel de configuración. Por ejemplo, se
puede hacer que el robot se mueva más deprisa cambiando la propiedad “Power” en el bloque
“Move” del panel. (Véase figura 3)
Figura 3. Panel de configuración
1) “NXT window” da acceso a las características de la memoria y de la comunicación.
Software del NXT.
2) “Download and run selected” descarga y ejecuta partes del código del programa (por
ejemplo, un único bloque o varios de ellos). Esto permite ver cómo se comportan pequeñas
secuencias de programa sin tener que descargarlo por completo.
3) “Stop” detiene la ejecución del programa.
4) “Download” y “Run” descargan un programa al NXT y entonces comienza la ejecución
del mismo.
5) “Download” hace posible la descarga de programas al NXT y, entonces correr el
programa desde el NXT. (Véase figura 4)
Figura 4. Controlador
CONTROL DE MOTORES. (Véase figura 5)
Figura 5. Icono de los motores NXT
1. Letra superior derecha indica a cual Puerto del NXT se encuentra conectado el motor.
2. Este icono muestra la dirección que seguirá el motor
3. Indica el nivel de potencia
4. Este icono señala si has seleccionado la duración en ilimitado, grados, rotaciones o
segundos.
BUCLE (Véase figura 6)
Figura 6. Icono del bucle NXT
1. Cuando un bucle es predispuesto en siempre un símbolo infinito se despliega (∞) en la
parte inferior de este.
2. Si seleccionas que un sensor controle al loop, la porción de dicho bloque se expandirá
hasta revelar el icono de dicho sensor. También cualquier información relevante al control
se desplegara al fondo del símbolo.
RETO UNO SEGUIMIENTO DE RUTA
Siendo esta la primera vez que se usa el programa mindstorm, el primer reto consiste en hacer una
programación simple haciendo uso solo de los motores de las llantas del Robot a usar. Teniendo
esta que cumplir satisfactoriamente la condición de seguir una ruta que simula un pequeño
triangulo (siendo este triángulo formado por los puntos de unión de un pequeño cuadro de 2x2 de
las losetas del piso del salón), teniendo que como primera parte, dar solo una vuelta y por ultimo
dar vueltas en forma de triángulo indefinidamente. Véase en la figura 7.
Figura 7. Ruta a seguir.
DESARROLLO DEL RETO
Para la superación de este reto, lo primero que se hizo fue analizar la ruta a seguir, unas vez
tenido en claro que era lo que teníamos que hacer y darnos una idea de cómo lo podríamos
cumplir, comenzamos a hacer el programa.
1. Iniciamos poniendo en la programación del “Wall-E” un bloque de movimiento hacia enfrente por
siempre con una potencia de 75, conectamos el robot, y le subimos la programación y lo pusimos a
funcionar, viendo así cuanto tiempo tardaba este en llegar a cada parte del triángulo.
2. Una vez ya teniendo noción el tiempo que se tardaba el “Wall-E” en cada tramo de la recta,
iniciamos dándole el tiempo al primer tramo, en donde pusimos que se moviera hacía en frente por
2.8 segundos, y luego le pusimos que se detuviera. Véase en las figuras 8 y 9.
Figura 8. Primer bloque de movimiento.
Figura 9. Primer bloque de alto.
3. Ya habiendo llegado al primer vértice del triángulo con la programación hasta aquí, lo que siguió
fue poner un bloque de giro que nos diera el ángulo para llegar al siguiente vértice, en donde
después de varias pruebas encontramos que el ángulo puesto el bloque de movimiento
completamente girado hacia un lado, estando en grados y con una potencia de 75, era de 260,
incluyéndolo en el programa. Véase en la figura 10.
Figura 10. Bloque de Giro para llegar al siguiente vértice del triángulo.
4. Ya teniendo el Giro para llegar al siguiente punto y aprovechando que la distancia era la misma
que la del primer vértice al segundo. Volvimos a poner el mismo bloque de movimiento de 2.8
segundos a una potencia de 75 seguido de un alto. Véase en la figura 11.
Figura 11. Inclusión de los bloques de movimiento para llegar al siguiente vértice.
5. Una vez terminado 2/3 partes del recorrido, solo nos faltaba dar el giro para que este se
acomodara en línea recta al lugar de inicio, con la diferencia de que este giro era un poco mayor a
anterior, siendo de 280, el cual se incorporó al programa. Véase en la figura 12.
Figura 12. Penúltimo Bloque de giro.
6. El siguiente paso fue la inclusión del bloque de movimiento hacia adelante para que el robot
llegase al último punto de su destino siendo este igual de 2.8 segundo a una potencia de 75 y un
bloque de stop para que se quedara ahí. Véase en la figura 13.
Figura 13. Inclusión de bloques de movimiento para llegar al último vértice.
7. Por ultimo incluimos un último bloque de giro para que el robot sé que dará alineado para volver
a comenzar las vueltas, siendo este último giro de 260, seguido de un bloque de stop. Véase en la
figura 14.
Figura 14. Giro final.
8. Ya habiendo completado la primera parte del reto, lo único que se hizo fue incluir todos los
bloques en un bucle infinito para que este no solo diera una vuelta, si no muchas.
RESULTADO
El programa resulto ser exitoso, pudiendo cumplir con lo pedido inicialmente, siguiendo la
ruta triangular primero una vez y luego indefinidamente.
Programa completo.
SENSOR DE CONTACTO
Permite detectar si el bloque que lo posee ha colisionado o no con algún objeto que se encuentre
en su trayectoria inmediata. Al tocar una superficie, una pequeña cabeza externa se contrae,
permitiendo que una pieza dentro del bloque cierre un circuito eléctrico comience a circular
energía, provocando una variación de energía. Útil para hacer alguna acción manualmente. (Véase
figura 15)
Figura 15. Aspecto físico del sensor de tacto
El funcionamiento de este sensor es como el de un interruptor. Dispone de un muelle que mantiene
separados los dos extremos. Si se ejerce presión sobre el muelle, éste se encogerá permitiendo
que los dos extremos hagan contacto y permitan la circulación de la corriente. Por lo tanto, si el
sensor no está en contacto con nada devolverá un 0 mientras que si se encuentra en contacto con
cualquier cosa devolverá un 1. (Véase figura 16)
Figura 16. Funcionamiento del sensor de tacto
RETO DOS CARRITO CHOCON:
Diseñar un programa que emule algo bastante similar a un carrito chocón, en otras palabras para
entenderlo mejor cuando el robot NXT impacte contra cualquier obstáculo (siempre y cuando dicho
impacto sea recibido por el sensor de tacto) este tiene que ser capaz de corregir su curso para ello,
primero avanza 1 segundo en dirección contraria a la del choque y posteriormente de un giro de
120 grados (manteniendo el proceso anterior indefinidamente).
ASPECTOS A TOMAR EN CUENTA:
Figura 17. Icono del sensor de tacto
1. Muestra a que puerto del ladrillo NXT está conectado el sensor de tacto, puedes cambiar
este número en el panel de configuración si lo necesitas.
2. Este icono despliega cual acción enviara una señal Verdadera (1) ( topándose,
presionándose o liberándose)
CONFIGURANDO EL BLOQUE DEL SENSOR DE TACTO (Véase figura 18)
Figura 18. Panel de configuración sensor de tacto.
1. Selecciona el Puerto donde el sensor ultrasónico esta conectado
2. El sensor tacto puede ser accionado de tres formas distintas. Selecciona la opción topar si
quieres que el bloque se accione después de una presión y liberación rápida (menos de
0.5 segundos de duración). Escoge presionado, si deseas que el disparo ocurra al instante
de que el sensor se presione, por otro lado elige liberado si se prefiere su activación tras
soltarlo.
PROGRAMACION EMPLEADA PARA CUMPLIR EL RETO: (Vease figura 19)
Figura 19. Programación para el reto 2
El programa se ejecuta y automáticamente inicia con el bloque empleado para accionar un motor ,
como podemos observar este nos indica que el robot retrocederá siempre y cuando nuestro
sensor de tacto no se active (esto último ocurre al presionarse dicho sensor) una vez cumpliéndose
la acción anterior se vuelve verdadera la condición bajo la cual está subordinado nuestro bucle
(dependiente en este caso del sensor de tacto) y , por lo tanto dicho ciclo termina para dar paso al
siguiente block de instrucciones. (Véase figura 20).
Hasta este punto el ladrillo NXT es capaz de moverse en reversa, hasta recibir el impacto de
un objeto.
Figura 20. Primera sección de programación
Acto seguido y por último se efectúan un par de sencillas acciones: (Véase figura 21)
• Primero: Se avanza siguiendo una línea recta a partir del impacto de nuestro sensor dicho
sentido de desplazamiento es inverso al cual ha estado llevando anteriormente (primero
reversa / ahora derecho) efectuándose esto en un lapso equivalente a 1 segundo
• Segundo: Se le ordena a los motores dar un giro de 120 grados a la derecha, para así
poder encaminarlo a buscar una nueva zona despejada de obstáculos.
Figura 21. Segunda sección de programación
El proceso recién descrito es efectuado nuevamente, solo que en esta ocasión el último giro de
120 grados es hacia la izquierda, de esta forma se cubre el cambio de giro en ambas direcciones.
(Véase figura 22)
Figura 23. Sección final de programación
Por último como toda la programación anteriormente citada se encuentra confinada dentro de un
bucle infinito básicamente ejecutaran dicho ciclo indefinidamente o hasta la desconexión del NXT
Véase figura 23.1
Figura 23.1 Compilación de imágenes del carrito chocón, de izquierda a derecha. Presión del
sensor de tacto (choque). Posterior liberación y desplazamiento de 1 segundo. Finalmente giro de
120 grados a la derecha.
Capaz de proporcionar el sentido de la vista al robot. Este sensor permite al robot ver y detectar
objetos. Básicamente puede detectar objetos que estén de 0 a 255 centímetros de distancia con
una precisión de +/-3 cm. Esto significa que si hay un objeto a 40 cm exactamente el sensor puede
verlo desde 37 hasta 43cm, este es su margen de error.
Figura 24. Aspecto físico del sensor ultrasónico
Este sensor funciona igual que como lo hace un radar o un sonar. Envía ondas de sonido en una
frecuencia muy alta (40kHz) y mide el tiempo que el "eco" (el rebote de las ondas) de sonido tarda
en regresar al sensor. Esto es muy similar a como un murciélago "ve". Dependiendo de la forma y
el material de que este hecho el objeto, será más fácil o no detectar el objeto. Por ejemplo, si el
objeto es muy grande y de superficie dura devolverá una lectura muy buena, mientras que un
objeto curvado o muy fino será más difícil de detectar
Figura 25. Funcionamiento del sensor ultrasónico
RETO TRES LABERITNO DE CAJAS
Lograr que el ladrillo NXT logre salir de un conjunto de cajas apiladas de tal forma para simular un
laberinto. Para ello se debe hacer uso del sensor ultrasónico ubicado en la parte superior del robot
el cual vendría a emular los ojos. (Véase figura 26)
Figura 26. Representación aproximada de la distancia a tratar
SENSOR ULTRASONICO: (Véase figura 27)
Figura 27. Icono del sensor ultrasónico
1. Muestra a que puerto del ladrillo NXT está conectado el sensor ultrasónico, puedes
cambiar este número en el panel de configuración si lo necesitas.
2. Este icono señala si el sensor se encuentra predefinido para detectar objetos cercanos o
lejanos. Mientras más barras estén coloreadas, mayor será la detección.
CONFIGURANDO EL BLOQUE SENSOR ULTRASONICO (Véase figura 28)
Figura 28. Panel de configuración sensor ultrasonico
1. Selecciona el Puerto donde el sensor ultrasónico está conectado.
2. Si escoges el botón a la izquierda de la barra desplazadora , el bloque se activara cuando
detecte un objeto que se encuentra más cercano a la distancia de disparo, por el contrario
si se selecciona el derecho la activación ocurrirá al ubicarlo mas allá de dicha medida.
3. Selecciona la lectura en centímetros o pulgadas
4. Despliega la lectura actual del sensor ( abarcando un rango desde 0-250 cm o 0- 100
pulgadas)
NOTA: Para poder probar el sensor ultrasónico lo conectamos al bloque programable, en el
menú de "View" selecciona "Ultrasonic Sensor" y el puerto en el que lo conectaste, con esto en
la pantalla empezará a aparecer la distancia que está detectando el sensor.
PROGRAMACION EMPLEADA PARA CUMPLIR EL RETO: (Véase figura 29)
Figura 29. Programación efectuada para el tercer reto.
La programación correspondiente a este reto es bastante similar a la empleada en el carrito
chocón, ya que en este de nueva cuenta se emplearon los ciclos dependientes de un sensor. La
primera parte consiste en un bloque de movimiento (motores del robot) el cual indica un
desplazamiento frontal del NXT por tiempo aparentemente indefinido.
Sin embargo al encontrarse confinado dentro de un bucle subordinado a la lectura de un sensor en
este caso ultrasónico, los parámetros establecidos en el menú de opciones del dispositivo nos
indican que este ciclo se estará ejecutando siempre y cuando los datos recibidos sean menores a
20 centímetros <20 al cumplirse la condición anterior el robot saldrá de dicho estado, para
ejecutar el siguiente block de instrucciones. (Vease figura 30)
Figura 30. Bucle subordinado al sensor ultrasónico
En palabras más sencillas: nuestro robot avanzara en línea recta siempre y cuando encuentre un
área libre de obstáculos a una distancia de 20 cm.
En caso de que lo anterior no se cumpla (no se encuentra una zona despejada) el bloque restante
externo al apartado anterior nos ayuda a poder conseguir dicha condición, básicamente es uno de
movimiento dispuesto para ejercer un giro a la izquierda de 80 grados (ángulo ideal para ubicar
adecuadamente un lugar libre). El cual se llevara a cabo siempre y cuando como se menciono
anteriormente no se cumpla el apartado anterior. (Véase figura 31)
Figura 31. Bloque de giro y bucle infinito
Nuevamente esta programación en conjunto se encuentra incluida dentro de un bucle infinito por
lo tanto esta se ejecutara indefinidamente o hasta le desconexión del NXT. (Véase figura 31.1)
Figura 31. 1 Robot resolviendo el laberinto para lograr salir
RETO 4 SEGUIDOR DE LINEAS:
En este último reto se nos pidió hacer en base al sensor de luz, y el control de los
motores, una programación para el “Wall-e” que simulara un seguidor de líneas negras,
que siguiera correctamente una determinada pista puesta por el profesor. Véase en la
figura 32.
Figura 32. “Wall-E” como seguidor de líneas.
Para la superación de este reto, lo primero que se hizo fue analizar cómo debía ser el
funcionamiento de nuestro carrito en función del sensor, y ya una vez tenido claro esto
comenzamos a hacer la programación.
1. Lo primero que se realizo fue la identificación de valores dados por el sensor cuando este estaba
en una superficie negra y cuando estaba en una blanca, y para esto lo que se hizo fue solo incluir
un bloque del sensor de luz indicando en que puerto estaba y conectar el “Wall-E” a la
computadora presionando el botón de play ya cargado el programa, todo esto para que se
mostrara en pantalla los valores del sensor.
2. Después de obtener los resultados del sensor nos dimos cuenta de que este tenía un umbral de
entre el negro y blanco de alrededor de un valor de 57.
3. Sabiendo esto iniciamos con la programación. Agregando primero bucle en función de un
sensor, que sería el de luz, seleccionando su puerto y el valor que debería de dar para que se
siguiera cumpliendo lo que estaba adentro del bucle esto mientras las lecturas fueran de una
superficie negra. Véase en la figura 33.
Figura 33. Agregación del primer bucle.
4. Ya teniendo el bucle a cumplir cuando el sensor estuviera en una superficie negra, pusimos la
acción a realizar, incluyendo un bloque de movimiento de giro hacia la izquierda casi
completamente inclinado con una potencia de 24, siendo este un movimiento de terminación
indefinida, siempre y cuando se cumpliera con la condición del bucle. Véase en la figura 34.
Figura 34. Bloque de movimientos mientras se detecta una superficie negra.
5. Una vez completada la acción a realizar cuando el sensor este en una superficie negra,
procedimos poner la acción a realizar pero cuando este estuviera en la superficie blanca que sería
cuando este detectara la línea negra. Que básicamente fue hacer lo mismo que con el primer bucle
solo que le cambiamos el símbolo de “<” a “>”, y en cuanto a la acción a realizar, le cambiamos de
dirección a la derecha y le subimos la potencia a 41. Véase en la figura 35 y 36.
Figura 35. Bucle para la detección de una superficie blanca.
Figura 36. Acción a realizar en la superficie blanca.
6. Por último encerramos todo el programa en un bucle infinito para que este siguiera su camino
indefinidamente.
EXPLICACION DE FUNCIONAMIENTO
Este programa lo que hace es que cuando está en una superficie blanca, no avanza en sí, sino que
está en busca de la línea negra, girando constantemente hacia la izquierda, y cuando este
encuentra la línea negra, avanza un poco hacia adelante a la vez que se empuja hacia la derecha,
volviendo a dejarse de lado de la superficie blanca, he iniciado de nuevo el bucle en busca de la
línea negra. Haciendo un movimiento zig/zag mientras va avanzando lentamente.
RESULTADO
El programa resulto ser exitoso, pudiendo cumplir con lo pedido inicialmente, pudiendo simular un
seguidor de líneas que cumpliera satisfactoriamente con la pista proporcionada por el profesor.
Programa completo.
CONCLUSIÓN
Durante esta última parte del curos de la materia de Automatización enfocada a la creación de
programas que satisfagan una determinada acción ya sea simple o de reacción automática, se nos
enseñó desde lo básico que es la simple estructura de los bloques de control, el cómo montarlos
en la el programa, así como el funcionamiento y uso de:
1. Motores: Ya sea controlando su movimientos por segundos, rotaciones, y en caso de las vueltas
por grados, además del control de su potencia a nuestro gusto.
2. Sensores: Aprendiendo primeramente el funcionamiento de ellos, que en esta ocasión vivos los
sensores de Choque, Ultrasónico y de Luz, con los cuales se nos enseñó a ver sus valores
mediante la conexión a la computadora utilizando esto para conocer en base a que valores dar la
orden de ejecución de una determinada acción.
3. Bucles: En los cuales aprendimos a su estructura de funcionamiento por sí solo, y su
funcionamiento en conjunto con el uso de los sensores vistos anteriormente.
Y lo más importante de todo, aprendimos el cómo utilizar todos estos materiales a nuestra
disposición para que en conjunción a nuestros conocimientos de programación y creatividad
pudiéramos resolver problemas creado un sistema de acción automática dependiendo de lo
requerido.