El middleware robótico es un middleware que se utiliza en sistemas de software de control de robots complejos .
- " ...el middleware robótico está diseñado para gestionar la complejidad y heterogeneidad del hardware y las aplicaciones, promover la integración de nuevas tecnologías, simplificar el diseño del software, ocultar la complejidad de la comunicación de bajo nivel y la heterogeneidad de los sensores, mejorar la calidad del software, reutilizar la infraestructura del software robótico en múltiples esfuerzos de investigación y reducir los costos de producción " . [1]
Se podría describir como un "pegamento de software" para facilitar que los constructores de robots se concentren en su área problemática específica. [2]
Proyectos de middleware de robótica
Existe una amplia variedad de proyectos de middleware para robótica, pero ninguno de ellos domina el mercado y, de hecho, muchos sistemas robóticos no utilizan ningún middleware. [3] Los productos de middleware se basan en una amplia gama de estándares, tecnologías y enfoques diferentes que dificultan su uso e interoperación, y algunos desarrolladores pueden preferir integrar su sistema ellos mismos. [3]
Proyecto de jugador
El Proyecto Player (anteriormente Proyecto Player/Stage ) es un proyecto para crear software libre para la investigación en robótica y sistemas de sensores . [4] Sus componentes incluyen el servidor de red Player y los simuladores de plataforma de robots Stage . Aunque es difícil obtener estadísticas precisas, Player es una de las interfaces de código abierto para robots más populares en la investigación y la educación postsecundaria. [5] La mayoría de las principales revistas y conferencias sobre robótica inteligente publican regularmente artículos que presentan experimentos con robots reales y simulados utilizando Player y Stage.
Middleware RT
RT-middleware es un estándar de plataforma común para robots basado en tecnología de objetos distribuidos. [6] RT-middleware respalda la construcción de varios sistemas robóticos en red mediante la integración de varios elementos robóticos habilitados para la red llamados Componentes RT. El estándar de especificación de los componentes RT es analizado y definido por el Object Management Group (OMG). [7]
Urbi
Urbi es una plataforma de software multiplataforma de código abierto en C++ que se utiliza para desarrollar aplicaciones para robótica y sistemas complejos. Se basa en la arquitectura de componentes distribuidos de C++ UObject. También incluye el lenguaje de orquestación urbiscript, que es un lenguaje de script paralelo y controlado por eventos. Los componentes UObject se pueden conectar a urbiscript y aparecen como objetos nativos que se pueden programar para especificar sus interacciones e intercambios de datos. Los UObjects se pueden vincular al intérprete de urbiscript o ejecutar como procesos autónomos en modo "remoto", ya sea en otro hilo, otro proceso, una máquina en la red local o una máquina en una red distante.
MIRO
Miro es un marco de trabajo orientado a objetos distribuido para el control de robots móviles, basado en la tecnología CORBA (Common Object Request Broker Architecture). Los componentes principales de Miro se han desarrollado con la ayuda de ACE (Adaptive Communications Environment), un marco de trabajo multiplataforma orientado a objetos para la comunicación entre procesos, redes y tiempo real independiente del sistema operativo. Utilizan TAO (The ACE ORB) como su ORB (Object Request Broker), una implementación CORBA diseñada para aplicaciones de alto rendimiento y en tiempo real. Las plataformas compatibles actualmente incluyen Pioneers , B21, algunos robots de fútbol robot y varios sensores robóticos. [8]
Orca
Orca describe sus objetivos como:
- permitir la reutilización de software definiendo un conjunto de interfaces de uso común;
- simplificar la reutilización de software proporcionando a las bibliotecas una API conveniente de alto nivel; y
- Fomentar la reutilización del software manteniendo un repositorio de componentes.
También afirman: "Para tener éxito, creemos que un marco con tales objetivos debe ser: general, flexible y extensible; suficientemente robusto, de alto rendimiento y con todas las funciones para su uso en aplicaciones comerciales, pero lo suficientemente simple para la experimentación en entornos de investigación universitaria". [9]
Describen su enfoque como:
- Adopta un enfoque de ingeniería de software basado en componentes sin aplicar ninguna restricción arquitectónica adicional
- Utiliza una biblioteca comercial de código abierto para la comunicación y la definición de interfaz.
- Proporciona herramientas para simplificar el desarrollo de componentes, pero las hace estrictamente opcionales para mantener el acceso completo al motor de comunicación y los servicios subyacentes.
- utiliza herramientas de desarrollo multiplataforma [9]
El software de Orca se publica bajo licencias LGPL y GPL.
OpenRDK
OpenRDK es un marco de software de código abierto para robótica que permite desarrollar módulos acoplados de forma flexible. Proporciona gestión de concurrencia transparente, comunicación basada en pizarra entre procesos (a través de sockets) y dentro de ellos (a través de memoria compartida) y una técnica de enlace que permite el diseño conceptual de sistemas con puertos de entrada y salida de datos. Se proporcionan módulos para conectarse a simuladores y controladores de robots genéricos.
Roca
Rock (Robot Construction Kit) es un marco de software para el desarrollo de sistemas robóticos. El modelo de componentes subyacente se basa en el Orocos RTT (Real Time Toolkit). Rock proporciona todas las herramientas necesarias para configurar y ejecutar sistemas robóticos confiables y de alto rendimiento para una amplia variedad de aplicaciones en investigación e industria. Contiene una amplia colección de controladores y módulos listos para usar en su propio sistema y se puede ampliar fácilmente agregando nuevos componentes.
SDK de ISAAC / Simulación
ISAAC, el kit de desarrollo de software (SDK) Isaac de NVIDIA, es una caja de herramientas para desarrolladores que acelera el desarrollo y la implementación de robots con inteligencia artificial. El SDK incluye el motor de robot Isaac, paquetes con algoritmos de robótica de alto rendimiento (para realizar la percepción y la navegación) y aplicaciones de referencia de hardware. Isaac Sim es un laboratorio de robótica virtual y un simulador de mundo 3D de alta fidelidad. Acelera la investigación, el diseño y el desarrollo en robótica al reducir los costos y los riesgos. Los desarrolladores pueden entrenar y probar sus robots de manera rápida y sencilla en escenarios detallados y altamente realistas. Hay una versión comunitaria de código abierto disponible en GitHub con plataforma de hardware compatible que incluye detalles de lista de materiales; consulte kaya-robot
ROS
ROS Archivado el 15 de enero de 2018 en Wayback Machine ( Robot Operating System ) es una colección de marcos de software para el desarrollo de software de robots en un clúster de computadoras heterogéneo . ROS proporciona servicios estándar del sistema operativo, como abstracción de hardware , control de dispositivos de bajo nivel , implementación de funcionalidades de uso común, paso de mensajes entre procesos y administración de paquetes.
YARP
YARP es un paquete de software de código abierto, escrito en C++ para interconectar sensores, procesadores y actuadores en robots.
DDX
DDX (Dynamic Data eXchange) es un middleware ( Linux / BSD / Unix ) desarrollado por CSIRO para proporcionar un servicio ligero de publicación/suscripción en tiempo real a controladores de robots distribuidos. DDX permite que una coalición de programas comparta datos en tiempo de ejecución a través de un mecanismo de memoria compartida eficiente . Se pueden vincular varias máquinas por medio de un servicio de nombres global y, cuando es necesario, los datos se transmiten entre máquinas. [10] DDX se desarrolló para automatizar una serie de grandes máquinas mineras: incluidas dragalinas , camiones LHD , excavadoras y rompedoras de rocas.
Enlaces externos
- BRICs: un proyecto europeo que busca establecer las mejores prácticas en el desarrollo de robots
Referencias
- ^ Elkady, Ayssam (29 de enero de 2012). "Robotics Middleware: A Comprehensive Literature Survey and Attribute-Based Bibliography" (Middleware robótico: una revisión exhaustiva de la literatura y una bibliografía basada en atributos). Journal of Robotics ( Revista de robótica ). 2012 : 1–15. doi : 10.1155/2012/959013 .
- ^ "¿Qué es el middleware?". Middleware.org . Definición de tecnología. 2008. Archivado desde el original el 29 de junio de 2012. Consultado el 11 de agosto de 2013 .
{{cite web}}: CS1 maint: unfit URL (link) - ^ ab "Herramientas, estándares y plataformas para el desarrollo de robótica comercial: un perfil de adopción". roboticsbusinessreview.com . Octubre de 2009 . Consultado el 8 de mayo de 2017 .[ enlace muerto permanente ]
- ^ Gerkey, B., Vaughan, R. y Howard, A. (2003) El proyecto Player/Stage: herramientas para sistemas multi-robot y de sensores distribuidos. Actas de la Conferencia internacional sobre robótica avanzada 317-323
- ^ Collet, THJ, MacDonald, BA y Gerkey, B. (2005) Player 2.0: Toward a practical robot programming framework (Reproductor 2.0: Hacia un marco práctico de programación de robots). Actas de la Conferencia Australasiana sobre Robótica y Automatización (ACRA)
- ^ Noriaki ANDO, Takashi SUEHIRO, Kosei KITAGAKI, Tetsuo KOTOKU, Woo-Keun Yoon, "RT-Middleware: middleware de componentes distribuidos para RT (tecnología robótica)", Conferencia internacional IEEE/RSJ de 2005 sobre robots y sistemas inteligentes (IROS2005), págs. 3555-3560, 8 de agosto de 2005, Edmonton, Canadá
- ^ Especificación de componentes de tecnología robótica versión 1.0, Object Management Group (OMG)
- ^ Enderle, Stefan; Utz, Hans; Sablatnög, Stefan; Simón, Steffen; Kraetzschmar, Gerhard; Palm, Günther (2001), "Miro: Middleware para robots móviles autónomos", volúmenes de procedimientos de IFAC , 34 (9): 297–302, doi : 10.1016/S1474-6670(17)41721-6
- ^ ab "Orca Overview" . Consultado el 7 de mayo de 2017 .
- ^ Corke, Peter; Sikka, Pavan; Roberts, Jonathan; Duff, Elliot (2004). "DDX: una arquitectura de software distribuida para sistemas robóticos". Conferencia Australasiana sobre Robótica y Automatización 2004 .