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

Benchmark compared to FCL or Bullet #313

Closed
olivierp99 opened this issue Jun 28, 2022 · 10 comments
Closed

Benchmark compared to FCL or Bullet #313

olivierp99 opened this issue Jun 28, 2022 · 10 comments

Comments

@olivierp99
Copy link

olivierp99 commented Jun 28, 2022

Hello,

I was wondering what was the speed up of this library compared to the original FCL library or even compared to bullet.
Edit: For convex shapes or bvh or both

Cheers

Olivier

@jmirabel
Copy link
Contributor

@lmontaut have a partial answer I believe.

I did one several years ago, when reworking the GJK, and I found the GJK in hpp-fcl to be faster than fcl. I think @lmontaut obtained a similar result more recently.
Regarding BVH, I don't think anyone made a proper benchmark. hpp-fcl and FCL uses the same algo. In the past, I spent some time to optimize the OBB disjoint check so hpp-fcl may be faster, but that is to be verified on real data.

Mind that speed may not be what you should look at first. You should also compare the robustness, the available features, the maintenance...

@jcarpent
Copy link
Member

@lmontaut Do you think you can create such a benchmark?
@olivierp99 I would say that the main objective of FCL and hpp-fcl is modularity, contrary to Bullet. Depending on your needs, you should take this fact into account. One of the main advantage of hpp-fcl compared to FCL itself is the reduced number of bugs which have been fixed in hpp-fcl, mostly by @jmirabel and @florent-lamiraux.

@jmirabel
Copy link
Contributor

@olivierp99 we are always keen on comparison with other collision detection libs and on user feedback (and contributions !).

After you have gone through the selection process, if you can give us your insights, that would be appreciated.

@lmontaut
Copy link
Contributor

@jmirabel @jcarpent I compared hppfcl and CCD for collision detection. I took meshes from the shapenet dataset and found that hppfcl was about 2x faster than CCD if I recall correctly. I can do the same kind of benchmark against FCL, bullet, with a more diverse set of shapes than just meshes.

@olivierp99
Copy link
Author

Hello again and thanks a lot for all of your answers! I am currently using FCL and it's been working fine. I was maybe looking to switch as it's not really maintained anymore and wondered what was the speed up as the same time.
Feel free to close the issue
Have a nice day!

@jmirabel
Copy link
Contributor

@jmirabel @jcarpent I compared hppfcl and CCD for collision detection. I took meshes from the shapenet dataset and found that hppfcl was about 2x faster than CCD if I recall correctly. I can do the same kind of benchmark against FCL, bullet, with a more diverse set of shapes than just meshes.

FCL uses CCD so I guess FCL is slower than or equal to CCD as it has to convert the shapes and the results. I don't think it is necessary to compare FCL and hpp-fcl for convex objects. It can make sense for BVH.

@jcarpent
Copy link
Member

FCL uses CCD so I guess FCL is slower than or equal to CCD as it has to convert the shapes and the results

@jmirabel @jcarpent I compared hppfcl and CCD for collision detection. I took meshes from the shapenet dataset and found that hppfcl was about 2x faster than CCD if I recall correctly. I can do the same kind of benchmark against FCL, bullet, with a more diverse set of shapes than just meshes.

FCL uses CCD so I guess FCL is slower than or equal to CCD as it has to convert the shapes and the results. I don't think it is necessary to compare FCL and hpp-fcl for convex objects. It can make sense for BVH.

CCD only requires support function, so there is no real need to convert objects.
Yet, @lmontaut has compared both (hpp-fcl and CCD) and hpp-fcl is much more faster, including the fact that we have recently accelerated the underlying GJK algorithm (see https://hal.archives-ouvertes.fr/hal-03662157/).

@jcarpent
Copy link
Member

jcarpent commented Jun 29, 2022

Hello again and thanks a lot for all of your answers! I am currently using FCL and it's been working fine. I was maybe looking to switch as it's not really maintained anymore and wondered what was the speed up as the same time. Feel free to close the issue Have a nice day!

The main gain would be at the bug fixes level to avoid indirect bugs and also better performances in general according to the whole discussion.

@jmirabel
Copy link
Contributor

CCD only requires support function, so there is no real need to convert objects.

I let you check FCL source code. The are conversions between FCL classes and CCD classes.

@jcarpent
Copy link
Member

I let you check FCL source code. The are conversions between FCL classes and CCD classes.

I certainly mismatched with the way @lmontaut used libccd to compare against hpp-fcl.

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