Sunteți pe pagina 1din 7

ISSN: 1692-7257

Revista Colombiana de
Tecnologas de Avanzada

ROS SISTEMA OPERATIVO PARA ROBOTICA, NOCIONES Y APLICACIONES

NUEZ TORRES Manuel J1, LEN CARLOS Fredy H1, CARDENAS Pedro F2.

Universidad Nacional de Colombia-Sede Bogot


Departamento de Ingeniera Mecnica y mecatrnica (DIMM)
Ciudad Universitaria. Bogot DC, Colombia.
Tel.: 57-1-3165000, Ext. 11106
E-mail: {mjnunezt, fhleonc}@unal.edu.co.

Abstract: In this paper a brief introduction to operating systems for robots, the concept of
ROS, philosophy which it pursued, the facilities and the current perspective in different
fields. Besides a short introduction to the method of operation and necessary elements
that compose it. Continue, Implementing a basic example simulating a sensor on this
platform, and also, a practical application of many tools that ROS provides in the
integration of serial manipulator 5 DOF to the robots supporting for this system.

Keywords: MRS, Node, ROS, Sensor, Serial Robot.

Resumen: En el presente trabajo se hace una breve introduccin a los sistemas operativos
para robots, el concepto de ROS, la filosofa que persigue, las facilidades que ofrece y la
perspectiva actual en diferentes mbitos. Adems, se hace una pequea introduccin a la
forma de funcionamiento y necesariamente a los elementos que la componen. Se expone
un ejemplo bsico implementando la simulacin de un sensor en esta plataforma, y
tambin, una aplicacin prctica de muchas de las herramientas que proporciona ROS en
la integracin de un manipulador serial 5 DGL a la serie de robots que ya soporta este
sistema.

Palabras clave: MRS, nodos, robot serial, ROS, sensor.

1. INTRODUCION desactualizan rpidamente, debido a que no hay


quien contine con la investigacin o quien la
Actualmente la implementacin de los sistemas aplique en una necesidad del da a da.
robticos se hace ms compleja, en gran parte, En el caso de la industria, las herramientas
debido a que las aplicaciones requieren un mayor desarrolladas son limitadas y muy cerradas -solo
grado de abstraccin e innovacin. El trabajo para ciertos equipos, sensores o motores-, esto
para el desarrollo de estos sistemas, en particular las hace poco o nada portables, y la flexibilidad
el software, debido al grado multidisciplinar que poseen es mnima debido a que el objetivo
requerido en los grupos de desarrollo, resulta ser de la empresa desarrolladora es muchas veces,
en ocasiones desbordante y e irrealizable; por lo proporcionar de forma independiente cada uno
tanto desarrollar un aplicacin en robtica desde de los servicios que el cliente requiera.
cero, es un trabajo que para las universidades y la Como resultado de los esfuerzos de la
industria resulta ser una barrera que impide un investigacin acadmica e industrial por eliminar
alto nivel de apropiacin. algunos de los problemas ya descritos y otros
En la investigacin acadmica se percibe que ms especficos entre ellos los relacionados con
mltiples grupos trabajan en la solucin al seguridad, costos, realizacin de tareas
mismo problema, desarrollan herramientas complejas-, se ha desarrollado lo que hoy se
similares que son poco difundidas, y cuando conoce como MRS (Multi-Robot Systems). Los
varias de estas herramientas se intentan usar sistemas multi-robot, consisten en plataformas
integradas, resulta casi siempre arduo, pues no se completas donde se pueden implementar varios
rigen bajo un mismo esquema de desarrollo. robots para desarrollar una tarea conjunta,
Inclusive, luego de finalizar las investigaciones, encerrando todos los desafos que esto conlleva
muchas de estas herramientas y aplicaciones se sensores, actuadores, comunicacin, y un largo

1
Universidad de Pamplona
ISSN: 1692-7257
Revista Colombiana de
Tecnologas de Avanzada

