Open doisyg opened 5 years ago
Once again, I shooted too fast.
Solved by setting teb param global_plan_overwrite_orientation
to false and GlobalPlanner orientation mode to Interpolate
Reopening, I would expect the robot to continue moving backward when global_plan_overwrite_orientation
is set to True, no matter the orientation of the global plan
Hi,
in the first case, you placed the goal inside the local costmap and if allow_init_with_backwards_motion = true
, the optimizer is likely to find the backward motion directly.
However, for goals outside the local costmap, intermediate goal poses are obtained from the global plan either close to the costmap border or as soon as max_global_plan_lookahead_dist
is exceeded.
In general, we need to assume that the global planner already provides knowledge on intermediate robot orientations. Just imagine a car park, in which parking lots close to the walls can only be accessed by backward motions. However, guessing this from just the local costmap which does not reveal the existence/shape of the parking lot at first is often impossible.
However, since not all global planners provide information on the orientation, global_plan_overwrite_orientation=true
is just a workaround to guess the orientation. And the most likely guess is to drive forward if not any further information like path lengths, global costmap etc. is considered.
See this FAQ entry and #115 for more information.
Hello, I have a platform that is symmetrical and I don't want it to rotate to favorite forward motion when it doesn't need too. When sending goals close to the robot it works (i guess it is close enough that the local planner can directly plan up to the goal):
Whereas when sending goals further away it doesn't. The local planner tries to reach the furthest global plan point it can, but it tries to end with a forward motion, hence doing 2 unnecessary 180° rotation:
Here are my parameters (it tried to make max_vel_x_backwards > max_vel_x without effect)