-
Notifications
You must be signed in to change notification settings - Fork 31
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 modular planner interface. #82
Conversation
@sea-bass , I would like to know your opinion on this. |
I think separating planners from the world is the way to go. At some point I thought, why not just have 1 planner that multiple robots can call? But then if they're different sizes or have different dynamics, that doesn't reallt work. Also, this tool's original definition of "global" vs "local" is different from what it typically means. All the planners available now are technically global planners, in that they use knowledge about the world to plan the whole path. So go with your idea! |
If we are proceeding with the "no world planner" idea. There are some changes that will need to be made.
It might also be good for What do you think @sea-bass |
The above all seems reasonable -- thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just tested again and found some more bugs.
First, I realized that the robot orientation doesn't actually change with the A* paths. Maybe the fill_yaws()
call got lost?
Also, if the robot is at counter0_right
and you hit "Pick", it seems we're still looking for objects in counter0_left
, which seems to be a bug.
When I start the multirobot demo, navigating with the PRM is animating so slow it never re-renders. Are the graph artists getting re-displayed constantly or something?
Also in the multirobot demo, when I switch from the PRM robot robot1
to the RRT robot robot2
and then switch back out, the graph doesn't get cleared and the old RRT keeps showing up forever. I think the graph needs to get cleared out when robots/planners are switched. Added a comment in the UI code which I think will fix that.
Is that not the expected behaviour that we talked about yesterday ?
I did not face any issues with the multirobot PRM. |
Exactly this! |
I think the reason for high rendering (and possibly search ) times is because every edge is getting added twice now.
EDIT : Looks like the docstring need to be updated here since it is still referring to 'search_graph` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was already there , but I don't think these Node
object comparisons actually work since there is no __eq__
or __hash__
operator defined.
Even if 2 nodes had the same attributes the nodes would be reported as not equal.
Is there something I am missing here ? @sea-bass
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dug into that issue about the counter and object resolution and am going to say this is working as intended, so no need to look at that further. It's fine, and not a change introduced by your updates at all.
In testing, I found an issue that the A* planner always started and ended with zero yaw because the actual start/goal orientations were fully discarded. So I fixed that plus some other minor stuff.
I just have 1 last major comment about removing the remove_edge()
function in the graph class. Once that is resolved, should be good.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I went ahead and fixed all the remaining things I found, so LGTM.
@ibrahiminfinite let me know if you maybe wanna do your own round of final testing and then we can get this in.
Thanks for the work on this one! Big improvements to planners, for sure.
I was wondering what unit tests I should put in to make sure this was not breaking anything. Thanks for guiding me !! |
This PR adds a new planner interface that makes it easy to integrate and use new planners in pyrobosim.
The new interface does not break any existing pipelines as the APIs and behaviours remain the same.
Will close #81, #15
TODO :
Edit : Add
graph_from_world
method (No planners currently need this, postponing till this is needed)NOTE: Might break the pipeline when loaded as the "world" global planner. However I am not sure if the world should have a planner as the "planning" is a behaviour of the robot and so, it makes sense for only robots to have planners. Might be a good idea for a robot to have both a global and local planner , instead of the global planner being a part of the world.