Skip to content

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.

Notifications You must be signed in to change notification settings

RePAIRProject/fresco_assembly_sequence

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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}
}

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages