You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This checks out if the left and right joint speed refers to angular velocities of the 2 non-steering wheels at the back axel and turning radius being drawn to the center between the back wheels, meaning TurningRadius should be refering to RR and NOT RF.
HOWEVER if we blindly follow the documentation and mistakenly use RR as 'turning_radius' of our physical car and follow <steering_limit> = asin(wheel_base / turning_radius), the behavior of the car in the simulator will actually be correct since
will then extract RR and use it as RR correctly in the following calculations, but in this case our steering_limit is no longer SA in the diagram and doesn't have any useful meaning.
We should update line 839 to use tan instead of sin then update and clarify the documentation to avoid any confusion.
The text was updated successfully, but these errors were encountered:
Environment
Description
According to the doc, <steering_limit> should be
asin(wheel_base / turning_radius)
(https://gazebosim.org/api/sim/8/classgz_1_1sim_1_1systems_1_1AckermannSteering.html), see the graph and formula, that means the turning_radius here should refer to RF.This turning radius is later extracted to be used in the code:
gz-sim/src/systems/ackermann_steering/AckermannSteering.cc
Line 839 in 9e31084
Everywhere else in the following calculation turning_radius is assumed to be RR: notice the usage of tan
gz-sim/src/systems/ackermann_steering/AckermannSteering.cc
Lines 863 to 866 in 9e31084
This is especially obvious in the differential simulation calculations:
gz-sim/src/systems/ackermann_steering/AckermannSteering.cc
Line 867 in 9e31084
The left and right joint speed calculation below can be simplified to (Linear Velocity / Wheel Radius) * (1 +- 0.5KingPinWidth / TurningRadius)
gz-sim/src/systems/ackermann_steering/AckermannSteering.cc
Lines 869 to 875 in 9e31084
This checks out if the left and right joint speed refers to angular velocities of the 2 non-steering wheels at the back axel and turning radius being drawn to the center between the back wheels, meaning TurningRadius should be refering to RR and NOT RF.
HOWEVER if we blindly follow the documentation and mistakenly use RR as 'turning_radius' of our physical car and follow <steering_limit> =
asin(wheel_base / turning_radius)
, the behavior of the car in the simulator will actually be correct sincegz-sim/src/systems/ackermann_steering/AckermannSteering.cc
Line 839 in 9e31084
will then extract RR and use it as RR correctly in the following calculations, but in this case our steering_limit is no longer SA in the diagram and doesn't have any useful meaning.
We should update line 839 to use tan instead of sin then update and clarify the documentation to avoid any confusion.
The text was updated successfully, but these errors were encountered: