O que é um sistema operacional de robô (ROS)?

¿Qué es un sistema operativo robótico (ROS)?

Normalmente, cuando hablamos de robótica, lo primero que nos viene a la mente son manipuladores robóticos equipados con efectores finales, impulsados ​​por actuadores, guiados por sensores y controlados por microcontroladores. El hardware mecánico siempre impresiona a los espectadores, pero es el software robótico subyacente el que da vida a estas magníficas máquinas. La mayoría de los robots pequeños se programan desde cero, lo que puede resultar tedioso cuando una aplicación robótica es grande o multifacética. En el desarrollo de software, las aplicaciones de software de gran tamaño se gestionan con la ayuda de un kit de desarrollo de software. Del mismo modo, el desarrollo extensivo de software de robótica requiere un marco: el Sistema Operativo de Robot (ROS) es una iniciativa de código abierto que proporciona este marco.

Robot tortuga ROS

A pesar de su nombre, ROS no es un sistema operativo. Es un marco de software para desarrollar software robótico que incluye un conjunto de diferentes herramientas y bibliotecas útiles para desarrollar aplicaciones robóticas. Desde sus inicios, ROS se ha adaptado para funcionar en Ubuntu Linux. La mayoría de las herramientas de desarrollo, controladores, bibliotecas y algoritmos fueron diseñados para funcionar en sistemas similares a Unix. Aun así, muchas bibliotecas ROS y herramientas de desarrollo se pueden utilizar en Mac OSX y Microsoft Windows. Ubuntu ha sido una elección natural para ROS porque el marco se basa principalmente en dependencias de código abierto.

En este artículo, definiremos el Sistema Operativo de Robot (ROS), cómo funciona y por qué es útil.

¿Qué es ROS?
El marco de desarrollo de software RO es un proyecto de código abierto iniciado en 2007 en la Universidad de Stanford con el título "Switchyard". En 2008, el proyecto lo llevó a cabo una nueva empresa, Willow Garage. En 2013, Willow Garage formó la Open Source Robotic Foundation (OSRF) e hizo de ROS un proyecto de código abierto.

La robótica implica teoría del control, visión por computadora, aprendizaje automático, electrónica integrada e inteligencia artificial. Las aplicaciones de robots son software complejos que involucran múltiples disciplinas. ROS organiza una aplicación robótica en paquetes y proporciona una capa de abstracción de hardware que le permite desarrollar software robótico independientemente del hardware subyacente. El marco también proporciona un middleware de paso de mensajes donde los datos robóticos se pueden comunicar entre diferentes procesos e incluso entre otras máquinas. Al ser una estructura flexible, ROS puede programar cualquier funcionalidad robótica. La ventaja más significativa de ROS es que las aplicaciones ROS con todas las funcionalidades robóticas posibles se pueden ejecutar en cualquier robot, independientemente de sus componentes de hardware.

¿Por qué ROS?
Había un enorme vacío para un marco de software de robótica genérico. ROS llenó este vacío e introdujo un enfoque modular e independiente de la plataforma para desarrollar aplicaciones robóticas. Debido a que es gratuito y de código abierto, cualquiera puede usar, modificar, depurar y contribuir a ROS. También se puede utilizar en cualquier aplicación industrial sin necesidad de pagar licencia. Muchas universidades participan activamente en la investigación de robótica que involucra ROS. Como proyecto impulsado por la comunidad, ROS crece y evoluciona continuamente, y el apoyo de la comunidad garantiza que ROS esté libre de errores, sea sólido e incluya todas las características y funcionalidades emergentes.

El marco admite lenguajes de programación populares, incluidos C, Python, Java y Lisp. Ya tiene una interfaz para varias bibliotecas de terceros, incluidas Open-CV, Open-NI, OpenRAVE y PCL. Los paquetes ROS operan en una capa de abstracción de hardware, por lo que ROS independiente de la plataforma y sus paquetes se pueden utilizar para cualquier hardware. Debido a que es muy flexible, los desarrolladores pueden personalizarlo y elegir qué componentes del marco ROS incorporar en un proyecto robótico y con qué bibliotecas desean interactuar.

ROS permite a los ingenieros crear, probar e implementar rápidamente software robótico independiente que puede reutilizarse en cualquier otro robot. ROS está integrado con simuladores de código abierto como Gazebo y otros simuladores propietarios, incluido V-REP. El código ROS se puede probar fácilmente utilizando un marco integrado llamado "rostest". El código de la aplicación sigue siendo modular, bien organizado, reutilizable, escalable e independiente del hardware.

Cómo funciona ROS
Una aplicación ROS está organizada en metapaquetes: una colección de paquetes para una funcionalidad específica. Por ejemplo, un robot móvil puede tener un sistema de navegación para manipular metapaquetes. Los paquetes son los componentes básicos de cualquier software ROS y constan de nodos/procesos asociados con conjuntos de datos y archivos de configuración. Un nodo es simplemente un proceso que utiliza la API de ROS para comunicarse dentro del sistema robótico y se crea con la ayuda de bibliotecas cliente. El software robótico en ROS es una colección de nodos donde cada nodo es responsable de una función específica. Por ejemplo, un nodo puede ser responsable de la navegación, otro puede ser responsable de recopilar datos de sensores y otro puede ser responsable de la interfaz del hardware.

Por lo tanto, una aplicación ROS puede considerarse una colección de nodos. Estos nodos deben comunicarse entre sí e intercambiar datos o proporcionar servicios para el funcionamiento robótico. Existe un nodo intermedio llamado ROS Master que conecta todos los nodos y establece comunicación de datos entre ellos. Las variables utilizadas en la comunicación de datos se almacenan en un servidor de parámetros acoplado al maestro ROS. Cada variable tiene un alcance y puede ser accesible por uno o más nodos.

sistema de archivos ROS

Los datos se comunican entre nodos en forma de mensajes ROS. Hay dos formas de comunicar mensajes entre nodos: temas y servicios. Los temas son un método de publicación y suscripción para transmitir datos entre nodos y son buses con nombre en los que los nodos pueden registrarse como editores o suscriptores. Cuando un nodo publica un mensaje ROS sobre un tema, se envía al maestro ROS. Los nodos registrados como suscriptores del mismo tema reciben el URI del editor del maestro ROS y, por lo tanto, reciben el mensaje del editor tan pronto como se publica. Una vez que los nodos están conectados punto a punto, el maestro ROS ya no tiene ningún papel que desempeñar. Los nodos pueden comunicar mensajes ROS punto a punto entre sí sin pasar por el maestro ROS. Esto es algo similar al protocolo MQTT, excepto que los mensajes siempre se pasan entre nodos a través del intermediario en MQTT. Aquí se cumple el papel del maestro ROS ya que conecta todos los nodos punto a punto.

Los servicios son un método de solicitud-respuesta para comunicar mensajes ROS entre nodos. Un nodo solicita datos de otro nodo. El otro nodo actúa como proveedor de servicios ejecutando una rutina de servicio. Cuando recibe una solicitud de otro nodo, ejecuta la rutina de servicio y transfiere los resultados mediante mensajes ROS. Los mensajes ROS en un nodo se almacenan en archivos de mensajes con la extensión .msg. Las definiciones de servicios en un nodo se almacenan en archivos de servicio con la extensión .srv. Hay un archivo de manifiesto llamado paquete.xml dentro de la aplicación que almacena toda la información sobre el nombre de la aplicación, la versión, el autor, los paquetes requeridos y las dependencias.

Gráfico computacional ROS

ROS incluye utilidades llamadas "Bags" que registran y reproducen mensajes ROS y son útiles para simular e inspeccionar datos robóticos.

Distribuciones ROS
Las distribuciones de ROS son una colección versionada de paquetes ROS. Son similares a las distribuciones de Linux. Cada distribución consta de unos pocos paquetes principales cuyas versiones estables se mantienen hasta el final de la vida útil de la distribución. Las distribuciones de ROS están diseñadas para ser compatibles con Ubuntu Linux. El control de versiones de las distribuciones ROS también se realiza simultáneamente con las versiones de Ubuntu Linux porque las distribuciones ROS tienen en su mayoría dependencias de código abierto que funcionan y dependen de Linux. Aquí puede encontrar documentación para algunas de las distribuciones activas de ROS1 y ROS2.

Cabe señalar que ROS Noeitc Ninjemys es la versión final de ROS1. Las versiones futuras de las distribuciones de ROS se basarán en ROS2. Si no buscas nuevas funciones o actualizaciones importantes, puedes utilizar la distribución anterior de soporte a largo plazo (LTS), que en este momento es ROS Melodic Morenia. Si está buscando nuevas funciones y también se siente cómodo con las actualizaciones importantes, utilice la última versión de LTS, es decir, ROS Noeitc Ninjemys.

Bibliotecas de clientes
Las bibliotecas cliente ROS se utilizan para escribir nodos ROS. Con la ayuda de las bibliotecas cliente, no es necesario escribir código desde cero; en su lugar, debe definir devoluciones de llamadas de servicio e implementar publicación-suscripción para el nodo. Las bibliotecas cliente están disponibles por lenguaje de programación: roscpp es la biblioteca cliente para escribir nodos en C++; rospy es la biblioteca cliente para escribir nodos en Python; y roslisp es la biblioteca cliente para escribir nodos en LISP.

Herramientas ROS
Las distribuciones ROS incluyen varias herramientas valiosas para resolver problemas de desarrollo comunes y automatizar tareas complejas como la simulación y la visualización de datos robóticos. Las herramientas pueden ser GUI o herramientas de línea de comandos. Están incluidos en los paquetes. Algunas de las herramientas ROS populares implican lo siguiente.

RVIZ: Este es un visor 3D útil para crear gráficos visuales de valores 2D y 3D a los que se accede desde datos robóticos. Ayuda a visualizar modelos de robots, datos de imágenes, nubes de puntos y datos de sensores.

rosbag y rqt_bag: esta es una herramienta de línea de comandos para grabar y reproducir mensajes ROS. Es útil para depurar aplicaciones y funciona como consola de línea de comandos. Otra herramienta, rqt_bag, proporciona una interfaz gráfica para rosbag.

rqt_plot: esta herramienta es útil para trazar valores escalares en vivo publicados en temas de ROS.

Graphic_rqt: esta herramienta le ayuda a visualizar nodos/procesos que se ejecutan en ROS y las interconexiones entre ellos.

Webviz: esta es una valiosa herramienta basada en web para ver datos de ROS y archivos de bolsa de ROS.

Estúdio Dedaleira : Disponible como aplicación web y de escritorio, este es un entorno de desarrollo integrado (IDE) para ver y depurar datos ROS.

ROS Mobile: esta aplicación de Android es útil para el control dinámico y la visualización de robots móviles basados ​​en ROS.

Herramientas de línea de comandos: hay varias herramientas de línea de comandos disponibles, desde instalar ROS hasta ejecutar y depurar ROS. Las herramientas rosmake, rosinstall, roslocate, rosdep, rospack/roscd y rosstack/roscd se utilizan durante la instalación de ROS. Las herramientas roslauch, rosrun y roscore se utilizan para ejecutar ROS. Las herramientas Therosopic, rosservice, rosnode, rosparam, rosmsg, rossrv y roswtf se utilizan para interactuar con ROS y depurarlo.

Simulador ROS
ROS está integrado en el simulador de robótica de código abierto Gazebo. Gazebo, que se puede integrar con ROS mediante un complemento, es capaz de simular una variedad de modelos de robots e incluye soporte para una gran cantidad de sensores. Los simuladores propietarios como Webots y V-REP también son compatibles con ROS. Sin embargo, deberá pagar una tarifa de licencia para utilizarlos. Si no desea pagar por la simulación robótica, Gazebo es suficiente para mantener la compatibilidad con ROS.

Nosotros ROS
Los nodos son los componentes básicos de la aplicación ROS. La aplicación está dividida en paquetes. Por ejemplo, una aplicación de robot móvil se puede dividir en tres paquetes: cámara, navegación y control de hardware. Cada paquete puede contener uno o más nodos, aunque cada paquete normalmente contiene solo un nodo. El paquete de la cámara puede incluir nodos como el controlador de la cámara y el procesamiento de imágenes. Es posible mantener el procesamiento de imágenes en un paquete diferente. El paquete de navegación puede consistir en nodos para la planificación del movimiento y la corrección de trayectoria. El paquete de control de hardware puede incluir nodos para el circuito de control principal, publicación del estado del robot y controladores de hardware. Los nodos interactúan entre sí a través de temas y servicios, comunicando datos necesarios para las funciones robóticas. Por ejemplo, los nodos para la planificación del movimiento y la corrección de trayectoria intercambiarán datos con el nodo del bucle de control principal en el paquete de control de hardware para permitir la navegación del robot. Algunas funcionalidades estándar en robótica incluyen navegación, percepción, mapeo y localización, registro de datos, visualización y control de hardware.

Hardware ROS
Existe un amplio soporte de hardware para ROS. ROS admite muchos sensores, incluidos telémetro 1D, telémetro 2D, sensores 3D, cámaras, captura de movimiento, fuerza/par, RFID, entrada/salida, velocidad, tacto, estimación de postura y sensores ambientales. Puede encontrar una lista completa de sensores compatibles con ROS aquí. Una lista de controladores de motor compatibles está disponible en este enlace. Si desea obtener más información sobre algunos robots destacados que se ejecutan en ROS, haga clic aquí.

Versiones ROS
Actualmente, existen dos versiones activas principales de ROS: ROS1 y ROS2. El ROS Noeitc Ninjemys fue la versión final del ROS1. Cada seis meses se lanza una nueva versión de ROS2 y cuenta con soporte durante un año. Puede explorar las últimas distribuciones de ROS aquí. Tenga en cuenta que las distribuciones de ROS se instalan en Ubuntu Linux u otros sistemas operativos compatibles mediante herramientas de línea de comandos.

Introducción a ROS
Puede comenzar con ROS en cualquier computadora Linux, Windows o Mac. Se pueden escribir y probar muchas aplicaciones robóticas con la ayuda del simulador de ROS. Para una implementación en la vida real, necesitará componentes de hardware específicos para la aplicación automatizada. Por ejemplo, es posible que necesite Arduino, motores, controladores de motor y sensores para construir un robot móvil, o puede que necesite un módulo de cámara para detección de rostros u otras funciones.

Conteúdo Relacionado

En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
ESP32-CAM es un módulo de cámara compacto que combina...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Probablemente se haya encontrado con el término " resistencia...
Probablemente tenga un aislante de soporte si ha notado...
Probablemente haya visto un aislante colocado en postes de...
Probablemente hayas visto aisladores de grillete entronizados en postes...
Probablemente hayas experimentado situaciones en las que controlar un...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.