Lenguajes de Programación de Robotica
Cuando se programa un manipulador lo que se necesita usualmente es situar su punto terminal en una localización determinada del espacio, haciendo además que la dirección de aproximación a la misma esté también definida. Pero no sólo es importante que el manipulador alcance determinados puntos del espacio, sino que lo haga en el momento adecuado. Así, es preciso distinguir entre:
Generalmente, es necesario diseñar y programar
trayectorias, rectas o curvas arbitrarias en el espacio cartesiano, para lo
cual es importante conocer la relación entre la trayectoria cartesiana del
punto terminal y la de las articulaciones. En el diseño de las trayectorias hay
que tener en cuenta factores como:
1. Características de los lenguajes
La tarea se describe en lenguaje de alto nivel, mediante instrucciones en forma
textual o utilizando una interfaz gráfica (un simulador del mundo del robot).
Un módulo planificador consulta una base de datos, denominada el modelo
del mundo, y transforma las especificaciones de la tarea en un programa
orientado al robot. Esto está directamente relacionado con las técnicas de
Inteligencia Artificial para la generación automática de programas.
Para determinar dónde se encuentra el robot, únicamente hay
que leer los sensores internos (normalmente codificadores ópticos). Sin
embargo, determinar dónde se encuentra el segundo bloque resulta una cuestión
más compleja. La respuesta más usual a este problema consiste en almacenar
modelos geométricos de objetos, y tratar de obtener mediante los sensores
externos descripciones geométricas de los objetos reales que encajen con los
objetos almacenados. Son los sistemas de CAD
los que permiten el modelado geométrico, almacenamiento y posterior consulta de
los modelos. Ejemplos de lenguajes orientados a la tarea son AUTOPASS (Automatic Programming
System for Computer- Controlled Mechanical Assembly), RAPT (Robot Automatically Programmed Tool) y LAMA (Language For
AutomaticMechanical Assembly).
- Camino, sucesión de puntos del espacio.
- Trayectoria, camino sujeto a condiciones temporales.
- La prevención de posibles colisiones con objetos del entorno.
- El mantenimiento de una orientación fija del elemento terminal (transporte de líquidos,soldadura, etc.).
- La utilización de aceleraciones moderadas, de forma que se eviten fuerzas de inercia elevadas que resulten inadecuadas para los motores.
Existen determinadas circunstancias que hacen que los lenguajes de programación de robots
resulten relativamente diferentes al resto:
- El entorno en el que actúa el robot no puede describirse normalmente en términos puramente cuantitativos.
- Se necesitan incluir condiciones no usuales, como la comentada prevención de colisiones.
- Las acciones del robot están sujetas a imprecisiones que pueden dar lugar a incidentes que el programa debe ser capaz de procesar.
- Ciertas informaciones de los sensores del sistema pueden ser no sólo difíciles de procesar en tiempo real, sino también ambiguas.
1. Características de los lenguajes
Habitualmente, la programación de un robot resulta un
proceso continuo de ensayo y error. Por ello, la mayoría de los entornos de
programación son interpretados, pudiéndose realizar un seguimiento paso a paso
de lo programado y evitar el ciclo editar-compilar-ejecutar-re-programar,
costoso en tiempo. Es deseable una buena capacidad de depuración y ejecución
paso a paso. Un lenguaje de programación de robots se podría
considerar ideal o universal si cumpliese los siguientes
requisitos:
- Proporcionar tipos de datos convencionales (enteros, reales ...) pero también otros específicos para:
o
El posicionamiento y
orientación espacial de los elementos actuadores.
o
La comprobación de sucesos, es decir, la
recogida puntual o continua de la información de las señales generadas por los
sensores y su almacenamiento en variables sensoriales. Estas variables son de
alcance global y no se inicializan explícitamente en el programa, como las
variables convencionales. Asimismo, debe incorporar elementos
de priorización de sucesos en caso de activación simultánea de varios
sensores.
- Incorporar órdenes de movimiento de los actuadores en el espacio cartesiano, sencillas y con posibilidad de elegir la trayectoria del punto terminal entre la posición actual y la final. Asimismo, debe ser posible memorizar la posición actual para continuar un movimiento en caso de interrupción anormal. También, debe contar con órdenes específicas para la realización de retardos (esperas hasta que se concluya la ejecución de un movimiento).
- Proporcionar mecanismos específicos de inicialización y terminación de las acciones del robot, como pueden ser el auto-test y el calibrado inicial, o el posicionamiento en algunas coordenadas específicas al principio o al final de la operación.
- Incorporar medios de sincronización de sucesos, que modifiquen la tarea normal en función de la ocurrencia de ciertos hechos o la llegada de ciertas señales. Las acciones de un robot se sincronizan normalmente para atender a cuatro tipos de sucesos:
o
Activación. Comenzar la acción al recibir una
señal.
o
Terminación. Finalizar la acción al recibir una
señal.
o
Error. Comenzar una secuencia de recuperación
ante una señal de error.
o
Anulación. Finalizar una acción ante la ausencia
de señal de terminación en un tiempo establecido.
- Proporcionar concurrencia o paralelismo, de modo que se puedan controlar simultáneamente todas sus articulaciones y permitir el funcionamiento simultáneo con otros robots. Esto se puede conseguir mediante:
o
Un lenguaje que permita concurrencia.
o
Un software que simule paralelismo
mediante el reparto del tiempo del procesador.
o
Usando varios elementos de computación (varios
microcontroladores).
- Posibilitar la comunicación entre procesos cuando varios coexisten simultáneamente.
- Esto se puede llevar a cabo mediante:
o
El uso de la memoria compartida.
o
La llamada remota a procedimientos.
o
El envío de mensajes.
- Gozar de portabilidad a cualquier tipo de equipamiento del que se disponga, con independencia del tipo de robot, de sensores, de actuadores y de elementos terminales.
Puesto que estos lenguajes deben poder modificar en tiempo
real el flujo del programa dependiendo del estado de las señales de los
sensores, el sistema operativo que soporte tales lenguajes debe ser
de tiempo real, entendiendo por tal aquél que pueda responder a cualquier
suceso externo, es decir, a la petición de un programa, en un tiempo acotado
–suficientemente breve-, sin posibilidad de que dicha petición pueda quedar
bloqueada indefinidamente. Por ejemplo, el mantenimiento de la estabilidad en
el movimiento de las articulaciones del robot exige el muestreo de los sensores
de posición con un período definido y corto, y el envío de la acción de control
calculada en ese mismo período.
Los
lenguajes de programación actuales no verifican estrictamente todos los
requisitos detallados, pero existen varios que resultan de utilidad dependiendo
de la tarea específica a la que se les destina.
2. Clasificación de los lenguajes.
Métodos de programación
2. Clasificación de los lenguajes.
Métodos de programación
En función de la sintaxis del lenguaje y de su complejidad
se pueden distinguir tres tipos:
- Secuencia-dores de instrucciones. Almacenan una secuencia de posiciones y de acciones (por ejemplo, la apertura o cierre de la pinza de un manipulador), para repetirla posteriormente en un orden prácticamente fijo. El robot aprende dichas posiciones y acciones mediante:
- El movimiento del robot gracias a un teclado especial denominado teach pendant, a un ratón o a un joystic.
- El movimiento manual del mismo y el almacenamiento de las posiciones de los encoders.
2. Lenguajes específicos para robots. Diseñados normalmente por cada firma comercial para sus robots, teniendo en cuenta únicamente sus propios sensores y actuadores. Generalmente incorporan, además, descripción y razonamiento en términos geométricos e interfaces a sistemas de CAD/CAM.
3. Extensiones de lenguajes clásicos. Se trata de módulos de ampliación específicos para el manejo de sensores y actuadores, desarrollados para lenguajes de propósito general como C, PASCAL o BASIC, que conservan la sintaxis general y los métodos de control de flujo de los mismos.
3. Extensiones de lenguajes clásicos. Se trata de módulos de ampliación específicos para el manejo de sensores y actuadores, desarrollados para lenguajes de propósito general como C, PASCAL o BASIC, que conservan la sintaxis general y los métodos de control de flujo de los mismos.
Las instrucciones de los lenguajes orientados al
robot son órdenes para la lectura del estado de los sensores y para el
movimiento de los actuadores. El programador debe establecer de modo secuencial
cuál será el comportamiento de los actuadores en función de las señales de los
sensores. Estos lenguajes se pueden subdividir en tres niveles:
Experimentales
o prototipos de investigación. Se trata de lenguajes similares a los de
aprendizaje:
De aprendizaje. Se trata de secuenciadores de instrucciones ampliados. Permiten la lectura automática de variables de posición y su modificación en modo texto. Cuentan con estructuras de control simples e instrucciones de comprobación de sensores que son insertables en la secuencia de movimientos aprendida mediante interfaces con menús. Ejemplos de este tipo de lenguajes son APT (Automatically Programmed Tools) y MCL (Macintosh Common LISP).
Estructurados. Con estructuras flexibles para la definición de posiciones, orientaciones y manipulación. Permiten la comprobación puntual o continua de las señales sensoriales, y la realización de movimientos de aproximación en cualquier dirección del espacio cartesiano. Ejemplos de este tipo de lenguajes son los denominados KAREL (lenguaje para el robot Karel), SRL (Structured Robot Language), AL (Assembly Language), AML (A manufacturing Language), VAL (Variable Assembly Language) y VAL-II.
o
Cuyo resultado no es una mera repetición de las
acciones, sino la generación de programas con instrucciones de movimiento y
variables libres, que puede ser editado con posterioridad para modificar las
posiciones absolutas y añadir instrucciones de comprobación de las señales
sensoriales; un ejemplo es el lenguaje LM (Language Model).
o Bien, enseñan al robot estrategias sensoriales
mediante la extracción de valores clave de entre todos los valores sensoriales
almacenados –gracias a la detección de las situaciones en las que se ha
modificado o interrumpido el movimiento-. Un ejemplo de ello lo constituye el
lenguaje XPROBE.
En los lenguajes orientados a la tarea el
programador debe establecer cuáles son las acciones que debe ejecutar el robot
pero no tiene necesariamente que detallar cómo hacerlo. Es el sistema el que
decide qué movimientos y comprobaciones sensoriales debe realizar, y en qué
orden. Las decisiones se toman en función de:
- Los objetivos propuestos.
- El estado en cada momento del mundo del robot.
Lo anterior exime al programador de la realización de un
buen número de tareas laboriosas que son obligatorias en los lenguajes
orientados al robot.
Como ejemplo, supón que se debe coger un bloque de una
determinada posición y apilarlo sobre un segundo bloque situado en otra
posición diferente. Esta tarea podría descomponerse en varias subtareas:
- Situar la pinza sobre el primer bloque.
- Sujetar el bloque.
- Llevar el primer bloque sobre el segundo.
- Soltar el primer bloque sobre el segundo.
Comentarios
Publicar un comentario