Clear Filters
Clear Filters

What impact do the properties of the Sensor Fusion Toolbox IMU filter "complementaryFilter" have on the output?

1 view (last 30 days)
I am trying to find the best settings to use with the complementaryFilter (and the other filters of that toolbox but we'll stick with the complementary filter for this question), but the settings seem to make minimal difference. I have been trying to work with the settings "AccelerometerGain", "MagnetometerGain", and "HasMagnetometer". In my testing, it seems that AccelerometerGain only makes a difference to the last two or three samples, and MagnetometerGain introduces a small amount of noise on the signal as it is increased. Setting MagnetometerGain or HasMagnetometer to 0 has a noticeable impact on the output (which is logical), but other than that the difference seems negligible other than possible affecting whether there is a small overshoot when there is a sudden change in orientation. I thought trusting the accelerometer or maybe magnetometer more might have an effect on drift or something. What impact is it meant to have? Is there anything that can be used to help reduce drift?
Below is an example of the code I have tried to use to test this, I have tried various combinations and scales (such as 0:0.01:0.1, and only changing the accelerometer)
FUSE = complementaryFilter('SampleRate',248.0159);
for n = 0.0:0.1:1
reset(FUSE);
FUSE.AccelerometerGain = n;
FUSE.MagnetometerGain = n;
test = FUSE(IMU(1).acc,IMU(1).gyro,IMU(1).mag);
test = conj(test(2000,:)).*test; %Rotates quaternion to the desired orientation based on a single frame of the signal
figure, plot(compact(test))
end

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!