En esta entrada intentaré explicar que es Player, el programa que gestiona el robot.
Para ello primero voy a hacer un copy-paste de una explicación que he encontrado por internet:
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 protocolo
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.
¿Que significa todo esto? Bueno, pues imaginemos que tenemos el robot en sí. En el robot va también el propio ordenador que como dije en la entrada anterior es la cabeza pensante.
Sería algo así como esto:
Bueno pues Player es el programa que ejecutamos en el ordenador y que mediante los drivers apropiados recibe todo lo que le va diciendo el robot (a traves de los sensores, motores, posición...), gestiona todo esto con el código que esté tratando en ese momento Stage y hecho esto devuelve al robot lo que tiene que hacer.
De nuevo un ejemplo para explicarlo:
Imaginemos que tenemos un robot "comercial" de los que ya existen drivers para Player, por ejemplo un robot Pionner.
En este caso al ejecutar Player tendríamos un servidor en donde se encuentra toda la información que ofrece el driver de Pionner (laser, bumpers, posición....)
A este servidor se puede conectar cualquier cliente que quiera tener esa información (recibir el estado del robot) o quiera mandar información (mandar órdenes al robot)
Este cliente puede ser una de las herramientas adicionales que ofrece player (playerjoy como joyistick, playerv como visor de sensores, playernav para navegación....) o un programa que hayamos hecho nosotros (en mi caso sería en lenguaje C) para controlar el robot mediante las librerías que ofrece player.
En el caso de mi proyecto en concreto como el robot está hecho por nosotros (no es nada comercial) también tengo que hacer los drivers. Es decir tengo que hacer el programa que se comunica con el robot, traduce lo que significa cada dato que obtiene y se lo da al servidor Player para que esté disponible para cualquier cliente.
Además este mismo driver tiene que servir para la operación contraria, es decir que lo que le mande un cliente al servidor Player llegue al robot "destraducido" por el driver
De momento no hay ningun avance ya que sigo esperando a que tengan el robot para empezar a hacer las pruebas "reales" e intentar hacer todo lo que he podido hacer en la simulación.
Espero haberme explicado bien o al menos entendais más o menos la idea. Es un poco "raro" de entender. Digo raro y no difícil porque el concepto en sí es simple, pero hasta que lo entiendes hay que darle unas pocas vueltas.
Eso mismo me pasó a mí cuando leí lo de "player es una capa de abstarcción de hardware" xD
1saludo!!
.
