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 ). 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.
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.
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.
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.
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.
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 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.
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 interfaces gráfica.
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.
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 cuantiá..
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.
Las áreas que incluye ROS son:
Las áreas que incluirán las aplicaciones de los paquetes de ROS son:
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:
Entre los robots y hardware soportado por ROS se pueden encontrar:
ROS-Industrial
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.
Escribe un comentario o lo que quieras sobre ROS (directo, no tienes que registrarte)
Comentarios
(de más nuevos a más antiguos)