You are on page 1of 13

Unidad 8

ROBTICA

OBJETIVOS DE LA UNIDAD

Al final de esta Unidad debers ser capaz de: 1.- Distinguir los tipos bsicos de robot. 2.- Distinguir y conocer las distintas instrucciones bsicas del lenguaje LOGO. 3.- Utilizar las instrucciones del lenguaje LOGO para resolver los problemas propuestos sin error ni omisin. 4.- Construir un robot a partir de un diseo ya realizado. 5.- Elaborar y probar un programa para el control del robot cumpliendo las condiciones propuestas sin error ni omisin.

NDICE

1.- Introduccin. 2.- Componentes de un robot. 3.- Tipos de robots. 4.- Lenguajes de programacin 5.- El lenguaje LOGO 5.1.- Primitivas para dibujar 5.2.- Procedimientos 5.3.- Bucles 5.4.- Variables 5.5.- Instrucciones condicionales 6.- Programacin de robots

Robtica / 1 1.- INTRODUCCIN El trmino robot proviene de la palabra checa robota, que significa "siervo". Fue utilizada en 1923 por el escritor checo Karel Capek en su obra teatral Los robots universales de Rossum, en la que se denominaba "robot" a una mquina construida por Rossum, que era capaz de hacer todas las tareas que realiza un hombre. Sin embargo, un colega de Rossum dota de emociones a los robots, y stos, al reconocerse como esclavos de los humanos, se rebelan y terminan con todos ellos. Actualmente se considera robot, por definicin, a toda mquina capaz de realizar tareas repetitivas de acuerdo con las rdenes que tenga en cada momento. Dentro de este trmino se pueden englobar las lavadoras de ropa, el lavadero automtico de coches, los robots de fabricacin de vehculos, juguetes, ... Los robots son capaces de funcionar en diferentes entornos, con un elevado grado de autonoma que depende de su programacin, es decir, que no necesitan de la atencin continuada de un operador humano. Dependiendo de su grado de "inteligencia", son capaces de reaccionar ante eventos anmalos en el proceso que realizan, corrigindolos, o simplemente detectndolos, para luego avisar a los controladores humanos de los errores que se producen. En Espaa, uno de nuestros ms famosos ingenieros, Leonardo Torres Quevedo (1852 - 1936) est considerado como el precursor de la Informtica y de la Ciberntica. En 1912 construy un autmata al que bautiz como el ajedrecista. Y en 1913, Torres Quevedo realizaba un anlisis exhaustivo de lo que en la actualidad se denomina "robot" y de sus posibilidades de aplicacin. Pero orient su trabajo a proyectar mquinas y dispositivos necesarios para solucionar problemas de su poca como el mando a distancia, globos dirigibles, mquinas de calcular, etc. 2.- COMPONENTES DE UN ROBOT Las piezas rgidas reciben el nombre de eslabones. Los eslabones se unen unos a otros mediante las articulaciones, que permiten el movimiento entre ellos. Para realizar el movimiento se pueden usar motores elctricos o sistemas de aceite a presin, que se llaman actuadores. Al elemento que realiza el trabajo, como una pinza o una pistola de pintura se denomina herramienta. Adems de estos componentes, un robot debe tener un sistema de control que provoque sus movimientos. Este control puede ser manual, automtico (mediante programadores cclicos) o informtico (mediante ordenador). Por ltimo, a veces tambin tienen sensores que indican la posicin, la temperatura o cualquier otra magnitud necesaria para el funcionamiento del robot.

Robtica / 2 3.- TIPOS DE ROBOTS Los robots se clasifican atendiendo a varios criterios: por su forma fsica, por sus movimientos o por su complejidad. En cuanto a su forma fsica tenemos: * Androide, para hacer referencia a un tipo de robot que imita la figura humana o que est fabricado con materiales producidos por biotecnologa, como la piel artificial. * Autmata, que son el resto de mquinas, que en ocasiones imitan los movimientos y la figura de seres animados. As, una lavadora o un robot que simule un ave ser denominado autmata y no androide. Por su movimiento tenemos: * Mquinas estticas, que no realizan movimiento alaguno. * Brazos robticos, que slo pueden moverse en un reducido espacio. Dependiendo de su movimiento, stos a su vez pueden ser cartesianos, cilndricos o polares.

* Robots mviles, que tienen absoluta libertad de movimiento.

Por su complejidad tenemos: * Programadores cclicos, en los que una rueda giratoria va cerrando sucesivos contactos, como en las lavadoras. * Robots programados, que realizan labores repetitivas como soldar o pintar coches en las fbricas, de acuerdo con unos movimientos almacenados en un pequeo ordenador. Sobre este tipo trabajaremos ms adelante, viendo un lenguaje de programacin muy sencillo. * Inteligencia artificial, en la cual un ordenador de control est dotado de programas muy complejos que pueden aprender nuevas cosas por s mismos y llegar a razonar, aunque es una tcnica que an est en desarrollo.

Robtica / 3 4.- LENGUAJES DE PROGRAMACIN De los tres tipos de robots, son los del tipo programad los que estn mundialmente extendidos principalmente en la realizacin de acciones automticas industriales. Para almacenar los movimientos en un robot programado existen dos mtodos: Programacin guiada: en la cual una persona va moviendo las piezas del robot, y ste memoriza todos los movimientos. Este mtodo tiene el inconveniente de que el robot va a repetir dichos movimientos sin atender a nada ms, y si acaso se encuentra un obstculo se producir una rotura. Programacin textual: en este caso se escriben las rdenes en un archivo que se guarda en un ordenador, y ste va interpretando cada orden y enviando corriente a los motores del robot para producir sus movimientos. Este sistema tiene la ventaja de que el ordenador puede recibir seales e interpretarlas para modificar o detener los movimientos. Para que un ordenador pueda controlar el robot, lo mismo que conectarse a Internet, jugar al ajedrez o escribir un texto, necesitamos darle una serie de instrucciones que reciben el nombre de programa. El mismo Sistema Operativo (Windows, Linux o cualquier otro) est formado por miles de instrucciones que deben detectar los movimientos del ratn o la pulsacin de las teclas, iluminar cada punto de la pantalla con un color y un brillo, controlar la ejecucin de programas, reservar espacio en la memoria y un sinfn de tareas ms, que se realizan gracias a las altsimas velocidades de los microprocesadores.. Para poder dar instrucciones al ordenador se utiliza un programa llamado intrprete, en el cual escribimos las instrucciones con expresiones parecidas a las nuestras, en un lenguaje denominado lenguaje de programacin. A continuacin el propio intrprete compila el programa, es decir traduce estas instrucciones a ceros y unos para que las entienda el ordenador; ste es el llamada cdigo binario o lenguaje-mquina. sto es lo que se almacena realmente, para que finalmente el ordenador lleve a cabo las instrucciones o ejecute el programa. Existen muchos lenguajes de programacin. Cada uno tiene su propio vocabulario (o forma de escribir las instrucciones) y su propia sintaxis (forma de utilizar y combinar las rdenes). Existen lenguajes de distintos tipos de complejidad, como BASIC, LENGUAJE C, C+, FORTRAN, PASCAL, etc, pero nosotros estudiaremos un lenguaje de programacin sencillo, adecuado para realizar nuestros programas, que se llama LOGO, en su versin WinLogo.

Robtica / 4 5.- EL LENGUAJE LOGO Este fue uno de los primeros lenguajes creados para controlar sistemas, y se desarroll en la dcada de 1960. Al abrir el programa MSWinLogo, la pantalla del ordenador aparece dividida en dos zonas:

La ventana de grficos es la zona por donde se mueve el cursor, que tiene una forma denominada tortuga. En esta zona podemos dibujar, escribir, ... En la ventana de trabajo se escriben las distintas instrucciones tanto en maysculas como en minsculas, y donde aparecen las ltimas rdenes introducidas, as como los mensajes de error. A las rdenes que le damos a la tortuga, tambin se les llama instrucciones o primitivas. Para ver cmo funcionan, introduce las primitivas de los siguientes ejemplos: PONCL [255 0 0] ROTULA [Hola!] ESCRIBE [Bienvenidos a Logo] MENSAJE [Saludo] [Este es el mundo de la tortuga] Como puedes ver, existen varias formas de presentar un texto en pantalla: ROTULA [mensaje] ESCRIBE [mensaje] escribe un mensaje en la ventana de grficos. representa el mensaje en la ventana de textos.

MENSAJE [ttulo] [mensaje] crea una ventana con el ttulo y el mensaje especificados. Para terminar, prueba a escribir algo en la ventana de trabajo, para ver el mensaje de error.

Robtica / 5 5.1.- PRIMITIVAS PARA DIBUJAR Lo primero que vamos a hacer es dibujar con el cursor sobre la ventana de grficos. Las siguientes primitivas permiten mover la tortuga por la pantalla, seleccionar colores y realizar grficos. Hay que destacar dos cosas: - En primer lugar, las rdenes son muy estrictas en cuanto a dejar espacios o utilizar corchetes. - En segundo, que los valores R, G y B son la combinacin de rojo, verde y azul que dan lugar a cualquier color, y son valores entre 0 y 255. Resultado AVANZA n Avanza n unidades. RETROCEDE n Retrocede n unidades. GIRADERECHA n Gira a la derecha n grados. GIRAIZQUIERDA n Gira a la izquierda n grados. PONPOS [x y] Sita la tortuga en la posicin indicada. CIRCULO radio Dibuja un crculo con el radio indicado. ELIPSE menor mayor Dibuja una elipse con los ejes indicados. CENTRO Se sita en el centro de la pantalla. BORRAPANTALLA BP Borra la pantalla. SUBELAPIZ SL No pinta al desplazarse. BAJALAPIZ BL Pinta al desplazarse. PONCOLORLAPIZ [R G B] PONCL [R G B] Selecciona el color del lpiz. PONCOLORRELLENO [R G B] POCCR [R G B] Selecciona el color de relleno. RELLENA Colorea el interior de una figura cerrada. ESCRIBE [mensaje] ES [mensaje] Imprime el mensaje en la ventana de trabajo OCULTATORTUGA OT La tortuga se hace invisible. MUESTRATORTUGA MT La tortuga se muestra. CARGADIB "c:\ ruta Se pone una imagen de fondo. Como ejemplo, dibuja el siguiente rectngulo: AV 60 GD 90 AV 30 GD 90 AV 60 GD 90 AV30 5.2.- PROCEDIMIENTOS En ocasiones nos interesa dibujar muchas veces una misma figura. Es este caso, tenemos el recurso de hacerlo una nica vez y guardarlo con un nombre que deseemos, para utilizarlo cuando sea conveniente. Este recurso se denomina procedimiento, y con l estamos creando una nueva primitiva que agrupa varias rdenes en una sola. A los procedimientos tambin se les llama mdulos. Orden Forma abreviada AV n RE n GD n GI n

Robtica / 6 Veamos el siguiente ejemplo: vamos a agrupar todas las primitivas para dibujar un semforo en una sola. Al teclear PARA SEMAFORO se abre una nueva ventana donde escribiremos el resto: PARA SEMAFORO CIRCULO 25 SL AV 60 BL CIRCULO 25 ELIPSE 45 140 SL AV 60 BL CIRCULO 25 SL AV 30 POCCR [0 100 250] RELLENA FIN Fjate que se empieza con PARA y se acaba con FIN. El procedimiento queda guardado cuando se escribe FIN, pero luego se puede corregir pulsando en FICHERO > EDITAR. A partir de este momento bastar con escribir SEMAFORO para que se repitan todas las primitivas y, por tanto, dibujar uno (recordemos que en informtica es conveniente no escribir acentos, la letra , espacios,...). Adems, los procedimientos se suelen nombrar mediante las tres primeras letras de la palabra, en este caso lo correcto sera nombrarlo como SEM. Como actividad, dibuja un cruce de calles mediante un programa de diseo (como Paint). Gurdalo como cruce.bmp. Despus ponlo como fondo en la ventana de grficos de LOGO. Aade al dibujo anterior dos semforos, sirvindote para ello del procedimiento anterior. 5.3.- BUCLES Un bucle es la repeticin de una o varias instrucciones un nmero determinado de veces, y su estructura es: REPITE n [instruccin]. Por ejemplo, para dibujar un cuadrado, podemos escribir la siguiente primitiva: REPITE 4 [AV 50 GD 90] Entre los corchetes se puede escribir todas las primitivas que deseemos, una detrs de otra como en el ejemplo anterior o una debajo de otra para tener una visin ms clara de cada orden. A continuacin, vamos a controlar el funcionamiento del semforo que creamos anteriormente. El objetivo es que se encienda el verde, que parpadee despus el amarillo y, por ltimo, que se ilumine el rojo. Luego haremos que este ciclo se repita indefinidamente.

Robtica / 7 Empezaremos creando un procedimiento que llamaremos PAR (PARPADEO), que encienda la luz amarilla tres veces de forma intermitente (OJO, que hay truco!): PARA PAR REPITE 3 [ POCCR [255 255 0] RELLENA ESPERA 60 POCCR [10 10 10] RELLENA ESPERA 60 ] FIN Observa los siguientes puntos: - En los programas puedes aadir comentarios, sin ms que poner delante un punto y coma, para facilitar su comprensin. - Las rdenes que se repetirn estn entre un corchete de inicio [ y otro de final ] - Aparece la primitiva ESPERA, seguida de un nmero, que expresa el tiempo que el programa estar detenido, este tiempo se cuenta como si cada segundo estuviera dividido en 60 unidades menores. El programa completo de control del semforo es el siguiente (OJO, debes aadir alguna orden): PARA CONSEM REPITE SIEMPRE [ POCCR [0 255 0] RELLENA ESPERA 180 POCCR [10 10 10] RELLENA SL AV 60 PAR SL AV 60 POCCR [255 0 0] RELLENA ESPERA 300 POCCR [10 10 10] RELLENA RE 120 ] FIN

; pinta el crculo de amarillo ; espera 1 s ; pinta el crculo de gris ; espera 1 s

; selecciona el color verde ; enciende el verde ; espera 3 s ; selecciona el color gris ; apaga verde ; coloca la tortuga en el crculo del amarillo ; ejecuta el bucle parpadeo ; coloca la tortuga en el crculo del rojo ; selecciona el color rojo ; enciende el rojo ; espera 5 s ; selecciona el color gris ; apaga rojo ; coloca la tortuga en el crculo del verde

Robtica / 8 La instruccin REPITE SIEMPRE [instrucciones] forma lo que se denomina un bucle infinito, mediante el cual las instrucciones se ejecutan continuamente, hasta que pulsemos el botn ALTO. Tambin debes notar que para rellenar cada uno de los crculos, se desplaza la tortuga hasta su centro. 5.4.- VARIABLES Una variable es un elemento dentro del cual existe un contenido, que puede ser un nmero o una palabra. Con ese contenido se puede trabajar posteriormente. Por ejemplo, con el siguiente procedimiento es posible introducir las veces que parpadea la luz amarilla: PARA PAR :N REPITE :N [ POCCR [255 255 0] RELLENA ESPERA 60 POCCR [10 10 10] RELLENA ESPERA 60 ] FIN Si tecleas la primitiva PAR 4, lo har cuatro veces. :N recibe el nombre de variable, porque cada vez que se ejecuta el procedimiento, :n toma un valor que puede ser distinto al anterior. Una segunda forma de definir una variable es mediante la primitiva HAZ, detrs de la cual se escribe comillas, el nombre de la variable y el valor de la misma. Por ejemplo: HAZ H 66 crea una variable llamada h y le da el valor 66. Ahora podemos poner :h donde queramos que aparezca 66. Por ejemplo, podemos dibujar un cuadrado de lado 66 con las instrucciones: REPITE 4 [AV :H GD 90] Con este ejemplo, el valor de H siempre ser 66. Si queremos que el ordenador nos pida el valor de la variable, debemos utilizar la primitiva LEEPALABRA. Crea un procedimiento con este ejemplo: ES [Teclea el lado del cuadrado] HAZ H LEEPALABRA BL REPITE 4 [AV :H GD 90]

Robtica / 9 La rdenes ms importantes que tenemos para definir variables son: Orden HAZ nombre contenido TECLA ? LEECARACTER LEECARS n LEEPALABRA LEELISTA Forma abreviada Resultado Asigna el contenido fijo a la variable. Analiza si se ha pulsado alguna tecla. Lee la tecla pulsada. Lee las n teclas pulsadas. Lee las teclas hasta pulsar Intro. Permite leer una frase con sus espacios.

LC LCS n LP LL

Como puedes comprobar en la tabla, el contenido de una variable puede ser una cantidad, una palabra o una frase. Teclea el siguiente procedimiento SAL (SALUDO): PARA SAL ES [Cmo te llamas?] HAZ NOMBRE LEEPALABRA GD 90 ES [Encantado de conocerte] SL AV 240 BL RO :NOMBRE FIN 5.5.- INSTRUCCIONES CONDICIONALES En este mtodo se ejecutan una serie de instrucciones nicamente si se cumple una condicin que hayamos impuesto. Para ello, la primitiva utilizada tiene la forma: SI condicin [instrucciones]. El siguiente procedimiento pregunta por la velocidad a la que se est circulando por una autopista y ofrece un consejo: PARA AUT ES [Teclea la velocidad] HAZ "V LEEPALABRA SI :V > 120 [ES [Peligro de accidente]] SI :V < 80 [ES [Debes ir al carril lento]] FIN Para tener el mensaje de velocidad correcta, la variable V debe estar comprendida entre 80 y 120. Para que se cumpla esta condicin se escribe Y detrs de la instruccin SI, y luego, entre parntesis las condiciones que se deben cumplir. Tambin pueden usarse las funciones lgicas O y NO para modificar una condicin, con efectos anlogos a lo que ocurra en las puertas lgicas.

Robtica / 10 6.- PROGRAMACIN DE ROBOTS El lenguaje LOGO es especialmente til para controlar mquinas y sistemas mediante la corriente obtenida en el puerto paralelo del ordenador. Las conexiones S1 a S8 son patillas de salida de corriente, mientras que las conexiones E1 a E5 son patillas de entrada de datos. Algunas del resto de las patillas, junto a la chapa que rodea al puerto hacen de masa, que internacionalmente se indica como GND (ground). Ahora bien, la corriente que puede suministrar el puerto es mnima, y se hace necesario un dispositivo a base de transistores y rels que sea capaz de suministrar corriente suficiente como para alimentar un motor. Este dispositivo se llama tarjeta controladora, que presenta las salidas y entradas ordenadas, y al iniciar el MSWLogo hay que indicar que vamos a trabajar con controladora:

Las rdenes que le damos a LOGO para dar corriente cada una de las 8 salidas digitales se deben expresar mediante un nmero binario, en el cual el valor 1 significa que hay corriente y el 0 que no la hay. Se puede utilizar la siguiente orden: ESCRIBEPUERTO 888 n Donde n es el nmero binario correspondiente. Por ejemplo, si queremos activar las salidas 1, 6 y 8, el binario debe ser: 10100001, y la orden quedara como: ESCRIBEPUERTO 888 10100001 Otra forma ms sencilla es mediante las ordenes CONECTA n y DESCONECTA n, que da corriente o la detiene en la salida n, sin afectar al resto de salidas. As, si queremos dar corriente a una lmpara, o a un rel, etc. podemos conectar uno de sus terminales a una de las salidas y el otro a GND, para luego activar la salida correspondiente, con cualquiera de los dos mtodos.

Robtica / 11 Pero si queremos controlar un motor, de tal forma que pueda girar en un sentido o en otro, entonces se conecta entre dos salidas, y activaremos una y desactivaremos la otra, con lo cual una actuar como polo negativo y la otra como polo positivo.

S1 S2 M

Por ejemplo, el procedimiento MOV (movimiento) para que un motor gire 20 segundos en un sentido y 20 en el otro podra ser, con los dos mtodos anteriores: PARA MOV ESCRIBEPUERTO 888 00000001 ESPERA 1200 ESCRIBEPUERTO 888 00000010 ESPERA 1200 FIN PARA MOV DESCONECTA 2 CONECTA 1 ESPERA 1200 DESCONECTA 1 CONECTA 2 ESPERA 1200 DESCONECTA 2 FIN

Este control de motores es tan corriente en robtica, que LOGO ha desarrollado primitivas especficas, en las que cada par de salidas corresponden a un motor: El motor 1 se conecta entre las salidas digitales S1 y S2; un posible motor M2 entre S3 y S4; M3 entre S5 y S6 y por ltimo, M4 entre S7 y S8. Las primitivas son: Orden M1 D M1 I M1 P M [D D P P] MUESTRA M? Resultado Hace girar el motor M1 hacia la derecha. Hace girar el motor M1 hacia la izquierda. Detiene el motor M1. Permite asignar un estado a varios motores simultneamente, mediante una letra en la posicin de cada motor [M1 M2 M3 M4] Muestra una lista con el estado de los cuatro motores, p.ej. [D P P P]

Las entradas se denominan con SD1, SD2, ..., y pueden recibir corriente o no. En el primer caso el ordenador interpreta que en la entrada hay un 1, y si no hay corriente, que hay un 0. El control de las entradas siempre se realiza mediante una instruccin condicional: SI SD1 = 0 [ACCIONES] SI SD1 = 1 [ACCIONES] Para la conexin de las entradas, un cable siempre se conecta a la E1, E2, ... y el otro a la conexin +5VCC.

+5VCC E1