From 70e338d4003fe10312156de3c0be827b33364ea4 Mon Sep 17 00:00:00 2001 From: Tara Mina <Tara Mina> Date: Thu, 6 Apr 2017 21:58:08 -0500 Subject: [PATCH] Added analysis code for IMU data and Simulink block for Mahony filter --- .../IMU_standstill/analyzeIMU_data.m | 273 ++++++++++++++++++ controls/model/mahony_filter.slx | Bin 0 -> 22933 bytes 2 files changed, 273 insertions(+) create mode 100644 controls/dataCollection/IMU_standstill/analyzeIMU_data.m create mode 100644 controls/model/mahony_filter.slx diff --git a/controls/dataCollection/IMU_standstill/analyzeIMU_data.m b/controls/dataCollection/IMU_standstill/analyzeIMU_data.m new file mode 100644 index 000000000..9d4429866 --- /dev/null +++ b/controls/dataCollection/IMU_standstill/analyzeIMU_data.m @@ -0,0 +1,273 @@ +function analyzeIMU_data( fileName ) +%UNTITLED2 Summary of this function goes here +% Detailed explanation goes here + + + IMU_dataDirectory = 'C:\Users\Tara\Desktop\Project Documents\Current Project Documents\EE 492\Data\IMU Data'; + IMU_dataFile = [IMU_dataDirectory , '\' , fileName]; + + IMU_data = readtable(IMU_dataFile); + + g = 9.8; %meters per second squared + + %Set the column values of the table + timeCol = 1; + accelXCol = 2; + accelYCol = 3; + accelZCol = 4; + gyroXCol = 5; + gyroYCol = 6; + gyroZCol = 7; + + %Pull the data columns into arrays + timeArray = IMU_data{:, timeCol}; + accelXArray = IMU_data{:, accelXCol}; + accelYArray = IMU_data{:, accelYCol}; + accelZArray = IMU_data{:, accelZCol}; + gyroXArray = IMU_data{:, gyroXCol}; + gyroYArray = IMU_data{:, gyroYCol}; + gyroZArray = IMU_data{:, gyroZCol}; + + %Get the mean and standard deviation of the accelerometer data and multiply + %by the g constant to get this value in meters per second + accelX_mean = mean(accelXArray) * g; + accelY_mean = mean(accelYArray) * g; + accelZ_mean = mean(accelZArray) * g + accelX_dev = std(accelXArray) * g; + accelY_dev = std(accelYArray) * g; + accelZ_dev = std(accelZArray) * g; + + %Get mean and standard deviation of gyroscope data, which is in rad / sec + gyroX_mean = mean(gyroXArray); + gyroY_mean = mean(gyroYArray); + gyroZ_mean = mean(gyroZArray); + gyroX_dev = std(gyroXArray); + gyroY_dev = std(gyroYArray); + gyroZ_dev = std(gyroZArray); + + %Calculate the variances from the standard deviations + accelX_var = accelX_dev ^ 2; + accelY_var = accelY_dev ^ 2; + accelZ_var = accelZ_dev ^ 2; + gyroX_var = gyroX_dev ^ 2; + gyroY_var = gyroY_dev ^ 2; + gyroZ_var = gyroZ_dev ^ 2; + + %Print received data from accelerometer nicely to command prompt + disp( ' ' ); + disp('Accelerometer data: '); + disp( [ 'X acceleration mean ( m / s^2 ): ' , num2str(accelX_mean) ] ); + disp( [ 'Y acceleration mean ( m / s^2 ): ' , num2str(accelY_mean) ] ); + disp( [ 'Z acceleration mean ( m / s^2 ): ' , num2str(accelZ_mean) ] ); + disp( [ 'X acceleration standard deviation ( m / s^2 ): ' , num2str(accelX_dev) ] ); + disp( [ 'Y acceleration standard deviation ( m / s^2 ): ' , num2str(accelY_dev) ] ); + disp( [ 'Z acceleration standard deviation ( m / s^2 ): ' , num2str(accelZ_dev) ] ); + disp( [ 'X acceleration variance ( (m/s^2) ^ 2 ): ', num2str(accelX_var) ] ); + disp( [ 'Y acceleration variance ( (m/s^2) ^ 2 ): ', num2str(accelY_var) ] ); + disp( [ 'Z acceleration variance ( (m/s^2) ^ 2 ): ', num2str(accelZ_var) ] ); + disp( ' ' ); + + + %Print received data from gyroscope nicely to command prompt + disp('Gyroscope data: '); + disp( [ 'Angular velocity about X mean ( rad / s ): ' , num2str(gyroX_mean) ] ); + disp( [ 'Angular velocity about Y mean ( rad / s ): ' , num2str(gyroY_mean) ] ); + disp( [ 'Angular velocity about Z mean ( rad / s ): ' , num2str(gyroZ_mean) ] ); + disp( [ 'Angular velocity about X standard deviation ( rad / s ): ' , num2str(gyroX_dev) ] ); + disp( [ 'Angular velocity about Y standard deviation ( rad / s ): ' , num2str(gyroY_dev) ] ); + disp( [ 'Angular velocity about Z standard deviation ( rad / s ): ' , num2str(gyroZ_dev) ] ); + disp( [ 'Angular velocity about X variance ( (rad/s) ^ 2 ): ', num2str(gyroX_var) ] ); + disp( [ 'Angular velocity about Y variance ( (rad/s) ^ 2 ): ', num2str(gyroY_var) ] ); + disp( [ 'Angular velocity about Z variance ( (rad/s) ^ 2 ): ', num2str(gyroZ_var) ] ); + disp( ' ' ); + +% %Graph plots: +% figure(); +% plot(timeArray, accelXArray * g); +% title('X Acceleration Data ( m / s^2 )'); +% xlabel('Time (s)'); +% +% figure(); +% plot(timeArray, accelYArray * g); +% title('Y Acceleration Data ( m / s^2 )'); +% xlabel('Time (s)'); +% +% figure(); +% plot(timeArray, accelZArray * g); +% title('Z Acceleration Data ( m / s^2 )'); +% xlabel('Time (s)'); +% +% figure(); +% plot(timeArray, gyroXArray); +% title('Angular Velocity about X Data (rad/s)'); +% xlabel('Time (s)'); +% +% figure(); +% plot(timeArray, gyroYArray); +% title('Angular Velocity about Y Data (rad/s)'); +% xlabel('Time (s)'); +% +% figure(); +% plot(timeArray, gyroZArray); +% title('Angular Velocity about Z Data (rad/s)'); +% xlabel('Time (s)'); +% +% +% %Get the magnitude of the accelerometer data +% mag_accel = sqrt( accelXArray.^2 + accelYArray.^2 + accelZArray.^2 ) * g; +% mag_accel_mean = mean( mag_accel ); +% mag_accel_dev = std( mag_accel ); +% mag_accel_var = mag_accel_dev ^ 2; +% +% %Display these results and graph them +% disp( ['Magnitude of acceleration vector mean ( m / s^2 ): ' , num2str(mag_accel_mean) ] ); +% disp( ['Magnitude of acceleration vector standard deviation ( m / s^2 ): ' , num2str(mag_accel_dev) ] ); +% disp( ['Magnitude of acceleration vector variance ( ( m/s^2 )^2 ): ' , num2str(mag_accel_var) ] ); +% figure(); +% plot( timeArray, mag_accel, 'b' ); +% hold on; +% plot( timeArray, ones(1, length(timeArray)) * g , 'r-' ); +% title('Magnitude of Acceleration Vector with Respect to Nominal ( m / s^2 )'); +% xlabel('Time (s)'); +% legend( 'Accel Mag Measured' , 'Accel Mag Nominal' ); +% +% %Also graph the percent error +% mag_accel_percentError = abs(mag_accel - g) / g * 100; +% figure(); +% plot( timeArray, mag_accel_percentError); +% title('Magnitude of Acceleration Vector Percent Error from Nominal (%) '); +% xlabel('Time (s)'); +% ylabel('Percent Error (%)'); +% +% mag_accel_percentError_mean = mean( mag_accel_percentError ); +% mag_accel_percentError_dev = std( mag_accel_percentError ); +% +% disp(' '); +% disp( ['Percent error from nominal mean ( % ): ' , num2str(mag_accel_percentError_mean) ] ); +% disp( ['Percent error from nominal standard deviation ( % ): ' , num2str(mag_accel_percentError_dev) ] ); +% disp(' '); + + + + + + %Following example given in MATLAB help + %Looking at the frequency response characterisitcs of the noise + timeArray_diff = diff( timeArray ); + timeArray_diffMean = mean( timeArray_diff ); %seconds + fs = 1 / timeArray_diffMean; + + %Get the fast fourier transform + accelX_fft = fft( accelXArray*g - accelX_mean ); + accelY_fft = fft( accelYArray*g - accelY_mean ); + accelZ_fft = fft( accelZArray*g - accelZ_mean ); + gyroX_fft = fft( gyroXArray - gyroX_mean ); + gyroY_fft = fft( gyroYArray - gyroY_mean ); + gyroZ_fft = fft( gyroZArray - gyroZ_mean ); + + %Determine the length of our data and obtain only first half of FFT data + N = length(timeArray); + accelX_fft = accelX_fft( 1:N/2+1 ); + accelY_fft = accelY_fft( 1:N/2+1 ); + accelZ_fft = accelZ_fft( 1:N/2+1 ); + gyroX_fft = gyroX_fft( 1:N/2+1 ); + gyroY_fft = gyroY_fft( 1:N/2+1 ); + gyroZ_fft = gyroZ_fft( 1:N/2+1 ); + + %Get the power spectral density of the signal + accelX_PSD = ( 1 / (2*pi*N) ) * abs( accelX_fft ) .^ 2; + accelY_PSD = ( 1 / (2*pi*N) ) * abs( accelY_fft ) .^ 2; + accelZ_PSD = ( 1 / (2*pi*N) ) * abs( accelZ_fft ) .^ 2; + gyroX_PSD = ( 1 / (2*pi*N) ) * abs( gyroX_fft ) .^ 2; + gyroY_PSD = ( 1 / (2*pi*N) ) * abs( gyroY_fft ) .^ 2; + gyroZ_PSD = ( 1 / (2*pi*N) ) * abs( gyroZ_fft ) .^ 2; + + %Multiply everything but the first and last term by 2 + accelX_PSD(2:end-1) = 2*accelX_PSD(2:end-1); + accelY_PSD(2:end-1) = 2*accelY_PSD(2:end-1); + accelZ_PSD(2:end-1) = 2*accelZ_PSD(2:end-1); + gyroX_PSD(2:end-1) = 2*gyroX_PSD(2:end-1); + gyroY_PSD(2:end-1) = 2*gyroY_PSD(2:end-1); + gyroZ_PSD(2:end-1) = 2*gyroZ_PSD(2:end-1); + + %Get the frequency range vector + freq = 0:(2*pi)/N:pi; + + %Show the plots of the power spectral density in the log domain + figure(); + plot( freq/pi, 10*log10(accelX_PSD) ); + %plot( freq/pi, accelX_PSD, '*' ); + title('Periodogram of X Acceleration Data Using FFT'); + xlabel('Normalized Frequency (\times\pi rad/sample)'); + ylabel('Power Frequency (dB/rad/sample)'); + %ylabel('Power Frequency'); + + figure(); + plot( freq/pi, 10*log10(accelY_PSD) ); + title('Periodogram of Y Acceleration Data Using FFT'); + xlabel('Normalized Frequency (\times\pi rad/sample)'); + ylabel('Power Frequency (dB/rad/sample)'); + + figure(); + plot( freq/pi, 10*log10(accelZ_PSD) ); + title('Periodogram of Z Acceleration Data Using FFT'); + xlabel('Normalized Frequency (\times\pi rad/sample)'); + ylabel('Power Frequency (dB/rad/sample)'); + + figure(); + plot( freq/pi, 10*log10(gyroX_PSD) ); + title('Periodogram of Angular Velocity about X Data Using FFT'); + xlabel('Normalized Frequency (\times\pi rad/sample)'); + ylabel('Power Frequency (dB/rad/sample)'); + + figure(); + plot( freq/pi, 10*log10(gyroY_PSD) ); + title('Periodogram of Angular Velocity about Y Using FFT'); + xlabel('Normalized Frequency (\times\pi rad/sample)'); + ylabel('Power Frequency (dB/rad/sample)'); + + figure(); + plot( freq/pi, 10*log10(gyroZ_PSD) ); + title('Periodogram of Angular Velocity about Z Using FFT'); + xlabel('Normalized Frequency (\times\pi rad/sample)'); + ylabel('Power Frequency (dB/rad/sample)'); + + + + %Estimate the average power spectral density, ignoring the first value + accelX_PSD_mean = mean( accelX_PSD(2:end) ); + accelX_PSD_mean_dB = 10*log10( accelX_PSD_mean ); + accelY_PSD_mean = mean( accelY_PSD(2:end) ); + accelY_PSD_mean_dB = 10*log10( accelY_PSD_mean ); + accelZ_PSD_mean = mean( accelZ_PSD(2:end) ); + accelZ_PSD_mean_dB = 10*log10( accelZ_PSD_mean ); + gyroX_PSD_mean = mean( gyroX_PSD(2:end) ); + gyroX_PSD_mean_dB = 10*log10( gyroX_PSD_mean ); + gyroY_PSD_mean = mean( gyroY_PSD(2:end) ); + gyroY_PSD_mean_dB = 10*log10( gyroY_PSD_mean ); + gyroZ_PSD_mean = mean( gyroZ_PSD(2:end) ); + gyroZ_PSD_mean_dB = 10*log10( gyroZ_PSD_mean ); + + %Display the average power spectral densities in dB + disp( ' ' ); + disp( [ 'Average PSD for X Acceleration Data Noise (dB): ' , num2str(accelX_PSD_mean_dB) ] ); + disp( [ 'Average PSD for Y Acceleration Data Noise (dB): ' , num2str(accelY_PSD_mean_dB) ] ); + disp( [ 'Average PSD for Z Acceleration Data Noise (dB): ' , num2str(accelZ_PSD_mean_dB) ] ); + disp( [ 'Average PSD for Angular Velocity about X Data Noise (dB): ' , num2str(gyroX_PSD_mean_dB) ] ); + disp( [ 'Average PSD for Angular Velocity about Y Data Noise (dB): ' , num2str(gyroY_PSD_mean_dB) ] ); + disp( [ 'Average PSD for Angular Velocity about Z Data Noise (dB): ' , num2str(gyroZ_PSD_mean_dB) ] ); + disp( ' ' ); + + disp( ' ' ); + disp( [ 'Average PSD for X Acceleration Data Noise : ' , num2str(accelX_PSD_mean) ] ); + disp( [ 'Average PSD for Y Acceleration Data Noise : ' , num2str(accelY_PSD_mean) ] ); + disp( [ 'Average PSD for Z Acceleration Data Noise : ' , num2str(accelZ_PSD_mean) ] ); + disp( [ 'Average PSD for Angular Velocity about X Data Noise : ' , num2str(gyroX_PSD_mean) ] ); + disp( [ 'Average PSD for Angular Velocity about Y Data Noise : ' , num2str(gyroY_PSD_mean) ] ); + disp( [ 'Average PSD for Angular Velocity about Z Data Noise : ' , num2str(gyroZ_PSD_mean) ] ); + disp( ' ' ); + + + +end + diff --git a/controls/model/mahony_filter.slx b/controls/model/mahony_filter.slx new file mode 100644 index 0000000000000000000000000000000000000000..df7f4d681d0169f6630f5a48695e21cf85f1de8b GIT binary patch literal 22933 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 O^k)kF_UQC}KK&QHP4?LU literal 0 HcmV?d00001 -- GitLab