Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

Request for Detailed Explanation of Sphere-Tree Robot Construction Process #32

Closed
ZhouYixuanRobtic opened this issue Oct 17, 2024 · 2 comments

Comments

@ZhouYixuanRobtic
Copy link

Hello,
First of all, I want to thank you for your fantastic work on this project. It has been incredibly valuable, and I really appreciate the effort and expertise you've put into it.
I would like to request a more detailed explanation of the sphere-tree construction process in the documentation or code comments. While reviewing the current materials, I found that some steps in the construction process were unclear, especially regarding how the spheres are generated, combined, and their hierarchy structured.

It would be extremely helpful if the following aspects could be explained in more detail:

The algorithm used for constructing the sphere-tree. I found that https://github.com/mlund/spheretree takes vague description. And hard to combine them into a sphere-based robot.
The criteria for sphere combination at different levels.
Any optimization strategies applied during the construction.
This clarification would greatly benefit developers trying to understand or modify the implementation.

Thank you for considering this request!

@zkingston
Copy link
Contributor

Thank you for the kind words! Glad you find the project useful.

The process for generating the 2 level sphere hierarchy used in the VAMP collision checker is as follows:

  • Preprocess the robot's mesh collision geometry to confirm that the meshes are watertight manifolds. We used https://github.com/hjwdzh/Manifold and https://github.com/hjwdzh/ManifoldPlus
  • Optionally, simplify the mesh geometry with something like quadric mesh simplification: https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification
  • Use the medial-axis sphere tree generation script from https://github.com/mlund/spheretree to create a two level sphere tree, with desired branching factor. Choosing the desired branching factor should be done to the level of approximation desired - more spheres better approximate the mesh, but increase complexity. This will create two sets of spheres, a large bounding sphere for the entire mesh and a more refined approximation. It is possible to do more levels of hierarchy, see the original sphere tree paper. A lot of the parameters for the sphere tree script are hyperparameters, I believe defaults should work OK. Branch and depth are the main parameters to modify to control sphere tree size and depth.

Also, please subscribe to the issue that is tracking the release of the tracing compiler: #7
Part of this release will include a tool to automatically create the spherized URDF of the robot.

@ZhouYixuanRobtic
Copy link
Author

Thanks your kind explanation. I'm working on an automatic tool of creating the spherized URDF too. Once I'm finished, it will be released publicly as well. Thanks again for your excellent works.

@KavrakiLab KavrakiLab locked and limited conversation to collaborators Oct 19, 2024
@zkingston zkingston converted this issue into discussion #33 Oct 19, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants