sábado, 24 de diciembre de 2016

VARIABLES - LEGO MINDSTORMS NXT 2.0.

En la presente entrada se expondrán el funcionamiento de las Variables y su teoría, mediante el uso de estas en la programación del robot Morph.
OBJETIVO

  • Comprender el funcionamiento de las Variables.
  • Comprender las funciones y usos del modelo Morph NXT 2.0. 
MATERIALES Y EQUIPO
01 computador con NXT - G instalado.
01 kit LEGO Mindstorms NXT 2.0.
01 instructivo de armado del  modelo Morph.










FUNDAMENTO TEÓRICO
El modelo denominado "Morph", es uno de los robots de bonificación que aparecen en la parte posterior de la caja de LEGO MINDSTORMS NXT 2.0. MORPH significa Martian Observation Rover & Humanoid Personable. Él es un robot que se transforma de un rover a un humanoide, y puede dectectar colores (con el sensor de color), que le dicen que realice acciones especiales.

VARIABLES
Las variables se ocupan para almacenar datos y hacer uso de ellos durante el programa. 
Para definir una variable, tenemos que seleccionar Edit-->Define Variable, en el menú principal. 
 Luego, le podemos dar un nombre y definir el tipo de variable, numérica, lógica o texto.
Luego en el programa o en el panel de configuración debemos definir el valor que tomará, este operación se llama grabar “write”, luego para utilizarla emplearemos un leer “Read”. 



Panel de Configuración del Bloque "Variable".

 
 


lunes, 5 de diciembre de 2016

LEGO MINDSTORMS NXT 2.0. - MODELO "MINDCUBER"

En la presente entrada se expondrán el proceso de armado y las funciones del modelo Mindcuber de NXT 2.0.
OBJETIVO
  • Comprender la funciones y usos del modelo Mindcuber NXT 2.0.
MATERIALES Y EQUIPO
01 computador con NXT - G instalado.
01 kit LEGO Mindstorms NXT 2.0.
01 instructivo de armado del  modelo MindCuber 











FUNDAMENTO TEÓRICO
El modelo denominado "MindCuber" desarrollado por David Gilday, es capaz de resolver el armado del Cubo Rubik 3x3 tradicional.
Modelo MindCuber NXT 2.0.
Cubo Rubik 3x3 Tradicional
El robot se consta básicamente de tres mecanismos: 
  • El primer mecanismo hace uso de una bandeja donde se deposita el cubo y tiene la capacidad de girar en ambos sentidos. 
1er Mecanismo
  • El segundo mecanismo que soporta el sensor de color y tiene la función de escanear los colores de cada una de los nueve recuadros que componen cada cara. 
2do Mecanismo
  • Un tercer mecanismo que se encarga de voltear el cubo.
3er Mecanismo
PROCEDIMIENTO
A continuación, procedimos al armado del modelo MindCuber, y para desarrollar dicho robot realizamos los siguientes pasos:


Una vez terminado el armado del MindCuber, el resultado fue el siguiente:



Mediante el siguiente video podemos ver la funcionabilidad del Robot MindCuber:


El Robot observará las 6 caras del cubo Rubik mediante el sensor ultrasónico (detectará la presencia del cubo rubik sobre la bandeja) y el sensor de color (guardará los colores de las caras del cubo).   (Mecanismo 2), esto gracias el movimiento de la bandeja que soporta al cubo y el gancho que se encuentra detras de esta (Mecanismo 1 y 3).
Luego, en las pantalla del ladrillo NXT estarán los datos obtenidos y se empezara a determinar la solución.
Se procederá a ejecutar la solución del cubo.



sábado, 26 de noviembre de 2016

"BRICK INTELIGENTE" - MANTY ROBOT

En la presente práctica se expondrán los comandos para utilizar el ladrillo inteligente del NXT 2.0.

OBJETIVOS
  • Comprender la funciones y usos del ladrillo NXT.
  • Implementar un programa usando multriprogramación.
MATERIALES Y EQUIPO
01 kit LEGO Mindstorms 2.0.




01 computador con NXT-G instalado.
01 instructivo de armado del bonus model Manty Robot
Brick inteligente de l NXT Mindstorms 2.0.
FUNDAMENTO TEÓRICO
El ladrillo inteligente NXT es el cerebro de los robots Lego Mindstorms NXT, pueden transmitir los datos con el ordenador a través de un cable USB o por tecnología Bluetooth, también es  programable desde el propio NXT. Dispone de un microprocesador 32-bit que aporta un comportamiento programable, inteligente y de toma de decisiones.

Características técnicas: 
 •  Microcontrolador de 32 bits ARM7
o  Memoria FLASH de 256 Kbytes
o  Memoria RAM de 64 Kbytes
•  Microcontrolador de 8 bit AVR
o  Memoria FLASH de 4Kbytes
o  Memoria RAM de 512 Bytes
•  Comunicación Inalámbrica Bluetooth (Bluetooth Class II V2.0)
•  Puerta de alta velocidad USB (12 Mbit/s)
•  Cuatro puertas de entrada de seis contactos, plataforma digital
•  Tres puertas de salida de seis contactos, plataforma digital
•  Pantalla gráfica de cristal líquido de 64 x 100 puntos
•  Parlante, calidad de sonido 8KHz.
•  Fuente de poder, 6 baterías AA.

Visualización en el Brick NXT 
En la parte superior de la pantalla del NXT, podemos ver el tipo de conexión que estamos usando (Bluetooth y/o USB), el nombre de nuestro robot, luego el símbolo que indica que está en operación y finalmente el estado de la batería. 




Visualización y Sonido 
El bloque “Display”, nos permite visualizar en pantalla texto, imágenes y también dibujar nuestros propios diseños. Veamos el bloque “Display”: 
En el panel de configuración del bloque, tenemos varios parámetros que permitirán la visualización en la pantalla: 
  • Action: Texto, Imagen o Dibujo 
  • Display: Borrar 
  • File: Lo que queremos mostrar en la pantalla 
  • Position: en que posición 
Case 
Hasta ahora, los Switchs nos han permitido elegir entre dos alternativas, veremos como configurarlos para seleccionar mas posibilidades. Veamos algo sencillo, elegiremos un número al azar entre 1, 2 y 3 y de acuerdo a estas alternativas lo desplegaremos en la pantalla. 

Para elegir un número al azar utilizaremos el bloque “Random”, y definiremos el rango entre 1 y 3.Para configurar el Switch, debemos elegir los siguientes parámetros: 
  • Control  --> Value(Valor) 
  • Type --> Number (Númerico) 
  • Display --> Desactivar Flat View(representación plana)  

Utilizando los símbolos de “+” para agregar y “-“ para borrar debemos ingresar los datos, para que quede como en la figura.

El asterisco (*) se ocupa para definir la selección por defecto, es decir si al evaluar el número no es 1, 2 o 3, tomará ese camino. Note que ahora el bloque Switch tiene tres pestañas, al seleccionar la primera debemos insertar la acción que deseamos para esa alternativa, en nuestro caso una pantalla con el texto Numero 1. 
Luego seleccionamos la segunda pestaña, ponemos otro pantalla, con el texto 
Numero 2. y repetimos para tercera pestaña. 
  

Data Hub 
Cada bloque posee un controlador de los parámetros que se superponen al panel de configuración, este controlador de datos (Data Hub) se expande posicionando el cursor en la parte inferior del bloque. Cada uno de los conectores pueden llevar información entre bloques, que puede ser numérica, lógica y de texto. 
Supongamos que queremos mostrar en la pantalla un número al azar entre 1 y 6, al revisar el concentrador del bloque pantalla, nos daremos cuenta que no tiene una entrada numérica, por lo que tenemos que transformar el número a texto, lo bueno es que si hay un bloque para este propósito. Para instalar los cables, sólo ponga el cursor en el conector, aparecerá un carrete haga un click en el mouse y vaya al destino del cable y haga nuevamente click. El color de los cables determina en tipo de información que viaja por ellos, ver la ayuda en el programa para más información.

Variables 
Ocuparemos las variables para almacenar datos y hacer uso de ellos durante el programa. Para definir una variable, tenemos que seleccionar Edit --> Define Variable, en el menú principal. Luego, le podemos dar un nombre y defin el tipo de variable, numérica, lógica o texto. 

Luego en el programa o en el panel de configuración debemos definir el valor que tomará, este operación se llama grabar “write”, luego para utilizarla emplearemos un leer “Read” 

Panel de configuración del bloque “Variable”.

Multiprogramación 

Algunas veces necesitamos que el robot realice más de una función simultáneamente, veamos como implementarla. Debemos posicionar el mouse en cualquiera de las ramas(arriba o abajo) de la viga de secuencia y con el botón izquierdo delo mouse dibujumos una nueva viga de secuencia.  

También es posible generar una viga de secuencia en medio de un programa, en este caso posicione el mouse entre los bloques y presione la tecla shift. 

Es importante tener la precaución de evitar los conflictos, por ejemplo en una rama  puedo programar que el robot avance y en la otra que retroceda, lo cual obviamente causará un problema. 

DESARROLLO DE LOS EJERCICIOS
  • Para la presente sesión se debe proceder al armado del Manty Robot:

El modelo Manty Robot requiere de una multiprogramación ya que en este funcionan dos o más procesos a la vez. La programación del ejercicio consta de lo siguiente:

1. Primeramente creamos un módulo llamado SINCRONIZACIÓN. Este módulo se encarga del movimiento de los motores B y C los cuales permiten al robot girar hacia la izquierda o derecha, según sea el caso.
MÓDULO SINCRONIZACIÓN: Con el bloque RANDOM seleccionamos un número aleatorio en el rango de 0 a 1 (1), una vez con el número seleccionado el número lo enviamos al bloque COMPARAR efectuará dicha operación (A<B) ,  predeterminadamente B vale 0) (2), si dicha operación resulta verdadera (3), el robot girará hacia la izquierda (4y5). Si el resultado es falso (6), el Manty girará hacia la derecha (7y8).
1ER PROCESO: El bloque de tipo variable llamado VISIÓN, comienza en falso (1). Luego de eso, nuestro robot comenzara a avanzar (2) y entrará a un bucle infinito (9). Dentro de este el motor B del robot seguirá avanzando (3) hasta que el sensor de contacto sea pulsado (4), y repetirá la misma acción pero con el motor C, avanzará hasta que el sensor sea pulsado nuevamente (5y6). Esto permitirá el movimiento hacia delante del robot Manty gracias a los motores B y C. Posteriormente, haremos uso nuevamente de la variable VISIÓN (7), y si está es verdadera efectuará el módulo SINCRONIZACIÓN (8), y si es falso no realizará ninguna acción. Despues de eso saldrá de la condición y repetira el bucle infinitamente (9).
Finalmente creamos un segundo proceso que se efectuará en simultáneo con el primer proceso. Este nuevo proceso permitirá el movimiento de la cabeza del robot Manty con el fin de definir hacia que lado avanzará.
2DO PROCESO: El motor A girará la cabeza 120º hacia arriba (1), se entrará a un bucle infinito (b) y el motor A girará 70º hacia abajo (2) y seguidamente 70º hacia arriba (3). Esta primera parte del proceso permitirá al robot mover la cabeza del robot de arriba hacia abajo constantemente. Luego, si es que el sensor de ultrasonido detecta un objeto a <20 cm (4) el robot entrará a una condición (a), el robot bajará su cabeza 120º (5) y capturará el valor de la variable VISIÓN (falso) definido ya en el 1ER PROCESO (6), el motor A se detendrá, haciendo que mantenga la cabeza quieta hacia abajo. Despues de un breve tiempo en el cual se realizará el giro completo del robot, éste moverá la cabeza 120º hacia arriba (8) y definirá un nuevo valor en la variable VISIÓN (9). Se saldrá de la condición y empezará nuevamente el bucle (a).
EN CONJUNTO, TODOS LOS PROCESOS PRESENTADOS PERMITEN AL ROBOT MANTY:
"AVANZAR MOVIENDO SIMULTÁNEAMENTE LA CABEZA HASTA DETECTAR UN OBJETO A <20 CM. SEGUIDAMENTE EL ROBOT SE DETENDRÁ Y BAJARÁ LA CABEZA. DESPUÉS DE ESO, EL ROBOT GIRARÁ HACIA UN LADO ALEATORIAMENTE Y VOLVERÁ A AVANZAR, REPITIENDO ASÍ TODO EL PROCESO."
Seguidamente, demostramos la funcionalidad del programa en nuestro robot Manty, mediante videos:





CONCLUSIONES
  • Logramos conocer más sobre las funciones del Brick Inteligente.
  • Se pudo comprobar que se pueden realizar más de un proceso en simultáneo (Multiprogramación).

sábado, 12 de noviembre de 2016

PONENCIA SATÉLITE PERUSAT-1

PerúSAT-1 es el nombre del primer satélite peruano puesto en órbita por CONIDA. Dicho proyecto trae grandes beneficios para la nación, con fines de desarrollo socio-económico y en la seguridad, podremos acceder a imagenés captadas con otros satélites franceses y austriacos, esto debido a las cooperaciones ejercidas con las agencias espaciales de dichos países.


Gracias a este proyecto ya echo realidad, se podrán realizar proyectos de investigación y desarrollo de los intereses de nuestra nación. Entre estos campos tenemos:
  • Recursos Biológicos
  • Agua y Clima
  • Energía
  • Salud
  • Desastres
  • Minería - Geología
Además de esto, se podrán realizar las aplicaciones multisectoriales para las siguientes entidades nacionales:

  • Presidencia del Consejo de Ministros: CENEPRE, INDECI, CONCYTEC.
    • Gestión del riesgo de desastre -GRD. Ciencia y Tecnología
  • Ministerio del Ambiente: OEFA, SENAMHI, IGP, SERNANP, HAP.
    • Inventario y monitoreo de recursos forestales, Contaminación por actividades Industriales y mineras,etc.
  • Ministerio de Economía y Minas: INGEMMET
    • Catastro minero, riesgo geologico, mapeo geologico, litologico,etc.
  • Ministerio de Agricultura: ANA, INIA.
    • Agricultura de precisión, monitoreo del recurso hídrico (glaciares, lagunas ,ríos, etc.), cambio del uso del suelo, estrés hídrico,etc.
  • Ministerio de Educación: Universidades.
    • Desarrollo de ciencia y tecnología espacial en universidades.
  • Ministerio de Cultura:
    • Monitoreo de zonas arqueológicas, inventario de monumentos arqueológicos.
  • Gobiernos Regionales
  • Ministerio del Interior:
    • Monitoreo de cultivos, pistas y distintas actividades.
  • Ministerio de Defensa: 
    • Teledetección aplicada a la seguridad, defensa nacional y orden interno.
Satélite Peruano PeruSAT-1 de tipo ASTROSAT 300

APLICACIÓN DEL SENSOR DE CONTACTO EN LOS LEGO MINDSTORMS

Introducción
En la presente sesión hicimos uso del sensor de contacto en nuestro robot Lego Mindstorms, para poder desarrollar una serie de ejercicios y así poder descubrir más de su funcionalidad.

Objetivos
  • Comprender la funcionalidad del sensor de contacto en el robot Lego Mindstorms.
  • Implementar el sensor de contacto en nuestro robot Lego Mindstorms.
Materiales y Equipo
  • 01 kit de LEGO Mindstorms NXT 2 (8547).
  • 01 instructivo de armado del robor Explorer.
  • 01 computador con NXT-G instalado.
Desarrollo de los ejercicios
Primeramente, se procede al armado del robot Lego Mindstorms, para estos ejercicios fue necesaria la construcción del modelo BUMPER CAR, pero para eso es necesario un previo armado del CASTOR BOT. A continuación, se presentan los pasos para el respectivo armado:

Aqui podemos ver como termino el armado de nuestro BUMPER CAR


Ahora procedemos a la solución y aplicación del primer ejercicio:
"EL ROBOT DEBE DETENERSE AL ENTRAR EN CONTACTO CON EL SENSOR, Y DESPUES DE ESO RETROCEDER Y HACER UN GIRO A LA DERECHA"

Algoritmo Nº01
En el siguiente video podemos demostrar la aplicación del Algoritmo Nº01, y su funcionabilidad.


Ahora procedemos al armado del modelo EXPLORER BOT para el desarrollo del Ejercicio Nº02.
A continuación, se presentan los pasos para el respectivo armado:


Y así es como quedo nuestro ROBOT EXPLORER
El propósito del Ejercicio Nº02 es el de:
"AVANZAR HASTA QUE EL SENSOR DE CONTACTO SEA PULSADO O HASTA QUE SE DETECTE UN OBSTÁCULO A 20 CM. SI EL SENSOR DE CONTACTO FUE PRESIONADO, ENVIAR EL SONIDO "OBJECT" Y RETROCEDER. GIRAR EL CUELLO DEL ROBOT 90º, MEDIR CON EL SENSOR ULTRASÓNICO LA DISTANCIA, GIRAR EL CUELLO DEL ROBOT 180º Y MEDIR NUEVAMENTE CON EL SENSOR ULTRASÓNICO LA DISTANCIA Y COMPARAR. EL ROBOT DEBE GIRAR HACIA DONDE NO HAYA OBSTÁCULOS."
Algoritmo Nº02: Avanzar ilimitadamente(1), y hacer uso del sensor de ultrasonido(2), si detecta algún objeto en los <20cm mas próximos efectuar el bloque 123(3), y si no, activa el sensor de contacto(4) y si es que detecta algo, el robot se detendrá(5), enviará un sonido de alerta(6), y retrodecerá(7). Después de haber ejecutado lo anterior , se efectuará el bloque 123(8). Si el sensor de contacto no ha sido pulsado, seguirá avanzando ilimitadamente.
Bloque 123: Detenerse(1), el robot girará el cuello 90º(2) y medirá la distancia próxima del objeto más cercano(3), luego de esto el cuello del robot girará unos 180º(4) y medirá esta nueva distancia(5). Seguidamente, de las medidas tomadas(3y5), se compararán las medidas(6). Después de esto el robot girará hacia la dirección en la que no hayan obstáculos cerca(8y9). Finalmente, el robot seguirá avanzando(10).

