IMU and seastate domain reference — quaternions, reference frames, heave estimation, significant wave height, motion metrics that matter for sailing performance analysis. TRIGGER when the user asks what a metric means, why we capture a particular report, how seastate is characterized, or how IMU motion relates to polar performance. DO NOT trigger for BNO085 register-level or install questions (use /calibrate).
The point of this project is not "get IMU data". It's to answer: how does sea state affect boat performance, and how do we sail differently in 2 m short-chop versus 2 m long swell at the same TWS?
This skill is the glossary and the "why" for the choices in firmware.
See CLAUDE.md for the short version. Critical fact: we publish boat-frame data. Sensor, mount, boat, world are four distinct frames and mixing them is the single biggest source of silent bugs in IMU projects.
(w, x, y, z) where w is the scalar partq1 * q2 composes rotations; q^-1 = (w, -x, -y, -z) for unit qv: v' = q * v * q^-1 (treating v as (0, vx, vy, vz))The BNO085 gives us a quaternion directly. That's the whole reason to use this chip instead of integrating gyro by hand.
BNO085 exposes several fusion reports:
| Report | Uses mag? | Absolute yaw? | Drift |
|---|---|---|---|
| Rotation Vector | yes | yes (north-referenced) | low if mag is good |
| Game Rotation Vector | no | no (arbitrary yaw origin) | slow yaw drift |
| Geomagnetic RV | yes, lower rate | yes | medium |
A racing sailboat has a carbon mast, stainless rigging, and often a diesel. Magnetic heading from a hull-mounted IMU is unusable. We get heading from B&G via helmlog, not from this device. Game Rotation Vector gives us absolute roll and pitch (gravity-referenced) and relative yaw — which is all we need for motion analysis. Heading for correlating to TWA/VMG comes from helmlog's instrument feed.
| Channel | What it's for |
|---|---|
| Quaternion (game RV) | Orientation, roll/pitch, attitude rate of change |
| Linear acceleration | Gravity-removed — direct input for heave integration |
| Gyro | Rate of turn, heel rate, pitch rate — maneuver detection |
| Raw accel | Sanity + debug, not used in analysis |
Heave = vertical displacement of a point on the boat due to wave motion. You cannot get heave directly from an accelerometer. You get vertical acceleration. Heave is the double integral of that — which means any DC offset or low-frequency bias becomes a runaway quadratic drift.
The classical fix is a band-pass filter before integration. Sea state lives in ~0.05–0.5 Hz (2–20 s wave period). Everything below is boat trim and SNTP drift; everything above is rig vibration and crew bouncing. The