Ingeniería de los sistemas de software para robótica

Vota este post

robot-software

El software juega un papel vital en el desarrollo de sistemas robóticos, capaces de replicar artificialmente capacidades similares a las humanas, como la detección, la planificación, el control, el razonamiento y el aprendizaje.

Por lo general, el software de los robots, especialmente en los robots autónomos, es concurrente, distribuido, integrado, en tiempo real y requiere muchos datos para reaccionar rápidamente a los eventos que ocurren en todos los entornos operativos dinámicos.

Esto ha creado una gran carrera entre los ingenieros de robótica hacia el rendimiento y la entrega de implementaciones altamente eficientes de aplicaciones de control para plataformas robóticas específicas que realizan tareas específicas en entornos operativos específicos.

Para combinar a la perfección varios componentes complejos de hardware y software y mejorar la eficiencia, la solidez, la seguridad, la confiabilidad y el costo de los sistemas robóticos, los ingenieros deben centrarse cada vez más en explotar las metodologías de ingeniería de software que consisten en componentes de software, middleware para sistemas distribuidos, marcos de aplicaciones y ingeniería dirigida por modelos.

Los sensores, actuadores y otras piezas mecánicas están fácilmente disponibles de varios proveedores dedicados con características especificadas con precisión, y pueden reutilizarse en diferentes sistemas. Por el contrario, la mayoría de los sistemas de software de robótica se basan en arquitecturas de software diseñadas de forma patentada. Estos sistemas de software a menudo están estrechamente vinculados a hardware de robot específico, plataformas de procesamiento o infraestructuras de comunicación. Además, las suposiciones y restricciones sobre tareas, entornos operativos y hardware robótico están ocultas y codificadas en la implementación del software.

Algunos aspectos únicos del diseño y desarrollo de software robótico son los siguientes:

  • Reutilización de componentes (para componer el sistema robótico a partir de niveles de abstracción adecuados)
  • Configuración simple de esos componentes, en lugar de programación de bajo nivel
  • Posibilidad de especificación del comportamiento deseado en los niveles más altos en lugar de «cablear» esquemas predefinidos en varios niveles de arquitectura de software.

Varios enfoques diferentes para el desarrollo de software robótico han evolucionado en función de la disponibilidad de algunos modelos de simulación de componentes robóticos. Ellos son:

  • Simulación total de software
  • Simulación parcial y hardware aumentado por software
  • Software que controla tanto el simulador como el robot de hardware (p. ej., ensamblaje de piezas en una fábrica)
  • Sin simulación durante el uso normal

Sistema operativo en tiempo real (RTOS)

Por lo general, es necesario que se lleven a cabo múltiples niveles de control de software en todos los robots, excepto en los más simples. Las unidades de microcontrolador (MCU) y las soluciones de sistema en chip (SoC) responsables de administrar sensores y actuadores generalmente aprovecharán un sistema operativo en tiempo real (RTOS) o kernel.

La ventaja de usar un RTOS es la compatibilidad con tareas múltiples. Proporciona una forma relativamente sencilla de programar numerosas actividades en un solo microprocesador para maximizar los recursos y la capacidad del sistema para reaccionar ante eventos externos. Por ejemplo, la apertura de la jaula de seguridad debe desencadenar una suspensión de actividades para minimizar el riesgo para el robot y el personal. Simplemente desconectar la energía es potencialmente inseguro. Un RTOS puede desencadenar todas las acciones necesarias para colocar el robot en un estado inmóvil, pero asegurarse de que no deje caer objetos pesados ​​ni cause daños a nada más. Esto se puede lograr, por ejemplo, pasando a un hilo de software que ordena a los circuitos electrónicos de potencia que mantengan los motores en posiciones predefinidas.

En combinación con el software de aplicaciones diseñado apropiadamente, un RTOS puede proporcionar garantías sólidas de la cantidad de tiempo que lleva reaccionar ante eventos críticos, generalmente señalados por una interrupción externa al microprocesador. Esto generalmente se maneja a través de un controlador de interrupciones, que puede iniciar un hilo de software que puede tomar medidas. A través de la programación preventiva basada en prioridades, el RTOS garantiza la latencia más corta posible para este tipo de respuesta a los problemas más críticos.

Sistema operativo de robot (ROS)

En un robot con múltiples microprocesadores y aceleradores de hardware, que es cada vez más el caso, cada nodo actuador debe ser controlado por un sistema de supervisión que se encargue de la planificación de tareas y el comportamiento de alto nivel. Esta es una función que normalmente desempeña el middleware, como el sistema operativo del robot (ROS) que se ejecuta en un microprocesador de alto rendimiento.

Hoy en día, un ROS está diseñado para ejecutarse en un sistema operativo como Linux en lugar de ser un sistema operativo por derecho propio. ROS tampoco exige el comportamiento de RTOS del sistema operativo subyacente, ya que realiza tareas a más largo plazo que aquellas que necesitan tiempos de respuesta de microsegundos. Sin embargo, se está trabajando para crear implementaciones de ROS 2.0 que se ejecutarán en plataformas RTOS para ofrecer mayores grados de capacidad de respuesta.

El middleware que compone ROS proporciona una variedad de servicios. Incluyen abstracción de hardware de dispositivos de bajo nivel y soporte para mensajes que pasan entre procesos para permitir arquitecturas multiprocesador y administración de paquetes de software. Por lo general, los procesos se representan mediante gráficos que vinculan nodos para indicar dónde se lleva a cabo el procesamiento y cómo se comunican. Las implementaciones de ROS suelen ser paquetes de código abierto y utilizan plataformas Linux para facilitar el trabajo de gestión de dependencias entre proyectos de código abierto. Esto tiene la ventaja de facilitar el acceso al software ROS. En ROS, los nodos son procesos o módulos de software que manejan una o más tareas relacionadas. Por ejemplo, una cámara y un nodo de procesamiento de imágenes pueden procesar datos visuales de uno o más sensores de imágenes. Para habilitar la infraestructura de red para interconectar nodos, una arquitectura que ahora es típica en los sistemas automotrices, ROS admite TCP/IP y UDP para el paso de mensajes. Los diversos nodos y conexiones se pueden describir mediante el formato de descripción de robot universal (URDF), un formato de archivo XML.

ROS emplea un mecanismo de publicación-suscripción en el que los nodos se registran para recibir información sobre temas específicos para permitir el intercambio eficiente de datos y comandos del sensor. Cualquier actualización sobre cada tema se envía a todos los nodos suscritos. El ROS Master realiza un seguimiento de todos los servicios y temas. Maneja el registro de nodos y opera un servidor de parámetros para permitir que los nodos almacenen y recuperen datos de configuración comunes. Una ventaja significativa del middleware, como ROS, es la reutilización y el intercambio de código. El código compartido permite que todos los usuarios tengan una base de software común, lo que ayuda con las pruebas y la confiabilidad general del software. ROS no está restringido a robots físicos. También es compatible con robots simulados.

software de simulación de robots

Un requisito esencial del diseño de robots es simular su comportamiento en el entorno virtual antes de su implementación en hardware. El simulador permite que los programas de robótica se escriban y depuren fuera de línea. Permite el desarrollo de software en un entorno libre de riesgos. Evita dañar el robot o el entorno que lo rodea si el programa propuesto contiene errores graves. La versión final del programa se puede probar en un robot real.

Hay otras ventajas de la simulación. Los diseñadores pueden desarrollar en fases, comenzando con modelos simples de alto nivel, lo que es beneficioso para proyectos complejos. Tales simulaciones se pueden utilizar en una etapa temprana para establecer si un sistema es viable. Los entornos de simulación desarrollados para robótica están diseñados para ser compatibles con una amplia gama de lenguajes de programación, lo que permite un desarrollo sencillo. Y la simulación puede reducir el tiempo de desarrollo, ya que permite corregir los errores en la lógica de la aplicación antes de que se comprometan con el hardware y se vuelvan mucho más difíciles de corregir.

Hay varios enfoques para la simulación de robots. Tradicionalmente, la simulación se centró en la cinemática del movimiento del robot para demostrar si los caminos y las trayectorias son factibles y prácticos.

Este tipo de simulación coloca un robot virtual en un espacio 3D y demuestra cómo es probable que se muevan las articulaciones en el mundo físico. La simulación también puede ayudar a determinar si un robot levantará y manipulará objetos pesados ​​o voluminosos sin perder estabilidad. Algunos simuladores de cinemática utilizan un conjunto simplificado de cálculos y se centran principalmente en cómo un programa puede rotar y mover objetos para garantizar que no choquen con una jaula de seguridad o con los límites de una celda de trabajo. Otros involucran simulaciones físicas más complejas para medir las tensiones y otros problemas que afectan el desempeño del robot en el campo.

A medida que los robots salen de entornos controlados protegidos por jaulas de seguridad y entran en áreas donde las personas y otros robots pueden moverse libremente, los diseñadores deben considerar posibles interacciones. Para el diseño de robótica móvil, los simuladores que se ocupan del comportamiento permiten a los diseñadores crear, con un alto nivel de abstracción, mundos virtuales que contienen otros objetos. Una simulación de comportamiento simple solo considera el movimiento de un robot entre un conjunto de objetos fijos. Las simulaciones más complejas implican el uso de múltiples agentes móviles o avatares. Estos simuladores basados ​​en el comportamiento ayudan a diseñar aplicaciones en las que es probable que el robot se enfrente a entornos complejos. Pueden aprender de las colisiones y otras interacciones para lidiar mejor con los obstáculos. Las simulaciones físicas son esenciales para establecer que la cinemática del robot se representa con precisión.

Los entornos de simulación, como el paquete Gazebo de código abierto, pueden generar datos de sensores realistas que pueden corromperse con niveles de ruido variables.

Hay, sin embargo, límites a la simulación. Una aplicación solo puede simular características y eventos para los que está programada. Los factores internos o externos no se representan y no se simularán, lo que genera problemas cuando el diseño se traduce en hardware. También suele ser un desafío construir escenarios suficientemente representativos, especialmente cuando se evalúan situaciones y comportamientos complejos. Sin embargo, la experiencia con la traducción de diseños simulados al entorno físico puede retroalimentarse en proyectos futuros, lo que reducirá los errores a medida que pase el tiempo. Como resultado, la simulación sigue siendo una de las herramientas más poderosas en el arsenal del ingeniero de robots.

Conclusiones clave

  • Las implementaciones de sistema operativo de robot (ROS) más fácilmente disponibles no se ejecutan en un sistema operativo en tiempo real (RTOS) rígido, pero los componentes que proporcionan datos al ROS a menudo necesitarán estar basados ​​en un RTOS.
  • Los ingenieros pueden elegir entre ofertas comerciales o de código abierto para las opciones de ROS, simulación y RTOS.
  • Los entornos de simulación cubren diversas necesidades, desde perfiles de movimiento básicos hasta cinemática asistida por física y comportamiento en escenarios complejos.