Turning a Gyroscope's Raw dps Reading into What a Fusion Filter Expects
A MEMS gyroscope hands over degrees per second. Its configuration register offers a short menu of full-scale ranges — commonly ±125, ±250, ±500, ±1 000 and ±2 000 dps — and every sensitivity, bias and noise figure in the datasheet is quoted against whichever one is selected. Then the sample reaches a Madgwick, Mahony or extended-Kalman implementation, all of which integrate a quaternion in radians. Nothing warns you when the two halves disagree: the attitude estimate just settles somewhere wrong by a factor of about fifty-seven.
What the Range Setting Really Costs
The Register Speaks dps, the Quaternion Speaks Radians
Every Doubling of Range Halves the Resolution
Bias Is the Error That Never Averages Out
Noise Density Becomes an Angle Random Walk
Walking an IMU Datasheet Line by Line
The order below matches how the figures come up while a part is characterised on the bench.
Start from the range you actually configured
Enter the full scale the part is running at, not the widest it supports. The field opens at 1 and recalculates on each keystroke, so stepping through ±250, ±500 and ±2 000 to watch the ceiling move takes seconds.
Convert the resolution, not only the maximum
One count at ±2 000 dps is 0.061 dps, landing at 0.001065 rad/s. That floor tells you whether a slow platform rotation is even visible above quantisation, before the estimator gets blamed for feeling sluggish.
Put bias and noise into the filter's own units
Process-noise and bias-state parameters inside a Kalman implementation are all radians per second. Running the datasheet's bias stability and noise density through the same step stops those constants from being guesswork.
Go back the other way when a limit arrives in radians
Flight-control and robotics stacks publish rate limits in radians per second; the swap arrows turn one into the dps a register setting is chosen from, and typing into the second box does the same since both fields accept input.
Full-Scale Ranges, Counts per Degree and Noise on a 16-Bit Gyro
Sensitivity assumes a signed 16-bit output spanning the stated range, which is what most consumer and industrial parts deliver. The last column pairs representative noise densities with the angle random walk each implies once integrated.
| Full-scale range | Counts per deg/s | One count | Range in rad/s | Noise density → random walk |
|---|---|---|---|---|
| ±125 dps | 262.1 | 0.0038 °/s | 2.181662 | 0.004 °/s/√Hz → 0.24 °/√h |
| ±250 dps | 131.1 | 0.0076 °/s | 4.363323 | 0.005 °/s/√Hz → 0.30 °/√h |
| ±500 dps | 65.5 | 0.0153 °/s | 8.726646 | 0.007 °/s/√Hz → 0.42 °/√h |
| ±1 000 dps | 32.8 | 0.0305 °/s | 17.453293 | 0.010 °/s/√Hz → 0.60 °/√h |
| ±2 000 dps | 16.4 | 0.0610 °/s | 34.906585 | 0.014 °/s/√Hz → 0.84 °/√h |
Those last two columns are why range selection is a real design decision. A pedestrian-navigation board that never exceeds a brisk turn of the wrist is better served at ±250 dps, where one count still resolves under a hundredth of a degree per second. An acrobatic quadrotor passes 800 dps during a flip and has to sit at ±1 000 or wider, accepting the coarser floor as the price of never clipping.
Range Ceilings Checked Against a Filter's Input Limits
Seeing the saturation point in radians shows whether a rate limiter inside the estimator clamps before the sensor itself ever does.
Bias and Noise Figures Carried Across Together
One step serves the tiny quantities — offset drift, noise density — as well as the ceiling, keeping a tuning table in a single unit system.
Scale Constants Pasted Into a Driver Header
Copying yields bare digits with no unit and no spacing, dropping straight into a scale-factor constant or a per-unit calibration record.
Questions from the IMU Bench
Which full-scale range should a gyroscope be configured for?
Pick the narrowest range that comfortably clears the fastest rotation the platform will see, then leave margin for knocks. A phone or head tracker rarely exceeds a couple of hundred degrees per second, so ±250 or ±500 dps is generous; a handheld gimbal wants ±500 to ±1 000; a racing quadrotor needs ±2 000, since a flip and a crash both push past a thousand. Too wide costs resolution the filter cannot recover; too narrow costs clipped samples, which is far worse.
Why do sensor-fusion libraries insist on radians per second?
Because the mathematics underneath is written in radians and nothing else. The quaternion derivative is half the quaternion multiplied by the angular-rate vector; the small-angle approximations in the propagation step rely on sin θ ≈ θ, true only for radians; every trigonometric call takes radians. Rather than bury a conversion at each point, libraries push the requirement to their boundary. The tell-tale sign it was skipped is an estimate that reacts but badly under-responds.
How much heading error does gyro bias drift actually cause?
Bias integrates directly into angle, so error grows in proportion to elapsed time. An uncorrected 0.01 dps offset produces 0.6° of false heading after one minute and 36° after an hour — datasheets often print the same quantity as 36 °/h to make that obvious. Consumer parts have raw turn-on offsets orders of magnitude larger, so any practical system estimates bias online: hold still, average, subtract, re-estimate whenever stillness returns. Temperature is the other half, since the offset shifts with die temperature.
What happens to the attitude estimate when a fast rotation saturates the range?
The output sticks at the positive or negative extreme while the true rate lies beyond it, and every clipped sample is rotation the integrator never sees. Lost angle is roughly the shortfall times the duration: a body turning at 1 400 dps while the part is set to ±1 000 is short by 400 dps, so a 150 ms burst leaves 60° simply missing. The damage is silent, since a saturated reading looks plausible. Flag samples sitting exactly at the extreme code.
How does a noise density in mdps per root hertz translate into drift?
Rate noise is broadband, so how much reaches your signal depends on bandwidth kept: effective noise is the density times the square root of that bandwidth. Integrating white rate noise gives a random walk in angle, uncertainty growing with the square root of elapsed time. Neatly, 0.005 °/s/√Hz equals 0.30 °/√h, since an hour holds 3 600 seconds and √3 600 is 60. It sits underneath the bias problem, which grows linearly and usually dominates first.
No comments yet. Be the first to comment!