You ran the IMU calibration tool for your depth camera, watched the numbers scroll past, and either the save to camera failed at the end or the norm landed near 9.81 m/s² but not exactly on it. The question on the bench is simple: is this calibration good, or does the camera owe you a recalibration session? One calculation answers it. Average the accelerometer norm over your stationary recordings, compare it against local gravity, convert the residual into a tilt error, and judge that angle against your task. This guide gives you the arithmetic, the pass bands, a worked example at 9.747 m/s², and the fix path for a failed save.
What does the accelerometer norm tell you about your calibration?
The norm is the magnitude of the three accelerometer axes, computed as sqrt(ax²+ay²+az²), and for a stationary camera it should equal local gravity, about 9.81 m/s²; how close it lands measures your bias and scale errors.
A camera sitting still measures no acceleration. Its accelerometer reads the specific force that holds it up — local gravity, split across three orthogonal axes according to the camera's tilt. Tilt moves the split between axes; it does not change the vector sum. That is what makes the norm a single-number verdict on a calibration: any correct orientation adds up to g.
A gravity-norm calibration fit adjusts two terms per axis: the bias, a constant offset added to every sample, and the scale, the factor that converts raw counts into m/s². Both feed the norm, so a norm residual bounds their combined size. If your averaged norm sits at 99.4% of gravity, the combined error is no larger than roughly that fraction of g.
Quote the average of the stationary holds, never one sample. Bench-level sample noise is a few hundredths of a metre per second squared; vibration widens it. The average, printed after the last hold completes, is the verdict.
How close to 9.81 m/s² is close enough?
Take the pass line at 1% of local gravity, about ±0.098 m/s²: inside that band the worst-case gravity-direction error stays below 0.57°, which is smaller than what most vision-guidance tasks resolve, so the calibration is good and recalibration buys nothing.
The band comes from one line of arithmetic, not from a rule of thumb. A residual that behaves as a bias across the gravity direction tilts the estimated gravity vector by about r radians. At the 1% line, r = 0.0100 and the tilt is 0.0100 × 57.30 = 0.57°. Projected onto a working distance, that is 3 mm at 300 mm, 5 mm at 500 mm and 10 mm at 1,000 mm. A depth camera's own lateral noise over those distances sits on the same order, so a calibration inside 1% is not the term that limits the cell — which is exactly why recalibrating it buys nothing measurable.
The verdict bands follow directly:
| Averaged norm vs local g | Residual r | Worst-case tilt | Verdict |
|---|---|---|---|
| within 1% (±0.098 m/s²) | up to 0.010 | up to 0.57° | Ship it; recalibration buys nothing measurable |
| 1% to 3% | 0.010 to 0.030 | 0.57° to 1.7° | Recalibrate before guidance work |
| over 3% | over 0.030 | over 1.7° | Recalibrate, and look for a physical cause |
After any recalibration, hold the same poses and re-average. If the new norm still misses the 1% line, the fault is not calibration — it is the mount, vibration or heat.
Is a norm of 9.747 m/s² good enough to ship?
Yes: a norm of 9.747 m/s² sits 0.61% below standard gravity of 9.80665 m/s², which bounds the gravity-direction error at about 0.35°, or roughly 3 mm of lateral ambiguity at a 500 mm working distance.
Here is the full calculation, step by step:
- Residual: 9.80665 - 9.747 = 0.0597 m/s².
- Fraction: 0.0597 / 9.80665 = 0.0061, i.e. 0.61% of gravity.
- Tilt: 0.0061 rad × 57.30 = 0.35°.
- Ambiguity at distance: 500 mm × 0.0061 = 3 mm; at a 1,000 mm working distance it doubles to 6 mm.
Cross-check the comparison value, because local gravity moves with latitude. At 45° latitude the sea-level value is 9.806 m/s² and the fraction stays at 0.60%; at the equator it is 9.780 m/s² and the fraction falls to 0.34%. Every case lands inside the 1% band, so geography does not change the verdict. If your tool displays an ideal of 9.80, treat it as a rounded 9.80665 and do the comparison against the full value.
Decision: ship it. Three millimetres of worst-case gravity-direction ambiguity at 500 mm is below what the depth measurements themselves resolve in a pick cell, and per-frame feature correction shrinks the effective error further. Recalibrating would polish a number that no longer limits the system; spend the time on the failed save instead.
Why did saving the calibration fail, and does it matter?
A failed write does not change the verdict: if your averaged norm already sits inside the 1% band, the numbers say the existing calibration is fine and there is nothing meaningful to save, so retry the write only to stop the error, not to improve pose.
The verdict comes from the norm, and the norm is already computed and printed. A failed save leaves the previous calibration — the one that produced 9.747 m/s² — in place. Retry once, cleanly, because a recurring error message in the log is its own nuisance:
- Re-seat the USB connector at the camera; Type-C plugs are reversible, and a half-seated or flipped plug can present differently to the controller.
- Move to a different port and a short, known-good cable; long or worn cables drop control transfers.
- Close every other program holding the camera — viewers, recorders, a running capture pipeline — then open the tool alone.
- Run the tool the way its documentation prescribes, let each attempt finish, and touch nothing until it reports.
If the write still fails, update the firmware with the vendor's update utility and try once more. Persistent rejection on an otherwise healthy device often behaves like the faults in camera feature write-protect errors after reconnection. And if the norm passed, an unsaved session costs nothing: keep the camera on the line and retry at the next maintenance window.
Which gravity value should you compare against?
Compare against local gravity, not a memorized 9.81: standard gravity is 9.80665 m/s² by definition, and local values at factory sites run from roughly 9.78 m/s² near the equator to about 9.81 m/s² at mid-latitudes, a spread of 0.3% that matters against a 1% pass line.
Standard gravity, 9.80665 m/s², is a defined reference value, not the number your bench sees. Sea-level gravity runs from about 9.780 m/s² at the equator to 9.832 m/s² at the poles, and altitude subtracts roughly 0.003 m/s² per 1,000 m of height, about 0.03%. The gravity of Earth reference lists values by latitude.
| Latitude (sea level) | Local g |
|---|---|
| 0° | 9.780 m/s² |
| 45° | 9.806 m/s² |
| 90° | 9.832 m/s² |
The comparison value can move the verdict. Take a healthy IMU with a true 0.8% error sitting at the equator: compared against 9.80665 the arithmetic reports 1.07%, a false fail. The same reading against 9.780 lands at 0.8%, a pass. Pick the row nearest your site and subtract the altitude term above a few hundred metres.
Decision: on most factory floors, 9.80665 is the right comparator, as in the worked example. Within about 25° of the equator use 9.780; above 60° latitude use 9.82.
What can the norm check miss?
The norm sees only the accelerometer on stationary data: it cannot catch gyroscope bias, vibration, saturation during motion, or a horizontal bias that a single pose hides, so average the norm over many orientations and check the gyro separately before trusting the result.
A horizontal bias hides from a single pose. The norm of gravity plus bias b is sqrt(g² + b²). A bias of 2% of g across the gravity direction moves the norm by sqrt(1.0004) - 1 = 0.02%, effectively invisible, while tilting the gravity estimate by asin(0.02) = 1.15°. The defence is orientation coverage: average over 8 to 20 stationary poses spread across pitch and roll, and a horizontal bias can no longer hide.
The gyroscope is a separate check. Leave the camera flat and still for a minute; each axis should hold near 0°/s, and any steady offset is a bias that integrates linearly into false rotation — the worked number is in the questions below.
Temperature moves bias and scale. A norm captured on a cold bench can sit differently from one taken inside a warm enclosure, so judge the calibration at operating temperature. If the cold-to-hot shift walks the norm across the 1% line, treat it as a thermal problem first; the fixes in 3D camera range drops when hot: thermal derating fixes apply.
Saturation and clock faults masquerade as bad calibration. A shock that clips the accelerometer does not average out, so scan the per-sample spread, not only the mean. And apparent tilt drift in long recordings often traces to time, not physics; run the checks in IMU timestamp jumps: reset, rollover or conversion fault before recalibrating anything.
When should you actually recalibrate the IMU?
Recalibrate when the averaged norm sits outside the 1% band, when your task needs gravity direction tighter than the residual fraction in radians, after a drop or shock that moved the mount, or when fused-pose recordings show tilt drift that no extrinsic retune removes.
Work the cases in order:
- Norm outside the 1% band. Recalibrate with 8 to 20 stationary poses, 2 to 5 seconds each, spread over pitch and roll, then re-average and confirm the new norm lands inside the line.
- Task tolerance tighter than the band. Invert the arithmetic: allowed residual fraction = required tilt in radians. A task needing 0.2° of gravity-direction accuracy allows 0.2 / 57.30 = 0.0035, i.e. 0.35% of gravity, a band of ±0.034 m/s². The 9.747 m/s² example fails that requirement at 0.61% even though it passes the generic line — recalibrate.
- Drop, shock or a moved mount. Run the multi-pose norm check first and recalibrate only if the average leaves the band. A knock that leaves a horizontal bias behind shows up there, not in a single pose.
- Tilt drift in fused recordings. Work through bias and timestamps first; the ordering in IMU linear acceleration drift: fix the bias, not the extrinsics applies, and recalibration comes only when the norm itself fails, because a recalibration cannot repair extrinsics or clocks.
Every decision here reduces to two numbers: the averaged norm and your required tilt tolerance. Compute both before you book line time.
Where do you go from the verdict?
If the averaged norm sits inside the band, close the ticket: log the number in the station file as a baseline and leave the calibration alone. If it sits outside, book a recalibration session with 8 to 20 stationary poses.
Either way, you spent a minute of arithmetic instead of a recalibration cycle. Two habits keep the verdict honest over time: always quote the multi-pose average, and always compare against the latitude row for your site.
If the verdict sends you to the catalogue instead, the 3D sensors range divides into laser profilers, stereo and structured-light cameras, ToF models and volume-measurement logistics cameras. The structured-light and ToF models below are the ones most often mounted where fused pose matters:
- Type
- Stereo / structured light
- Type
- Depth / ToF camera
The camera finder filters the range by depth type, and the configurator below walks the whole stack from the camera step. For the optics side of the same decision — field of view, pixel size, depth of field — the 3D camera guides collect the calculations.
The configurator matches a camera, lens, light, light controller and cables to each other, step by step, and lists only parts that fit what you already picked.
Questions
Is the IMU norm printed in m/s² or in g?
Both units appear in calibration tools, and mixing them is the classic false alarm. One g equals 9.80665 m/s², so a norm of 9.747 m/s² prints as 0.994 g. Apply the same 1% pass band in either unit: 9.709 to 9.905 m/s², or 0.990 to 1.010 g. Check which unit the tool header states before you judge the number.
How do I test the gyroscope when the norm only covers the accelerometer?
Set the camera flat on the bench and let it sit still for a minute. Every gyro axis should hold near 0°/s. Do the integration test on whatever steady reading you see: a constant 0.2°/s bias turns into 12° of false rotation over one minute (0.2 × 60), which no fusion filter hides. A reading that wanders a few hundredths of a degree per second around zero is ordinary noise.
What poses does a gravity-norm calibration need?
Plan 8 to 20 stationary orientations: hold the camera still for 2 to 5 seconds at each, with tilts spread over pitch and roll rather than spins about the gravity axis, which add nothing. Slow hands, no motion between holds. The fit uses the norm residuals across poses, so coverage of different tilt angles matters more than the exact sequence.
Does temperature move the accelerometer norm?
It can. Bias and scale drift with temperature, so a norm captured on a cold bench can differ from one captured inside a warm machine by up to a few tenths of a percent. Judge the calibration at operating temperature: let the camera warm up, re-average, and compare. If the norm crosses the 1% line only when hot, fix the heat source or add shading first; recalibrating at one temperature locks in the other.
Can a failed calibration save damage the camera?
No. A failed write leaves the previous calibration in place, and the camera keeps streaming; a camera that still boots and delivers frames after the error took no damage. The only destructive path is killing power in the middle of a write that is actually running. Let each attempt end cleanly, retry, and if the error repeats on every port and cable, treat it as a service case.

