HCDF Extension: IMU Stability Parameters
org.cognipilot.imu-stability v1.0
Why This Is an Extension (Not Core)
The core HCDF sensor model already represents the quantities commonly needed for sensor simulation and basic integration:
- Measurement-noise standard deviation and static or dynamic bias terms
- ODR, bandwidth, FIFO: control loop timing
- Range, resolution: dynamic range
- Driver + axis-align: Zephyr integration
Additional stability and calibration quantities can matter when an application must model inertial error growth in detail. Bias instability and random-walk coefficients may be estimated from Allan-deviation analysis. Scale-factor error, cross-axis sensitivity, g-sensitivity, and temperature sensitivity are separate calibration or environmental characteristics. They are useful in applications such as:
- Tactical and navigation-grade inertial systems
- Aerospace and defense applications
- Underwater navigation and other long-duration GNSS-denied operation
- INS/GNSS integration where dead reckoning matters over minutes/hours
Systems with frequent external aiding may estimate or constrain bias often enough that these detailed parameters are less important. Other systems use them directly to tune stochastic error models. Keeping the optional vocabulary in an extension lets each application choose the fidelity it needs without changing the core sensor model.
How to Use the Extension
The <extension> element on a <comp> allows vendor-specific
or domain-specific data using a reverse-DNS domain identifier. An aerospace team can add IMU
stability data without modifying the HCDF core schema:
<comp name="ins-nav-unit" role="sensor">
<description>Tactical-grade INS for GPS-denied navigation</description>
<port name="spi0">
<capabilities>
<purpose value="communication"/>
<carrier value="electrical"/>
<rate min="15000000" max="15000000" nominal="15000000" unit="bit/s"/>
</capabilities>
</port>
<sensor name="tactical_imu" update-rate="400">
<inertial type="accel_gyro">
<driver name="adis16465-2"/>
<accel>
<range unit="g">10</range>
<resolution unit="ug">0.25</resolution>
<odr unit="Hz">2000</odr>
<bandwidth unit="Hz">500</bandwidth>
<fifo depth="512" watermark="5"/>
<noise type="gaussian">
<stddev>0.000023</stddev>
<bias-mean>0.004</bias-mean>
<bias-stddev>0.001</bias-stddev>
</noise>
</accel>
<gyro>
<range unit="dps">500</range>
<resolution unit="dps">0.00625</resolution>
<odr unit="Hz">2000</odr>
<bandwidth unit="Hz">500</bandwidth>
<fifo depth="512" watermark="5"/>
<noise type="gaussian">
<stddev>0.0035</stddev>
<bias-mean>0.02</bias-mean>
<bias-stddev>0.005</bias-stddev>
</noise>
</gyro>
</inertial>
</sensor>
<!-- IMU stability extension: Allan variance and environmental sensitivity -->
<extension domain="org.cognipilot.imu-stability" version="1.0">
<imu-stability sensor="tactical_imu">
<!-- From Allan variance analysis -->
<accel-bias-stability unit="ug">3.6</accel-bias-stability>
<gyro-bias-stability unit="deg/hr">2.0</gyro-bias-stability>
<!-- Scale factor error (proportional measurement error) -->
<accel-scale-factor-error unit="ppm">1500</accel-scale-factor-error>
<gyro-scale-factor-error unit="ppm">100</gyro-scale-factor-error>
<!-- Cross-axis sensitivity (leakage between axes) -->
<cross-axis-sensitivity unit="percent">0.5</cross-axis-sensitivity>
<!-- Gyro sensitivity to linear acceleration (vibration rectification) -->
<gyro-g-sensitivity unit="deg/s/g">0.005</gyro-g-sensitivity>
<!-- Angular random walk (noise density from Allan variance) -->
<gyro-arw unit="deg/sqrt(hr)">0.16</gyro-arw>
<accel-vrw unit="m/s/sqrt(hr)">0.012</accel-vrw>
<!-- Temperature sensitivity -->
<gyro-temp-sensitivity unit="deg/s/degC">0.005</gyro-temp-sensitivity>
<accel-temp-sensitivity unit="mg/degC">0.1</accel-temp-sensitivity>
<operating-temp unit="degC" min="-40" max="105"/>
<!-- Allan variance test conditions -->
<allan-test>
<duration unit="hr">4</duration>
<temperature unit="degC">25</temperature>
<vibration>none</vibration>
</allan-test>
</imu-stability>
</extension>
</comp>
How Tooling Uses This
A navigation or validation tool can:
-
Check if the extension exists:
Does comp have extension domain="org.cognipilot.imu-stability"? -
Extract stability parameters for filter tuning:
gyro-bias-stabilitycan inform a bias-state error model when the estimator uses that interpretationgyro-arwcan be compared with the core measurement-noise model after accounting for sample rate and unitsgyro-g-sensitivity→ determines if vibration isolation is needed (if g-sensitivity x expected vibration g > acceptable drift rate)
-
Predict dead-reckoning performance:
- Under a deliberately simplified constant acceleration-bias-only model, position error is approximately 0.5 × acceleration bias × time squared.
- At 3.6 ug, that isolated term is about 6.4 m after 10 minutes. At 1000 ug, it is about 1.8 km.
- Those figures are not navigation-performance guarantees. Attitude error, gravity coupling, calibration, estimator design, motion, and external aiding all affect the result.
-
Validate operating environment:
operating-tempvs expected environmentgyro-g-sensitivityvs expected vibration profile of the robot base
Why Extension and Not Core
| Reason | Detail |
|---|---|
| Specialized scope | Systems with frequent external aiding may need less detailed inertial error characterization |
| Requires lab testing | Measured stability parameters depend on test duration, sampling, temperature, vibration, and analysis method |
| Domain-specific | Most relevant to high-integrity or long-duration inertial navigation, but available to any application that needs it |
| Estimator-dependent | Some estimators identify bias online; others also use characterized parameters to set process and measurement models |
| Datasheet values vary | Allan variance is temperature and environment dependent, so a single number is misleading |
Extension Schema Convention
- Domain:
org.cognipilot.imu-stability(reverse-DNS, avoids conflicts) - Version:
1.0(allows evolution without breaking existing files) - sensor attribute: References the sensor name this stability data applies to
- Units: Always explicit via
unitattribute (no defaults, because these parameters have unusual units likedeg/sqrt(hr)that should not be assumed)
Other Extension Ideas
The same pattern works for any domain-specific sensor data:
| Extension Domain | Use Case |
|---|---|
org.cognipilot.imu-stability |
Tactical IMU Allan variance |
org.cognipilot.camera-calibration |
Extrinsic calibration results, reprojection error |
org.cognipilot.lidar-multipath |
Multi-path rejection parameters for structured environments |
com.vendor.radar-cfar |
Radar CFAR detection threshold tuning |
org.ros.sensor-msgs |
ROS message type mapping for each sensor |
The core HCDF schema stays clean and focused. Domain expertise lives in versioned extensions that agents can optionally understand.