{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How-To: Control a Poppy Humanoid in a Simulator using a Python lib: [pypot](https://github.com/poppy-project/pypot)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"V-REP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook, we will present how a simulated [Poppy Humanoid](https://github.com/poppy-project/poppy-humanoid) - an open-source and 3D printed humanoid robot - can be controlled in real time. The robot will be simulated in [V-REP](http://www.coppeliarobotics.com) a well known and powerful robot simulator. In this tutorial we will show how to **install**, **use**, and **program** the simulated robot in [Python](https://www.python.org). To do that, we will use the [pypot](https://github.com/poppy-project/pypot) library developed to easily control and program Poppy Creatures." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "###**To install the software tools on your machine, we strongly recommend using [Anaconda](https://store.continuum.io/cshop/anaconda/) the scientific python distributions. It comes with all poppy dependencies pre-compiled and works great on Windows, Mac, Linux! We advise you to use the 2.7 version.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In more details, we will:\n", "* see how we can **create a poppy humanoid in the V-REP simulator**\n", "* learn how we can **read/send values to the motors**\n", "* **track** one or several Poppy's parts 3D **position and orientation** (e.g. its head)\n", "* write a **simple primitive** to design higher level behaviors (e.g. a dance motion)\n", "* see how we can **reset** and tune the simulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Poppy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Note: Most of the tutorial is redundant with the ones on how to control a \"real\" poppy creature. In particular, switching from a real robot to a simulated one (and vice versa) can be done just by changing a single line of code (see the [appendix]() at the end of this notebook). Furthermore, most of the notebook can be applied to any [Poppy Creature](https://www.poppy-project.org/technologies/) (and even any \"[pypot robot](http://poppy-project.github.io/pypot/pypot.robot.html#pypot.robot.robot.Robot)\"), only the instantiation method will change.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Comments, issues, improvements and updates can be sent directly on the dedicated section of the [github issue tracker](https://github.com/poppy-project/pypot/labels/Notebooks).**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### What's needed?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**First, if you do not know how to run an IPython Notebook please refer to [our readme](https://github.com/poppy-project/pypot/blob/master/samples/notebooks/readme.md#notebooks-everywhere).**\n", "\n", "To follow this tutorial you will need:\n", "* a [Python](https://www.python.org) interpreter (2.7 is recommended but 3.4 or pypy-2.5 should also work). **We strongly recommand to use a pre-packaged Python distribution such as [Anaconda](https://store.continuum.io/cshop/anaconda/).**\n", "* the [V-REP](http://www.coppeliarobotics.com) simulator (please directly see [v-rep download section](http://www.coppeliarobotics.com/downloads.html) for installation details)\n", "* the python [pypot](https://github.com/poppy-project/pypot) library version >= 2.1\n", "* the [poppy_humanoid](https://github.com/poppy-project/Poppy-Humanoid) software library >= 1.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both V-REP and the pypot/poppy libraries are open source and cross platform." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The pypot and poppy_humanoid library can be installed via [pip](https://python-packaging-user-guide.readthedocs.org/en/latest/projects.html#pip) - a tool for installing Python Package **(if you have no idea what pip is or how to run the following command, please refer to [our readme](https://github.com/poppy-project/pypot#installation) first :-))**:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```bash\n", "pip install pypot poppy_humanoid\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also install them from the [source](https://github.com/poppy-project/poppy-humanoid/tree/master/software) and then use the classical:\n", "\n", "```bash\n", "python setup.py install\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Note: installing poppy_humanoid will also install pypot as it is one of the depencies.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Checking your installation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To check if everything is installed correctly, you can run the following code. If it runs without raising an error, everything is probably installed correctly:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**You can run IPython Notebook code cells by selecting them and clicking the play button or by pressing shift+enter.**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pypot.vrep import from_vrep\n", "from poppy.creatures import PoppyHumanoid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you have any installation issue, please check [our forum](https://forum.poppy-project.org) or the [github issue tracker](https://github.com/poppy-project/pypot/labels/Notebooks)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instantiating a [Poppy Humanoid](https://www.poppy-project.org/creatures/poppy-humanoid/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we will see how a Poppy Humanoid can be created into V-REP and how we can connect it to a [pypot Robot](http://poppy-project.github.io/pypot/pypot.robot.html): i.e. the object used in pypot to represent and communicate with a robot." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, you will need to launch V-REP (please refer to [V-REP documentation](http://www.coppeliarobotics.com/helpFiles/index.html) if you don't know how to do it). Once it's done you should see something like:\n", "\n", "\"V-REP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instead of loading a specific scene with a Poppy humanoid through the V-REP GUI and then connect to it using pypot, we will directly instantiate the [PoppyHumanoid](https://github.com/poppy-project/Poppy-Humanoid) class which will do most of the work for us." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In particular, it will:\n", "* load a V-REP scene with a Poppy Humanoid\n", "* instantiate a [pypot Robot](http://poppy-project.github.io/pypot/pypot.robot.html) and connect it to the simulated Poppy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To do that, we will use the following code:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from poppy.creatures import PoppyHumanoid\n", "\n", "poppy = PoppyHumanoid(simulator='vrep')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You should now see a Poppy in your V-REP window:\n", "\n", "\"V-REP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Note: Be careful that VREP is often displaying pop-up that freezes the communication with pypot. You will have to close them otherwise a timeout will occur!**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Controlling motors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As soon as you have instantiated a [Robot](http://poppy-project.github.io/pypot/pypot.robot.html#pypot.robot.robot.Robot) - in our case through the [PoppyHumanoid](https://github.com/poppy-project/Poppy-Humanoid) class - it is synced with the simulation (or the real robot). This means that values from the V-REP simulation (e.g. limbs position) are retrieved from the simu and affected to their equivalent variables by a synchronization loop. Similarly target variables (e.g. motors goal position) are sent to V-REP. This synchronization loop runs at 50Hz by default." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To be more clear, when reading a variable from the *poppy* object you will obtain the last synced value from V-REP and when setting a new value to a *poppy* variable it will be automatically sent to V-REP a short time after. You never need to manually sync your instance with the current state of the simulation, it is automatically done by a thread running in background." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Accessing motors registers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dynamixel motors comes with a [lot of registers](http://support.robotis.com/en/product/dynamixel/mx_series/mx-28.htm) which are used to store the current state of the robot (its current position, temperature, pid gains...) but also where you can write new target values, for instance a new goal position." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " In this section we will see how pypot give you an high-level access to the most frequently used registers ([pypot low-level IO](http://poppy-project.github.io/pypot/dynamixel.html) gives you an access to all registers but this is beyond the scope of this tutorial)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, first we will retrieve the list of all available motors. The [motors](http://poppy-project.github.io/pypot/pypot.robot.html#pypot.robot.robot.Robot.motors) variable contains the list of all motors attached to the current robot. \n", "\n", "\"Poppy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default, each motor prints its name, its id, and its current position:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.motors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can access a specific motor directly using its name:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.l_shoulder_y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want to get the current position (in degrees) of a specific motor (e.g. *head_y*) we can use:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "-22.6" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.head_y.present_position" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also use the list/dict comprehension to retrieve a specific value for all motors." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A list of all current motor positions:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0.0,\n", " -0.0,\n", " 0.2,\n", " -22.5,\n", " 0.0,\n", " -0.0,\n", " 1.5,\n", " 1.0999999999999943,\n", " 0.0,\n", " 0.1,\n", " 1.1,\n", " -0.0,\n", " -0.0,\n", " -0.0,\n", " -0.10000000000000009,\n", " 0.1,\n", " 0.0,\n", " 0.4,\n", " 0.0,\n", " 0.7,\n", " 0.8,\n", " 0.2,\n", " 0.0,\n", " 0.4000000000000057,\n", " -0.09999999999999432]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[m.present_position for m in poppy.motors]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A dictionary of pairs {motor_name: motor_position}:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{u'abs_x': 0.0,\n", " u'abs_y': 0.4,\n", " u'abs_z': -0.0,\n", " u'bust_x': 0.2,\n", " u'bust_y': 0.8,\n", " u'head_y': -22.6,\n", " u'head_z': 0.0,\n", " u'l_ankle_y': 0.7,\n", " u'l_arm_z': -0.0,\n", " u'l_elbow_y': -0.0,\n", " u'l_hip_x': -0.1,\n", " u'l_hip_y': -0.10000000000000009,\n", " u'l_hip_z': 0.1,\n", " u'l_knee_y': 0.0,\n", " u'l_shoulder_x': 0.4000000000000057,\n", " u'l_shoulder_y': 0.0,\n", " u'r_ankle_y': 1.5,\n", " u'r_arm_z': -0.0,\n", " u'r_elbow_y': -0.0,\n", " u'r_hip_x': 1.1,\n", " u'r_hip_y': -0.0,\n", " u'r_hip_z': 0.1,\n", " u'r_knee_y': 0.2,\n", " u'r_shoulder_x': 1.0999999999999943,\n", " u'r_shoulder_y': 0.0}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{m.name: m.present_position for m in poppy.motors}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Motor alias or group of motors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In pypot we use the concept of motor alias which is simply a list of motors grouped together under a specific name. For instance, you can directly access all the motors from the torso using the *torso* alias. Poppy Humanoid also defines a *leg* alias, a *left arm* alias..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, that *motors* used above is just one of the predefined motors alias - one with all attached motors. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can retrieve the list of motors alias available using:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[u'r_leg',\n", " u'torso',\n", " u'l_leg_sagitall',\n", " u'head',\n", " u'l_arm',\n", " u'r_leg_sagitall',\n", " u'l_leg',\n", " u'arms',\n", " u'legs',\n", " u'r_arm']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.alias" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each alias contains a list of motors. Thus, you can similarly retrieve all positions for only the motors of the right leg:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{u'r_ankle_y': 1.5,\n", " u'r_hip_x': 1.2,\n", " u'r_hip_y': -0.0,\n", " u'r_hip_z': 0.1,\n", " u'r_knee_y': 0.2}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{m.name: m.present_position for m in poppy.r_leg}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setting registers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In a similar way that you retrieve values from V-REP, you can set a new target position to a motor." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By sending the following command, you should see the robot turns its head of 90°:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.head_z.goal_position = 90." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or you can affect new target positions for a group of motors:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for m in poppy.l_arm:\n", " m.goal_position = 30." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's important to note the difference between the current and goal position. In particular, when setting a new goal position, it will take time before the motor actually reaches the desired position (see section below for an example)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, in the code below only the second instruction will likely have an effect on the robot:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.r_shoulder_x.goal_position = 30\n", "poppy.r_shoulder_x.goal_position = -30" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Note: While the full list of motor registers is available, not all of them are having an effect in the V-REP simulation. For instance, modifying the pid of a motor won't affect the simulation.*\n", "\n", "*Currently in the V-REP simulator you can use:*\n", "\n", "* **present_position** *(R): the actual position of the motor (usually from -180° to 180°)*\n", "* **goal_position** *(RW): the target position of the motor, that is to say the position it will try to reach (same range and units than the present position)*\n", "* **present_load** *(R): the current load applied on the motor (expressed in % of the max supported load)*\n", "* **torque_limit** *(RW): the maximum torque that a motor can applied (also expressed in % of the max supported load)*\n", "* **compliant** *(RW): whether the motor is compliant: if it resits or not when manually turned*\n", "* **angle_limit** *(R): the position limits (lower and upper) of the motor. Some motors are restrained to a smaller position range to avoid breaking other parts.*\n", "\n", "*Support for additional features may be added in future version.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Goto position" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also use the [goto_position](http://poppy-project.github.io/pypot/pypot.dynamixel.html#pypot.dynamixel.motor.DxlMotor.goto_position) method (both at the robot or motor level) to get more control over the trajectory of a motor. In the examples above, when affecting the [goal_position](http://poppy-project.github.io/pypot/pypot.dynamixel.html#pypot.dynamixel.io.DxlIO.get_goal_position) the motor will try to reach it as fast as the [moving_speed](http://poppy-project.github.io/pypot/pypot.dynamixel.html#pypot.dynamixel.io.DxlIO.get_moving_speed) permits it. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the moment, [goto_position](http://poppy-project.github.io/pypot/pypot.dynamixel.html#pypot.dynamixel.motor.DxlMotor.goto_position) comes with two behaviors:\n", "* *dummy:* just adjust the moving_speed so the goal_position is reached at the predefined timestamp (not always very accurate)\n", "* *minjerk:* using the [minimum jerk](http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/MinimumJerkHypothesis.ipynb) to compute a smoother trajectory." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's restart the simulation:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.reset_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we make the head move towards -45° in 2 seconds:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.head_z.goto_position(-45, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Goto position also comes with a wait arguments, so you can easily link motions (*wait=True* will wait for the movement to finish before executing the next line, while *wait=False* will send the new target position order and directly jump to the next instruction):" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.head_z.goto_position(45, 2, wait=False)\n", "poppy.head_y.goto_position(-30, 2, wait=True)\n", "\n", "poppy.head_z.goto_position(0, 2, wait=True)\n", "\n", "poppy.head_y.goto_position(20, 1, wait=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can get and set a new *goto_behavior* through the property:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'minjerk'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.head_y.goto_behavior" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.head_y.goto_behavior = 'dummy'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Read and Write" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's prepare another example where we will illustrate the difference between present and goal position by applying a sinusoid on a specific motor." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make sure the robot is in a stable position, we will reset the simulation. This will re-positioned the robot in its initial position:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.reset_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's make the robot's head moves:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import time\n", "\n", "import math\n", "\n", "amp = 30 # in degrees\n", "freq = 0.5 # in Hz\n", "\n", "t0 = time.time()\n", "\n", "while True:\n", " t = time.time()\n", " \n", " # run for 10s\n", " if t - t0 > 10:\n", " break\n", "\n", " poppy.head_z.goal_position = amp * math.sin(2 * 3.14 * freq * t)\n", " \n", " time.sleep(0.04)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we will use the same code but we will record both the current and goal position:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "current, goal = [], []\n", "\n", "t0 = time.time()\n", "\n", "while True:\n", " t = time.time()\n", " \n", " # run for 5s\n", " if t - t0 > 5:\n", " break\n", "\n", " poppy.head_z.goal_position = amp * math.sin(2 * 3.14 * freq * t)\n", "\n", " \n", " current.append(poppy.head_z.present_position)\n", " goal.append(poppy.head_z.goal_position)\n", " \n", " time.sleep(0.04)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we plot the two trajectories, we can clearly see a time shift representing the time needed by the motor to reach the desired position: " ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n", "iUQiPcb/B2F6yj3Ihf17AAAAAElFTkSuQmCC\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%pylab inline\n", "\n", "t = linspace(0, 5, len(current))\n", "plot(t, goal)\n", "plot(t, current)\n", "\n", "legend(('goal', 'current'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, we can observe a goto position using the *minimum jerk* mode which shows the smooth acceleration and deceleration:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n", "SUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "poppy.l_shoulder_x.goto_behavior = 'minjerk'\n", "\n", "poppy.l_shoulder_x.goto_position(120, 5)\n", "\n", "pos = []\n", "t0 = time.time()\n", "\n", "while time.time() - t0 < 5:\n", " pos.append(poppy.l_shoulder_x.present_position)\n", " \n", " time.sleep(0.01)\n", " \n", "t = linspace(0, 5, len(pos))\n", "plot(t, pos)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.reset_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tracking objects" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using a V-REP simulated robot, you can easily retrieve an object position and orientation. You just need to know its name in the vrep scene." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Note: at the moment to know the name of object in the vrep scene, you have to look for them in the v-rep window. Hopefully in future version of pypot, you will be able to directly retrieve them.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Finding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For instance, to get the 3D position of the left hand, you just have to do:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0.09879576414823532, 0.009888313710689545, 0.4137122929096222]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.get_object_position('l_forearm_visual')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By default, the position is in the V-REP scene referential (the zero is somewhere between Poppy Humanoid's feet). You can use any object as referential and thus get the *left forearm* position related to the *head* for instance:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[-0.18214008212089539, -0.27985879778862, -0.09438711404800415]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poppy.get_object_position('l_forearm_visual', 'head_visual')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This can be used for discovering a reachable space for instance:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [], "source": [ "reached_pt = []\n", "\n", "for m in poppy.l_arm:\n", " m.goto_behavior = 'minjerk'\n", "\n", "# We generate 25 random arm configuration\n", "# and stores the reached position of the forearm\n", "for _ in range(25):\n", " poppy.reset_simulation()\n", " \n", " # Generate a position by setting random position (within the angle limit) to each joint\n", " # This can be hacked to define other exploration\n", " pos = {m.name: randint(min(m.angle_limit), max(m.angle_limit)) for m in poppy.l_arm} \n", " poppy.goto_position(pos, 2., wait=True)\n", " \n", " reached_pt.append(poppy.get_object_position('l_forearm_visual'))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from mpl_toolkits.mplot3d import Axes3D\n", "\n", "ax = axes(projection='3d')\n", "ax.scatter(*array(reached_pt).T)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example could be extended to show a simple method to build an inverse model (you build a table with many goals in the search space associated with the motor command which generated it, and for the inverse model you reproduce the motor command of the stored goal closest to the point you want to reach).\n", "\n", "This could be a very good exercise where in a specific notebook you describe a simple approach to build and use approximated inverse models. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you are interested in this kind of experiments and want to go further, you can see the [explauto](https://github.com/flowersteam/explauto) library. It provides a unified framework for autonomous exploration experiment notably using a Poppy Creature. You will find there learning algorithms that can be used to learn forward (e.g. where the end position of an arm is depending on each joints position) and inverse model (finding the joint angles to locate the end effector at a desired position)." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [], "source": [ "poppy.reset_simulation()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using primitives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pypot also comes with the [Primitive](http://poppy-project.github.io/pypot/primitive.html) abstraction. The idea is to write simple behaviors that can be automatically combined to create more complex behaviors. As the primitive is likely to change in the future, and go toward something better defined, we will only show the very basic stuff you can do using primitives." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In more technical details, a primitive is only a thread which have access to all robot sensors and effectors. A [primitive manager](http://poppy-project.github.io/pypot/pypot.primitive.html#module-pypot.primitive.manager) is used to gather all primitives orders and combined them using a filter (a simple sum by default)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As an example of how to use primitives, we will use one of the predefined primitives, the [Sinus](http://poppy-project.github.io/pypot/pypot.primitive.html#pypot.primitive.utils.Sinus):" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pypot.primitive.utils import Sinus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Primitives are usually instantiated with a robot as the first argument. As Sinus is a [LoopPrimitive](http://poppy-project.github.io/pypot/pypot.primitive.html#pypot.primitive.primitive.LoopPrimitive) (i.e. a specific primitive which call an update method at a predefined frequency), you also need to pass the call frequency as the second argument)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The other arguments, here the motors list, the amplitude and the frequency are specific to the [Sinus](http://poppy-project.github.io/pypot/pypot.primitive.html#pypot.primitive.utils.Sinus) primitive." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "sin_1 = Sinus(poppy, 25., [poppy.head_z, poppy.head_y], amp=15, freq=.15)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A primitive can be:\n", "* started (re-started)\n", "* stopped\n", "* paused\n", "* resumed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By running the following code, you should see both motors of the head performs a sinusoid." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [], "source": [ "sin_1.start()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Multiples primitives can be runned at the same time:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [], "source": [ "sin_2 = Sinus(poppy, 25., [poppy.head_z, ], amp=8, freq=.5)\n", "sin_2.start()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will now write a simple motor position logger using a loop primitive:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pypot.primitive import LoopPrimitive\n", "\n", "class MotorPositionLogger(LoopPrimitive):\n", " def __init__(self, robot, refresh_freq, motor):\n", " LoopPrimitive.__init__(self, robot, refresh_freq)\n", " \n", " self.motor = getattr(self.robot, motor.name)\n", "\n", " # This code will be called each time the primitive is started\n", " def setup(self):\n", " self.positions = []\n", " \n", " # This method will be called at the predefined frequency\n", " def update(self):\n", " self.positions.append(self.motor.present_position)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "logger = MotorPositionLogger(poppy, 50, poppy.head_z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will illustrate the combination of primitives by pausing one of them in the middle of the recording:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n", "YRg15/8DYJEXMxzR9RcAAAAASUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "logger.start()\n", "\n", "time.sleep(10)\n", "sin_2.pause()\n", "\n", "time.sleep(15)\n", "sin_2.resume()\n", "\n", "time.sleep(5)\n", "logger.stop()\n", "\n", "pos = logger.positions\n", "\n", "plot(linspace(0, 30, len(pos)), pos)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see on the plot above, that the two sinusoids are combined from 0 to 10 and from 25 to 30. From 10 to 25 only one of the sinusoid is applied." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we stop all running primitives:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for p in poppy.active_primitives:\n", " p.stop()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Appendix: switching from a simulated poppy to a real one" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As mentionned in the introduction, most of the code above can be run on a \"real\" robot. All you need to change is the way the robot is instantiated. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You have to replace:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```python\n", "poppy = PoppyHumanoid(simulator='vrep')\n", "```\n", "\n", "by \n", "\n", "```python\n", "poppy = PoppyHumanoid()\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, some of the directly V-REP related code - such as *reset_simulation* or *get_object_position* does not have any direct equivalent on the real robot. But all the rest should work and give about the same results on the real or the simulated robot." ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }