Skip to content

Latest commit

 

History

History
145 lines (123 loc) · 5.01 KB

File metadata and controls

145 lines (123 loc) · 5.01 KB

Fresco Assembly Sequence Determination (Optional Fragment Spacing)

1) Description

This code determines the assembly sequence for each fragment of an entire fresco group. Furthermore, it adds a space between each fragment so that it is possible to place it on the work bench using, e.g., the RePAIR SoftHand.

2) Installation

Python virtual environment

Setup a Python 3.12 virtual environment e.g. "fresco-assembly-sequence". You can use e.g. Virtualenv with Virtualenvwrapper or Conda.

If you are using Virtualenv with Virtualenvwrapper, make sure that you are in the correct environment.

workon fresco-assembly-sequence

Then clone the repository and install the required requirements.

git clone git@github.com:RePAIRProject/fresco_assembly_sequence.git
pip3 install -r requirements.txt
cd ..

Software installation

Go to the root folder and install everything:

cd fresco_assembly_sequence
pip3 install -e .

Download fresco fragment meshes

You have to navigate to the meshes folder and use gdown to download and unzip the fresco fragment meshes.

cd /fresco_assembly_sequence/fresco_assembly_sequence/meshes
gdown <file_id>
unzip <file_name>
rm <file_name>

Replace <file_id> and <file_name> with one entry of the following table. For example:

cd /fresco_assembly_sequence/fresco_assembly_sequence/meshes
gdown 1g1CEPjjb5doxD8e317eZYAkK77YDBitP
unzip 2d_frescoes_group_15_and_29.zip
rm 2d_frescoes_group_15_and_29.zip
Dataset ID File_name File_id
1 2d_frescoes_group_15_and_29.zip 1g1CEPjjb5doxD8e317eZYAkK77YDBitP

3) Usage

Commands

If you are using Virtualenv with Virtualenvwrapper, make sure that you are in the correct environment.

workon fresco-assembly-sequence

Run the code with default parameters:

python3 fresco_assembly_sequence.py

Run the code with a specific fresco, e.g., fresco group 29:

python3 fresco_assembly_sequence.py -f 29

Run the code with a specific assembly sequence type, e.g., following a snake pattern:

python3 fresco_assembly_sequence.py -a snake

Run the code with a specific minimum gap between each fragment, e.g., with an inflation width of 20 mm:

python3 fresco_assembly_sequence.py -i 20

Plotting and Debugging

Plots can be generated and saved with -s. For debug purposes, the plots are visualisable during execution of the code with -p. In this case, the assembly sequence is animated. To continue the code's execution all plot windows have to be closed. For debug prints, the verbosity level is adjustable via -v.

Show all parameter options:

python3 fresco_assembly_sequence.py -h

The fresco placement poses and the assembly sequence are stored in a json file called fresco_placement.json. The file is stored with the meshes of the corresponding fresco group. Furthermore, all plots are stored there. E.g. for group 29, you can find the files in: /fresco_assembly_sequence/fresco_assembly_sequence/meshes/group_29/2D/

Examples

Fresco Scaling

The images below show the scaling of fresco 29 with -i 20:

Ground truth fresco Scaled fresco

Snake Assembly Sequence

The images below show the determined assembly sequence for the scaled fresco 29: Assembly sequence snake

fresco_placement.json

The images below show the resulting json file including the assembly sequence and the 2D placement poses (x,y,yaw):

{
    "header": {
        "fresco_group": 29
    },
    "assembly_sequence_snake": [
        {
            "0": "RPf_00204_intact_mesh",
            "1": "RPf_00208_intact_mesh",
            "2": "RPf_00205_intact_mesh",
            "3": "RPf_00207_intact_mesh",
            "4": "RPf_00206_intact_mesh"
        }
    ],
    "assembly_sequence_spiral": [
        {
            ...
        }
    ],
    "RPf_00204_intact_mesh": {
        "trans_x": 1307.2354784251324,
        "trans_y": 1923.3159280175662,
        "ori_yaw": 121.36839075838125
    },
    "RPf_00207_intact_mesh": {
        ...
    },
    ...
}

4) Known Issues

None.

5) Relevant publications

"Compact Multi-Object Placement Using Adjacency-Aware Reinforcement Learning", B. Kreis, N. Dengler, J. de Heuvel, R. Menon, H. D. Perur, M. Bennewitz, in Proceedings of the IEEE-RAS International Conference on Humanoid Robots (Humanoids), 2024.

BibTex String:

@inproceedings{kreis24humanoids,
  title={Compact Multi-Object Placement Using Adjacency-Aware Reinforcement Learning}, 
  author={Benedikt Kreis and Nils Dengler and Jorge de Heuvel and Rohit Menon and Hamsa Perur and Maren Bennewitz},
booktitle={Proc. of the IEEE-RAS Int. Conf. on Humanoid Robots (Humanoids)},
  doi={10.1109/Humanoids58906.2024.10769899},
  year={2024}
}