Objetivos del diseño del sistema ROS
Con el rápido avance y la creciente complejidad de la robótica, la demanda de reutilización y modularidad del código es cada vez más urgente. Algunos sistemas robóticos de código abierto han tenido dificultades para satisfacer adecuadamente estas necesidades. En 2007, Willow Garage lanzó el Robot Operating System (ROS) de código abierto, que rápidamente desencadenó una oleada de aprendizaje y adopción en la comunidad de investigación robótica.
El sistema ROS surgió de la colaboración entre un proyecto de 2007 del Laboratorio de Inteligencia Artificial de la Universidad de Stanford y el Programa de Robots Personales de Willow Garage. A partir de 2008, el desarrollo corrió a cargo de Willow Garage. Con las notables hazañas de los primeros robots ROS, como el PR2 -como doblar ropa, enchufar dispositivos y preparar el desayuno-, el ROS fue ganando cada vez más atención. Willow Garage expresó su ambición de aprovechar el desarrollo de código abierto para transformar el PR2 en un robot “universal”.
El precio de venta del PR2 fue elevado: 1.400.000 euros en 2011. Ahora se utiliza principalmente para investigación. Equipado con dos brazos de siete articulaciones cada uno, los efectores finales del PR2 son pinzas de agarre. Se desplaza sobre cuatro ruedas montadas en su base. En la cabeza, el pecho, los codos y las pinzas del PR2 hay montadas cámaras de alta resolución, telémetros láser, unidades de medición inercial, sensores táctiles y otros equipos de detección avanzada. Dos ordenadores de 8 núcleos situados en la base sirven de centro de control y comunicación para el hardware del robot. Ambos ordenadores ejecutan Ubuntu y ROS.
Objetivos del diseño de ROS
ROS es de código abierto y sirve como sistema operativo secundario para robots. Ofrece funciones similares a las de un sistema operativo, incluida la abstracción de hardware, la gestión de controladores de bajo nivel, la ejecución de funciones compartidas, la mensajería entre programas y la gestión de paquetes. También ofrece herramientas y bibliotecas para adquirir, construir, escribir y ejecutar programas colaborativos multirrobot. ROS es de código abierto y sirve como sistema operativo backend, o sistema operativo secundario, para robots. Ofrece funciones similares a las de un sistema operativo, como la abstracción de hardware, la gestión de controladores de bajo nivel, la ejecución de funciones compartidas, la mensajería entre programas y la gestión de paquetes. También ofrece programas de utilidades y bibliotecas para adquirir, construir, escribir y ejecutar programas colaborativos multi-robot.
Características principales del ROS
La arquitectura en tiempo de ejecución ROS es un marco de procesamiento que utiliza módulos de comunicación ROS para establecer conexiones de red peer-to-peer libremente acopladas entre módulos. Implementa varios tipos de comunicación, incluida la comunicación RPC (Remote Procedure Call) sincrónica basada en servicios, la comunicación de flujo de datos asincrónica basada en temas y el almacenamiento de datos en el servidor de parámetros. Sin embargo, ROS no posee capacidades inherentes de tiempo real.
Las principales características de las ERO pueden resumirse del siguiente modo:
-
Diseño entre iguales
Un sistema que utiliza ROS consiste en una serie de procesos que existen en múltiples hosts distintos y se comunican durante su funcionamiento a través de una topología peer-to-peer. Aunque los marcos de software basados en servidores centrales también pueden lograr las ventajas de los entornos multiproceso y multihost, estos marcos encuentran problemas con el servidor central de datos cuando los ordenadores están conectados a través de diferentes redes. Un sistema que utiliza ROS consiste en una serie de procesos que existen en múltiples hosts diferentes y se comunican durante su funcionamiento a través de una topología peer-to-peer. Aunque los marcos de software basados en un servidor central también pueden lograr las ventajas de los entornos multiproceso y multihost, en estos marcos surgen problemas con el servidor central de datos cuando los ordenadores están conectados a través de diferentes redes.
-
Soporte multilingüe
A la hora de escribir código, muchos programadores tienden a decantarse por determinados lenguajes de programación. Estas preferencias se deben a factores como la cantidad de tiempo que se dedica a programar en cada lenguaje, la eficacia de la depuración, la sintaxis, la eficiencia de la ejecución y diversas consideraciones técnicas y culturales. Para resolver estos problemas, diseñamos ROS como un marco de trabajo neutral en cuanto a lenguajes. En la actualidad, ROS es compatible con numerosos lenguajes diferentes, como C++, Python, Octave y LISP, y también incluye múltiples implementaciones de interfaces para otros lenguajes.
La singularidad de ROS se manifiesta principalmente en la capa de comunicación de mensajes, más que en niveles más profundos. Las conexiones y configuraciones de extremo a extremo se implementan mediante el mecanismo XML-RPC, que también incluye implementaciones bien documentadas para la mayoría de los principales lenguajes de programación. Nuestro objetivo es que ROS se implemente de forma más natural en varios lenguajes, alineándose con sus respectivas convenciones sintácticas, en lugar de proporcionar interfaces basadas en C para otros lenguajes. Sin embargo, en algunos casos, es conveniente aprovechar las bibliotecas existentes para encapsular la compatibilidad con nuevos lenguajes. Por ejemplo, el cliente Octave se implementa utilizando una biblioteca C++.
Para facilitar el desarrollo multilingüe, ROS emplea un lenguaje de definición de interfaces (IDL) sencillo e independiente del idioma para describir los intercambios de mensajes entre módulos. El IDL utiliza texto conciso para definir la estructura de cada mensaje y permite la composición de mensajes. Por ejemplo, el siguiente diagrama ilustra un mensaje puntual descrito mediante IDL:
Los generadores de código para cada idioma producen los correspondientes archivos de código nativo. Durante la transmisión y recepción de mensajes, ROS compila y ejecuta automáticamente estos archivos en paralelo. Esto ahorra mucho tiempo de programación y reduce los errores: el archivo IDL de tres líneas se expande automáticamente en 137 líneas de código C++, 96 líneas de código Python, 81 líneas de código Lisp y 99 líneas de código Octave. Dado que los mensajes se generan automáticamente a partir de simples archivos de texto, es posible enumerar fácilmente nuevos tipos de mensajes. En el momento de escribir estas líneas, las bibliotecas de código conocidas basadas en ROS contienen más de cuatrocientos tipos de mensajes. Estos mensajes transmiten datos de sensores que permiten a los objetos detectar su entorno.
El resultado final es una gestión de mensajes independiente del idioma, que permite combinar libremente varios idiomas.
-
Racionalización e integración
La mayoría de los proyectos de ingeniería de software robótico existentes contienen controladores y algoritmos que pueden reutilizarse fuera del proyecto. Por desgracia, debido a diversos motivos, las capas intermedias de la mayoría del código son excesivamente desordenadas, lo que dificulta extraer su funcionalidad y aplicarlas más allá de la creación de prototipos.
Para contrarrestar esta tendencia, animamos a convertir gradualmente todos los controladores y algoritmos en bibliotecas independientes de las dependencias de ROS. Los sistemas construidos con ROS se caracterizan por su modularidad, en la que el código de cada módulo puede compilarse por separado. La herramienta CMake utilizada para la compilación facilita el concepto de minimalismo. ROS esencialmente encapsula código complejo dentro de bibliotecas, creando sólo pequeñas aplicaciones para demostrar la funcionalidad de la biblioteca. Esto permite portar y reutilizar código sencillo más allá de la creación de prototipos. Como nueva ventaja, las pruebas unitarias resultan mucho más sencillas cuando el código se distribuye entre bibliotecas. Un único programa de pruebas puede verificar múltiples funciones dentro de una biblioteca.
ROS aprovecha el código de numerosos proyectos de código abierto. Por ejemplo, toma prestado código de controladores, control de movimiento y simulación del proyecto Player; algoritmos de visión de OpenCV; algoritmos de planificación de OpenRAVE; y muchos otros. En cada caso, ROS ofrece diversas opciones de configuración y facilita la comunicación de datos entre componentes de software aplicando envolturas y modificaciones mínimas. ROS evoluciona continuamente gracias al mantenimiento de la comunidad, incorporando a su código fuente actualizaciones de otras bibliotecas de software y parches de aplicaciones.
-
Caja de herramientas completa
Para gestionar el complejo marco de software ROS, utilizamos numerosas utilidades para compilar y ejecutar diversos componentes de ROS, diseñándolos como un núcleo en lugar de construir un entorno masivo de desarrollo y ejecución. Estas herramientas se encargan de diversas tareas, como organizar estructuras de código fuente, recuperar y establecer parámetros de configuración, visualizar conexiones topológicas de extremo a extremo, medir el uso del ancho de banda, representar vívidamente datos de información y generar documentación automáticamente. Aunque hemos probado servicios básicos como el reloj global y el registrador para módulos controladores, seguimos aspirando a modularizar todo el código. Creemos que cualquier pérdida de eficiencia se ve compensada con creces por las ventajas de estabilidad y menor complejidad de gestión.
-
Gratuito y de código abierto
Todo el código fuente de ROS es de acceso público. Creemos que esto promoverá inevitablemente la depuración en todos los niveles del software ROS y corregirá continuamente los errores. Aunque el software que no es de código abierto, como Microsoft Robotics Studio y Webots, posee muchos atributos encomiables, mantenemos que una plataforma de código abierto sigue siendo insustituible. Esto es especialmente cierto cuando el hardware y el software a todos los niveles se diseñan y depuran simultáneamente. Todo el código fuente de ROS es público. Creemos que esto promoverá inevitablemente la depuración a todos los niveles del software ROS y la corrección continua de errores. Aunque el software que no es de código abierto, como Microsoft Robotics Studio y Webots, también posee muchos atributos encomiables, consideramos que una plataforma de código abierto es insustituible. Esto es especialmente cierto cuando el hardware y el software a todos los niveles se diseñan y depuran simultáneamente.
Robots representativos de ROS típicos en el mercado
Los robots representativos que utilizan ROS en el mercado muestran cómo este marco de código abierto admite diversas aplicaciones. Por ejemplo, robots móviles como TurtleBot y Husarion ROS bot se utilizan ampliamente para la educación y la investigación; los robots de servicio como Fetch y PR2 destacan las capacidades avanzadas de manipulación y navegación; mientras que las plataformas industriales como Husky de Clearpath demuestran la integración de ROS en entornos difíciles. Estos ejemplos reflejan la flexibilidad y escalabilidad de ROS en la robótica académica y comercial.
A continuación se enumeran robots ROS cuadrúpedos, robots ROS con ruedas y robots ROS con orugas representativos.
Los mejores robots cuadrúpedos impulsados por ROS
| Nombre Copmay | País | Robot Picture | Aplicación | Sitio web oficial |
| Robótica Unitree | China | ![]() |
educación, investigación y tareas industriales | https://www.unitree.com/go2 |
| Boston Dynamics | EE.UU. | ![]() |
Inspección industrial | https://bostondynamics.com/products/spot/ |
Los 5 mejores robots con ruedas que utilizan ROS
| Nombre Copmay | País | Robot Picture | Descargar | Sitio web oficial |
| MiR | Dinamarca | ![]() |
600 kg | https://www.mobile-industrial-robots.com |
| Robot Robotnik | España | ![]() |
150 kg | https://bostondynamics.com/products/spot/ |
| Robotnik | España | ![]() |
250 kg | |
| Robótica Clearpath | Canadá | ![]() |
100 kg | https://clearpathrobotics.com |
| Robot Fdata | China | ![]() |
1000KG | https://www. fdatabot.com |
Los mejores robots oruga con integración de ROS
| Nombre Copmay | País | Robot Picture | Aplicación | Sitio web oficial |
| Superdroid
Robots |
Canadá | ![]() |
Robot táctico Robot táctico | https://www.superdroidrobots.com/store/tracked-robots |








