Manual do altímetro Nano V1
Este manual detalha todos os recursos e operação do nosso pequeno altímetro de foguete Nano V1

Formato do registo de voo CSV

PDF

Cada voo é guardado na unidade do Nano como um registo de voo com o nome flightlog<tag>-<n>.aclz, com uma página flightinfo<tag>-<n>.html correspondente ao lado que resume o voo. A etiqueta (tag) são os últimos quatro caracteres do número de série do Nano e n é o número do voo.

Por predefinição, o registo é um ficheiro ACLZ, o formato comprimido próprio do Nano. Se definir log_format como 0 nas definições, passa a ser um ficheiro CSV. Esta página descreve ambos e as colunas que cada um fornece.

Dica
A forma mais fácil de ver um voo é carregá-lo no Altimeter Cloud, que o apresenta em gráficos e valores claros. Esta página destina-se a quem quer trabalhar diretamente com os dados em bruto. Consulte a página Altimeter Cloud.

Porque é que o ACLZ é a predefinição

O ACLZ grava exatamente o mesmo voo que um CSV, com a mesma precisão, em cerca de um décimo quinto do espaço, e recomendamos mantê-lo como predefinição.

  • Voos mais longos. Até 38 000 amostras num registo, contra 22 000 num CSV (20 000 com include_pressure). A 417 Hz, é a diferença entre captar uma descida longa por completo e ficar sem espaço no registo.
  • Mais voos na unidade. Um voo típico ocupa algumas dezenas de kilobytes em ACLZ, por isso a unidade comporta os 39 voos que o Nano guarda. Em CSV, cerca de dez voos típicos enchem a unidade, e um registo CSV de duração completa ocupa sozinho a maior parte.
  • Mais dados. Cada registo ACLZ guarda também a altitude em bruto, exatamente como o barómetro a mediu antes de qualquer processamento, e a pressão. Assim pode ver sempre o que o TrueFuse e o TruePath fizeram, e o Altimeter Cloud pode mostrar a curva em bruto ao lado da processada.
  • Nada se perde na compressão. O CSV que transfere do Altimeter Cloud é exatamente o CSV que o Nano teria escrito, algarismo a algarismo.
  • Assinado duas vezes. O Nano assina o próprio ficheiro e o CSV em que se expande, por isso um CSV transferido do Altimeter Cloud pode continuar a ser verificado por si só.
  • Mais rápido de manusear. Ficheiros pequenos copiam-se e carregam-se mais depressa, o que se nota sobretudo ao carregar diretamente do Nano por USB.

Não é possível abrir um ficheiro ACLZ numa folha de cálculo. Carregue-o no Altimeter Cloud (gratuito, sem conta) para ver os gráficos e transferir um CSV, ou abra a página de informação do voo ao lado para uma vista rápida diretamente da unidade. Escolha CSV apenas se precisar de abrir registos diretamente da unidade numa folha de cálculo e os seus voos forem suficientemente curtos para caber.

ACLZ (predefinição)CSV
Amostras por vooAté 38 000Até 22 000 (20 000 com include_pressure)
Tamanho de um voo típicoAlgumas dezenas de KBAlgumas centenas de KB
Coluna de altitude em brutoSimNão
Coluna de pressãoSimRev 1 a 3 sempre; Rev 4 e posteriores só com include_pressure
Abre numa folha de cálculoNão: carregue-o e depois transfira um CSVSim
AssinaturaEd25519, sobre o ficheiro e sobre o CSV em que se expandeEd25519, sobre o ficheiro

O funcionamento interno do ACLZ, e como lê-lo com o seu próprio software, é descrito no manual de software, com um conversor de referência.

Como está organizado um registo CSV

Um CSV, quer seja escrito pelo Nano quer transferido do Altimeter Cloud, tem três partes por esta ordem: um bloco de linhas de cabeçalho com um resumo do voo e as definições com que foi gravado, uma única linha em branco, e depois uma linha de nomes de colunas que começa por Time(ms), seguida de uma linha por cada amostra gravada.

Se estiver a escrever um parser, procure a linha que começa por Time(ms) em vez de contar linhas, e trate tudo a partir daí como dados. O cabeçalho está organizado em pares de etiqueta e valor lado a lado, para se ler de forma arrumada numa folha de cálculo: um par à esquerda, um par ao meio e, na revisão 4 e posteriores, mais um par à direita com os valores de movimento.

O cabeçalho

O cabeçalho contém tudo o que é preciso para compreender o voo sem ler uma única linha de dados.

  • Resumo do voo. O apogeu e o seu tempo, a altura e o tempo de aterragem, a velocidade máxima de subida, a velocidade de aterragem e a média de amostras por segundo.
  • Identificação. O nome do dispositivo, os três números de concorrente e o número de série.
  • Condições e definições. A temperatura da placa e a tensão da bateria no início e no fim do voo, a versão do firmware, a revisão da placa e as definições individuais usadas, como a velocidade de amostragem, o modo híbrido, a orientação, a proteção de lançamento, o rácio de amostras e a paragem da gravação.
  • Processamento. As versões do TrueFuse e do TruePath que processaram o voo e se o TrueFuse foi aplicado, como o lançamento foi confirmado e como foi definido o momento da descolagem.
  • Revisão 4 e posteriores. O ângulo da calha, o eixo dominante, os desvios e a qualidade da calibração, o desvio de sincronização dos sensores e qualquer saturação dos sensores. O lado direito acrescenta estatísticas de movimento: tempos de fim da combustão e de ejeção, velocidades no fim da combustão e na descida, as acelerações máximas e médias durante a subida, a combustão e a descida, e a arfagem, o rolamento, a guinada e a inclinação no lançamento.
  • Os voos recuperados têm uma linha Recovered,1.
  • Adjusted log indica «no» num voo original, e mostra se o registo foi entretanto recalculado no Altimeter Cloud com outra pressão ou temperatura.

O campo Verification hash contém a assinatura digital Ed25519 do registo, que permite a qualquer pessoa confirmar que o ficheiro não foi alterado. Os registos de firmware anterior a 1.52 têm aqui um hash HMAC-SHA256. Consulte Verificação de registos de voo.

A cadeia de definições

Um único campo Settings string agrupa numa linha a configuração usada no voo. As chaves configuráveis correspondem às opções da página Definições.

ChaveContém
fpPressão ao nível do mar usada para calcular a altura (hPa), fixa em 1013,25
ftTemperatura usada (°C), fixa em 15
utSe foi usada a temperatura do sensor, sempre 0
ssVelocidade de amostragem (Hz)
srRácio de amostras
msMáximo de amostras
ldAltura de deteção de lançamento (m)
lpProteção de lançamento (mG)
slBloqueio de arranque
rsParagem da gravação
mpManter alimentação
hmModo híbrido
orOrientação
seSincronização ativa (Rev 4 e posteriores)
os, ii, kfDefinições internas de tratamento da pressão (sobreamostragem e filtro)
rcpA referência do solo captada no lançamento
rmiTempo de lançamento, em milissegundos
cgx, cgy, cgzDesvios de calibração do giroscópio guardados (Rev 4 e posteriores)
cax, cay, cazDesvios de calibração do acelerómetro guardados (Rev 4 e posteriores)
zbbIndicador de teste interno, sempre 0 num voo normal
sda, sdm, sdn, sdsReferência do solo no arranque: a média aparada e a mediana da altitude das leituras na plataforma, quantas foram feitas e a sua dispersão (cm)
sbf, sbtA primeira leitura do sensor de pressão após ligar e a sua leitura no fim do aquecimento (hPa)
Importante
Não edite um registo de voo se o quiser manter válido. A assinatura abrange cada byte do ficheiro, por isso alterar seja o que for, mesmo um único número ou um espaço acrescentado, faz com que deixe de corresponder, e o Altimeter Cloud não o aceita. Se quiser trabalhar com os dados, copie primeiro o ficheiro, edite a cópia e guarde o original em segurança.

As colunas de dados

Depois da linha em branco e dos nomes das colunas, cada linha é uma amostra gravada, por esta ordem. As colunas de movimento (aceleração, giroscópio, arfagem, rolamento, guinada e inclinação) existem nas placas da revisão 4 e posteriores.

ColunaUnidadesFormatoO que é
Time(ms)ms2 casas decimaisTempo desde a descolagem, com a descolagem como zero
Altitude(m)m3 casas decimaisAltura acima da plataforma, após TrueFuse e TruePath
Velocity(m/s)m/s2 casas decimaisVelocidade vertical, calculada a partir da altitude processada
acceleration_x(mG)mGNúmeros inteirosAceleração ao longo do eixo X da placa
acceleration_y(mG)mGNúmeros inteirosAceleração ao longo do eixo Y
acceleration_z(mG)mGNúmeros inteirosAceleração ao longo do eixo Z
acceleration_total(mG)mG1 casa decimalMagnitude total da aceleração sem o 1 g da gravidade, por isso fica perto de zero em repouso
gyro_x°/sNúmeros inteirosVelocidade de rotação em torno do eixo X
gyro_y°/sNúmeros inteirosVelocidade de rotação em torno do eixo Y
gyro_z°/sNúmeros inteirosVelocidade de rotação em torno do eixo Z
Board temp(C)°C2 casas decimaisTemperatura do sensor, a cada 50 linhas e em branco nas linhas intermédias
pitchgraus2 casas decimaisÂngulo de atitude, seguido pelo giroscópio a partir do seu zero na plataforma
rollgraus2 casas decimaisÂngulo de atitude, seguido pelo giroscópio a partir do seu zero na plataforma
yawgraus2 casas decimaisÂngulo de atitude, seguido pelo giroscópio a partir do seu zero na plataforma
tiltgraus2 casas decimaisÂngulo em relação à vertical
Pressure(hPa)hPa6 casas decimaisPressão do ar correspondente à altitude processada, calculada com a atmosfera padrão. Sempre presente num CSV obtido de um registo ACLZ; num CSV escrito pelo Nano, só com include_pressure definido como 1
Raw altitude(m)m3 casas decimaisAltura acima da plataforma exatamente como o barómetro a mediu, antes de qualquer processamento. Só em CSV obtidos de registos ACLZ
  • O tempo é medido a partir da descolagem. O Nano guarda os segundos antes de o lançamento ser confirmado, por isso as primeiras linhas têm tempos negativos: 5 segundos à taxa máxima e, antes disso, mais 3 segundos a 50 Hz num registo ACLZ ou a 20 Hz num CSV.
  • Os tempos são escritos com duas casas decimais de milissegundo, a partir do relógio próprio do sensor, por isso as linhas ficam uniformemente espaçadas mesmo a 833 Hz.
  • Com o modo híbrido ligado, a descida é registada a uma taxa mais baixa, por isso o espaçamento entre linhas muda. Use sempre a coluna Time em vez de contar linhas.
  • Os eixos de aceleração e do giroscópio são os eixos próprios da placa, alinhados com o foguete de acordo com a orientação.
  • Cada linha de dados termina com uma vírgula, por isso um parser rigoroso verá um campo vazio no fim de cada linha.

Altitude e Raw altitude partilham o mesmo zero, por isso pode representar uma contra a outra e ver exatamente o que o processamento alterou. As duas sobrepõem-se durante a maior parte do voo e só se separam onde o lançamento, uma carga de ejeção ou um pico de pressão perturbaram o barómetro.

Nomes das colunas

A linha de nomes de colunas em cada caso, exatamente como aparece:

CSV obtido de um registo ACLZ (Rev 4 e 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 pelo Nano (Rev 4 e posteriores; Pressure(hPa) só com 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 obtido de um registo ACLZ (Rev 1 a 3)
Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C),Raw altitude(m)

CSV escrito pelo Nano (Rev 1 a 3)
Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C)

Os registos ACLZ de firmware mais antigo, criados antes de a coluna de altitude em bruto ser acrescentada, expandem-se sem ela.

Placas das revisões 1 a 3

As placas sem sensor de movimento usam o mesmo ficheiro com a mesma forma, só que mais simples. As colunas de movimento não existem e o cabeçalho não tem estatísticas de movimento do lado direito. A coluna Pressure(hPa) fica em terceiro lugar, logo a seguir a Altitude, em ambos os formatos, e um CSV obtido de um registo ACLZ acrescenta Raw altitude(m) no fim. Tudo o resto nesta página aplica-se da mesma forma.