El software robótico es el conjunto de comandos o instrucciones codificadas que le indican a un dispositivo mecánico y un sistema electrónico, conocidos en conjunto como robot , qué tareas debe realizar. El software robótico se utiliza para realizar tareas autónomas. Se han propuesto numerosos sistemas y marcos de software para facilitar la programación de robots.
Algunos programas informáticos para robots tienen como objetivo desarrollar dispositivos mecánicos inteligentes. Las tareas comunes incluyen bucles de retroalimentación , control , búsqueda de rutas , filtrado de datos, localización y compartición de datos .
Introducción
Aunque se trata de un tipo de software específico, es bastante diverso. Cada fabricante tiene su propio software para robots. Si bien la gran mayoría del software se centra en la manipulación de datos y la visualización del resultado en pantalla, el software para robots se utiliza para la manipulación de objetos o herramientas en el mundo real.
Software para robots industriales
El software para robots industriales consta de objetos de datos y listas de instrucciones, conocidas como flujo de programa (lista de instrucciones). Por ejemplo,
Ir a Jig1
Es una instrucción para que el robot vaya a los datos de posición llamados Jig1. Por supuesto, los programas también pueden contener datos implícitos, por ejemplo
Dile al eje 1 que se mueva 30 grados.
Los datos y el programa suelen residir en secciones separadas de la memoria del controlador del robot. Se pueden modificar los datos sin modificar el programa y viceversa. Por ejemplo, se puede escribir un programa diferente utilizando la misma plantilla Jig1 o ajustar la posición de Jig1 sin modificar los programas que la utilizan.
Ejemplos de lenguajes de programación para robots industriales
Debido a la naturaleza altamente propietaria del software para robots , la mayoría de los fabricantes de hardware para robots también proporcionan su propio software. Si bien esto no es inusual en otros sistemas de control automatizados , la falta de estandarización de los métodos de programación para robots plantea ciertos desafíos. Por ejemplo, existen más de 30 fabricantes diferentes de robots industriales , por lo que también se requieren 30 lenguajes de programación diferentes para robots. Hay suficientes similitudes entre los diferentes robots como para que sea posible obtener una comprensión general de la programación de robots sin tener que aprender el lenguaje propietario de cada fabricante. [ 1 ]
Un método para controlar robots de múltiples fabricantes consiste en utilizar un postprocesador y un software de programación fuera de línea (robótica) . Con este método, es posible manejar el lenguaje de programación específico de cada marca desde un lenguaje de programación universal, como Python . [ 2 ] Sin embargo, compilar y cargar código fijo fuera de línea en un controlador de robot impide que el sistema robótico sea consciente de su estado, por lo que no puede adaptar su movimiento ni recuperarse a medida que cambia el entorno. Actualmente, es posible un control adaptativo unificado en tiempo real para cualquier robot con algunas herramientas de terceros.
A continuación se muestran algunos ejemplos de lenguajes de programación para robots publicados.
Tarea explicada en lenguaje sencillo:
Muévase a P1 (una posición generalmente segura). Pasar a P2 (un acercamiento a P3) Muévase a P3 (una posición para recoger el objeto). Pinza cerrada Pasar a P4 (un acercamiento a P5) Muévase a P5 (una posición para colocar el objeto). Pinza abierta Pasar a P1 y terminar
VAL fue uno de los primeros "lenguajes" para robots y se utilizó en los robots Unimate . [ 3 ] Otros fabricantes, como Adept Technology , han utilizado variantes de VAL . Actualmente, Stäubli utiliza VAL3.
Programa de ejemplo:
PROGRAMA DE SELECCIÓN 1. MOVER P1 2. MOVER P2 3. MOVER P3 4. CLOSEI 0.00 5. MOVER P4 6. MOVER P5 7. ABIERTO 0.00 8. MOVER P1 .FIN
Ejemplo de programa Stäubli VAL3:
comenzar moverj(p1,tGripper,mNomSpeed) movej(appro(p3,trAppro),tGripper,mNomSpeed) mover(p3,tGripper,mNomSpeed) cerrar(tGripper) movej(appro(p5,trAppro),tGripper,mNomSpeed) mover(p5,tGripper,mNomSpeed) abrir(tGripper) moverj(p1,tGripper,mNomSpeed) fin
trAppro es una variable de transformación cartesiana. Si la usamos con el comando appro, no necesitamos enseñar el punto P2 y P4, sino que transformamos dinámicamente una aproximación a la posición de recogida y colocación para la generación de la trayectoria.
Epson RC+ (ejemplo de aspiradora)
Función PickPlace Salto P1 Salto P2 Salto P3 En el vacío Espera .1 Salto P4 Salto P5 Apague la aspiradora Espera .1 Salto P1 Defenderse
ROBOFORTH (un lenguaje basado en FORTH ).
: RECOGER P1 P3 AGARRAR RETIRAR P5 SOLTAR RETIRAR P1 ;(Con Roboforth puedes especificar las posiciones de aproximación para los lugares, por lo que no necesitas P2 y P4).
Evidentemente, el robot no debe continuar el siguiente movimiento hasta que la pinza esté completamente cerrada. La confirmación o el tiempo permitido están implícitos en los ejemplos anteriores de CLOSEI y GRIP, mientras que el comando On vacuum requiere un retardo para garantizar una succión adecuada.
Otros lenguajes de programación de robots
lenguaje de programación visual
El lenguaje de programación LEGO Mindstorms EV3 es sencillo e intuitivo. Se trata de una interfaz gráfica de usuario (GUI) desarrollada con LabVIEW . El enfoque consiste en comenzar con el programa, en lugar de con los datos. El programa se construye arrastrando iconos al área de programación y añadiéndolos o insertándolos en la secuencia. Para cada icono, se especifican los parámetros (datos). Por ejemplo, para el icono del controlador de motor, se especifican los motores y su recorrido. Una vez escrito el programa, se descarga en el microcontrolador Lego NXT para su prueba.
Lenguajes de scripting
Un lenguaje de scripting es un lenguaje de programación de alto nivel que se utiliza para controlar la aplicación de software y se interpreta en tiempo real, o se traduce sobre la marcha, en lugar de compilarse previamente. Un lenguaje de scripting puede ser un lenguaje de programación de propósito general o estar limitado a funciones específicas que se utilizan para optimizar la ejecución de una aplicación o programa del sistema. Algunos lenguajes de scripting, como RoboLogix , tienen objetos de datos que residen en registros, y el flujo del programa representa la lista de instrucciones, o conjunto de instrucciones , que se utiliza para programar el robot.
Los lenguajes de programación suelen diseñarse para construir estructuras de datos y algoritmos desde cero, mientras que los lenguajes de scripting se centran más en conectar o "unir" componentes e instrucciones. Por consiguiente, el conjunto de instrucciones de un lenguaje de scripting suele ser una lista simplificada de comandos que se utilizan para agilizar el proceso de programación y facilitar el desarrollo rápido de aplicaciones.
Lenguajes paralelos
Otro enfoque interesante que merece mención es el siguiente: todas las aplicaciones robóticas requieren paralelismo y programación basada en eventos. El paralelismo implica que el robot realice dos o más tareas simultáneamente. Esto exige hardware y software adecuados. La mayoría de los lenguajes de programación se basan en hilos o clases de abstracción complejas para gestionar el paralelismo y la complejidad que conlleva, como el acceso concurrente a recursos compartidos. URBI proporciona un nivel superior de abstracción al integrar el paralelismo y los eventos en el núcleo de la semántica del lenguaje.
siempre que ( face.visible ) { headPan.val + = camera.xfov * face.x & headTilt.val + = camera.yfov * face.y }El código anterior moverá los headPanmotores headTilten paralelo para que la cabeza del robot siga el rostro humano visible en el vídeo grabado por su cámara cada vez que el robot detecte un rostro.
Software de aplicación para robots
Independientemente del lenguaje de programación utilizado, el software para robots tiene como objetivo crear aplicaciones que ayuden o entretengan a las personas. Estas aplicaciones incluyen software de mando y control y de gestión de tareas. El software de mando y control incluye interfaces gráficas de usuario (GUI) para el control de robots teleoperados, software de comandos mediante clic para robots autónomos y software de programación para robots móviles en fábricas. El software de gestión de tareas incluye interfaces sencillas de arrastrar y soltar para configurar rutas de reparto, patrullas de seguridad y visitas guiadas; también incluye programas personalizados diseñados para implementar aplicaciones específicas. El software de aplicaciones robóticas de propósito general se implementa en plataformas robóticas ampliamente distribuidas.
Consideraciones de seguridad
Los errores de programación representan un grave problema de seguridad, especialmente en robots industriales de gran tamaño. La potencia y el tamaño de estos robots implican que pueden causar lesiones graves si se programan incorrectamente o se utilizan de forma insegura. Debido a su masa y alta velocidad, siempre es peligroso que una persona permanezca en el área de trabajo del robot durante su funcionamiento automático. El sistema puede iniciar el movimiento en momentos inesperados y, en muchas situaciones, una persona no podrá reaccionar con la suficiente rapidez, incluso si está preparada para ello. Por lo tanto, aunque el software no presente errores de programación, es fundamental extremar las precauciones para garantizar la seguridad de los trabajadores y la interacción humana con el robot, como la carga y descarga de piezas, la eliminación de atascos o el mantenimiento. La norma ANSI/RIA R15.06-1999, Norma Nacional Americana para Robots Industriales y Sistemas Robóticos - Requisitos de Seguridad (revisión de ANSI/R15.06-1992), publicada por la Asociación de Industrias Robóticas, es la norma de referencia en materia de seguridad robótica. Esta norma incluye directrices tanto para el diseño de robots industriales como para su implementación, integración y uso en la planta de producción. Se abordan numerosos conceptos de seguridad, como los controladores de seguridad, la velocidad máxima durante el modo de aprendizaje y el uso de barreras físicas.
Véase también
- Inteligencia artificial
- Planificación y programación automatizadas
- Robótica basada en el comportamiento y arquitectura de subsunción
- Robótica cognitiva
- Cibernética
- Robótica del desarrollo
- Robótica epigenética
- Robótica evolutiva
- Robot industrial
- Lista de software de robótica
- RoboLogix
- Control de robots
- Software de automatización robótica
- Conjunto de robótica
- Plataformas de robótica de enjambre
- Telerrobótica / Telepresencia
Referencias
- ↑ "El futuro de la programación de robots fuera de línea" . Blog de CoRo . 25 de octubre de 2015. Archivado del original el 26 de febrero de 2021. Consultado el 3 de enero de 2017 .
- ↑ RoboDK. "Programación sin conexión - RoboDK" . www.robodk.com . Consultado el 3 de enero de 2017 .
- ↑ O. Nnaji, Bartholomew (1993). Teoría del ensamblaje y la programación de robots automáticos ( ed. 1993). Springer. pág. 5. ISBN 978-0412393105. Consultado el 8 de febrero de 2015 .
- ↑ «Lenguajes de programación de robots» . Fabryka robotów . Consultado el 8 de febrero de 2015 .
Enlaces externos
- Enlace obsoleto en archive.today (archivado el 27/01/2013) Dispositivos Linux.
- Norma nacional estadounidense ANSI/RIA R15.06-1999 para robots industriales y sistemas robóticos: requisitos de seguridad (revisión de la norma ANSI/RIA R15.06-1992)
- Software de robótica