You are on page 1of 8

Cd. 285744 285750. Informe 01.

Control: Introduccin a la Plataforma LEGO Mindstorms


Julin A. Alarcn Manrique, Daniel M. Vargas Corredor, Control. UNIVERSIDAD NACIONAL DE COLOMBIA.

Resumen En este laboratorio se realizaron dos prcticas que se basaban en realizar una interfaz entre un Software y un Hardware, en este caso se utiliz el software LEGO para poder mover un motor por medio del Brick y que este movimiento pueda ser modificado fcilmente mediante la manipulacin de un cdigo, con ello se podr introducir ms en la utilizacin de la plataforma LEGO. Palabras Clave Control, Hardware, LEGO, Mindstorms, Motor, Posicin, Software, Velocidad.

Examinar las caractersticas tcnicas de los sensores, actuadores y los componentes internos del Brick. Estudiar las diferentes herramientas de programacin presentes en el software Brick Command Center. Reconocer las estructuras bsicas de programacin del lenguaje NXC.

II. INTRODUCCIN La plataforma LEGO de Mindstorms es una aplicacin muy utilizada en la industria de la robtica mas que todo para sistemas de control que no necesitan un esfuerzo muy grande ni tampoco requerimientos muy extremos, si no como para prototipos de robots, controles de velocidad, control de sistemas y aplicaciones que comnmente se pueden encontrar en el rea de la ingeniera. Para este caso se va a realizar una pequea aproximacin en el rea de la programacin con software del Brick NXT y con lenguaje NXC para conocer sobre algunas de las funciones y variables que son manejadas en este tipo de estructuras; esto se realizara mediante el control de velocidad y posicin de un motor modificando su funcionamiento por medio de un programa copiado en el Brick por medio de Bricx Command Center.

I. OBJETIVOS A. Objetivo General En esta primera prctica se pretende familiarizar al alumno con las herramientas bsicas necesarias para la implementacin de algoritmos de control en la plataforma de Lego Mindstorms NXT. El lenguaje que se utilizar para la programacin es el denominado NXC (Not eXactly C) para los Lego NXT, el entorno de programacin ser el proporcionado por el software Brick Command Center B. Objetivos Especficos

Identificar los componentes principales de la plataforma LEGO Mindstorms como lo son los sensores, actuadores y unidades de procesamiento (Brick).

22 de Febrero de 2013

Cd. 285744 285750. Informe 01.

III. PROCEDIMIENTO DEL LABORATORIO Para realizar este laboratorio es necesario dividirlo en 2 secciones, primeramente se va a realizar un anlisis y familiarizacin con el hardware y la segunda parte consiste en ver cmo funciona el software y la forma de utilizarlo para manejar un motor. A. Introduccin al Hardware 1) Caractersticas Tcnicas De La Unidad Bsica De Procesamiento Brick El Brick de Lego es un dispositivo programable de grandes aplicaciones en el rea de la robtica, debido a su fcil uso con el software Brick Command Center, el cual utiliza un lenguaje de programacin de alto nivel por lo cual es muy fcil de implementar cualquier programa y de esta forma utilizar el hardware disponible para el Brick al gusto del programador. Antes de poder usarlo correctamente, es necesario conocer sus caractersticas tcnicas como su capacidad de memoria, de procesamiento, que tipo de protocolo de comunicacin utiliza con sus componentes y como puede ser utilizado el mismo. Primeramente se va a realizar un pequeo esquema de cmo es la configuracin interna del Brick para as conocer la relacin entre cada uno de sus mdulos y poderlos analizar con detalle a cada uno de ellos.

Ahora bien, se puede especificar que contiene cada mdulo internamente y as se puede saber con qu recursos se cuenta para la ejecucin de un programa. Procesador Principal: Atmel 32-bit ARM processor, AT91SAM7S256 256 KB FLASH 64 KB RAM 48 MHz

Co-Procesador: Atmel 8-bit AVR processor, ATmega48 4 KB FLASH 512 Byte RAM 8 MHz

Comunicacin Inalmbrica Bluetooth: CSR BlueCore 4 v2.0 +EDR System Perfil de Puerto Serial (SPP) Interna 47 KByte RAM Externa 8 MBit FLASH 26 MHz

Comunicacin USB 2.0: Velocidad Mxima (12 Mbit/s) 4 Puertos de Entrada: 6-conexiones de interface digital y anloga 1 puerto de alta velocidad, IEC 61158 Tipo 4/EN 50170 compliant

3 Puertos de Salida:
Figura 1. Configuracin interna del Brick. [1] 22 de Febrero de 2013

Cd. 285744 285750. Informe 01.

6-conexiones soportadas para interfaz de codificadores de entrada. Display: LCD de 100 x 64 pixeles a blanco y negro Altavoz: Canal de salida con una resolucin de 8 bits rea: 26 x 40.6 mm

mucho a una cantidad de aplicaciones que puede utilizar muchos ms perifricos tanto de salida como de entrada. Por ultimo otra de las restricciones ms visibles del Brick es su espacio de impresin en pantalla ya que solo permite imprimir hasta 8 lneas al tiempo y existen mltiples aplicaciones donde la pantalla tiene que mostrar muchos ms caracteres para poder asociar al usuario con el entorno del hardware.

3) Caractersticas Tcnicas De Sensores [2]. Frecuencia de muestreo de 2-16 KHz Ultrasonido 4 Botones de Interfaz con el Usuario: Botones de goma Fuente de Energa: 6 Bateras AA Conector: 6-conexiones con conector RJ12 con ajuste lateral derecho. Recomendable Alcalinas Batera Recargable de Litio
Figura 2. Sensor Ultrasnico.

Sensor Digital que realiza una medicin de distancias por medio de ultrasonido. Transmite mediante protocolo de comunicacin .

2) Limitaciones Del Brick El Brick aunque es un dispositivo de una amplia variedad de aplicaciones, tambin posee cierta cantidad de limitaciones que no permite que sea utilizado en algunas reas de la ingeniera. Una de las grandes desventajas de est es que la memoria para almacenar los cdigos en NXC es muy pequea y cuando esta se encuentra muy saturada no se puede copiar archivos nuevos para ser ejecutados por el Brick, por otro lado una limitacin tambin importante es la cantidad de entradas y salidas del dispositivo ya que este solo posee 3 salidas y 4 entradas que limita
22 de Febrero de 2013

Disparo simple: Realiza una medicin cada vez que el byte de orden se desva, identificando hasta 8 objetos para guardarlos en un arreglo de 0 7 bytes. Medicin Continua: Tipo de medicin por defecto que se realiza una nueva medicin contina en el intervalo. EOPD(Electro Optical Proximity Detector)

Sensor de proximidad Opto-elctrico, utiliza la luz visible para su operacin. Dos modos de operacin: sensibilidad por 1X y 4X. Cada uno tiene una frecuencia de muestreo ligeramente diferente (figura 3).

Cd. 285744 285750. Informe 01.

Giroscopio Este sensor mide los giros que realiza el dispositivo y devuelve un valor que representa los grados de rotacin por segundo. Puede medir hasta 360 por segundo de rotacin.
Figura 3. Funcionamiento sensor EOPD

Permite lectura de 300 mediciones por segundo. Puede leer hasta 300 muestras por segundo. Color Sensor de color que funciona mediante el uso de un LED blanco. El eje de medicin se encuentra en el eje vertical (figura 6).

Figura 6. Eje de medicin del Giroscopio.

Figura 4. Sensor de color.

Acelermetro Este es un acelermetro de 3 ejes que mide la aceleracin en X, Y, Z (figura 7).

Debe ser manejado a una distancia no muy cercana al objetivo (figura 4). Para el uso de este sensor es necesario de unas equivalencias para cada color y que de esta forma se pueda manejar desde el programa (figura 5).

Figura 7. Ejes del acelermetro.

Puede ser utilizado para medir la inclinacin sobre los ejes.

Figura 5. Tabla de colores 22 de Febrero de 2013

Cd. 285744 285750. Informe 01.

Touch

B. Introduccin al Software 1) Estructura Bsica De Programacin NXT La estructura bsica de la programacin del NXT se encuentra en lenguaje NXC que quiere decir Not eXactly C, lo cual indica que es muy similar al lenguaje utilizado en C pero con algunas pequeas variaciones en los comandos, lo cual facilita el manejo del entorno de desarrollo. [3] Primeramente un programa diseado en NXC se compone de 2 partes fundamentales que son bloques de cdigo: las tareas y las funciones, cada tipo de bloque tiene sus propias caractersticas nicas, pero comparten una estructura en comn. El nmero mximo de bloques en tareas y funciones es de 256. Hay dos formas de ver la estructura del cdigo, el modo en el que se ve en la programacin y la forma en la que se ejecuta en el programa, ya que en la ejecucin se puede saltar entre lneas para ir a alguna tarea o funcin descrita anteriormente por ejemplo. El orden lxico (orden de escritura) es importante para el lenguaje NXC pero no lo es para el Brick NXT, por lo tanto en el orden en el cual un programador escriba un cdigo no tiene ningn efecto en el orden de ejecucin, pero para esto existen unas normas de control para el orden de ejecucin. Tiene que haber una tarea principal y esta tarea se ejecutar siempre en primer lugar. El momento en el cual cualquier otra tarea que ser ejecutara es determinada por las funciones API documentadas en el mdulo de comando.
Figura 9. Brjula magntica

Figura 8. Sensor Touch.

Sensor que detecta la presin de un objeto (figura 8). Reacciona al tacto y al soltar Puede ser utilizado para detectar una serie de pulsaciones en un dispositivo. Se da un rango de sensado de 0 a 100 mostrndolo con un LED. Brjula magntica

Una funcin se ejecutara una vez que sea llamada desde un bloque de cdigo. Por otro lado tambin existen normas para el orden lxico, las cuales son: Cualquier identificador que nombra una tarea o funcin debe ser conocida por el compilador antes de utilizarlo en el bloque de cdigo.

Contiene una brjula digital que calcula el ngulo de partida mediante un campo magntico (figura 9).

22 de Febrero de 2013

Cd. 285744 285750. Informe 01.

Una tarea o funcin definida debe ser reconocida por el compilador. Una tarea o funcin tiene que tener una nomenclatura adecuada para el compilador. Una vez que una tarea o funcin se define no puede ser redefinida o declarada. Una vez que una tarea o funcin se declara no puede volver a ser declarada. Ahora conociendo esto, se puede conocer que tipos de variables son comnmente utilizadas en la programacin con NXC, las cuales son prcticamente las mismas para cualquier otro lenguaje de programacin. bool: Booleano o bandera byte: Entero de 8 bits char: Tipo carcter de 8 bits int: Entero de 16 bits short: tipo short de 16 bits long: Entero de 32 bits unsigned: Es usado para modificar los tipos chart, int y long. float: Flotante de32 bits mutex: valor de 32 bits usado para sincronizar el acceso a recursos string: Tipo cadena de caracteres Structures: Definir estructuras en el programa Arrays: Tipo de vectores

str: Cadena de caracteres a pintar Options: Opciones de dibujo las cuales se dan con los nmeros: 0000: Normal 0001: Limpiar toda la pantalla 0002: Limpiar todo excepto la pantalla de estado. 0004: Limpiar pixeles 0008: Lgico And 0010: Lgico Or 0018: Lgico Xor 0020: Llenar la forma 0003: Limpiar modos de pantalla 0400: Poli lnea, polgono 0800: Limpiar lnea 1000: Borrar hasta el final de la lnea despus de escribir. NumbOut: Es un comando de salida que se utiliza para dibujar en el Brick pero esta vez solo para uso de nmeros utilizando los mismos parmetros que utiliza TextOut OnFwd: Este comando realiza el movimiento del motor en sentido positivo. OnRev: Este comando realiza el movimiento del motor en sentido negativo. Off: Este comando apaga los motores sin importar en qu direccin se estn moviendo. Wait: Realiza una interrupcin en el programa en una cantidad especfica de milisegundos. MotorActualSpeed:

Estos son los tipos de variables que se van a utilizar de ahora en adelante y tambin es necesario definir algunos de los comandos que van a ser utilizados en este laboratorio. TextOut: Es un comando de salida que se utiliza para dibujar texto en el Brick especificando una serie de parmetros como (x,y,str,Options): x: Coordenada en x para el inicio del texto y: Coordenada en y para el inicio del texto

22 de Febrero de 2013

Cd. 285744 285750. Informe 01.

Esta funcin retorna el valor de la velocidad actual del motor. MotorRotationCount: Esta funcin retorna el valor de rotaciones actuales del motor.

2) Diseo e implementacin de los algoritmos. Despus de conocer la estructura bsica de la programacin NXT, y a ver analizado sus distintas herramientas y comandos se puede proceder a realizar el cdigo para controlar la velocidad del motor siguiendo un patrn de seal de diente de sierra como se puede ver en la imagen (figura 9), para ello es necesario realizar un ciclo para que se ejecute el programa por un tiempo o cantidad de ciclos dados.

Figura 10. Programa para controlar la velocidad del motor

Con este cdigo se puede observar en la prctica que el motor va aumentando la velocidad poco a poco hasta llegar a un mximo definido y luego se detiene, iniciando de nuevo el ciclo por 10 veces. Con este cdigo realizado se puede proceder para realizar el control del motor teniendo en cuenta la posicin, para ello se va a utilizar el comando que mide las rotaciones del motor (MotorRotationCount), y hay que tener en cuenta que el motor tiene que girar hasta una posicin y devolverse rpidamente al punto de partida con el fin que se cumpla un diente de sierra casi perfecto pero que en la prctica seria con una pendiente un poco menor porque no se puede devolver en un tiempo cero, de esta forma el cdigo tambin tendr que ser un ciclo (figura 11).

Figura 9. Patrn para el control de velocidad y posicin.

El cdigo que se va a utilizar va a usar los comandos MotorActualSpeed el cual indica el valor de la velocidad que lleva el motor que se encuentra conectado en la salida A del Brick, tambin se va a utilizar TextOut y NumOut los cuales imprimen en la pantalla del Brick el texto y los nmeros deseados con una serie de reglas que fueron descritas anteriormente, con ello se puede proceder a programar el cdigo de la velocidad (figura 10). [4]

22 de Febrero de 2013

Cd. 285744 285750. Informe 01.

El mas mnimo cambio en el cdigo del Brick puede llegar a efectuar cambios enormes en el funcionamiento del hardware, por lo tanto hay que ser muy cuidadosos en el uso de las funciones y parmetros que las rigen para el adecuado funcionamiento del dispositivo programable. Un factor muy importante a tener en cuenta es la memoria del Brick ya que esta es muy limitada y solamente acepta una cantidad de programas por lo que si no se encuentra el espacio adecuado el Bricx Command Center no podr grabar el archivo en el dispositivo por lo tanto no podr ser implementado.

V. BIBLIOGRAFA [1] LEGO MINDSTORMS, LEGO Mindstorms NXT Hardware Developer Kit, LEGO Group, 2006. [2] Lego Engineering, HiTechic Sensors for LEGO Robotics, Tufts, 22 Septiembre 2009. [En lnea]. Available: http://legoengineering.com/index.php?option=com_conte nt&view=article&id=108. [ltimo acceso: 26 Marzo 2013]. [3] D. Benedettelli, Programming LEGO NXT Robots using NXC, vol. Vesion 2.2, J. Hansen, Ed., 2007, p. 51. [4] Doxygen, NXC programmer's guide, NXC, version 1.2.1 r5, [En lnea]. Available: http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/modules .html. [ltimo acceso: 23 Marzo 2013].

Figura 11. Programa para controlar la posicin

Con este programa se utiliz una velocidad constante tanto para el avance como para el retroceso, en este caso 40 para avance y 100 para el retroceso para que se pueda aproximar a la seal de diente de sierra y aparte de esto mostrar esta posicin en el display del Brick.

IV. CONCLUSIONES El Brick de LEGO Mindstorm es una muy buena opcin para realizar prototipos de nuevos proyectos de la ingeniera como en el campo de la robtica y el control automtico de sistemas ya que su programacin es muy sencilla y puede ser migrada a otras plataformas. El lenguaje NXC es muy similar por no decir que prcticamente igual al lenguaje C, ya que los comandos y las estructuras de programacin pueden ser declaradas de la misma forma que en est, la nica diferencia notable es que existen comandos y funciones especficas para el control y gestionamiento de los recursos y dispositivos que pueden ser implementados en el Brick.

22 de Febrero de 2013