From fabec6a2ddcdb5f1ca70dbc39da2db0c28736b71 Mon Sep 17 00:00:00 2001 From: nmelone Date: Fri, 3 Aug 2018 14:45:12 -0500 Subject: [PATCH] initial commit --- Quadcopter_Project.ipynb | 528 ++++++++++++++++++++++++++++++ ddpg_draw_test_weights_actor.h5f | Bin 0 -> 26160 bytes ddpg_draw_test_weights_critic.h5f | Bin 0 -> 34056 bytes ddpg_quad_sim_weights_actor.h5f | Bin 0 -> 26160 bytes ddpg_quad_sim_weights_critic.h5f | Bin 0 -> 34056 bytes physics_sim.py | 150 +++++++++ task.py | 100 ++++++ 7 files changed, 778 insertions(+) create mode 100644 Quadcopter_Project.ipynb create mode 100644 ddpg_draw_test_weights_actor.h5f create mode 100644 ddpg_draw_test_weights_critic.h5f create mode 100644 ddpg_quad_sim_weights_actor.h5f create mode 100644 ddpg_quad_sim_weights_critic.h5f create mode 100644 physics_sim.py create mode 100644 task.py diff --git a/Quadcopter_Project.ipynb b/Quadcopter_Project.ipynb new file mode 100644 index 0000000..0def485 --- /dev/null +++ b/Quadcopter_Project.ipynb @@ -0,0 +1,528 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Project: Train a Quadcopter How to Fly\n", + "\n", + "Design an agent to fly a quadcopter, and then train it using a reinforcement learning algorithm of your choice! \n", + "\n", + "Try to apply the techniques you have learnt, but also feel free to come up with innovative ideas and test them." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instructions\n", + "\n", + "Take a look at the files in the directory to better understand the structure of the project. \n", + "\n", + "- `task.py`: Define your task (environment) in this file.\n", + "- `agents/`: Folder containing reinforcement learning agents.\n", + " - `policy_search.py`: A sample agent has been provided here.\n", + " - `agent.py`: Develop your agent here.\n", + "- `physics_sim.py`: This file contains the simulator for the quadcopter. **DO NOT MODIFY THIS FILE**.\n", + "\n", + "For this project, you will define your own task in `task.py`. Although we have provided a example task to get you started, you are encouraged to change it. Later in this notebook, you will learn more about how to amend this file.\n", + "\n", + "You will also design a reinforcement learning agent in `agent.py` to complete your chosen task. \n", + "\n", + "You are welcome to create any additional files to help you to organize your code. For instance, you may find it useful to define a `model.py` file defining any needed neural network architectures.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Define the Task, Design the Agent, and Train Your Agent!\n", + "\n", + "Amend `task.py` to specify a task of your choosing. If you're unsure what kind of task to specify, you may like to teach your quadcopter to takeoff, hover in place, land softly, or reach a target pose. \n", + "\n", + "After specifying your task, use the sample agent in `agents/policy_search.py` as a template to define your own agent in `agents/agent.py`. You can borrow whatever you need from the sample agent, including ideas on how you might modularize your code (using helper methods like `act()`, `learn()`, `reset_episode()`, etc.).\n", + "\n", + "Note that it is **highly unlikely** that the first agent and task that you specify will learn well. You will likely have to tweak various hyperparameters and the reward function for your task until you arrive at reasonably good behavior.\n", + "\n", + "As you develop your agent, it's important to keep an eye on how it's performing. Use the code above as inspiration to build in a mechanism to log/save the total rewards obtained in each episode to file. If the episode rewards are gradually increasing, this is an indication that your agent is learning." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "from keras.models import Sequential, Model\n", + "from keras.layers import Dense, Activation, Flatten, Input, Concatenate, Lambda\n", + "from keras.optimizers import Adam" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from rl.agents import DDPGAgent\n", + "from rl.memory import SequentialMemory\n", + "from rl.random import OrnsteinUhlenbeckProcess\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import ipympl\n", + "import matplotlib.pyplot as plt\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from task import Task" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "init_pose = np.array([0.,25.,150.,0.,0.,0.])\n", + "init_velocities = np.array([0.,0.,0.])\n", + "init_angle = np.array([0.,0.,0.])\n", + "runtime = 10.\n", + "target_pos = np.array([0.,0.,150.])\n", + "action_low = 0\n", + "action_high = 900\n", + "action_range = action_high - action_low" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the environment and extract the number of actions.\n", + "task = Task(init_pose, init_velocities, init_angle, runtime, target_pos)\n", + "np.random.seed(123)\n", + "\n", + "nb_actions = task.action_size" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_1 (Flatten) (None, 6) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 16) 112 \n", + "_________________________________________________________________\n", + "activation_1 (Activation) (None, 16) 0 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 16) 272 \n", + "_________________________________________________________________\n", + "activation_2 (Activation) (None, 16) 0 \n", + "_________________________________________________________________\n", + "dense_3 (Dense) (None, 16) 272 \n", + "_________________________________________________________________\n", + "activation_3 (Activation) (None, 16) 0 \n", + "_________________________________________________________________\n", + "dense_4 (Dense) (None, 4) 68 \n", + "_________________________________________________________________\n", + "activation_4 (Activation) (None, 4) 0 \n", + "_________________________________________________________________\n", + "lambda_1 (Lambda) (None, 4) 0 \n", + "=================================================================\n", + "Total params: 724\n", + "Trainable params: 724\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n", + "None\n" + ] + } + ], + "source": [ + "# Next, we build a very simple model.\n", + "actor = Sequential()\n", + "actor.add(Flatten(input_shape=(1,) + task.reset().shape ))\n", + "actor.add(Dense(16))\n", + "actor.add(Activation('relu'))\n", + "actor.add(Dense(16))\n", + "actor.add(Activation('relu'))\n", + "actor.add(Dense(16))\n", + "actor.add(Activation('relu'))\n", + "actor.add(Dense(nb_actions))\n", + "actor.add(Activation('sigmoid'))\n", + "actor.add(Lambda(lambda x: (x * 450) + 0))\n", + "print(actor.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "observation_input (InputLayer) (None, 1, 6) 0 \n", + "__________________________________________________________________________________________________\n", + "action_input (InputLayer) (None, 4) 0 \n", + "__________________________________________________________________________________________________\n", + "flatten_2 (Flatten) (None, 6) 0 observation_input[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_1 (Concatenate) (None, 10) 0 action_input[0][0] \n", + " flatten_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_5 (Dense) (None, 32) 352 concatenate_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_5 (Activation) (None, 32) 0 dense_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_6 (Dense) (None, 32) 1056 activation_5[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_6 (Activation) (None, 32) 0 dense_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_7 (Dense) (None, 32) 1056 activation_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_7 (Activation) (None, 32) 0 dense_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_8 (Dense) (None, 1) 33 activation_7[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_8 (Activation) (None, 1) 0 dense_8[0][0] \n", + "==================================================================================================\n", + "Total params: 2,497\n", + "Trainable params: 2,497\n", + "Non-trainable params: 0\n", + "__________________________________________________________________________________________________\n", + "None\n" + ] + } + ], + "source": [ + "action_input = Input(shape=(nb_actions,), name='action_input')\n", + "observation_input = Input(shape=(1,)+task.reset().shape , name='observation_input')\n", + "flattened_observation = Flatten()(observation_input)\n", + "x = Concatenate()([action_input, flattened_observation])\n", + "x = Dense(32)(x)\n", + "x = Activation('relu')(x)\n", + "x = Dense(32)(x)\n", + "x = Activation('relu')(x)\n", + "x = Dense(32)(x)\n", + "x = Activation('relu')(x)\n", + "x = Dense(1)(x)\n", + "x = Activation('sigmoid')(x)\n", + "critic = Model(inputs=[action_input, observation_input], outputs=x)\n", + "print(critic.summary())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Finally, we configure and compile our agent. You can use every built-in Keras optimizer and\n", + "# even the metrics!\n", + "memory = SequentialMemory(limit=100000, window_length=1)\n", + "random_process = OrnsteinUhlenbeckProcess(size=nb_actions, theta=.15, mu=0., sigma=.3)\n", + "agent = DDPGAgent(nb_actions=nb_actions, actor=actor, critic=critic, critic_action_input=action_input,\n", + " memory=memory, nb_steps_warmup_critic=100, nb_steps_warmup_actor=100,\n", + " random_process=random_process, gamma=.99, target_model_update=1e-3)\n", + "agent.compile(Adam(lr=.001, clipnorm=1.), metrics=['mae'])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "agent.load_weights('ddpg_{}_weights.h5f'.format(\"quad_sim\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training for 30000 steps ...\n", + "Interval 1 (0 steps performed)\n", + "10000/10000 [==============================] - 201s 20ms/step - reward: 1.8120\n", + "83 episodes - episode_reward: 215.781 [129.121, 404.495] - loss: 17.266 - mean_absolute_error: 3.031 - mean_q: 86.160\n", + "\n", + "Interval 2 (10000 steps performed)\n", + "10000/10000 [==============================] - 201s 20ms/step - reward: 1.7970\n", + "82 episodes - episode_reward: 220.913 [117.630, 389.755] - loss: 18.333 - mean_absolute_error: 3.058 - mean_q: 86.342\n", + "\n", + "Interval 3 (20000 steps performed)\n", + "10000/10000 [==============================] - 201s 20ms/step - reward: 2.0096\n", + "done, took 602.192 seconds\n" + ] + } + ], + "source": [ + "# Okay, now it's time to learn something! We visualize the training here for show, but this\n", + "# slows down training quite a lot. You can always safely abort the training prematurely using\n", + "# Ctrl + C.\n", + "\n", + "history_1 = agent.fit(task, nb_steps=30000, action_repetition=3, verbose=1, visualize=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# After training is done, we save the final weights.\n", + "agent.save_weights('ddpg_{}_weights.h5f'.format(\"quad_sim\"), overwrite=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Testing for 5 episodes ...\n", + "Episode 1: reward: 337.973, steps: 167\n", + "Episode 2: reward: 337.973, steps: 167\n", + "Episode 3: reward: 337.973, steps: 167\n", + "Episode 4: reward: 337.973, steps: 167\n", + "Episode 5: reward: 337.973, steps: 167\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Finally, evaluate our algorithm for 5 episodes.\n", + "agent.test(task, nb_episodes=5, action_repetition=3, visualize=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['episode_reward', 'nb_episode_steps', 'nb_steps'])\n" + ] + } + ], + "source": [ + "print(history.history.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#mport matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "#matplotlib inline\n", + "\n", + "def plot_scores(scores, rolling_window=100):\n", + " \"\"\"Plot scores and optional rolling mean using specified window.\"\"\"\n", + " plt.figure(figsize=(10,5))\n", + " plt.plot(scores); plt.title(\"Scores\");\n", + " rolling_mean = pd.Series(scores).rolling(rolling_window).mean()\n", + " plt.plot(rolling_mean);\n", + " return rolling_mean\n", + "\n", + "rolling_mean = plot_scores(history.history['episode_reward'] + history_1.history['episode_reward'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Plot the Rewards\n", + "\n", + "Once you are satisfied with your performance, plot the episode rewards, either from a single run, or averaged over multiple runs. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Reflections\n", + "\n", + "**Question 1**: Describe the task that you specified in `task.py`. How did you design the reward function?\n", + "\n", + "**Answer**:\n", + "**The task was to move from the initial position to a new target position and then stay there for the remainder of the runtime. The reward function is the normalized 3D distance formula set between 0 and 1, 1 being right on target. In previous iterations I had put bonuses near the target and also put punishments at the boundaries of the simulation but these had little positive affect and mostly just hindered performance.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Question 2**: Discuss your agent briefly, using the following questions as a guide:\n", + "\n", + "- What learning algorithm(s) did you try? What worked best for you?\n", + "- What was your final choice of hyperparameters (such as $\\alpha$, $\\gamma$, $\\epsilon$, etc.)?\n", + "- What neural network architecture did you use (if any)? Specify layers, sizes, activation functions, etc.\n", + "\n", + "**Answer**:\n", + "**The agent is a DDPG type agent. It uses an actor and critic pair to update the policy. The actor network is trying to perform the task as best it can while the critic network tries to instruct it how to do it better next time. These take the place of the State Value (V) and State-Action Value (Q). The infrastructure was taken and adapted from the DDPG example agent in Keras-RL. I never got the provided example DDPG network to properly learn and would often just do random actions without getting better results. **\n", + "\n", + "**Hyperparameters were Gamma=0.99, Theta=0.15 Mu=0 Sigma=0.3 and a Learning Rate of 0.001**\n", + "\n", + "**The layer summary for the actor and critic network can be seen above. Actor network was 1 Flattened input layer (state), 4 Dense layers, and a Lambda layer. The first three Dense layers were 16 nodes each with relu activation and the final one was 4 nodes corresponding to the 4 actions to be taken with sigmoid activation. The Lambda layer just scaled the sigmoid output into the range of possible actions (0,450) which were halved fromt he orginal to give more stability. The critic network is 4 Dense layers after the concatenation of the inputs (state,action). The first three were 32 nodes with relu and the fourth is 1 node with sigmoid activation. The output correspondes with the estimated Q value. **" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Question 3**: Using the episode rewards plot, discuss how the agent learned over time.\n", + "\n", + "- Was it an easy task to learn or hard?\n", + "- Was there a gradual learning curve, or an aha moment?\n", + "- How good was the final performance of the agent? (e.g. mean rewards over the last 10 episodes)\n", + "\n", + "**Answer**:\n", + "**It is a hard task to learn. Even with all the time and effort and iteration I put into the project I still don't feel all that great about the performance of the quadcopter. I could be way better given more dedication and a lot more time. The task had it's aha moment and suddenly jumped from a poor performance to a decent performance. I've let it run even longer before and it would actually wind up exploring even more and getting a worse result. In testing the reward was 337 which is pretty decent given that max reward for a run would be 500. Max reward being the quad started at the target and remained at the target for all 500 timesteps receiving a reward of 1 each timestep.**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Question 4**: Briefly summarize your experience working on this project. You can use the following prompts for ideas.\n", + "\n", + "- What was the hardest part of the project? (e.g. getting started, plotting, specifying the task, etc.)\n", + "- Did you find anything interesting in how the quadcopter or your agent behaved?\n", + "\n", + "**Answer**:\n", + "**This was by far the hardest project of the course. I spent 2 weeks tinkering and puzzling over this project were most others projects took a few hours to a day at most. I spent several hours multiple days trying to learn to plot in 3D so I could visualize what the quadcopter was actually doing as seen above. I thought it was funny how many times the quadcopter would just fall out of the sky before it learned to fly at all. I also spent a long time trying many iteration on task and in particular reward structure. As well, I spent days trying to get the provided code to work out with a proper result and never could get it there which is when I switched to the Keras-RL infrastructure. Overall, though I learned a ton about RL and really about not giving up. I wanted to turn this project in so many times before this but was never happy enough with the results as they would always be a flat line. I finally got a result that showed the agent learning and improving over time and that was good enough for me at this point. Someday when I have more experince I would love to revisit this project and see if I fair any better at the task but for now this is as good as I have.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/ddpg_draw_test_weights_actor.h5f b/ddpg_draw_test_weights_actor.h5f new file mode 100644 index 0000000000000000000000000000000000000000..64d489e09bacfd010f1ed1637e1a6b152f85183d GIT binary patch literal 26160 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 literal 0 HcmV?d00001 diff --git a/ddpg_draw_test_weights_critic.h5f b/ddpg_draw_test_weights_critic.h5f new file mode 100644 index 0000000000000000000000000000000000000000..571fcf572a367ecb576c83d72ed673b713b6805a GIT binary patch literal 34056 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 literal 0 HcmV?d00001 diff --git a/ddpg_quad_sim_weights_critic.h5f b/ddpg_quad_sim_weights_critic.h5f new file mode 100644 index 0000000000000000000000000000000000000000..1e1dce915369fc7fa1afaa289cd22d69d92d8624 GIT binary patch literal 34056 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 hfsXTwX#6n~>XE3B$gckM^ self.upper_bounds[ii]: + new_positions.append(self.upper_bounds[ii]) + self.done = True + else: + new_positions.append(position[ii]) + + self.pose = np.array(new_positions + list(angles)) + self.time += self.dt + if self.time > self.runtime: + self.done = True + return self.done diff --git a/task.py b/task.py new file mode 100644 index 0000000..9a98537 --- /dev/null +++ b/task.py @@ -0,0 +1,100 @@ +import numpy as np +from physics_sim import PhysicsSim +import ipympl +import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D +class Task(): + """Task (environment) that defines the goal and provides feedback to the agent.""" + def __init__(self, init_pose=None, init_velocities=None, + init_angle_velocities=None, runtime=5., target_pos=None): + """Initialize a Task object. + Params + ====== + init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles + init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions + init_angle_velocities: initial radians/second for each of the three Euler angles + runtime: time limit for each episode + target_pos: target/goal (x,y,z) position for the agent + """ + # Simulation + self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime) + self.action_repeat = 3 + + self.state_size = self.action_repeat * 6 + self.action_low = 0 + self.action_high = 900 + self.action_size = 4 + + # Goal + self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.]) + + self.point = {'x':[],'y':[],'z':[]} + + self.show_graph=True + self.do_render=False + + def get_reward(self): + r_min = (((np.array([-150.,-150.,0.]) - self.target_pos)**2).sum())**0.5 + r_max = 0. + t_min = -1. + t_max = 1. + + # if(np.any(self.sim.pose[:3] <= self.sim.lower_bounds) or np.any(self.sim.pose[:3] >= self.sim.upper_bounds)): + # reward = -3. + # else: + """Uses current pose of sim to return reward.""" + reward_raw = (((self.sim.pose[:3] - self.target_pos)**2).sum())**0.5 + reward = (reward_raw-r_min)/(r_max-r_min) * (t_max-t_min) + t_min + + + return reward + + def step(self, rotor_speeds): + """Uses action to obtain next state, reward, done.""" + reward = 0 + pose_all = [] + + done = self.sim.next_timestep(rotor_speeds) # update the sim pose and velocities + reward += self.get_reward() + pose_all.append(self.sim.pose) + next_state = np.concatenate(pose_all) + info = dict() + if(self.do_render): + self.point['x'].append(self.sim.pose[0]) + self.point['y'].append(self.sim.pose[1]) + self.point['z'].append(self.sim.pose[2]) + self.render(done=done) + return next_state, reward, done, info + + def reset(self): + """Reset the sim to start a new episode.""" + self.sim.reset() + state = np.concatenate([self.sim.pose] ) + if(self.do_render): + self.ax.scatter(self.sim.init_pose[0],self.sim.init_pose[1],self.sim.init_pose[2]) + + return state + + def render(self, mode='init',done=False): + if(mode == 'human'): + self.do_render = True + if(self.show_graph): + self.init_graph() + self.show_graph=False + if(done): + self.line.plot(self.point['x'],self.point['y'], self.point['z']) + self.point['x'][:] = [] + self.point['y'][:] = [] + self.point['z'][:] = [] + + def init_graph(self): + self.fig = plt.figure(figsize=(8,8)) + self.line = self.fig.add_subplot(111, projection='3d') + self.ax = plt.gca() + + self.line.set_xlim(-150,150) + self.line.set_ylim(-150,150) + self.line.set_zlim(0,300) + + self.ax.scatter(self.target_pos[0], self.target_pos[1], self.target_pos[2], color='green', label='Goal') + \ No newline at end of file