-
Notifications
You must be signed in to change notification settings - Fork 155
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
allowCollisions from ModifyPlanningScene doesn't update the ACM of ComputeIK #565
Comments
That actually works! I've never thought about using two However, when executing the task, a contact is found between the tool and the object, despite the planning being successful. I thought this might be corrected with your fix (#561), but it looks like there is still a problem. I've prepared a simple repro to show the issue here. This is the log:
|
Friendly ping @rhaschke |
I had a look into your example. The problem is, that backbwards-directed ModifyPlanningScene stages are not supported in Humble, because MoveIt Humble is missing a key fix for this to work (moveit/moveit2#2745). Apart from that, your pipeline is not very meaningful: While you can disable collision checking during planning and execution (while approaching the object with closed fingers), the actual execution will surely move or topple the object due to a collision. Are you sure, you really want to do that? broken.mp4 |
Thanks a lot for your effort, Robert. As soon as the PR is merged, I will try it on my setup and close the issue if it is also resolved on my end.
The main reason for this is that our setup involves planning with objects that have many contact points, such as screwing a bolt into a nut. We could use collision meshes with a higher polygon count, but this significantly increases the planning time. To mitigate this, we use low-poly meshes, which requires us to have the final picking stage in collision. Picking the cylinder with the gripper closed was the simplest way I found to illustrate a |
I recently realized that when attempting to allow the collision of an object using a
ModifyPlanningScene
stage and having aComputeIK
stage within it, collisions are not allowed. It seems this occurs becauseComputeIK
receives a monitored stage that doesn't have theAllowedCollisionMatrix
updated with the changes made by theModifyPlanningScene
stage.As a more pragmatic example of this issue, let's consider a scenario where we have a vacuum gripper end effector, and we want to allow the tool to partially intersect with the object to be picked. I suppose anyone new to MTC would write something like this:
However, this setup doesn't work. We need to add more
ModifyPlanningScene
stages to correctly disable collisions:Yet,
ComputeIK
still detects a collision. Even trying something like this doesn't work either:As far as I'm concerned, the current workaround, as explained here, is to use
setIgnoreCollisions(true)
to disable all collisions inComputeIK
. However, this can lead to unexpected results as it disables ALL collisions, making it difficult to debug because other parts of the scene might be colliding.Our current workaround involves modifying the
ComputeIK
stage by adding anallowCollisions
method, enabling us to manually set the pairs of links we want to allow collision for (without needing to allow ALL collisions). I can prepare a PR if you find it useful.Nevertheless, I believe this behavior is very unintuitive, and it took me quite a while to realize what was wrong. I was thinking that perhaps one solution could be to individually add an
allowCollisions
method in each stage (similar to what we did withComputeIK
), so we wouldn't need to useModifyPlanningScene
to allow/forbid collisions anymore. This would address theComputeIK
issue, the need to use moreModifyPlanningScene
stages than expected, making the list of stages cleaner, and simplifying the logic of allowing/forbidding collisions depending on the stage direction which might be tricky to understand and was a common problem looking back at the issues of this repo.Let me know what you think about this or if there is any current fix to this issue. Thanks!
The text was updated successfully, but these errors were encountered: