Azzera filtri
Azzera filtri

How to find the best combination of angles for minimum turn radius

16 visualizzazioni (ultimi 30 giorni)
I am looking to find the best combination of a set of angles from 0 degrees to 68 degrees resulting in the minimum turning radius for a vehicle only turing with the front wheels. The goal is provide optimum ackermann steering and currently the wheel can roate a maximum of 68 degrees each way. I currently have this code however it doesn't seem correct and it isnt showing the best 2 angles for minimum radius. Any help would be appreciated. Wheelbase = 72 in. Track width = 54" want a radius of roughly 6-7ft I believe the equation for min radius at low speed is R = (track width/2) + (wheelbase/(Sin(average of outer + inner angle)) Thank you
radius = 72;
inner_angle = (0:68)
outer_angle = (0:68)
inner_angle_rad = inner_angle * pi /180
outer_angle_rad = outer_angle * pi /180
w = sin(outer_angle_rad+inner_angle_rad/2)
v = [72]
R= repelem (v,91)/w
if R < min_radius
min_radius = R
end
  3 Commenti
Image Analyst
Image Analyst il 15 Feb 2024
I don't understand why a car making a turn has to make two turns of different angles. Can you provide a diagram of the situation?
Gabe Mergenthaler
Gabe Mergenthaler il 15 Feb 2024
For sure. Based upon ackermann steering criteria one wheel must turn sharper than the other for effective turning. hence why two angles. Here is a diagram where l is wheelbase, w is track width, and sigma o and sigma i are the steering angles:

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 15 Feb 2024
radius = 72;
inner_angle = (0:68).';
outer_angle = (0:68);
inner_angle_rad = inner_angle * pi /180;
outer_angle_rad = outer_angle * pi /180;
w = sin(outer_angle_rad + inner_angle_rad/2);
v = [72]
v = 72
R = v./w;
[min_radius1, location1] = min(R, [], 'all', 'linear');
[r1, c1] = ind2sub(size(R), location1);
inner_angle1 = inner_angle(r1);
outer_angle1 = outer_angle(c1);
R(location1) = nan;
[min_radius2, location2] = min(R, [], 'all', 'linear');
[r2, c2] = ind2sub(size(R), location2);
inner_angle2 = inner_angle(r2);
outer_angle2 = outer_angle(c2);
result = table([min_radius1; min_radius2], [inner_angle1; inner_angle2], [outer_angle1; outer_angle2], 'VariableNames', {'Radius', 'Inner Angle', 'Outer Angle'});
result
result = 2x3 table
Radius Inner Angle Outer Angle ______ ___________ ___________ 72 68 56 72 66 57
  1 Commento
Gabe Mergenthaler
Gabe Mergenthaler il 15 Feb 2024
Fantastic. So if I am reading this correctly to achieve a radius of 72 inches the inner vs outer steering angle must be 68 and 56 or 66 and 57 respectively. If i wanted a tighter or larger turning radius I would be ale to change the radius value to continue? Thanks

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Debugging and Analysis in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by