I have also performed a test with MTLT305D. The response was similar. It may cause big problems in some cases.
Acceleration measuring range was 4g and the gyro range was 500dps in my test setup. It supports up to 16g/2000dps respectively. Should I increase the range?
To change update rate, filter coefficients may also be changed. In EKF_UpdateStage() function, timer.oneHundredHertzFlag is used. Is it necessary to perform the update at 100Hz? I don't have a GPS module.
if( gAlgorithm.state <= LOW_GAIN_AHRS )
{
// Only allow the algorithm to be called on 100 Hz marks
if(timer.oneHundredHertzFlag == 1)
{
// Update the AHRS solution at a 10 Hz update rate
// Subframe counter counts to 10 before it is reset
if( _CheckForUpdateTrigger(TEN_HERTZ_UPDATE) )
{
/* The AHRS/VG solution is handled inside FieldVectorsToEulerAngles
* (called from the prediction function EKF_PredictionStage)
*/
ComputeSystemInnovation_Att();
Update_Att();
}
}
}
I think the value below must be re-calculated for my MEMS. Can you provide the Matlab script used for the calculation?
* These values are found by passing the accelerometer VRW values
* (determined from a very limited data set) through a Matlab
* script which generates the roll and pitch noise based on the
* sensor noise. The value below is the 1-sigma value at 0
* degrees. The quadratic correction below is meant to increase
* R as the angle increases (due to the geometry and
* mathematical function used to compute the angle).
*
* Matlab script: R_Versus_Theta.m
*/
switch (sysRange)
{
case _200_DPS_RANGE:
// -200 VRW value (average x/y/z): 7.2e-4 [(m/sec)/rt-sec]
Rnom = (real)9.82e-07; // (9.91e-4)^2
break;
case _400_DPS_RANGE:
// -400 VRW value (average x/y/z): 8.8e-4 [(m/sec)/rt-sec]
Rnom = (real)1.54e-06; // (1.24e-3)^2
break;
}