Programación de Inteligencia Robótica
Programación De Robot
El proceso de programación de un robot consiste en
introducir en su sistema de control las instrucciones necesarias para que
desempeñe las tareas por
las cual ha sido diseñado.
Propiedades características de los robots Las
características más importantes de los robots son:
- Versatilidad: es la
posibilidad de ejecutar diversas tareas, o la misma tarea, de formas diversas.
Estos robots deben tener una estructura mecánica de geometría variable.
- Autoadaptabilidad: de los robots es la posibilidad, de
estos, por alcanzar el objetivo que se le ha fijado (ejecutar su tarea), a
pesar de las perturbaciones imprevistas del entorno a lo largo de la ejecución
de su tarea. Esto supone que el robot sea consciente de su entorno y, por lo
tanto, posea sentidos artificiales (sensores).
Inteligencia Artificial
La inteligencia artificial, es la inteligencia
exhibida por las maquinas.
La Inteligencia Artificial tiene dos aspectos, uno como ciencia cognitiva y otro
como tecnología informática, y sus características esenciales son:
- Información simbólica preferente a la numérica.
- Métodos heurísticos preferente a los algorítmicos.
- Uso de conocimiento específico-declarativo.
- Informaciones incompletas o con incertidumbre.
- Multidisciplinaridad.
Son cuatro pilares básicos en los que se
apoya la inteligencia artificial:
- Estado producidos por las acciones
posibles.
- Algoritmos Genéricos (análogo al
proceso de evolución de las cadenas de ADN)
- Redes neuronales Artificiales (análogo
al funcionamiento físico del cerebro de animales y humanos)
- Razonamiento mediante una lógica formal
análogo al pensamiento abstracto humano.
La IA en la robótica:
A finales de los años 70, se produjo un nuevo giro en el campo de la
investigación relacionada con la inteligencia artificial: la aparición de robots.
Los robots experimentales creados para estos efectos eran automatismos
capaces de recibir información procedente del mundo exterior (p. ej, sensores,
cámaras de televisión, etc.), así como órdenes de un manipulador humano
(expresadas en lenguaje natural). De este modo, el robo determinaba un plan
y, de acuerdo con él, ejecutaba las órdenes recibidas mediante el empleo de un
modelo del universo en el que se encontraba. Era incluso capaz de prever las
consecuencias de sus acciones y evitar, así, aquéllas que más tarde pudieran
resultarle inútiles o, en algún momento, perjudiciales. Estos primeros robots
experimentales eran bastante más inteligentes que los robots industriales, y lo
eran porque disponían de un grado mucho mayor de percepción del entorno
que los robots empleados en las cadenas de producción.
El principal problema con el que se enfrenta la inteligencia artificial aplicada a
los robots es el de la visión. Mientras que la información recibida a través de
sensores se puede interpretar con relativa facilidad y entra a formar parte de la
descripción del modelo de universo que

emplea el robot para tomar decisiones,
la percepción de las imágenes captadas y su interpretación correcta es una labor muy compleja. En cuanto a la interpretación de las imágenes captadas
mediante cualquier sistema, se ha logrado ya el reconocimiento de formas
preprogramadas o conocidas, lo que permite que ciertos robots lleven a cabo
operaciones de reubicación de piezas o colocación en su posición correcta a
partir de una posición arbitraria.
Sin embargo, no se ha logrado aún que el sistema perciba la imagen tomada
mediante una cámara de ambiente y adapte su actuación al nuevo cúmulo de
circunstancias que esto implica. Así, por ejemplo, la imagen ofrecida por una
cámara de vídeo de las que se emplea en vigilancia y sistemas de seguridad
no puede ser interpretada directamente por el ordenador.
Referencia:
Díaz, D. Inteligencia Artificial
yprogramación neuronal.
Publicado originalmente en
http://cinefantastico.com/nexus7/
Comunicación con los robots.
La comunicación con los robots no sólo se basa en la
programación de éste, también hay comunicación entre los distintos periféricos
del robot industrial, y cada vez estos periféricos son mayores en cuanto a número.
Los protocolos de comunicación utilizados por los sistemas automatizados suelen
ser numerosos para así ajustarse a las posibles necesidades del usuario. En la ilustración inferior, se puede observar la multitud de periféricos instalables en un sistema de KUKA, y las posibles comunicaciones contempladas.
El lenguaje es el medio que utiliza el hombre para gobernar
las máquinas controladas por sistemas informáticos, de manera, que su correcta
adaptación con la tarea a realizar y sencillez de manejo, son factores
determinantes del rendimiento obtenido en los robots industriales.
Hay tres maneras generales de comunicarse con un robot que
son: reconocimiento de voz, enseñanza y repetición y lenguajes de programación
de alto nivel.
Los sistemas de reconocimiento de voz con la tecnología
actual, son bastante primitivos. Estos sistemas pueden reconocer un conjunto de
palabras concretas de un vocabulario 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 que cada vez los PC’s son más
rápidos y eficientes. La utilidad del reconocimiento de palabras separadas para
describir la tarea de un robot es bastante limitada. Así mismo, pueden
confundirse los ruidos ambientales con la voz.
La
enseñanza y repetición, también conocido como guiado, es la solución más
utilizada en la actualidad en los robots industriales. Este método consiste en
guiar al robot (enseñar), 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:
•
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.
•
Reproduciendo y repitiendo el movimiento
enseñado.
•
Si el movimiento enseñado es correcto, entonces
se hace funcionar al robot a la velocidad correcta, en modo repetitivo.
Podemos
guiar al robot en movimientos lentos 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. 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, requiere
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. Este
tipo de interacción sólo 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, C, 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 robótica.
El
problema, es que los lenguajes desarrollados hasta el momento, se han dirigido
a un determinado modelo de controladora de robot, lo que ha impedido la
aparición de lenguajes estándar y transportables entre máquinas, es decir, 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 requerida.
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 más utilizada en las aplicaciones industriales y
consta de dos técnicas fundamentales:
1.
Programación Gestual o
Directa (Guiado): 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 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 la programación "on-line". Los lenguajes de programación
gestual, además de necesitar al propio robot en la confección del programa,
carecen de adaptabilidad en tiempo real con el entorno y no pueden tratar, con
facilidad, interacciones de emergencia. La programación gestual se subdivide en
dos clases:
- Programación por 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.
- Programación mediante un
dispositivo de enseñanza (botonera). 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.
1.
Programación Textual: En
la programación textual, las acciones que ha de realizar el brazo se
especifican mediante el programa, que consta de un texto de instrucciones o
sentencias (en un lenguaje determinado), cuya confección no requiere de la
intervención del robot; es decir, se efectúan "off-line". Así mismo,
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.
Las trayectorias del
manipulador se calculan matemáticamente con gran precisión y se evita el
posicionamiento a ojo, muy corriente en la programación gestual. En esta labor
no participa la máquina (off-line). Los lenguajes de programación textual se
encuadran en varios niveles, según se realice la descripción del trabajo del
robot. Estos son los lenguajes de programación por orden creciente de
complejidad:
- Lenguajes elementales, que
controlan directamente el movimiento de las articulaciones del manipulador.
- Lenguajes dirigidos a
posicionar el elemento terminal del manipulador.
- Lenguajes orientados hacia el
objeto sobre el que opera el sistema.
- Lenguajes enfocados a la
tarea que realiza el robot.
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 de datos, 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: 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:
a)
Nivel de movimiento
elemental: comprende los lenguajes dirigidos a controlar los movimientos del
brazo manipulador. Existen dos tipos:
•
Articular, cuando el
lenguaje se dirige al control de los movimientos de las diversas articulaciones
del brazo. 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.
•
Cartesiano, cuando el
lenguaje define los movimientos relacionados con el sistema de manufactura, es
decir, los del punto final del trabajo (Tool Center Point). 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.
b)
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,
LABVIEW, o cualquier programa parecido. 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, se utilizan mucho las transformaciones de
coordenadas, que exigen un cierto nivel de conocimientos. Por este motivo
dichos lenguajes no son populares hoy en día.
2.
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 se ha de disponer del modelo de donde se encuentra el
robot. Este modelo será, normalmente, una base de datos más o menos compleja,
requiriendo 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 la orientación a la que se refiera el
modelo, objeto u 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.
- Cuando el modelo se orienta hacia los objetivos, se define
el producto final. La creación de lenguajes de muy alto nivel transferirá una
gran parte del trabajo de programación, desde el usuario hasta el sistema
informático; éste resolverá la mayoría de los problemas, combinando la
Automática y la Inteligencia Artificial.
Referencia:
Aspectos
Diferenciales De La Programación De Robots