-
Notifications
You must be signed in to change notification settings - Fork 532
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
Custom collision detection allocator is reset to the default FCL implementation #2575
Comments
As alternative option, we tried to set our custom collision detection as the default one via
|
So, I have no idea how this has evolved over the years - but noting that way way back when I added support for custom collision interfaces (edfa221) the intention was that the custom collider would be a plugin (but also, at that point in 2014, everybody pretty much used the ROS MoveGroup interface and so a plugin was the natural way to load custom code, whereas MoveIt2 is certainly leaning more heavily into C++/Python interfaces for bigger applications). |
@mikeferguson, yes, a plugin totally makes sense for MoveGroup interface. In addition to a plugin approach, @AndyZe / @henningkayser , could you please look at this one and share your thoughts? Looks to me the things got broken after removing support of multiple collision detectors (#364) |
This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups. |
@medvedevigorek thanks for reporting this! I think the observed behavior is in line with the removal of supporting multiple collision backends at the same time #364 (which had its own pitfalls and issues). Aren't you able to allocate (and override) your custom collision checker with each of your MoveItCpp instances? Currently, there is no way to specify custom collision checkers at construction. |
This issue is being labeled as stale because it has been open 45 days with no activity. It will be automatically closed after another 45 days without follow-ups. |
Description
In our setup we use a custom collision detection logic and for that we have implemented custom collision detector allocator. Upon creation of
MoveItCpp
instance we callallocateCollisionDetector()
on the planning scene to replace the default collision detector (FCL) with our implementation.However at some point later the collision detector allocator in the planning scene gets replaced back to FCL and as the result none of our custom logic is getting invoked during the motion planning phase.
We used similar logic in MoveIt1 - call setActiveCollisionDetector to set custom collision detector - where it worked fine.
Going thru the code it comes down to a difference in implementation of
clearDiffs()
method between MoveIt1 and MoveIt2, the latter replaces collision detector allocator while MoveIt1 keeps the current one.If I got the sequence right by reading the code then it must be the following:
MoveItCpp
is instantiated and it creates an instance ofPlanningSceneMonitor
PlanningSceneMonitor
creates an instance ofPlanningScene
with default collision detector allocator being set to FCLPlanningSceneMonitor
records current scene asparent_scene_
and startsscenePublishingThread
allocateCollisionDetector()
call, this happens onscene_
object which happens to be a child scene nowscenePublishingThread
callsclearDiffs
onscene_
instance and this results in the collision detector allocator being set to parent's one from step 2.And the main questions are:
Your environment
Steps to reproduce
See description above
Expected behaviour
I guess the expected behavior is to keep custom collision detection allocator if it was set by the user explicitly.
Actual behaviour
The collision detection allocator is being set back to the default one (FCL) upon scene update handling
Backtrace or Console output
The text was updated successfully, but these errors were encountered: