Qué es ROS y porqué usarlo?

ros tutorial

En esta entrada del blog vamos a hablar sobre los fundamentos de ROS. vamos a comentar qué es, y porqué deberíamos usarlo. Citaremos además las fuentes que tenemos que tener siempre presentes a la hora de aprender ROS o la hora de realizar un proyecto

ros foundation
varios_ros

Qué es ROS?

ROS es un middleware que nos permite …. para, para. Un middleware? no dijimos que esto iba a ser sencillo?

 

Empecemos de nuevo, ROS es un conjunto de paquetes, herramientas y librerías que nos van a permitir controlar un robot o realizar una tarea.


ROS surge en 2007 y es de código abierto, lo que quiere decir que la gente puede colaborar con el desarrollo del programa. Es mantenido por la Open Source Robotics Foundation (OSRF).

 

Actualmente ROS se usa en vehículos autónomos, drones, manipuladores y poco a poco va ganando terreno en la industria, teniendo la aceptación y la estrecha colaboración con las marcas punteras en automatización industrial y robótica industrial.

ROS está pensado para ser usado de forma modular. Imaginemos que tenemos un robot con una aplicación creada en ROS, esta estará formada por varios paquetes, un paquete será el encargado de leer los datos de la cámara, otro paquete será encargado de mover los actuadores de las ruedas, etc… Se trata de que para programar un robot usemos diferentes paquetes creados por otras personas u organizaciones y los unamos entre sí como su fuese un puzzle.

Porque voy a gastar tiempo en crear un paquete que lea los datos de la cámara por ejemplo si ya lo ha hecho algún experto en lectura de imágenes por cámara. O porqué voy a perder tiempo en programar el movimiento de las ruedas cuando existe un paquete hecho por los expertos en movimiento de la ruedas.

Se trata de no perder el tiempo volviendo a crear lo que ya esta creado y funciona correctamente.

Esto reduce sustancialmente el tiempo empleado en cualquier proyecto robótico. Si nos fijamos en cualquier robot, ya sea un robot industrial o uno para entornos domésticos, veremos como todos funcionan de la siguiente manera.
paquetes_robot_ros
Esquema básico del funcionamiento de cualquier robot

El robot está formado por un controlador que hace de cerebro, motores y unos drivers cuya función es transformar la señal digital que le damos con el controlador en una señal analógica que harán funcionar los motores.



Además imaginemos que el robot cuenta con una cámara de vídeo capaz de obtener la profundidad de los objetos que observa.



ROS iría instalado en el controlador, este controlador estaría corriendo una aplicación de ROS que por ejemplo sería la encargada de mover los motores (ya sea los que hay en un brazo articulado de un robot industrial o en las ruedas en un robot móvil) en función de las imágenes obtenidas mediante la cámara.


Dentro de la aplicación ROS existiría un paquete encargado de obtener imágenes de la cámara y enviarlas al controlador, podría haber otro paquete encargado de transformar las imágenes obtenidas, para por ejemplo, filtrar estas imágenes y quedarse sólo con los objetos redondos de color amarillo.



Otro paquete decidiría las coordenadas del “objeto redondo amarillo” seleccionado y mandaría la orden a los actuadores para acercarse a los objetos. Así obtendríamos una aplicación modular formada por múltiples paquetes. 


Cada paquete estará formado a su vez por nodos, estos nodos son la base de una aplicación creada en ROS.

rosindustrial

Porqué utilizar ROS?

Primero de todo por que esa modularidad que le hemos dado al programa va a permitirnos que en caso de añadir o quitar otro tipo de sensores no tendré que cambiar prácticamente nada mi programa. Sólamente tendré que añadir o quitar el paquete correspondiente a esos sensores.

Una cosa interesante es que este es capaz de combinar paquetes aunque estos estén escritos en diferentes idiomas, ya sea Python o C++.

Existe una cantidad de paquetes de todo tipo disponibles en la red abrumadora.

Incluye herramientas de simulación como pueden ser Rviz o Gazebo. Que nos van a permitir tener una simulación real del robot.

Cuenta con el apoyo de todos los fabricantes de robots, ya sean pensados para un entorno casero o de ocio o incluso industriales. En el ROS Industrial Consortium se juntan los mejores y más conocidos fabricantes de robots industriales y de automatización industrial para dar soporte con paquetes que permiten simular y controlar sus robots o sensores.


Poco o nada puede haber, que nos de tanta confianza como el apoyo, por lo tanto inversión económica, de estas marcas en este software.

Versiones de ROS


Las versiones de ROS van en orden alfabético y ahora mismo vamos por la N, la última es:  Neoetic Ninjemys. Estás versiones suelen estar orientadas a un sistema operativo en particular, dependiendo de la versión de Linux o Windows de la que dispongamos necesitaríamos una u otra.

En este enlace puedes ver las diferentes versiones con su logo actual:

http://wiki.ros.org/Distributions

Enlaces de interes


Ros wiki: El punto central de nuestras consultas debe ser esta wiki, lo tiene todo

http://wiki.ros.org/es

Ros Industrial: Web del consorcio al que apoyan las marcas para implantar ROS en ambientes industriales. Mención especial a sus tutoriales

https://rosindustrial.org/

Robot Ignite Academy: Unos maestros, les debo mucho de mi conocimiento, plataforma de cursos de todo tipo relacionados con ROS, te permiten aprender ROS sin tenerlo instalado.

https://www.theconstructsim.com/

En la próxima entrada del blog hablaremos de como trabajaremos con ROS  y comentaremos cual es nuestro entorno de trabajo. Además introduciremos nuestra rueda de aprendizaje, que no es más mas que la hoja de ruta que marcará nuestro aprendizaje. Hasta entonces!!

Subscríbete a nuestro blog

ROS_custom_message

10 ROS Custom Message

ROS Custom Message Fundamentos de ROS Accede a otros posts En tutoriales anteriores a la hora de la comunicación pub/sub, siempre hemos usado mensajes predefinidos

Read More »

This website uses cookies to ensure you get the best experience on our website. By continuing to browse on this website, you accept the use of cookies for the above purposes.