# How can I fix the X-Axis plot flipping when 180° are reached?

5 views (last 30 days)
Nicolò Dall'Acqua on 20 Mar 2021
Edited: Nicolò Dall'Acqua on 9 Sep 2021
Hello everybody,
I am using accelerometer and gyroscope data from an unknown brand IMU, acquired at 833Hz.
I'm trying to represent the IMU orientation during the trial using the imufilter command. When I plot the orientation data, the overall output seems reasonable, but the X-axis has ~20 samples flipped of 180°, and I don't know how to fix this.
I tried to use the unwrap command, but with no success so far.
I attach a ZIP with an image of the aforementioned plot and the data matrix.
Thank you,
Nico
close all
clear all %#ok<CLALL>
clc
%% INSERT Fs AND TIME
Fs = 833; % SAMPLING FREQ [Hz]
time = linspace(0,7850,7851)/833; % TIME VECTOR [s]
Ts = mean(diff(time)); % SAMPLING INTERVAL
%% KALMAN
FUSE = imufilter('SampleRate',Fs);
figure
plot(time,eulerd(q,'ZYX','frame')) % PLOT ANGLES
title('3^{rd} Bike Stunt: ESTIMATED ORIENTATION')
legend('Z-axis', 'Y-axis', 'X-axis')
xlabel('Time [s]')
ylabel('Rotation [°]')
grid on
clearvars dataA dataG

Ananya Tewari on 23 Mar 2021
I understand you want to unwrap the flipped samples on X-axis.
The unwrap function accepts the threshold in radians. So converting the x-axis samples into radians and then using unwrap for π radians should resolve the issue
% converting quaternions to euler angles
k = eulerd(q,'ZYX','frame');
% converting x-axis angles to radian for using unwrap
% converting radians back to degrees
% updating the orientation angles
k(:,3) = x;
% PLOT ANGLES
figure
plot(time,k)
title('3^{rd} Bike Stunt: ESTIMATED ORIENTATION')
legend('Z-axis', 'Y-axis', 'X-axis')
xlabel('Time [s]')
ylabel('Rotation [°]')
grid on
The output of the following code :
Nicolò Dall'Acqua on 23 Mar 2021
Thank you, Ananya!

R2021a

### Community Treasure Hunt

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

Start Hunting!