AutodeskAILab / JoinABLe

JoinABLe: Learning Bottom-up Assembly of Parametric CAD Joints
76 stars 14 forks source link

Sequence issues in future applications #3

Closed CodingNovice7 closed 1 year ago

CodingNovice7 commented 2 years ago

This is so cool that you are doing this work, thank you for being able to open source such cool work. In the future application in this article you give some demonstration of multi-part assembly. I was interested in this part, so I went and downloaded your open source assembly dataset, but unfortunately I wasn't able to get the sequence information about the multi-part assembly from the assembly.json file of this dataset. So if it is convenient for you, I would like you to give me some tips about how to extract the assembly sequence from the information in the assembly dataset. Thank you!

karldd commented 2 years ago

So there is a timeline_index that is available when the source design is created in parametric design mode in Fusion 360.

See the timeline_index entry here

    "occurrences": {
        "8b4ef3ba-b296-11eb-9d3c-f21898acd3b7": {
            "name": "M2.5*5mm Low Cap v8:1",
            "type": "Occurrence",
            "component": "8b4eb9fe-b296-11eb-9d3c-f21898acd3b7",
            "is_grounded": false,
            "is_visible": true,
            "timeline_index": 14,
            "physical_properties": {
...
CodingNovice7 commented 2 years ago

Thank you for your timely reply! But on this issue I still do not understand some. You said in your paper that you can train on the joint assembly dataset and then test on the assembly dataset, is there any special requirement for the test data in the assembly in this case? Thank you as always and have a nice day !

karldd commented 2 years ago

Yes, in the paper we show a preliminary example of running inference on the assembly data, from a model trained on the joint data. This model can take any two B-Rep parts and run inference, so we simply pass pairs of parts from an assembly in sequence to assemble them.

image
CodingNovice7 commented 2 years ago

Thank you! But the format of this network input is currently the pickle you processed, that is, there is still a part of data processing from the json file to the pickle file, can you elaborate a bit about this part of work? Assembly data for prediction is when each part of the part graph is still the B-REP entity as the nodes of the graph, the adjacency as the edges of the graph, that consists of multiple parts of an assembly and how to represent it?

karldd commented 2 years ago

But the format of this network input is currently the pickle you processed, that is, there is still a part of data processing from the json file to the pickle file, can you elaborate a bit about this part of work?

Yes you are right. The assembly data actually only provides the B-Rep files in .smt or .step format. If it is helpful I can post some code to go from those B-Rep files to a json format that can be read by the existing data loader.

Assembly data for prediction is when each part of the part graph is still the B-REP entity as the nodes of the graph, the adjacency as the edges of the graph, that consists of multiple parts of an assembly and how to represent it?

That is open research, in section 6 of the paper we simply consider pairs of parts from a given sequence.

CodingNovice7 commented 2 years ago

Oh, it would be great to open source this part of the code, and it would be great to open source the code for the multi-part assembly in the future application of the paper. Thank you as always and have a nice day !

CodingNovice7 commented 1 year ago

So there is a timeline_index that is available when the source design is created in parametric design mode in Fusion 360.

See the timeline_index entry here

    "occurrences": {
        "8b4ef3ba-b296-11eb-9d3c-f21898acd3b7": {
            "name": "M2.5*5mm Low Cap v8:1",
            "type": "Occurrence",
            "component": "8b4eb9fe-b296-11eb-9d3c-f21898acd3b7",
            "is_grounded": false,
            "is_visible": true,
            "timeline_index": 14,
            "physical_properties": {
...

Sorry to reopen this issue. I took a closer look at the timeline-index in the json file, which seems to be the timeline in the Fusion 360 API, but I found that this timeline-index only appears in the occurrences. But the sequence of parts in the occurrences cannot be determined, that is, assuming that the occurrences contain multiple parts, I don't know in what order the parts should be assembled. I want to know if there is a sequence of assembled parts in the assembly dataset so that I can assemble the parts one by one based on this sequence information, so this sequence information should not only appear in the occurrences, but should be included in each part information .

karldd commented 1 year ago

So the timeline_index is indeed for the occurrence, not the part. It indicates when in the parametric history (i.e. timeline) that occurrence was created. So it is not related to the assembly order, but is the order of creation when the designer created the assembly. The assembly order is not available in this data, or any other dataset I know of.

As a side note, it might be possible to produce a physics based 'ground truth' order using our recent work here: http://assembly.csail.mit.edu

CodingNovice7 commented 1 year ago

Ok, thanks! But I just found a problem, although he has nothing to do with this issue, but to avoid trouble, I still do not go to reopen an issue. I compared the graph data in test.pickle in your publicly available j1.0.0_preprocessed with the data in the corresponding json file and found that the values of area and length do not match in the json file and the test.pickle file. As shown in the figure below, this is the data in test.pickle. test_area test_length As shown in the figure below, this is the data I extracted from the corresponding json file. length area What's going on here?

CodingNovice7 commented 1 year ago

Looking forward to your reply! Thank you as always and have a nice day !