jueves, 31 de octubre de 2019

UN LENGUAJE PARA LA ROBOTICA





En las máquinas controladas por sistemas informáticos, el lenguaje es el medio que utiliza el hombre para gobernar su funcionamiento, por lo que su correcta adaptación con la tarea a realizar y la sencillez de manejo, son factores determinantes del rendimiento obtenido en los robots industriales.
Hay varias maneras de comunicarse con un robot, y tres soluciones generales para lograrlo, que son reconocimiento de palabras separadas, enseñanzay repetición y lenguajes de programación de alto nivel.
Los sistemas de reconocimiento de la voz en la tecnología moderna son bastante primitivos y suelen depender de quien habla. Estos sistemas pueden reconocer un conjunto de palabras concretas de un vocabulario muy limitado y en general exigen al usuario una pausa entre las palabras, aunque en la actualidad es posible reconocer las palabras separadas en tiempo real debido a los cada vez más rápidos componentes de las computadoras y algoritmosde procesamiento más eficientes, la utilidad del reconocimiento de palabras separadas para describir la tarea de un robot es bastante limitada.
La enseñanza y repetición, también conocido como guiado, es la solución más común utilizada en el presente para los robots industriales. Este métodoimplica enseñar al robot dirigiéndole los movimientos que el usuario desea que realice. La enseñanza y repetición se lleva a cabo normalmente con los siguientes pasos: 1) dirigiendo al robot con un movimiento lento utilizando el control manual para realizar la tarea completa y grabando los ángulos del movimiento del robot en los lugares adecuados para que vuelva a repetir el movimiento; 2) reproduciendo y repitiendo el movimiento enseñado; 3) si el movimiento enseñado es correcto, entonces se hace funcionar al robot a la velocidad correcta en el modo repetitivo.
Guiar al robot en movimiento lento, puede ser en general llevado a cabo de varias maneras: usando un joystick, un conjunto de botones (uno para cada movimiento) o un sistema de manipulación maestro-esclavo.
Los lenguajes de programación de alto nivel suministran una solución más general para resolver el problema de comunicación hombre-robot. En la década anterior, los robots fueron utilizados con éxito en áreas tales como soldadura por arco voltaico o pintura con spray utilizando el guiado (Engelberger [1980]). Estas tareas no requieren interacción entre el robot y su entorno y pueden ser programadas fácilmente por guiado. Sin embargo, la utilización de robots para llevar a cabo las tareas requieren técnicas de programación en lenguajes de alto nivel ya que el robot de la línea de producción suele confiar en la realimentación de los sensores y este tipo de interacción sólo puede solo puede ser mantenida por métodos de programación que contengan condiciones.
Los lenguajes clásicos empleados en informática, como el FORTRAN, BASIC, PASCAL, etc., no disponen de las instrucciones y comandos específicos que necesitan los robots, para aproximarse a su configuración y a los trabajos que han de realizar. Esta circunstancia, ha obligado a los constructores de robots e investigadores a diseñar lenguajes propios de la Robótica. Sin embargo, los lenguajes desarrollados hasta el momento, se han dirigido a un determinado modelo de manipulador y a una tarea concreta, lo que ha impedido la aparición de lenguajes transportables entre máquinas y por lo tanto de carácter universal.
La estructura del sistema informático del robot varía notablemente, según el nivel y complejidad del lenguaje y de la base de datos que requiera.
CLASIFICACIÓN DE LA PROGRAMACIÓN USADA EN ROBÓTICA
La programación empleada en Robótica puede tener un carácter explícito, en el que el operador es el responsable de las acciones de control y de las instrucciones adecuadas que las implementan, o estar basada en la modelación del mundo exterior, cuando se describe la tarea y el entorno y el propio sistema toma las decisiones.
La programación explícita es la utilizada en las aplicaciones industriales y consta de dos técnicas fundamentales:
  1. Programación Gestual.
  2. Programación Textual.
La programación gestual consiste en guiar el brazo del robot directamente a lo largo de la trayectoria que debe seguir. Los puntos del camino se graban en memoria y luego se repiten. Este tipo de programación, exige el empleo del manipulador en la fase de enseñanza, o sea, trabaja "on-line".
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.
Los lenguajes de programación textual se encuadran en varios niveles, según se realice la descripción del trabajo del robot. Se relacionan a continuación, en orden creciente de complejidad:
  1. Lenguajes elementales, que controlan directamente el movimiento de las articulaciones del manipulador
  2. Lenguajes dirigidos a posicionar el elemento terminal del manipulador.
  3. Lenguajes orientados hacia el objeto sobre el que opera el sistema.
  4. Lenguajes enfocados a la tarea que realiza el robot.
PROGRAMACIÓN GESTUAL O DIRECTA
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 gestual se subdivide en dos clases:
  • Programación por aprendizaje directo.
  • Programación mediante un dispositivo de enseñanza.
En el aprendizaje directo, el punto final del brazo se traslada con ayuda de un dispositivo especial colocado en su muñeca, o utilizando un brazo maestro o maniquí, sobre el que se efectúan los desplazamientos que, tras ser memorizados, serán repetidos por el manipulador.
La técnica de aprendizaje directo se utiliza, extensamente, en labores de pintura. El operario conduce la muñeca del manipulador o del brazo maestro, determinando los tramos a recorrer y aquellos en los que la pistola debe expulsar una cierta cantidad de pintura. Con esta programación, los operarios sin conocimientos de "software", pero con experiencia en el trabajo a desarrollar, pueden preparar los programas eficazmente.
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.
La programación, usando un dispositivo de enseñanza, consiste en determinar las acciones y movimientos del brazo manipulador, a través de un elemento especial para este cometido. En este caso, las operaciones ordenadas se sincronizan para conformar el programa de trabajo.
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
Al igual que con la programación directa, en la que se emplea un elemento de enseñanza, el usuario no necesita conocer ningún lenguaje de programación. Simplemente, debe habituarse al empleo de los elementos que constituyen el dispositivo de enseñanza. De esta forma, se pueden editar programas, aunque como es lógico, muy simples.
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, interaciones de emergencia.
PROGRAMACIÓN TEXTUAL EXPLICITA
El programa queda constituido por un texto de instrucciones o sentencias, cuya confección no requiere de la intervención del robot; es decir, se efectúan "off-line". Con este tipo de programación, el operador no define, prácticamente, las acciones del brazo manipulado, sino que se calculan, en el programa, mediante el empleo de las instrucciones textuales adecuadas.
En una aplicación tal como el ensamblaje de piezas, en la que se requiere una gran precisión, los posicionamientos seleccionados mediante la programación gestual no son suficientes, debiendo ser sustituidos por cálculos más perfectos y por una comunicación con el entorno que rodea al sistema.
En la programación textual, la posibilidad de edición es total. El robot debe intervenir, sólo, en la puesta a punto final.
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.
Dentro de la programación textual, existen dos grandes grupos, de características netamente diferentes:
  1. Programación textual explícita.
  2. Programación textual especificativa.
En la programación textual explícita, el programa consta de una secuencia de órdenes o instrucciones concretas, que van definiendo con rigor las operaciones necesarias para llevar a cabo la aplicación. Se puede decir que la programación explícita engloba a los lenguajes que definen los movimientos punto por punto, similares a los de la programación gestual, pero bajo la forma de un lenguaje formal. Con este tipo de programación, la labor del tratamiento de las situaciones anormales, colisiones, etc., queda a cargo del programador.
Dentro de la programación explícita, hay dos niveles:
1º. Nivel de movimiento elemental
Comprende los lenguajes dirigidos a controlar los movimientos del brazo manipulador. Existen dos tipos:
  1. Articular, cuando el lenguaje se dirige al control de los movimientos de las diversas articulaciones del brazo.
  2. Cartesiano, cuando el lenguaje define los movimientos relacionados con el sistema de manufactura, es decir, los del punto final del trabajo (TCP).
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.
Los lenguajes correspondientes al nivel de movimientos elementales aventaja, principalmente, a los de punto a punto, en la posibilidad de realizar bifurcaciones simples y saltos a subrutinas, así como de tratar informaciones sensoriales.
2º. Nivel estructurado
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.
El uso de lenguajes con programación explícita estructurada aumenta la comprensión del programa, reduce el tiempo de edición y simplifica las acciones encaminadas a la consecución de tareas determinadas.
En los lenguajes estructurados, es típico el empleo de las transformaciones de coordenadas, que exigen un cierto nivel de conocimientos. Por este motivo dichos lenguajes no son populares hoy en día.
PROGRAMACIÓN TEXTUAL ESPECIFICATIVA
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.
El sistema informático para la programación textual especificativa ha de disponer del modelo del universo, o mundo donde se encuentra el robot. Este modelo será, normalmente, una base de datos más o menos compleja, según la clase de aplicación, pero que requiere, siempre , computadoras potentes para el procesado de una abundante información.
El trabajo de la programación consistirá, simplemente, en la descripción de las tareas a realizar, lo que supone poder llevar a cabo trabajos complicados.
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 
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.
CARACTERÍSTICAS DE UN LENGUAJE IDEAL PARA LA ROBÓTICA
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.
Estas características son insuficientes para la creación de un lenguaje "universal" de programación en la robótica, por lo que es preciso añadir las siguientes:
- Transportabilidad sobre cualquier equipo mecánico o informático.
- Adaptabilidad a sensores (tacto, visión, etc.).
- Posibilidad de descripción de todo tipo de herramientas acoplables al manipulador.
- Interacción con otros sistemas.
En el aspecto de claridad y sencillez, la programación gestual es la más eficaz, pero impide la confección de programas propiamente dichos. Los lenguajes a nivel de movimientos elementales, como el VAL, disponen de bastantes comandos para definir acciones muy parecidas que fueron surgiendo según las necesidades y que, en gran medida, oscurecen su comprensión y conocimiento.
Aunque, inicialmente, las técnicas de programación estructurada son más difíciles de dominar, facilitan, extraordinariamente, la comprensión y corrección de los programas.
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.
2a. Los intérpretes permiten una ejecución parcial del programa.
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
















0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio