Każdy lot jest zapisywany na dysku Nano jako zapis lotu o nazwie flightlog<tag>-<n>.aclz, a obok niego znajduje się pasująca strona flightinfo<tag>-<n>.html z podsumowaniem lotu. Znacznik to ostatnie cztery znaki numeru seryjnego Nano, a n to numer lotu.
Domyślnie zapis jest plikiem ACLZ, własnym skompresowanym formatem Nano. Jeśli w ustawieniach ustawisz log_format na 0, będzie to plik CSV. Ta strona opisuje oba formaty i kolumny, które każdy z nich zawiera.
Dlaczego ACLZ jest domyślny
ACLZ zapisuje dokładnie ten sam lot co CSV, z tą samą dokładnością, w około jednej piętnastej miejsca, i zalecamy pozostawienie go jako domyślnego.
- Dłuższe loty. Do 38 000 próbek w jednym zapisie, wobec 22 000 w CSV (20 000 z
include_pressure). Przy 417 Hz to różnica między zarejestrowaniem w całości długiego opadania a brakiem miejsca w zapisie. - Więcej lotów na dysku. Typowy lot w ACLZ zajmuje kilkadziesiąt kilobajtów, więc dysk mieści pełne 39 lotów, które przechowuje Nano. W CSV około dziesięciu typowych lotów zapełnia dysk, a zapis CSV pełnej długości zajmuje sam większość miejsca.
- Więcej danych. Każdy zapis ACLZ zawiera też surową wysokość, dokładnie taką, jaką zmierzył barometr przed jakimkolwiek przetwarzaniem, oraz ciśnienie. Dzięki temu zawsze widzisz, co zrobiły TrueFuse i TruePath, a Altimeter Cloud może narysować surowy przebieg obok przetworzonego.
- Kompresja niczego nie traci. CSV pobrany z Altimeter Cloud jest dokładnie tym CSV, który zapisałby Nano, cyfra w cyfrę.
- Podwójny podpis. Nano podpisuje sam plik oraz CSV, do którego się rozpakowuje, więc CSV pobrany z Altimeter Cloud nadal można zweryfikować samodzielnie.
- Szybsza obsługa. Małe pliki szybciej się kopiują i przesyłają, co najbardziej odczujesz przy przesyłaniu bezpośrednio z Nano przez USB.
Pliku ACLZ nie da się otworzyć w arkuszu kalkulacyjnym. Prześlij go do Altimeter Cloud (bezpłatnie, bez konta), aby zobaczyć wykresy i pobrać CSV, albo otwórz stronę informacji o locie obok niego, aby szybko rzucić okiem bezpośrednio z dysku. Wybierz CSV tylko wtedy, gdy musisz otwierać zapisy bezpośrednio z dysku w arkuszu, a Twoje loty są na tyle krótkie, by się zmieściły.
| ACLZ (domyślnie) | CSV | |
|---|---|---|
| Próbki na lot | Do 38 000 | Do 22 000 (20 000 z include_pressure) |
| Rozmiar typowego lotu | Kilkadziesiąt KB | Kilkaset KB |
| Kolumna surowej wysokości | Tak | Nie |
| Kolumna ciśnienia | Tak | Rev 1 do 3 zawsze; Rev 4 i nowsze tylko z include_pressure |
| Otwiera się w arkuszu kalkulacyjnym | Nie: prześlij go, a potem pobierz CSV | Tak |
| Podpis | Ed25519, obejmujący plik i CSV, do którego się rozpakowuje | Ed25519, obejmujący plik |
Jak ACLZ działa wewnątrz i jak odczytać go własnym oprogramowaniem, opisano w podręczniku oprogramowania wraz z konwerterem referencyjnym.
Układ zapisu CSV
Plik CSV, zapisany przez Nano lub pobrany z Altimeter Cloud, składa się z trzech części w tej kolejności: bloku wierszy nagłówka z podsumowaniem lotu i ustawieniami, z jakimi go zarejestrowano, jednego pustego wiersza, a następnie wiersza nazw kolumn zaczynającego się od Time(ms), po którym następuje jeden wiersz na każdą zarejestrowaną próbkę.
Jeśli piszesz parser, znajdź wiersz zaczynający się od Time(ms) zamiast liczyć wiersze i traktuj wszystko od tego miejsca jako dane. Nagłówek ma układ par etykieta i wartość obok siebie, aby czytelnie wyglądał w arkuszu: para po lewej, para pośrodku i, od rewizji 4, kolejna para po prawej z danymi ruchu.
Nagłówek
Nagłówek zawiera wszystko, czego potrzebujesz, aby zrozumieć lot bez czytania choćby jednego wiersza danych.
- Podsumowanie lotu. Apogeum i jego czas, wysokość i czas lądowania, maksymalna prędkość wznoszenia, prędkość lądowania i średnia liczba próbek na sekundę.
- Identyfikacja. Nazwa urządzenia, wszystkie trzy numery zawodnika i numer seryjny.
- Warunki i ustawienia. Temperatura płytki i napięcie akumulatora na początku i na końcu lotu, wersja oprogramowania, rewizja płytki i poszczególne ustawienia lotu, takie jak częstotliwość próbkowania, tryb hybrydowy, orientacja, ochrona startu, współczynnik próbkowania i koniec zapisu.
- Przetwarzanie. Które wersje TrueFuse i TruePath przetworzyły lot i czy zastosowano TrueFuse, jak potwierdzono start i jak ustalono chwilę oderwania.
- Rewizja 4 i nowsze. Kąt prowadnicy, dominująca oś, przesunięcia i jakość kalibracji, przesunięcie synchronizacji czujników i ewentualne nasycenie czujników. Prawa strona dodaje statystyki ruchu: czasy końca pracy silnika i wyrzutu, prędkości w chwili końca pracy silnika i podczas opadania, maksymalne i średnie przyspieszenia podczas wznoszenia, pracy silnika i opadania oraz pochylenie, przechylenie, odchylenie i nachylenie przy starcie.
- Odzyskane loty mają wiersz
Recovered,1. - Adjusted log ma wartość „no” dla oryginalnego lotu i pokazuje, czy zapis przeliczono później w Altimeter Cloud z innym ciśnieniem lub temperaturą.
Pole Verification hash zawiera podpis cyfrowy Ed25519 zapisu, dzięki któremu każdy może potwierdzić, że plik nie został zmieniony. Zapisy z oprogramowania starszego niż 1.52 mają tu zamiast tego skrót HMAC-SHA256. Zobacz Weryfikacja zapisów lotu.
Ciąg ustawień
Pojedyncze pole Settings string zawiera w jednym wierszu konfigurację użytą w locie. Konfigurowalne klucze odpowiadają opcjom na stronie Ustawienia.
| Klucz | Zawartość |
|---|---|
| fp | Ciśnienie na poziomie morza używane do obliczania wysokości (hPa), stałe 1013,25 |
| ft | Używana temperatura (°C), stała 15 |
| ut | Czy użyto temperatury czujnika, zawsze 0 |
| ss | Częstotliwość próbkowania (Hz) |
| sr | Współczynnik próbkowania |
| ms | Maksymalna liczba próbek |
| ld | Wysokość wykrycia startu (m) |
| lp | Ochrona startu (mG) |
| sl | Blokada startowa |
| rs | Koniec zapisu |
| mp | Zachowanie po lądowaniu |
| hm | Tryb hybrydowy |
| or | Orientacja |
| se | Synchronizacja czujników (Rev 4 i nowsze) |
| os, ii, kf | Wewnętrzne ustawienia obsługi ciśnienia (nadpróbkowanie i filtr) |
| rcp | Punkt odniesienia przy ziemi ustalony przy starcie |
| rmi | Czas startu w milisekundach |
| cgx, cgy, cgz | Zapisane przesunięcia kalibracji żyroskopu (Rev 4 i nowsze) |
| cax, cay, caz | Zapisane przesunięcia kalibracji akcelerometru (Rev 4 i nowsze) |
| zbb | Wewnętrzna flaga testowa, w normalnym locie zawsze 0 |
| sda, sdm, sdn, sds | Punkt odniesienia przy ziemi z uruchomienia: przycięta średnia i mediana wysokości z odczytów na wyrzutni, ich liczba i rozrzut (cm) |
| sbf, sbt | Pierwszy odczyt czujnika ciśnienia po włączeniu i jego odczyt na końcu rozgrzewania (hPa) |
Kolumny danych
Po pustym wierszu i nazwach kolumn każdy wiersz to jedna zarejestrowana próbka, w tej kolejności. Kolumny ruchu (przyspieszenie, żyroskop, pochylenie, przechylenie, odchylenie i nachylenie) występują na płytkach w rewizji 4 i nowszych.
| Kolumna | Jednostka | Format | Co to jest |
|---|---|---|---|
| Time(ms) | ms | 2 miejsca po przecinku | Czas od oderwania, z oderwaniem jako zerem |
| Altitude(m) | m | 3 miejsca po przecinku | Wysokość nad wyrzutnią po TrueFuse i TruePath |
| Velocity(m/s) | m/s | 2 miejsca po przecinku | Prędkość pionowa obliczona z przetworzonej wysokości |
| acceleration_x(mG) | mG | Liczby całkowite | Przyspieszenie wzdłuż osi X płytki |
| acceleration_y(mG) | mG | Liczby całkowite | Przyspieszenie wzdłuż osi Y |
| acceleration_z(mG) | mG | Liczby całkowite | Przyspieszenie wzdłuż osi Z |
| acceleration_total(mG) | mG | 1 miejsce po przecinku | Wartość całkowitego przyspieszenia z odjętym 1 g grawitacji, więc w spoczynku jest bliska zeru |
| gyro_x | °/s | Liczby całkowite | Prędkość obrotowa wokół osi X |
| gyro_y | °/s | Liczby całkowite | Prędkość obrotowa wokół osi Y |
| gyro_z | °/s | Liczby całkowite | Prędkość obrotowa wokół osi Z |
| Board temp(C) | °C | 2 miejsca po przecinku | Temperatura czujnika, w co 50. wierszu, a w wierszach pośrednich puste |
| pitch | stopnie | 2 miejsca po przecinku | Kąt położenia, śledzony przez żyroskop od zera na wyrzutni |
| roll | stopnie | 2 miejsca po przecinku | Kąt położenia, śledzony przez żyroskop od zera na wyrzutni |
| yaw | stopnie | 2 miejsca po przecinku | Kąt położenia, śledzony przez żyroskop od zera na wyrzutni |
| tilt | stopnie | 2 miejsca po przecinku | Kąt odchylenia od pionu |
| Pressure(hPa) | hPa | 6 miejsc po przecinku | Ciśnienie powietrza odpowiadające przetworzonej wysokości, obliczone według atmosfery wzorcowej. Zawsze w CSV z zapisu ACLZ; w CSV zapisanym przez Nano tylko przy include_pressure ustawionym na 1 |
| Raw altitude(m) | m | 3 miejsca po przecinku | Wysokość nad wyrzutnią dokładnie taka, jaką zmierzył barometr, przed jakimkolwiek przetwarzaniem. Tylko w CSV z zapisów ACLZ |
- Czas jest liczony od oderwania. Nano zachowuje sekundy sprzed potwierdzenia startu, więc pierwsze wiersze mają ujemne czasy: 5 sekund z pełną częstotliwością i jeszcze 3 sekundy wcześniej z częstotliwością 50 Hz w zapisie ACLZ lub 20 Hz w CSV.
- Czasy są zapisywane z dokładnością do dwóch miejsc po przecinku milisekundy, z własnego zegara czujnika, więc wiersze są równomiernie rozłożone nawet przy 833 Hz.
- Przy włączonym trybie hybrydowym opadanie jest zapisywane z niższą częstotliwością, więc odstępy między wierszami się zmieniają. Zawsze korzystaj z kolumny czasu zamiast liczyć wiersze.
- Osie przyspieszenia i żyroskopu to własne osie płytki, które względem rakiety ustawiają się zgodnie z orientacją.
- Każdy wiersz danych kończy się przecinkiem, więc ścisły parser zobaczy na końcu każdego wiersza jedno puste pole.
Altitude i Raw altitude mają to samo zero, więc możesz narysować jedną względem drugiej i zobaczyć dokładnie, co zmieniło przetwarzanie. Przez większość lotu obie się pokrywają, a rozchodzą się tylko tam, gdzie start, ładunek wyrzucający lub skok ciśnienia zakłóciły barometr.
Nazwy kolumn
Wiersz nazw kolumn w każdym przypadku, dokładnie tak, jak się pojawia:
CSV z zapisu ACLZ (Rev 4 i nowsze) 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 zapisany przez Nano (Rev 4 i nowsze; Pressure(hPa) tylko z 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 z zapisu ACLZ (Rev 1 do 3) Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C),Raw altitude(m) CSV zapisany przez Nano (Rev 1 do 3) Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C)
Zapisy ACLZ ze starszego oprogramowania, powstałe przed dodaniem kolumny surowej wysokości, rozpakowują się bez niej.
Płytki w rewizjach 1 do 3
Płytki bez czujnika ruchu używają tego samego pliku w tym samym układzie, tylko prostszego. Brak kolumn ruchu, a nagłówek nie ma statystyk ruchu po prawej stronie. Kolumna Pressure(hPa) jest w obu formatach trzecia, zaraz po Altitude, a CSV z zapisu ACLZ dodaje na końcu Raw altitude(m). Wszystko inne na tej stronie obowiązuje tak samo.