Virtual Tracks for Navigation
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.
Could you please attach your image to your question directly? I've given you sufficient karma for that.
Thank you! I've attached the image to the question, as directed.