This is the environment implemenation of our paper: Learning to Solve a Rubik's Cube with a Dexterous Hand.
In our paper, the whole task is decomposed into two subtasks, namely cube rotation and layer-wise operation. We provide the two subtasks here including the trained policy. You can find the video and project page.
If you find our project helpful, your citations are highly appreciated:
@article{li2019learning,
title={Learning to Solve a Rubik's Cube with a Dexterous Hand},
author={Li, Tingguang and Xi, Weitao and Fang, Meng and Xu, Jia and Meng, Max Qing-Hu},
journal={arXiv preprint arXiv:1907.11388},
year={2019}
}
The following platforms are currently supported:
- Linux with Python3.6+
- OS X with Python3.6+
Please make sure the following packages have been installed on your computer:
You can install the project with
git clone https://github.com/TeaganLi/RubikCube-InHandManipulation.git
cd RubikCube-InHandManipulation
pip install -e .
After you installed our package and tensorflow, you can run our demos with our trained policy.
cd manipulation/demo
python subtask_demo.py --env CubeRot # run the cube rotation demo
python subtask_demo.py --env LayerOp # run the layer-wise operation demo
You can run the cube solver demo with
python cube_solver_demo.py
We provide the following environments based on the mujoco simulator. All of them are gym-compatible and you can easily train your model using RL libraries like baselines.
- CubeRotEnv-v0: cube rotation environment
- LayerOpUpEnv-v0: layer-wise operation with upper layer clockwise goal
- LayerOpUpPrimeEnv-v0: layer-wise operation with upper layer anticlockwise goal
- LayerOpRightEnv-v0: layer-wise operation with right layer clockwise goal
- LayerOpRightPrimeEnv-v0: layer-wise operation with right layer anticlockwise goal
- LayerOpFrontEnv-v0: layer-wise operation with front layer clockwise goal
- LayerOpFrontPrimeEnv-v0: layer-wise operation with front layer anticlockwise goal
This project is for uncommercial use. Contact Tingguang Li if you have any questions.