Das Nano V1 Altimeter Handbuch
Dieses Handbuch beschreibt alle Funktionen und den Betrieb unseres winzigen Nano V1 Raketenaltimeters.

CSV-Flugprotokollformat

PDF

Jeden Flug, den du speicherst, wird als CSV-Datei geschrieben – eine einfache Texttabelle, die du in einem beliebigen Tabellenkalkulationsprogramm öffnen oder mit eigenem Code lesen kannst. Diese Seite beschreibt dieses Format im Detail. Sie behandelt ein Board der Revision 4 oder später, das den vollständigen Satz an Bewegungsdaten aufzeichnet; ein Board der Revision 3 oder früher verwendet das gleiche Layout mit den fehlenden Bewegungsspalten, und es gibt eine Anmerkung zu den Unterschieden am Ende.

Die gesamte Datei, der Header und jede Messung, ist das bereinigte True-Path-Ergebnis, und es ist signiert, damit es auf Manipulationen überprüft werden kann. Es gibt mehr dazu auf der Seite „True Path und Apogee" und der Sicherheitsseite.

iTIPP

Der einfachste Weg, einen Flug anzuschauen, ist, die Datei direkt zu Altimeter Cloud hochzuladen. Du musst die rohe CSV selbst nicht verstehen: Die Website stellt deinen Flug in klaren Diagrammen und Zahlen dar, die einfach zu lesen sind. Diese Seite ist wirklich für alle, die direkt mit den rohen Daten arbeiten möchten. Es gibt eine vollständige Anleitung auf der Seite Altimeter Cloud.

Wie die Datei aufgebaut ist

Die Datei hat drei Teile, in dieser Reihenfolge:

Zunächst kommt ein Header mit vierzehn Zeilen, der eine Zusammenfassung des Flugs und die genauen Bedingungen und Einstellungen enthält, unter denen er aufgezeichnet wurde. Dann eine einzelne leere Zeile. Dann eine Zeile mit Spaltennamen, gefolgt von den Flugdaten selbst, eine Zeile pro aufgezeichnete Probe. Mit anderen Worten: Der Header nimmt sechzehn Zeilen ein, und die Messwerte beginnen in Zeile siebzehn.

Der Header ist als Beschriftungs- und Wertpaare angeordnet, die nebeneinander in Spalten stehen, sodass er beim Öffnen in einem Tabellenkalkulationsprogramm ordentlich aussieht: ein Paar links, ein Paar in der Mitte, und bei Rev4 und später ein weiteres Paar rechts mit den bewegungsbezogenen Zahlen. Wenn du einen Parser schreibst, ist der einfachste Ansatz, die Header-Zeilen für die gewünschten Felder zu lesen, die leere Zeile zu überspringen und alles ab dem Spaltennamen als Datentabelle zu behandeln.

Der Header

Der Header enthält alles, was du brauchst, um den Flug zu verstehen, ohne eine einzige Datenzeile zu lesen. Die Felder fallen in einige Gruppen.

Die Flugzusammenfassung gibt das Apogäum in Metern und die Zeit, zu der es auftrat, die Landungshöhe und -zeit, die maximale Aufwärtsgeschwindigkeit, die Landegeschwindigkeit und die durchschnittliche Anzahl der Proben pro Sekunde an. Die Identifikationsfelder sind dein Geräte-Tag, dein Konkurrenz-Tag und die Seriennummer des Altimeters, das sind die Details, die du verwendest, um einen Flug auf altimetercloud.com zu deinem Konto hinzuzufügen.

Die Bedingungen und Einstellungen umfassen den Luftdruck auf Meereshöhe und die statische Temperatur, die zur Berechnung der Höhe verwendet werden, ob die Sensor-Temperatur verwendet wurde, die Board-Temperatur am Anfang und Ende des Flugs, die Batteriespannung am Anfang und Ende, die Firmware-Version, die Board-Revision und eine Reihe einzelner Einstellungen wie Ausrichtung, Startschutz, Hybrid-Modus, Abtastgeschwindigkeit und Aufzeichnungsstopp. Es gibt auch ein einzelnes Einstellungsstring-Feld, das die vollständige Konfiguration des Flugs in eine Zeile packt, und ein Angepasstes Protokoll-Feld, das für einen ursprünglichen Flug „nein" anzeigt und dir sagt, ob das Protokoll seit dem Rückableiten mit unterschiedlichem Druck oder unterschiedlicher Temperatur verändert wurde.

Da der Einstellungsstring in Kurzschrift geschrieben wird, hier ist, was jeder Schlüssel enthält. Die konfigurierbaren entsprechen den Optionen, die auf der Einstellungsseite beschrieben sind.

Schlüssel Enthält
fp Luftdruck auf Meereshöhe zur Berechnung der Höhe (hPa)
ft Verwendete statische Temperatur (°C)
ut Ob Sensor-Temperatur verwendet wurde (0 oder 1)
ss Abtastgeschwindigkeit (Hz)
sr Abtastquotient
ms Maximale Proben
ld Starterkennung-Schwellenwert (m)
lp Startschutz (mG)
sl Startverriegelung
rs Aufzeichnungsstopp
mp Stromversorgung beibehalten
hm Hybrid-Modus
or Ausrichtung
se Synchronisierung aktivieren (Rev4 und später)
os, ii, kf Interne Druckverarbeitungseinstellungen (Überabtastungs- und Filterparameter)
rcp Die bei der Zündung erfasste Bodenreferenz
rmi Zündungszeit in Millisekunden
cgx, cgy, cgz Gespeicherte Gyroskop-Kalibrierungsoffsets (Rev4 und später)
cax, cay, caz Gespeicherte Beschleunigungssensor-Kalibrierungsoffsets (Rev4 und später)

Schließlich ist der Verifizierungs-Hash die HMAC-SHA256-Signatur, die es Altimeter Cloud ermöglicht, zu bestätigen, dass die Datei nicht verändert wurde. Bei Rev4 und später wird die rechte Seite des Headers mit einem Satz von Bewegungsstatistiken erweitert: Abbrand- und Auswurfzeiten, Abbrand- und Abstiegsgeschwindigkeiten, maximale und durchschnittliche Beschleunigungen während des Aufstiegs, des Abstiegs und des Abbranns, der Starttonhöhe, des Rollens, des Gierens und der Neigung, die dominante Achse und Zeitdetails.

!WICHTIG

Bearbeite kein Flugprotokoll, wenn du es gültig behalten möchtest. Die Verifizierungssignatur wird aus dem genauen Inhalt der Datei berechnet, daher bedeutet das Ändern von irgendetwas, selbst eine einzelne Zahl oder ein hinzugefügter Abstand, dass sie nicht mehr übereinstimmt. Altimeter Cloud akzeptiert nur ursprüngliche, unbearbeitete Protokolle, daher schlägt eine bearbeitete Datei bei der Verifizierung fehl und kann nicht hochgeladen werden. Wenn du mit den Daten arbeiten möchtest, kopiere die Datei zuerst und bearbeite die Kopie, und behalte das Original sicher.

Die Datenspalten (Revision 4 und später)

Nach der leeren Zeile und der Zeile mit Spaltennamen ist jede Zeile eine aufgezeichnete Probe. Die Spalten erscheinen in dieser Reihenfolge:

Spalte Einheiten Format Was es ist
Time(ms) ms ganze Zahlen Zeit seit der Zündung, mit Zündung als Null
Altitude(m) m 3 Dezimalstellen Höhe über dem Startpunkt
Velocity(m/s) m/s 2 Dezimalstellen Vertikalgeschwindigkeit, berechnet aus der Höhenkurve
acceleration_x(mG) mG ganze Zahlen Beschleunigung entlang der X-Achse des Boards
acceleration_y(mG) mG ganze Zahlen Beschleunigung entlang der Y-Achse
acceleration_z(mG) mG ganze Zahlen Beschleunigung entlang der Z-Achse
acceleration_total(mG) mG 1 Dezimalstelle Gesamtbeschleunigungsbetrag mit 1 G Gravitation subtrahiert, sodass es in Ruhe nahe null liegt
gyro_x °/s ganze Zahlen Rotationsgeschwindigkeit um die X-Achse
gyro_y °/s ganze Zahlen Rotationsgeschwindigkeit um die Y-Achse
gyro_z °/s ganze Zahlen Rotationsgeschwindigkeit um die Z-Achse
Board temp(C) °C 2 Dezimalstellen Sensor-Temperatur, ungefähr einmal pro Sekunde geschrieben und in den dazwischenliegenden Zeilen leer
pitch Grad 2 Dezimalstellen Orientierungswinkel vom Fusionsfilter
roll Grad 2 Dezimalstellen Orientierungswinkel vom Fusionsfilter
yaw Grad 2 Dezimalstellen Orientierungswinkel vom Fusionsfilter
tilt Grad 2 Dezimalstellen Winkel von der Senkrechten

Ein paar Dinge sind wissenswert. Die Zeit wird von der Zündung gemessen, daher ist die Zündung null; da das Nano einen kurzen Puffer mit Proben von kurz vor dem Abheben speichert, können die ersten paar Zeilen kleine negative Zeiten anzeigen. Die Beschleunigungs- und Gyro-Achsen sind die Achsen des Boards selbst, die sich mit der Rakete gemäß deiner Ausrichtungseinstellung ausrichten. Es gibt eine Zeile pro Probe bis zum Maximum, das du festlegst, daher kann ein vollständiges Protokoll zehntausende von Zeilen sein.

Ein kurzes Beispiel mit echten Flugdaten, das die Spaltennamen und einige Zeilen von etwa zum Zeitpunkt der Zündung zeigt:

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
-10,0.085,4.54,-993,35,76,-3.5,376,-12,-68,,3.40,-26.21,38.18,26.41,
0,0.141,5.76,-994,37,74,-2.6,330,-22,-74,,1.63,-26.97,35.28,27.02,
10,0.224,7.07,-992,36,75,-4.5,299,-28,-71,,-0.06,-27.61,32.71,27.61,
20,0.334,8.44,-1376,99,120,384.8,256,-29,-68,,-1.59,-28.15,30.55,28.19,

Du kannst die leeren Temperaturzellen sehen, die kleine negative Zeit kurz vor der Zündung, und dass jede Datenzeile mit einem nachgestellten Komma endet, sodass ein strikter Parser ein leeres Feld am Ende jeder Datenzeile sieht.

Revision 3 und früher

Boards ohne Bewegungssensor verwenden die gleiche Datei in der gleichen Form, nur einfacher. Die Bewegungsspalten, das heißt die drei Beschleunigungsspalten, die Gesamtbeschleunigung, die drei Gyroskopspalten und die Tonhöhe, das Rollen, das Gieren und die Neigung, sind alle abwesend, und der Header enthält nicht die Bewegungsstatistiken auf seiner rechten Seite.

Es gibt eine Ergänzung statt einer Entfernung: Diese Boards enthalten eine Pressure(hPa)-Spalte, geschrieben auf sechs Dezimalstellen, direkt nach der Höhe. Ein Protokoll der Revision 3 oder früher hat also nur fünf Spalten, in dieser Reihenfolge: Time(ms), Altitude(m), Pressure(hPa), Velocity(m/s) und Board temp(C). Alles andere auf dieser Seite, die Header-Gruppen, die Zeit, die von der Zündung gemessen wird, und die Temperatur, die ungefähr einmal pro Sekunde geschrieben wird, gelten auf die gleiche Weise.