calculateSteeringData

Funkcja służąca do obliczenia kątów skrętu, odchylenia, kierownicy, obrotu odchylenia i ackermanna

Opisany plik: calculateSteeringData.m

Wywoływanie funkcji i wartości które zwraca

Funkcja przyjmuje 16 parametrów:

wheelbase - rozstaw osi
R - promień łuku
lr - odległość tylnej osi od środka masy
lf - odległość przedniej osi od środka masy
vV - prędkość bolidu
FWZ_fl, FWZ_rl, FWZ_fr, FWZ_rr - nacisk na poszczególne opony (nieużywane)
track_f - szerokość toru
cZ_fl, cZ_fr, cZ_rl, cZ_rr - interpolowane sztywności poszczególnych opon (nieużywane)
alpha_f - kąt poślizgu przedniej osi
alpha_r - kąt poślizgu tylnej osi

Funkcja zwraca 14 parametrów:

delta - kąt skrętu
beta - kąt odchylenia (Schwimmwinkel)
psi1 - obrót odchylenia (Gierrate)
alpha_f, alpha_r - kąty poślizgu osi
alpha_fr, alpha_fl, alpha_rr, alpha_rl - kąty poślizgu poszczególnych opon
delta_fl - kąt skrętu lewego koła
delta_fr - kąt skrętu prawego koła
delta_sw - kąt skrętu kierownicy
ackermann - "Kąt Ackermanna to geometria związana z układem kierowniczym pojazdu, która określa różnicę w kącie skrętu pomiędzy przednimi kołami w momencie skręcania."
ackermannPercent - ackermann w wartości procentowej

Kąt odchylenia i obrót odchylenia grafika poglądowa

Kąt odchylenia i obrót odchylenia grafika poglądowa

Ackermann grafika poglądowa

Ackermann grafika poglądowa

Działanie funkcji

Sprawdzenie kierunku skrętu:

%%Sprawdzenie kierunku zakrętu, gdy R jest dodatnie - skręt w prawo
 if R > 0
        f = -1;
    else
        f = 1;
    end

Obliczanie kątów skrętu, odchylenia, kierownicy i obrotu odchylenia:

delta = wheelbase/1000/R;  
%kąt skrętu (dzielenie przez 1000 w celu konwersji na metry)

beta = f*atan((lr/1000)/sqrt(R^2-(lr/1000)^2)); 
%kąt odchylenia

psi1 = vV/R;
%kąt obrotu odchylenia

delta_sw = delta * 180/pi * 5.093;
%kąt skrętu kierownicy (5.093 to mnożnik zależny od układu kierowniczego)

Obliczanie kątów skrętu dla koła wewnętrznego i zewnętrznego:

if R > 0    %Gdy R jest dodatnie - skręt w prawo, a prawe koło jest wewnętrznym do łuku
    delta_fl = atan((wheelbase/1000)/(R+(track_f/1000/2)));     %kąt skrętu lewego koła
    delta_fr = atan((wheelbase/1000)/(R-(track_f/1000/2)));     %kąt skrętu lewego koła

    ackermann = atan(wheelbase/((wheelbase/tan(delta_fl))-track_f));    %wartość ackermanna
    ackermannPercent = delta_fr/ackermann*100;  %procentowa wartość ackermanna
else
    delta_fl = atan((wheelbase/1000)/(R-(track_f/1000/2))); 
    delta_fr = atan((wheelbase/1000)/(R+(track_f/1000/2)));           

    ackermann = atan(wheelbase/((wheelbase/tan(delta_fr))-track_f));
    ackermannPercent = delta_fl/ackermann*100;                       
end