add framed binary telemetry transport

This commit is contained in:
Jay
2026-08-17 11:13:53 -04:00
parent a5c3087ee4
commit aceaa2b270
13 changed files with 1320 additions and 110 deletions
+26 -4
View File
@@ -31,6 +31,11 @@ coefficients:
| Y | -4.400892 | 259.825135 | 3.848742 |
| Z | +11.776132 | 245.755573 | 4.069084 |
The retained digits make the firmware calculation reproducible; they are not a
claim of sub-count measurement accuracy. Independent face selection changed the
derived values by up to about 0.03 counts, and repositioning changed a face mean
by about one count.
Firmware converts a mapped raw value to integer milligravity with:
```text
@@ -52,14 +57,25 @@ The central five thousand samples of the flat stationary interval produced:
| Z | -7.0238 | 10.4259 |
The instructed positive motion was top/USB-edge lift for +X, left-edge lift for
+Y, and counterclockwise rotation viewed from the cover for +Z. Every outward
stroke was positive on its intended gyro channel, and every return stroke was
negative. Axis assignment and polarity are therefore confirmed.
+Y, and counterclockwise rotation viewed from the cover for +Z. Accelerometer
tilt kinematics independently confirmed X and Y polarity. Rotation around Z while
flat is rotation around gravity, so the accelerometer cannot independently check
that sign. Z polarity follows from the right-handed enclosure frame, the
right-handed L3G4200D frame, the identity gyro mapping, and the verified X/Y
polarities. Axis assignment and polarity are therefore confirmed.
Firmware subtracts the measured zero-rate bias and converts with the nominal
L3G4200D +/-500 dps scale of 17.5 mdps/LSB. Gyro scale itself was not measured
because no controlled angular-rate reference was available.
The compile-time bias is only an initial correction. Twelve quiet stretches in
this session showed real zero-rate wander of roughly 50 mdps on X/Z and 72 mdps
on Y; the separate smoke capture differed by up to 63 mdps. That is enough to
accumulate several degrees per minute if integrated. Runtime re-zeroing during a
verified stationary interval is required before fusion, heading integration, or
turn counting. Raw gyro counts therefore remain authoritative in the binary
record.
## Freshness under motion
Using gyro magnitude greater than 500 counts from stationary bias as a
@@ -86,4 +102,10 @@ and checked with a 3,814-record flat smoke capture:
- Mean bias-corrected gyro: (+25.4, -62.9, -54.8) mdps
The small residual horizontal acceleration is consistent with the enclosure not
being perfectly level. The largest residual gyro mean is 0.063 dps.
being perfectly level. The largest residual gyro mean is 0.063 dps, which is
evidence of the fixed-bias limitation described above rather than a long-term
heading guarantee.
The two floating-point startup metadata lines were subsequently observed after a
live device reset. They rendered the intended float32 calibration values before
the binary stream began.