etctera-(Jones et al 2004). Los MRS son una funcionalidades y hacerlos robustos y maleables
forma particular de los sistemas multi-agente mediante una serie de bibliotecas, drivers y
(MAS) centrados en reactividad, colectividad y herramientas que como parte de un MRS, le
cooperacin para cumplir con tareas de forma apuestan a la modularidad para ayudar a los
que los sistemas sean ms robustos, modulares y desarrolladores. En el sistema se pueden
confiables. desarrollar paquetes completos por expertos en
Existen mltiples plataformas de este tipo con diferentes materias que pueden ser conjugados en
dedicacin a cierta clase de tarea o robot, por la construccin de un proyecto de gran
citar algunas: esta ALLIANCE que es un envergadura.
framework para agentes heterogneos MRS En ROS cada mdulo posee autonoma, de
(Parker 1998); SAMON para trabajos con AUV forma similar a lo que sera la comunicacin de
(autonomus underwater vehicles); sistemas varios computadores en una red LAN, o en
colaborativos para ftbol de robots; USARSim internet en una topologa punto a punto, cada
para el estudio de tareas colaborativas en USAR mdulo interacta con los otros; esto quiere
(urban search and rescue); EL framework decir, que todo se hace mediante mensajes
MARTe centrado en el desarrollo de aplicaciones enviados de acuerdo a un protocolo, en este caso
colaborativas en tiempo real (Farinelli et al el XML-RCP, que es un sistema basado en la
2004); MASON presentada como una biblioteca publicacin y registro (Arumugam et al 2010).
para simulacin de multiagentes en java1; El uso de este protocolo con amplio soporte
SMART (Garca et al 2013), para trabajo con facilita que ROS sea una plataforma
hardware y desarrollo basado en multi-agentes; multilenguaje donde se puede programar
ROS (Robotic operating system), en el cual se primeramente en C++, Python y actualmente en
hace nfasis en las siguientes pginas y muchos Octave, LISP y hasta java. Pero ROS no se
ms. queda all, sino que hace uso del protocolo
ROS se convirti en uno de los sistemas pionero TCP/IP para generar un esquema cliente
en MRS. Podra decirse que con el objetivo de servidor, cuyo principal servidor es el ncleo de
hacer de la aplicacin de la robtica un conjunto ROS, cada nodo tiene una direccin y existe la
de herramientas colaborativas intenta hacerse posibilidad de ofrecer y solicitar servicios
universal, todo a partir de su flexibilidad. El (Quigley et al 2009).
sistema incluye variadas plataformas, lenguajes, Por ltimo pero no menos importante, cabe
compiladores, y paquetes de aplicaciones destacar que el proyecto ROS esta presentado
desarrolladas por mltiples investigadores, bajo licencia BSD, que permite su uso para
empresas y fanticos de la robtica para que desarrollos tanto comerciales como no
otros las puedan usar y lo mejor, modificar y comerciales (Cousins 2012), reduciendo la
crear nuevas y mejoradas opciones. ROS se inversin y fomentando el uso tanto por
convierte entonces en un sistema realimentado desarrolladores independientes como por
continuamente, que de acuerdo a los datos crece empresas, dndole un enfoque cientfico pero
de manera exponencial en prestaciones y aplicado.
popularidad en 5 aos ha pasado a tener ms de Por la estructura, ROS permite una
3000 paquetes de aplicaciones y a ser usado en implementacin distribuida de elementos tan
casi 60 plataformas robticas industriales y de sencillos o complejos como el desarrollador
investigacin2-. desee crear; acopla componentes externos -
OpenCV, Eigen, Gazebo, Player, etc- (Gerkey et
2. ROS ROBOT OPERATING SYSTEM. al 2003) en una red completamente funcional, y
reduce as, en principio, los problemas de
Aunque su nombre es la sigla para sistema interaccin de herramientas a los desarrolladores,
operativo, en realidad ROS es un meta-sistema permitindoles concentrarse en la verdadera
operativo, ya que aunque ofrece las funciones de innovacin.
un sistema operativo debe ser instalado sobre la El ncleo de ROS facilita el manejo de
base de otro sistema operativo -basado en UNIX- excepciones facilitando la depuracin del cdigo;
. Las funcionalidades que ofrece van desde la simplifica el manejo del trfico de mensajes;
abstraccin de hardware de bajo nivel para permite flexibilidad para asignar relevancia a los
control de dispositivos, hasta el paso de mensajes; crea sincronizacin entre elementos
mensajes entre procesos (Quigley et al 2009). mediante sistemas de escucha y espera con
El objetivo de este sistema operativo es actualizaciones constantes (Nguyen et al 2013).
simplificar la tarea de crear cualquier robot En pocas palabras se puede describir como la
imaginable, entregar facilidades para darles interaccin de mltiples hilos de comportamiento
dinmico.
1
Ms informacin en la pgina de la plataforma
http://cs.gmu.edu/~eclab/projects/mason/
3. COMPONENTES DE ROS
2
Datos en http://.ros.org/

2
Universidad de Pamplona
ISSN: 1692-7257
Revista Colombiana de
Tecnologas de Avanzada

De acuerdo a diversos trabajos los principales 3.4. Servicio


componentes de ROS son los siguientes (Rockel
2011), (Tosco et al 2012), (Hevia-Koch 2012), Entregado bajo una arquitectura cliente-servidor;
(Quigley et al 2009): utiliza un mensaje de solicitud y otro de
respuesta. Un nico nodo es el prestador del
3.1 Nodo servicio y todos los dems pueden solicitarlo; un
nodo prestador de servicios permanece en
Es el elemento estructural de ROS, de forma un escucha mientras espera una solicitud.
poco superficial podra decirse que un nodo El tipo de servicio indica la cantidad y tipo de
equivale a un proceso. Posee hasta 5 elementos datos que necesita el servicio como parmetros
bsicos que corresponden a definiciones internas, de entrada y la cantidad y tipo de parmetros que
estas son: publicaciones, suscripciones, enva el servicio como respuesta (fig. 3).
prestacin y peticin de servicios, y
comportamiento principal (fig. 1.).

Fig. 3. Esquema de servicios

3.5. Paquete

Similar a lo que se llamara un proyecto en un


lenguaje de programacin bsico. Un paquete
contiene todo el cdigo fuente de los nodos, las
libreras usadas, las cabeceras y cualquier otro
Fig. 1. Estructura de un nodo recurso necesario para el funcionamiento de la
plataforma, la informacin sobre el tipo de
3.2 Topic lenguajes usados, servicios prestados, y hasta la
forma de compilacin (fig. 4).
Son etiquetas usadas como mecanismo para
identificar el contenido de un mensaje y generar
interacciones con los nodos. Si un nodo publica
enva un mensaje a un topic; si un nodo se
subscribe recibe un llamado cuando un mensaje
de este topic es publicado.
Para que exista un topic debe existir por lo
menos un publicador, y para que este tenga razn
de ser, debe tener al menos un suscriptor.

3.3 Mensaje

Paquete de informacin emitido por un nodo,


escuchado por uno, varios o todos (broadcast), y
que viaja en el canal considerado como topic. En
el canal pueden viajar varios tipos de mensajes
que deben tener el mismo tipo de campos. Los Fig. 4. Estructura de un paquete
campos son llenados por el publicador y ledos
por los suscriptores (fig. 2). De acuerdo con la ideologa que rige a ROS, se
define tambin una entidad que agrupa los
paquetes conocida como pila, y por ultimo otra
para la agrupacin de pilas conocida como
repositorio; los repositorios estn disponibles
online y se generan continuamente en todo el
mundo.

4. FUNCIONAMIENTO DE ROS
Fig. 2. Esquema de Mensajes
Luego de creado un paquete y de que se han
definido varios nodos dentro del mismo -nodos

3
Universidad de Pamplona
ISSN: 1692-7257
Revista Colombiana de
Tecnologas de Avanzada

que pueden ir desde la simple transformacin de | robot.py


|---srv
una variable hasta el procesamiento de video-, | Sensor_Ready.srv
se inician 2 grupos de actividades diferentes: \
Un grupo corresponde a la suscripcin-
Esquema 1. Estructura del proyecto
publicacin. En este caso por ejemplo, un nodo
est encargado de publicar la hora cada tiempo Como se puede observar, en la carpeta principal
determinado en el canal tiempo, entonces, una se encuentran el MakeFile donde se invocan los
vez se produce la hora todos los nodos suscritos paquetes necesarios de ROS, los mensajes y los
para recibirla reciben una notificacin de que el servicios usados. En el archivo package.xml
topic est habilitado e inmediatamente se colocan estn las instrucciones de las dependencias que
en escucha para recibir la informacin, luego se deben compilar y ejecutar, as mismo, la
retornan a sus labores. informacin bsica del proyecto, como lo es
El otro grupo es el de la prestacin-peticin de nombres, licencias, versin, comentarios, etc.
servicio. Un servicio puede ser sencillamente la En la carpeta msg se encuentran las
suma de dos nmeros enteros, en este caso, el configuraciones de los tipos de mensajes que se
nodo que emite la peticin debe entregar los dos usan en las diferentes actividades de publicacin
parmetros para que el mensaje sea enviado; una y suscripcin. En este caso el tpico muestra
vez que el mensaje llega al nodo prestador o ha solo posee un entero muestra y el tpico
recorrido todos los nodos prestadores de Sensor_Mode posee un booleano mode y un
servicios se genera un mensaje de respuesta. El flotante SendRate.
mensaje de respuesta puede ser el retorno del La carpeta srv contiene los tipos de servicios
servicio, en este caso el resultado de tipo entero; definidos. Para el ejemplo nicamente se tiene el
un mensaje de espera, ya que si otros nodos han servicio Sensor_ready, que retorna un valor ok
enviado antes la misma peticin se deben atender de tipo booleano cuando el servicio se habilita.
como una fila aunque se puede enviar una En la carpeta src estn los nodos que hacen uso
peticin para un servicio del mismo tipo con de los elementos ya creados. En general cada
mayor prioridad, en este caso suma_urgente o nodo en una primera seccin importa las
algo similar-; en el peor de los casos, un mensaje libreras, los mensajes y los servicios que
de que no existe un nodo prestador del servicio. necesita; en una segunda seccin, se declaran
Una vez el nodo solicitante recibe la respuesta tanto funciones como variables propias; en una
retorna al estado anterior al envo del mensaje tercera seccin se crea la funcin principal de
pero con la informacin actualizada. nodo que contiene definiciones de los servicios,
suscripciones y publicaciones, la inicializacin
5. SIMULACIN DE UN SENSOR del nodo -rospy.init_node('nodo')- y el cdigo
correspondiente a su proceso principal.
Como una introduccin al desarrollo en ROS se El nodo sensor genera el servicio Sensor_Ready,
ha creado un nuevo proyecto con dos nodos, con est suscrito a Sensor_Mode y publica muestra.
el objetivo de simular el envo de informacin Para simular el comportamiento de un sensor se
desde un sensor hacia un nodo central, que puede implementa una funcin de retardo que mantiene
ser un robot cualquiera. En la fig. 5. se encuentra en modo ocupado al nodo, representando el
el esquema de la red que genera ROS una vez tiempo de adquisicin de la seal. Cuando el
realizado el proyecto mediante el uso de algunos sensor ha terminado la adquisicin, comunica la
comandos bsicos. informacin al nodo que se encuentre subscrito al
servicio (nodo robot), y publica el valor
muestreado, que corresponde a un dato aleatorio
(fig. 6); el nodo de nuevo se coloca en modo
ocupado por otro intervalo de tiempo y se repite
la labor indefinidamente.

Fig. 5. Diagrama de la red

La estructura del proyecto creado se muestra en


el esquema 1:

..\ROB1
| CMakeLists.txt
| package.xml
+---msg
| Muestra.msg
| Sensor_Mode.msg
+---src
| sensor.py

4
Universidad de Pamplona
ISSN: 1692-7257
Revista Colombiana de
Tecnologas de Avanzada

simulaciones en tiempo real, utilizando paquetes


adicionales de desarrollos de software como
Gazebo y V-REP4.

6.1. Descripcin del Hardware

La plataforma consta de un robot serial de cinco


grados de libertad (fig. 8), aadiendo un gripper
como efector final; El robot ha sido construido
con servomotores Dinamixel de diferentes series
que se comunican bajo su propio protocolo5.
Fig. 6. Nodo sensor

Robot est subscrito a muestra y publica en


Sensor_mode -contrario a sensor-, generando as
un lazo lgico de comunicacin entre los dos
nodos, como se establece en la fig. 5.
Robot enva una solicitud de Sensor_Ready que
le avisa cuando el sensor est disponible para
enviar muestras. Como robot est subscrito a la
publicacin de muestra recibe la informacin
cada vez que es generada y la almacena en un
buffer. Cuando el buffer est lleno, el robot
realiza una operacin, en este caso de promedio
con los datos y los imprime en la terminal (fig.
7).
Fig. 8. Manipulador Serial de 5GDL y efector

