Skip to content
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

fcl::distance() erroneous penetration depth query when using solvers different than INDEP #244

Open
j-rivero opened this issue Jan 4, 2018 · 4 comments

Comments

@j-rivero
Copy link
Contributor

j-rivero commented Jan 4, 2018

The issue was originally found by @avalenzu, I just reporting it here so we can track it and help others that find this problem. The original report can be read at RobotLocomotion/drake#7417 (comment), I reproduce part of it here:

Does appear to be a regression due to cd2c6a1. Prior to that commit, the fcl::distance() function would perform a penetration depth query in order to compute a signed distance for intersecting geometries. After that commit (and the subsequent fixes in 5230025) it performs the penetration depth query only when using the INDEP solver. When using the LIBCCD solver it does ... something else. That "something else" returns the erroneous values.

@Levi-Armstrong
Copy link
Contributor

I am not sure if this related but I have been recently upgrading MoveIt's FCL implementation to take advantage of the signed distance but when checking two object types (OT_BVH) it is not returning a signed distance.

@BryceStevenWilley
Copy link

@Levi-Armstrong I believe what you're talking about is #221, and seems to only deal with a few specific if statements unrelated to this issue.

@BryceStevenWilley
Copy link

As a starting point for anyone who wants to investigate what the "something else" is doing, I've tracked the distance calculation to here, which is based on the nearest edge EPA calculation.

@hongkai-dai
Copy link
Contributor

The EPA implementation using LIBCCD solver is almost completely rewritten, after #305 #296 #290. They are still using LIBCCD data structures, but the implementation is updated, with unit tests added. I believe we can close this issue.

There are still some TODOs left for the EPA implementation. For example, when some simplex/polytope is degenerate, the algorithm might return wrong result. I observer one such failure when two boxes are touching, as reported in the unit test https://github.com/flexible-collision-library/fcl/blob/master/test/narrowphase/detail/convexity_based_algorithm/test_gjk_libccd-inl_signed_distance.cpp#L315~L322. I will address this issue later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants