Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

Open experiment panel in a new tab

Download reproduction source

Background and reading guide

Background Gyroscope angular rate and mean/variance.

Hands-on · Follow the worked examples and checks under the stated conditions.

Browser experiment conditions

Change constant offset, white-noise standard deviation and record duration above. The experiment replays the same saved synthetic CSV (100 Hz, 60,000 samples, seed 7), using y = offset + (saved_y - 0.01) × (std / 0.002). Shorter durations select the beginning of that same record; no new random draw occurs. Block sizes for each 10-second duration step are frozen from the baseline analysis environment to avoid NumPy-version rounding differences. Defaults reproduce the saved results below. These are synthetic data, not hardware measurements or device benchmarks.

The upper chart shows raw samples from the first 10 seconds (endpoint excluded). The lower chart shows non-overlapping Allan deviation on log–log axes, using all selected samples. Mean and sample standard deviation also use all selected samples. Sampling stays at 100 Hz; the noise control is per-sample angular-rate standard deviation, not noise density. The data table's adjacent_pairs series gives counts for each averaging time τ. At least ten blocks are used, but long τ values with few pairs provide weak evidence of long-term stability.

Presets isolate offset changes, doubled noise amplitude and a 10-second record. A constant offset changes the mean and cancels from adjacent-mean differences. No temperature changes, drift, random walk or filtering are added. This browser experiment does not import your own CSV files.

Download the same entrypoint, analysis kernel and input CSV. Place all three files together for optional local reproduction. Browser execution requires no installation; local instructions below are optional.

A nonzero stationary IMU output is not all random noise. Separate average offset, short-term scatter and stability across averaging times. This article analyzes one gyro axis with a CSV tool validated on synthetic data of known properties.

Establish stationary conditions and valid time

Fix the IMU and record warm-up, output rate, filtering, temperature, duration and units. Desk vibration, cable forces or changing temperature invalidate a sensor-noise-only interpretation. Stationary accelerometers include gravity, so do not transfer the gyro's near-zero expectation to acceleration.

Mean angular rate may contain more than bias, including Earth rotation when sensitivity and installation make it relevant. The ADI evaluation guide motivates disturbance-free, temperature-controlled recordings; its device-specific acquisition settings are not universal IMU requirements.

CSV and reproduction

Use columns time_s,gyro_rad_s, in seconds and rad/s. Download the analysis script:

python3 imu_noise.py --synthetic
python3 imu_noise.py stationary.csv

The second line is an alternative invocation for your own file. Synthetic mode was executed with Python 3.12.3, NumPy 1.26.4 and Matplotlib 3.6.3. Inputs need at least 100 finite samples, strictly increasing times and interval deviations no greater than 1% of the median interval. That 1% is this exercise's validation rule, not an IMU specification.

Do not close gaps and pretend sampling was uniform. Split continuous intervals first. Resampling also changes noise through interpolation/filtering and should be documented.

Mean and standard deviation

Synthetic inputs contain 60,000 points over 600 s at 100 Hz, seed 7: a constant 0.01 rad/s offset plus independent Gaussian noise with 0.002 rad/s standard deviation. Results are mean 0.009991 rad/s and sample standard deviation 0.001994 rad/s. Download the input and statistics.

The mean characterizes this interval, not every temperature or power cycle. Standard deviation alone does not adequately separate slow changes from fast noise. Vary the averaging time next.

Allan deviation across averaging times

Split angular rates into K non-overlapping blocks of m samples, with block means ȳ. The implemented statistic is:

\sigma_A(\tau)=\sqrt{\frac{1}{2(K-1)}\sum_{j=1}^{K-1}(\bar y_{j+1}-\bar y_j)^2},\qquad \tau=m\Delta t

Units remain rad/s. For each m, trailing samples that cannot form a complete block are discarded. Differencing adjacent means cancels a constant offset, so Allan deviation alone cannot reveal its magnitude. NIST SP 1065 explains the definition and overlapping variant. Although that reference concerns frequency stability, this code applies the adjacent-mean statistic to gyro angular rates.

Read the synthetic result

Diagram 1 · Use the button to switch views
Non-overlapping Allan deviation of synthetic white gyro noise, in rad/s versus averaging time in seconds.

For independent white noise, averaging m samples reduces scatter approximately as 1/√m. The plotted theoretical curve is 0.002/√(100τ). Long averaging times have fewer blocks and more uncertain estimates. The Allan CSV includes adjacent_pairs. At least ten blocks are required, but roughly nine adjacent pairs at the end still provide weak evidence.

No bias instability or random walk was added. A falling curve says nothing about long-term stability of a real IMU. Identifying its minimum as bias instability also requires checking the noise model, slope and convention-dependent coefficient.

Record enough conditions to compare

Save model/firmware, ODR, bandwidth, units, temperature range, total duration, missing-data rate, axis, mean, standard deviation and pair counts for each τ. ODR is the sensor's internal output data rate, not host polling frequency. Filtering changes curves even on identical hardware. Continue with sampling and aliasing to understand why faster polling alone creates no new information.

Related reading

Distinguish ODR, polling rate and bandwidth.Sampling and aliasing: why faster polling is not enoughExplore another aspect of this fieldRobot power design — diagnosing computer resets during motor startupExplore another aspect of this fieldEdge AI Accelerators — Coral, Jetson, Movidius