-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add mechanism to reset multi-query and occupancy grid based path planners #212
Comments
Looks like something I can look into 👍 |
Were there any specific issues faced due to the factory pattern or is it just that it adds more complexity without much returns for it ? |
Cool! The motivation is that now you can magically close a hallway door mid-navigation and have the path execution stop due to impending collision. That all works. But, to correctly replan with the new obstacle, depending on the planner you need to regenerate the PRM and/or pass in an updated occupancy grid. RRT still works fine because it just uses the latest world info in subsequent plans.
I think it's mostly the complexity for what's supposed to be an educational tool... but I do like at least having all the common visualization code in a base class. Haven't thought this through very much, but my idea is maybe use the Any code that needs to be reused beyond that can just be a free function from utilities, maybe? As another upside, there are now a LOT more tests since last time the path planners were touched :) |
Yeah, you are right about the "educational" tool part. |
@sea-bass PRM:
Looks like only the A-start planner does not have the |
Right. And I think the |
What if we just pass in the |
I like this, it gets away from having to contextually figure out whether your EDIT: I think there was probably a design choice we considered earlier, that we shouldn't store the occupancy grid in the planner or in the robot, because what if you have multiple robots sharing the same occupancy grid? But I think that's maybe premature optimization especially since this is not a nav framework. |
Ok lets try doing it that way , it would also simplfy things (get rid of some code) during world creartion from yaml in the |
I just remembered once of the main considerations for why we did it the current way To address this in our new design, we could have an optional |
Right, exactly that. I think the default inflation radius should be if inflation_radius is None:
self.inflation_radius = robot.radius or as I learned you can do in newer Python versions: self.inflation_radius = inflation_radius or robot.radius this should be fine because the planner is linked to a robot itself? |
Planner has no information about the robot right now (by design) |
Makes sense... and since robots themselves have a That also gives you the benefit of raising errors if you try to run a planner that needs the robot to have a world connected, but there is no world attribute? |
Yes, just tried out the approach on the Astar and tested using demo file. |
For |
Another simplification we could do is to split the grid and graph implementations completely into separate files and have the user specify the type explicitly using naming like
|
When we modify the world, single-query path planners like RRT can just grab that new information no problem.
However, in the case of our PRM planner, or occupancy-grid based planners, this data must be regenerated to keep track of changes in the world.
It's okay if this ends up being an explicit action that the robot must take, which means:
The text was updated successfully, but these errors were encountered: