-
Notifications
You must be signed in to change notification settings - Fork 417
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
Inconsistent semantics in "position" for reported collision #384
Comments
Sounds like the right plan to me! Would be nice for the returned values always to mean the same thing. One thing you didn't mention is what happens with non-primitive contact. Are those currently returning the midpoint in all cases? |
Excellent point; I've modified the text above to the best of my ability. |
hello, it may be off-topic, but it seems that there are some inconsistencies in the returned normal direction as well, I reported the bug here : #422 |
What is the status on this for older versions of the fcl library? I'm still using fcl-0.5 in the MoveIt environment with ROS Kinetic. |
@ClementRolinat I'm going to respond to #422 there. |
Problem statement
when calling
fcl::collide()
, configured to return penetration depth, normal, and "contact position", the semantics of contact position differ based on the combination of primitives.Some quick rhetoric to use when discussing what is happening in the code. When two geometries collide, there is an overlapping region. Generally, we expect the following:
Survey of primitive-primitive semantics.
Cases where contact position lies at the midpoint of the line segment:
ccdMPRPenetration()
which is documented...vaguely. However, digging into the code, it seems to be the midpoint. This can/should be confirmed.Always lies on one surface (i.e., at end point of line segment)
Extraneous
Proposal
Everything should be pushed up into the mid-point formulation.
Side topic [Added in edit]
In some cases, the query doesn't mean anything. For example, the penetration depth of halfspaces is meaningless because the volumes are infinite; any intersection is, ultimately, an infinite intersection. Conversely, planes have no volume so plane-plane penetration is ill-defined; the depth must always be zero. We need to consider those weird cases and handle them appropriately.
The text was updated successfully, but these errors were encountered: