Comenzando con ROS: Introducción | Conceptos Básicos | Conceptos De Alto Nivel | Librerias Cliente | Technical Overview

Qué es ROS?

ROS es un meta sistema operativo de código abierto para tu robot. Provee de servicios que se esperarían de un sistema operativo, incluyendo abstracción de hardware, control de dispositivos de bajo nivel, implementación de funcionalidades comunes, pasaje de mensaje entre procesos y manejo de paquetes. También brinda herramientas y librerías para obtener, construir, escribir y correr código a través y mediante varias computadoras. ROS es similar a otras estructuras o armazones para robot como Player, YARP, Orocos, CARMEN, Orca, MOOS, y Microsoft Robotics Studio.

El gráfico de procesos de ROS es una red de procesos peer-to-peer (potencialmente distribuidos en máquinas) que se acoplan de forma sencilla por medio de la infraestructura de comunicación de ROS. ROS implementa varios estilos de comunicación, incluyendo por ejemplo: comunicaciones del estilo RPC sincrónico sobre services, transmisiones de información asincrónica en topics, y guardado de datos en un servidor de parámetros (Parameter Server). Todo lo anterior se explica con mayor profundidad en nuestro Conceptual Overview.

ROS no es una estructura o armazón de despliegue en tiempo real, aunque es posible integrar a ROS código vivo. El robot PR2 de The Willow Garage usa un sistema llamado pr2_etherCAT, que transporta los mensajes ROS a través de los procesos en tiempo real. ROS también tiene integracion perfecta con el conjunto de herramientas Orocos Real-time.

Objetivos

Mucha gente se pregunta "Que hace a ROS diferente de otras plataformas robóticas de software?" y es una pregunta difícil de responder, pues el objetivo de ROS no es ser la estructura con más características. En cambio, el objetivo primario de ROS es soportar el re uso de código en la investigación y desarrollo dentro de la robótica. ROS es una estructura distribuida de procesos llamados Nodes (Nodos) que permite el diseño individualizado: pero fácilmente acoplable a los demás procesos. Estos procesos se pueden agrupar en Paquetes y Pilas, que fácilmente pueden ser intercambiados, compartidos y distribuidos. ROS también soporta un sistema federado de repositorios de código, que permite distribuir dicha colaboración. Este diseño que va desde el nivel del sistema de archivos hasta el nivel de la comunidad, permite decisiones independientes de desarrollo e implementación; pero todo se puede hermanar mediante las herramientas de infraestructura que brinda ROS.

En apoyo de este objetivo principal de compartir y colaborar; hay varios otros objetivos dentro del marco ROS:

  • Liviano: ROS está diseñado para ser lo más liviano posible, de modo que el código escrito para ROS se pueda usar con otros frameworks o estructuras de desarrollo de software para robots. Un corolario de esto es que ROS es fácil de integrar con otros marcos de software de robot: ROS ya se ha integrado con OpenRAVE, Orocos y Player.
  • Bibliotecas agnósticas ROS: el modelo de desarrollo preferido es escribir bibliotecas agnósticas en ROS con interfaces funcionales limpias.
  • Independencia del lenguaje: ROS es fácil de implementar en cualquier lenguaje de programación moderno. Ya lo hemos implementado en Python, C ++ y Lisp, y tenemos bibliotecas experimentales en Java y Lua.

  • Pruebas sencillas: ROS tiene un marco de prueba de integración / unidad incorporado llamado rostest que facilita la activación y desactivación de dispositivos de prueba.

  • Escalado: ROS es apropiado para grandes sistemas de rutinas de ejecución y para grandes procesos de desarrollo.

Entonces, "¿En qué se diferencia ROS de X?" Es difícil responder por cada X, pero primero, si elige usar X, esperamos que aún pueda usar muchas de las bibliotecas distribuidas con ROS. En cuanto a más detalles, este correo electrónico de Brian Gerkey (tanto de Player como de ROS) a la lista de correo de usuarios de ros con respecto a las diferencias entre ROS y Player, incluida la integración de OpenCV, proporciona algunas comparaciones:

La respuesta, como siempre, depende. En particular, depende de lo que intente hacer. Player es ideal para plataformas móviles simples y no articuladas. Fue diseñado para proporcionar un fácil acceso a sensores y motores en Pioneers equipados con láser.

ROS, por otro lado, está diseñado alrededor de complejas plataformas de manipulación móvil, con sensores activados (láseres inclinables, cabezales de sensores de giro / inclinación, sensores conectados a los brazos). En comparación con Player, ROS hace que sea más fácil aprovechar un entorno informático distribuido, y yo diría que el lado de nivel superior está más desarrollado en ROS que en Player. Mientras que Player ofrece más controladores de hardware, ROS ofrece más implementaciones de algoritmos.

Creo que es justo decir que ROS es más poderoso y flexible que Player, pero, como de costumbre, una mayor potencia y flexibilidad tiene el costo de una mayor complejidad. Si bien estamos trabajando arduamente para que ROS sea fácil de usar, todavía hay una curva de aprendizaje significativa. Por supuesto, familiarizarse con Player debería ayudar a aprender a usar ROS, ya que muchos de los conceptos subyacentes son similares.

En cuanto a su pregunta específica sobre la integración de OpenCV, creo que encontrará bastante más código ROS que código Player que usa OpenCV de formas interesantes. En el futuro, debe esperar ver aún más, ya que existe una superposición significativa entre los equipos de desarrollo de ROS y OpenCV.

Debo señalar que ROS aprovecha mucho código del proyecto Player. Hay nodos ROS que reutilizan código de muchos controladores de reproductor, y tanto Stage como Gazebo cuentan con un buen soporte y son ampliamente utilizados en la comunidad ROS.

Sistemas operativos

ROS actualmente solo se ejecuta en plataformas basadas en Unix y en W10 mediante virtualización. El software para ROS se prueba principalmente en sistemas Ubuntu y Mac OS X, aunque la comunidad ROS ha estado contribuyendo con soporte para Fedora, Gentoo, Arch Linux y otras plataformas Linux.

Lanzamientos

El sistema ROS principal, junto con las herramientas y bibliotecas útiles, se publican regularmente como Distribución ROS. Esta distribución es similar a una distribución de Linux y proporciona un conjunto de software compatible para que otros lo utilicen y desarrollen.

Contribuyendo

Como ROS es de código abierto, esperamos que considere contribuir a ROS o bibliotecas que sean compatibles con ROS. Consulte nuestra sección sobre Contribuir para obtener más información sobre cómo puede participar en la comunidad ROS.

Siguiente

ROS Conceptos

Wiki: es/ROS/Introduccion (last edited 2021-08-18 18:36:48 by JuanEduardoRiva)