Software de robot

El software de robot es el conjunto de comandos o instrucciones codificados que le indican a un dispositivo mecánico y sistema electrónico, conocidos como robot, qué tareas deben realizar. El software de robot se utiliza para realizar tareas autónomas. Se han propuesto muchos sistemas y marcos de software para facilitar la programación de los robots.

Algún software de robot tiene como objetivo desarrollar dispositivos mecánicos inteligentes. Las tareas comunes incluyen bucles de retroalimentación, control, pathfinding, filtrado de datos, localización y uso compartido de datos.

Introducción
Si bien es un tipo específico de software, todavía es bastante diverso. Cada fabricante tiene su propio software de robot. Si bien la gran mayoría del software trata sobre la manipulación de datos y el resultado en pantalla, el software de robot sirve para manipular objetos o herramientas en el mundo real.

Software de robot industrial
El software para robots industriales consta de objetos de datos y listas de instrucciones, conocido 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 normalmente residen en secciones separadas de la memoria del controlador del robot. Uno puede cambiar los datos sin cambiar el programa y viceversa. Por ejemplo, uno puede escribir un programa diferente usando el mismo Jig1 o uno puede ajustar la posición de Jig1 sin cambiar los programas que lo usan.

Ejemplos de lenguajes de programación para robots industriales.
Debido a la naturaleza altamente patentada del software de robot, la mayoría de los fabricantes de hardware de robot 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, hay más de 30 fabricantes diferentes de robots industriales, por lo que también se requieren 30 lenguajes de programación de robots diferentes. Existen suficientes similitudes entre los diferentes robots que es posible obtener una comprensión amplia de la programación de robots sin tener que aprender el lenguaje exclusivo de cada fabricante.

Un método para controlar robots de varios fabricantes es utilizar un software de postprocesamiento y programación fuera de línea (robótica). Con este método, es posible manejar un lenguaje de programación de robots específico de la marca desde un lenguaje de programación universal, como Python (lenguaje de programación). sin embargo, compilar y cargar un código fijo fuera de línea a un controlador de robot no permite que el sistema robótico sea consciente del estado, por lo que no puede adaptar su movimiento y recuperarse a medida que cambia el entorno. Actualmente, el control adaptativo en tiempo real unificado para cualquier robot solo es posible con Actin.

A continuación se muestran algunos ejemplos de lenguajes de programación de robots publicados.

Tarea en inglés sencillo:
Mover a P1 (una posición segura general)
Mover a P2 (una aproximación a P3)
Mover a P3 (una posición para recoger el objeto)
Cerrar pinza
Mover a P4 (una aproximación a P5)
Mover a P5 (una posición para colocar el objeto)
Pinza abierta
Mover a P1 y terminar
VAL fue uno de los primeros ‘lenguajes’ de robots y se utilizó en robots Unimate. Las variantes de VAL han sido utilizadas por otros fabricantes, incluida la tecnología Adept. Stäubli actualmente utiliza VAL3.
Ejemplo de programa:
PICKPLACE DEL PROGRAMA
1. MOVE P1
2. MOVE P2
3. MOVE P3
4. CLOSEI 0.00
5. MOVE P4
6. MOVE P5
7. OPENI 0.00
8. MOVE P1
.FIN
Ejemplo de programa Stäubli VAL3:
empezar
movej (p1, tGripper, mNomSpeed)
movej (apr (p3, trAppro), tGripper, mNomSpeed)
movel (p3, tGripper, mNomSpeed)
cerrar (tGripper)
movej (apr (p5, trAppro), tGripper, mNomSpeed)
movel (p5, tGripper, mNomSpeed)
abierto (tGripper)
movej (p1, tGripper, mNomSpeed)
fin
trAppro es una variable de transformación cartesiana. Si utilizamos el comando apr, no es necesario que enseñemos los puntos P2 y P4, pero transformamos dinámicamente un enfoque de la posición de selección y ubicación para la generación de la trayectoria.
Epson RC + (ejemplo para una recogida al vacío)
Función PickPlace
Saltar P1
Saltar P2
Saltar p3
En vacío
Espera .1
Saltar P4
Saltar P5
Fuera de vacío
Espera .1
Saltar P1
Defenderse
ROBOFORTH (un lenguaje basado en FORTH).
: PICKPLACE
P1
P3 GRIP RETIRADA
P5 UNGRIP RETIRO
P1
;
(Con Roboforth puede especificar posiciones de aproximación para lugares, por lo que no necesita P2 y P4).

Claramente, 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 En vacío requiere un tiempo de espera para asegurar una succión satisfactoria.

Otros lenguajes de programación de robots.

Lenguaje de programación visual
El lenguaje de programación LEGO Mindstorms EV3 es un lenguaje simple para que sus usuarios interactúen. Es una interfaz gráfica de usuario (GUI) escrita con LabVIEW. El enfoque es comenzar con el programa en lugar de con los datos. El programa se construye arrastrando íconos al área del programa y agregando o insertando en la secuencia. Para cada icono, a continuación, especifique los parámetros (datos). Por ejemplo, para el ícono del motor, usted especifica qué motores y cuánto se mueven. Cuando se escribe el programa, se descarga en el ‘bloque’ de Lego NXT (microcontrolador) 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 compilarlo por adelantado. Un lenguaje de scripting puede ser un lenguaje de programación de propósito general o puede estar limitado a funciones específicas utilizadas para aumentar la ejecución de una aplicación o programa del sistema. Algunos lenguajes de script, como RoboLogix, tienen objetos de datos que residen en los registros, y el flujo del programa representa la lista de instrucciones, o conjunto de instrucciones, que se usa para programar el robot.

Lenguajes de programación en robótica industrial.
Marca de robot Idioma nombre
ABB RAPID
Comau PDL2
Fanuc karel
Kawasaki AS
Kuka KRL
Stäubli VAL3
Yaskawa Inform
Los lenguajes de programación generalmente están diseñados para construir estructuras de datos y algoritmos desde cero, mientras que los lenguajes de scripting están destinados más para conectar, o “pegar”, componentes e instrucciones juntos. En consecuencia, el conjunto de instrucciones del lenguaje de scripting suele ser una lista simplificada de comandos de programa que se utilizan para simplificar el proceso de programación y proporcionar un rápido desarrollo de aplicaciones.

Lenguajes paralelos
Otro enfoque interesante es digno de mención. Todas las aplicaciones robóticas necesitan paralelismo y programación basada en eventos. El paralelismo es donde el robot hace dos o más cosas al mismo tiempo. Esto requiere hardware y software apropiados. La mayoría de los lenguajes de programación se basan en hilos o clases de abstracción complejas para manejar el paralelismo y la complejidad que conlleva, como el acceso simultáneo a los recursos compartidos. URBI proporciona un mayor nivel de abstracción al integrar el paralelismo y los eventos en el núcleo de la semántica del lenguaje.

siempre que (cara.visible)
{
headPan.val + = camera.xfov * face.x
&erio;
headTilt.val + = camera.yfov * face.y
}

El código anterior moverá los motores headPan y headTilt en paralelo para hacer que la cabeza del robot siga la cara humana visible en el video tomado por su cámara cada vez que el robot vea una cara.

Software de aplicación de robot
Independientemente del idioma que se use, el resultado final del software de robot es crear aplicaciones robóticas que ayuden o entretengan a las personas. Las aplicaciones incluyen software de comando y control y tareas. El software de comando y control incluye GUI de control de robot para robots operados por teléfono, software de comando de apuntar y hacer clic para robots autónomos y software de programación para robots móviles en fábricas. El software Tasking incluye interfaces simples de arrastrar y soltar para configurar rutas de entrega, patrullas de seguridad y visitas de visitantes; También incluye programas personalizados escritos para implementar aplicaciones específicas. El software de aplicación de robot de propósito general se implementa en plataformas robóticas ampliamente distribuidas.

Consideraciones de seguridad
Los errores de programación representan una seria consideración de seguridad, especialmente en los grandes robots industriales. La potencia y el tamaño de los robots industriales hacen que sean capaces de infligir lesiones graves si se programan incorrectamente o se usan de manera insegura. Debido a la masa y las altas velocidades de los robots industriales, siempre es inseguro que un humano permanezca en el área de trabajo del robot durante la operación automática. El sistema puede iniciar el movimiento en momentos inesperados y un ser humano no podrá reaccionar con la suficiente rapidez en muchas situaciones, incluso si está preparado para hacerlo. Por lo tanto, incluso si el software está libre de errores de programación, se debe tener mucho cuidado de hacer que un robot industrial sea seguro para los trabajadores humanos o la interacción humana, como cargar o descargar piezas, eliminar un atasco de piezas o realizar el mantenimiento. El estándar ANSI / RIA R15.06-1999 de American National para robots industriales y sistemas de robots – Requisitos de seguridad (revisión de ANSI / RIA R15.06-1992) de la Robotic Industries Association es la norma aceptada sobre seguridad de robots. Esto incluye pautas tanto para el diseño de robots industriales, como para la implementación o integración y uso de robots industriales en el piso de la fábrica. Se cubren numerosos conceptos de seguridad, como los controladores de seguridad, la velocidad máxima durante un modo de enseñanza y el uso de barreras físicas.

Proyectos de software de robótica.
La siguiente es una lista de código abierto y software libre para proyectos de robótica.

CLARAty – Arquitectura de capa acoplada para la autonomía robótica. Es un esfuerzo de colaboración entre cuatro instituciones: el Laboratorio de Propulsión a Chorro de la NASA, el Centro de Investigación Ames de la NASA, Carnegie Mellon y la Universidad de Minnesota.
dLife – Biblioteca Java de código libre / abierto para robótica, inteligencia artificial y visión. Compatible con Pioneer, Khepera II & amp; II, robots de Hemission, Aibo y Finch, así como simulaciones de jugador / escenario.
Marco de robótica experimental: un software para realizar experimentos con múltiples robots en 3D, con soporte para las últimas tecnologías, que se encuentra en la parte superior de Player / Stage y Open / CV.
MARIE – Entorno de integración robótica móvil y autónoma – es un software gratuito que utiliza un enfoque basado en componentes para construir sistemas de software robóticos mediante la integración de componentes de software nuevos y ya existentes.
Microsoft – Microsoft Robotics Developer Studio
OpenRDK: un marco de software de código abierto para robótica para el desarrollo de módulos acoplados libremente. Proporciona una gestión transparente de la concurrencia, una comunicación basada en la pizarra entre procesos (a través de sockets) e intra-proceso (a través de una memoria compartida) y una técnica de enlace que permite el diseño conceptual del sistema de puertos de datos de entrada / salida. Se proporcionan módulos para conectarse a simuladores y controladores de robot genéricos.
OpenRTM-aist: una plataforma de software desarrollada sobre la base del estándar de middleware RT. Es desarrollado por el Instituto Nacional de Ciencia y Tecnología Industrial Avanzada en Japón.
OROCOS: el proyecto de software de control de robots abiertos proporciona un kit de herramientas de software gratuito para el brazo de robot en tiempo real y el control de la máquina herramienta.
OPRoS – Open Platform Robotic Services es un proyecto de código abierto para el desarrollo de robots. Proporciona una solución que incluye una plataforma de robot y herramientas de desarrollo de GUI con el código fuente de los componentes del dispositivo robot.
RoboDK – Una plataforma de kit de desarrollo de robots para simular robots industriales. RoboDK le permite programar cualquier robot usando Python y maneja la sintaxis específica de la marca dependiendo de su controlador de robot.
Robotics Library es una biblioteca de código abierto de C ++ que abarca cinemática, planificación, visualización y controladores de hardware para varios robots.
Robotics Toolbox para MATLAB: se trata de un software gratuito que proporciona funcionalidad para representar la postura (transformaciones homogéneas, ángulos de Euler y RPY, cuaterniones), robots de brazo (cinemática y dinámica inversa / inversa) y robots móviles (control, localización y planificación)
Proyecto Rossum, GW Lucas, proyecto de robótica de código abierto.
Player / Stage Project: un muy popular sistema de interfaz y simulación de robot de software libre, utilizado para la investigación y enseñanza de robótica en todo el mundo.
Pyro, Python Robotics: software popular de robótica popular utilizado en universidades y colegios.
RoboMind: software educativo para aprender los conceptos básicos de robótica y programación.
Sistema operativo de robot: el sistema operativo de robot es una plataforma de código abierto para la programación de robots con Python y C ++. Java, Lisp, Lua y Pharo son compatibles, pero aún en fase experimental.
Kernel de inteligencia robot

Programación fuera de línea
Visual Components es un software comercial de simulación de eventos discretos en 3D que permite el flujo de materiales y la simulación robótica en una plataforma. La funcionalidad se puede ampliar con capacidades de programación fuera de línea y conectividad PLC.
«Los fundamentos – Software de robot». Sociedad de robótica de Seattle.
«Software de Robot Autónomo Móvil (MARS)». Georgia Tech Research Corporation.
«Base de datos de tecnología». robot.spawar.navy.mil.
Software adaptativo de robótica en el Laboratorio Nacional de Idaho

Control en linea
Energid Technologies desarrolla y vende el SDK de Actin, que es un conjunto de herramientas robóticas, un motor de optimización y un sistema de gestión de restricciones escrito en C ++ que utiliza una cinemática basada en jacobianos para optimizar el rendimiento en todos los tipos de robots. Dado que Actin se vende como un SDK, se puede etiquetar en blanco o OEM en otros paquetes de software de control de robot. Este enfoque permite a los usuarios desarrollar el control de un sistema conocido en un modo fuera de línea a través de una GUI y luego permitir que Actin se encargue del control en línea de alto nivel para transmitir comandos de nivel conjunto en constante actualización al robot / controlador en tiempo real para evitar colisiones adaptándose A los cambios ambientales percibidos.