{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "x83dMPapQBN6" }, "source": [ "# Gyroscope DDPG training (udacity library)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "8inmkEG5QHqx" }, "outputs": [], "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 35 }, "colab_type": "code", "executionInfo": { "elapsed": 655, "status": "ok", "timestamp": 1584030129316, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "DnnJGcnsQvZC", "outputId": "9d6d1408-da29-44ed-af74-4ebdc2bd865a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/content/drive/My Drive/Colab Notebooks/DDPG_uda_v0\n" ] } ], "source": [ "cd drive/My\\ Drive/Colab Notebooks/DDPG_uda_v0/" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": {}, "colab_type": "code", "id": "fuJhdd479TpP" }, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'torch'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mintegrate\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msolve_ivp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mcollections\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdeque\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'torch'" ] } ], "source": [ "import gym\n", "from gym import spaces\n", "from gym.utils import seeding\n", "from os import path\n", "from scipy.integrate import solve_ivp\n", "import random\n", "import torch\n", "import numpy as np\n", "from collections import deque\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "\n", "\n", "#from vpython import *\n", "from ddpg_agent import Agent" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "O0O0t5ZR9Tp6" }, "source": [ "## Environment Class and Modules" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "Al_k1rtvQBOM" }, "outputs": [], "source": [ "class GyroscopeEnv(gym.Env):\n", " \n", " \n", " \"\"\"\n", " GyroscopeEnv is a double gimbal control moment gyroscope (DGCMG) with 2 input voltage u1 and u2 \n", " on the two gimbals, and disk speed assumed constant (parameter w). Simulation is based on the \n", " Quanser 3-DOF gyroscope setup.\n", " \n", " \n", " **STATE:**\n", " The state consists of the angle and angular speed of the outer red gimbal (theta = x1, thetadot = x2),\n", " the angle and angular speed of the inner blue gimbal (phi = x3, phidot = x4), the difference to the reference\n", " for tracking on theta and phi (tracking error theta = diff_x1, tracking error phi = diff_x3), and the \n", " disk speed (disk speed = w):\n", " \n", " state = [x1, x2, x3, x4, diff_x1, diff_x3, w]\n", " \n", " **ACTIONS:**\n", " The actions are the input voltage to create the red and blue gimbal torque (red voltage = u1, blue voltage = u2),\n", " and are continuous in a range of -10 and 10V:\n", " \n", " action = [u1,u2]\n", " \n", " \"\"\"\n", " \n", " \n", " metadata = {\n", " 'render.modes' : ['human', 'rgb_array'],\n", " 'video.frames_per_second' : 30\n", " }\n", "\n", " def __init__(self, dt):\n", " \n", " # Inertias in Kg*m2\n", " self.Jbx1 = 0.0019\n", " self.Jbx2 = 0.0008\n", " self.Jbx3 = 0.0012\n", " self.Jrx1 = 0.0179\n", " self.Jdx1 = 0.0028\n", " self.Jdx3 = 0.0056\n", " \n", " # Combined inertias\n", " self.J1 = self.Jbx1 - self.Jbx3 + self.Jdx1 - self.Jdx3\n", " self.J2 = self.Jbx1 + self.Jdx1 + self.Jrx1\n", " self.J3 = self.Jbx2 + self.Jdx1\n", "\n", " # Motor constants\n", " self.Kamp = 0.5 # A/V\n", " self.Ktorque = 0.0704 # Nm/A\n", " self.eff = 0.86\n", " self.nRed = 1.5\n", " self.nBlue = 1\n", " self.KtotRed = self.Kamp*self.Ktorque*self.eff*self.nRed \n", " self.KtotBlue = self.Kamp*self.Ktorque*self.eff*self.nBlue \n", " \n", " # Time step in s\n", " self.dt = dt\n", " \n", " # Action space\n", " self.maxVoltage = 10 # V\n", " self.highAct = np.array([self.maxVoltage,self.maxVoltage])\n", " self.action_space = spaces.Box(low = -self.highAct, high = self.highAct, dtype=np.float32) \n", " \n", " # Observation space (here it is equal to state space)\n", " self.maxSpeed = 40 * 2 * np.pi / 60\n", " self.maxAngle = np.pi\n", " self.maxdiskSpeed = 300 * 2 * np.pi / 60\n", " self.highObs = np.array([self.maxAngle,self.maxSpeed,self.maxAngle,self.maxSpeed,self.maxAngle,self.maxAngle,self.maxdiskSpeed])\n", " self.observation_space = spaces.Box(low = -self.highObs, high = self.highObs, dtype=np.float32)\n", "\n", " # Seed for random number generation\n", " self.seed()\n", " \n", " self.viewer = None\n", "\n", " def seed(self, seed=None):\n", " self.np_random, seed = seeding.np_random(seed)\n", " return [seed]\n", " \n", " \n", "\n", " def step(self,u):\n", " x1, x2, x3, x4, x1_ref, x3_ref, w= self.state \n", " u1,u2 = u\n", " \n", " # Option 1 for reward:\n", " reward = 0.5*(angle_normalize(x1 - x1_ref)**2 + angle_normalize(x3 - x3_ref)**2) #+ .001*(x2**2) + .001*(x4**2) + .001*(u1**2) + .001*(u2**2)\n", "\n", " # Option 2 for reward:\n", " \n", " \"\"\"if diff_x1**2<0.01 and diff_x3**2<0.01:\n", " reward = 0\n", " else:\n", " reward = 1\"\"\"\n", "\n", "\n", " results = solve_ivp(fun = dxdt, t_span = (0, self.dt), y0 = [x1,x2,x3,x4], method='RK45', args=(u1,u2,self))\n", " \n", " x1 = angle_normalize(results.y[0][-1])\n", " x2 = np.clip(results.y[1][-1],-self.maxSpeed,self.maxSpeed)\n", " x3 = angle_normalize(results.y[2][-1])\n", " x4 = np.clip(results.y[3][-1],-self.maxSpeed,self.maxSpeed)\n", " \n", " self.state = np.asarray([x1,x2,x3,x4,x1_ref, x3_ref,w])\n", "\n", " return (self.state, -reward, False, {})\n", "\n", " def reset(self, state = None):\n", " \n", " \n", " # Generate random state (for training) or use given state (for simulation)\n", " if state is None:\n", " self.state = self.np_random.uniform(low=-self.highObs, high=self.highObs)\n", " else:\n", " self.state = state\n", " \n", " return self.state\n", "\n", "\n", " def render(self, mode='human'):\n", " return None\n", " \n", " def close(self):\n", " if self.viewer:\n", " self.viewer.close()\n", " self.viewer = None\n", " \n", "def dxdt(t, x, u1, u2, gyro):\n", " \n", " # Rewrite constants shorter\n", " J1 = gyro.J1\n", " J2 = gyro.J2\n", " J3 = gyro.J3\n", " Jdx3 = gyro.Jdx3\n", " KtotRed = gyro.KtotRed\n", " KtotBlue = gyro.KtotBlue\n", " w = x[-1]\n", "\n", " # Convert input voltage to input torque\n", " u1,u2 = KtotRed*u1, KtotBlue*u2\n", " \n", " # Equations of motion \n", " dx_dt = [0, 0, 0, 0]\n", " dx_dt[0] = x[1]\n", " dx_dt[1] = (u1+J1*np.sin(2*x[2])*x[1]*x[3]-Jdx3*np.cos(x[2])*x[3]*w)/(J2 + J1*np.power(np.sin(x[2]),2))\n", " dx_dt[2] = x[3]\n", " dx_dt[3] = (u2 - J1*np.cos(x[2])*np.sin(x[2])*np.power(x[1],2)+Jdx3*np.cos(x[2])*x[1]*w)/J3\n", " return dx_dt\n", " \n", "def angle_normalize(x):\n", " return (((x+np.pi) % (2*np.pi)) - np.pi) # To keep the angles between -pi and pi\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "2YB2o73h9TrC" }, "source": [ "## DDPG run" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "uo5HKwz29TrF" }, "outputs": [], "source": [ "def ddpg(n_episodes=5000, max_t=250, print_every=100):\n", " scores_deque = deque(maxlen=print_every)\n", " scores = []\n", " for i_episode in range(1, n_episodes+1):\n", " state = env.reset(None)\n", " agent.reset()\n", " score = 0\n", " for t in range(max_t):\n", " action = agent.act(state)\n", " next_state, reward, done, _ = env.step(action)\n", " agent.step(state, action, reward, next_state, done)\n", " state = next_state\n", " score += reward\n", " if done:\n", " break \n", " scores_deque.append(score)\n", " scores.append(score)\n", " print('\\rEpisode {}\\tScore: {:.2f}'.format(i_episode, score), end=\"\")\n", " torch.save(agent.actor_local.state_dict(), 'checkpoint_actor.pth')\n", " torch.save(agent.critic_local.state_dict(), 'checkpoint_critic.pth')\n", " torch.save(agent.actor_optimizer.state_dict(), 'checkpoint_actor_opt.pth')\n", " torch.save(agent.critic_optimizer.state_dict(), 'checkpoint_critic_opt.pth')\n", " if i_episode % print_every == 0:\n", " print('\\rEpisode {}\\tAverage Score: {:.2f}'.format(i_episode, np.mean(scores_deque)))\n", " \n", " return scores\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "be0wYIeBQBOc" }, "source": [ "## Training" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 533 }, "colab_type": "code", "executionInfo": { "elapsed": 654004, "status": "error", "timestamp": 1584037207187, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "fLyFHs0yQBOd", "outputId": "260489ff-5e40-416a-e529-5a0cfcaefceb" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n", "/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py:1340: UserWarning: nn.functional.tanh is deprecated. Use torch.tanh instead.\n", " warnings.warn(\"nn.functional.tanh is deprecated. Use torch.tanh instead.\")\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Episode 100\tAverage Score: -2418.53\n", "Episode 200\tAverage Score: -1813.93\n", "Episode 300\tAverage Score: -1814.60\n", "Episode 341\tScore: -1640.05" ] }, { "ename": "KeyboardInterrupt", "evalue": "ignored", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 18\u001b[0m agent.critic_optimizer.load_state_dict(checkpoint_critic_optimizer)\"\"\"\n\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m \u001b[0mscores\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mddpg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 21\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mddpg\u001b[0;34m(n_episodes, max_t, print_every)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0maction\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0magent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mnext_state\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreward\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0menv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maction\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0magent\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maction\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreward\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnext_state\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0mstate\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnext_state\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mscore\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mreward\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/content/drive/My Drive/Colab Notebooks/DDPG_uda_v0/ddpg_agent.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, state, action, reward, next_state, done)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmemory\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[0mexperiences\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmemory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 62\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlearn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexperiences\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mGAMMA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 63\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mact\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd_noise\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/content/drive/My Drive/Colab Notebooks/DDPG_uda_v0/ddpg_agent.py\u001b[0m in \u001b[0;36mlearn\u001b[0;34m(self, experiences, gamma)\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcritic_optimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzero_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[0mcritic_loss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 104\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcritic_optimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0;31m# ---------------------------- update actor ---------------------------- #\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torch/optim/adam.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0mdenom\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mmax_exp_avg_sq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mmath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbias_correction2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'eps'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 103\u001b[0;31m \u001b[0mdenom\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mexp_avg_sq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mmath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbias_correction2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'eps'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0mstep_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'lr'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mbias_correction1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "# Creat environment\n", "dt = 0.05\n", "env = GyroscopeEnv(dt)\n", "env.seed(2)\n", "\n", "# Create agent\n", "agent = Agent(state_size=7, action_size=2, random_seed=2)\n", "\n", "\"\"\"# Access previous checkpoint\n", "checkpoint_actor = torch.load('checkpoint_actor.pth')\n", "checkpoint_critic = torch.load('checkpoint_critic.pth')\n", "checkpoint_actor_optimizer = torch.load('checkpoint_actor_opt.pth')\n", "checkpoint_critic_optimizer = torch.load('checkpoint_critic_opt.pth')\n", "\n", "# Use previous checkpoint\n", "agent.actor_local.load_state_dict(checkpoint_actor)\n", "agent.critic_local.load_state_dict(checkpoint_critic)\n", "agent.actor_optimizer.load_state_dict(checkpoint_actor_optimizer)\n", "agent.critic_optimizer.load_state_dict(checkpoint_critic_optimizer)\"\"\"\n", "\n", "scores = ddpg()\n", "\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111)\n", "plt.plot(np.arange(1, len(scores)+1), scores)\n", "plt.ylabel('Score')\n", "plt.xlabel('Episode #')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Gn3Gp40bcOVz" }, "source": [ "## Test" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 106 }, "colab_type": "code", "executionInfo": { "elapsed": 972, "status": "ok", "timestamp": 1584036455886, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "6GyY0wE-QBOj", "outputId": "9a5e9011-e024-4a65-8383-83c062cdcad9" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/gym/logger.py:30: UserWarning: \u001b[33mWARN: Box bound precision lowered by casting to float32\u001b[0m\n", " warnings.warn(colorize('%s: %s'%('WARN', msg % args), 'yellow'))\n", "/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py:1340: UserWarning: nn.functional.tanh is deprecated. Use torch.tanh instead.\n", " warnings.warn(\"nn.functional.tanh is deprecated. Use torch.tanh instead.\")\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "-84.65790332698876\n" ] } ], "source": [ "# Creat environment\n", "dt = 0.05\n", "env = GyroscopeEnv(dt)\n", "env.seed(2)\n", "\n", "# Create agent\n", "agent = Agent(state_size=7, action_size=2, random_seed=2)\n", "agent.actor_local.load_state_dict(torch.load('checkpoint_actor.pth'))\n", "agent.critic_local.load_state_dict(torch.load('checkpoint_critic.pth'))\n", "\n", "# Test parameters\n", "x1,x2,x3,x4,x1_ref,x3_ref,w = 2,0,0,0,1,1.22,10\n", "state = env.reset(np.array([x1,x2,x3,x4,x1_ref,x3_ref,w]))\n", "val = []\n", "dt = 0.05\n", "time = np.arange(0, 30, dt)\n", "score = 0\n", "for i in range(len(time)):\n", " val.append(state)\n", " action = agent.act(state, add_noise=False)\n", " state, reward, done, _ = env.step(action)\n", " score += reward\n", " if done:\n", " break \n", "\n", "env.close()\n", "print(score)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "vvMjuRHDcfrE" }, "source": [ "## Plot" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "colab_type": "code", "executionInfo": { "elapsed": 1856, "status": "ok", "timestamp": 1584036457424, "user": { "displayName": "Matthieu Le Cauchois", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgY9gRlHHK-FHlINeRnTJw_wewJsr639GH8MAWl=s64", "userId": "10992927378504656501" }, "user_tz": -60 }, "id": "aCZCqujgcMVA", "outputId": "05490294-aab8-4933-ca9b-e13ba85ecf6d" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] }, "output_type": "display_data" } ], "source": [ "f, axs = plt.subplots(3,2,figsize=(19,19))\n", "plt.subplot(3,2,1)\n", "plt.title('Red gimbal angle',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\theta$ (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[0] for row in val],'r-')\n", "plt.plot(time, [row[4] for row in val], color='black', linestyle='dashed')\n", "\n", "plt.subplot(3,2,2)\n", "plt.title('Red gimbal speed',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\dot \\theta$ (rad/s)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[1] for row in val],'r-')\n", "\n", "plt.subplot(3,2,3)\n", "plt.title('Blue gimbal angle',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\phi$ (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[2] for row in val],'b-')\n", "plt.plot(time, [row[5] for row in val], color='black', linestyle='dashed')\n", "\n", "plt.subplot(3,2,4)\n", "plt.title('Blue gimbal speed',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\dot \\phi$ (rad/s)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[row[3] for row in val],'b-')\n", "\n", "plt.subplot(3,2,5)\n", "plt.title('Red gimbal tracking error',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\theta$ error (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[(row[0]- row[4]) for row in val],'r-')\n", "\n", "plt.subplot(3,2,6)\n", "plt.title('Blue gimbal tracking error',fontsize=20)\n", "plt.xlabel('time (s)',fontsize=16)\n", "plt.ylabel(r'$\\phi$ error (rad)',fontsize=16)\n", "plt.grid()\n", "plt.plot(time,[(row[2]- row[5]) for row in val],'b-')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "fz9r-gaStzpk" }, "source": [ "## 3D rendering" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "HQM1E8JYc-cC" }, "outputs": [], "source": [ "# Scene\n", "scene = canvas(background=color.white) \n", "\n", "# Objects\n", "redGimbal = ring(pos=vector(0,0,0), axis=vector(0,0,1), radius=2, thickness=0.2,color=vector(0.9,0,0))\n", "blueGimbal1 = cylinder(pos=vector(0,0,0), axis=vector(0,2,0), radius=0.3,color=color.blue)\n", "blueGimbal2 = cylinder(pos=vector(0,0,0), axis=vector(0,-2,0), radius=0.3,color=color.blue)\n", "disk1 = cylinder(pos=vector(0,0,0), axis=vector(0,0,0.15), radius=1.3,color=color.yellow)\n", "disk2 = cylinder(pos=vector(0,0,0), axis=vector(0,0,-0.15), radius=1.3,color=color.yellow)\n", "baseR = extrusion(path=[vec(0,0,0), vec(0.7,0,0)],shape=[ shapes.circle(radius=0.5) ], pos=vec(2,0,0), color=color.black)\n", "baseL = extrusion(path=[vec(-0.7,0,0), vec(0,0,0)],shape=[ shapes.circle(radius=0.5) ], pos=vec(-2,0,0), color=color.black)\n", "\n", "t = 0\n", "dt = 0.01\n", "loops = 0\n", "ctime = 0\n", "start = clock()\n", "N = 200\n", "\n", "# 6.4/100\n", "for k in range(len(time)):\n", " rate(N)\n", " ct = clock()\n", " theta = val[k][0]\n", " phi = val[k][2]\n", " redGimbal.axis = vector(0,-sin(theta), cos(theta))\n", " blueGimbal1.axis = 2*vector(0,cos(theta), sin(theta))\n", " blueGimbal2.axis = -2*vector(0,cos(theta), sin(theta))\n", " disk1.axis = 0.15*vector(-sin(phi),-sin(theta)*cos(phi),cos(theta)*cos(phi))\n", " disk2.axis = -0.15*vector(-sin(phi),-sin(theta)*cos(phi),cos(theta)*cos(phi))\n", " ctime += clock()-ct\n", " loops += 1" ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "gyroscope_ddpg_testing.ipynb", "provenance": [] }, "kernelspec": { "display_name": "ps1venv", "language": "python", "name": "ps1venv" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 1 }