Closed AmazingLc closed 4 months ago
I also looked at another post where you said, "The states/path is not saved because the planner fails to find a feasible solution. In the code, the returned path is None so nothing is saved." So, is there a way for me to understand how this process works and what the result is? For example, if I choose a model for disassembly, I want to know how it determines the first disassembled component and what the disassembly path for that component is (I remember the paper mentioned a 3x3 matrix or a 6x6 matrix with additional rotation angles if rotation is involved). There are many .npy files in the generated results, and I'm not sure if they are what I need.
HI,I would like to ask about Algorithm 1 and Algorithm 2 in the paper. How come Algorithm 1 seems to have completed the entire disassembly process, and Algorithm 2 appears to be an upgrade of Algorithm 1? However, Algorithm 2 requires Algorithm 1 to fully disassemble the object and obtain the state of each component as input. Moreover, Algorithm 1 and Algorithm 2 are named "disassembly path" and "disassembly sequence," respectively. It seems that the first algorithm obtains the disassembly path, and the second algorithm determines the sequence of components to be disassembled. But if the first algorithm can complete the disassembly, wouldn't it naturally provide the order of disassembling the components? I feel confused and hope to receive your assistance. (/ω\)
HI,I also want to ask, when I use this command: python baselines/run_multi_plan.py --seq-planner queue --path-planner rrt-connect --dir multi_assembly --id 00031 --render, in this Python program called "baselines", it seems that no matter which method I use, the displayed visuals with "--render" are all static.
Hi there, thank you so much for your interest! Due to the huge amount of my current workload, I will take a closer look and get back to you later this week. Thank you for your patience and understanding!
Thanks again for your patience. Here are the responses to your questions:
there seems to be a slight deviation in the results
This is reasonable since these parts are all disassemblable. What matters is the order you enumerate through parts.
There are many .npy files in the generated results, and I'm not sure if they are what I need.
These are 4x4 transformation matrices saved for the entire path: https://github.com/yunshengtian/Assemble-Them-All/blob/395ee5b638ccaa0cbe5b48101655560e49365195/assets/save.py#L60
if the first algorithm can complete the disassembly, wouldn't it naturally provide the order of disassembling the components?
Algorithm 1 is for two-part disassembly path planning, which does not consider multiple parts and sequencing. So algorithm 2 is for solving the part sequence for multi-part assemblies which use algorithm 1 as a subcomponent.
it seems that no matter which method I use, the displayed visuals with "--render" are all static.
If you mean all methods produce the same result, I am not surprised since 00031 is a fairly simple assembly. They will be different for more complex cases.
Great to receive your response! 1.I actually wanted to show in the image that I encountered some cases of clipping during the execution of certain models, but later I ran a complex model and it ran perfectly. 2.Is the fourth column of the 4x4 matrix representing the coordinates on the x, y, and z axes? Are the first three columns representing rotation? 3.Thank you for explaining the algorithm. Now I understand! 4.Regarding that, what I meant was that when I use the BFS method and use the --render command, it generates an animated GIF. But when I use the rrt-connect method, which requires using baseline py, using the --render command generates a single image instead of a GIF.
I would like to further clarify my question. If the fourth column of the 4x4 matrix represents the position coordinates of the model, taking '00031' as an example, I noticed that 99 npy files were generated, but there are only three model components. How can I determine which npy file corresponds to which component?
I actually wanted to show in the image that I encountered some cases of clipping during the execution of certain models, but later I ran a complex model and it ran perfectly.
Due to the nature of penalty-base contact in simulation, if you see this, then you may want to either increase penalty coefficient to avoid penetration or subdivide your meshes to be denser such that there will be more contact points.
Is the fourth column of the 4x4 matrix representing the coordinates on the x, y, and z axes? Are the first three columns representing rotation?
Yes we use the standard 4x4 homogenous transformation matrix format.
But when I use the rrt-connect method, which requires using baseline py, using the --render command generates a single image instead of a GIF.
This is because rrt-connect is not using physics so we are not doing physical simulation here to get the animation. The GIF from our method is generated by physics simulation. Though you can technically obtain the path from rrt-connect and then reset the simulation history states from the path to get the GIF.
How can I determine which npy file corresponds to which component?
Those 99 npy files are for the same component, which is the moving part that corresponds to the '--move-id' argument that you specified.
Thank you for your help!
Hello @yunshengtian ,I have successfully run the project, but there seems to be a slight deviation in the results. This is the command I used: python examples/run_multi_plan.py --seq-planner prog-queue --path-planner bfs --dir multi_assembly --id 00031 --render. However, the results appear to be somewhat different from the expected outcome in the example. I'm not sure where the issue might be occurring.I tried to save the GIF using the --save-dir option, but it failed. Therefore, I will use images as a substitute for now.These two images represent two different steps.
![image](https://github.com/yunshengtian/Assemble-Them-All/assets/133312066/a4d67460-cf69-40ef-b4ed-735e46a046f7)