[Rock-dev] IMU Sensor - Incorporation of sensor noise values

Javier Hidalgo Carrió javier.hidalgo_carrio at dfki.de
Thu Mar 8 17:06:38 CET 2012


Dear rocks,

I am currently thinking how to incorporate errors in measurement given 
by an IMU. The easiest seems to add data members to the IMUSensor data 
type, like:

/** Velocity Random Walk raw accelerometer noise */
base::Vector3d vrw;

but I am not fully sure from the rock perspective:

The issue is that all inertial sensors have at least two typical types 
of errors:
(1) (Angular or Velocity) Random walk (ARW or VRW) -> affected by white 
noise
(2) Bias instability
And many times also (3) Rate Random Walk (RRW) and some times many more 
like temp variation.... but at least those two mentioned above.

These error coefficients (coeff.) will affect your measurement  
uncertainty which is an input to your filter algorithm.
These coeff. are constant for a particular IMU/sensor while the 
uncertainty is not. That means that for example if our gyro has an ARW 
of 6 deg/sqrt(hr) at the sampling time is 100Hz (0.01sec) the 
uncertainty (std. deviation) is 1deg/sec, but at the sampling time 10 Hz 
(0.1sec) would be 0.31deg/sec and at 1Hz would be 0.1deg/sec. Low pass 
filtering.

The question is where to write  these values.  Imaging the following case:

IMUdriver(100Hz) -> LowPassFilter(10Hz) -> SensorFusion(10Hz) ->

In one case, the input and output ports for the low pass filter 
component  (LowPassFilter) are IMUSensor type.
Both ports have the same ARW but different frequencies, which means 
different std. dev. in the samples for a probabilistic form like Kalman 
Filter.

One solution will be, let's change the output port of the LowPassFilter 
to a RigidBodyState and fill the uncertainty matrices. This is another 
possibility, but in that case we will loss information, imaging that we 
have a RRW noise (this noise did not change by the lowpassfilter) in our 
IMUSensor and we want to incorporate this in our next component model 
(the SensorFusion). With the RigidBodyState output we will not have this 
sensor error coeff... and is good because it is not a sensor.

Other possibility would be to write the values in the .orogen files of a 
orogen_component but in this way the component has the error information 
and no the IMUSensor. That entail change the .orogen file depending on 
the sensor input.

Another possibility is to read it from a config file, in this case, how 
I should do it?

Any suggestion?

Thank you,

Javi




More information about the Rock-dev mailing list