De Nano V1 altimeterhandleiding
Deze handleiding beschrijft alle functies en bediening van onze kleine Nano V1 rocket altimeter

CSV-vluchtlogformaat

PDF

Elke vlucht wordt op de schijf van de Nano opgeslagen als vluchtlog met de naam flightlog<tag>-<n>.aclz, met ernaast een bijbehorende pagina flightinfo<tag>-<n>.html die de vlucht samenvat. De tag bestaat uit de laatste vier tekens van het serienummer van de Nano en n is het vluchtnummer.

Standaard is de log een ACLZ-bestand, het eigen gecomprimeerde formaat van de Nano. Zet je log_format in de instellingen op 0, dan is het in plaats daarvan een CSV-bestand. Deze pagina beschrijft beide, en de kolommen die je van elk krijgt.

Tip
De makkelijkste manier om een vlucht te bekijken is hem naar de Altimeter Cloud te uploaden, die hem in duidelijke grafieken en getallen weergeeft. Deze pagina is voor iedereen die direct met de ruwe data wil werken. Zie de pagina Altimeter Cloud.

Waarom ACLZ de standaard is

ACLZ legt precies dezelfde vlucht vast als een CSV, met dezelfde precisie, in ongeveer een vijftiende van de ruimte, en we raden aan het als standaard te laten staan.

  • Langere vluchten. Tot 38 000 meetwaarden in één log, tegenover 22 000 voor een CSV (20 000 met include_pressure). Op 417 Hz is dat het verschil tussen een lange daling volledig vastleggen en een volle log.
  • Meer vluchten op de schijf. Een typische vlucht is als ACLZ een paar tientallen kilobytes, dus de schijf kan alle 39 vluchten bevatten die de Nano bewaart. Als CSV vullen ongeveer tien typische vluchten de schijf, en een CSV-log van volledige lengte neemt in zijn eentje het grootste deel in.
  • Meer data. Elke ACLZ-log bewaart ook de ruwe hoogte, precies zoals de barometer die mat vóór elke verwerking, en de druk. Zo kun je altijd zien wat TrueFuse en TruePath hebben gedaan, en kan de Altimeter Cloud de ruwe curve naast de verwerkte tonen.
  • Bij de compressie gaat niets verloren. De CSV die je van de Altimeter Cloud downloadt, is precies de CSV die de Nano zou hebben geschreven, cijfer voor cijfer.
  • Twee keer ondertekend. De Nano ondertekent het bestand zelf en de CSV waarin het wordt uitgepakt, zodat een CSV die je van de Altimeter Cloud downloadt nog steeds op zichzelf kan worden geverifieerd.
  • Sneller in gebruik. Kleine bestanden worden sneller gekopieerd en geüpload, wat je het meest merkt als je direct vanaf de Nano via USB uploadt.

Een ACLZ-bestand kun je niet in een spreadsheet openen. Upload het naar de Altimeter Cloud (gratis, geen account nodig) om de grafieken te zien en een CSV te downloaden, of open de vluchtinfopagina ernaast voor een snelle blik direct vanaf de schijf. Kies alleen voor CSV als je logs direct vanaf de schijf in een spreadsheet moet openen en je vluchten kort genoeg zijn om te passen.

ACLZ (standaard)CSV
Meetwaarden per vluchtTot 38 000Tot 22 000 (20 000 met include_pressure)
Grootte van een typische vluchtEen paar tientallen KBEen paar honderd KB
Kolom ruwe hoogteJaNee
DrukkolomJaRev 1 tot 3 altijd; Rev 4 en later alleen met include_pressure
Opent in een spreadsheetNee: upload hem en download dan een CSVJa
HandtekeningEd25519, over het bestand en over de CSV waarin het wordt uitgepaktEd25519, over het bestand

Hoe ACLZ intern werkt, en hoe je het met je eigen software leest, wordt behandeld in de softwarehandleiding, met een referentieconverter.

Hoe een CSV-log is opgebouwd

Een CSV, of hij nu door de Nano is geschreven of van de Altimeter Cloud is gedownload, heeft drie delen in deze volgorde: een blok headerrijen met een samenvatting van de vlucht en de instellingen waarmee hij is opgenomen, één lege rij, dan een rij kolomnamen die begint met Time(ms), gevolgd door één rij per opgenomen meetwaarde.

Schrijf je een parser, zoek dan de rij die begint met Time(ms) in plaats van rijen te tellen, en behandel alles vanaf daar als data. De header is opgebouwd als paren van label en waarde naast elkaar, zodat hij netjes leest in een spreadsheet: een paar links, een paar in het midden en, bij revisie 4 en later, nog een paar rechts met de bewegingsgegevens.

De header

De header bevat alles wat je nodig hebt om de vlucht te begrijpen zonder één datarij te lezen.

  • Vluchtsamenvatting. Het apogeum en het tijdstip ervan, de landingshoogte en het tijdstip, de maximale stijgsnelheid, de landingssnelheid en het gemiddelde aantal meetwaarden per seconde.
  • Identificatie. De apparaatnaam, alle drie de deelnemersnummers en het serienummer.
  • Omstandigheden en instellingen. De temperatuur van het bordje en de accuspanning aan het begin en einde van de vlucht, de firmwareversie, de revisie van het bordje en de afzonderlijke instellingen waarmee is gevlogen, zoals bemonsteringssnelheid, hybride modus, oriëntatie, lanceerbeveiliging, bemonsteringsverhouding en opname stoppen.
  • Verwerking. Welke versies van TrueFuse en TruePath de vlucht hebben verwerkt en of TrueFuse is toegepast, hoe de lancering werd bevestigd en hoe het lanceertijdstip werd bepaald.
  • Revisie 4 en later. De railhoek, de dominante as, de kalibratie-offsets en -kwaliteit, de offset van de sensorsynchronisatie en eventuele sensorverzadiging. De rechterkant voegt bewegingsstatistieken toe: tijdstippen van brandsluiting en uitwerpen, snelheden bij brandsluiting en daling, de maximale en gemiddelde versnellingen tijdens de klim, het branden en de daling, en de stamp, rol, gier en helling bij de lancering.
  • Herstelde vluchten hebben een rij Recovered,1.
  • Adjusted log staat op ‘no’ bij een originele vlucht, en toont of de log sindsdien op de Altimeter Cloud is herberekend met een andere druk of temperatuur.

Het veld Verification hash bevat de digitale handtekening met Ed25519 van de log, waarmee iedereen kan bevestigen dat het bestand niet is gewijzigd. Logs van firmware vóór 1.52 hebben hier in plaats daarvan een HMAC-SHA256-hash. Zie Vluchtlogverificatie.

De instellingenstring

Eén veld Settings string bundelt de configuratie die voor de vlucht is gebruikt in één regel. De configureerbare sleutels komen overeen met de opties op de pagina Instellingen.

SleutelBevat
fpLuchtdruk op zeeniveau gebruikt om de hoogte te berekenen (hPa), vast op 1013,25
ftGebruikte temperatuur (°C), vast op 15
utOf de sensortemperatuur is gebruikt, altijd 0
ssBemonsteringssnelheid (Hz)
srBemonsteringsverhouding
msMaximaal aantal meetwaarden
ldLanceerdetectiehoogte (m)
lpLanceerbeveiliging (mG)
slOpstartvergrendeling
rsOpname stoppen
mpVoeding behouden
hmHybride modus
orOriëntatie
seSynchronisatie aan (Rev 4 en later)
os, ii, kfInterne instellingen voor drukverwerking (oversampling en filter)
rcpHet grondreferentiepunt vastgelegd bij de lancering
rmiLanceertijd, in milliseconden
cgx, cgy, cgzOpgeslagen kalibratie-offsets van de gyroscoop (Rev 4 en later)
cax, cay, cazOpgeslagen kalibratie-offsets van de versnellingsmeter (Rev 4 en later)
zbbInterne testvlag, altijd 0 bij een normale vlucht
sda, sdm, sdn, sdsGrondreferentiepunt bij het opstarten: het getrimde gemiddelde en de mediaan van de hoogte uit de metingen op het lanceerplatform, hoeveel er zijn gedaan, en hun spreiding (cm)
sbf, sbtDe eerste meting van de druksensor na het aanzetten en zijn meting aan het einde van de opwarmtijd (hPa)
Belangrijk
Bewerk een vluchtlog niet als je wilt dat hij geldig blijft. De handtekening dekt elke byte van het bestand, dus als je ook maar iets wijzigt, zelfs één getal of een toegevoegde spatie, klopt hij niet meer en accepteert de Altimeter Cloud hem niet. Wil je met de data werken, kopieer het bestand dan eerst, bewerk de kopie en bewaar het origineel veilig.

De datakolommen

