Robot Operating System

Sistema Operativo Robótico (en inglés Robot Operating System, ROS) es un framework para el desarrollo de software para robots que provee la funcionalidad de un sistema operativo en un clúster heterogéneo. ROS se desarrolló originalmente en 2007 bajo el nombre de switchyard por el Laboratorio de Inteligencia Artificial de Stanford para dar soporte al proyecto del Robot con Inteligencia Artificial de Stanford (STAIR[2]). Desde 2008, el desarrollo continua primordialmente en Willow Garage, un instituto de investigación robótico con más de veinte instituciones colaborando en un modelo de desarrollo federado.[3][4]

Información general
Tipo de programa Suite robótica, librería
Autor Willow Garage, Laboratorio de Inteligencia Artificial de Stanford
Lanzamiento inicial 2007
Licencia Licencia BSD
Idiomas Inglés
Información técnica
Programado en C++, Python
Versiones
Última versión estable Melodic Morenia[1] (info) ( 23 de mayo de 2018)
Enlaces

ROS provee los servicios estándar de un sistema operativo tales como abstracción del hardware, control de dispositivos de bajo nivel, implementación de funcionalidad de uso común, paso de mensajes entre procesos y mantenimiento de paquetes. Está basado en una arquitectura de grafos donde el procesamiento toma lugar en los nodos que pueden recibir, mandar y multiplexar mensajes de sensores, control, estados, planificaciones y actuadores, entre otros. La librería está orientada para un sistema UNIX (Ubuntu (Linux)) aunque también se está adaptando a otros sistemas operativos como Fedora, Mac OS X, Arch, Gentoo, OpenSUSE, Slackware, Debian o Microsoft Windows, considerados como 'experimentales'.

ROS tiene dos partes básicas: la parte del sistema operativo, ros, como se ha descrito anteriormente y ros-pkg, una suite de paquetes aportados por la contribución de usuarios (organizados en conjuntos llamados pilas o en inglés stacks) que implementan la funcionalidades tales como localización y mapeo simultáneo, planificación, percepción, simulación, etc.

ROS es software libre bajo términos de licencia BSD. Esta licencia permite libertad para uso comercial e investigador. Las contribuciones de los paquetes en ros-pkg están bajo una gran variedad de licencias diferentes.

Historia

En algún momento a principios de 2007, las primeras piezas de lo que eventualmente se convertiría en ROS comenzaban a nacer en la Universidad de Stanford. Eric Berger y Keenan Wyrobek, estudiantes de doctorado que trabajan en el laboratorio de robótica de Kenneth Sailsbury en Stanford, dirigían el Programa de robótica personal. Mientras trabajaban en robots para realizar tareas de manipulación en entornos humanos, los dos estudiantes notaron que muchos de sus colegas se encontraban alejados por diversas circunstancias de la robótica. En un intento por remediar esta situación, los dos estudiantes se propusieron hacer un sistema base que proporcionaría un punto de partida y estructuras básicas para que otros en la academia lo construyeran.

Diseño

Filosofía

ROS fue diseñado pensando en el Código abierto con la intención de que los usuarios pudieran elegir la configuración de las herramientas y bibliotecas que interactuaran con el núcleo de ROS y para que de esta forma sus usuarios pudieran cambiar sus desarrollos de software para adaptarse a su robot y área de aplicación. Como tal, hay muy poco que sea realmente esencial para ROS, más allá de la estructura general dentro de la cual los programas deben existir y comunicarse. En cierto sentido, ROS es la tubería subyacente detrás de los nodos y el paso de mensajes. Sin embargo, en realidad, ROS es mucho más que plomería. ROS es un conjunto rico y maduro de herramientas en un amplio conjunto de capacidades proporcionadas por paquetes y como resultado de lo anterior un ecosistema en constante crecimiento.

Modelo computacional gráfico

Los procesos ROS se representan como nodos (ROS NODES) en una estructura gráfica, conectados por bordes llamados ROS topics. [65] Los ROS NODES pueden pasar mensajes entre sí a través de los ROS topics, realizar llamadas de servicio a otros nodos, proporcionar un servicio para otros nodos o establecer o recuperar datos compartidos de una base de datos común llamada servidor de parámetros (paramter server). Un proceso llamado ROS Master hace que todo esto sea posible al registrar nodos para sí mismo, configurar la comunicación de nodo a nodo para los temas y controlar las actualizaciones del servidor de parámetros. Los mensajes y las llamadas de servicio no pasan por el MASTER, sino que el MASTER establece la comunicación entre pares y entre todos los procesos de nodo y después de que estos se registren con el MASTER. Esta arquitectura descentralizada se presta bien a los robots, que a menudo consisten en un subconjunto de hardware informático en red, y pueden comunicarse con computadoras externas para realizar cálculos pesados.

Herramientas

La funcionalidad del núcleo ROS se expande con una variedad de herramientas que permiten a los desarrolladores: visualizar y recopilar información, navegar de manera sencilla la estructura de paquetes y crear código para automatizar tareas complejas y otros procesos de configuración. La suma de estas herramientas aumentan las posibilidades de los sistemas que utilizan ROS, proveyendo a estos de soluciones simples a tareas comunes en el desarrollo dentro de la robótica. Estas herramientas son provistas por medio de paquetes como otro algoritmo, pero a diferencia de brindar implementaciones de hardware o algoritmos para tareas del robot, estos paquetes proveen tareas y herramientas separadas que las incluidas por el núcleo de la mayoritaria de las instalaciones modernas de ROS.

rviz

rviz es una herramienta de simulación y visualización 3d para robots, el ambiente en el que estos se desempeñan y la información de sensores que estos generan dentro de este. Es altamente configurable y posee distintos tipos de plugins y formatos de visualización. Algunas de las aplicaciones comunes de RViz incluyen la visualización de datos de sensores como cámaras, LIDAR (Light Detection and Ranging), IMU (Inertial Measurement Unit) y otros sensores utilizados en robótica. También se utiliza para mostrar información sobre la posición y orientación de los robots, planificación de trayectorias, mapeo en 2D y 3D, y la visualización de datos de simulaciones robóticas.

rosbag

rosbag es una herramienta de línea de comandos para grabar y reproducir datos de mensajes y comunicaciones dentro de ROS. rosbag utiliza un formato de archivo llamado bags, que registra los mensajes de ROS mediante escuchar los ROS topic y grabando los mensajes en la medida que son emitidos. Reproducir los mensajes desde bag es mayormente lo mismo que tener los ROS nodes originales reproduciendo esta. Esto hace de bags una herramienta muy útil para capturar la información que posteriormente se puede usar analizar y posteriormente ser usada para el desarrollo de paquetes ROS por ejemplo. Mientas rosbag es una herramienta puramente de línea de comando, también posee una implementación rqt llamada rqt_bag que brinda una interfaz gráfica.

catkin

Catkin es la herramienta de compilación de ROS actual, habiendo reemplazado a rosbuild. Catkin esta basada en CMake, es multiplataforma, de código abierto e independiente del lenguaje de programación. Catkin proporciona una estructura de directorios estándar en la que se organizan las dependencias y los archivos fuente del proyecto. Además, proporciona herramientas para compilar, vincular y crear bibliotecas y ejecutables de ROS. También ayuda a administrar las dependencias entre los paquetes de ROS y permite crear paquetes independientes que se pueden usar y compartir entre diferentes proyectos.

rosbash

El paquete rosbash package provee un conjunto de herramientas que aumentan la funcionalidad del Bash. Estas herramientas incluyen rosls, roscd y roscp, que replican las funcionalidades de Ls, Cd, y cp respectivamente. La versión de ROS de estas herramientas de línea de comando permiten a los usuarios usar el nombre de los paquetes ROS en vez de los nombres de los archivos, abreviando de esta forma la extensión de los mismos. Es paquete incluye el auto completado por medio de tab en la mayoría de las utilidades ROS, y también rosed que permite la edición de los archivos seleccionados en el editor de código preferido y también rosrun que permite la ejecución de archivos mediante paquetes ROS. Rosbash brinda soporte a las mismas funcionalidades para zsh y tcsh, en una menor cuantía.

roslaunch

roslaunch es una herramienta usada para ejecutar múltiples nodos ROS de forma local o remota, de igual forma es usado para configurar parámetros en un servidor de parámetros ROS. Los archivos de configuración roslaunch, cuyo código esta escrito usando XML pueden de forma sencilla automatizar complejos procesos de arranque y configuraciones con un solo comando. Las secuencias de comandos dentro de archivos roslaunch pueden anidar dentro de ellas llamadas a otras secuencias de comandos roslaunch, inicio de nodos ROS en máquinas específicas y hasta reiniciar procesos que han caído durante esta.

Aplicaciones

Las áreas que incluye ROS son:

  • Un nodo principal de coordinación.
  • Publicación o subscripción de flujos de datos: imágenes, estéreo, láser, control, actuador, contacto, etc.
  • Multiplexación de la información.
  • Creación y destrucción de nodos.
  • Los nodos están perfectamente distribuidos, permitiendo procesamiento distribuido en múltiples núcleos, multiprocesamiento, GPUs y clústeres.
  • Login.
  • Parámetros de servidor.
  • Testeo de sistemas.

Las áreas que incluirán las aplicaciones de los paquetes de ROS son:

Historial de versiones

Una versión de ROS puede ser incompatible con otra. Normalmente están referidas por un sobrenombre en vez de por una versión numérica. Las versiones, desde la más actual a la primera versión, son:

Distribución Fecha de Lanzamiento Póster Fecha EOL
Melodic Morenia 23 de mayo de 2018 Versión estable actual: 2023-05-30
Lunar Loggerhead 23 de mayo de 2017 Versión estable actual: 2019-05-30
Kinetic Kame 23 de mayo de 2016 Versión estable actual: 2021-05-30
Jade Turtle 23 de mayo de 2015 Versión antigua, sin servicio técnico: 2017-05-30
Indigo Igloo 22 de julio de 2014 Versión antigua, con servicio técnico: 2019-04-30
Hydro Medusa 4 de septiembre de 2013 Versión antigua, sin servicio técnico: 2014-05-31
Groovy Galapagos 31 de diciembre de 2012 Versión antigua, sin servicio técnico: 2014-07-31
Fuerte Turtle 23 de abril de 2012 Versión antigua, sin servicio técnico: --
Electric Emys 30 de agosto de 2011 Versión antigua, sin servicio técnico: --
Diamondback 2 de marzo de 2011 Versión antigua, sin servicio técnico: --
C Turtle 2 de agosto de 2010 Versión antigua, sin servicio técnico: --
Box Turtle 2 de marzo de 2010 Versión antigua, sin servicio técnico: --
Leyenda:
Versión antigua
Versión antigua, con soporte técnico
Última versión
Última versión previa
Lanzamiento futuro

Robots y hardware soportado

Entre los robots y hardware soportado por ROS se pueden encontrar:[5]

ROS-Industrial

ROS-Industrial[7] es un proyecto de código abierto (de licencia BSD (Legacy)/Apache 2,0 (preferred)) que amplía las capacidades avanzadas de ROS a la automatización industrial y la robótica. El repositorio ROS-industrial incluye interfaces para Manipuladores industriales comunes, pinzas, sensores y redes de dispositivos. También proporciona bibliotecas de software para la calibración automática de sensores 2D/3D, proceso de trazado/planificación de movimiento, aplicaciones como Scan-N-plan, herramientas de desarrollador como el plugin de ROS Qt Creator, y un currículo de entrenamiento que es específico para las necesidades de los fabricantes. ROS-I cuenta con el apoyo de un consorcio internacional de miembros de la industria y la investigación. El proyecto comenzó como un esfuerzo colaborativo entre Yaskawa Motoman Robotics, Southwest Research Institute y Willow Garage para apoyar el uso de ROS para la automatización industrial, con el repositorio de github que se fundó en enero de 2012 por Shaun Edwards (SwRI). Actualmente, el consorcio se divide en tres grupos: el consorcio ROS-industrial Américas (liderado por SwRI y ubicado en San Antonio, Texas), el consorcio ROS-industrial Europe (liderado por Fraunhofer IPA y ubicado en Stuttgart, Alemania) y el consorcio ROS-industrial Asia Pacific (liderado por Advanced Centro de remanufactura y tecnología (ARTC) y Universidad Tecnológica de Nanyang (UTN) y ubicado en Singapur).

Los consorcios apoyan a la comunidad global ROS-industrial mediante la realización de la formación ROS-I, proporcionando apoyo técnico y estableciendo la hoja de ruta futura para ROS-I, así como la realización de proyectos de la industria conjuntamente y de manera pre-competitiva para desarrollar nuevas capacidades de ROS-I.[8]


Véase también

Referencias

  1. «ROS Melodic Morenia». wiki.ros.org. Consultado el 10 de junio de 2018.
  2. Morgan Quigley, Eric Berger, Andrew Y. Ng (2007), STAIR: Hardware and Software Architecture, AAAI 2007 Robotics Workshop.
  3. «Repositories». ROS.org. Consultado el 7 de junio de 2011.
  4. Morgan Quigley, Brian Gerkey, Ken Conley, Josh Faust, Tully Foote, Jeremy Leibs, Eric Berger, Rob Wheeler, Andrew Ng. «ROS: an open-source Robot Operating System». Consultado el 3 de abril de 2010.
  5. Willow Garage, Supported robots and hardware. Link:
  6. HANDLE Project, Official web page of the project. Link: Archivado el 26 de febrero de 2013 en Wayback Machine.
  7. «ROS-Industrial About». rosindustrial.org. Consultado el 12 de diciembre de 2017.
  8. «Brief History». ROS-Industrial (en inglés estadounidense). Consultado el 11 de julio de 2018.
Notas
  • STAIR: Proyecto STanford Artificial Intelligence Robot, Andrew Y. Ng, Stephen Gould, Morgan Quigley, Ashutosh Saxena, Eric Berger. Snowbird, 2008.

Enlaces externos

Este artículo ha sido escrito por Wikipedia. El texto está disponible bajo la licencia Creative Commons - Atribución - CompartirIgual. Pueden aplicarse cláusulas adicionales a los archivos multimedia.