The Nano V1 altimeter manual
This manual details all the features and operation of our tiny Nano V1 rocket altimeter

CSV Flight log format

PDF

Every flight is saved to the Nano's drive as a flight log named flightlog<tag>-<n>.aclz, with a matching flightinfo<tag>-<n>.html page beside it summarising the flight. The tag is the last four characters of the Nano's serial number and n is the flight number.

By default the log is an ACLZ file, the Nano's own compressed format. If you set log_format to 0 in the settings it is a CSV file instead. This page describes both, and the columns you get from each.

Tip
The easiest way to look at a flight is to upload it to the Altimeter Cloud, which lays it out in clear charts and figures. This page is for anyone who wants to work with the raw data directly. See the Altimeter Cloud page.

Why ACLZ is the default

ACLZ records exactly the same flight as a CSV, to the same precision, in roughly a fifteenth of the space, and we recommend leaving it as the default.

  • Longer flights. Up to 38,000 samples in one log, against 22,000 for a CSV (20,000 with include_pressure). At 417 Hz that is the difference between capturing a long descent in full and running out of log.
  • More flights on the drive. A typical flight is a few tens of kilobytes as ACLZ, so the drive holds the full 39 flights the Nano keeps. As CSV, around ten typical flights fill the drive, and a full-length CSV log takes most of it on its own.
  • More data. Every ACLZ log also keeps the raw altitude, exactly as the barometer measured it before any processing, and the pressure. So you can always see what TrueFuse and TruePath did, and the Altimeter Cloud can chart the raw trace beside the processed one.
  • Nothing is lost in the compression. The CSV you download from the Altimeter Cloud is exactly the CSV the Nano would have written, digit for digit.
  • Signed twice. The Nano signs the file itself and the CSV it expands to, so a CSV downloaded from the Altimeter Cloud can still be verified on its own.
  • Quicker to handle. Small files copy and upload faster, which you notice most when uploading straight from the Nano over USB.

You can't open an ACLZ file in a spreadsheet. Upload it to the Altimeter Cloud (free, with no account needed) to see the charts and download a CSV, or open the flight info page beside it for a quick look straight off the drive. Only choose CSV if you need to open logs straight off the drive in a spreadsheet and your flights are short enough to fit.

ACLZ (default)CSV
Samples per flightUp to 38,000Up to 22,000 (20,000 with include_pressure)
Size of a typical flightA few tens of KBA few hundred KB
Raw altitude columnYesNo
Pressure columnYesRev 1 to 3 always; Rev 4 and later only with include_pressure
Opens in a spreadsheetNo: upload it, then download a CSVYes
SignatureEd25519, over the file and over the CSV it expands toEd25519, over the file

How ACLZ works inside, and how to read it with your own software, is covered in the software manual, with a reference converter.

How a CSV log is laid out

A CSV, whether written by the Nano or downloaded from the Altimeter Cloud, has three parts in this order: a block of header rows with a summary of the flight and the settings it was recorded with, a single blank row, then a row of column names starting with Time(ms), followed by one row per recorded sample.

If you are writing a parser, find the row that starts with Time(ms) rather than counting rows, and treat everything from there on as the data. The header is laid out as label and value pairs side by side, so it reads tidily in a spreadsheet: a pair on the left, a pair in the middle and, on Revision 4 and later, a further pair on the right with the motion figures.

The header

The header carries everything you need to understand the flight without reading a single data row.

  • Flight summary. The apogee and its time, the landing height and time, the maximum upward velocity, the landing velocity and the average samples per second.
  • Identification. The device tag, all three competitor tags and the serial number.
  • Conditions and settings. The board temperature and battery voltage at the start and end of the flight, the firmware version, the board revision and the individual settings flown, such as sample speed, hybrid mode, orientation, launch protection, sample ratio and recording stop.
  • Processing. Which versions of TrueFuse and TruePath processed the flight and whether TrueFuse was applied, how the launch was confirmed, and how lift-off time was set.
  • Revision 4 and later. The rail angle, the dominant axis, the calibration offsets and quality, the sensor sync offset and any sensor saturation. The right-hand side adds motion statistics: burnout and ejection times, burnout and descent velocities, the maximum and average accelerations during the climb, the burn and the descent, and the launch pitch, roll, yaw and tilt.
  • Recovered flights carry a Recovered,1 row.
  • Adjusted log reads "no" for an original flight, and shows if the log has since been recalculated on the Altimeter Cloud with a different pressure or temperature.

The Verification hash field holds the log's Ed25519 digital signature, which lets anyone confirm the file hasn't been altered. Logs from firmware before 1.52 carry an HMAC-SHA256 hash here instead. See flight log verification.

The settings string

A single Settings string field packs the configuration used for the flight into one line. The configurable keys match the options on the settings page.

KeyHolds
fpSea level pressure used to work out height (hPa), fixed at 1013.25
ftTemperature used (°C), fixed at 15
utWhether sensor temperature was used, always 0
ssSample speed (Hz)
srSample ratio
msMaximum samples
ldLaunch detect height (m)
lpLaunch protection (mG)
slStart-up lock
rsRecording stop
mpMaintain power
hmHybrid mode
orOrientation
seSync enable (Rev 4 and later)
os, ii, kfInternal pressure handling settings (oversampling and filter)
rcpThe ground reference captured at launch
rmiLaunch time, in milliseconds
cgx, cgy, cgzStored gyro calibration offsets (Rev 4 and later)
cax, cay, cazStored accelerometer calibration offsets (Rev 4 and later)
zbbInternal test flag, always 0 on a normal flight
sda, sdm, sdn, sdsStart-up ground reference: the trimmed average and median altitude of the pad readings, how many were taken, and their spread (cm)
sbf, sbtThe pressure sensor's first reading after power-on and its reading at the end of its warm-up (hPa)
Important
Don't edit a flight log if you want to keep it valid. The signature covers every byte of the file, so changing anything at all, even a single number or an added space, means it no longer matches, and the Altimeter Cloud won't accept it. If you want to work with the data, copy the file first, edit the copy and keep the original safe.

The data columns

After the blank row and the column names, each row is one recorded sample, in this order. The motion columns (acceleration, gyro, pitch, roll, yaw and tilt) are on Revision 4 and later boards.

ColumnUnitsFormatWhat it is
Time(ms)ms2 decimalsTime from lift-off, with lift-off as zero
Altitude(m)m3 decimalsHeight above the pad, after TrueFuse and TruePath
Velocity(m/s)m/s2 decimalsVertical speed, worked out from the processed altitude
acceleration_x(mG)mGWhole numbersAcceleration along the board's X axis
acceleration_y(mG)mGWhole numbersAcceleration along the Y axis
acceleration_z(mG)mGWhole numbersAcceleration along the Z axis
acceleration_total(mG)mG1 decimalOverall acceleration magnitude with the 1 g of gravity taken out, so it sits near zero at rest
gyro_x°/sWhole numbersRotation rate about the X axis
gyro_y°/sWhole numbersRotation rate about the Y axis
gyro_z°/sWhole numbersRotation rate about the Z axis
Board temp(C)°C2 decimalsSensor temperature, on every 50th row and blank on the rows between
pitchdegrees2 decimalsAttitude angle, tracked by the gyro from its zero on the pad
rolldegrees2 decimalsAttitude angle, tracked by the gyro from its zero on the pad
yawdegrees2 decimalsAttitude angle, tracked by the gyro from its zero on the pad
tiltdegrees2 decimalsAngle away from vertical
Pressure(hPa)hPa6 decimalsAir pressure for the processed altitude, worked out with the standard atmosphere. Always in a CSV from an ACLZ log; in a CSV written by the Nano only with include_pressure set to 1
Raw altitude(m)m3 decimalsHeight above the pad exactly as the barometer measured it, before any processing. CSVs from ACLZ logs only
  • Time is measured from lift-off. The Nano keeps the seconds before the launch was confirmed, so the first rows have negative times: 5 seconds at the full rate, and 3 more seconds before that at 50 Hz in an ACLZ log or 20 Hz in a CSV.
  • Times are written to two decimal places of a millisecond, from the sensor's own clock, so the rows are evenly spaced even at 833 Hz.
  • With hybrid mode on, the descent is logged at a lower rate, so the spacing between rows changes. Always use the Time column rather than counting rows.
  • The acceleration and gyro axes are the board's own axes, which line up with the rocket according to the orientation.
  • Every data row ends with a trailing comma, so a strict parser will see one empty field at the end of each row.

Altitude and Raw altitude share the same zero, so you can plot one against the other and see exactly what the processing changed. The two lie on top of each other for most of the flight, and part only where the launch, an ejection charge or a pressure spike upset the barometer.

Column names

The row of column names in each case, exactly as it appears:

CSV from an ACLZ log (Rev 4 and 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 written by the Nano (Rev 4 and later; Pressure(hPa) only with 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 from an ACLZ log (Rev 1 to 3)
Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C),Raw altitude(m)

CSV written by the Nano (Rev 1 to 3)
Time(ms),Altitude(m),Pressure(hPa),Velocity(m/s),Board temp(C)

ACLZ logs from older firmware, made before the raw altitude column was added, expand without it.

Revision 1 to 3 boards

Boards without the motion sensor use the same file in the same shape, just simpler. The motion columns are absent, and the header has no motion statistics on its right-hand side. The Pressure(hPa) column sits third, straight after Altitude, in both formats, and a CSV from an ACLZ log adds Raw altitude(m) at the end. Everything else on this page applies in the same way.