gkouros / waypoint-global-planner

A global planner that generates a path using manually inserted waypoints. Compatible with move_base.
BSD 3-Clause "New" or "Revised" License
171 stars 58 forks source link

When encountering obstacles, the path always returns to the starting point? #7

Closed ju-mingyue closed 2 years ago

ju-mingyue commented 2 years ago

Hello, I compiled and installed the package on the ros melodic version, but when I run, if there is an obstacle in the middle of the path, the path planning of the robot will return to the original position? The dwa used by my current local algorithm should be able to bypass the obstacle and continue to track the global path when it encounters an obstacle, but it is actually not possible, as shown in the following figure:

深度截图_选择区域_20211208181223

I don't know where the problem is, I look forward to your reply

ju-mingyue commented 2 years ago

@gkouros Mr. gkouros, I look forward to your help.

gkouros commented 2 years ago

The global plan provided by the planner should be fixed, so it's most likely an issue with the configuration of DWA.

Starkhen commented 2 years ago

I have the same situation when I use the teb local planner.

gkouros commented 2 years ago

@Starkhen Not sure I can help you with that. I don't think it's a global planner issue, but the only quick thing you can do is simply specify a global path that does not pass through obstacles. Otherwise, look try to debug the local planner and why it doesn't follow the path.

thschafer commented 8 months ago

I found this issue as well using TEB. It appears that makePlan() is called when the robot reaches the obstacle in the global path, and the local planner fails to find a feasible trajectory. It's not clear to me why makePlan() is called, as I have move_base's max_planning_retries set to zero and planner_frequency set to zero.

I suppose one way to fix the behavior would be to track which waypoints have been cleared, and trim the global plan before republishing, but ideally the plan would just be abandoned.

Edit: It appears that the local planner is reporting "path blocked", which causes move_base to get a new global plan. It seems switching to move_base_flex would provide framework for abandoning a blocked plan, vs. replanning.