Computers">
Programación de Robots
Programación de Robots
Programación de Robots
La programación de un robot se puede definir como el proceso mediante el cual se le indica a éste
la secuencia de acciones que deberá llevar a cabo durante la realización de su tarea.
Estas acciones consisten generalmente en moverse a puntos predefinidos y manipular objetos del
entorno.
A. Programación Gestual.
B. Programación Textual.
En la programación textual, las acciones que ha de realizar el brazo se especifican mediante las
instrucciones de un lenguaje. En esta labor no participa la máquina (off-line). Las trayectorias del
manipulador se calculan matemáticamente con gran precisión y se evita el posicionamiento a ojo,
muy corriente en la programación gestual.
En este tipo de programación, el propio brazo interviene en el trazado del camino y en las acciones
a desarrollar en la tarea de la aplicación. Esta característica determina, inexcusablemente, la
programación "on-line".
La programación por aprendizaje directo tiene pocas posibilidades de edición, ya que, para
generar una trayectoria continua, es preciso almacenar o definir una gran cantidad de puntos, cuya
reducción origina discontinuidades. El "software" se organiza, aquí, en forma de intérprete.
El dispositivo de enseñanza suele estar constituido por botones, teclas, pulsadores, luces
indicadoras, ejes giratorios o "joystick".
Dependiendo del algoritmo de control que se utilice, el robot pasa por los puntos finales de la
trayectoria enseñada. Hay que tener en cuenta que los dispositivos de enseñanza modernos no
sólo permiten controlar los movimientos de las articulaciones del manipulador, sino que pueden,
también, generar funciones auxiliares, como:
Selección de velocidades
Generación de retardos
Señalización del estado de los sensores
Borrado y modificación de los puntos de trabajo
Funciones especiales
La estructura del "software" es del tipo intérprete; sin embargo, el sistema operativo que controla
el procesador puede poseer rutinas específicas, que suponen la posibilidad de realizar operaciones
muy eficientes.
Los lenguajes de programación gestual, además de necesitar al propio robot en la confección del
programa, carecen de adaptabilidad en tiempo real con el entorno y no pueden tratar, con
facilidad, interacciones de emergencia.
Según las características del lenguaje, pueden confeccionarse programas de trabajo complejos,
con inclusión de saltos condicionales, empleo de bases dedatos, posibilidad de creación de
módulos operativos intercambiables, capacidad de adaptación a las condiciones del mundo
exterior, etc.
Comprende los lenguajes dirigidos a controlar los movimientos del brazo manipulador. Existen
dos tipos:
Los lenguajes del tipo cartesiano utilizan transformaciones homogéneas. Este hecho confiere
"popularidad" al programa, independizando a la programación del modelo particular del robot,
puesto que un programa confeccionado para uno, en coordenadas cartesianas, puede utilizarse en
otro, con diferentes coordenadas, mediante el sistema de transformación correspondiente. Son
lenguajes que se parecen al BASIC, sin poseer una unidad formal y careciendo de estructuras a
nivel de datos y de control.
Por el contrario, los lenguajes del tipo articular indican los incrementos angulares de las
articulaciones. Aunque esta acción es bastante simple para motores de paso a paso y corriente
continua, al no tener una referencia general de la posición de las articulaciones con relación al
entorno, es difícil relacionar al sistema con piezas móviles, obstáculos, cámaras de TV, etc.
Intenta introducir relaciones entre el objeto y el sistema del robot, para que los lenguajes se
desarrollen sobre una estructura formal.
Se puede decir que los lenguajes correspondientes a este tipo de programación adoptan
la filosofía del PASCAL. Describen objetos y transformaciones con objetos, disponiendo,
muchos de ellos, de una estructura de datos arborescente.
Se trata de una programación del tipo no procesal, en la que el usuario describe las
especificaciones de los productos mediante una modelización, al igual que las tareas que hay que
realizar sobre ellos.
Actualmente, los modelos del universo son del tipo geométrico, no físico.
Dentro de la programación textual especificativa, hay dos clases, según que la orientación del
modelo se refiera a los objetos a los objetivos.
Si el modelo se orienta al nivel de los objetos, el lenguaje trabaja con ellos y establece las
relaciones entre ellos. La programación se realiza "off-line" y la conexión CAM es posible.
Dada la inevitable imprecisión de los cálculos del ordenador y de las medidas de las piezas, se
precisa de una ejecución previa, para ajustar el programa al entorno del robot.
Los lenguajes con un modelo del universo orientado a los objetos son de alto nivel, permitiendo
expresar las sentencias en un lenguaje similar al usado comúnmente.
Por otra parte, cuando el modelo se orienta hacia los objetivos, se define el producto final.
La creación de lenguajes de muy alto nivel transferirá una gran parte del trabajo de programación,
desde el usuario hasta el sistema informático; éste resolverá la mayoría de los problemas,
combinando la Automática y la Inteligencia Artificial.
Se aplican con el robot "in situ", recordando a las normas de funcionamiento de un magnetofón
doméstico, ya que disponen de unas instrucciones similares: PLAY (reproducir), RECORD
(grabar), FF (adelantar), FR (atrasar), PAUSE, STOP, etc. Además, puede disponer de
instrucciones auxiliares, como INSERT (insertar un punto o una operación de trabajo) y DELETE
(borrar).
Los lenguajes más conocidos en programación gestual punto a punto son el FUNKY, creado por
IBM para uno de sus robots, y el T3, original de CINCINNATI MILACROM para su robot T3.
En el lenguaje FUNKY se usa un mando del tipo "joystick" para el control de los movimientos,
mientras que el T3 dispone de un dispositivo de enseñanza ("teach pendant").
Como en un grabador de cassettes, y en los dos lenguajes mencionados, los movimientos pueden
tener lugar en sistemas de coordenadas cartesianas, cilíndricas o de unión, siendo posible insertar
y borrar las instrucciones que se desee. Es posible, también, implementar funciones relacionadas
con sensores externos, así como revisar el programa paso a paso, hacia delante y hacia atrás.
El lenguaje FUNKY dispone de un comando especial para centrar a la pinza sobre el objeto.
El procesador usado en T3 es el AMD 2900 ("bit slice"), mientras que en el FUNKY está
constituido por el IBM SYSTEM-7.
Como ya menciono, se tratan los movimientos de punto a punto, expresados en forma de lenguaje.
Se citan, entre los más importantes:
ANORAD
EMILY
RCL
RPL
SIGLA
VAL
MAL
Estos lenguajes son, por lo general, del tipo intérprete, con excepción del RPL, que tiene un
compilador. La mayoría dispone de comandos de tratamiento a sensores básicos: tacto, fuerza,
movimiento, proximidad y presencia. El RPL dispone de un sistema complejo de visión, capaz
de seleccionar una pintura y reconocer objetos presentes en su base de datos.
Los lenguajes EMILY y SIGLA son transportables y admiten el proceso en paralelo simple.
VAL. - Fue diseñado por UNIMATION INC para sus robots UNIMATE y PUMA. (FIG. 1)
Emplea, como CPU, un LSI-II, que se comunica con procesadores individuales que regulan el
servocontrol de cada articulación. Las instrucciones, en idioma inglés, son sencillas e intuitivas,
como se puede apreciar por el programa siguiente:
LISPT
PROGRAM PICKUP
2. MOVES PART
3. CLOSE, 0.0.0
6. MOVES DROP
7. OPEN, 0.0.0
. END
RPL. - Dotado con un LSI-II como procesador central, y aplicado a los robots PUMA, ha sido
diseñado por SRI INTERNATIONAL.
EMILY. - Es un lenguaje creado por IBM para el control de uno de sus robots. Usa el procesador
IBM 370/145 SYSTEM 7 y está escrito en Ensamblador.
SIGLA. - Desarrollado por OLIVETTI para su robot SUPER SIGMA, emplea un mini-ordenador
con 8 K de memoria. Escrito en Ensamblador, es del tipo intérprete.
RCL. - Aplicado al robot PACS y desarrollado por RPI, emplea, como CPU, un PDP 11/03. Es
del tipo intérprete y está escrito en Ensamblador.
Teniendo en cuenta las importantísimas características que presenta este tipo de programación,
merecen destacarse los siguientes lenguajes:
AL
HELP
MAPLE
PAL
MCL
MAL EXTENDIDO
Un sencillo ejemplo, de carácter didáctico, utilizando el lenguaje AL, puede mostrar el interés del
control estructurado. Partiendo de la definición de unos objetos, se puede lograr una estructura
superior que los relacione.
Supongamos que se dispone de los objetos 01 y 02, y se intenta colocar al primero encima del
segundo. En la siguiente figura se muestra la configuración del sistema de este ejemplo.
Con referencia en la figura, 01T y 01B señalan, respectivamente, la parte superior e inferior del
objeto 01, mientras que 01AS indica su posición de asimiento. Las partes del objeto 02 se
denominan de la misma forma.
del brazo.
MOVE 01B TO 02T Mueve la parte inferior de 01 hasta la parte superior de 02.
brazo y 01.
Con excepción de HELP, todos los lenguajes de este grupo están provistos de estructuras de datos
del tipo complejo. Así, el AL utiliza vectores, posiciones y transformaciones; el PAL usa,
fundamentalmente, transformaciones y el MAPLE permite la definición de puntos, líneas, planos
y posiciones.
Sólo el PAL, y el HELP carecen de capacidad de adaptación sensorial. Los lenguajes AL, MAPLE
y MCL, tienen comandos para el control de la sensibilidad del tacto de los dedos (fuerza,
movimiento, proximidad, etc.). Además, el MCL posee comandos de visión para identificar e
inspeccionar objetos.
AL. - Trata de proporcionar definiciones acerca de los movimientos relacionados con los
elementos sobre los que el brazo trabaja. Fue diseñado por el laboratorio de Inteligencia Artificial
de la Universidad de Stanford, con estructuras de bloques y de control similares al ALGOL,
lenguaje en el que se escribió. Está dedicado al manipulador de Stanford, utilizando como
procesadores centrales, a un PDP 11/45 y un PDP KL-10.
MAPLE.- Escrito, como intérprete, en lenguaje PL-1, por IBM para el robot de la misma empresa,
tiene capacidad para soportar informaciones de sensores externos. Utiliza, como CPU a un IBM
370/145 SYSTEM 7.
MAL EXTENDIDO. - Procede del Politécnico de Milán, al igual que el MAL, al que incorpora
elementos de programación estructurada que lo potencian notablemente. Se aplica, también, al
robot SIGMA.
RAPT
AUTOPASS
LAMA
RAPT. - Su filosofía se basa en definir una serie de planos, cilindros y esferas, que dan lugar a
otros cuerpos derivados. Para modelar a un cuerpo, se confecciona una biblioteca con sus rasgos
más representativos. Seguidamente, se define los movimientos que ligan a los cuerpos a
ensamblar (alinear planos, encajar cilindros, etc.).
Así, si se desea definir un cuerpo C1, se comienza definiendo sus puntos más importantes, por
ejemplo:
P1 = < x, 0, 0 >
P2 = < 0, y, 0 >
P4 = < 0, 0, z >
C1 = CIRCLE/P2, R;
C2 = CIRCLE/P4, R;
L1 = L/P1, P2;
L2 = L/P3, P4;
Si, análogamente al cuerpo C1, se define otro, como el C2, una acción entre ambos podría
consistir en colocar la cara inferior de C1 alineada con la superior de C2. Esto se escribiría.
AUTOPASS. - Creado por IBM para el ensamblaje de piezas; utiliza instrucciones, muy
comunes, en el idioma inglés. Precisa de un ordenador de varios Megabytes de capacidad de
memoria y, además de indicar, como el RAPT, puntos específicos, prevé, también, colisiones y
genera acciones a partir de las situaciones reales.
Un pequeño ejemplo, que puede proporcionar una idea de la facilidad de relacionar objetos, es el
programa siguiente, que coloca la parte inferior del cuerpo C1 alineada con la parte superior del
cuerpo C2. Asimismo, alinea los orificios A1 y A2 de C1, con los correspondientes de C2.
PLACE C1
El AUTOPASS realiza todos sus cálculos sobre una base de datos, que define a los objetos como
poliedros de un máximo de 20,000 caras. Está escrito en PL/1 y es intérprete y compilable.
LAMA.- Procede del laboratorio de Inteligencia Artificial del MIT, para el robot SILVER,
orientándose hacia el ajuste de conjuntos mecánicos.
Aporta más inteligencia que el AUTOPASS y permite una buena adaptación al entorno.
La filosofía de estos lenguajes consiste en definir la situación final del producto a fabricar, a partir
de la cual se generan los planes de acción tendentes a conseguirla, obteniéndose, finalmente, el
programa de trabajo.
STRIPS
HILAIRE
STRIPS. - Fue diseñado, en la Universidad de Stanford, para el robot móvil SHAKEY. Se basa
en un modelo del universo ligado a un conjunto de planteamientos aritmético-lógicos que se
encargan de obtener las subrutinas que conforman el programa final.
Las seis características básicas de un lenguaje ideal, expuestas por Pratt, son:
1. Claridad y sencillez.
2. Claridad de la estructura del programa.
3. Sencillez de aplicación.
4. Facilidad de ampliación.
5. Facilidad de corrección y mantenimiento.
6. Eficacia.
Respecto a la sencillez de aplicación, hay algunos lenguajes (como el MCL) dedicados a las
máquinas herramienta (APT), que pueden ser valorados, positivamente, por los usuarios
conocedores de este campo. El PAL, estructurado sobre la matemática matricial, sólo es adecuado
para quienes están familiarizados con el empleo de este tipo de transformaciones.
Uno de los lenguajes más fáciles de utilizar es el AUTOPASS, que posee un juego de comandos
con una sintaxis similar a la del ingles corriente.
Es imprescindible que los lenguajes para los robots sean fácilmente ampliables, por lo que se les
debe dotar de una estructura modular, con inclusión de subrutinas definidas por el mismo usuario.
La adaptabilidad a sensores externos implica la posibilidad de una toma de decisiones, algo muy
interesante en las labores de ensamblaje. Esta facultad precisa de un modelo dinámico del entorno,
así como de una buena dosis de Inteligencia Artificial, como es el caso del AUTOPASS.
Aunque los intérpretes son más lentos que los compiladores, a la hora de la ejecución de un
programa, resultan más adecuados para las aplicaciones de la robótica. Las razones son las
siguientes:
1a. El intérprete ejecuta el código como lo encuentra, mientras que el compilador recorre el
programa varias veces, antes de generar el código ejecutable.
3a. La modificación de alguna instrucción es más rápida con intérpretes, ya que un cambio en una
de ellas no supone la compilación de las demás.
Finalmente, el camino para la superación de los problemas propios de los lenguajes actuales ha
de pesar, necesariamente, por la potenciación de los modelos dinámicos del entorno que rodea al
robot, acompañado de un aumento sustancial de la Inteligencia Artificial.