You are on page 1of 12

DEPARTAMENTO DE LA ENERGA Y MECNICA

CARRERA DE INGENIERIA MECATRNICA

ROBTICA
NRC: 1390

Tarea N 1.1

INTRODUCCIN A LA PROGRAMACION EN ROS

PROFESOR:
Ing. David Loza

ALUMNO:
Miguel Aguirre

Sangolqu, Noviembre del 2017


1. TEMA:
Introduccin a la programacin en ROS

2. OBJETIVOS
2.1. Objetivo General
Identificar la funcionalidad que ROS provee para diferentes aplicaciones,
reconociendo su ambiente de trabajo y las herramientas que este sistema operativo
robtico posee.

2.2. Objetivos Especficos


Reconocer el tipo de arquitectura necesaria para que se establezca una
comunicacin entre nodos.
Generar la programacin necesaria para cada nodo con la finalidad de
resolver los problemas planteados.
Establecer una comunicacin entre un dispositivo externo (joystick) y
ROS para utilizarlo en modo de tele-operacin.

3. MARCO TERICO

3.1. ROS (Robot Operating System)

Proporciona bibliotecas y herramientas para ayudar a los desarrolladores de software a


crear aplicaciones de robots. Proporciona abstraccin de hardware, controladores de
dispositivo, bibliotecas, visualizadores, paso de mensajes, administracin de paquetes y
ms. ROS est licenciado bajo una licencia BSD de fuente abierta.

3.2. Introduccin a msg y srv

msg : los archivos msg son simples archivos de texto que describen los campos de un
mensaje ROS. Se usan para generar cdigo fuente para mensajes en diferentes idiomas.

srv : un archivo srv describe un servicio. Est compuesto de dos partes: una solicitud y
una respuesta.
Los archivos msg se almacenan en el directorio msg de un paquete y los archivos srv se
almacenan en el directorio srv .

Los mensajes de texto son simples archivos de texto con un tipo de campo y un nombre
de campo por lnea. Los tipos de campo que puede usar son:

int8, int16, int32, int64 (plus uint*)


float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
3.3. Arquitectura de ROS

ROS es fundamentalmente un sistema cliente/servidor. Consta de una serie de nodos


(programas) que se comunican entre s a travs de topics (difusin) o services
(comunicacin interactiva).
Existe un nodo principal (master) al que los nodos acuden para localizarse mutuamente y
obtener informacin de configuracin.

3.3.1. Sistema de Ficheros

En el nivel de sistema de ficheros ROS define los siguientes elementos:


Packages: Son la unidad principal de organizacin de software. Pueden contener
procesos ROS, libreras, datos, archivos de configuracin o cualquier agrupacin
de informacin coherente.
Manifests: Archivos XML que contienen informacin sobre packages
(informacin de licencia, dependencias, etc).
Stacks: Colecciones de packages relacionados que aportan funcionalidad
agregada.
Stack Manifest: Archivos XML que contienen informacin sobre stacks.
Message types: Estructuras de mensajes ROS
Service types: Descripciones de servicios (definicin de estructuras de peticiones
y respuestas).

3.3.2. Estructura Funcional


Este nivel se corresponde con la red peer-to-peer de procesos ROS que se ejecutan
simultneamente
Nodes: Procesos. Normalmente diseados de manera modular, de modo que un
sistema est formado por diversos nodes, cada uno con una funcionalidad
concreta. La programacin de nodes ROS se realiza usando libreras cliente ROS,
como roscpp (C++), rospy (Python) o roslisp (LISP).
Master: Proceso con funcionalidades de registro y consulta a los nodes. Permite
que estos se encuentren y se comuniquen.
Parameter Server: Almacn centralizado de datos. Es parte del master.
Messages: Datos con una estructura determinada intercambiados entre nodes.
Topics: Mecanismos de difusin de mensajes. Uno o varios nodes publican
messages en determinado topic al que otros nodespueden suscribirse. Permite
desacoplar produccin y consumo de informacin. Los nodes consumidores de un
topic no necesitan saber de los que publican.
Services: Mecanismos de comunicacin de mensajes de tipo peticin / respuesta.
Bags: Formatos para el almacenamiento y reproduccin de mensajes.

El Master acta como un servicio de directorio. Almacena informacin de registro de


topics y services. Los nodes se comunican con elMaster para registrar informacin propia
o solicitar informacin de registro de otros nodes. Los nodes utilizan el Master para
encontrarse mutuamente, pero una vez localizados se comunican entre s directamente.
4. DESARROLLO
A continuacin se presenta el desarrollo generado para cada uno de los ejercicios
planteados para la prctica

4.1. Ejercicio 1

Planteamiento
Crear una red de comunicacin entre 3 nodos; los cuales permitan, como primer requisito
genera un vector de 3 nmeros agregados de manera randmica, que posteriormente sean
elevados al cuadrado y puedan ser visualizados, adems es necesario que un nuevo nodo
genere la suma de los nmeros que componen este ltimo vector.

Solucin

Como primer paso crearemos el mensaje correspondiente, mismo que estar definido
como un vector de nmeros enteros.

A continuacin se muestra el script correspondiente al primer nodo mismo que ser de


tipo Publisher, encargado de asignar 3 nmeros randmicos entre el 1 y el 9, adems de
publicar el mensaje en un canal al que se llamar topic1.

En la siguiente figura se observa el cdigo correspondiente al nodo 2 que realiza las


acciones tanto de Suscriptor como Publicador, este nodo se encarga de recibir el mensaje
por el canal topic1 realizar la operacin de elevar los nmeros del vector al Cuadrado
y publicarlos por medio del canal 2 topic2.
Este es el nodo 3 del programa, de tipo suscriptor es el encargado de recibir el mensaje
por medio del canal topic2 a la vez que realiza la suma de los nmeros que integran el
vector e imprime este resultado.
Corrida del Programa
Corrida Nodo1.- Se genera el Vector de 3 nmeros enteros randmicos del 1 al 9.

Corrida Nodo2.- Se eleva al cuadrado los nmeros correspondientes al vector

Corrida Nodo3.- Se realiza la suma de los nmeros que integran el vector.

4.2. Ejercicio2
Planteamiento
Generar un programa que permita el ingreso de datos de personas, es decir el ingreso de
su nombre, apellido, edad, preferencias por la robtica, y preferencias por ROS; con la
finalidad de enviar este registro hacia un nodo posterior que imprima estos datos y pueda
crear un archivo de texto en base a los mismos.

Solucin
En primer lugar definimos el mensaje que vamos a utilizar, en este caso se pretende la
utilizacin de varios datos de tipo string.
Posteriormente se crea el primer nodo de tipo publicador, correspondiente a la interaccin
con el usuario, es decir, este nodo permite que el usuario ingrese los datos que formaran
parte del mensaje, adems publica los mismos por medio del canal topic.

El segundo nodo de tipo suscriptor es el encargado de recibir los datos del mensaje
entregado al canal topic, mismo que imprime estos datos en el terminal adems de
generar un archivo de texto con los datos recibidos.
Corrida del programa

Corrida Nodo1.- Ingreso de datos del usuario por teclado

Corrida nodo2.- Impresin de los datos entregados por el anterior nodo.

4.3. Ejercicio 3

Planteamiento
Se pretende establecer una comunicacin entre ROS y un dispositivo externo, en este caso
un joystick que funcione en modo teleoperado y de esta manera poder controlar los
movimientos de la tortuga perteneciente al nodo Turtlesim.

Solucin
Es necesario instalar cada uno de los componentes extras, o drivers que no incluye la
versin full de ROS kinetic, sudo apt-get install ros-kinetic-joy es el caso del
reconocimiento del joytcik. Adems utilizaremos el paquete jstest que permite el
reconocimiento y calibracin de un dispositivo tipo joystick con Linux.
Se observa la presencia de dos dispositivos el primero js0 corresponde al acelermetro
integrado en el computador, y el segundo js1 es el asignado para el joystick usb.
A continuacin se asigna la entrada js1 como parmetro para que el joy_node trabaje con
el dispositivo correcto. Adems se inicia el nodo joy_node para establecer la
comunicacin entre ros y el joystick.

Posteriormente es necesario crear un nodo que cumpla las funciones tanto de suscriptor
como de publicador, el cual se encargar de acceder a los mensajes (Twist, Joy) de
paquetes preestablecidos para recibir los datos entregados por el joystick, datos que
corresponden al movimiento de dos ejes (x,z); una vez hecho esto el nodo publica estos
datos en el mensaje Twist correspondiente al topic /turtle1/cmd_vel mismo que interacta
posteriormente con el nodo Turtlesim_node para generar el movimiento de la Tortuga,
para esto se debe mantener en accin este nodo.
Corrida del programa

Impresin de los dos ejes de accin del joystick solicitados en nodo utilizado

Se observa a continuacin el recorrido de la tortuga generado por el joystick.

5. ANLISIS DE RESULTADOS
5.1. Ejercicio 1

A continuacin se presenta la interaccin entre los 3 nodos utilizados para la solucin del
problema, en este caso se observa la presencia de dos canales, el primero (topic1)
comunica el nodo 1 y 2 y el segundo (topic2) comunica el nodo2 y el nodo3.
5.2. Ejercicio 2

Se observa la interaccin de los dos nodos utilizados mismos que se comunican por un
canal llamado topic.

5.3. Ejercicio 3

En la siguiente figura se muestra la interaccin entre tres nodos, el primer nodo


corresponde al reconocimiento y manejo del joystick, el segundo nodo creado como script
en python establece las pautas para la comunicacin entre el dispositivo y el modo grfico
de la tortuga y el tercer nodo corresponde a la salida grfica de la Tortuga. Estos nodos
se conectan por topics integrados en ROS como son Joy correspondiente al joystick y
/turtle1/cmd_vel que enva el movimiento a la tortuga.
6. CONCLUSIONES

Se identific que ROS es un sistema operativo muy til para el desarrollo de


aplicaciones robticas debido a que proporciona diferentes herramientas como
controladores de dispositivo, bibliotecas, visualizadores, paso de mensajes,
administracin de paquetes, etc y al estar licenciado bajo una licencia de fuente
abierta genera una fcil integracin de la comunidad interesada en la robtica.
Se logr reconocer que ROS es fundamentalmente un sistema con una
arquitectura de tipo cliente/servidor, consta de una serie de nodos que se
comunican entre s a travs de topics o services.
Se generaron los diferentes nodos o programas que cumplieran lo solicitado en
cada problema, para esto se utiliz programacin en python debido a que este
lenguaje contempla varios beneficios en comparacin con C++ para este caso.
Se logr establecer una comunicacin entre un joystick y ROS para utilizarlo en
modo de tele-operacin de la tortuga de Turtlesim, para esto fue necesario la
instalacin de los drivers correspondientes, adems de la calibracin y testeo del
mismo.

7. RECOMENDACIONES

Es de suma importancia respetar las pautas que ROS emplea, para esto es
necesario seguir los tutoriales que ofrece para una mayor introduccin en el
sistema.
Es necesario establecer previamente el tipo de datos de los mensajes, adems de
la cantidad de canales de comunicacin, necesarios para contemplar el tipo de
datos que se envan y reciben.
Es preciso identificar adecuadamente la funcin que cumple cada uno de los nodos
que interviene en el proceso de cada problema, con la finalidad de que exista una
correcta integracin de los mismos y se puedan obtener los resultados deseados.
Es recomendable la utilizacin de Jstest que permite el reconocimiento y
calibracin del joystcik para Linux.

8. BIBLIOGRAFA

Ros wiki, (2017), ROS Tutorials, Obtenido de:


http://wiki.ros.org/ROS/Tutorials
Soto F. (2013), Taller de Robtica y Visin Artifical, Obtenido de:
http://digibuo.uniovi.es/dspace/bitstream/10651/18286/1/TFM%20-
%20Fernando%20Soto.pdf
Rethink Robotics, (2015), Using Joysticks , Obtenido de:
http://sdk.rethinkrobotics.com/wiki/Using_Joysticks

You might also like