From 44058291a9aae9c090df92298a7d49657afa63d1 Mon Sep 17 00:00:00 2001 From: Brian Delhaisse Date: Thu, 13 Jun 2019 22:35:20 +0200 Subject: [PATCH] add papers (ongoing) --- papers/README.md | 45 ++++++++++ papers/__init__.py | 0 papers/meshes/cube.mtl | 13 +++ papers/meshes/cube.obj | 76 ++++++++++++++++ papers/meshes/cube.png | Bin 0 -> 17550 bytes papers/openai2018learning/README.md | 80 +++++++++++++++++ papers/openai2018learning/env.py | 84 ++++++++++++++++++ .../openai2018learning/figures/hand_cube.png | Bin 0 -> 45188 bytes papers/openai2018learning/main.py | 28 ++++++ 9 files changed, 326 insertions(+) create mode 100644 papers/README.md create mode 100644 papers/__init__.py create mode 100644 papers/meshes/cube.mtl create mode 100644 papers/meshes/cube.obj create mode 100644 papers/meshes/cube.png create mode 100644 papers/openai2018learning/README.md create mode 100644 papers/openai2018learning/env.py create mode 100644 papers/openai2018learning/figures/hand_cube.png create mode 100644 papers/openai2018learning/main.py diff --git a/papers/README.md b/papers/README.md new file mode 100644 index 0000000..8a3e7a0 --- /dev/null +++ b/papers/README.md @@ -0,0 +1,45 @@ +## Implemented papers + +This folder contains subfolders where in each one we try to reproduce the experiments and results obtained in the +literature using the *PyRoboLearn* framework. + +Each subfolder contains +- a `README` file that: + - summarizes the paper and provides the BibTex reference with a link to the original paper + - states the possible differences between their experiment setup and ours and the obtained results + - provides the current status (if it has been implemented yet, if the reproduction was successful or not), and + describes what needs to be improved. + - describes which variables the user can play with +- an environment (similar to gym environments) in the `env.py` file (that initializes the world, robots, rewards, +states, actions, and so on) which allows to be used in other codes. +- a main file (`main.py`) that initializes the learning task (environment, policy, and so on), and provides an +example on how to use the environment defined in `env.py`. +- a possible `figures` directory containing figures; this can include a picture of the environment, training plots, +etc. +- a possible `meshes` directory containing meshes for the different objects that are present in the environment. + + +### Structure + +The name of each folder is ``, this is the same as returned by +[Google Scholar](https://scholar.google.com/), when clicking on the `BibTex` button: + +``` +@article{<1st author's last name><1st non stop word in title>, + title={}, + author={<1st author's last name>, 1st author's first name and ...}, + journal={...}, + year={<year>} +} +``` + +*Note*: Stop words are commonly used words such as 'the', 'an', 'a', 'in', and others that search engines usually +ignore. + + +### Further notes + +- It might be that in the future, this folder will be moved to its own repository. +- I will often focus more on implementing the environments than training the various policies using the different +algorithms +- Any comments, help, pull requests are appreciated. diff --git a/papers/__init__.py b/papers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/papers/meshes/cube.mtl b/papers/meshes/cube.mtl new file mode 100644 index 0000000..cefc659 --- /dev/null +++ b/papers/meshes/cube.mtl @@ -0,0 +1,13 @@ +# +# Wavefront material file +# Created with Kaydara FBX +# + +newmtl Mat_3 +map_Kd cube.png +Ka 0.000000 0.000000 0.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.200000 0.200000 0.200000 +illum 2 +Ns 50.000000 +Tr 1.000000 diff --git a/papers/meshes/cube.obj b/papers/meshes/cube.obj new file mode 100644 index 0000000..a49d809 --- /dev/null +++ b/papers/meshes/cube.obj @@ -0,0 +1,76 @@ +# +# Wavefront OBJ file +# Created with Kaydara FBX +# Created by Melissa Britelle, 2019 +# +mtllib cube.mtl + +g Cube_1 +v -0.5000000 -0.5000000 0.5000000 +v -0.5000000 0.5000000 0.5000000 +v 0.5000000 -0.5000000 0.5000000 +v 0.5000000 0.5000000 0.5000000 +v 0.5000000 -0.5000000 -0.5000000 +v 0.5000000 0.5000000 -0.5000000 +v -0.5000000 -0.5000000 -0.5000000 +v -0.5000000 0.5000000 -0.5000000 + +vt 0.250000 0.625000 +vt 0.500000 0.375000 +vt 0.500000 0.625000 +vt 0.500000 0.375000 +vt 0.250000 0.625000 +vt 0.250000 0.375000 +vt 0.500000 0.625000 +vt 0.500000 0.375000 +vt 0.750000 0.375000 +vt 0.500000 0.625000 +vt 0.750000 0.375000 +vt 0.750000 0.625000 +vt 0.750000 0.375000 +vt 1.000000 0.375000 +vt 0.750000 0.625000 +vt 1.000000 0.375000 +vt 1.000000 0.625000 +vt 0.750000 0.625000 +vt 0.250000 0.625000 +vt 0.000000 0.625000 +vt 0.250000 0.375000 +vt 0.250000 0.375000 +vt 0.000000 0.625000 +vt 0.000000 0.375000 +vt 0.250000 0.625000 +vt 0.500000 0.625000 +vt 0.250000 0.875000 +vt 0.500000 0.625000 +vt 0.500000 0.875000 +vt 0.250000 0.875000 +vt 0.250000 0.375000 +vt 0.500000 0.125000 +vt 0.500000 0.375000 +vt 0.500000 0.125000 +vt 0.250000 0.375000 +vt 0.250000 0.125000 + +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 + +usemtl Mat_3 +f 2/1/2 3/2/3 4/3/4 +f 3/4/3 2/5/2 1/6/1 +f 4/7/4 3/8/3 5/9/5 +f 4/10/4 5/11/5 6/12/6 +f 5/13/5 7/14/7 6/15/6 +f 7/16/7 8/17/8 6/18/6 +f 2/19/2 8/20/8 1/21/1 +f 1/22/1 8/23/8 7/24/7 +f 2/25/2 4/26/4 8/27/8 +f 4/28/4 6/29/6 8/30/8 +f 1/31/1 5/32/5 3/33/3 +f 5/34/5 1/35/1 7/36/7 diff --git a/papers/meshes/cube.png b/papers/meshes/cube.png new file mode 100644 index 0000000000000000000000000000000000000000..ce71308698ec6af5a0369ac5c2db11ce004f3173 GIT binary patch literal 17550 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 CO1>)q literal 0 HcmV?d00001 diff --git a/papers/openai2018learning/README.md b/papers/openai2018learning/README.md new file mode 100644 index 0000000..bbea9bd --- /dev/null +++ b/papers/openai2018learning/README.md @@ -0,0 +1,80 @@ +### Learning Dexterous In-Hand Manipulation + +Status: ongoing + +Abstract (from [1]): "We use reinforcement learning (RL) to learn dexterous in-hand manipulation policies which can +perform vision-based object reorientation on a physical Shadow Dexterous Hand. The training is performed in a simulated +environment in which we randomize many of the physical properties of the system like friction coefficients and an +object's appearance. Our policies transfer to the physical robot despite being trained entirely in simulation. Our +method does not rely on any human demonstrations, but many behaviors found in human manipulation emerge naturally, +including finger gaiting, multi-finger coordination, and the controlled use of gravity. Our results were obtained +using the same distributed RL system that was used to train OpenAI Five. We also include a video of our results: +[this url](https://www.youtube.com/watch?v=jwSbzNHGflM)." + + +#### Implementation details + +From the paper [1]: + +* simulator: Mujoco [2] +* robot: ShadowHand [3] +* states: + * for value network: fingertip positions (5*3D), object position (3D), object orientation (4D=quaternion), + target orientation (4D=quaternion), relative target orientation (4D=quaternion), hand joint angles (24D), + hand joint velocities (24D), object velocity (3D), object angular velocity (3D) + * for policy: fingertip positions (5*3D), object position (3D), relative target orientation (4D=quaternion) +* actions: desired joint angles of the hand relative to the current ones. The actions are discretized into 11 bins. +* policy: fully-connected neural network composed of a normalization layer, dense ReLU (1024), LSTM (512) +* value: fully-connected neural network composed of a normalization layer, dense ReLU (1024), LSTM (512) +* reward function: + * `r_t = d_t - d_{t+1}`, where `d_t` and `d_{t+1}` are the rotation angles between the desired and current object + orientations before and after the transition, respectively. + * 5 if the goal is achieved + * -20 if the object drop +* termination condition (goal): +* exploration: in the action space using a categorical distribution with 11 bins for each action coordinate +* RL algorithm: PPO + * clip parameter=0.2, entropy regularization coefficient=0.01, GAE(discount factor=0.998, lambda=0.95)), Adam + optimizer with learning rate=3e-4. + +Compared to [1], we use the PyBullet simulator [4] and not Mujoco (because of its license), and we do not use a pose +estimation network (i.e. the convolutional neural network). + + +#### Results + +<p align="center"> + <img src="./figures/hand_cube.png" alt="a ShadowHand holding a cube" width="400" height="300"/> +</p> + +TODO: figures + plots + link to video + + +#### References + +- [1] ["Learning Dexterous In-Hand Manipulation"](https://arxiv.org/abs/1808.00177), OpenAI et al., 2018 +``` +@article{openai2018learning, + title={Learning dexterous in-hand manipulation}, + author={OpenAI and Andrychowicz, Marcin and Baker, Bowen and Chociej, Maciek and Jozefowicz, Rafal and McGrew, Bob and Pachocki, Jakub and Petron, Arthur and Plappert, Matthias and Powell, Glenn and Ray, Alex and others}, + journal={arXiv preprint arXiv:1808.00177}, + year={2018} +} +``` +- [2] ["Mujoco: A physics engine for model-based control"](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.296.6848&rep=rep1&type=pdf), + Todorov et al., 2012 +- [3] [ShadowHand](https://www.shadowrobot.com/products/dexterous-hand/) + ([URDF](https://github.com/shadow-robot/sr_common)) +- [4] ["PyBullet, a Python module for physics simulation for games, robotics and machine learning"](https://github.com/bulletphysics/bullet3), + Coumans et al., 2017 + + +The 3D cube (the OBJ file as well as the texture) used for this experiment was modeled by Melissa Britelle based on +the cube showed in the paper [1]. + + +#### What's next? + +Next possible interesting tasks: +- Use various tools (see ) +- juggle different objects (balls, clubs, different objects) \ No newline at end of file diff --git a/papers/openai2018learning/env.py b/papers/openai2018learning/env.py new file mode 100644 index 0000000..a9dbaad --- /dev/null +++ b/papers/openai2018learning/env.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +""" +Provide the environment (world, states, actions, rewards, terminal conditions, etc) defined in the paper [1] using the +PyRoboLearn framework. + +Reference: + [1] "Learning Dexterous In-Hand Manipulation", OpenAI et al., 2018 (https://arxiv.org/abs/1808.00177) +""" + +# TODO: end the implementation + +# import PyRoboLearn +import pyrobolearn as prl + +__author__ = "Brian Delhaisse" +__copyright__ = "Copyright 2018, PyRoboLearn" +__credits__ = ["OpenAI et al."] +__license__ = "MIT" +__version__ = "1.0.0" +__maintainer__ = "Brian Delhaisse" +__email__ = "briandelhaisse@gmail.com" +__status__ = "Development" + + +# define environment +class Openai2018LearningEnv(prl.envs.Env): + r"""Openai2018Learning Environment + + Create the environment (world, states, actions, rewards, terminal conditions, etc) defined in the paper [1]. + + Reference: + [1] "Learning Dexterous In-Hand Manipulation", OpenAI et al., 2018 (https://arxiv.org/abs/1808.00177) + """ + + def __init__(self, simulator=None): + r""" + Initialize the environment. + + Args: + simulator (prl.simulators.Simulator): simulator instance or None. If None, it will use PyBullet by default. + """ + # create simulator if None + if simulator is None: + simulator = prl.simulators.Bullet() + if not isinstance(simulator, prl.simulators.Simulator): + raise TypeError("Expecting the given simulator to be None or an instance of `prl.simulators.Simulator`, " + "instead got: {}".format(type(simulator))) + + # create world + world = prl.worlds.BasicWorld(simulator) + + # load hand + robot = world.load_robot('shadowhand', position=(-0.2, 0, 0.5), orientation=(-0.5, 0.5, -0.5, 0.5), left=False) + robot.print_info() + + # load cube in hand + cube = world.load_mesh('../meshes/cube.obj', position=[0.1, 0, 0.57], scale=(.05, .05, .05), flags=0) + cube = prl.robots.Body(simulator, body_id=cube) + + # create state: fingertip positions (5*3D), object position (3D), object orientation (4D=quaternion), + # target orientation (4D=quaternion), relative target orientation (4D=quaternion), hand joint angles (24D), + # hand joint velocities (24D), object velocity (3D), object angular velocity (3D) + state = prl.states.PositionState(cube) + prl.states.OrientationState(cube) + \ + prl.states.JointPositionState(robot) + + # create action + + # create reward + + super(Openai2018LearningEnv, self).__init__(world, state) + + +# Test environment +if __name__ == '__main__': + import time + from itertools import count + + # create environment + env = Openai2018LearningEnv() + + # run environment + for t in count(): + env.step() + time.sleep(1./240) diff --git a/papers/openai2018learning/figures/hand_cube.png b/papers/openai2018learning/figures/hand_cube.png new file mode 100644 index 0000000000000000000000000000000000000000..57362f3b37144971ab6aa30eb751e947f73090ed GIT binary patch literal 45188 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 literal 0 HcmV?d00001 diff --git a/papers/openai2018learning/main.py b/papers/openai2018learning/main.py new file mode 100644 index 0000000..0662406 --- /dev/null +++ b/papers/openai2018learning/main.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python +""" +This sample of code implements the "Learning Dexterous In-Hand Manipulation" paper [1] using the PyRoboLearn framework. + +We use the same factors as described in the paper; i.e. the same robotic platform, same states and actions, +same policies, same rewards (and coefficients), same learning algorithm with same hyperparameters, and so on. + +Reference: + [1] "Learning Dexterous In-Hand Manipulation", OpenAI et al., 2019 (https://arxiv.org/abs/1808.00177) +""" + +import time +from itertools import count +import pyrobolearn as prl +from env import Openai2018LearningEnv + + +# create environment (create world, states, rewards, actions) +environment = Openai2018LearningEnv() + +# run environment +for t in count(): + environment.step() + time.sleep(1./240) + +# create policy + +# create algo