Na de lege rij en de kolomnamen is elke rij één opgenomen meetwaarde, in deze volgorde. De bewegingskolommen (versnelling, gyroscoop, stamp, rol, gier en helling) zijn er op bordjes van revisie 4 en later.

KolomEenhedenFormaatWat het is
Time(ms)ms2 decimalenTijd vanaf de lancering, met de lancering als nul
Altitude(m)m3 decimalenHoogte boven het lanceerplatform, na TrueFuse en TruePath
Velocity(m/s)m/s2 decimalenVerticale snelheid, berekend uit de verwerkte hoogte
acceleration_x(mG)mGHele getallenVersnelling langs de X-as van het bordje
acceleration_y(mG)mGHele getallenVersnelling langs de Y-as
acceleration_z(mG)mGHele getallenVersnelling langs de Z-as
acceleration_total(mG)mG1 decimaalTotale grootte van de versnelling zonder de 1 g zwaartekracht, zodat hij in rust rond nul ligt
gyro_x°/sHele getallenDraaisnelheid om de X-as
gyro_y°/sHele getallenDraaisnelheid om de Y-as
gyro_z°/sHele getallenDraaisnelheid om de Z-as
Board temp(C)°C2 decimalenSensortemperatuur, op elke 50e rij en leeg op de rijen ertussen
pitchgraden2 decimalenStandhoek, door de gyroscoop gevolgd vanaf zijn nulpunt op het lanceerplatform
rollgraden2 decimalenStandhoek, door de gyroscoop gevolgd vanaf zijn nulpunt op het lanceerplatform
yawgraden2 decimalenStandhoek, door de gyroscoop gevolgd vanaf zijn nulpunt op het lanceerplatform
tiltgraden2 decimalenHoek ten opzichte van verticaal
Pressure(hPa)hPa6 decimalenLuchtdruk voor de verwerkte hoogte, berekend met de standaardatmosfeer. Altijd in een CSV uit een ACLZ-log; in een CSV die door de Nano is geschreven alleen met include_pressure op 1
Raw altitude(m)m3 decimalenHoogte boven het lanceerplatform precies zoals de barometer die mat, vóór elke verwerking. Alleen in CSV's uit ACLZ-logs
  • De tijd wordt gemeten vanaf de lancering. De Nano bewaart de seconden voordat de lancering werd bevestigd, dus de eerste rijen hebben negatieve tijden: 5 seconden op volle rate, en daarvoor nog 3 seconden op 50 Hz in een ACLZ-log of 20 Hz in een CSV.
  • Tijden worden geschreven tot op twee decimalen van een milliseconde, volgens de eigen klok van de sensor, zodat de rijen zelfs op 833 Hz gelijkmatig verdeeld zijn.
  • Met hybride modus aan wordt de daling op een lagere rate gelogd, dus de afstand tussen de rijen verandert. Gebruik altijd de kolom Time in plaats van rijen te tellen.
  • De assen van versnelling en gyroscoop zijn de eigen assen van het bordje, die volgens de oriëntatie op de raket zijn uitgelijnd.
  • Elke datarij eindigt met een komma, dus een strikte parser ziet aan het einde van elke rij één leeg veld.

Altitude en Raw altitude delen hetzelfde nulpunt, dus je kunt ze tegen elkaar uitzetten en precies zien wat de verwerking heeft veranderd. Het grootste deel van de vlucht liggen ze over elkaar heen, en ze wijken alleen af waar de lancering, een uitwerplading of een drukpiek de barometer verstoorde.

Kolomnamen

De rij met kolomnamen in elk geval, precies zoals hij verschijnt:

CSV uit een ACLZ-log (Rev 4 en later)
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 geschreven door de Nano (Rev 4 en later; Pressure(hPa) alleen met 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 uit een ACLZ-log (Rev 1 tot 3)
Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C),Raw altitude(m)

CSV geschreven door de Nano (Rev 1 tot 3)
Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C)

ACLZ-logs van oudere firmware, gemaakt voordat de kolom met ruwe hoogte werd toegevoegd, worden zonder die kolom uitgepakt.

Bordjes van revisie 1 tot 3

Bordjes zonder bewegingssensor gebruiken hetzelfde bestand in dezelfde vorm, alleen eenvoudiger. De bewegingskolommen ontbreken, en de header heeft rechts geen bewegingsstatistieken. De kolom Pressure(hPa) staat in beide formaten op de derde plaats, direct na Altitude, en een CSV uit een ACLZ-log voegt aan het einde Raw altitude(m) toe. Al het andere op deze pagina geldt op dezelfde manier.