-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Proximity engine seems to report wrong results with cylinders #8049
Comments
You can see a video of the simulation of a cylinder falling against a half space (no friction, that is why it only moves up and down and rotates but doesn't move laterally since contact forces only act in the z-direction). The dynamic is performed by |
This is the function that actually computes the intersection. |
ok, this is the offending line (or one of them). It should say instead: // this checks for cylinder axis aligned with plane normal (that's why the math is simpler!)
if(std::abs(cosa) < halfspaceIntersectTolerance<S>()) { ...
// ^^^^^ missing abs(). Another thing I didn't like about this implementation is the very loose tolerance used in the check. |
Fix pushed in flexible-collision-library/fcl#255 |
@amcastro-tri can this be closed? |
Yes. Thanks @avalenzu |
I created a simple test. A vertical cylinder against a half space. In principle, if you rotate the cylinder about its center 180 degrees, you should get the same result. This is not the case, the proximity engine reports very different results.
This test prints the values of the computed depths. When there is penetration, the reported depth should be "0.051". At zero degrees rotation that is exactly what you get. With 180 degrees rotation you get "0.001".
Maybe I got the frames wrong?
The text was updated successfully, but these errors were encountered: