ISO road profile modelling
Aim:
To perform classification and generation of road profile according to ISO.
Given data:
Given power spectral density file can be viewed at the below link:
Objective:
- Plot showing ISO classification for roads A through H (Use higher end of the range for the degree of roughness)
- Plot showing the PSD profile
- Overlay of PSD profile on ISO classification and determination of road quality
Governing equations:
Random signal in space domain: `Z_n(x)=A_nsin(2*pi*x)/l` , where`(2pix)/l=Omega_n`, l= wavelength
Random signal in time domain: `Z_n(t)=A_nsin(omegat)`
Temporal frequency(Hz)=Spatial frequency(cycles/m)*velocity(m/s)
For `Omega<Omega_o:S(Omega)=S(Omega_o)(Omega/Omega_0)^-2`
For `Omega>Omega_o:S(Omega)=S(Omega_o)(Omega/Omega_0)^-1.5`
where `S(Omega)`= Degree of roughness
Background theory:
- In a random signal we are concerned with the power rather than the amplitude.
- The power spectrum can be calculated by multiplying the FFT by its complex conjugate which eliminates the phase information.
- To obtain the power spectral density (PSD), the power spectrum is divided by the frequency increment or bandwidth. It is the plot of signal power (amplitude squared) v/s frequency (spatial frequency=cycles/m)
- This ensures that the power level will not change when the frequency resolution is modified.
- PSD is a plot that has units of amplitude squared per hertz
PSD Profiles of Roads:
- PSD profiles of every road section are unique.
- However, all roads show a characteristic drop in amplitude with wavenumber
- Amplitude is indicative of roughness (higher = rougher)
- The magnitude distribution in the high and low wavenumber regions determines the frequency range for vehicle vibration
ISO Classification of road based on Road Roughness:
International Organisation for Standardization gives the quality criteria as given below by plotting the graph of spatial frequency Vs Power Spectral Density. ISO classifies the roads into eight different classes, by indicating the bands of lines as shown in the figure. These bands of lines are obtained by classifying them based on the fixed PSD range. Then by overlaying the obtained PSD data with the ISO standard chart the road quality is determined.
`y=-mx+c`
`logy=-mlogx+logc`
`logy=log(c*x^-m)`
`y=cx^-m`
`S(Omega)=S(Omega_o)(Omega^-m)`
Matlab code:
%Road data
file='PSD_Data.txt';
data=importdata(file);
freq=data(:,1); %frequency(cycle/ft)
amplitude=data(:,2); %Amplitude(ft^2/(rad/ft))
%End point frequencies
omega(1)=0.01;
omega(2)=1/(2*pi);
omega(3)=10;
%Road roughness class lines
s_ab(2)=8e-6;
s_bc(2)=32e-6;
s_cd(2)=128e-6;
s_de(2)=512e-6;
s_ef(2)=2048e-6;
s_fg(2)=8192e-6;
s_gh(2)=3276e-6;
s_hi(2)=131072e-6;
s_ab(1)=s_ab(2)*(omega(1)/omega(2))^-2;
s_bc(1)=s_bc(2)*(omega(1)/omega(2))^-2;
s_cd(1)=s_cd(2)*(omega(1)/omega(2))^-2;
s_de(1)=s_de(2)*(omega(1)/omega(2))^-2;
s_ef(1)=s_ef(2)*(omega(1)/omega(2))^-2;
s_fg(1)=s_fg(2)*(omega(1)/omega(2))^-2;
s_gh(1)=s_gh(2)*(omega(1)/omega(2))^-2;
s_hi(1)=s_hi(2)*(omega(1)/omega(2))^-2;
s_ab(3)=s_ab(2)*(omega(3)/omega(2))^-1.5;
s_bc(3)=s_bc(2)*(omega(3)/omega(2))^-1.5;
s_cd(3)=s_cd(2)*(omega(3)/omega(2))^-1.5;
s_de(3)=s_de(2)*(omega(3)/omega(2))^-1.5;
s_ef(3)=s_ef(2)*(omega(3)/omega(2))^-1.5;
s_fg(3)=s_fg(2)*(omega(3)/omega(2))^-1.5;
s_gh(3)=s_gh(2)*(omega(3)/omega(2))^-1.5;
s_hi(3)=s_hi(2)*(omega(3)/omega(2))^-1.5;
%unit conversion
freq_new=freq/0.3048; % cycle/ft to cycle/m
amplitude_new=amplitude*0.3048^3*2*pi; %ft^3/rad to m^3/cycle
%plot
loglog(omega,s_ab);text(omega,s_ab,"A",'VerticalAlignment','bottom');
hold on
loglog(omega,s_bc);text(omega,s_bc,"B",'VerticalAlignment','bottom');
loglog(omega,s_cd);text(omega,s_cd,"C",'VerticalAlignment','bottom');
loglog(omega,s_de);text(omega,s_de,"D",'VerticalAlignment','bottom');
loglog(omega,s_ef);text(omega,s_ef,"E",'VerticalAlignment','bottom');
loglog(omega,s_fg);text(omega,s_fg,"F",'VerticalAlignment','bottom');
loglog(omega,s_gh);text(omega,s_gh,"G",'VerticalAlignment','bottom');
loglog(omega,s_hi);text(omega,s_hi,"H",'VerticalAlignment','bottom');
loglog(freq_new,amplitude_new,'color','k')
xlabel('spatial frequency(cycle/m)')
ylabel('power spectral density(m^2/(cycle/m))')
title('Road classification by ISO')
legend('A(very good)','B(good)','C(Average)','D(Poor)','E(Very Poor)','F','G','H','Road profile')
%Space domain profile from surface roughness
delta_sigma(1)=freq_new(2)-freq_new(1);
delta_sigma(125)=freq_new(125)-freq_new(124);
for i=2:124
delta_sigma(i)=(freq_new(i+1)-freq_new(i-1))/2;
end
for i=1:500
x(i)=i;
total(i)=0;
for j=1:125
z(j)=sqrt(amplitude_new(j)*delta_sigma(j)); %meter
total(i)=total(i)+z(j)*sin(freq_new(j)*x(i)*2*pi); %signal reconstruction
end
end
figure(3)
plot(x,total)
xlabel('Distance(ft)')
ylabel('Elevation(ft)')
title('Road elevation profile-Space domain')
figure(2)
loglog(freq_new,amplitude_new)
xlabel('Spatial frequency(cycle/m)')
ylabel("power spectral density(m^2/(cycle/m))")
title('Road Profile-PSD')
Output:


