Cada vuelo se guarda en la unidad del Nano como un registro de vuelo llamado flightlog<tag>-<n>.aclz, acompañado de una página flightinfo<tag>-<n>.html que resume el vuelo. La etiqueta son los cuatro últimos caracteres del número de serie del Nano y n es el número de vuelo.
Por defecto, el registro es un archivo ACLZ, el formato comprimido propio del Nano. Si pone log_format en 0 en los ajustes, será un archivo CSV. Esta página describe ambos y las columnas de cada uno.
Por qué ACLZ es el formato predeterminado
ACLZ registra exactamente el mismo vuelo que un CSV, con la misma precisión, en aproximadamente una quinceava parte del espacio, y le recomendamos dejarlo como predeterminado.
- Vuelos más largos. Hasta 38 000 muestras en un registro, frente a 22 000 en un CSV (20 000 con
include_pressure). A 417 Hz es la diferencia entre captar un descenso largo completo y quedarse sin registro. - Más vuelos en la unidad. Un vuelo típico ocupa unas decenas de kilobytes en ACLZ, así que la unidad admite los 39 vuelos que guarda el Nano. En CSV, unos diez vuelos típicos llenan la unidad, y un registro CSV completo ocupa por sí solo la mayor parte.
- Más datos. Cada registro ACLZ conserva además la altitud bruta, exactamente como la midió el barómetro antes de cualquier procesamiento, y la presión. Así siempre puede ver qué hicieron TrueFuse y TruePath, y Altimeter Cloud puede representar la curva bruta junto a la procesada.
- La compresión no pierde nada. El CSV que descarga de Altimeter Cloud es exactamente el CSV que habría escrito el Nano, dígito a dígito.
- Doble firma. El Nano firma el propio archivo y el CSV que genera, así que un CSV descargado de Altimeter Cloud sigue pudiendo verificarse por sí solo.
- Más rápido de manejar. Los archivos pequeños se copian y se suben más rápido, lo que se nota sobre todo al subir directamente desde el Nano por USB.
Un archivo ACLZ no se puede abrir en una hoja de cálculo. Súbalo a Altimeter Cloud (gratis, sin necesidad de cuenta) para ver los gráficos y descargar un CSV, o abra la página de información del vuelo que lo acompaña para echar un vistazo rápido directamente en la unidad. Elija CSV solo si necesita abrir los registros directamente en una hoja de cálculo y sus vuelos son lo bastante cortos.
| ACLZ (predeterminado) | CSV | |
|---|---|---|
| Muestras por vuelo | Hasta 38 000 | Hasta 22 000 (20 000 con include_pressure) |
| Tamaño de un vuelo típico | Unas decenas de KB | Unos cientos de KB |
| Columna de altitud bruta | Sí | No |
| Columna de presión | Sí | Siempre en Rev 1 a 3; en Rev 4 y posteriores solo con include_pressure |
| Se abre en una hoja de cálculo | No: súbalo y luego descargue un CSV | Sí |
| Firma | Ed25519, sobre el archivo y sobre el CSV que genera | Ed25519, sobre el archivo |
Cómo funciona ACLZ por dentro, y cómo leerlo con su propio software, se explica en el manual de software, con un convertidor de referencia.
Estructura de un registro CSV
Un CSV, tanto si lo escribe el Nano como si se descarga de Altimeter Cloud, tiene tres partes en este orden: un bloque de filas de cabecera con un resumen del vuelo y los ajustes con los que se grabó, una sola fila vacía, y luego una fila de nombres de columna que empieza por Time(ms), seguida de una fila por cada muestra grabada.
Si escribe un analizador, busque la fila que empieza por Time(ms) en lugar de contar filas, y trate todo lo que sigue como datos. La cabecera se organiza en pares de etiqueta y valor uno junto a otro, para que se lea con claridad en una hoja de cálculo: un par a la izquierda, un par en el centro y, en la revisión 4 y posteriores, otro par a la derecha con los datos de movimiento.
La cabecera
La cabecera contiene todo lo necesario para entender el vuelo sin leer una sola fila de datos.
- Resumen del vuelo. El apogeo y su instante, la altura y el instante de aterrizaje, la velocidad ascendente máxima, la velocidad de aterrizaje y la media de muestras por segundo.
- Identificación. El nombre del dispositivo, los tres números de competidor y el número de serie.
- Condiciones y ajustes. La temperatura de la placa y la tensión de la batería al inicio y al final del vuelo, la versión del firmware, la revisión de la placa y cada ajuste con el que se voló, como la frecuencia de muestreo, el modo híbrido, la orientación, la protección de despegue, la relación de muestreo y el fin de la grabación.
- Procesamiento. Qué versiones de TrueFuse y TruePath procesaron el vuelo y si se aplicó TrueFuse, cómo se confirmó el despegue y cómo se fijó el instante del despegue.
- Revisión 4 y posteriores. El ángulo de la guía, el eje dominante, los desplazamientos y la calidad de calibración, el desfase de sincronización de sensores y cualquier saturación. La parte derecha añade estadísticas de movimiento: instantes de fin de combustión y de eyección, velocidades al fin de combustión y en el descenso, aceleraciones máximas y medias durante el ascenso, la combustión y el descenso, y el cabeceo, alabeo, guiñada e inclinación en el despegue.
- Los vuelos recuperados llevan una fila
Recovered,1. - Adjusted log indica «no» en un vuelo original, y muestra si el registro se ha recalculado después en Altimeter Cloud con otra presión o temperatura.
El campo Verification hash contiene la firma digital Ed25519 del registro, que permite a cualquiera confirmar que el archivo no se ha alterado. Los registros de firmware anterior a 1.52 llevan aquí un hash HMAC-SHA256. Consulte Verificación de registros de vuelo.
La cadena de ajustes
Un único campo Settings string reúne en una línea la configuración usada en el vuelo. Las claves configurables corresponden a las opciones de la página Ajustes.
| Clave | Contenido |
|---|---|
| fp | Presión a nivel del mar usada para calcular la altura (hPa), fijada en 1013,25 |
| ft | Temperatura usada (°C), fijada en 15 |
| ut | Si se usó la temperatura del sensor, siempre 0 |
| ss | Frecuencia de muestreo (Hz) |
| sr | Relación de muestreo |
| ms | Muestras máximas |
| ld | Altura de detección del despegue (m) |
| lp | Protección de despegue (mG) |
| sl | Bloqueo de inicio |
| rs | Fin de la grabación |
| mp | Comportamiento tras el aterrizaje |
| hm | Modo híbrido |
| or | Orientación |
| se | Sincronización de sensores (Rev 4 y posteriores) |
| os, ii, kf | Ajustes internos de tratamiento de la presión (sobremuestreo y filtro) |
| rcp | La referencia de suelo tomada en el despegue |
| rmi | Instante del despegue, en milisegundos |
| cgx, cgy, cgz | Desplazamientos de calibración del giroscopio guardados (Rev 4 y posteriores) |
| cax, cay, caz | Desplazamientos de calibración del acelerómetro guardados (Rev 4 y posteriores) |
| zbb | Indicador de prueba interno, siempre 0 en un vuelo normal |
| sda, sdm, sdn, sds | Referencia de suelo al arrancar: media recortada y mediana de la altitud de las lecturas en la plataforma, cuántas se tomaron y su dispersión (cm) |
| sbf, sbt | La primera lectura del sensor de presión tras el encendido y su lectura al final de su calentamiento (hPa) |
Las columnas de datos
Tras la fila vacía y los nombres de columna, cada fila es una muestra grabada, en este orden. Las columnas de movimiento (aceleración, giroscopio, cabeceo, alabeo, guiñada e inclinación) existen en las placas de revisión 4 y posteriores.
| Columna | Unidad | Formato | Qué es |
|---|---|---|---|
| Time(ms) | ms | 2 decimales | Tiempo desde el despegue, con el despegue como cero |
| Altitude(m) | m | 3 decimales | Altura sobre la plataforma, tras TrueFuse y TruePath |
| Velocity(m/s) | m/s | 2 decimales | Velocidad vertical, calculada a partir de la altitud procesada |
| acceleration_x(mG) | mG | Números enteros | Aceleración a lo largo del eje X de la placa |
| acceleration_y(mG) | mG | Números enteros | Aceleración a lo largo del eje Y |
| acceleration_z(mG) | mG | Números enteros | Aceleración a lo largo del eje Z |
| acceleration_total(mG) | mG | 1 decimal | Módulo de la aceleración total sin el 1 g de la gravedad, así que en reposo queda cerca de cero |
| gyro_x | °/s | Números enteros | Velocidad de rotación alrededor del eje X |
| gyro_y | °/s | Números enteros | Velocidad de rotación alrededor del eje Y |
| gyro_z | °/s | Números enteros | Velocidad de rotación alrededor del eje Z |
| Board temp(C) | °C | 2 decimales | Temperatura del sensor, en una de cada 50 filas y vacía en las filas intermedias |
| pitch | grados | 2 decimales | Ángulo de actitud, seguido por el giroscopio a partir de su cero en la plataforma |
| roll | grados | 2 decimales | Ángulo de actitud, seguido por el giroscopio a partir de su cero en la plataforma |
| yaw | grados | 2 decimales | Ángulo de actitud, seguido por el giroscopio a partir de su cero en la plataforma |
| tilt | grados | 2 decimales | Ángulo respecto a la vertical |
| Pressure(hPa) | hPa | 6 decimales | Presión del aire correspondiente a la altitud procesada, calculada con la atmósfera estándar. Siempre presente en un CSV procedente de un registro ACLZ; en un CSV escrito por el Nano, solo con include_pressure en 1 |
| Raw altitude(m) | m | 3 decimales | Altura sobre la plataforma exactamente como la midió el barómetro, antes de cualquier procesamiento. Solo en CSV procedentes de registros ACLZ |
- El tiempo se mide desde el despegue. El Nano conserva los segundos anteriores a la confirmación del despegue, así que las primeras filas tienen tiempos negativos: 5 segundos a frecuencia completa y otros 3 segundos antes a 50 Hz en un registro ACLZ o a 20 Hz en un CSV.
- Los tiempos se escriben con dos decimales de milisegundo, a partir del propio reloj del sensor, así que las filas están espaciadas de forma uniforme incluso a 833 Hz.
- Con el modo híbrido activado, el descenso se registra a una frecuencia menor, así que el espaciado entre filas cambia. Use siempre la columna de tiempo en lugar de contar filas.
- Los ejes de aceleración y giroscopio son los propios de la placa, que se alinean con el cohete según la orientación.
- Cada fila de datos termina con una coma final, así que un analizador estricto verá un campo vacío al final de cada fila.
Altitude y Raw altitude comparten el mismo cero, así que puede representar una frente a otra y ver exactamente qué cambió el procesamiento. Ambas coinciden durante la mayor parte del vuelo y solo se separan donde el despegue, una carga de eyección o un pico de presión alteraron el barómetro.
Nombres de columna
La fila de nombres de columna en cada caso, exactamente como aparece:
CSV procedente de un registro ACLZ (Rev 4 y posteriores) Time(ms),Altitude(m),Velocity(m/s),acceleration_x(mG),acceleration_y(mG),acceleration_z(mG),acceleration_total(mG),gyro_x,gyro_y,gyro_z,Board temp(C),pitch,roll,yaw,tilt,Pressure(hPa),Raw altitude(m) CSV escrito por el Nano (Rev 4 y posteriores; Pressure(hPa) solo con include_pressure 1) Time(ms),Altitude(m),Velocity(m/s),acceleration_x(mG),acceleration_y(mG),acceleration_z(mG),acceleration_total(mG),gyro_x,gyro_y,gyro_z,Board temp(C),pitch,roll,yaw,tilt,Pressure(hPa) CSV procedente de un registro ACLZ (Rev 1 a 3) Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C),Raw altitude(m) CSV escrito por el Nano (Rev 1 a 3) Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C)
Los registros ACLZ de firmware antiguo, anteriores a la columna de altitud bruta, se descomprimen sin ella.
Placas de revisión 1 a 3
Las placas sin sensor de movimiento usan el mismo archivo con la misma forma, solo que más sencillo. Faltan las columnas de movimiento, y la cabecera no tiene estadísticas de movimiento en su parte derecha. La columna Pressure(hPa) va en tercer lugar, justo después de Altitude, en ambos formatos, y un CSV procedente de un registro ACLZ añade Raw altitude(m) al final. Todo lo demás de esta página se aplica igual.