Bienvenido: Ingresar
location: Robotica / RDE / RDEPlayerStageGazebo

Player/Stage/Gazebo

Objetivos

Estudiar el conjunto de programas Player/Stage/Gazebo para ser utilizado con RoMAA en el control y simulación

Introducción

Player, Stage y Gazebo son tres piezas de software originalmente desarrollado en el laboratorio de investigación de robótica de la University of Southern California (USC). Ahora es un proyecto activo de SourceForge.net, usado por un gran número de investigadores alrededor del mundo.

When Shakespeare wrote that "All the world's a stage, and all the men and women merely players," he couldn't have forseen that he was giving a name to a type of open source robotics software that wouldn't be invented for another 400 years or so.

Player

Player es un servidor de red para control de robots que corre abordo del robot, es una capa de abstracción de hardware (HAL) para dispositivos robóticos. Provee un medio simple de interfaz entre los actuadores y sensores del robot sobre redes IP. El programa cliente se comunica con Player sobre un socket TCP, leyendo datos de los sensores, escribiendo comandos a los actuadores, y configurando los dispositivos en operación.

Puesto que Player usa el modelo cliente/servidor basado en sockets TCP los programas de control de robots se pueden escribir en cualquier lenguaje de programación y puede ser ejecutado en cualquier computadora con conectividad a la red del robot, además Player soporta múltiples conexiones concurrentes de clientes a dispositivos, creando nuevas posibilidades de control y sensado distribuido y colaborativo. Originalmente Player fue creado para la plataforma de familia de robot ActivMedia Pioneer2 pero ha ido creciendo para soportar un gran conjunto de plataformas robóticas. Player requiere un entorno con POSIX threads (pthreads), un stack TCP, y C/C++. Los scripts de configuración necesitan un shell bash (tal como el de Linux).

Player es una interfaz de bajo nivel, provee una interfaz estandar pero no hace ninguna asunción sobre el programa de control del robot. Soporta múltiples dispositivos sobre una única conexión y puede soportar cualquier número de clientes. Los drivers de Player no siempre son una interfaz que representa controles básicos tales como moviemiento y sensores, algunos drivers proveen características "inteligentes" tales como path-planning, Vector Field Histogram (VFH+), Adaptive Monte Carlo Localization (AMCL) entre otros.

Los programas de aplicación se linkean con las librerias Player cliente que proveen una conexión al servidor Player. El servidor Player generalmente reside en el robot y se conecta a los drivers de dispositivo de Player. Los drivers de dispositivos mapean un dispositivo lógico, generando una abstracción de lo que el cliente ve.

La ventaja de esta metodología es la misma que cualquier arquitectura cliente/servidor haciendolo fácil de comprender y probar. Hay suficiente dispositivos simulados y robots para utilizar con Stage y Gazebo así el usuario puede experimentar facilmente con Player. Escribir drivers de dispositivos para un nuevo robots y sus periféricos es relativamente directo. Como con cualquier driver de dispositivos de un sistema operativo, un único driver puede manejar cualquier número de dispositivos físicos. Por ejemplo, el driver estándar para el sensor laser rangefinder SICK LMS200 disponible se corresponde a la interfaz abstracta "laser". Una conexión se podría especificar como localhost:6665:laser:0 para el puerto 6665, con la interfaz lógica laser 0.

Estructura de Player

Player trabaja creando varias capas de abstracción, ocultando el control de alto nivel del cliente (que contiene la lógica) con la implementación de bajo nivel específica del hardware. Al hacer esto se puede crear código modular, intercambiable entre hardware y proyectos. Esto se logra utilizando conceptos tales como clientes, server, proxies, y drivers. (player_struct.odg)

Player structure

Arquitectura de Player (player_arch.odg)

Player architecture

Interfaces, Drivers y Dispositivos

En Player hay 3 conceptos claves:

Player incluye muchas interfaces predefinidas para los dispositivos o algoritmos. La tarea del driver plugin es de crear un enlace entre el dispositivo o el algoritmo y la(s) interface(s) predefinidas que mejor lo representa.

Player Server

A partir de la versión 2.0 Player esta dividido en dos mitades, el core y el transport layer. Player core está dividido en las librerías core libplayercore, y la librería de driver libplayerdrivers. La capa de transporte está implementada en una combinación de dos librerías: libpleyaertcp y libplayerxdr.

Player Cliente

Las librerías clientes están disponibles en varios lenguajes para facilitar el desarrollo de programas clientes TCP.

Probablemente uses una de estas librerías para desarrollar los programas de control de robot si se utiliza el servidor Player ya sea con un hardware o simulado.

Las librerías disponibles por el proyecto son:

Existen otras librerias de contribución.

Compilar

$ g++ -o example0 pkg-config --cflags playerc++ example0.cc pkg-config --libs playerc++

Stage

Stage es un simulador de múltiples robots del proyecto Player. Stage simula una población de robots, sensores y objetos en un entorno bitmap 2D. Stage provee de robots virtuales de modo que Player interactue con el entorno simulado en lugar de dispositivos físicos, dispone de varios modelos de sensores incluyendo sonares, sensores laser rangefinder, cámaras pan-tilt-zoom con detección de blobs de color y odometría. Stage es adecuado para investigaciones de sistemas autónomos multi-agente, puesto que provee de un modelo simple de bajo requerimiento computacional de múltiples dispositivos en lugar de emular cada dispositivo con gran fidelidad.

Gazebo

Gazebo es un simulador de múltiples robots en entornos exteriores. Tal como Stage, es capaz de simular una población de robots, sensores y objetos pero en un entorno tridimensional. Gazebo genera realimentación realista de sensores e interacción física entre objetos, incluyendo simulación precisa de la física de cuerpos rígidos con su dinámica.

Gazebo svn

svn info https://playerstage.svn.sourceforge.net/svnroot/playerstage/code/gazebo/trunk

Ejecutar Gazebo

Ir al directorio donde esta construida la aplicación (gazebo) y ejecutar

./gazebo world/archivo_mundo.world"

cargando el archivo del mundo a visualizar.

Gazebo con Player

Publicaciones que utilizan Player/Stage

Links

General

Instalación

Referencias

None: Robotica/RDE/RDEPlayerStageGazebo (última edición 2011-04-20 21:54:50 efectuada por GonzaloPerezPaina)