Introducción
El los últimos meses estuve cursando una maestría en desarrollo software de aplicación espacial. Una de las asignaturas exige algunas practicas mínimas sobre un pequeño satélite. El satélite fue comprado hace algunos años por la agencia espacial donde se desarrollan las practicas, pero nunca había sido utilizado. El problema es que también había caducado el periodo de soporte y no teníamos documentación para nuestro primer objetivo que era procesar la telemetría de este diminuto satélite.Telemetría vs Telemetría Satelital
Se denomina telemetria a la medición y transmisión remota de magnitudes, físicas o lógicas. ¿Que diferencia hay entre la telemetría de cualquier equipo remoto y de un satélite? Las diferencias son muy pocas pero existen y son generadas por los siguientes problemas:Eficiencia de la transmisión:
En el area espacial existe un obsesión (Relativamente justificada) por el ahorro de bytes a transferir. Las capacidades y tiempos de transmisión son limitadas. El hardware en los sistemas de vuelo suele ser viejo, muy viejo o con limitaciones en términos de capacidad de computo. Esto se traduce en que pueden no ser aplicables técnicas de compresión o protocolos que utilicen exhaustivamente la lógica para reducir la cantidad de bytes como por ejemplo Google Protocols Buffers.Desgaste de componentes:
Los componentes en el espacio sufren un desgaste y ya no es posible remplazarlos. Los valores de telemetria recibidos pueden estar modificados por ese desgaste y no representan el verdadero valor.Estas cuestiones definen y acotan el margen de acción, en contraste con el mundo informático actual donde nos damos el lujo de transferir por protocolos autocontenidos, de transferir texto, XML etc, acá se opta por trabajar, como antaño, con protocolos binarios y los datos transferidos no representan el valor final de la variable que se pretende analizar tanto por la necesidad de reducir la cantidad de bytes transferidos al mínimo como la necesidad de ajustar los valores.
RF checkout box
Afortunadamente el kit del satélite disponía de un equipo de radio conectable a un PC por USB y un sencillo software de test que alcanzaba a mostrar algunos valores de telemetria. El manual indicaba que ese software publicaba la trama en un server TCP/IP pero no indicaba el formato completo de la trama. Con estos escasos recursos algunos compañeros comenzaron a decompilar los .class del software y llegaron a la conclusion de que utilizaba un XML para desarmar parte de la trama...buena parte del problema esta resuelto.De un golpe de vista se entiende el formato de este paquete (o subpaquete). Por ejemplo, el frame type 1 es el de toda la telemetria (allTelemetry), esto viene indicado en un valor char en la posición 0. En la posición 8 tenemos la temperatura 1 de la OBC, viene en un short (2 bytes calculados a prueba y error) y offset y gain indican los valores por los que hay que multiplicar y sumar ese short para transformarlo en el valor real de temperatura Celsius.
Como dijimos RF checkout box publica las tramas por un server TCP/IP puerto default 3210, si el satélite esta conectado y funcionando con conectarse al server se comienzan a recibir las tramas.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect( (uhfServerIp, int(uhfServerPort)) ) ... chunk = s.recv(int(BUFFER_SIZE))
Sin embargo estas tramas contienen información de cabecera previa al paquete que describe el XML. Esto lo iremos desarmando en la Parte 2 (Part 2) de esta entrada.
Continua en...Parte 2
No hay comentarios:
Publicar un comentario