ros tutorial

ROSCore y Workspaces

Fundamentos de ROS

ros_electric

Roscore

 Seguimos con el tutorial de ROS en español. Tal y como hemos comentado en las entradas anteriores de ROS Tutorial, una aplicación de ROS está formada por paquetes, que a su vez están formados por nodos, bien pues Roscore es el corazón de ROS, son un conjunto de nodos y programas que son necesarios y por lo tanto habrá que ejecutar en cualquier aplicación de ROS. Roscore va a iniciar tres apartados:

 

  • ROS Master
  • Servidor de parámetros (ROS Param)
  • Rosout
 

Al tratarse ROS de un sistema centralizado formado por nodos, Roscore va a inicializar un nodo maestro (ROS Master) necesario para que los demás nodos de ROS puedan comunicarse entre ellos. Además inicializará un servidor de parámetros que veremos en otra entrada y un nodo para temas de depuración.

ruleta2
Diagrama de aprendizaje

Estos apartados se ejecutarán como por arte de magia si escribimos en nuestra consola:

 

$roscore

 

Sólo se puede tener un Roscore iniciado. Es decir, si abrimos una terminal y escribimos “roscore”, siempre que esta ventana de la terminal se mantenga abierta, no nos dejará iniciar otro terminal e iniciar Roscore.


Una de las funciones más importantes que tiene Roscore es la de poner en contacto a los diferentes nodos que vamos creando. Si queremos que un nodo le pase información a otro, Roscore será el encargado de poner a estos nodos en conocimiento uno de otro, ayudando en este primer intercambio de información, se puede decir que es el nodo que “presenta” a otros nodos. Una vez que dicha “presentación” ha tenido lugar, Roscore ya no es necesario para que estos sigan hablando, pero sí será necesario para la correcta ejecución de la aplicación. Por eso Roscore deberá estar ejecutado en una terminal aparte siempre que nuestra aplicación se esté ejecutando.

 

Workspace

ROS está preparado para trabajar en un área de trabajo (workspace), esta área de trabajo no es más que una carpeta en nuestro ordenador. Esta carpeta es la carpeta en la que vamos a introducir los paquetes necesarios para ejecutar nuestra aplicación. La manera de agregar paquetes a esta carpeta y la forma y estructura que estos paquetes van a tener, viene dada por el sistema “catkin” (anteriormente “rosbuild”), por eso nuestra área de trabajo o workspace a partir de ahora se le llama “catkin workspace”. En este enlace accederéis a la wiki de ROS.

El sistema de archivos catkin no es más que una plantilla para hacer nuestros programas y paquetes, de tal manera que estos van a ser fácilmente interpretados por cualquier programa facilitando la portabilidad de estos.
En definitiva, si queremos hacer una aplicación robótica con ROS, tanto el workspace como cada paquete dentro del workspace, deberán estar hechos bajo el sistema catkin.

Afortunadamente y como no podía ser de otra manera cuando nos descargamos un paquete este va a estar echo con el sistema catkin, facilitando su importación a nuestro programa.

La estructura que tiene el “catkin workspace” es la siguiente:

folder_catkin

Dentro del nuestro workspace hay tres carpetas. La más importante es la carpeta src. Dentro de esta carpeta nos encontramos con la siguiente estructura:

Es decir, tenemos la carpeta correspondiente a cada paquete y un archivo llamado CmakeLists.txt que es como la receta, es una plantilla, de tal manera que, si otro paquete u otro workspace quiere usar nuestro workspace o un paquete contenido en este, este archivo le ayudará a comprender la información.
A su vez, dentro de cada paquete, tenemos la siguiente estructura:

folderx

Por un lado contamos con una carpeta src que es donde irán los archivos que programaremos, y dos archivos, otro CmakeLists.txt (misma función que el CmakeLists.txt de la carpeta src del catkin_workspace), y el archivo package.xml, que se encargará de definir el nombre del paquete, el número de versión de este, autores y lo más importante, dependencias.
En otra entrada posterior veremos más en detalle tanto el archivo CmakeLists.txt y package.xml de cada paquete.

Como crear un catkin workspace

Creamos directorio src dentro de catkin_ws, el comando -p nos crea los directorios “padres”, es decir este comenado crea la carpeta catkin_ws y dentro de ella la carpeta src.

$ mkdir -p ~/catkin_ws/src

y escribimos:

$ cd ~/catkin_ws/
$ catkin_make

Este comando se debe ejecutar en la raíz de catkin_ws El comando catkin_make va a crear dos carpetas nuevas: devel y build

Ahora habría que hacer “source” para que cuando abramos una consola nueva sepa que el workspace está en esa carpeta, para ello escribiremos “source ~/catkin_ws/devel/setup.bash” en la terminal lo que añadira al final del archivo ~/.bashrc de nuestro sistema Linux la ruta de nuestro workspace, quedando claro para Linux que nuestro workspace es ese.

Catkin se usa para poder construir software, para ello se necesita información como puede ser donde se encuentra el código fuente, donde están las librerías, dependencias, etc.. Toda esta información se encuentra en el archivo CmakeLists.txt que se explicará con detalle en futuros posts cuando en un ejemplo se requiera modificar dicho archivo.

 

Es posible utilizar varios workspaces, para ello creamos otro:

$ mkdir -p ~/otro_catkin_ws/src
$ cd ~/otro_catkin_ws/
$ catkin_make

Ahora habría que hacer “source” para que cuando abramos una consola nueva sepa que el workspace está en esa carpeta, para ello escribiremos “source ~/otro_catkin_ws/devel/setup.bash” al final del archivo ~/.bashrc de nuestro sistema Linux.

 

Quedando el final de nuestro archivo ~/.bashrc:

 

source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
source ~/otro_catkin_ws/devel/setup.bash

La primera línea indica a Linux donde está instalado ROS, la segunda indica a Linux que active nuestro workspace creado en primer lugar y la segunda indica a Linux que active nuestro workspace creado en segundo lugar desactivando el primero.

 

Es decir, el último workspace al que le hemos hecho source será el que está activado

 

En definitiva, para cambiar de un workspace a otro basta con hacer “source” del workspace que queremos usar, por ejemplo para volver a activar el primer workspace escribiremos de nuevo:

 

$ source ~/catkin_ws/devel/setup.bash

esto activará el primer workspace y desactivara el segundo

 

Aquí acaba el post del tutorial de ROS en español  sobre roscore y catkin_ws que son los cimientos de ROS, esta puede haber sido la lección más aburrida por eso se recomienda un esfuerzo especial por parte del lector para afianzar estos tediosos conceptos de base.
En la próxima entrada hablaremos de elementos básicos como son los nodos y los topics, que son el alma de ROS.

 

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.