I'm working on a differential drive mobile base and have navigated successfully with move_base and teb_local_planner and the global_planner.

The next navigation behaviour I would like to achieve is using tracks for navigation. I would like to define different waypoints and have pre-defined relationships between the edges (e.g. unidirectional or bidirectional), something like this image below:

The mobile base should navigate to the point closest to it on the track and plan a path to the goal using as much of these "preferred" tracks as possible, while being able to avoid obstacles in the path.

Q1. Are there any packages that are already doing this?

I tried out waypoint_global_planner and it works great. You can manually define waypoints and have it linearly interpolate a path for you, albeit without collision avoidance. But what I'm looking for is something that can be set-up and then used by just defining the tracks and giving the goal point, instead of defining waypoints for every run.

An option is to use custom costmap layers to "prefer" a certain track but i don't know if there exists a mechanism which forces the global planner to stick to the preferred path and only use the "non-preferred " path for obstacle avoidance.When an obstacle occurs in the "preferred" path i want the mobile base to navigate for a short period through the "non-preferred" path in order to avoid it, following which it should return to its original path. How do I go about achieving this?

Any help will be appreciated! Please let me know if anymore details are required.

edit retag close merge delete