miércoles, 30 de abril de 2008

Freevo

Uno de los dos proyectos en los que colaboro es un media center llamado FREEVO.
Está escrito en python, y aunque no tenga muchos conocimientos de este lenguaje he podido colaborar con el proyecto:

- Creando un plugin para ver videos de youtube, ya sea mediante búsqueda o especificando en la configuración el usuario para ver sus videos.
- Creando un plugin para ver imágenes de flickr a través de un id.
- Algunos cambios en la pantalla de introducir texto.
- Algunos cambios para que se pueda reproducir determinados sonidos al entrar en un menú. (Por ejemplo, al entrar en el menú de noticias, que suene un sonido determinado).

http://doc.freevo.org/ImagePlugins
http://doc.freevo.org/MoviePlugins

Freevo, es un media center de código abierto para Linux, tiene soporte para: lirc (para mandos a distancia), reproductores de video (mplayer, xine), reproductores de mp3, reproductor de dvd, rss, televisión, visor de imágenes, el tiempo... Además permite distintos skins, montón de configuraciones, carátulas para audio, búsquedas en imdb, información de duración/resolución de películas y un largo etc.

Recomiendo utilizar la versión de svn:

svn co svn://svn.freevo.org/freevo/branches/rel-1 freevo-1.x
svn export svn://svn.freevo.org/kaa/trunk/base kaa/base

y dentro de cada directorio python setup.py install

luego sólo nos queda configurar /etc/freevo/freevo.conf y /etc/freevo/local_conf.py (opcionalmente para lirc, /etc/freevo/lircrc)


sábado, 19 de abril de 2008

Diferencial GPS (I)

"Tengo una solución", dijo el encargado de informática donde estábamos implementando una solución gps, "ya sé cómo solucionar el error del GPS".

Todo eso con un papel en la mano y una seguridad en lo que decía sorprendente.

"Como tenemos un mapa de nuestra superficie y tenemos un punto fijo que sabemos las coordenadas, ponemos ahí un aparato GPS y con ello sabemos la diferencia".

Quizás no se preguntó, el porqué un sistema de DGPS cuesta más de un millón de pesetas, y quizás más de dos. La contestación fue bastante simple para desmontar su teoría, "¿y qué pasa si un GPS que dices está cogiendo distintos satélites a los que le aplicaremos la corrección??". El tema acabó ahí.

Un sistema DGPS, lo que hace a grandes rasgos, es situarse en un punto con coordenadas conocidas. Luego para cada satélite mide su error.

Hasta ahí todo genial, tenemos un sistema que nos dice que error tiene cada satélite.

¿Y a mí, con mi aparato GPS, cómo me afecta eso? ¿Cómo puedo utilizarlo?

Un sistema DGPS, utiliza un estándar para el uso de correciones. Ese estándar es feo, oscuro y casi imposible de aprender, su nombre es RTCM.

RTCM te envía distintos fragmentos, indicándote que corrección tienes que aplicar para cada satélite, y algo muy importante: la fecha de esa corrección.

¿Por qué es importante la fecha? Imagínate que la corrección fuese de hace 5 segundos, y él, por problemas de red o lo que sea te llega ahora. ¿Qué pasaría? Estarías aplicando una corrección de hace 5 segundos que seguramente ahora sea distinta, y tu GPS hará un llamado "salto".

¿Cómo recogemos las tramas RTCM? Como supongo que no tendrás el GPS conectado al DGPS, habrá que utilizar un protocolo de comunicación entre el DGPS y tu aparato GPS. Ese protocolo de comunicación se llama NTRIP.

Hay tres puntos importantes en NTRIP: NtripServer, NtripCaster y NtripClient.

NtripServer: Es el que recoge las correcciones RTCM desde el DGPS y los trasmite a un NtripCaster.
NtripCaster: Recibe datos de 1 o varios NtripServer, y espera las conexiones de los NtripClients para tramitarles el RTCM.
NtripClient: Ésta es la parte del cliente, se conecta a un NtripCaster y solicita los datos de un punto de montaje, una vez que pida ese punto de montaje, recibirá las tramas RTCM.

Los puntos de montaje son simplemente los NtripServer pero etiquetados de una forma u otra.

El protocolo Ntrip es basado en el protocolo HTTP, es decir, te conectas a un puerto y utilizas la misma sintaxis que en HTTP: "GET / HTTP/1.0" o "GET /puntomontaje HTTP/1.0".

Una vez solicitado recibir tramas RTCM a través de un punto de montaje (si no existe te devolverá el SOURCETABLE que es igual que solicitar /), recibirás un stream que irás recibiendo RTCM hasta que tú cierres la conexión.


Un ejemplo de NtripCaster podemos verlo en: http://catnet-ip.icc.es:8080/

Explicación de una línea:
STR;MATADGPS;MATA (Matar?);RTCM 2.3;23(11), 24(11), 1,31;0;GPS;Catnet;DEU;41.53;2.41;0;0;GPSNet;None;B;N;640;;

Los datos que nos importa de esa línea son:
MATADGPS: es el punto de montaje, si pedimos /MATADGPS Nos devolveŕa todos los datos RTCM para ese DGPS.
RTCM 2.3: La versión de RTCM, yo sólo he visto la 2.3, pero hay la 3.0 en un libro pero no tuve que verlo.
23(11), 24(11), 31: El tipo de corrección y entre parentésis cada cuanto tiempo se envia.
Los demás datos son informativos, en plan si es de pago, las coordenadas donde está, el país, etc.


Y ya se me olvidaba decir que hay distintos tipos de corrección. En la segunda parte os comentaré los que utilicé yo (1, 3, 9 creo recordar) y algunos datos más. E indicaré aplicaciones NtripClient.

Como hablo de un proyecto de hace 7 meses quizás recuerde algunas cosas mal.