Conclusiones
  • Se pudo comprender la funcionabilidad del sensor de contacto: reciben sólo dos respuestas (Si, cuando hace contacto y No, cuando no llega a darse una pulsación), por lo que este sensor utiliza variables lógicas.
  • El sensor de contacto puede usarse como alternativa en contra de choques del robot en un eventual caso de que no se haga uso del sensor de ultrasonido.

sábado, 29 de octubre de 2016

APLICACION DEL SENSOR ULTRASONICO EN LOS LEGO MINDSTORMS

Introducción
En la presente sesión hicimos uso del sensor ultrasónico en nuestro robot Lego Mindstorms, para poder desarrollar una serie de ejercicios y así poder descubrir más de su funcionalidad.

Objetivo
  • Comprender la funcionalidad del sensor ultrasónico en el robot Lego Mindstorms.
Desarrollo de los ejercicios
Primeramente, procedimos al armado del robot Lego Mindstorms, para estos ejercicios fue necesaria la construcción del modelo de la Llama Robot.
Llama Robot








Una vez armada nuestra Llama Robot, procedimos a realizar el primer ejercicio propuesto:

1. Programa de Prueba: Lanzar una bola al detectar un objeto a <20 centímetros



Para realizar este primer ejercicio fue necesario de la aplicación del siguiente algoritmo:
En primer lugar activamos el sensor de ultrasonido(1) y verificamos si dentro del rango de proximidad indicado (<20 centímetros) se encuentra algún objeto(2), de ser así activamos el motor B de tal forma que ejecute una acción, en este caso lanzar una bola(3). Todo lo mencionado anteriormente (1, 2 y 3) se encuentra dentro de un bucle infinito, eso quiere decir de que se realizara constantemente.
En el presente vídeo se puede apreciar la demostración de nuestro algoritmo en la Llama Robot:


2. El Robot avanza hasta que detecte un objeto a <20 cm de distancia



Este segundo ejercicio se diseñó el siguiente algoritmo:
En primer lugar echamos a andar a nuestro robot en dirección hacia delante(1), luego activamos el sensor de ultrasonido(2) y verificamos si dentro del rango de proximidad indicado (<20 centímetros) se encuentra algún objeto(3), de poder detectarlo nuestra Llama Robot se detendrá(4), terminando así todo el proceso(5). Si se diera el caso de no encontrar un objeto, nuestra Llama Robot seguirá avanzando sin detenerse hasta detectarlo, y así poder realizar las acciones consecuentes(4 y 5).

3. Secuencia:
    • Avanzar
    • Hasta detectar un objeto a <30cm
    • Girar a la izquierda (90º)
    • Avanzar
    • Hasta detectar un objeto a <30cm
    • Girar a la derecha (90º)

Este Tercero ejercicio se diseñó el siguiente algoritmo:
En primer lugar echamos a andar a nuestro robot en dirección hacia delante(1), luego activamos el sensor de ultrasonido(2) y verificamos si dentro del rango de proximidad indicado (<30 centímetros) se encuentra algún objeto(3), de poder detectarlo nuestra Llama Robot se detendrá(4), accionara el motor B para realizar 1 disparo(5) y girará 90º hacia la izquierda(6).Luego de haber realizado estas acciones volvera a avanzar(7), verificará algún objeto próximo, y de detectarlo repetirá todas las acciones anteriores, con la diferencia de que se girara hacia la derecha. Todo el algoritmo desarrollado se encuentra dentro de un bucle infinito, es decir, se realizará constantemente.
En el presente vídeo se puede apreciar la demostración de nuestro algoritmo en la Llama Robot: