ROS (Robot Operating System) no es un sistema operativo en el sentido clásico (como Linux o Windows), sino un framework o middleware para el desarrollo de aplicaciones robóticas. Proporciona herramientas, bibliotecas y convenciones que permiten a los desarrolladores crear sistemas robóticos modulares, escalables y reutilizables.
¿Qué es ROS?
Relacionado: IDOR. biblio. Herramientas. ONOS. CENT.
ROS es una plataforma de software de código abierto que facilita el desarrollo de sistemas robóticos complejos. Se construye sobre Linux (generalmente Ubuntu) y proporciona servicios como:
-
Comunicación entre procesos (nodos).
-
Control de sensores y actuadores.
-
Representación del entorno (mapas, modelos 3D).
-
Planificación de movimientos.
-
Visión artificial, navegación, manipulación, etc.
Componentes Clave de ROS
-
Nodos (
nodes):-
Son los procesos que ejecutan tareas. Cada nodo se encarga de una función específica: leer un sensor, controlar un motor, procesar imagen, etc.
-
Pueden estar escritos en C++ (
roscpp) o Python (rospy).
-
-
Tópicos (
topics):- Son canales de comunicación asíncronos entre nodos. Un nodo puede publicar datos (como imágenes de cámara) y otro puede suscribirse para recibirlos.
-
Mensajes (
messages):- Estructuras de datos que se intercambian por los tópicos. Ejemplo: un mensaje
geometry_msgs/Twistpuede contener velocidades lineales y angulares.
- Estructuras de datos que se intercambian por los tópicos. Ejemplo: un mensaje
-
Servicios (
services):- Comunicación sincrónica entre nodos: un nodo hace una petición y espera la respuesta (por ejemplo, pedir al robot que se mueva a cierta posición).
-
Acciones (
actions):- Para tareas que toman tiempo (como navegar a un punto), permiten iniciar la acción, seguir su progreso y cancelarla si es necesario.
-
Launch files:
- Archivos
.launchque permiten iniciar múltiples nodos con configuraciones específicas.
- Archivos
-
ROS Master (
roscore):- Es el servidor central que mantiene registro de los nodos y facilita su descubrimiento y conexión.
Ejemplo de arquitectura básica
Imagina un robot móvil con ROS:
-
camera_nodepublica imágenes por el tópico/camera/image_raw. -
image_processing_nodese suscribe a ese tópico y detecta obstáculos. -
navigation_nodepublica comandos de movimiento en/cmd_vel. -
motor_controller_nodese suscribe a/cmd_vely controla los motores.
Toda esta comunicación ocurre de manera modular y descentralizada, sin que los nodos se conozcan directamente.
️ Ejemplo simple en Python
import rospy
from geometry_msgs.msg import Twist
def mover_robot():
pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10)
rospy.init_node('robot_mover', anonymous=True)
rate = rospy.Rate(10) # 10 Hz
vel_msg = Twist()
vel_msg.linear.x = 0.2
vel_msg.angular.z = 0.1
while not rospy.is_shutdown():
pub.publish(vel_msg)
rate.sleep()Este nodo hace que el robot se mueva hacia adelante con un ligero giro.
ROS y Ciberseguridad
ROS fue diseñado para investigación, no para entornos hostiles, por lo que tiene debilidades importantes si no se protege:
-
No tiene autenticación ni cifrado por defecto.
-
Cualquier nodo conectado a la red puede:
-
Publicar comandos falsos (
/cmd_vel). -
Escuchar datos sensibles (cámaras, sensores).
-
Detener nodos o incluso reiniciar el sistema.
-
️ Para mitigar esto, se usa:
-
ROS 2, que implementa seguridad con DDS (Data Distribution Service): autenticación, cifrado, control de acceso.
-
VPNs o redes privadas para aislar el robot.
-
Firewalls y segmentación de red.
Casos de uso reales
-
Robots de reparto autónomos (TurtleBot, Tiago).
-
Brazos robóticos industriales.
-
Drones con navegación autónoma.
-
Coches autónomos en fases de prototipo (ROS se integra con simuladores como Gazebo o CARLA).
-
Robots quirúrgicos y aplicaciones médicas (I+D).
Herramientas útiles en ROS
-
rqt_graph: visualiza los nodos y conexiones activas. -
rviz: visualización 3D de sensores, trayectorias, etc. -
rosbag: graba y reproduce datos para pruebas. -
tf: gestiona transformaciones entre sistemas de coordenadas (muy útil en robótica móvil y brazos robóticos).
Conclusión
ROS es el estándar de facto en desarrollo de sistemas robóticos. Su arquitectura modular, soporte de múltiples lenguajes y comunidad lo hacen ideal para prototipos, investigación y desarrollo industrial. Eso sí, requiere protección activa si se despliega en entornos reales debido a sus vulnerabilidades en versiones anteriores a ROS 2.
¿Quieres que te muestre un ejemplo práctico de un sistema completo en ROS o cómo integrarlo con sensores reales?