calculateSteeringData
Funkcja służąca do obliczenia kątów skrętu, odchylenia, kierownicy, obrotu odchylenia i ackermanna
Categories:
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 Ackermann
grafika poglądowa
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