move_to_pose.py not consistent with book when alpha > pi/2
qlibp opened this issue · 2 comments
Describe the bug
As the book says,
For the case where the goal is behind the robot, that is α ∉ (−pi/2 , pi/2 ], we reverse the vehicle by negating v and γ in the control law
But the implementation here just negate linear velocity.
Expected behavior
I tested with negating both linear velocity & angular velocity, the control vibrates, but the overall trajectory makes more sense than only negating the linear velocity.
Screenshots
@qlibp I agree with this view. I have also tried this measure, but there is a vibration situation. Can you tell me how you suppress vibration? Can you share that part of the code?
@qlibp I agree with this view. I have also tried this measure, but there is a vibration situation. Can you tell me how you suppress vibration? Can you share that part of the code?
Simply changing the sign of w to -w when alpha > pi/2 or alpha < -pi/2 is not enough, because alpha may jump between -pi and pi at this time, causing the sign of w to also jump, resulting in vibration. Therefore, when alpha > pi/2 or alpha < -pi/2, alpha needs to be recalculated using alpha = angle_mod(np.arctan2(-y_diff, -x_diff) - theta).

