{ "metadata": { "name": "", "signature": "sha256:e38cd0a315370b0af4811ed1769c8f87afc6e800284a2ff242f1b5991b516545" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Plotting from NPendulum Environment" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In Explauto, an *environment* implements the physical properties of the interaction between the robot body and the environment in which it evolves. Explauto come with several sensorimotor systems available from the [environment package](http://flowersteam.github.io/explauto/explauto.environment.html). To learn how to set an environment, look at the notebook [Setting Environments](https://github.com/flowersteam/explauto/blob/master/notebook/setting_environments.ipynb)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from explauto.environment import environments\n", "print 'Available environments: {}'.format(environments.keys())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Available environments: ['npendulum', 'pendulum', 'simple_arm']\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the npendulum environment for this tutorial. It consists in the simulation of a multiple pendulum with $n+1$ nodes, aiming to model a string. The first node is the one which undergoes the input force.\n", "\n", "This environment comes with a predefined configuration, named *default*." ] }, { "cell_type": "code", "collapsed": false, "input": [ "env_cls, env_configs, _ = environments['npendulum']\n", "print 'Available configurations for the simple arm environment: {}'.format(env_configs.keys())" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Available configurations for the simple arm environment: ['default']\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the case of the npendulum environment, a configuration must defines the following values:\n", "* nb_joints (number $n$ of the joints)\n", "* m_mins and m_maxs (bounds of the motor space)\n", "* s_mins ans s_maxs (bounds of the sensory space)\n", "* length_ratio (length ratio from one segment to the following one)\n", "* noise (gaussian noise added in the sensor space)\n", "\n", "For more advanced settings, please look at the [npendulum environment documentation](http://flowersteam.github.io/explauto/explauto.environment.html#explauto.environment.npendulum.npendulum.NPendulumEnvironment).\n", "\n", "Then we create the Environment instance." ] }, { "cell_type": "code", "collapsed": false, "input": [ "config = env_configs['default']\n", "\n", "print 'Default configuration for the npendulum:'\n", "for config_key, value in config.items():\n", " print '\\t{}: {}'.format(config_key, value)\n", "\n", "environment = env_cls(**config)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Default configuration for the npendulum:\n", "\ts_mins: [-450. -1.]\n", "\tm_mins: [-0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1]\n", "\tnoise: 0.02\n", "\ts_maxs: [ 450. 1.]\n", "\tm_maxs: [ 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1]\n", "\tn: 5\n" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each environment has an [update](http://flowersteam.github.io/explauto/explauto.environment.html#explauto.environment.environment.Environment.update) method, we take as argument a motor command vector $m$. It computes $m\\_bounds$, the command $m$ bounded according to the configuration used (m_mins, m_maxs values), then computes the corresponding sensory effect vector $s$ and returns the position and velocity of the last effector.\n", "\n", "$m$ is a list of ten elements that are the amplitude of each step function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from math import pi\n", "m = [0.01,0.06,-0.05,0.01,0.,0.,0.,0.,-0.1,0.01]\n", "print environment.update(m)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 1.00000000e-02 6.00000000e-02 -5.00000000e-02 1.00000000e-02\n", " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", " -1.00000000e-01 1.00000000e-02 8.15708828e+01 -6.32193953e-01]\n" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, we add the noise :" ] }, { "cell_type": "code", "collapsed": false, "input": [ "s = environment.compute_sensori_effect(m)\n", "print s" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simple arm environment also comes with few methods to visualize the arm shape for a given motor configuration." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first one plot the position of the end effector at the end of the movement." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "\n", "ax = axes()\n", "environment.plot_s(ax, s)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: pylab import has clobbered these variables: ['pi']\n", "`%matplotlib` prevents importing * from pylab and numpy\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\njY3dsgWAnaysrNQOObCooaTbqxfP9l9cvXuHOt9Ufcts/5urZ1cfO/imASy3RV0xXFT9SfW4xuWq\nj63+oPqR6jurd83qH6neVv36Lo/nigHgIdrtiuF8WfEjGAAeosM2lATAISUYABgIBgAGggGAwaK+\nRA84y17ykrVOnfrq8mPH6k1vWptzaziXCQY4T5w6VR/60NoOZ3Yqg90ZSgJgIBgAGAgGAAaCAYCB\nyWc4Txw7VjtNNE/lsH++KwlgSfmuJAD2RTAAMBAMAAwEAwADwQDAQDAAMBAMAAwEAwADwQDAQDAA\nMBAMAAwEAwADwQDAQDAAMBAMAAwEAwADwQDAQDAAMBAMAAwEAwADwQDAQDAAMBAMAAwEAwADwQDA\nQDAAMBAMAAwEAwADwQDAQDAAMBAMAAwEAwADwQDAQDAAMFhUMDyv+nj15er796h3bXWiuru6eQ7t\nAlh6iwqGj1XPrf5qjzoXVK9tCofLqxdVTzrIRq2vrx/kw59X9NX+6Kf901f7M49+WlQwnKg+eYY6\nV1Unq1PVA9U7qhsPslFemPunr/ZHP+2fvtqf8zkY9uPS6p4tx/fOygA4QEcO8LE/UF2yQ/krq/fs\n4+83zm5zADgXfLDdJ5+vrt635fiWdp+A/mhTkNhsNptt/9tHO4Q+WD1ll3NHqk9Vx6qHN/0DDnTy\nGYDFeW7T/MH/Vp+t3jsrf2z151vqXVf9S9Mk9C3zbCAAAEC/WH2lumhL2S1NN9SdqJ69pfwpTfdf\n3F397rwaeAj8ZvWJ6nj1rurbtpzTV3tzg+amo01Dxx+v/rn62Vn5RU0LVT5Z/UX1yC1/s9vraxlc\nUH2kzYU6+mlOjjZNbn+6zWC4vGku48KmuY2T1crs3N813VtRdUfTf/pl8Kw2lzX/xmwrfXUmFzT1\nybGmPlr2ObJLqifP9h/RNET8pOrV1S/Pym9u79fXYV5ef7b9QvW26vbZsX6ak3dW39cYDNtXPr2v\naXXUY5o+NZ/2wup1c2jjYfPc6q2zfX21tx9oXFX3itnG5N3VM5s+5V48K7tkdly7v76WwWXVndUP\nt3nFMNd+WtZkubHphrl/2lb+2Fn5aadvqttefl/LebPdTzVdAZS+OhM3aO7uWHVl9eGmN7v7Z+X3\nt/nmt9vraxn8TvVLTcPcp821nw7yBrdF2+0Gu1ubUnbrWNzKDvWWyX5uRry1+r/qj+bVqHPcxqIb\ncEg9ovrT6ueq/9527vTa+t0sQ5/+aPUfTfMLq7vUOfB+Op+D4Vm7lH9P9fimydSaLtv+oXpq06fb\no1vqXtaUwPfN9reW33c2G7tgu/XVaS+prq+esaVsWftqv7b3z9HGT3bL6MKmUHhL01BSTZ9+L2la\ntv6YpjfF2vn1tQyvo6dVNzT9f/vG6lub+ks/zdlOk88PbwqPT7V5NfHhpvBYabkmVK9tWkny6G3l\n+mpvbtAcrVR/2DRMstWr2xwjf0VfPam60+trWVzT5hW7fpqzf21crvrKppn9E9VztpSfXoJ5snrN\n3Fq3eHdX/9Z0afuR6ve2nNNXe3OD5qYfahoz/2ibr6Vrm/7v3dnOyzB3e30ti2vaXJWknwAAAAAA\nAAAAAAAA2M3RpvtjHjU7ftTs+HELaxE8BBcsugFwHvp8052oz6/+rOk3Ke5s8wsIAVhCR5q+j+vn\nm+4C9yEMgJ7T9DUQzzhTRThMlvX3GGAerqs+U33vohsCwOI9uem3jY82fQnhTr93AcCSWKn+ps0h\npJva/ElUAJbQy6q3bzl+WNOPQT19Mc0BAAAAAAAAAAAAAAAAADgH/D9VfDLuuqQi6AAAAABJRU5E\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The second one computes and plots the position of the end effector from $m$. In this example, we generate goals and plot them." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "\n", "motor_configurations = environment.random_motors(n=5)\n", "ax = axes()\n", "for m in motor_configurations:\n", " environment.plot_and_compute(ax, m)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\njNXZXNQ0JqtNY7Tsc2SXVY+e3b9v0yniR1Qvr3551n5d+7++jvLy+nPtF6o3VLfMto3TnLy5+sHG\nYNi58umdTaujHtj0qfluz61eNYcaj5prqz+e3TdW+/vhxlV1L53dmLytelLTp9wHzNoum23X3q+v\nZXB59Z7qxzp9xDDXcVrWZHlm0wVz/7Kj/UGz9rvdfVHdzvY7Ws6L7X6m6QigjNXZuEBzb6vVY6r3\nNb3ZfXbW/tlOv/nt9fpaBr9T/VLTae67zXWcDvMCt0Xb6wK7G5pSdvu5uJVd+i2Tg1yMeEP1f9Wf\nzKuo89zWogs4ou5b/Xn189V/79h399r6vSzDmP5E9Z9N8wtre/Q59HG6kIPhyXu0f3/10KbJ1JoO\n2/6pelzTp9srtvW9vCmB75jd395+x7ksdsH2Gqu7Ha+eXj1xW9uyjtVB7RyfKxo/2S2jezeFwuub\nTiXV9On3sqZl6w9selOs3V9fy/A6enz1jKb/b8eq72gaL+M0Z7tNPt+nKTw+1umjifc1hcdKyzWh\nek3TSpL772g3VvtzgeZopfqjptMk27280+fIX9qZk6q7vb6WxdWdPmI3TnP28cblqi9rmtk/VT11\nW/vdSzBvr14xt+oW77bq35sObT9Q/f62fcZqfy7QPO1Hm86Zf7DTr6Vrmv7vvafdl2Hu9fpaFld3\nelWScQIAAAAAAAAAAAAAYC9XNF0fc7/Z9v1m2w9ZWEVwD1y06ALgAvSFpitRn139RdNvUryn019A\nCMASurjp+7he0nQVuA9hAPTUpq+BeOLZOsJRsqy/xwDz8LTq09UPLLoQABbv0U2/bXxF05cQ7vZ7\nFwAsiZXq7zp9CunFnf5JVACW0AurN27bvlfTj0E9YTHlAAAAAAAAAAAAAAAAAACcB/4fk6NxkVZF\nLTsAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The third one plots the whole npendulum. The squared point is the end effector." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "\n", "motor_configurations = environment.random_motors(n=1)\n", "ax = axes()\n", "for m in motor_configurations:\n", " environment.plot_npendulum(ax, m)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last one generates .png files that contains the whole pendulum image, in order to create a video. The computation may take few minutes." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "m = [0.01,0.06,-0.05,0.01,0.,0.,0.,0.,-0.1,0.01]\n", "environment.animate_pendulum(m)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 16 } ], "metadata": {} } ] }