This repo is the code base for the paper Data-efficient model learning and prediction for contact-rich manipulation tasks, Khader, S. A., Yin, H., Falco, P., & Kragic, D. (2020), IEEE Robotics and Automation Letters. [IEEE] [arXiv]
In this letter, we investigate learning forward dynamics models and multi-step prediction of state variables (long-term prediction) for contact-rich manipulation. The problems are formulated in the context of model-based reinforcement learning (MBRL). We focus on two aspects-discontinuous dynamics and data-efficiency-both of which are important in the identified scope and pose significant challenges to state-of-the-art methods. We contribute to closing this gap by proposing a method that explicitly adopts a specific hybrid structure for the model while leveraging the uncertainty representation and data-efficiency of Gaussian process. Our experiments on an illustrative moving block task and a 7-DOF robot demonstrate a clear advantage when compared to popular baselines in low data regimes.
- scikit-learn Python-based machine learning library
- MuJoCo simulator - requires license (optional: only for YuMi simulation)
- blocks_exp.py - Run this to generate and save data from this experiment
- model_learning_preprocessing.py - Run this to preprocess the data generated by blocks_exp.py
- model_learning_core.py - Run this to execute the model learning algorithm in the preprocessed data
- yumi_exp_data_extraction.py - Run this to extract data from an experiment run by the Berkeley robot control (BRC) system. Not advised to do this without setting up the BRC system. Go to the next step.
- model_learning_preprocessing_yumi.py - Run this to preprocess the extracted data.
- model_learning_core_yumi.py - Run this to execute the model learning algorithm on the real robot experiment data.
- blocks_sim.py - Implementation of blocks simulation
- model_learning_utils - Common classes and methods for both experiments
- multidim_gp.py - A wrapper for Scikit-learn Gaussian Process Regression to expand it to multi output cases.
- Plots - Generated plots
- Results - Generated log and data files
- Tests - All test cases for python unittest.