X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=doc%2Ftelemetry.xsl;h=2e0b3ea1e9b22d8f452b125725749501cf1cf1fb;hp=a0b9f6e77d8b5accb4bbed9e45543de1f8fc39b5;hb=4862bec43b29264c361950700f935604f41b840b;hpb=a08173197d5533ecb395102ed34e751135660d06 diff --git a/doc/telemetry.xsl b/doc/telemetry.xsl index a0b9f6e7..2e0b3ea1 100644 --- a/doc/telemetry.xsl +++ b/doc/telemetry.xsl @@ -1,5 +1,5 @@ -
@@ -57,8 +57,10 @@
Packet Formats - This section first defines the packet header common to all packets - and then the per-packet data layout. + + This section first defines the packet header common to all packets + and then the per-packet data layout. +
Packet Header @@ -108,7 +110,7 @@
- Sensor Data + TeleMetrum v1.x, TeleMini and TeleNano Sensor Data @@ -122,7 +124,7 @@
0x01 - TeleMetrum Sensor Data + TeleMetrum v1.x Sensor Data 0x02 @@ -136,7 +138,7 @@ - TeleMetrum, TeleMini and TeleNano share this same packet + TeleMetrum v1.x, TeleMini and TeleNano share this same packet format for sensor data. Each uses a distinct packet type so that the receiver knows which data values are valid and which are undefined. @@ -211,6 +213,316 @@
+
+ TeleMega Sensor Data + + + + + + + Type + Description + + + + + 0x08 + TeleMega IMU Sensor Data + + + 0x09 + TeleMega Kalman and Voltage Data + + + + + + TeleMega has a lot of sensors, and so it splits the sensor + data into two packets. The raw IMU data are sent more often; + the voltage values don't change very fast, and the Kalman + values can be reconstructed from the IMU data. + + + IMU Sensor Data packets are transmitted once per second on the + ground, 10 times per second during ascent and once per second + during descent and landing + + + Kalman and Voltage Data packets are transmitted once per second on the + ground, 5 times per second during ascent and once per second + during descent and landing + + + The high-g accelerometer is reported separately from the data + for the 9-axis IMU (accel/gyro/mag). The 9-axis IMU is mounted + so that the X axis is "across" the board (along the short + axis0, the Y axis is "along" the board (along the long axis, + with the high-g accelerometer) and the Z axis is "through" the + board (perpendicular to the board). Rotation measurements are + around the respective axis, so Y rotation measures the spin + rate of the rocket while X and Z rotation measure the tilt + rate. + + + The overall tilt angle of the rocket is computed by first + measuring the orientation of the rocket on the pad using the 3 + axis accelerometer, and then integrating the overall tilt rate + from the 3 axis gyroscope to compute the total orientation + change of the airframe since liftoff. + + + TeleMega IMU Sensor Packet Contents + + + + + + + + Offset + Data Type + Name + Description + + + + + 5uint8_torientAngle from vertical in degrees + + + 6int16_taccelHigh G accelerometer + + + 8int32_tprespressure (Pa * 10) + + + 12int16_ttemptemperature (°C * 100) + + + 14int16_taccel_xX axis acceleration (across) + + + 16int16_taccel_yY axis acceleration (along) + + + 18int16_taccel_zZ axis acceleration (through) + + + 20int16_tgyro_xX axis rotation (across) + + + 22int16_tgyro_yY axis rotation (along) + + + 24int16_tgyro_zZ axis rotation (through) + + + 26int16_tmag_xX field strength (across) + + + 28int16_tmag_yY field strength (along) + + + 30int16_tmag_zZ field strength (through) + + + 32 + + + +
+ + TeleMega Kalman and Voltage Data Packet Contents + + + + + + + + Offset + Data Type + Name + Description + + + + + 5uint8_tstateFlight state + + + 6int16_tv_battbattery voltage + + + 8int16_tv_pyropyro battery voltage + + + 10int8_t[6]sensepyro continuity sense + + + 16int32_tground_presAverage barometer reading on ground + + + 20int16_tground_accelAverage accelerometer reading on ground + + + 22int16_taccel_plus_gAccel calibration at +1g + + + 24int16_taccel_minus_gAccel calibration at -1g + + + 26int16_taccelerationm/s² * 16 + + + 28int16_tspeedm/s * 16 + + + 30int16_theightm + + + 32 + + + +
+
+
+ TeleMetrum v2 Sensor Data + + + + + + + Type + Description + + + + + 0x0A + TeleMetrum v2 Sensor Data + + + 0x0B + TeleMetrum v2 Calibration Data + + + + + + TeleMetrum v2 has higher resolution barometric data than + TeleMetrum v1, and so the constant calibration data is + split out into a separate packet. + + + TeleMetrum v2 Sensor Data packets are transmitted once per second on the + ground, 10 times per second during ascent and once per second + during descent and landing + + + TeleMetrum v2 Calibration Data packets are always transmitted once per second. + + + TeleMetrum v2 Sensor Packet Contents + + + + + + + + Offset + Data Type + Name + Description + + + + + 5uint8_tstateFlight state + + + 6int16_taccelaccelerometer + + + 8int32_tprespressure sensor (Pa * 10) + + + 12int16_ttemptemperature sensor (°C * 100) + + + + 14int16_taccelerationm/s² * 16 + + + 16int16_tspeedm/s * 16 + + + 18int16_theightm + + + + 20int16_tv_battbattery voltage + + + 22int16_tsense_ddrogue continuity sense + + + 24int16_tsense_mmain continuity sense + + + 26pad[6]pad bytes + + + 32 + + + +
+ + TeleMetrum v2 Calibration Data Packet Contents + + + + + + + + Offset + Data Type + Name + Description + + + + + 5pad[3]pad bytes + + + 8int32_tground_presAverage barometer reading on ground + + + 12int16_tground_accelAverage accelerometer reading on ground + + + 14int16_taccel_plus_gAccel calibration at +1g + + + 16int16_taccel_minus_gAccel calibration at -1g + + + 18pad[14]pad bytes + + + 32 + + + +
+
Configuration Data @@ -268,10 +580,15 @@ 9uint8_tconfig_minorConfig minor version - 10uint16_tmain_deployMain deploy alt in meters + 10uint16_tapogee_delay + Apogee deploy delay in seconds - 12uint32_tflight_log_maxMaximum flight log size (B) + 12uint16_tmain_deployMain deploy alt in meters + + + 14uint16_tflight_log_max + Maximum flight log size (kB) 16charcallsign[8]Radio operator identifier @@ -308,7 +625,7 @@ This packet provides all of the information available from the - Venus SkyTraq GPS receiver—position, time, speed and precision + GPS receiver—position, time, speed and precision estimates. @@ -379,10 +696,13 @@ 26uint16_tground_speedcm/s - 28uint8_tcourse/ 2 + 28int16_tclimb_ratecm/s + + + 30uint8_tcourse/ 2 - 29uint8_tunused[3] + 31uint8_tunused[1] 32 @@ -594,75 +914,186 @@
+
+ Companion Data Data + + + + + + + Type + Description + + + + + 0x07 + Companion Data Data + + + + + + When a companion board is attached to TeleMega or TeleMetrum, + it can provide telemetry data to be included in the + downlink. The companion board can provide up to 12 16-bit data + values. + + + The companion board itself specifies the transmission rate. On + the ground and during descent, that rate is limited to one + packet per second. During ascent, that rate is limited to 10 + packets per second. + + + Companion Data Contents + + + + + + + + Offset + Data Type + Name + Description + + + + + 5uint8_tboard_id + Type of companion board attached + + + 6uint8_tupdate_period + How often telemetry is sent, in 1/100ths of a second + + + 7uint8_tchannels + Number of data channels supplied + + + 8uint16_t[12]companion_data + Up to 12 channels of 16-bit companion data + + + 32 + + + +
+
Data Transmission - Altus Metrum devices use the Texas Instruments CC1111 - microcontroller which includes an integrated sub-GHz digital - transceiver. This transceiver is used to both transmit and - receive the telemetry packets. This section discusses what - modulation scheme is used and how this device is configured. + Altus Metrum devices use Texas Instruments sub-GHz digital radio + products. Ground stations use parts with HW FEC while some + flight computers perform FEC in software. TeleGPS is + transmit-only. + + Altus Metrum Radio Parts + + + + + + + Part Number + Description + Used in + + + + + CC111110mW transceiver with integrated SoC + TeleDongle v0.2, TeleBT v1.0, TeleMetrum v1.x, TeleMini + + + CC112035mW transceiver with SW FEC + TeleMetrum v2, TeleMega + + + CC120035mW transceiver with HW FEC + TeleDongle v3.0, TeleBT v3.0 + + + CC115L14mW transmitter with SW FEC + TeleGPS + + + +
Modulation Scheme Texas Instruments provides a tool for computing modulation parameters given a desired modulation format and basic bit - rate. For AltOS, the basic bit rate was specified as 38 kBaud, - resulting in the following signal parmeters: + rate. + + While we might like to use something with better low-signal + performance like BPSK, the radios we use don't support that, + but do support Gaussian frequency shift keying (GFSK). Regular + frequency shift keying (FSK) encodes the signal by switching + the carrier between two frequencies. The Gaussian version is + essentially the same, but the shift between frequencies gently + follows a gaussian curve, rather than switching + immediately. This tames the bandwidth of the signal without + affecting the ability to transmit data. + + For AltOS, there are three available bit rates, 38.4kBaud, + 9.6kBaud and 2.4kBaud resulting in the following signal + parmeters: + + Modulation Scheme - - - + + + - Parameter - Value - Description + Rate + Deviation + Receiver Bandwidth - Modulation - GFSK - Gaussian Frequency Shift Keying + 38.4kBaud + 20.5kHz + 100kHz - Deviation - 20.507812 kHz - Frequency modulation + 9.6kBaud + 5.125kHz + 25kHz - Data rate - 38.360596 kBaud - Raw bit rate - - - RX Filter Bandwidth - 93.75 kHz - Receiver Band pass filter bandwidth - - - IF Frequency - 140.62 kHz - Receiver intermediate frequency + 2.4kBaud + 1.5kHz + 5kHz
+ Error Correction - The cc1111 provides forward error correction in hardware, - which AltOS uses to improve reception of weak signals. The - overall effect of this is to halve the available bandwidth for - data from 38 kBaud to 19 kBaud. + The cc1111 and cc1200 provide forward error correction in + hardware; on the cc1120 and cc115l that's done in + software. AltOS uses this to improve reception of weak + signals. As it's a rate 1/2 encoding, each bit of data takes + two bits when transmitted, so the effective data rate is half + of the raw transmitted bit rate. - Error Correction + Error Correction @@ -677,8 +1108,8 @@ Error Correction - Convolutional coding FEC - 1/2 code, constraint length m=4 + Convolutional coding + 1/2 rate, constraint length m=4 Interleaving @@ -696,6 +1127,75 @@
+
+ TeleDongle packet format + + TeleDongle does not do any interpretation of the packet data, + instead it is configured to receive packets of a specified + length (32 bytes in this case). For each received packet, + TeleDongle produces a single line of text. This line starts with + the string "TELEM " and is followed by a list of hexadecimal + encoded bytes. + + TELEM 224f01080b05765e00701f1a1bbeb8d7b60b070605140c000600000000000000003fa988 + + The hexadecimal encoded string of bytes contains a length byte, + the packet data, two bytes added by the cc1111 radio receiver + hardware and finally a checksum so that the host software can + validate that the line was transmitted without any errors. + + + Packet Format + + + + + + + + Offset + Name + Example + Description + + + + + 0 + length + 22 + Total length of data bytes in the line. Note that + this includes the added RSSI and status bytes + + + 1 ·· length-3 + packet + 4f ·· 00 + Bytes of actual packet data + + + length-2 + rssi + 3f + Received signal strength. dBm = rssi / 2 - 74 + + + length-1 + lqi + a9 + Link Quality Indicator and CRC status. Bit 7 + is set when the CRC is correct + + + length + checksum + 88 + (0x5a + sum(bytes 1 ·· length-1)) % 256 + + + +
+
History and Motivation