You are on page 1of 26

Robot Operating System ROS

Fundamentos de Robtica
Integrantes: Ronald Campoverde. 200531135 Roger Granda. 200834711 Diana Panchana. 200713907 Henry Suarez Avils. 201015740

Paralelo: 05 26/06/2013

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

INDICE
ndice Introduccin Historia Misin Que es ROS? Objetivos de ROS Nomenclatura de ROS Plataformas para ROS Arquitectura del sistema ROS Aplicaciones Versiones Proceso de instalacin Quines estn por detrs de todo esto? Cul est siendo la clave de su xito? La ventaja de un sistema operativo para robots Definicin del Experimento Problemas encontrados. Conclusiones y recomendaciones. Bibliografa 2 3 4 5 5 7 8 10 11 12 13 14 16 17 18 19 25 25 26

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Introduccin

El desarrollar un software para cualquier robot no es tarea fcil, sino todo lo contrario su complejidad aumenta ya que los avances que la robtica ha tenido sigue aumentado cada vez ms. Cada robot es distinto a otro sea en su infraestructura hardware y software; por lo que la reutilizacin de cdigo es no trivial. La robtica hoy en da es difcil de describir debido a que siempre existen nuevas maneras de crearla y programarla; es por todo esto que se ha desarrollado el proyecto ROS que est basado en libreras que interactan con el robot. ROS tambin nos facilita la interaccin con los mensajes externos. ROS corre el riesgo de convertirse en el estndar de factor en el desarrollo de sistemas robticos. Los chicos de Willow Garage no paran de sorprender a todo el mundo y convierten en oro todo lo que tocan. Lo impresionante de la historia es que la SpinOff de Stanford pblica como software libre todo el cdigo que desarrolla, est ms que abiertos a la colaboracin y documenta todo de manera excelente realizando grandes esfuerzos de divulgacin. Todo un ejemplo. Sigo a este grupo desde hace un ao (casi desde su nacimiento) y sinceramente, los admiro profundamente. Para quien no este enterado en que consiste esto de ROS, intentar hacer una breve introduccin (aunque es muy complicado porque tiene un gran nmero de cosas) de toda su amplia capacidad.

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Historia
ROS se desarrolla y es mantenido por una compaa de california, Willow Garage, fundada en 2006 por Scott Hassan, quien fue uno de los primeros empleados de Google que estuvo involucrado en el desarrollo de la tecnologa del motor de bsqueda y que tambin estaba detrs de Yahoo! Grupos (eGroups, de hecho, que se convirti en Yahoo! Grupos). El presidente y consejero delegado de Willow Garage es Primos Steeve, anteriormente en IBM.

ROS se desarroll originalmente en 2007 bajo el nombre de switchyard por el Laboratorio para dar soporte al proyecto del Robot con Inteligencia Artificial de Stanford (STAIR ). Desde 2008, el desarrollo es continuo primordialmente en Willow Garage, un instituto de investigacin robtico con ms de veinte instituciones colaborando en un modelo de desarrollo federado. ROS inici como un proyecto de inteligencia artificial en Stanford. Despus pas a ser parte de un proyecto abierto, el cual sigue desarrollndose colaborativamente. La versin actual de ROS, llamada Fuerte, no solamente ofrece un sistema operativo completo, sino un conjunto de paquetes que extienden las funcionalidades del sistema. ROS est disponible para correr bajo Ubuntu Linux, entre un rango de sistemas operativos disponibles, de forma experimental. Se puede programar en C++ o Python, a travs de una serie de mdulos. ROS provee los servicios estndar de un sistema operativo tales como abstraccin del hardware, control de dispositivos de bajo nivel, implementacin de funcionalidad de uso comn, paso de mensajes entre procesos y mantenimiento de paquetes. Est basado en una arquitectura de grafos donde el procesamiento toma lugar en los nodos que pueden recibir, mandar y multiplexar mensajes de sensores, control, estados, planificaciones y actuadores, entre otros. La librera est orientada para un sistema UNIX (Ubuntu (Linux) es el sistema soportado aunque tambin se est adaptando a otros sistemas operativos como Fedora, Mac OS X, Arch, Gentoo, OpenSUSE, Slackware, Debian o Microsoft Windows considerados como 'experimentales').

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Actualmente es un proyecto en marcha, que pretende ser alimentado por la comunidad robtica. El proyecto est vivo y es accesible va su pgina web: http://www.ros.org/

Misin
La intencin de ROS es ser un sistema que una diversos componentes tiles al momento de hacer que un computador sea el corazn de un robot o el asistente, tales como drivers cmaras u otros dispositivos, algoritmos, por ejemplo de navegacin, de control de brazos robticos, etc.

Qu es ROS?
ROS es un framework de cdigo abierto para el desarrollo de software para robots, y un sistema meta-operativo para robots. Proporciona los servicios que se esperan de un sistema operativo, incluyendo abstraccin de hardware, control de dispositivos de bajo nivel, la implementacin de funcionalidades de uso comn, paso de mensajes entre procesos, y gestin de paquetes. Tambin proporciona herramientas y bibliotecas para obtener, construir, escribir y ejecutar cdigo en varios equipos. ROS es software libre bajo trminos de licencia BSD. Esta licencia permite libertad para uso comercial e investigador. Las contribuciones de los paquetes en ros-pkg estn bajo una gran variedad de licencias diferentes. ROS es similar en algunos aspectos a los "robotframework', como Player, YARP, Orocos, CARMEN, Orca, Moos, y Microsoft Robotics Studio. El tiempo de ejecucin "graph" de ROS es una red peer-to-peer de procesos que estn dbilmente acoplados utilizando la infraestructura de comunicacin ROS. ROS implementa diferentes estilos de comunicacin, incluida la comunicacin sincrnica de estilo RPC a travs de los servicios, streaming asncronas de datos a travs de los temas y el almacenamiento de datos en un servidor de parmetros. Estos se explican en mayor detalle en nuestra Conceptos Generales.

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

ROS no es un marco de tiempo real, a pesar de que es posible la integracin de ROS con el cdigo de tiempo real. El Willow Garaje PR2 robot utiliza un sistema llamado pr2_etherCAT, que transporta mensajes de ROS en y fuera de un proceso en tiempo real. ROS tambin cuenta con una perfecta integracin con el kit de herramientas en tiempo real Orocos. ROS tiene dos partes bsicas: la parte del sistema operativo, ros, como se ha descrito anteriormente y ros-pkg, una suite de paquetes aportados por la contribucin de usuarios (organizados e n conjuntos llamados pilas o en ingls stacks) que implementan la funcionalidades tales como localizacin y mapeo simultneo, planificacin, percepcin, simulacin, etc. Incluye: Abstraccin de hardware. Control de dispositivo de bajo nivel. Funcionalidades comunes El paso de mensajes entre procesos.

El sitio oficial de ROS indica que: Hay 175 organizaciones o individuos que han escrito software en ROS. Cincuenta solamente en el ao 2009. Hay aproximadamente unos 40 robots personales en el mundo, que corren ROS. Ms de 90 tipos de robot usan ROS. Veintiocho de ellos contienen instrucciones de instalacin detalladas para sus plataformas en particular. Hay 3699 paquetes pblicos para ROS, contra los 1600 que haba hace tres aos. De seguir as las cosas, en cinco aos ms no sera descabellado pensar tener en casa un robot ROS y podra ser la tercera plataforma de desarrollo. A pesar de que los robots nos parecen lejanos, no lo estn tanto y sin duda es una tecnologa a la cual habra que pensar en apostarle. Evidentemente muchos de los robots que pudiesen estar disponibles para dentro de cinco aos no seran a imagen y semejanza humana, pues para muchsimas tareas esto no es indispensable. ROS pretende dar una solucin integral al problema de desarrollo de robots aportando soluciones a las reas de:

Equipo: Ronald Campoverde. Henry Suarez Avils.


Abstraccin

Roger Granda. Diana Panchana.

de Hardware (HAL) y reutilizacin e integracin de robots y dispositivos

encapsulando estos tras interfaces estables y manteniendo las diferencias en archivos de configuracin.
Algoritmos

de robtica con bajo acoplamiento: desde algoritmos de bajo nivel de control,

cinemtica, SLAM, etc. Hasta algoritmos de alto nivel como planificacin o aprendizaje. Tambin otros muchos ms especficos como: cmo lograr que el robot X coja un objeto o el robot Y se auto enchufe a la red elctrica.
ROS

provee de un mecanismo comunicaciones (middleware) distribuido entre nodos del

sistema robtico. Un nodo es cualquier pieza de software del sistema (desde un algoritmo SLAM hasta un driver para el manejo de un motor). El objetivo de este sistema es doble: 1encapsulado/abstraccin/reutilizacin de software e 2- ubicuidad, es decir, independencia de donde este nodo est localizado (un sistema robtico puede tener muchos procesadores). Estos nodos se comunican entre ellos mediante mecanismos de paso de mensajes RPC o Publish/Subscribe, Service lookup, etc. Permite crear arquitecturas P2P de componentes robticos distribuidos.
Simulacin

de sistemas robticos en mundos virtuales con dinmicas de slidos rgidos. de desarrollo, despliegue y monitorizacin de sistemas robticos.

Herramientas

Objetivos de ROS
El objetivo principal de ROS es apoyar la reutilizacin de cdigo en la investigacin y el desarrollo de robtica. ROS es una estructura distribuida de procesos (Nodos aka) que permite a los ejecutables para ser diseadas de forma individual y de acoplamiento flexible en tiempo de ejecucin. Estos procesos se pueden agrupar en paquetes y pilas, que pueden ser fcilmente compartidos y distribuidos. ROS tambin es compatible con un sistema federado de repositorios de cdigo que permiten la colaboracin a distribuir tambin. Este diseo, desde el nivel del sistema de archivos a nivel de la comunidad, permite tomar decisiones independientes sobre el desarrollo e implementacin, pero todo puede ser llevado junto con herramientas de infraestructura ROS. En apoyo de este objetivo principal de compartir y colaborar, hay varios otros objetivos del marco de ROS: Delgado: ROS est diseado para ser tan delgado como sea posible, no vamos a envolver su main (), de modo que el cdigo escrito para ROS se puede utilizar con otros frameworks

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

de software robot. Un corolario de esto es que los ROS es fcil de integrar con otros marcos de software robot: ROS ya ha sido integrada con OpenRAVE, Orocos y jugador. Bibliotecas ROS-agnstico: el modelo de desarrollo preferido es escribir bibliotecas ROS-agnstico con interfaces funcionales y limpias. Independencia de idiomas: el marco ROS es fcil de implementar en cualquier lenguaje de programacin moderno. Ya hemos implementado en Python, C + +, y Lisp, y tenemos bibliotecas experimentales en Java y Lua. Prueba fcil: ROS tiene un marco de prueba de unidad / integracin incorporada llamada ROSTEST que hace que sea fcil de llevar y derribar accesorios de prueba.

Escala: ROS es apropiado para sistemas grandes de tiempo de ejecucin y para los procesos de desarrollo de gran tamao.

Nomenclatura de ROS
El principio bsico de un sistema operativo de robot es ejecutar un gran nmero de ejecutables en paralelo que tiene que ser capaz de intercambiar datos de forma sincrnica o asincrnica. Por ejemplo, un sistema operativo robtica necesita consultar sensores de robot a una frecuencia conjunto (ultrasonido o sensor de distancia de infrarrojos, sensor de presin, sensor de temperatura, giroscopio, acelermetro, cmaras, micrfono, etc), recuperar estos datos, procesarla (llevar lo que se conoce como una fusin de datos), pasarlo a algoritmos de procesamiento (procesamiento del habla, la visin artificial, SLAM - localizacin y mapeo simultneo, etc) y, por ltimo, el control de los motores a cambio. Todo este proceso se lleva a cabo de forma continua y en paralelo. Por otra parte, el sistema operativo robtico tiene que administrar la contencin para garantizar un acceso eficaz a los recursos del robot. Los conceptos reunidos en ROS bajo el nombre de "ROS Computacin Grfica", lo que permite que estos objetivos se alcanzaron, se describen a continuacin. Estos conceptos son utilizados por el sistema, ya que se est ejecutando, mientras que el sistema de archivos de ROS se describe en la seccin anterior es un concepto esttico. Nodos ROS trata todo este asunto con algunas nociones bsicas sencillas. El primero de ellos es la nocin del nodo. En ROS, un nodo es una instancia de un ejecutable. Un nodo puede equiparar a un sensor, el motor, el procesamiento o algoritmo de seguimiento, y as sucesivamente. Cada nodo que

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

empieza a correr en s declara al Maestro. Esto viene de nuevo a la arquitectura micro ncleo, en el que cada recurso es un nodo independiente. Maestro El Maestro es una declaracin de nodo y servicio de registro, lo que hace posible que los nodos para encontrar e intercambiar datos. El Mster se realiza a travs de XMLRPC. El Mster incluye un componente fuertemente utilizada denomina servidor de parmetros, tambin aplicado en forma de XMLRPC, y que es, como su nombre lo indica, una especie de base de datos centralizada en el que los nodos pueden almacenar datos y, de este modo, el sistema de acciones parmetros de ancho. Temas Los datos se intercambian de forma asncrona por medio de un tema y de forma sincrnica a travs de un servicio. Un tema es un sistema de transporte de datos sobre la base de un sistema de suscripcin / publicacin. Uno o ms nodos son capaces de publicar datos en un tema, y uno o ms nodos pueden leer datos sobre ese tema. Un tema es, en cierto modo, un bus de mensajes asncrono, un poco como un feed RSS. Esta nocin de un asncrono, muchos-a-muchos autobuses es esencial en una situacin de sistema distribuido. Se escribe un tema, lo que significa que el tipo de los datos publicados (el mensaje) siempre est estructurado de la misma manera. Nodos de enviar y recibir mensajes de temas. Mensajes Un mensaje es una estructura de datos compuesto. Un mensaje comprende una combinacin de tipos primitivos (cadenas de caracteres, booleanos, enteros, punto flotante, etc) y mensajes (un mensaje es una estructura recursiva). Por ejemplo, un nodo que representa un servomotor robot ciertamente publicar su estado en un tema (dependiendo de cmo se program) con un mensaje que contiene, por ejemplo, un entero que representa la posicin del motor, un punto flotante por su temperatura, otro punto flotante por su velocidad, y as sucesivamente. La descripcin del mensaje se almacena en nombre_paquete / msg / myMessageType.msg. Este archivo describe la estructura del mensaje

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Servicios Un tema es un mtodo de comunicacin asncrona utiliza para muchos-a-muchos la comunicacin. Un servicio se encuentra con un tipo diferente de necesidad; que para la comunicacin sncrona entre dos nodos. La idea es similar a la de una llamada a procedimiento remoto. La descripcin del servicio se almacena en nombre_paquete / srv / myServiceType.srv. Este archivo describe las estructuras de datos de solicitudes y respuestas. Packages Las packages son formatos para almacenar y reproducir datos de mensajes. Este mecanismo hace que sea posible, por ejemplo, para recoger los datos medidos por los sensores y posteriormente jugar de nuevo tantas veces como se desee para simular los datos reales. Tambin es un sistema muy til para la depuracin de un sistema despus del evento. La herramienta rxbag se puede utilizar para mostrar los datos guardados en los archivos del bolso en forma grfica
Invocacin de Servicio

Nodo Tpico
Publicacin

Nodo

Subscripcin

Plataformas para ROS


ROS (Robot Operating System) ofrece libreras y herramientas para crear aplicaciones de robtica. Est disponible para diferentes sistemas operativos, pero se recomienda utilizar Ubuntu ya que es el nico que ofrece soporte. La instalacin de este software se realiza por medio de la terminal y con la ayuda de repositorios (en Linux). La integracin de ROS con el NXT se ha llevado a cabo gracias a la colaboracin con el proyecto NXT-Python. El bloque NXT es una versin mejorada del Lego Mindstorms

10

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

RCX, este ofrece diferentes motores y sensores (sensor de color, de intensidad, de ultrasonido, on and off). ROS ofrece una interesante aplicacin llamada Rviz esta nos permite observar el robot y el entorno que este visualiza en 3D. El software en s, no es una distribucin de Linux como se propona en un principio del proyecto. Es ms bien un paquete software que se instala sobre otras distribuciones u otros sistemas operativos. Actualmente est preparado para ser instalado sobre Ubuntu 8.04, Mint 5, Fedora 11 y Arch Linux. Y de manera experimental en Gentoo Linux, MAC OS, OpenSUSE, Rasbian, Debian y Windows. Si bien es posible que un puerto Microsoft Windows para ROS, que todava no se ha explorado a fondo.

Arquitectura del sistema ROS

aplicaciones capacidades librerias herramientas middleware

La filosofa de ROS se puede resumir en los siguientes tems: Punto a Punto

11

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Basado en herramientas Multilenguaje Modular De cdigo abierto

Por ejemplo, en grandes robots para los cuales ROS fue diseado, normalmente hay varios Ordenadores de a bordo conectados a travs de Ethernet. Este segmento de la Red es interconectado a travs de una LAN inalmbrica de alta potencia a las mquinas (de Escritorio o servidores) que estn ejecutando las tareas de computacin intensiva (informtica, Visin, reconocimiento de voz, etc.)

Aplicaciones
Las reas que incluye ROS son:
Un

nodo principal de coordinacin.

Publicacin

o subscripcin de flujos de datos: imgenes, estreo, lser, control, actuador, contacto, etc. de la informacin. y destruccin de nodos.

Multiplicacin Creacin Los

nodos estn perfectamente distribuidos, permitiendo procesamiento distribuido en mltiples ncleos, multiprocesamiento, GPUs y clsteres. de servidor.

Login. Parmetros Testeo

de sistemas.

Las reas que incluirn las aplicaciones de los paquetes de ROS son:
Percepcin Identificacin Segmentacin

de Objetos y reconocimiento facial de gestos

Reconocimiento Reconocimiento

12

Equipo: Ronald Campoverde. Henry Suarez Avils.


Seguimiento Egomocin Comprensin

Roger Granda. Diana Panchana.

de objetos de movimiento (SFM)

Estructura de movimientos Visin

estreo: percepcin de profundidad mediante el uso de dos cmaras mviles

Movimientos Robots Control Planificacin Agarre de objetos

Versiones
Una versin de ROS puede ser incompatible con otra. Normalmente estn referidas por un sobrenombre en vez de por una versin numrica. Las versiones, desde la ms actual a la primera versin, son:

Groovy Galapagos 31/Diciem bre/2012

Fuerte

Electric Emys 30/agosto/ 2011

Diamondback

C Turtle

ROS 1.0

23/Abril/2 012

02/Marzo/ 2011

03/Agosto/ 2010

22/Enero/ 2010

13

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Proceso de instalacin:
Soporta UBUNTU 11.10 Oneiric Linux:
Configure los repositorios de Ubuntu

Configure su Sources.list (Para este caso Ubuntu 11.10 Oneiric)

14

Equipo: Ronald Campoverde. Henry Suarez Avils.


sudo

Roger Granda. Diana Panchana.

sh-c 'echo "deb http://packages.ros.org/ros/ubuntu onrico principal"> / etc / apt / sources.list.d / ros-latest.list'

Configuracin de sus claves

Para comenzar con la instalacin en primer lugar, asegrese de que su ndice de paquetes Deban est al da.
http://packages.ros.org/ros.key wget-O - | sudo apt-key add -

Para

el

nuestro

caso

el

proyecto

usa

el

ROS

ELECTRIC

EMY

sudo apt-get install ros-electric-desktop-full

15

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Para prcticas, solo se necesita tener instalado ROS, al igual que las libreras del NXT en Python. Procedimiento de implementacin de un ejemplo prctico bsico de cambio de direccin y giro usando ROS: El robot ir hasta el final de la lnea negra y posteriormente realizar un giro de 180 grados. Es necesario saber algo de Linux, ms que nada los comandos por consola, ROS se maneja por consola, y sus comandos son similares a los tpicos de Linux

Quines estn por detrs de todo esto? 16

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Se trata de un proyecto de Software Libre con el apoyo de una empresa llamada Willow Garage. Sabemos por experiencia que el apoyo de empresas en proyectos de software libre fomenta la promocin del mismo, dos ejemplos claros son Eclipse y Ubuntu. Adems WillowGarage es una SpinOff de Stanford y cuenta con el apoyo y contacto con grupos de investigacin como STAIR y profesores reconocidos como Gary Bradsky (principal responsable del famoso proyecto de visin artificial OpenCV). Todos estos factores son una garanta, Stanford es una de las cunas de la informtica y la robtica, all han nacido empresas tan importantes como Apple o Google. En cualquier caso su uso y apoyo se est extendiendo fuera de estas fronteras, muchas universidades de todo el mundo estn comenzando a desarrollar sus investigaciones con ROS, desde Amrica a Japn, pasando por Europa. Tambin a muchos, le sonar Brian Gerkey, uno de los principales responsables del proyecto Player(probablemente el RSF mas reconocido hasta la fecha), l actualmente forma parte del equipo de ROS, ah lo dejo.

Cul est siendo la clave de su xito?


Son muchas las razones, pero desde mi punto de vista la clave de su xito es su filosofa: cientfica, divulgativa, abierta e integradora.
Cientfica. Muchos de los paquetes ms importantes desarrollados van acompaados de artculos

cientficos. Adems como ya he comentado, estn respaldados por universidades, grupos de investigacin e investigadores reconocidos.
Divulgativa. Se nota la influencia de jvenes investigadores y desarrolladores de la generacin

web2.0 porque hacen uso de estos medios de forma masiva. ROS es un proyecto que puede considerarse una ametralladora de conocimiento: RSS, Vdeos en Youtube, Blogs, Wikis, Tweeters, Cursos online, etc. Todo lo que saben lo ensean y lo comparten en Internet. En ocasiones es tanto lo que hacen y comparten que es difcil para una persona que no se dedique a la investigacin seguir da a da sus progresos. Es sorprendente el volumen y la organizacin de la documentacin, ms an sabiendo que se trata uno de los clsicos puntos dbiles de los proyectos de software libre.
Abierta. El software que hacen es libre, el software que utilizan es libre. La mayor parte de

paquetes desarrollados ofrecen una rica documentacin (una de las mayores lacras en el mundo del software libre), tutoriales, etc.
Integradora. Su filosofa es no reinventar la rueda. Sera insensato, mas en un rea como la

robtica donde es necesario una infraestructura basada en un slido ecosistemas software. Exitosos proyectos de software libre de diversa ndole son utilizados: cmake, Boost, Yaml, Opencv, Python,

17

Equipo: Ronald Campoverde. Henry Suarez Avils. como OpenRave, Player o YARP.

Roger Granda. Diana Panchana.

Ogre, Gazebo, Stage, etc. Adems tambin reutiliza o es compatible parcialmente con otros RSFs

La ventaja de un sistema operativo para robots


Antes de que los sistemas operativos de robots, cada diseador de robots e investigador de robtica pasaran una cantidad considerable de tiempo en el diseo del software integrado en un robot, as como el propio hardware. Esto requiri habilidades en ingeniera mecnica, electrnica y programacin embebida. Por lo general, los programas de ingeniera de esta manera se asemejan ms a la programacin integrada, similar a la electrnica, de lo que eran a la robtica en el sentido ms estricto, como podemos encontrar hoy en da en la robtica de servicios. Hubo una considerable re-uso de los programas, ya que estaban estrechamente relacionadas con el hardware subyacente. La idea principal de un sistema operativo de la robtica es evitar la continua reinvencin de la rueda, y ofrecer funcionalidades estandarizadas que realizan abstraccin de hardware, al igual que un sistema operativo convencional para PC, de ah el nombre anlogo. Otro de los beneficios de los sistemas operativos de robots como ROS es la de combinar la experiencia de diferentes disciplinas. De hecho, el diseo y la programacin de un robot significan: Administrar el hardware al escribir controladores. Administracin de la memoria y los procesos. Gestin de concurrencia, paralelismo y fusin de datos. ROS es desarrollado y mantenido por una compaa californiana, Willow Garage, formada en 2006 por Scott Hassan, uno de los primeros empleados de Google que estuvo involucrado en el desarrollo de la tecnologa de motor de bsqueda y que tambin estaba detrs de Yahoo! Grupos (eGroups, de hecho, que se convirti enYahoo! Grupos). El presidente y consejero delegado de Willow Garage es PrimosSteeve, anteriormente en IBM. Proporcionar algoritmos de razonamiento abstracto, haciendo un gran uso de la inteligencia artificial. Por lo tanto, Robtica requiere muy diferentes conjuntos de habilidades, tpicamente ms all de la gama de un solo individuo.

18

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Descripcin del Experimento


El propsito de esta seccin es mostrar un ejemplo prctico de una aplicacin de ROS en un robot Real. Para esta seccin explicaremos el trabajo realizado con el robot Mindstorm de Lego. Con el fin de aprender a utilizar el framework de ROS y el api de NXT para robots Lego.

Diseo El diseo bsicamente tiene 2 secciones: 1. Diseo del nodo de comunicacin ros con lego mindstorm 2. Diseo del nodo de control ROS

1.

Diseo del nodo de comunicacin Ros con lego mindstorm

Este nodo es el que servir de vnculo con el robot lego. Utilizar el API de nxt; llamado nxt_ros. Nxt_ros es un api diseado para controlar a lego mindstorm de forma remota, este utiliza libreras python que sirven de enlace. Estas libreras proporcionan los suscriptores para la lectura de los parmetros deseados por algn determinado nodo de ROS. Y tambin proveen publicadores de tpicos para que un determinado nodo suscriptor tenga lectura de los sensores de Lego mindstorm.

A continuacin se describe la creacin de este nodo, que ser implementado dentro de un package de ros.

a.

Creacin del Workspace

Primero lugar necesitamos definir workspace de ROS para poder generar los paquetes. Esto se logra de la siguiente manera: En consola de comandos ingresar: rosws init ~/lego_workspace /opt/ros/electric/

19

Equipo: Ronald Campoverde. Roger Granda. Henry Suarez Avils. Diana Panchana. Lo que hemos hecho con este comando es definir el workspace con un localoverlay para poder generar un nuevo paquete.

b.

Creacin del paquete

A continuacin definiremos el paquete que utilizar nxt_ros API de la siguiente forma. roscd nxt roscreate-pkg robot_nxt rospy nxt_ros rosmake cd robot_nxt

c. Definicin de las interfaces del robot Como podemos intuir, se necesita especificar las interfaces del robot en algn lugar para especirficar a ROS como enviaremos o recibiremos las rdenes. Esto se logra creando un archivo yaml donde se especifican dichas interfaces.

A continuacin una descripcin de el archivo robot.yaml que se encuentra ubicado en el directorio raz del paquete.

nxt_robot: - type: motor name: r_wheel_joint port: PORT_A desired_frequency: 20.0 - type: motor name: l_wheel_joint port: PORT_B desired_frequency: 20.0 - type: intensity frame_id: l_intensity_link name: intensity_sensor port: PORT_1 color_r: 1.0 color_g: 0.0 color_b: 0.0 desired_frequency: 20.0

Es aqu, donde se especifican las interfaces del robot.

20

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

d.

Definicin del archivo de ejecucin

Como es de intuir, debemos vincular la hoja anterior de especificacin de interfaces a ROS, para que realice la vincualacin. Esto se logra a travs de el archivo de ejecucin .lauch propio de ROS. A continuacin la descripcin de como luce este archivo:

<launch>

<node pkg="nxt_ros" type="nxt_ros.py" name="nxt_ros" output="screen" respawn="true"> <rosparam command="load" file="$(find learning_nxt)/robot.yaml" /> </node>

<node pkg="nxt_ros" type="joint_states_aggregator.py" name="joint_state_publisher" output="screen" />

</launch>

Una descripcin del archivo robot.launch que necesita ROS para especificar las interfaces.

e.

Construccin del paquete

Antes de poder ejecutar el nodo, necesitamos contruir mediante la consola de ros, para esto utilizamos los siguientes comandos rosmake robot_nxt cd robot_nxt

21

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

f.Ejecucin del paquete Para poder ejecutar el nodo, en primer lugar debemos inicializar el modo de operacin de ROS con la siguiente instruccin: roscore

Luego, para continuar con la ejecucin del nodo, utilizamos los siguientes comandos: roslaunch robot.launch

2.

Diseo del nodo de control ROS

Este nodo se lo despliega con el fin de almacenar la lgica de la operacin del robot. Este accede a los tpicos publicados por en nodo anterior. Para el control del flujo, en este nodo se utilizarn algoritmos codificados en python. A continuacin la descripcin del proceso de creacin:

a. Creacin del paquete

A continuacin definiremos el paquete que utilizar nxt_ros API de la siguiente forma. roscreate-pkg legocontroller std_msgs rospy ros profile rosmake legocontroller

b.Creacin del controlador

22

Equipo: Ronald Campoverde. Roger Granda. Henry Suarez Avils. Diana Panchana. Una vez creado el paquete procedemos a escribir la codificacin de control en python. Ubicando los archivos Python dentro de la carpeta scripsts ubicada dentro de la carperta del paquete.

#!/usr/bin/env python import roslib; roslib.load_manifest('beginner_tutorials') import rospy from std_msgs.msg import String

def talker(): llantaR = rospy.Publisher('r_wheel_joint', float64) llantaI = rospy.Publisher('l_wheel_joint', float64) rospy.init_node('talker') while not rospy.is_shutdown(): while (lectura sensor<20) #str = "hello world %s" % rospy.get_time() #rospy.loginfo(str) pub.publish(String(50)) pu2.publish(String(50)) rospy.sleep(1.0) pub.publish(String(50)) pu2.publish(String(0)) pub.publish(String(50)) pu2.publish(String(0)) pub.publish(String(50)) pu2.publish(String(0)) rospy.sleep(1.0)

if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass

Sin olvidarnos de asignar permisos de ejecucin.

23

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

c. Ejecucin del controlador

En la consola ejecutamos para poder iniciar el nodo controlador: rosrun legocontroller listener.py

24

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Problemas encontrados.
Debido a la dificultad para hallar en el mercado los robots mindstorm, no se pudieron completar las pruebas de manera correcta. Por lo que se recomienda trabajar con algn emulador si existe una versin que est en derarrollo. La documentacin de Electric est depreciada, por lo que se recomienda trabajar con un framework actual.

Conclusiones y recomendaciones.
Crear una robtica que sea accesible a todos creando libreras para la reutilizacin de cdigo. ROS es la plataforma de desarrollo robtica que ofrece el suficiente potencial, escalabilidad y aceptacin para el avance de robtica a un ritmo mayor. Es una fuente totalmente abierta, libre para usar el sistema operativo para que la gente meta de mejorar, modificar y revender. Su mensaje principal objetivo es permitir la reutilizacin de los escritores de cdigo en el campo de la investigacin y el desarrollo de la robtica, por lo que los servicios que se esperan de un sistema operativo Cuando hablamos de sistemas operativos de cdigo abierto, pensamos en Linux, en BSD, en sistemas de esta naturaleza. Pero si hablamos de robots, debemos pensar en ROS (Robot Operating System), que se lanz como un proyecto de investigacin ms y que ahora cumple 5 aos.

25

Equipo: Ronald Campoverde. Henry Suarez Avils.

Roger Granda. Diana Panchana.

Bibliografa:

GeuS' Blog: Robotics, Computer Science and More(2007,Marzo,7). Interesting Survey about different Robotic Software Frameworks for Distributed Robotics[ blog log post].Recuperado de:http://geus.wordpress.com/2010/04/17/ros-%C2%BFelnuevo-estandar-de-facto-en-robotica/ National Instruments(2012): Enlace NI LabVIEW con Redes de Sistema Operativo de Robot (ROS).Recuperado de : http://sine.ni.com/nips/cds/view/p/lang/es/nid/210716

Robot parts(2013,Febrero,21): ROS, el sistema operativo del robot Willow Garage[ blog log post].Recuperado de:http://roboticspart.blogspot.com/2013/02/ros-el-sistema-operativodel-robot.html

Linux Droids Blog(2010,febrero,19)ROS: Robotic Operative System[ blog log post].Recuperado de:http://linuxdroids.wordpress.com/2010/02/19/ros-roboticoperating-system/ Generation Robots(2008):ROS - Robot Operating System[ blog log post].Recuperado de:http://www.generationrobots.com/ros-robot-operating-system,us,8,74.cfm

26

You might also like