Menno Lubbers,
Job van Voorst,
Maarten Jongeneel,
Alessandro Saccon
IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2022)
[Published paper on IEEE]
[Early Paper on HAL]
If you are using this paper as reference, please refer to it as
@inproceedings{Lubbers2022_LearningSuction,
author = {M Lubbers and J van Voorst and M J Jongeneel and A Saccon},
title = {{Learning Suction Cup Dynamics from Motion Capture: Accurate Prediction of an Object's Vertical Motion during Release}},
booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2022)},
year = {2022},
month = {October},
pages = {1541-1547},
doi = {https://doi.org/10.1109/IROS47612.2022.9982211}
}
- 220920_I_AM_Archive_4_1DReleases.h5 Raw data file
The content of this repository is associated to the paper "Learning Suction Cup Dynamics from Motion Capture: Accurate Prediction of an Object's Vertical Motion during Release". The objective for this project was to create a 1D release model of a suction cup, that would describe the position, velocity, and acceleration of the object after it is released from the suction cup. This project is part of the I.AM. project on Impact Aware Manipulation. More specifically, this paper is the first step to understanding the release dynamics of an object in the full 6D case. This is important to know within the concept of autonomous tossing of parcels in logistic applications.
With this code repository comes a data file, which can be found here. This data file (called an Archive) contains data of release experiments. The sequence of images below show a typical release experiment.
The blue plastic plate shown in the image above can be used to attach different weights. In the experiments, 10 different weights were attached to the blue plate and for each weight, the release experiment was repeated 11 times.
The firs part of this repository contains the scripts that are needed to subtract from the Archive all the necessary information to learn a 1D model.
The second part of this repository uses LWPR to learn a 1D model.
The last step of the repository uses the learned 1D model and simulates the release for different masses. This generates the figures as shown in the paper.
The code of this repository is all written in MATLAB and can directly be pulled from this repository.
To run the scripts, take the following steps
Download the Impact Aware Manipulation (I.AM.) archive containing suction cup release experiments (220920_I_AM_Archive_4_1DReleases.h5) file and place it in the data
folder. This is the experimental data file.
Add all folders and subfolders to the path, and run (from the root folder) the function dataProcessing.m
. This will subtract the necessary information from the experimental data, and save it as .mat
files in the data
folder.
Now, make sure that in modeling/LWPRsettings.m
line 3 is set to
3 model = lwpr_set(model, 'update_D', 1);
Also, make sure line 28 of modeling/learn1Dmodels.m
is uncommented, and line 29 is commented such that we have
28 init_Dvec = 650:-10:550; % initial kernel width/receptive field distance metric
29 % init_Dvec = 600;
and run modeling/learn1Dmodels.m
. This will take around 10 minutes to learn (for different settings) the force models.
Run modeling/simulate.m
. This will use the learned models and simulate the force release. A figure will pop up which shows the RMS errors for the different models (see image below). Based on this, you can select the model that gives the smallest error.
Next, make sure that in modeling/LWPRsettings.m
the update_D
setting is set to 0 such that we have
3 model = lwpr_set(model, 'update_D', 0);
Also, make sure line 28 of modeling/learn1Dmodels.m
is commented, and line 29 is uncommented, such that we have
28 % init_Dvec = 650:-10:550; % initial kernel width/receptive field distance metric
29 init_Dvec = 600;
and you fill in (on line 29) the model you want to run (e.g, 600
as in the example code above). Now run modeling/learn1Dmodels.m
.
Finally, run paperFigures.m
to obtain all the figures as used in the paper.
In case you have questions or if you encountered an error, please contact us through the "Issues" functionality on GIT.