Skip to content

Sensor fusion: Euler↔quaternion conventions, calibration guidance, MMR mounting note - #13

Merged
lkasso merged 1 commit into
mainfrom
fusion-orientation-notes
Jul 28, 2026
Merged

Sensor fusion: Euler↔quaternion conventions, calibration guidance, MMR mounting note#13
lkasso merged 1 commit into
mainfrom
fusion-orientation-notes

Conversation

@lkasso

@lkasso lkasso commented Jul 28, 2026

Copy link
Copy Markdown
Member

Field-verified companions to the app's sensor-fusion polish (MetaWear-API-Swift PR #25), in the same spirit as the MMS NAND logging semantics section:

  • Euler ↔ Quaternion Relationship (Field-Verified) — the firmware's Euler labeling vs its own quaternion: heading is classic ZYX yaw, but pitch is the negated classic roll and roll the negated classic pitch. Validated by paired captures of both channels at the same static poses (< 1° agreement on all three angles). Anyone post-processing quaternion logs into Euler needs this mapping.
  • Euler register row — observed ranges (heading 0–360, pitch ±180, roll ±90) and that yaw duplicates heading sample-for-sample on fw 1.7.x.
  • Calibration — per-sensor calibration motions (gyro: still; accel: rest on each face; mag: figure-8 away from metal), and realistic expectations: accuracy is a live trust score, the magnetometer gets demoted by field distortion constantly indoors, and medium (2) is the record-worthy threshold.
  • MMR mounting note — the IMU's X/Y axes are rotated 90° about the face normal relative to the case; recommends tare-based rendering for case-relative visualization.

🤖 Generated with Claude Code

Field-verified findings from the MetaWear app's sensor-fusion work
(paired Euler-vs-quaternion captures on fw 1.7.x NDoF, all angles
agreeing under 1 degree at two static poses):

- Euler <-> quaternion relationship: heading is the classic ZYX yaw,
  but the firmware's pitch is the NEGATED classic roll about x and
  its roll the NEGATED classic pitch about y. Textbook formulas put
  tilts in the wrong columns with the wrong signs.
- Observed Euler ranges (heading 0-360, pitch +/-180, roll +/-90)
  and the fact that yaw duplicates heading sample-for-sample.
- Calibration: per-sensor motions (gyro still, accel on each face,
  mag figure-8 away from metal), accuracy as a live trust score,
  medium (2) as the record-worthy threshold - permanent all-high is
  not realistic indoors.
- MMR mounting: IMU X/Y rotated 90 degrees about the face normal
  relative to the case; recommend tare-based rendering.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@lkasso
lkasso merged commit 4f31b28 into main Jul 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant