proyecto ros

35
Robot Operating System ROS Fundamentos de Robótica Integrantes: Ronald Campoverde. 200531135 Roger Granda. 200834711 Diana Panchana. 200713907 Henry Suarez Avilés. 201015740 Paralelo: 05 26/06/2013

Upload: dianys-panchana

Post on 09-Feb-2016

146 views

Category:

Documents


2 download

DESCRIPTION

Proyecto

TRANSCRIPT

Page 1: Proyecto ROS

Fundamentos de Robótica

Integrantes:

Ronald Campoverde. 200531135 Roger Granda. 200834711 Diana Panchana. 200713907 Henry Suarez Avilés. 201015740

Paralelo: 0526/06/2013

Page 2: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

INDICE

ÍndiceIntroducción

HistoriaMisión

¿Que es ROS?Objetivos de ROSNomenclatura de ROSPlataformas para ROSArquitectura del sistema ROSAplicacionesVersionesProceso de instalación¿Quiénes están por detrás de todo esto?¿Cuál está siendo la clave de su éxito?La ventaja de un sistema operativo

para robotsDefinición del ExperimentoProblemas encontrados.Conclusiones y recomendaciones.Bibliografía

2345578

1011121314161718192525

26

2

Page 3: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Introducción

El desarrollar un software para cualquier robot no es tarea fácil, sino todo lo contrario su

complejidad aumenta ya que los avances que la robótica ha tenido sigue aumentado cada

vez más. Cada robot es distinto a otro sea en su infraestructura hardware y software; por lo

que la reutilización de código es no trivial.

La robótica hoy en día es difícil 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 librerías que interactúan con el robot. ROS también nos facilita la interacción

con los mensajes externos.

ROS corre el riesgo de convertirse en el estándar de factor en el desarrollo de sistemas

robóticos. 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 pública como software libre todo el código que desarrolla, está más que abiertos a

la colaboración y documenta todo de manera excelente realizando grandes esfuerzos de

divulgación. Todo un ejemplo.

Sigo a este grupo desde hace un año (casi desde su nacimiento) y sinceramente, los admiro

profundamente. Para quien no este enterado en que consiste esto de ROS, intentaré hacer

una breve introducción (aunque es muy complicado porque tiene un gran número de cosas)

de toda su amplia capacidad.

3

Page 4: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Historia

ROS se desarrolla y es mantenido por una compañía 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 tecnología del motor de búsqueda y que también estaba detrás 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 investigación robótico con más de veinte instituciones colaborando en un modelo de desarrollo federado.

ROS inició como un proyecto de inteligencia artificial en Stanford. Después pasó a ser parte de un proyecto abierto, el cual sigue desarrollándose colaborativamente. La versión 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 través de una serie de módulos.

ROS provee los servicios estándar de un sistema operativo tales como abstracción del hardware, control de dispositivos de bajo nivel, implementación de funcionalidad de uso común, 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 librería está orientada para un sistema UNIX (Ubuntu (Linux) es el sistema soportado aunque también se está adaptando a otros sistemas operativos como Fedora, Mac OS X, Arch, Gentoo, OpenSUSE, Slackware, Debian o Microsoft Windows considerados como 'experimentales').

4

Page 5: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.Actualmente es un proyecto en marcha, que pretende ser alimentado por la comunidad

robótica. El proyecto está vivo y es accesible vía su página web: http://www.ros.org/

Misión

La intención de ROS es ser un sistema que una diversos componentes útiles al momento de hacer que un computador sea el corazón de un robot o el asistente, tales como drivers cámaras u otros dispositivos, algoritmos, por ejemplo de navegación, de control de brazos robóticos, etc.

¿Qué es ROS?

ROS es un framework de código 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 abstracción de hardware, control de dispositivos de bajo nivel, la implementación de funcionalidades de uso común, paso de mensajes entre procesos, y gestión de paquetes. También proporciona herramientas y bibliotecas para obtener, construir, escribir y ejecutar código en varios equipos.

ROS es software libre bajo términos de licencia BSD. Esta licencia permite libertad para uso

comercial e investigador. Las contribuciones de los paquetes en ros-pkg están 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 ejecución "graph" de ROS es una red peer-to-peer de procesos que están débilmente acoplados utilizando la infraestructura de comunicación ROS. ROS implementa diferentes estilos de comunicación, incluida la comunicación sincrónica de estilo RPC a través de los servicios, streaming asíncronas de datos a través de los temas y el almacenamiento de datos en un servidor de parámetros. Estos se explican en mayor detalle en nuestra Conceptos Generales.

5

Page 6: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.ROS no es un marco de tiempo real, a pesar de que es posible la integración de ROS con el

código 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 también cuenta con una perfecta integración con el kit de herramientas en tiempo real Orocos.

ROS tiene dos partes básicas: la parte del sistema operativo, ros, como se ha descrito

anteriormente y ros-pkg, una suite de paquetes aportados por la contribución de usuarios

(organizados e n conjuntos llamados pilas o en inglés stacks) que implementan la

funcionalidades tales como localización y mapeo simultáneo, planificación, percepción,

simulación, etc.

Incluye:

Abstracción 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 año 2009.

Hay aproximadamente unos 40 robots personales en el mundo, que corren ROS.

Más de 90 tipos de robot usan ROS. Veintiocho de ellos contienen instrucciones de

instalación detalladas para sus plataformas en particular.

Hay 3699 paquetes públicos para ROS, contra los 1600 que había hace tres años.

De seguir así las cosas, en cinco años más no sería descabellado pensar tener en casa un

robot ROS y podría ser la tercera plataforma de desarrollo. A pesar de que los robots nos

parecen lejanos, no lo están tanto y sin duda es una tecnología a la cual habría que pensar

en apostarle. Evidentemente muchos de los robots que pudiesen estar disponibles para

dentro de cinco años no serían a imagen y semejanza humana, pues para muchísimas tareas

esto no es indispensable.

ROS pretende dar una solución integral al problema de desarrollo de robots aportando

soluciones a las áreas de:

Abstracción de Hardware (HAL) y reutilización e integración de robots y dispositivos

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

configuración.

6

Page 7: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Algoritmos de robótica con bajo acoplamiento: desde algoritmos de bajo nivel de control,

cinemática, SLAM, etc. Hasta algoritmos de alto nivel como planificación o aprendizaje.

También otros muchos más específicos como: cómo lograr que el robot X coja un objeto o

el robot Y se auto enchufe a la red eléctrica.

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

sistema robótico. 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: 1-

encapsulado/abstracción/reutilización de software e 2- ubicuidad, es decir, independencia

de donde este nodo está localizado (un sistema robótico 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 robóticos distribuidos.

Simulación de sistemas robóticos en mundos virtuales con dinámicas de sólidos rígidos.

Herramientas de desarrollo, despliegue y monitorización de sistemas robóticos.

Objetivos de ROS

El objetivo principal de ROS es apoyar la reutilización de código en la investigación y el desarrollo de robótica. ROS es una estructura distribuida de procesos (Nodos aka) que permite a los ejecutables para ser diseñadas de forma individual y de acoplamiento flexible en tiempo de ejecución. Estos procesos se pueden agrupar en paquetes y pilas, que pueden ser fácilmente compartidos y distribuidos. ROS también es compatible con un sistema federado de repositorios de código que permiten la colaboración a distribuir también. Este diseño, desde el nivel del sistema de archivos a nivel de la comunidad, permite tomar decisiones independientes sobre el desarrollo e implementación, 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á diseñado para ser tan delgado como sea posible, no vamos a envolver su main (), de modo que el código escrito para ROS se puede utilizar con otros frameworks de software robot. Un corolario de esto es que los ROS es fácil de integrar con otros marcos de software robot: ROS ya ha sido integrada con OpenRAVE, Orocos y jugador.

Bibliotecas ROS-agnóstico: el modelo de desarrollo preferido es escribir bibliotecas ROS-agnóstico con interfaces funcionales y limpias.

7

Page 8: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana. Independencia de idiomas: el marco ROS es fácil de implementar en cualquier lenguaje

de programación moderno. Ya hemos implementado en Python, C + +, y Lisp, y tenemos bibliotecas experimentales en Java y Lua.

Prueba fácil: ROS tiene un marco de prueba de unidad / integración incorporada llamada ROSTEST que hace que sea fácil de llevar y derribar accesorios de prueba.

Escala: ROS es apropiado para sistemas grandes de tiempo de ejecución y para los

procesos de desarrollo de gran tamaño.

Nomenclatura de ROS

El principio básico de un sistema operativo de robot es ejecutar un gran número de ejecutables en paralelo que tiene que ser capaz de intercambiar datos de forma sincrónica o asincrónica. Por ejemplo, un sistema operativo robótica necesita consultar sensores de robot a una frecuencia conjunto (ultrasonido o sensor de distancia de infrarrojos, sensor de presión, sensor de temperatura, giroscopio, acelerómetro, cámaras, micrófono, etc), recuperar estos datos, procesarla (llevar lo que se conoce como una fusión de datos), pasarlo a algoritmos de procesamiento (procesamiento del habla, la visión artificial, SLAM - localización y mapeo simultáneo, 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 robótico tiene que administrar la contención para garantizar un acceso eficaz a los recursos del robot.

Los conceptos reunidos en ROS bajo el nombre de "ROS Computación Gráfica", lo que permite que estos objetivos se alcanzaron, se describen a continuación. Estos conceptos son utilizados por el sistema, ya que se está ejecutando, mientras que el sistema de archivos de ROS se describe en la sección anterior es un concepto estático.

Nodos

ROS trata todo este asunto con algunas nociones básicas sencillas. El primero de ellos es la noción 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 empieza a correr en sí declara al Maestro. Esto viene de nuevo a la arquitectura micro núcleo, en el que cada recurso es un nodo independiente.

Maestro

8

Page 9: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

El Maestro es una declaración de nodo y servicio de registro, lo que hace posible que los nodos para encontrar e intercambiar datos. El Máster se realiza a través de XMLRPC.

El Máster incluye un componente fuertemente utilizada denomina servidor de parámetros, también 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 parámetros de ancho.

Temas

Los datos se intercambian de forma asíncrona por medio de un tema y de forma sincrónica a través de un servicio.

Un tema es un sistema de transporte de datos sobre la base de un sistema de suscripción / publicación. Uno o más nodos son capaces de publicar datos en un tema, y uno o más nodos pueden leer datos sobre ese tema. Un tema es, en cierto modo, un bus de mensajes asíncrono, un poco como un feed RSS. Esta noción de un asíncrono, muchos-a-muchos autobuses es esencial en una situación 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 combinación 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 cómo se programó) con un mensaje que contiene, por ejemplo, un entero que representa la posición del motor, un punto flotante por su temperatura, otro punto flotante por su velocidad, y así sucesivamente.

La descripción del mensaje se almacena en nombre_paquete / msg / myMessageType.msg. Este archivo describe la estructura del mensaje

Servicios

Un tema es un método de comunicación asíncrona utiliza para muchos-a-muchos la comunicación. Un servicio se encuentra con un tipo diferente de necesidad; que para la

9

Page 10: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

comunicación síncrona entre dos nodos. La idea es similar a la de una llamada a procedimiento remoto.

La descripción 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. También es un sistema muy útil para la depuración de un sistema después del evento.

La herramienta rxbag se puede utilizar para mostrar los datos guardados en los archivos del bolso en forma gráfica

Plataformas para ROS

ROS (Robot Operating System) ofrece librerías y herramientas para crear aplicaciones de robótica. Está disponible para diferentes sistemas operativos, pero se recomienda utilizar Ubuntu ya que es el único que ofrece soporte. La instalación de este software se realiza por medio de la terminal y con la ayuda de repositorios (en Linux).

La integración de ROS con el NXT se ha llevado a cabo gracias a la colaboración con el proyecto NXT-Python. El bloque NXT es una versión mejorada del Lego Mindstorms RCX, este ofrece diferentes motores y sensores (sensor de color, de intensidad, de ultrasonido, on and off).

10

Nodo Nodo

Tópico

Invocación de Servicio

Publicación Subscripción

Page 11: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

ROS ofrece una interesante aplicación llamada Rviz esta nos permite observar el robot y el entorno que este visualiza en 3D.

El software en sí, no es una distribución de Linux como se proponía en un principio del

proyecto. Es más 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 todavía no se ha explorado a fondo.

Arquitectura del sistema ROS

La filosofía de ROS se puede resumir en los siguientes ítems:

Punto a Punto

Basado en herramientas

Multilenguaje

Modular

De código abierto

11

aplicaciones

capacidades

librerias

herramientas

middleware

Page 12: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.Por ejemplo, en grandes robots para los cuales ROS fue diseñado, normalmente hay varios

Ordenadores de a bordo conectados a través de Ethernet. Este segmento de la

Red es interconectado a través de una LAN inalámbrica de alta potencia a las máquinas (de

Escritorio o servidores) que están ejecutando las tareas de computación intensiva (informática,

Visión, reconocimiento de voz, etc.)

Aplicaciones

Las áreas que incluye ROS son:

Un nodo principal de coordinación.

Publicación o subscripción de flujos de datos: imágenes, estéreo, láser, control, actuador,

contacto, etc.

Multiplicación de la información.

Creación y destrucción de nodos.

Los nodos están perfectamente distribuidos, permitiendo procesamiento distribuido en

múltiples núcleos, multiprocesamiento, GPUs y clústeres.

Login.

Parámetros de servidor.

Testeo de sistemas.

Las áreas que incluirán las aplicaciones de los paquetes de ROS son:

Percepción

Identificación de Objetos

Segmentación y reconocimiento

Reconocimiento facial

Reconocimiento de gestos

Seguimiento de objetos

Egomoción

Comprensión de movimiento

Estructura de movimientos (SFM)

Visión estéreo: percepción de profundidad mediante el uso de dos cámaras

12

Page 13: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Movimientos

Robots móviles

Control

Planificación

Agarre de objetos

Versiones

Una versión de ROS puede ser incompatible con otra. Normalmente están referidas por un

sobrenombre en vez de por una versión numérica. Las versiones, desde la más actual a la

primera versión, son:

13

Groovy Galapagos

31/Diciembre/2012

Fuerte

23/Abril/2012

Electric Emys

30/agosto/2011

Diamondback

02/Marzo/2011

C Turtle

03/Agosto/2010

ROS 1.0

22/Enero/2010

Page 14: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Proceso de instalación:

Soporta UBUNTU 11.10 Oneiric Linux:

Configure los repositorios de Ubuntu

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

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

14

Page 15: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Configuración de sus claves

Para comenzar con la instalación en primer lugar, asegúrese de que su índice de paquetes Debían está al día.

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

Page 16: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Para prácticas, solo se necesita tener instalado ROS, al igual que las librerías del NXT en Python.

Procedimiento de implementación de un ejemplo práctico básico de cambio de dirección y giro usando ROS:

El robot irá hasta el final de la línea negra y posteriormente realizará un giro de 180 grados.

Es necesario saber algo de Linux, más que nada los comandos por consola, ROS se maneja por consola, y sus comandos son similares a los típicos de Linux

¿Quiénes están por detrás de todo esto?

16

Page 17: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. 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

promoción del mismo,  dos ejemplos claros son Eclipse y  Ubuntu. Además WillowGarage es una

SpinOff de Stanford y cuenta con el apoyo y contacto con grupos de investigación como STAIR y

profesores reconocidos como Gary Bradsky (principal responsable del famoso proyecto de visión

artificial OpenCV). Todos estos factores son una garantía, Stanford es una de las cunas de la

informática y la robótica, 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 están comenzando a desarrollar sus investigaciones con ROS, desde América a

Japón, pasando por Europa. También 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.

¿Cuál está siendo la clave de su éxito?

Son muchas las razones, pero desde mi punto de vista la clave de su éxito es su filosofía: científica,

divulgativa, abierta e integradora.

Científica. Muchos de los paquetes más importantes desarrollados van acompañados de artículos

científicos. Además como ya he comentado, están respaldados por universidades, grupos de

investigación e investigadores reconocidos.

Divulgativa. Se nota la influencia de jóvenes investigadores y desarrolladores de la generación

web2.0 porque hacen uso de estos medios de forma masiva. ROS es un proyecto que puede

considerarse una ametralladora de conocimiento: RSS, Vídeos en Youtube, Blogs, Wikis,

Tweeters, Cursos online, etc. Todo lo que saben lo enseñan y lo comparten en Internet. En

ocasiones es tanto lo que hacen y comparten que es difícil para una persona que no se dedique a la

investigación seguir día a día sus progresos. Es sorprendente el volumen y la organización de la

documentación, más aún sabiendo que se trata uno de los clásicos puntos débiles 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 documentación (una de las mayores lacras en el mundo del

software libre), tutoriales, etc.

Integradora. Su filosofía es no reinventar la rueda. Sería insensato, mas en un área como la

robótica donde es necesario una infraestructura basada en un sólido ecosistemas software. Exitosos

proyectos de software libre de diversa índole son utilizados: cmake, Boost, Yaml, Opencv, Python,

17

Page 18: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Ogre, Gazebo, Stage, etc. Además también reutiliza o es compatible parcialmente con otros RSFs

como OpenRave, Player o YARP.

La ventaja de un sistema operativo para robots

Antes de que los sistemas operativos de robots, cada diseñador de robots e investigador de robótica pasaran una cantidad considerable de tiempo en el diseño del software integrado en un robot, así como el propio hardware. Esto requirió habilidades en ingeniería mecánica, electrónica y programación embebida. Por lo general, los programas de ingeniería de esta manera se asemejan más a la programación integrada, similar a la electrónica, de lo que eran a la robótica en el sentido más estricto, como podemos encontrar hoy en día en la robótica 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 robótica es evitar la continua reinvención de la rueda, y ofrecer funcionalidades estandarizadas que realizan abstracción de hardware, al igual que un sistema operativo convencional para PC, de ahí el nombre análogo.

Otro de los beneficios de los sistemas operativos de robots como ROS es la de combinar la experiencia de diferentes disciplinas. De hecho, el diseño y la programación de un robot significan:

Administrar el hardware al escribir controladores. Administración de la memoria y los procesos. Gestión de concurrencia, paralelismo y fusión de datos. ROS es desarrollado y

mantenido por una compañía californiana, Willow Garage, formada en 2006 por Scott Hassan, uno de los primeros empleados de Google que estuvo involucrado en el desarrollo de la tecnología de motor de búsqueda y que también estaba detrás 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, Robótica requiere muy diferentes conjuntos de habilidades, típicamente más allá de la gama de un solo individuo.

18

Page 19: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Descripción del Experimento

El propósito de esta sección es mostrar un ejemplo práctico de una aplicación de ROS en un robot Real. Para esta sección 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.

DiseñoEl diseño básicamente tiene 2 secciones:1. Diseño del nodo de comunicación ros con lego mindstorm2. Diseño del nodo de control ROS

1. Diseño del nodo de comunicación Ros con lego mindstorm

Este nodo es el que servirá de vínculo con el robot lego. Utilizará el API de nxt; llamado nxt_ros. Nxt_ros es un api diseñado para controlar a lego mindstorm de forma remota, este utiliza librerías python que sirven de enlace. Estas librerías proporcionan los suscriptores para la lectura de los parámetros deseados por algún determinado nodo de ROS. Y también proveen publicadores de tópicos para que un determinado nodo suscriptor tenga lectura de los sensores de Lego mindstorm.

A continuación se describe la creación de este nodo, que será implementado dentro de un package de ros.

a. Creación 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

Page 20: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Lo que hemos hecho con este comando es definir el workspace con un local-overlay para poder generar un nuevo paquete.

b. Creación del paquete

A continuación definiremos el paquete que utilizará nxt_ros API de la siguiente forma.

roscd nxtroscreate-pkg robot_nxt rospy nxt_rosrosmakecd robot_nxt

c. Definición de las interfaces del robotComo podemos intuir, se necesita especificar las interfaces del robot en algún lugar para especirficar a ROS como enviaremos o recibiremos las órdenes. Esto se logra creando un archivo yaml donde se especifican dichas interfaces.

A continuación una descripción de el archivo robot.yaml que se encuentra ubicado en el directorio raíz del paquete.

nxt_robot: - type: motor

name: r_wheel_jointport: PORT_Adesired_frequency: 20.0

 - type: motorname: l_wheel_jointport: PORT_Bdesired_frequency: 20.0

 - type: intensityframe_id: l_intensity_linkname: intensity_sensorport: PORT_1color_r: 1.0color_g: 0.0color_b: 0.0desired_frequency: 20.0

Es aquí, donde se especifican las interfaces del robot.

20

Page 21: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

d. Definición del archivo de ejecución

Como es de intuir, debemos vincular la hoja anterior de especificación de interfaces a ROS, para que realice la vincualación. Esto se logra a través de el archivo de ejecución .lauch propio de ROS. A continuación la descripción 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 descripción del archivo robot.launch que necesita ROS para especificar las interfaces.

e. Construcción 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

Page 22: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

f.Ejecución del paquete

Para poder ejecutar el nodo, en primer lugar debemos inicializar el modo de operación de ROS con la siguiente instrucción:

roscore

Luego, para continuar con la ejecución del nodo, utilizamos los siguientes comandos:

roslaunch robot.launch

2. Diseño del nodo de control ROS

Este nodo se lo despliega con el fin de almacenar la lógica de la operación del robot. Este accede a los tópicos publicados por en nodo anterior. Para el control del flujo, en este nodo se utilizarán algoritmos codificados en python. A continuación la descripción del proceso de creación:

a. Creación del paquete

A continuación definiremos el paquete que utilizará nxt_ros API de la siguiente forma.

roscreate-pkg legocontroller std_msgs rospy ros profile

rosmake legocontroller

b.Creación del controladorUna vez creado el paquete procedemos a escribir la codificación  de control

en python. Ubicando los archivos Python dentro de la carpeta scripsts

22

Page 23: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

ubicada dentro de la carperta del paquete.

#!/usr/bin/env pythonimport roslib; roslib.load_manifest('beginner_tutorials')

import rospyfrom 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 ejecución.

23

Page 24: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

c. Ejecución del controlador

En la consola ejecutamos para poder iniciar el nodo controlador:

rosrun legocontroller listener.py

24

Page 25: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. 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 algún emulador si existe una versión que esté en derarrollo.

La documentación de Electric está depreciada, por lo que se recomienda trabajar con un framework actual.

Conclusiones y recomendaciones.Crear una robótica que sea accesible a todos creando librerías para la reutilización de código. ROS es la plataforma de desarrollo robótica que ofrece el suficiente potencial, escalabilidad y aceptación para el avance de robótica 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 reutilización de los escritores de código en el campo de la investigación y el desarrollo de la robótica, por lo que los servicios que se esperan de un sistema operativoCuando hablamos de sistemas operativos de código 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 investigación más y que ahora cumple 5 años.

25

Page 26: Proyecto ROS

Equipo:Ronald Campoverde. Roger Granda.Henry Suarez Avilés. Diana Panchana.

Bibliografía:

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%BFel-nuevo-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-operativo-del-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-robotic-operating-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