Está en la página 1de 44

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA.

UNIVERSIDAD POLITÉCNICA TERRITORIAL DEL ESTADO BOLÍVAR

PROGRAMA NACIONAL DE FORMACIÓN DE INGENIERÍA EN

ELECTRICIDAD.

AUTOMATIZACIÓN Y CONTROL

ROBOT INDUSTRIAL

JOSE ALI FRANCO C.I. 12560575

PUERTO ORDAZ JUNIO 2023


2

INTRODUCCION A LA ROBOTICA

Robot Industrial: En esencia los robots industriales son máquinas de manipulación


multifuncionales reprogramables, son robots con la capacidad de mover materiales, piezas,
dispositivos especiales o herramientas dentro de una línea de producción. Todo ello, con
trayectorias variables para ejecutar ciclos de tareas o adaptadas en función al trabajo.
Su diseño es de una maquina articulada, capaz de realizar movimientos que un humano podría
hacer, pero, con un mayor grado de efectividad y precisión en la elaboración de una tarea en casi
cualquier proceso industrial.

Estos pueden ser controlados por un mismo operario humano cualificado, o simplemente por un
control mediante algún dispositivo lógico reprogramable. Además de ello, estas joyas de la
tecnología industrial, están comprendidas por una estructura similar de cuatro partes
fundamentales, las cuales son:

 El brazo mecánico controlable y completamente manipulable.


 Componentes que conforman su estructura rígida, como enlaces o eslabones.
 Se pueden conectar por articulaciones, ya sean rotatorias o lineales.
 Por último se encuentran “las manos” del robot, que no son más que pinzas o
herramientas, que sirven como manipuladores.

Estas características, permiten al robot adaptarse a cualquier tipo de industria, aumentando su


eficacia, a menor costo de recursos y mayor optimización de tiempos de producción.

Pueden desenvolverse en casi todos los sectores de la industria que requieran mayor precisión
en sus productos, y automatizar todos sus procesos.

En épocas anteriores la manufactura de productos de calidad debía llevarse a cabo de manera


manual. Miles de manos obreras tras líneas de producción.

Sin embargo, esto tenía dos desventajas importantes, las cueles eran: Mayor tiempo para llegar al
producto final y sobre todo fallas de precisión humana.
3

Ahora bien, si existe un sector el cual se ha visto beneficiado en los últimos años de los avances
industriales, han sido aquellas empresas en la que se desenvuelven con sus procesos de
producción industrial. Todo ello, gracias a los innovadores robots industriales.

El objetivo principal es de producir más reduciendo esfuerzos físicos y gastos empresariales,


en palabras simples, aumentar la productividad. Pero son muchas funcionalidades que estos
componentes pueden ofrecerte, entre ellos se encuentran los siguientes servicios.
 Soldadura ultrasonidos
 Manipulación de alimentos
 Traslado de materiales pesados.
 Corte de materiales como el mismo metal
 Aplicación de productos como pintura
 Baños de metales en ácidos
 Medición de materiales líquidos, gaseosos o solidos
 Aplicación de elementos a altas presiones
 Supervisores de control de calidad de materiales fabricados
 Y más.

Para nadie es un secreto, que en las industrias la utilización de estas poderosas herramientas, ya
son tan comunes como los aviones en los aeropuertos. Todo esto se debe a que han sido capaces
de convertir tareas imposibles por humanos, en actividades sencillas y sin riesgo alguno.

TIPOS DE ROBOTS INDUSTRIALES:

Ahora bien, estas maquinarias industriales, durante muchos años han sufrido por diferentes
avances y transformaciones tecnológicas. Todas estas, en función a las necesidades y
requerimientos de cada una de las industrias a las que desean ser implementadas.

Es por todo esto, que podemos encontrar diferentes tipos de robots industriales, entre esta
variedad se encuentran:

 Robot industrial cíclico


4

Los robots de repetición o cíclicos, es una maquinaria inteligente capas de poseer mecanismos
multifuncionales. Estos son controlados a través de un computador, que por lo general suelen ser
un microordenador.

Estos manipuladores, se limitan a repetir una serie de secuencias de movimientos, previamente


ejecutada por un operario humano. Este dispositivo trabaja de tal manera, que posee diferentes
posturas para una misma posición. En otras palabras, son capaces de colocar la pinza o la
herramienta que se esté empleando para realizar una tarea en una posición especifica.

 Robots articulados

A la hora de realizar tareas de manipulación, estos robots articulados resultan ser los más ideales.
Todo esto gracias a su ingeniería de precisión y agilidad mecanizada con pinzas moldeadas.

Este robot permite realizar movimientos eficientes a lo que se refiere la energía y suaves en
cuanto a su maquinaria. Por otro lado, son tan fáciles de utilizar como si se tratara de un robot
lineal, ya que, cuenta con libertad de orientación y trayectos lineales continuos.

 Brazos Robóticos

Como su nombre lo indica, se trata de un brazo mecánico programable. Este cuenta con una
apariencia de garfio y es capaz de cumplir de manera eficaz con las funciones similares a las de
un brazo humano.

Este sistema puede ser empleado para ser parte de un robot aún más grande y complejo, o
simplemente, trabajar de manera autónoma. Ya que, todas sus partes tienen la función de realizar
diferentes movimientos de rotación y traslado. Cumpliendo con mayor rapidez y menor riesgo, el
desplazamiento de los objetos que se desean transportar.

Clasificación de los distintos tipos de robots que existen

 Robots manipuladores: son los más comunes en las industrias, gracias a que poseen un
sistema de control básico y bajo coste. Las múltiples tareas que realiza son repetitivas y
sencillas. Se subdividen en tres tipos, de secuencia fija, secuencia variables y forma
manual.
 Robots de repetición: Son los robots que tienen la función de realizar una tarea
repetitiva o una secuencia de movimientos que son previamente programados por un
humano. Estos robots industriales son los que la sociedad en general reconoce.
5

 Robots de computadores: estos robots son controlados y programados por una


computadora u ordenador. En este caso el programador humano escribe el código en un
programa específico del ordenador con la finalidad de que dé órdenes o secuencias de
trabajo al robot. Son muchas las ventajas que brinda este tipo de robot, pero es necesario
que expertos cualificados los operen adecuadamente.
 Robots inteligentes: este tipo de robot tiende a relacionarse con su entorno gracias a
sensores y aplicaciones. Adicionalmente estos robots se mueven y realizan tareas de
manera autónoma.
 Microrobots: Los microrobots o los nanorobots se encuentran actualmente en fase de
investigación y desarrollo. El objetivo de este tipo de robots son para aplicaciones de
entretenimiento, educacionales, medicina o de investigación.
 Bots. Los bots son programas informáticos diseñados por los programadores y sirven
para recopilar datos e información de manera automatizada. En la última década se han
integrado para dar servicio a los call center e interactuar con los clientes.

Otros tipos de robots industriales son los siguientes:

 Cilíndricos: poseen una columna vertical que gira sobre su base. Las industrias suelen
utilizarlos para ensamblaje, manipular herramientas, hacer soldaduras por punto y
manipulación en máquinas de fundición a presión.
 Scara: con cuatro grados de libertad, estos robots se caracterizan por tener un rápido
ciclo de trabajo, un amplio campo de aplicación en diversas tareas y una excelente
repetitividad.
 Polar: con varias articulaciones, en donde dos son rotacionales y una es lineal y tienen
la capacidad de desplazar el brazo en un área esférica, gracias a sus articulaciones.
 Angulares: posee articulaciones que dan movimiento al robot tanto rotacional como
angular, logrando que el brazo efectúe movimientos de interpolación lineal
 Paralelos: este tipo de robot cuenta con cadenas cinemáticas cerradas, en donde varias
cadenas cinemáticas seriales independientes hacen que la plataforma móvil y la base se
conecten, estas se clasifican según el grado de libertad.

Los robots industriales se encuentran en continuo proceso de evolución. Además de las


tecnologías innovadoras que cada vez se aplican más a la robótica, como la Inteligencia
Artificial, la Visión Artificial y la Realidad Virtual sufren continuo desarrollo en su estructura,
forma y capacidades. Los robots industriales se caracterizan por su capacidad a la hora de
simular las capacidades del brazo humano, y pueden llegar a tener hasta 7 ejes de movimiento.
6

Historia de los robots industriales:

En el año 1937, Bill Griffith P. Taylor completó en Inglaterra el robot industrial más antiguo a
quien denomino La Grúa, la cual fue construida con piezas de Meccano y accionado por un solo
motor eléctrico. Asimismo en el año 1997 Chris Shute logró construir una réplica de este robot.

Por otro lado, George Devol junto con Joseph F. Engelberger en el año 1956 fundaron una
compañía llamada Unimation. Esta compañía logró crear máquinas de transferencia
programables, con el fin de transferir objetos desde un punto hacia otro a menos de 3 metros de
distancia.

Desde hace un tiempo la empresa Cincinnati Milacron Inc de Ohio se convirtió en el competidor
de Unimation. Pero en la década de los 70 varios conglomerados japoneses incursionaron en la
producción de robots industriales similares.

Víctor Scheinman en el año 1969, creó un sistema eléctrico de seis ejes articulados al robot,
diseñados para permitir una mayor movilidad al brazo del robot. Mientras que en el año 1973 la
compañía KUKA Robótica construyó el robot llamado Famulus, el cual es el primer robot
industrial articulado de 6 ejes que se impulsa de manera electrónica.

Aplicaciones de robots que se utilizan en la industria

Las aplicaciones industriales en donde se utilizan este tipo de robots son muy diversas por lo que
vamos a poner algunos ejemplos, donde las principales son las siguientes:
7

 Trabajos de fundición: fundición de moldes, colocación de piezas en los moldes,


transportación de moldes a un lugar de enfriamiento, limpieza y mantenimiento de los
mismos.
 Trabajos de soldaduras: estos tipos de robot se emplean en industrias de automóviles, con
el fin de realizar soldadura de carrocerías.
 Aplicación de materiales: estos robots se utilizan para dar el acabado de superficies, con
materiales como esmaltes, pinturas, lacas, etc.
 Aplicación de selladores y adhesivos: en las industrias de automóviles se utilizan con el
fin de sellar parabrisas, ventanas, etc. Aunque otras industrias también las utiliza para otros
fines.
 Alimentación de máquinas: se utilizan específicamente en industrias metalúrgicas donde
se utilicen prensas.
 En cortes: estos robots son utilizados para cortar diversos materiales con distintos métodos,
tales como: chorro de agua, láser, oxicorte, etc.
 Operaciones de montaje: gracias a su rapidez y precisión estos robots se utilizan para
ensamblaje de piezas muy pequeñas.

SOFTWARE DE CONTROL:

El control automático se ha convertido en parte importante e integral de los procesos industriales


modernos. Los avances, tanto en investigación básica como aplicada en control automático,
brindan los medios para lograr el funcionamiento óptimo de sistemas dinámicos, mejorar la
calidad y reducir los costos de producción.
La robótica como parte de la automática es hoy un área de intensa investigación en todos sus
campos. Asimismo, en la industria ocupa un lugar destacado en el proceso de modernización e
innovación productiva (UNECE and IFR, 2005).
La incorporación de robots en industrias de fabricación resulta en productos de mejor calidad y
menor precio. Para ello, el diseño de una estructura de software abierta (William, 1994),
(Frederick and Albus, 1997), tiene una importancia relevante. La principal característica de una
estructura de software abierta para robótica es la definición de la interface de los componentes y
la estructura interna básica.
En el área industrial, uno de los trabajos más importantes fue realizado a partir de 1992, dentro
del marco del proyecto europeo OSACA (Open System Architecture for Controls within
Automation systems, http://www.osaca.org). Se realizan esfuerzos similares en Japón, a través de
OSEC bajo IROFA (Sawada and Akira, 1997), y en Estados Unidos a través de OMAC (Open,
Modular Architecture Control, cuya página web es http://www.omac.org). Los investigadores
tienen como objetivo desarrollar un sistema de control abierto incluyendo el modelo de
8

referencia de componentes, la interface de aplicación general y la estructura que hace que todos
los componentes trabajan juntos. Hasta el momento, los desarrollos obtenidos no fuerzan a todos
los fabricantes a conformar un estándar único. En cambio, estos desarrollos utilizan recursos
existentes para realizar funciones usuario-específicas. Por otra parte, existen varios paquetes de
software comerciales para el control de robots sobre plataformas Windows, como por ejemplo
Advanced Robotics Interface for Applications (ARIA) usado en los robots fabricados por
ActivMedia Robotics (http://www.activrobots.com), el software BotController desarrollado por
MobotSoft (http://www.mobotsoft.com), usado en la programación de los conocidos robots
Khepera y Koala; entre otros. Aunque estos paquetes de software para robots tienen muchas
prestaciones para los robots hacia los cuales fueron diseñados, los mismos son librerías de
software potentes pero ‘cerrados’, que circunscriben sus aplicaciones a sus propios robots. Lo
cual imposibilita su utilización para desarrollar software de robótica de acuerdo al hardware que
posea un centro de investigación.

En muchas disciplinas de ingeniería, el proceso de diseño se basa en la reutilización de


componentes, por ejemplo en ingeniería mecánica o eléctrica, no se llevan a cabo diseños en los
que cada componente tenga que ser diseñado en forma aislada, como el caso de tornillos, tuercas,
etc. La ingeniería del software en las últimas décadas viene haciendo sus mayores esfuerzos para
imitar estas técnicas, tratando de encapsular las unidades de software para su posterior
reutilización (Sommerville, 2002).
Se plantea una arquitectura basada en objetos para el manejo de los distintos dispositivos o
componentes hardware como sensores, actuadores, dispositivos de mando, etc. De esta forma se
encapsulan los datos y las tareas internas de cada dispositivo. Además, la estructura de los
objetos diseñados está basada en un temporizador que corre en un hilo independiente (los hilos
son el corazón de la capacidad multitarea de Windows encargándose de ejecutar el código
almacenado en los procesos) y funciones miembro que abren, leen, escriben y cierran el
dispositivo. El diseño realizado de los componentes de software, correspondiente a diferentes
dispositivos, puede ser utilizado como soporte de nuevos componentes de software para algún
nuevo componente de hardware.
Sistema operativo y entorno de programación Se utiliza el sistema operativo Windows (se
recomienda trabajar con Windows NT, por ejemplo Brazo 1 Brazo 2 Eje 3 L=800 mm h=563
9

mm Windows 2000 Server). Aunque este sistema operativo no es de tiempo real, el mismo
dispone de un conjunto de características que justifican su utilización en este proyecto.
Windows NT es el sistema operativo más utilizado del mercado, lo cual brinda gran
disponibilidad de utilidades y drivers, además es un sistema operativo multitarea (permite la
ejecución de múltiples procesos e hilos en forma simultánea) y permite utilizar máquinas que
contienen más de un procesador asignándolos a distintos hilos (Russinovich and Solomon, 2004).
Los programas se desarrollaron con el lenguaje de programación Visual C ++ (Zaratian, 1998).
Para la construcción de cada aplicación, se utilizó la librería de clases MFC (Microsoft
Foundation Class Library) en conjunto con la plataforma SDK (Software Development Kit).
También se utilizaron los asistentes AppWizard y ClassWizard, que provee Visual C++ para
trabajar con MFC (Sohar, 1998).
El asistente ClassWizard simplifica algunas tareas como la creación de nuevas clases, definición
de manejadores de mensajes, sobrescribir las funciones de las clases de MFC o asignar variables
a controles de cuadros de dialogo (Gurenwich and Gurenwich, 1998). Los distintos objetos en los
programas, se implementan en clases y se crean al inicio del programa, pero no comienzan a
trabajar hasta que se llama su función de activación. En particular, los objetos de sensores o
actuadores poseen una función asociada, que se ejecuta en un hilo aparte en forma periódica, con
un periodo de muestreo apropiado para cada dispositivo. Estas no son funciones miembro de las
clases, sino que se implementan en temporizadores multimedia mediante funciones de la API de
Windows, y brindan la mejor resolución (1 milisegundo) posible para el sistema operativo
utilizado (Richter, 1997). Por otra parte, la sincronización de los programas se realiza mediante
objetos de sincronización de Windows, los mismos se crean y utilizan con funciones de la API
(Richter, 1997).

Diseño de la estructura de software La estructura se diseña de forma tal de conseguir


módulos independientes para la interface gráfica, los componentes software de cada componente
o dispositivo hardware y el algoritmo de control. La figura 3 muestra un diagrama en bloques del
sistema de software desarrollado. Las diversas tareas son divididas y asignadas a dos procesos o
programas, que se comunican entre si, y trabajan en forma cooperativa. Las tareas de
comunicación con sensores y actuadores, adecuación de señales y sincronización del ciclo de
barrido de control son resueltas por el programa llamado de aquí en adelante Programa de
10

Tiempo Crítico, mientras que el algoritmo de control corre en el programa llamado Programa de
Control.

Figura 3. Diagrama en bloques del sistema de software desarrollado. La función de


procesamiento del algoritmo de control se puede modificar fácilmente, lo cual permite escribir
controladores en un corto período. Dicha función se ejecuta periódicamente a intervalos del
tiempo de barrido del programa (establecido desde la interfase gráfica al usuario), y permite el
acceso rápido para leer cualquiera de las variables de los sensores (las cuales son actualizadas en
cada instante de muestreo) y escribir las acciones de control. Para agregar nuevas clases para el
manejo de dispositivos, se pueden tomar como referencia las clases de objetos desarrolladas para
los sensoresactuadores del robot industrial utilizado. Por otra parte, la interfase gráfica está
aislada en objetos dedicados para tal fin, separándose de la funcionalidad del programa. A
continuación, se describirán brevemente las características principales de cada programa de la
estructura de software desarrollada.

Programa de Tiempo Crítico Este programa es el responsable de comunicarse con los


sensores y actuadores a través del hardware de adquisición y control, mantener actualizados
todos los datos leídos de sensores en una estructura de memoria compartida, y de sincronizar al
programa de control para que procese esos datos en cada periodo de muestreo. Este programa
posee cuatro clases de objetos, los cuales son: A) Objeto motor: este objeto es el encargado de
aplicar las acciones de control establecidas por el controlador sobre los motores del robot
industrial mediante los conversores D/A de la placa de adquisición de datos dispuesta sobre la
PC de control. B) Objeto cámara web: este objeto se conecta con el driver provisto por el
fabricante (puede ser cualquier CámaraWeb) para capturar imágenes a la tasa establecida a través
del puerto USB del PC de control. Además, se extrae a partir de la imagen cruda en formato
HSV, la posición y área en píxeles de los objetos presentes en el espacio de trabajo del robot
industrial. Se utiliza detección por color y una segmentación basada en separar conjuntos de
píxeles contiguos (Parker, 1997), (González, 1993). Para la implementación en software se
utilizaron las librerías IPL de procesamiento de imagen provista por Microsoft (Intel
Corporation, 2000). C) Objeto posición: es el encargado de medir la lectura de los encoders de
cada articulación del robot industrial a través de los puertos de entrada de la placa de adquisición
11

de datos situada en la PC de control. D) Objeto fuerza: este objeto lee la medición de fuerza
realizada por el sensor FS6-120 comunicándose con el mismo mediante el puerto serie RS-232C
del PC de control. Por otra parte, se implementa también un temporizador multimedia que
funciona como reloj del sistema con una frecuencia (frecuencia de muestreo) seleccionada por el
usuario al momento del inicio de la ejecución del control. Por otra parte, el programa posee una
interfaz de usuario formada por un cuadro de dialogo, en el cual se encuentra un conjunto de
controles gráficos que permiten seleccionar los sensores a utilizar, configurar sus parámetros,
seleccionar el tiempo de barrido de todo el sistema de control, y comenzar o detener su
ejecución.

Programa de Control Este programa tiene la principal tarea de procesar el algoritmo de


control. Para ello, debe antes obtener todos los valores de sensores del robot. Se comunica con el
Programa de Tiempo Crítico para recibir los datos de sensores y para enviar las acciones de
control, esto lo realiza en la misma PC a través de memoria compartida. El Programa de Control
posee un hilo dedicado al procesamiento del algoritmo de control. Este se crea al iniciar el
control y se sincroniza por medio de un objeto de sincronización controlado por el Programa de
Tiempo Crítico.
La interfaz de usuario está formada por un cuadro de dialogo, en el cual se encuentra un conjunto
de controles gráficos que permiten la visualización de datos, la modificación de los parámetros
del control, la inicialización y detención del algoritmo de control.

Programación avanzada bajo Windows NT En esta sección, mencionamos algunos aspectos


relevantes a tener en cuenta para una programación eficiente, en cuanto al uso de los recursos de
hardware disponibles, bajo plataformas Windows NT:
a) Analizar adecuadamente la cantidad de hilos que debe tener cada programa. Emplee la función
CreateThread de la API para crear cada hilo secundario (el hilo principal corresponde a la
función WinMain)
b) Evitar operaciones ‘bloqueantes’ usando las funciones de lectura y escritura a un dispositivo
(por ejemplo: comunicación serial, escritura de datos al disco rígido en línea, etc.) en forma
asincrónica. Para ello debe utilizar la función de la API CreateFile definiendo la estructura
OVERLAPPED.
12

c) No definir variables globales, es conveniente para reutilizar y extender el código a la


utilización de objetos.
d) No esperar un evento utilizando las funciones conocidas en la programación estructurada (por
ejemplo, la función while), sino que debe utilizar las funciones de la API de Windows para
esperar eventos, como por ejemplo la función WaitForSingleObject.
e) Utilizar memoria compartida a través de las funciones CreateFileMapping y MapViewOfFile
de la API de Windows para compartir datos entre procesos.
f) Incorporar temporizadores multimedia de alta resolución, a través de la función timeSetEvent
de la API, para establecer el período de muestreo. No usar la función SetTimer, ya que ésta
genera mensajes que van a una cola de espera. La función SetTimer se utiliza principalmente
para la actualización en pantalla de datos.
g) Para sincronizar fragmentos o partes de código importantes del sistema, utilizar eventos, los
cuales pueden ser definidos mediante la función CreateEvent de la API.
h) Para grabar en línea datos al disco rígido, es conveniente utilizar un esquema de doble buffer,
donde cuando se llena el primero, se copia al otro buffer, de forma que éste último sea escrito en
forma asincrónica al disco quedando liberado el primer buffer para seguir ‘juntando’ datos en
cada período de muestreo.
i) Usar las funciones SetPriorityClass y SetThreadPriority de la API para establecer la prioridad
de un hilo de un proceso dado (Russinovich and Solomon, 2004). . Esta prioridad debe ser
elegida adecuadamente de acuerdo a la importancia de la tarea que desarrolla el hilo y a los
requerimientos de tiempo y procesamiento que requiere. Por ejemplo, el hilo de control que se
ejecuta en cada período de muestreo para ejecutar el algoritmo de control debe tener una
prioridad más elevada que el hilo que graba datos al disco en forma asincrónica.
13

Diagrama en bloque del sistema de control


.

Diagrama en bloques del sistema de software desarrollado.

Las tres etapas en la programación de robots industriales

Desde que a principios de los años 50 se empezó a utilizar computadoras para controlar
máquinas-herramienta hasta la actualidad, la historia de los robots industriales y su programación
ha ido evolucionando y cambiando con el tiempo. En un primer nivel de detalle, podemos
distinguir tres etapas o ciclos diferentes.

.1. Primera etapa: Lenguajes de CNC Esta etapa vendría a ser como la prehistoria de los
lenguajes de programación robótica. En estos lenguajes, todavía no estamos hablando de robots,
sino de máquinas-herramienta, como tornos, taladros, fresadoras, pulidoras, etc., pero que
cuentan con un sistema de automatización, es decir, son operadas mediante comandos que recibe
de un sistema computerizado. Es la computadora la que controla la posición y velocidad de los
motores que accionan los ejes de la máquina. El Control Numérico Computerizado (CNC) tuvo
14

su origen a principios de los años 50 en el Instituto Tecnológico de Massachusets (MIT), en


donde se automatizó por primera vez una gran fresadora. El lenguaje CNC más utilizado es el
definido en los estándares 6983 de ISO (International Standarization Organization), RS274D de
EIA (Electronic Industries Association) y 66024/66025 de DIN. Este estándar consiste en una
serie de códigos definidos con una letra y dos números. Por ejemplo, los códigos G que
representan movimientos o códigos M para funciones como arranque, parada, cambio de
herramienta, etc. También se le conoce como G-Code o Código G. No obstante, han surgido
otros lenguajes de CNC como 2CL, AUTOSPOT, BOSS, CAMP, FMILL, GEPLAD, MILMAP,
PROMO, STEP-NC, SYMPAC o ZAP, por poner algún ejemplo. La frontera entre lenguaje
CNC y lenguaje de programación robótica no es clara y bien definida. Por ejemplo, la familia de
lenguajes APT (Automatically Programmed Tools) suelen ser considerados como lenguajes CNC
en la mayor parte de la literatura, pese a ser un lenguaje bastante avanzado especialmente en la
definición de la geometría (similar a un lenguaje de CAD).

En este documento se han incluído como lenguajes de programación robótica. Por el contrario,
algunos de los lenguajes más primitivos considerados como robóticos por la literatura van poco
más allá de una lista de posiciones por las que debe ir pasando la máquina o robot. A veces la
diferenciación parece más bien obedecer al dispositivo en el que se - 6 - ejecuta el programa: si
es una máquina-herramienta (fresadora, torno, etc.) se considera un CNC, y si es un brazo con n
ejes, se considera lenguaje robótico.

2. Segunda etapa: Lenguajes de programación de robots A finales de los años 50 y comienzos


de los 60 empezaron a desarrollarse lenguajes de programación de robots. Si exceptuamos los
lenguajes de la familia APT1 que, como se ha indicado, estaría a caballo entre este periodo y el
anterior, el primer lenguaje de programación a nivel de robot fue el MHI (Mechanical Hand
Interpreter) desarrollado en el MIT en 1960 para el robot MH-1 y que apenas tenía primitivas
para mover el robot, testear los sensores y ramificar el programa según ciertas condiciones. Otros
de los lenguajes más primitivos es WAVE desarrollado en 1970 en la Universidad de Standford
y considerado por muchos como el primer verdadero lenguaje de programación de robots.
Durante cuatro décadas proliferó el desarrollo de estos lenguajes. En este documento se
describen más de 20 lenguajes que vieron la luz en la década de los 60’s, unos 30 lenguajes de la
década de los 70’s, unos 60 lenguajes de la década de los 80’s y otros 30 lenguajes de la década
de los 90’s, además de otros 30 lenguajes que, siendo de esas mismas décadas, no se ha podido
15

datar su año de inicio. A partir del año 2000 se reduce drásticamente la generación de nuevos
lenguajes de programación de robots, entrando en el tercer ciclo temporal. Durante esas décadas,
los lenguajes fueron diseñados tanto por universidades e institutos de investigación como por
empresas del sector de la robótica. El primer lenguaje comercial fue SIGLA (Sigma Language),
desarrollado por Olivetti en 1974. Lógicamente, a lo largo de ese tiempo, los lenguajes fueron
evolucionando.

Al principio eran básicamente una lista de puntos, de coordenadas, por las que va pasando el
brazo robótico. Poco a poco se van incorporando funcionalidades para controlar el flujo del
programa (bucles, ramificaciones, etc.), para recibir información de sensores y de visión, para
tomar decisiones, para emitir órdenes a diferentes efectores del robot, y para sincronizar la
acción de varios brazos o robots. En buena medida la evolución de los lenguajes ha sido
consecuencia de la evolución de los robots: los robots dejaron de ser simples brazos, y los
lenguajes fueron incorporando mecanismos para manejar las nuevas funcionalidades que
posibilitaban los robots, tales como sensorización, visión, robots móviles, etc. Otra línea de
evolución de los lenguajes de programación de robots fue la propia de todos los lenguajes de
programación, siendo el hito más destacable la introducción de la programación estructurada a
finales de los años 70.

Con este paradigma se permite la definición de estructuras de 1 En este documento se comentan


más de una treintena de lenguajes de la familia APT - 7 - datos y de control más complejas,
transformaciones de coordenadas, etc. y además aumenta la comprensión del programa, se
reduce el tiempo de edición y se simplifican las acciones encaminadas a la consecución de tareas.
De forma contraria a lo ocurrido con la programación estructurada, la llegada del paradigma
orientado a objetos a principios de los años 90, tuvo escasa incidencia (por no decir nula) en los
lenguajes de programación robótica. Un hecho destacable es la larga duración de los lenguajes,
especialmente los desarrollados por las empresas fabricantes de robots. Así, los robots de ABB
siguen utilizando el lenguaje RAPID que se originó en 1994; robots de Adept y Stäubli utilizan
el lengaje V+ que data de 1989. E igualmente los de Mitsubishi con MBA (Melfa Basic) o los de
Kuka con KRL.

Los desarrolladores van emitiendo nuevas versiones de los lenguajes para actualizarlos, pero
siguen utilizándose. Por ejemplo, SPEL (Suwa seiko Production Equipment Language), de
16

Seiko-Epson tuvo su primera versión en 1984, y treinta años después, en 2014, se publicaba la
versión 7.1

.3. Tercera etapa: Frameworks robóticos A partir del año 2000, la programación en el ámbito
robótico vive la misma situación que en los otros ámbitos: dejan de publicarse nuevos lenguajes
de programación y empiezan a proliferar los “frameworks”, plataformas o paquetes de software
para el desarrollo de programas para robots. Estos frameworks suelen permitir diferentes
lenguajes de programación, proveen abstracción para diferentes robots, proporcionan entornos de
desarrollo y entornos de simulación, librerías y componentes, etc. Seguramente los más
conocidos son OROCOS (Open Robot Control Software) y ROS (Robot Operating System), pero
hay muchos más, como Player & Stage, Carmen, Microsoft Robotics Studio, Robot Framework,
RoboComp, Gobot, etc.

Clasificación de los lenguajes de programación de robots


Se pueden hacer diferentes tipos de clasificación de los lenguajes de programación de robots,
teniendo en cuenta diferentes factores.
1. Taxonomía general.
La taxonomía o clasificación de lenguajes más generalizada en la literatura existente sobre la
materia es la siguiente:
1. Programación gestual punto a punto, programación por enseñanza o programación por guiado
1.1. Guiado pasivo
1.1.1. Guiado pasivo directo
1.1.2. Guiado pasivo por maniquí
1.2. Guiado activo
1.2.1. Guiado básico - 9 –
1.2.2. Guiado extendido
2. Programación textual
2.1. Programación textual explícita
2.1.1. Programación textual explícita a nivel de movimientos elementales
2.1.2. Programación textual explícita estructurada
2.2. Programación textual especificativa
2.2.1. Programación textual especificativa a nivel de tarea
17

2.2.2. Programación textual especificativa a nivel de objetivo

Programación gestual punto a punto: programación por enseñanza o programación por guiado
La programación se realiza on-line, o sea, con el robot "in situ". No requiere la escritura de un
programa, sino que se basa en la enseñanza directa de la máquina por el usuario. El método es
similar a las normas de funcionamiento de una grabadora, 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). La programación se realiza punto a punto,
posicionando el elemento terminal del robot en los puntos precisos para ejecutar la tarea. Esos
puntos se almacenan en el sistema de control para poder repetir posteriormente los movimientos
Los movimientos puede 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.

Guiado Pasivo: Si los actuadores del robot están desconectados y el programador aporta en
forma directa la energía para mover el robot, se habla de un guiado pasivo. A su vez, puede ser
de dos tipos:

Guiado Pasivo Directo: En este caso, el programador puede tomar el extremo del robot y
llevarlo hasta los puntos deseados a través de las trayectorias más adecuadas. La unidad de
control del robot registra de manera automática la señal de los sensores de posición de las
articulaciones en todos los puntos recorridos. Un ejemplo es el caso de los robots de pintura de la
firma Gaiotto, los cuales fueron programados con este procedimiento.

Guiado Pasivo por Maniquí: La dificultad física de mover toda la estructura del robot se
resuelve a través de este procedimiento. En este caso se dispone de un doble del robot, mientras
que éste permanece fuera de línea. El doble posee una configuración idéntica que el robot real,
pero es mucho más ligero y fácil de mover. La programación se realiza llevando de la mano a
este doble, mientras que la unidad de control muestrea y almacena con cierta frecuencia los
valores que toman los sensores de posición de las articulaciones, para su posterior repetición por
18

el robot. Un ejemplo es el caso de los robots de pintura fabricados por Nordson, los cuales son
programados utilizando este procedimiento.

Guiado activo: Esta posibilidad permite emplear el propio sistema de accionamiento del robot,
controlado desde una botonera o bastón de mando (conocido como joystick) para que sea éste el
que mueva sus articulaciones. Ejemplos de este tipo se encuentran en los robots de ABB (ARLA)
o en los Cincinnati Milacron (T3). Atendiendo a la potencia del sistema, se habla de guiado
básico y guiado extendido.

Guiado Básico: El robot es guiado por los puntos por los cuales se desea que pase durante la
fase de ejecución automática del programa. Durante ésta, la unidad de control interpola dichos
puntos según determinadas trayectorias. Muchas veces no es posible incluir ningún tipo de
estructuras de control dentro del programa, por lo que los puntos son recorridos siempre
secuencialmente, en el mismo orden que se programaron. Un ejemplo de este tipo de
programación es la utilizada en casi todos los robots de pintura, donde la unidad de control
muestrea automáticamente los puntos recorridos por el robot con una frecuencia muy alta. - 11 –

Guiado Extendido: Permite especificar, junto a los puntos por los que deberá pasar el robot,
datos relativos a la velocidad, tipo de trayectoria, precisión con la que se quiere alcanzar los
puntos, control del flujo del programa, atención a entradas/salidas binarias, etc. En este caso, el
método guiado de utilizado es el de la botonera o joystick. El guiado extendido aumenta la
potencia del sistema de programación

Programación textual

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.
19

En la programación textual, la posibilidad de edición es total. El robot debe - 12 - 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 de datos,
posibilidad de creación de módulos operativos intercambiables, capacidad de adaptación a las
condiciones del mundo exterior, etc. En líneas generales, las ventajas de un lenguaje de
programación off-lline frente a la programación on-line son:

• El robot no se vuelve improductivo durante la programación

• Es más fácil la incorporación de sensores de visión y de fuerza

• Permite la sincronización de equipamiento externo, para manejarlo eficientemente.

• Las construcciones de bifurcación y bucle permiten un manejo de errores personalizado (en


algunos lenguajes on-line, también se puede).

• Tareas repetitivas (como paletización) pueden programarse con relativa facilidad, usando
herramientas como las macro o las subrutinas (algunos lenguajes de guiado también tienen esta
posibilidad).

• Se puede desarrollar una librería de subrutinas para utilizar en futuras tareas de programación;
soluciones programadas previamente se reutilizan para nuevos programas.

• Varios programadores pueden trabajar simultáneamente en partes diferentes de un programa


grande, y luego se juntan los módulos individuales.

• La programación off-line separa el entorno de programación del entorno de operación. Se


pueden utilizar sofisticadas herramientas de programación para ayudar en el desarrollo del
programa sin sobrecargar las capacidades computacionales del controlador. No obstante, también
existe alguna desventaja:

• Es muy dificultoso visualizar la trayectoria de un robot en el espacio de tres dimensiones.


Tratar de determinar la accesibilidad, las orientaciones adecuadas y las trayectorias sin
colisiones, plantea problemas importantes. Es más facil hacerlo con la programación mediante el
'teach pendant', donde la trayectoria del robot se crea a medida que se escribe el programa.
20

• Las limitaciones de la precisión del robot pueden dar lugar a errores de ejecución. La precisión
de un robot es la capacidad de posicionar el efector final en un punto objetivo especificado, en
relación con algún marco de referencia externo absoluto. La desviación entre el punto al que se
mueve y el punto realmente deseado es una medida de la precisión. Las imprecisiones son
resultado de las condiciones de carga y de la configuración del manipulador en el área de trabajo.
Las tolerancias de posicionamiento absoluta ajustadas pueden no ser alcanzables con un
programa generado estrictamente fuera de línea, - 13 - a menos que se utilicen sensores para
posicionar el robot con "guiado terminal".

• El programador no puede anticipar todas las posiciones y orientaciones exactas del equipo en el
espacio de trabajo. Por tanto, todos los puntos finales programados tienen probabilidad de tener
cierto error. El programa generado off-line puede necesitar ser “afinado” en el taller antes de la
producción, por ejemplo usando un teach pendant. La alernativa de una integración masiva de
sensores puede no ser económicamente justificable.

• Modulos programados que funcionan de forma aislada, pueden no funcionar cuando están
todos juntos ejecutándose en el robot.

• El trayecto exacto que tomará el robot, a menudo no es conocido en tiempo de programación.


Esto es debido a que el controlador del robot genera sus propios puntos intermedios en función
de la orienteación inicial, la orientación final, la carga, la velocidad, y los sensores de entrada.
Además, el robot puede parar a mitad ejecución de un movimiento, reorientarse, y continuar el
movimiento. Esto es una función del software interno del robot que trata de evitar que éste
exceda los límites de recorrido, o estire el cable umbilical.

• La sintaxis completa de un lenguaje puede ser compleja de aprender si no se es un técnico


informático. Estos inconvenientes hicieron que surgieran lenguajes que combinaban el modo
textual de programación con las sesiones de 'teach pendant' para producir los programas, dando
como resultado un enfoque económico y flexible que alguno denominaron “augmented teach”
(aprendizaje aumentado).

Programación textual explícita


21

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 una tarea. 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.

Programación textual explícita a nivel de moviemientos elementales Pueden describirse como


“movimiento punto a punto en forma de lenguaje”. El lenguaje describe los movimientos
primitivos que realizará el robot. Los puntos y movimientos pueden definirse por guiado.
Algunas características adicionales que proporciona el lenguaje son: estructuras de control, saltos
condicionales, subrutinas (con pase de parámetros), capacidades mejoradas de sensores,
ejecución paralela y definiciones de 'frames'. Se pueden distinguir dos tipos de lenguajes:

• Articular, cuando el lenguaje se dirige al control de los movimientos de las diversas


articulaciones del brazo.

• 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 - 15 - realizar bifurcaciones simples y saltos a
22

subrutinas, así como de tratar informaciones sensoriales. Algunos de los lenguajes de este tipo
son: APT, ANORAD, EMILY, MAL, RCL, RPL, VAL, SIGLA, WAVE, PLAW.

Programación explícita estructurada:

Este tipo de lenguajes permite la definición de estructuras de datos y de control complejas,


incorporando elementos de programación estructurada. Se pueden definir puntos, líneas, planos,
etc. así como transformaciones de coordenadas y capacidad sensorial para interactuar con el
entorno. Intenta introducir relaciones entre el objeto y el sistema del robot, para que los lenguajes
se desarrollen sobre una estructura formal. 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. También se les denomina
lenguajes de segunda generación, para diferenciarlos de los anteriores que conformarían la
primera generación. Algunas de sus caractarísticas son:

• Capacidad de control del movimiento, como en los de la primera generación

• Capacidad de incorporar datos de sensores avanzados tanto como las señales simples on/off de
los dispositivos binarios.

• Capacidad de procesar información recibida del entorno y modificar el comportamiento del


sistema

• Capacidad de interactuar con ordenadores para mantener un registro de los datos, generar
informes, etc.

• Extensibilidad del lenguaje para manejar requerimientos futuros (nuevos aspectos de los
futuros robotos), mediante el desarrollo de comandos, subrutinas y macros. Por ejemplo,
23

utilizando un lenguaje de segunda generación, un robot es capaz de controlar la fuerza de la


pinza sobre un objeto basándose en datos analógicos de un sensor de fuerza, lo que no sería
posible en un lenguaje de la primera generación, ya que esos solo permitían sensores binarios
on/off. En caso de producirse un error o fallo en el robot, el robot de primera generación
seguramente pararía, mientras que un robot programado con un lenguaje de segunda generación
puede recuperarse utilizando un algoritmo - 16 - inteligente programado en él. Algunos de los
lenguajes de este tipo son: AL, HELP, MAPLE, PAL, MCL, MAL Extendido, AML, VAL-II,
RAIL No siempre es fácil encuadrar un cierto lenguaje de programación explícita de robots en
uno de los dos grupos (movimientos elementales o estructurado), pues no son dos conjuntos
claramente separados, sino más bien una evolución, por lo que algunos están “a caballo” entre
ambos tipos.

Programación textual implícita o 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. Dentro de la
programación textual especificativa, hay dos clases, según que la orientación del modelo se
refiera a los objetos o 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
24

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. - 17 –

Programación implícita a nivel de objetivo

En estos lenguajes se define únicamente el producto final, siendo el sistema informático de


control, el que define los estados intermedios.

Programación implícita a nivel de tarea

Se realiza una modelización del entorno para permitir especificar las acciones a realizar por el
robot, indicando las tareas que se deben efectuar sobre los objetos. La programación es off-line,
completamente independiente del robot en el que se ejecutará. Después se realiza
automáticamente la generación de las acciones elementales que se ejecutarán en el robot. No
existe un verdadero lenguaje a nivel de tareas.

Diferentes autores han mencionado diferentes lenguajes por tener ciertas capacidades de nivel de
tarea. Alguno de ellos son AUTOPASS, LAMA, AL, RAPT y ROBEX, siendo RAPT y
AUTOPASS los más mencionados. En algunos casos se definieron las instrucciones a nivel de
tarea pero no se implementaron, o se implementaron parcialmente.

Lenguajes de programación de robots, de la A a la Z

ACL (Advanced Command Language)

ADAPT (Air Material Command Developed APT)

AL (Arm Language)

ALFA (1) (A Language For Automation)

ALFA (2)
25

AML (A Manufacturing Language)

AMPLE (Automated Manufacturing Programming Language Environment)

ANDROTEXT

ANORAD

APT (Automatically Programmed Tools)

APTLOFT

AR-BASIC (American Robot – Basic)

AR-SMART (American Robot - Smart)

ARCL (1) (A Robot Control Language)

ARCL (2) (Advanced Robot Control Library)

ARCLE (Assembly Robot Control Language)

ARL (Assembly Robot Language)

ARLA (ASEA Robot Language)

ARMBASIC

AS

ATP

AUTOAPT

AUTODRAFT

AUTOLOFT

AUTOMAP

AUTOPASS (Automatic Parts Assembly System)


26

AUTOPIT (Automatisch Programieren Inclusive Technologie)

AUTOPROMPT (Automated Programming of Machine Tools).

BASP

BEHAVIOR

CABSL(C-Based Agent Behavior Specification Language)

CADET

CAP1 (Conversational Auto Programming)

CIMPLER

COL Concurrency Oriented Language

COMPACT (COM-Share’s Program for Automatically Controlled Tools)

CPL (CRAM Plan Language)

CRCL (Canonical Robot Command Language)

CURL (Cambridge University Robot Language)

DAMN (Dynamic Analysis of Mechanical Networks)

DARL

DATA-BEADS

DDL (Drawing Descriptive Language)

DIAL (Drapper Industrial Assembly Language)

EARLS-2

EMILY (ML Extended)

ESL (Execution Support Language)


27

EXAPT (Extended APT)

FA-BASIC (Factory Automation BASIC)

FDTL (Fuzzy Decision Tree Language)

FEL (Feature Extraction Language)

FROB (Functional Robotics)

FSTN (Finite-State Transducer Network)

FUNKY

GERCS (Generic Educational Robot Control System)

GOLOG (alGOL in LOGic)

GRASP (General Robot Arm Simulation Program)

GRL (Generic Robot Language)

HARL (Hitachi Assembly Robot Language)

HELP

HIGH

HILAIRE

HMDL (Humanoid Motion Description language)

HR-BASIC

HZAPT

IBL (Instruction Based Learning)

IFAPT

ILMR (Intermediate Language for Mobile Robots)


28

INFORM

IRL (1)(Intuitive Robot Language)

IRL (2)(Industrial Robot Language)

IRPASS (Interactive Robot Programming and Simulation System)

JARS

KAM (Kinematic Analysis Method)

KAREL

KRL (Kuka Robot Language)

K2

L-IRL (Lola Industrial Robot Language)

LAMA (Language for Automatic Mechanical Assembly)

LAMA-S

LENNY

LERNA

LINGRAPHICA

LM (Language de Manipulation)

LM-GEO

LMAC (Modular Command Language for Industrial Robots)

LPR (Language de Programmation de Robot)

LRP (Live Robot Programming)

MAL (Multipurpose Assembly Language)


29

MAPLE

MAPS

MAPT (Micro APT)

MCL (Manufacturing Control Language)

MELFA BASIC (MBA)

MHI (Mechanical Hand Interpreter)

MicroPLANNER

MINI

MINIAPT

ML (Manipulator Language)

MML (Model-base Mobile robot Language)

MRL (1)(Multiagent Robot Language)

MRL (2)(Movemaster Command Language)

MYBASIC

NC/360

NELAPT (National Engineering Laratory APT)

NUCOL (Numerical Control Language).

PADL (Part and Assembly Description Language)

PAL (1)(Portable AL)

PAL (2)

PAM
30

PASLA ( Programmable Assembly robot Language

PASRO (Pascal for Robots)

PDL2

PILOT (Programming and Interpreted Language Of Actions for Telerobotics)

PLAW (Programming Language for Arc Welding)

POINTY

PRS (Procedural Reasoning System)

RAIL

RAPID (Robotics Application Programming Interactive Dialogue)

RAPT (Robot Automatically Programmed Tool)

RCCL. (Robot Control C Library)

RCL (Robot Command Language) (1)

RCL (Robot Command Language) (2)

RCS (Real-time control system)

REMAPT

RIPL (Robot Independent Programming Language)

RISE

RLC

ROBEX (Roboter Exapt)

ROBOCAM

ROBOFOTH
31

ROBOML

ROBOS

RoboTalk de Rhino

RoboTalk de Standord

RobotScript

ROCOL

ROL (Robot Language)

ROLL (Robot Learning Language)

ROMPS

ROPL (Robot Programming Laguage)

ROPS (Robot Off-line Porgramming System)

RPL (Robot Programming Language)

RPS (Robot Programming System)

RSS (Robot Servo System)

SERF (Sankyo Esasy Robot Formula)

SCOL (Symbolic Code Language for robot)

SCORBASE

SIGLA (Sigma Language)

SPEL (Suwa Seiko Production Equipement Language)

SPLAT (Simple Provisional Language for Actions and Tasks)

SPLIT (Sundstrand Processing Language Internally Translated)


32

SRCL (Siemens Robot Control Language)

SRIL-90

SRL (Structural Robot Language)

STRIPS (Standford Research Institute Problem Solver)

SWYM

T3

TDL (a Task Description Language for robot control)

TEACH

TPP (Teach Pendant Programming)

UNIAPT

URBISCRIPT

URSCRIPT

VAL (Vicarm Assembly Language) (Versatile Assembly Language)

VML (Virtual Machine Language)

V+

WAVE

XABSL (Extensible Agent Behavior Specification Language)

XPROBE (Experimental System for Programming Robots by Example)

YALTA (Yet Another Language for Telerobotics Application)

ZDRL (Zhe Da Robot Language)


33

Planificación de Trayectorias:

Una vez obtenidos los modelos cinemáticos y dinámicos del robot se puede abordar el problema
del control de los mismos. Definir el movimiento de un robot implica controlar dicho robot de
manera que siga un camino pre planificado. El objetivo es por tanto establecer cuáles son las
trayectorias que debe seguir cada articulación del robot a lo largo del tiempo para conseguir los
objetivos fijados, a la vez que se exige cumplir una serie de restricciones físicas impuestas por
los actuadores y de calidad de la trayectoria, como son suavidad, precisión, etc. Para un estudio
más estructurado del problema de control del robot, éste suele dividirse en dos bloques:

• Control cinemático o planificación de trayectorias. Consiste en describir el movimiento


deseado del manipulador como una secuencia de puntos en el espacio (con posición y
orientación). El control cinemático interpola el camino deseado mediante una clase de funciones
polinomiales y genera una secuencia de puntos a lo largo del tiempo.

• Control dinámico o control de movimiento. Trata de conseguir que el robot siga realmente las
trayectorias marcadas por el control cinemático teniendo en cuenta las limitaciones de los
actuadores y el modelo dinámico del robot. Tal y como se estudió en la práctica 3, el modelo
dinámico del robot es fuertemente no lineal, multivariable y acoplado. Esta práctica aborda el
control cinemático del robot, revisando los conceptos de planificación de trayectorias y las
herramientas necesarias para la interpolación polinomial entre los puntos de inicio y final del
camino.

Para llegar a obtener un planificador que funcione correctamente, los pasos a seguir son los
siguientes:

1. Estudiar las necesidades de movimiento especificadas por el usuario o por los sensores propios
del sistema robotizado, evitando colisiones con el entorno etc., obteniendo una expresión
analítica en coordenadas cartesianas de la trayectoria deseada en función del tiempo (libre de
colisiones). 2. Muestrear la trayectoria anterior en una serie finita de puntos nudo de control que
se utilizan como puntos inicial y final de cada segmento. Cada uno de estos puntos está
especificado por sus componentes cartesianas de posición y orientación (x,y,z,α,β,γ).
34

3. Pasar cada uno de estos puntos a coordenadas articulares del robot, utilizando para ello la
transformación homogénea inversa.

4. Realizar la interpolación entre los puntos de las coordenadas articulares y obtener para cada
articulación una expresión del tipo qi(t) para cada segmento de control. Se observa que un
planificador consiste en obtener una función de trayectoria q(t) que se modifica en cada intervalo
de control.

Si consideramos el planificador de trayectorias como un bloque de control, encontramos el


esquema siguiente:

Esquema general del control cinemático.


35

Tipos de Trayectorias.

La mejora tecnológica ha permitido que los robots puedan realizar trayectorias cada vez más
complejas, al poder ser éstas calculadas previamente. A continuación se cita brevemente una
clasificación de tipos de trayectorias de robots comerciales clásicos.

• Trayectorias punto a punto. En este tipo de trayectorias cada articulación se mueve


independientemente, sin considerar el efecto del resto de las articulaciones. Dentro de esta tipo se
engloban las trayectorias con movimiento eje a eje y las de movimiento simultáneo de ejes. En
las trayectorias con movimiento eje a eje en primer lugar se actúa sobre un motor, y cuando este
ha finalizado su recorrido, se activa el siguiente motor. Este tipo de movimiento tiene como
única ventaja el ahorro energético.
36

• Trayectorias coordinadas o isocronas. En este tipo de trayectorias se procura que el


movimiento de todos los actuadores sea coordinado e isocrona. Esto quiere decir que el actuador
que tarda más tiempo en alcanzar la posición requerida ralentiza al resto, de manera que ningún
movimiento acaba antes que el de otra articulación.

El tiempo total invertido en el movimiento es el menor posible, y los requerimientos de


velocidad y aceleración de los motores son menores que en otro tipo de movimiento. El
inconveniente de este tipo de planificadores es que la trayectoria que describe el extremo del
robot es desconocida a priori.

• Trayectorias continuas. En este tipo de trayectorias se pretende que el camino seguido por el
extremo del robot sea conocido. Para ello las trayectorias articulares deben acomodarse
conjuntamente. Cada articulación por separado parece tener un movimiento desordenado, sin
embargo el resultado es que el extremo se mueve siguiendo el camino previsto.

Interpolación. Cálculo de una trayectoria 4-3-4.

Siguiendo con el esquema general presentado en el apartado 5.2 se va a desarrollar en MatLab,


una herramienta de interpolación en el espacio de las variables articulares que proporciona
resultados aceptables con trayectorias de articulación suaves.

La trayectoria de la articulación se divide en algunos segmentos de trayectoria y cada uno de


éstos se ajusta mediante un polinomio de bajo grado. Se parte del supuesto que se conoce la
posición y orientación de dos puntos nudos en coordenadas cartesianas (x,y,z,α,β,γ). Se quiere
que el robot evolucione desde el punto inicial al punto final en un tiempo conocido. Asimismo se
tiene una serie de especificaciones máximas en los motores de las articulaciones.

De acuerdo con el esquema general, el paso siguiente es obtener las coordenadas articulares de
los puntos inicial y final, concretamente con la solución de la cinemática inversa. En el caso del
robot rotacional de 6 gdl se ha estudiado que la solución de la cinemática inversa puede ser
múltiple. Además debe tenerse en cuenta la posible existencia de singularidades en alguna de las
configuraciones del robot. En segundo lugar, debe hallarse un polinomio interpolador entre los
dos puntos nudos que cumpla con las especificaciones de los actuadores y que proporcione un
37

movimiento suave al robot. Como se ha visto anteriormente, este punto puede ser abordado bajo
varios enfoques y diferentes tipos de trayectorias.

Cada enfoque produce un resultado distinto pero igualmente válido dependiendo de los
requerimientos del usuario. Se puede pretender que el robot siga una determinada trayectoria en
línea recta o mover el manipulador a lo largo de una trayectoria polinomial uniforme que
satisface las ligaduras de posición y orientación en ambos puntos extremos. Se remite al lector a
la literatura específica en la cual encontrará varios ejemplos con distintos enfoques en los que se
utiliza desde interpoladores lineales simples hasta series de polinomios encadenados que
satisfacen todas las restricciones de la trayectoria. Se muestra a continuación un método para
obtener trayectorias de articulación interpoladas que ofrecen un resultado físicamente realizable.
Los perfiles de aceleración y velocidad obtenidos para cada articulación son realizables por
actuadores comerciales. La trayectoria obtenida es del tipo isocrona.

Prácticas de Robótica utilizando Matlab, Trayectorias de articulación interpolada Con el


objetivo de que el movimiento del robot sea suave y esté de acuerdo con las restricciones de los
actuadores se divide cada trayectoria articular en tres segmentos, correspondientes a la
aceleración del motor, el periodo de velocidad máxima y la deceleración o frenado del motor. La
gráfica siguiente muestra esta división en la que se puede observar como los periodos de
aceleración y frenado ofrecen un movimiento suave del robot.
38

Las restricciones en los puntos de control que se utilizan para resolver el cálculo de los
polinomios interpoladores son las siguientes: ⇒ Posición inicial (t0)  Posición θ(t0) 
Velocidad inicial (normalmente nula)  Aceleración inicial (normalmente nula) ⇒ Posición
intermedia (t1)  Posición θ(t1)  Continuidad en posición  Continuidad en velocidad 
Continuidad en aceleración ⇒ Posición intermedia (t2)  Posición θ(t2)  Continuidad en
posición  Continuidad en velocidad  Continuidad en aceleración ⇒ Posición final (t3) 
Posición θ(t3)  Velocidad final (normalmente nula)  Aceleración final (normalmente nula)

Polinomios 4-3-4

Utilizando este tipo de polinomios interpoladores se tiene los siguientes tres segmentos de
trayectorias para cada articulación:

En primer lugar hay que considerar que al estar hallando las trayectorias articulares para las N
articulaciones del manipulador, es conveniente introducir una variable de tiempo normalizada
t∈[0,1], que permita simplificar los cálculos al evitar tener que contabilizar los desfases
temporales, de tal manera que t=0 corresponda al inicio de cualquiera de los tres segmentos en
que se ha dividido el camino y t=1 corresponda al final del segmento de trayectoria.

Matemáticamente, este cambio de variable queda expresado como:


39
40
41

GEOMETRIA ESPACIAL

Existen dos métodos para representar geométricamente un robot, es decir, dos maneras de
representar las características físicas del robot en un sistema de coordenadas referenciado a cada
articulación. El más común y antiguo es el método de Denavit-Hartenberg (1955). Sin embargo,
debido a las limitaciones de dicho método frente estructuras robóticas más complejas, Khalil-
Kleinfinger (1986) desarrollaron un método más general. Dicho método también es utilizado en
los libros de Craig (1986) y Ollero (2001). Antes de utilizar este método se debe realizar la
colocación de los ejes x y z sobre las articulaciones del robot (el eje y no es importante).

Para esto se deben tener en cuenta dos consideraciones:

• el eje zj es el eje de la articulación j, es decir el eje sobre el cual rota o se traslada la


articulación. • el eje xj es perpendicular común a los ejes zj y zj+1 (esto implica que el eje xj
forma un ángulo de 90º con cada uno de los ejes zj y zj+1, y que además los toque directamente).
Se definen cinco parámetros geométricos para cada una de las articulaciones del robot: σj: tipo
de articulación (σj = 0 si la articulación es rotoide; σj = 1 si la articulación es prismática). αj:
ángulo entre los ejes zj-1 y zj correspondiente a una rotación alrededor de xj-1.
42

Procedimiento para hallar la tabla de parámetros geométricos de un robot

A) Colocar los ejes zj- de cada articulación.

B) Colocar los ejes xj- de cada articulación, teniendo en cuenta la condición de


perpendicularidad común expresada anteriormente.

C) Hallar los cinco parámetros geométricos dependiendo de la relación (distancias y ángulos)


entre los ejes de las articulaciones.
43

La anterior figura muestra la arquitectura de un robot tipo PUMA de seis grados de libertad,
donde todas las articulaciones son rotoides. Obsérvese igualmente que las tres primeras
articulaciones corresponden a un portador antropomórfico mientras que las tres últimas
corresponden a una muñeca tipo rótula. La Figura 2.1 muestra el robot visto en tres dimensiones
y en dos, con el fin de facilitar su análisis. Nótese que intencionalmente en la figura de la derecha
se ha rotado la articulación número cinco, sin embargo esto no varía la tabla de parámetros
geométricos.
44

También podría gustarte