PDF de programación - Introducción a Player/Stage

Imágen de pdf Introducción a Player/Stage

Introducción a Player/Stagegráfica de visualizaciones

Publicado el 22 de Junio del 2017
591 visualizaciones desde el 22 de Junio del 2017
167,3 KB
10 paginas
Creado hace 16a (14/11/2007)
Introducción a Player/Stage

Otto Colomina y Miguel Ángel Cazorla

14 de noviembre de 2007

1.

¾Qué son Player y Stage?

Player es un servidor que permite controlar los dispositivos de un robot
y obtener información de sus sensores. Es una capa software que abstrae los
detalles del hardware del robot, independizándonos del mismo. Los algoritmos
de control del robot funcionarán como clientes de Player (a través de sockets
TCP/IP). Así podemos controlar el robot enviando mensajes que sigan el pro-
tocolo de comunicación de Player o (que será lo habitual) llamando a funciones
de las librerías de Player, que nos abstraen de los detalles de comunicación. La
distribución actual de Player incluye librerías en lenguajes tan diversos como
C++, Java, Python o Lisp.

Stage es un simulador de robots móviles en 2D que podemos utilizar en
conjunción con Player si queremos hacer pruebas iniciales de nuestros algoritmos
o bien no disponemos de un robot real. Para nuestro código será transparente
el que estemos trabajando con un robot real o con Stage.

Player y Stage fueron desarrollados originalmente en el Robotic Research
Lab de la USC (University of South California), pero en la actualidad son el
resultado del esfuerzo conjunto de una amplia comunidad de desarrolladores.
Es un proyecto de código abierto mantenido actualmente en el repositorio de
Sourceforge (http://playerstage.sourceforge.net).

2.

Instalación

Player y Stage se distribuyen en forma de código fuente, que hay que com-
pilar para nuestro sistema Linux. Necesitamos (mínimo) dos paquetes: Player y
Stage. Normalmente las últimas versiones son las que nos van a proporcionar
más funcionalidad y menos problemas. La instalación se realiza por defecto en
/usr/local, por lo que es necesario tener permisos de superusuario. Primero
descomprimimos los distintos cheros descargados (mejor en /usr/local). Los
pasos a seguir para la instalación son los siguientes (el orden es importante):

1. Instalar Player. Entrar en el directorio donde la hayamos descomprimido.

./configure --disable-libplayerc-py

1

make
make install

La opción que le pasamos a congure no viene en la documentación origi-
nal, pero en nuestra instalación la tuvimos que poner.

2. Instalar Stage. Entrar en el directorio donde la hayamos descomprimido.

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure
make
make install

El procedimiento de instalación puede cambiar de una versión a otra. Mejor con-
sultar en el chero INSTALL que se adjunta con la distribución de Player/Stage.
Para instalarlo en otro directorio, habrá que hacer como primer paso (en cada
instalación):

./configure --prefix path_deseado

Además, si se ejecuta

./configure --help

se tendrá información sobre todas las opciones de instalación. Consultar la docu-
mentación de Player/Stage para obtener más detalles del proceso de instalación.

3. Comenzando con Player/Stage

Vamos a probar Player con un entorno simulado en Stage. Player accede
a las funcionalidades de Stage a través de la librería libstage.a, que estará
(normalmente) en /usr/local/lib. Por ello es necesario poner este directorio
en la variable de entorno PLAYERPATH, con

export PLAYERPATH=/usr/local/lib

Para ejecutar Player hay que pasarle un chero de conguración (habitual-
mente con extensión .cfg) en el que vendrán denidos los dispositivos a con-
trolar. Stage es como un dispositivo más, pero que simula otros dispositivos. En
/usr/local/share/stage/worlds hay varios cheros .cfg de demostración.
Cambiad a este directorio y ejecutad

player simple.cfg

Si todo va bien, se pondrá en marcha Player (normalmente funciona por el
puerto 6665) y aparecerá una ventana con un mundo simulado por Stage en 2D.

2

Figura 1: Stage.

3.1. Manejo básico de Stage

Tanto Stage como Player utilizan un sistema de coordenadas levógiro, con
lo cual los giros a izquierdas se consideran de signo positivo, y los que son a
derechas de signo negativo. Los ejes de coordenadas en Stage son los habituales,
es decir la X aumenta hacia la derecha y la Y hacia arriba.

Los mundos en Stage son cheros bitmap, de modo que son sencillos de crear
con cualquier herramienta de dibujo. Se puede cambiar la posición del robot
arrastrándolo con el botón izquierdo del ratón y su orientación arrastrándolo con
el derecho.

Para hacer zoom sobre el mapa, pulsar sobre cualquier punto del mismo
con el botón derecho. Aparecerá dibujada una circunferencia con centro en el
del mapa. Arrastrar el puntero del ratón hacia el centro de la circunferencia si
se desea disminuir el zoom o hacia afuera si se desea ampliarlo.

Para desplazarse por el mapa, pulsar sobre cualquier punto del mismo

con el botón izquierdo del ratón y arrastrar en la dirección deseada.

Se puede guardar una imagen con la situación actual de la simulación con
la opción de menú File>Export>Single Frame. Para guardar una secuencia de
imágenes a intervalos regulares, usar la opción File>Export>Multiple frames
habiendo seleccionado anteriormente la duración del intervalo en este mismo
menú.

3

3.2. Algunas herramientas de Player

Podemos utilizar algunas herramientas que vienen incluidas con Player pa-
ra controlar los actuadores del robot y ver la información de sus sensores sin
necesidad de programar un cliente.

3.2.1. Control con teclado o joystick: playerjoy

El programa playerjoy sirve para controlar el robot mediante un joystick o

(si no lo tenemos) con el teclado. Ejecutar

playerjoy

Con lo que aparecerá un texto indicando las teclas que sirven para mover al
robot (si no hay joystick). Si queremos conectar con una instancia de Player que
se está ejecutando en otra máquina y/o otro puerto distinto al 6665 haremos:
playerjoy host:puerto.

3.2.2. Visualización de los sensores: playerv

Con la utilidad PlayerViewer podemos visualizar la información de los sen-

sores del robot en una ventana. Ejecutar

playerv

(para conectar con una instancia de Player en otra máquina y/o puerto
distinto al 6665, ejecutar playerv host:puerto). Aparecerá una ventana en
blanco. En el menú Devices están los diferentes dispositivos que tiene nuestro
robot, que en el caso del chero simple.cfg son los motores para desplazarlo -
dispositivo position - un sonar y un laser. Observar que todos los dispositivos
tienen un número asociado que por defecto es 0 (lo que permite tener más de
una instancia del mismo tipo de dispositivo en un mismo robot).

Para poder interactuar con un dispositivo primero hay que suscribirse a él.
En el menú Devices seleccionar el dispositivo (por ejemplo el laser) y elegir la
opción subscribe. El laser va barriendo el espacio que hay frente al robot y
devuelve la distancia a los obstáculos, que se muestra en la ventana en color
azul claro. Tener en cuenta que en la ventana de PlayerViewer el robot está en
el centro mirando hacia la derecha. Se puede colocar al robot en otra posición
del mapa con el ratón para comprobar que la ventana de PlayerViewer reeja
el entorno cercano del robot.

Con PlayerViewer también se puede actuar sobre los efectores del robot. Para
controlar el movimiento de nuestro robot, suscribirse al dispositivo position y
a continuación ponerlo en modo command (Devices->position->Command).
Aparecerá un símbolo en forma de círculo con una cruz centrado en el robot.
Este símbolo representa la posición a la que intentará ir el robot. Así, si lo
arrastramos (con el botón izquierdo del ratón) el robot se moverá siguiendo el
punto. Cuanto más lo alejemos del robot mayor será su velocidad lineal y cuanto
más lo desviemos de la dirección en la que mira, mayor la angular.

4

Figura 2: PlayerViewer.

4. Programar con Player

Aunque se puede programar utilizando el protocolo de comunicación de Pla-
yer, con sockets TCP/IP, normalmente lo más conveniente será abstraerse de los
detalles de comunicación. Se han desarrollado librerías para distintos lenguajes
(C++, Python, Java,...) que encapsulan dicho protocolo, con lo que el programa-
dor puede simplemente llamar al API de la librería, olvidándose de los detalles
de envío/recepción de datos a través del socket. En esta introducción emplea-
remos la librería para C++, libplayerclient.a (que estará normalmente en
/usr/local/lib).

4.1. Un ejemplo sencillo

El siguiente es un ejemplo muy simple de evitación de obstáculos mediante
sonar, que servirá para introducir algunas ideas básicas de programación con
Player.

#include <playerclient.h>
int main(int argc, char *argv[])
{

PlayerClient robot("localhost");
SonarProxy sp(&robot,0,'r');
PositionProxy pp(&robot,0,'w');
//velocidad angular y lineal (en rads/s y m/s respectivamente)

5

double vang, vlin=.2;
for(int i=0;i<1000;i++)
{

//esperar a siguiente ciclo de control
robot.Read();
//si los obstaculos a la izquierda estan mas cerca que a la derecha
//girar hacia la derecha (velocidad negativa), y viceversa.
//El sonar 2 apunta a 30 grados (izquierda). El 5 a -30 (derecha).
if(sp.ranges[2] < sp.ranges[5])

vang = DTOR(-20); //girar a derechas 20 grados/s

else

vang = DTOR(20); //girar a izquierdas 20 grados/s
//controlar la velocidad lineal y angular del robot
pp.SetSpeed(vlin,vang);

}

}

Guardar el código anterior en un chero (por ejemplo, simple.cc) y compilarlo
con las siguientes instrucciones

g++ -c simple.cc -o simple.o
g++ simple.o -lm -lplayerclient -o simple

Para probarlo, ejecutar Player sobre algún chero de conguración (por ejem-
plo /usr/local/share/stage/worlds/everything.cfg) y después ejecutar el
propio simple. Si todo va bien, el robot se pondrá a moverse por el entorno
intentando evitar obstáculos (aunque como el algoritmo es muy simple, chocará
tarde o temprano).

4.2. Filosofía de la programación con Player

La librería de C++ está desarrollada siguiendo un modelo de programación
basado en proxies. El cliente interactúa con objetos locales (los proxies), que
actúan deintermediarios de los dispositivos del robot, que serán remotos, ya
que pueden estar en cualquier máquina de la red. El pr
  • Links de descarga
http://lwp-l.com/pdf4568

Comentarios de: Introducción a Player/Stage (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad