miércoles, 31 de marzo de 2010

Explicación de player-stage

.
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!!
.

miércoles, 24 de marzo de 2010

Empezando el blog

.
Bueno, pues esta es mi primera entrada en este blog que he creado.
La idea es ir poniendo aquí cómo va el proyecto y los avances que voy haciendo.

Lo primero claro está es explicar el proyecto en sí y cómo está ahora mismo.

El proyecto es la creación de un robot didáctico y de bajo coste programado todo ello con software libre "player-stage".
Qué significa esto exáctamente? Pues hacer un robot que todo el mundo pueda tener de la manera más simple (aunque ello no significa que sea un robot muy limitado) usando un código que cualquiera puede descargar de internet y con materiales relativamente baratos.

El robot en sí no es más que unos motores (todavía no se de que tipo) controlados por un microcontrolador que se encarga decirle al ordenador (cabeza pensante) que está ocurriendo exáctamente en cada momento (posición de los ejes, distancia a los objetos, estado de los sensores) y dependiendo de ello el ordenador le dirá al robot que tiene que hacer

Es un poco lioso pero una vez que lo entiendes es más simple de lo que parece con tanta palabreja

En cuanto al estado actual, pues eso para la siguiente entrada

1saludo!
.