Recognizing activity across IMU wearing orientations
A collar is worn the way an animal permits. Activity recognition therefore has to describe the body, not the direction in which the housing happens to hang.
How a collar is actually worn
Wearable studies usually assume a known mounting. On a cat that assumption does not survive the first afternoon. The pendant rotates around the neck, settles under the jaw, flips after grooming, and is refastened at a slightly different angle by whoever put it back on. None of this is misuse; it is the normal life of a strap on an animal that grooms and squeezes through gaps.
The consequence for the sensor is direct. Acceleration and rotation are reported in the housing’s own frame, so the constant pull of gravity lands on different axes depending on how the collar is sitting. A model reading those raw axes can encode the mounting instead of the motion, and then a collar that slid at noon looks like a change in behaviour.
Stated in household terms, this is the difference between a report about a cat and a report about a buckle. An animal that slept all afternoon should not be described as active because the housing turned, and a meal should not vanish from the day because someone refastened the strap after a bath.
Removing the wearing angle before anything is scored
Our approach treats orientation as a nuisance parameter to be removed rather than a condition to be enumerated. Over a short window the near-static component of measured acceleration is dominated by gravity, which gives an estimate of how the housing is currently oriented. Rotating the window into a shared upright frame, and rotating the angular rates with it, yields signals expressed relative to the body rather than to the housing.
A regression case makes the intent concrete. A synthetic still window whose gravity lies along a tilted vector, at (0.3, −0.4, −0.866) g, reduces to zero dynamic acceleration once the static component is removed: a motionless animal on a crooked collar reads as motionless. Superimposing a ±0.1 g alternating residual on the same tilted window returns a dynamic magnitude of 0.1 g, so genuine movement survives the correction rather than being flattened along with the tilt.
This is inference-time normalization applied before a window is scored. It reduces sensitivity to mounting angle; it is not a claim that every mounting a household can invent has been characterised, nor a substitute for training data that spans real wearing conditions.
Movement as a physical quantity, not a class score
Once orientation is removed, the residual dynamic magnitude is a physical statement about how much the body moved. We keep it that way. Movement is reported as that magnitude referred to an explicit product range of 0.30 g and bounded to the unit interval, so roughly 0.15 g of residual motion reads as the middle of the scale and anything at or beyond 0.30 g saturates it.
Keeping this quantity separate from classification matters more than it first appears. Jumping is not a higher score on a single activity axis; it is a different temporal pattern. A conflated metric invites the interpretation that a large number means an energetic behaviour, which then leaks into daily summaries as confident nonsense.
The separation also gives the system something honest to say when classification declines to commit. Movement is computed over every valid window in a recording, including the portion excluded from behaviour scoring, so a clip can carry a defensible statement about physical activity even when no behaviour label qualifies.
The jolt that created the clip
Wearable recordings are usually triggered by motion, which means the opening of almost every clip contains the event that woke the recorder. A classifier trained or evaluated on that head learns the trigger, and a household then receives a day full of spurious jumps.
The window contract is forty frames at a nominal fifty hertz—about 0.8 s of signal—advanced twenty frames at a time, and on motion-triggered recordings the first fifty frames, roughly the first second, are excluded from behaviour scoring. In a typical clip of a few hundred frames the first scored window therefore begins at frame fifty, well clear of the trigger transient, and covers the part of the recording where the animal is doing something a person would name.
Refusal as part of the contract
The more useful property of this path is what it declines to emit. Windows vote, and a bare plurality is not enough: four windows reading as eating against four reading as idle leaves the recording without a behaviour event rather than resolving the tie in favour of the more interesting answer. Confidence is checked independently of agreement, so even a unanimous set of windows sitting below the threshold produces no label.
Insufficient signal is treated the same way. A recording shorter than one window after the trigger head is removed yields no inertial answer at all, and the recording falls back to other evidence instead of extrapolating from the transient. A clip is also rejected outright when the sensor stream contains non-finite values, since a single corrupted sample can otherwise carry an unearned confidence into the day.
The design principle underneath all of this is that a wearable in a home is better trusted for saying less. A household notices a phantom jump; it rarely notices a recording that politely reported no inertial conclusion.