Los Servos se conectan en serie tanto para


alimentacin como para control. El control se
realiza a travs de un USB2Dinamixel conectado
a un PC y a un Hub donde se conecta el primer
motor de la conexin en serie y la fuente de
energa (esquema 2).

Fig. 7. Nodo robot

6. IMPLEMENTACIN DE UN ROBOT
SERIAL

Cuando se disea y se construye un nuevo robot


para ser implementado, se hace necesario utilizar
un framework que permita explotar de forma
controlada las funcionalidades para las que la
planta fsica fue creada. Existen mltiples
ejemplos de plataformas robticas con hardware
y software desarrollado por equipos de trabajo
en robtica alrededor del Mundo, los cuales han
logrado implementar y/o potenciar en ROS3
De esta manera, tomando una planta elaborada
desde cero, se puede crear toda la red de nodos,
Esquema 2. Conexin de hardware
servicios y mensajes necesarios para lograr
controlar cada una de las acciones del robot
6.2. Descripcin de la Aplicacin en ROS
desde el nivel de los motores, inclusive, se puede
obtener informacin relevante sobre el estado de
la planta, resultados de clculos y hasta
4
Ms informacin sobre la plataforma en
3
El ejemplo ms destacado es RP2 desarrollado por the http://coppeliarobotics.com/
5
willow Garage, en Conceptos bsicos y ejemplos en
http://www.willowgarage.com/pages/software/ros-platform http://www.robotis.com/xe/dynamixel_en

5
Universidad de Pamplona
ISSN: 1692-7257
Revista Colombiana de
Tecnologas de Avanzada

En la fig. 9 se presenta un esquema simplificado


como acercamiento a la red implementada en
ROS. La estructura contiene nodos generalizados
para lograr el funcionamiento adecuado del
manipulador:
El bloque Dynamixel consiste en la
comunicacin con la planta fsica. Integran
todos los nodos que gestionan y permiten
enviar seales que puedan ser interpretadas
en principio por el USBDinamixel.

Nodos especficos para cada motor, que Fig. 9. Esquema de la red para el manipulador
convierten las instrucciones llegadas del resto
de la red en instrucciones de movimiento para En la wiki de ROS6 existe informacin sobre
cada servomotor, en el estndar de los algunos paquetes que ya se han desarrollado que
motores, que son enviadas por el bloque de han facilitado estas tareas, entre ellos est el
nodos Dynamixel. paquete tf que proporciona algunas herramientas
para realizar clculos de cinemtica en cuanto a
marcos de referencia se refiere; otra herramienta
La cinemtica del robot se encuentra
es el paquete dinamixel_motor que incluye
implementada por completo, por lo que se algunas funciones de manipulacin de los
incluyen nodos de funciones que generan motores que posee la planta; entre otros.
clculos de cinemtica directa, cinemtica
inversa y Jacobianos. 5. AGRADECIMIENTOS
A la Universidad Nacional De Colombia, A Travs
Por otro lado para poder obtener todas las De Las Vicerrectora de Investigacin.
PROGRAMA DE FORTALECIMIENTO.
variables de inters de acuerdo al nivel de
PROGRAMA NACIONAL DE SEMILLEROS DE
control deseado, se tiene un bloque destinado INVESTIGACIN, CREACIN E INNOVACIN
a los estimadores, donde se incluyen nodos DE LA UNIVERSIDAD NACIONAL DE
como por ejemplo los filtros Kallman. COLOMBIA 20132015. Proyecto 18344 ROBOT A
ESCALA TIPO INDUSTRIAL
Otra parte gestiona la manera en la que el
6. CONCLUSIONES
robot se mueve (Motion control). En esta
seccin se han contemplado bloques con ROS se visualiza como una herramienta que
nodos para la planeacin de trayectorias, los permite el avance profundo en los proyectos, que
interpoladores, e incluso splines. fomenta la interaccin entre grupos de
investigacin y que de acuerdo a la situacin
Para encargarse la interaccin de todas estas actual est acoplando la investigacin acadmica
partes, se usan nodos dentro de un bloque de e industrial.
control. El bloque comunica directamente a
los nodos motores los resultados de todos los An existen debilidades en ROS que se pueden
procesos internos, interactuando con nodos minimizar con el tiempo. Cabe mencionar, la
falta de un estndar para todo el software que se
que hacen parte del bloque controlador, cuya
va implementando; integrar aplicaciones y
funcin es administrar los nodos
aprender a usar todas estas herramientas necesita
relacionados con la forma de movimiento. de un periodo de tiempo amplio, soporte para
todos los sistemas operativos, entre otras.
Por ltimo, existen unos nodos que
corresponden a la visualizacin en una Como lo demuestran los casos prcticos, ROS
interfaz grfica de la simulacin de la planta permite realizar desde las aplicaciones ms
en tiempo real, todos incluidos en el bloque bsicas, que pueden ir desde la simple
interfaz. simulacin de un proceso, hasta aplicaciones
completas que incluyan todas las herramientas
que se espera tener cerca, cuando se usa un robot,
y lo que es an mejor mltiples plataformas.

6
http://wiki.ros.org/

6
Universidad de Pamplona
ISSN: 1692-7257
Revista Colombiana de
Tecnologas de Avanzada

Una implementacin como la expuesta con el Technology, Tesis para el grado de Master
robot serial facilita que luego se puedan iniciar del departamento de Informtica,
nuevas investigaciones sobre la misma Universidad de Hamburgo, Hamburgo,
aplicacin, con un mayor nivel de profundidad y Alemania
en temas tan variados como la colaboracin, Quigley M., G. B., C. K., F. J., F. T., L. J., B. E.,
control, optimizacin y un largo etctera. W. R., N. A. (2009), ROS: an open-source
Robot Operating System, Computer Science
Department, Stanford University, Stanford,
REFERENCIAS CA.
Tosco S., C. F., B. M., (2012), implementacin
Arumugam R., E. V., B. L., X. W., K. K., K. S., de un esquema de teleoperacin utilizando
(2010), M. K., K. G., DAvinCi: A Cloud el sistema operativo ros en el contexto de un
Computing Framework for Service Robots, laboratorio remoto, Mecnica
IEEE International Conference on Robotics Computacional Vol XXXI, Salta,
and Automation. Argentina.
Cousins S., (2012). Is ROS Good for Robotics;
IEEE Robotics & Automation Magazine.
Farinelli A., I. L., N. D., (2004), Multi-Robot
Systems: A classification focused on
coordination, IEEE Transactions on System
Man and Cybernetics, part B.
Garca C., C. P., S. R., P. L., (2013), A
cooperative multi-agent robotics system:
Design and modelling, artculo en Experts
Systems with applications, Science Direct.
Gerkey B., V. R., A. H., (2003), The
Player/Stage Project: Tools for Multi-Robot
and Distributed Sensor Systems,
Proceedings of the International Conference
on Advanced Robotics (ICAR)., Coimbra,
Portugal.
Hevia-Koch P., (2012), implementacin de
middleware ROS para robot de servicio,
Universidad de Chile, Facultad de ciencias
fsicas y matemticas, departamento de
ingeniera elctrica, Santiago de Chile,
Chile.
Hold-Geoffroy. Y., G. M., G. C., L. M., G. P.,
(2013), ros4mat: A Matlab Programming
Interface for Remote Operations of ROS-
based Robotic Devices in an Educational
Context, international Conference on
computer an d Robot Vision.
Jones C., S. D., M. M., G. B., (2004), Principled
Approaches to the Design of Multi-Robot
Systems, Proc. Workshop on Networked
Robotics, IEEE/RSJ Intl. Conf. on
Intelligent Robots and Systems (IROS-04),
Sendai, Japn.
Nguyen H., C. M., H. K., K. C., (2013), ROS
Commander (ROSCo): Behavior Creation
for Home Robots, ICRA.
Parker, L., (1998), ALLIANCE: An Architecture
for Fault Tolerant Multi-Robot
Cooperation, IEEE transactions on robotics
and automation, vol. 14, no. 2.
Rockel S., (2011), A Multi-Robot Platform for
Mobile Robots with Multi-Agent

7
Universidad de Pamplona

View publication stats

S-ar putea să vă placă și