{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Benchmark your Poppy robot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The goal of this notebook is to help you identify the performance of your robot and where the bottle necks are. We will measure:\n", "* the time to read/write the position to one motor (for each of your dynamixel bus)\n", "* the time to read/write the positions for all motors (for each of your dynamixel bus)\n", "* the regularity of the synchronization loop of pos/speed/load when\n", " * only this loop is runnnig\n", " * all other synchronization loops are running\n", " * everything else is running" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from __future__ import print_function, division\n", "\n", "from ipywidgets import interact" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All bench info will be stored in this dictionary so it's easy to compare with other platforms." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "results = {}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What's the platform" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Linux-4.1.19-v7+-armv7l-with-debian-8.0\n" ] } ], "source": [ "import platform\n", "\n", "p = platform.platform()\n", "print(p)\n", "\n", "results['platform'] = p" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.7.10 |Continuum Analytics, Inc.| (default, Oct 28 2015, 19:48:38) \n", "[GCC 4.6.3]\n" ] } ], "source": [ "import sys\n", "\n", "v = sys.version\n", "print(v)\n", "\n", "results['python'] = v" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pypot version: 2.11.5\n", "Poppy-creature version: 1.8.1\n" ] } ], "source": [ "import pypot\n", "import poppy.creatures\n", "\n", "results['pypot'] = pypot.__version__\n", "print('Pypot version: {}'.format(results['pypot']))\n", "\n", "results['poppy-creature'] = poppy.creatures.__version__\n", "print('Poppy-creature version: {}'.format(results['poppy-creature']))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from poppy.creatures import installed_poppy_creatures\n", "\n", "RobotCls = None\n", "\n", "def robot_selector(robot):\n", " global RobotCls\n", " RobotCls = robot\n", " \n", "interact(robot_selector, robot=installed_poppy_creatures);" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "robot = RobotCls()\n", "results['robot'] = RobotCls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make sure all motors are turned off to avoid breaking anything:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for m in robot.motors:\n", " m.compliant = True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We find the synchronization loop for pos/speed/load and monkey patch them for monitoring." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import time\n", "\n", "from pypot.dynamixel.syncloop import MetaDxlController\n", "from pypot.dynamixel.controller import PosSpeedLoadDxlController\n", "\n", "meta_controllers = [c for c in robot._controllers if isinstance(c, MetaDxlController)]\n", "controllers = [cc for cc in c.controllers for c in meta_controllers if isinstance(cc, PosSpeedLoadDxlController)]\n", "\n", "for c in controllers:\n", " c.stop()\n", "\n", "for c in controllers: \n", " def wrapped_update():\n", " if not hasattr(c, 't'):\n", " c.t = []\n", " \n", " c.t.append(time.time())\n", " c.update()\n", " \n", " c._update = wrapped_update\n", " \n", "\n", "for c in controllers:\n", " c.start()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we define our monitor and plotting functions." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import psutil\n", "\n", "def monitor(controllers, duration):\n", " for c in controllers:\n", " c.stop()\n", " c.t = []\n", " c.start()\n", " \n", " cpu = []\n", " start = time.time()\n", " while time.time() - start < duration:\n", " time.sleep(1.0)\n", " cpu.append(psutil.cpu_percent())\n", " \n", " print('Avg CPU usage: {}%'.format(mean(cpu)))\n", " return {c: array(c.t) for c in controllers}\n", "\n", "def freq_plot(logs):\n", " for c, t in logs.items():\n", " dt = diff(t)\n", " freq = 1.0 / dt\n", " \n", " print('Avg frq for controller {}: {}ms STD={}ms'.format(c.ids, freq.mean(), freq.std()))\n", " hist(freq)\n", " xlim(0, 100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also define this follow trajectory function, which applies a sinus on one motor (choosen below) and plot how close is its real position from the target one:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def follow_trajectory(motor, duration=5, freq=50):\n", " t = linspace(0, duration, duration * freq)\n", "\n", " a1, f1 = 10.0, 1.0\n", " a2, f2 = 5.0, 0.5\n", "\n", " traj = a1 * sin(2 * pi * f1 * t) + a2 * sin(2 * pi * f2 * t)\n", " rec = []\n", "\n", "\n", " motor.compliant = False\n", " motor.moving_speed = 0\n", " motor.goal_position = 0\n", " time.sleep(1.)\n", "\n", " for p in traj:\n", " motor.goal_position = p\n", " rec.append(motor.present_position)\n", "\n", " time.sleep(1.0 / freq) \n", " \n", " motor.compliant = True\n", "\n", " plot(traj)\n", " plot(rec) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now choose which motor you want to use for the follow trajectory test. It should be able to move freely from -20 to +20 degrees." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "motor = None\n", "\n", "def motor_selector(m):\n", " global motor\n", " motor = getattr(robot, m)\n", " \n", "interact(motor_selector, m=[m.name for m in robot.motors]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Benchmark" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our benchmark duration in seconds:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "duration = 30" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Normal usage" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Avg CPU usage: 17.0%\n", "Avg frq for controller [1, 2, 3, 4, 5, 6]: 49.1493342343ms STD=2.53030421378ms\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = monitor(controllers, duration)\n", "freq_plot(d)\n", "\n", "results['normal'] = d" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "follow_trajectory(motor)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Without primitives" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for p in robot.primitives:\n", " p.stop()\n", " \n", "robot._primitive_manager.stop()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Avg CPU usage: 18.3%\n", "Avg frq for controller [1, 2, 3, 4, 5, 6]: 49.1257827327ms STD=2.43625545718ms\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEACAYAAACznAEdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEmdJREFUeJzt3G+MXFd9xvHvE4wFgRAlSIlVmyQOblIHlT8RNbQUMSIi\nEJCcvHJNKeRfeUFSEVEUYacvvLwpBAlBpDZIiBAMAiwHRG2q1HEtZ4RoCw6E4DQ2yUrIjmPVi6Am\niCIVO/n1xZzEw3btXWYmu2Pv9yONdO+Zc+899/jqPnvPueNUFZIknbXQDZAkjQcDQZIEGAiSpMZA\nkCQBBoIkqTEQJEnAHAIhyT1JppLsneG7jyZ5Nsn5fWUbk0wm2Z/k6r7yK5PsTfJEks+O7hQkSaMw\nlyeEe4F3Ti9MsgJ4B3Cwr2w1sA5YDVwD3J0k7evPATdX1WXAZUn+3z4lSQtn1kCoqu8CR2f46jPA\n7dPKrgW2VNXxqjoATAJrkiwDzqmqh1q9LwPXDdxqSdLIDTSHkGQtcKiqHp321XLgUN/64Va2HHiq\nr/ypViZJGhNLft8NkrwUuIPecJEk6QzxewcC8GrgEuDHbX5gBfBwkjX0nggu6qu7opUdBl41Q/mM\nkvgfLEnSAKoqs9ea2VyHjNI+VNV/VtWyqrq0qlbSG/55Q1X9DNgO/EWSpUlWAquAPVV1BHg6yZoW\nIh8Atp3qgFXlp4pNmzYteBvG5WNf2Bf2xak/w5rLa6dfA/6d3ptBTya5cfq9mxNhsQ/YCuwD7gdu\nqROtvBW4B3gCmKyqHUO3XnqBLVt2CUlO+Vm27JKFbqY0ErMOGVXVX87y/aXT1j8BfGKGej8E/vj3\nbaC0kKamDtL7m+dUdQZ+QpfGir9UHnOdTmehmzA27IsT7IsT7IvRySjGnUYtSY1ju7T49Ka8ZrsW\nM5LxW2lYSah5mFSWJJ3hDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBI\nkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSGgNBkgQYCJKkZtZASHJPkqkke/vK\nPpVkf5JHknwzySv6vtuYZLJ9f3Vf+ZVJ9iZ5IslnR38qkqRhzOUJ4V7gndPKdgKvqarXA5PARoAk\nVwDrgNXANcDdSdK2+Rxwc1VdBlyWZPo+JUkLaNZAqKrvAkenle2qqmfb6veAFW15LbClqo5X1QF6\nYbEmyTLgnKp6qNX7MnDdCNovSRqRUcwh3ATc35aXA4f6vjvcypYDT/WVP9XKJEljYskwGyf5O+BY\nVX19RO153sTExPPLnU6HTqcz6kNI0mmt2+3S7XZHtr9U1eyVkouBb1fVa/vKbgA+CLy9qv63lW0A\nqqrubOs7gE3AQeDBqlrdytcDb6uqD53keDWXdkkvtN4U2GzXYvB61ThIQlVl9pozm+uQUdrnuYO+\nC7gdWPtcGDTbgfVJliZZCawC9lTVEeDpJGvaJPMHgG2DNlqSNHqzDhkl+RrQAV6Z5El6f/HfASwF\n/rW9RPS9qrqlqvYl2QrsA44Bt/T9qX8r8CXgJcD9VbVjxOciSRrCnIaM5ptDRhoXDhnpdDJfQ0aS\npDOcgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgI\nkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1swZCknuSTCXZ21d2XpKd\nSR5P8kCSc/u+25hkMsn+JFf3lV+ZZG+SJ5J8dvSnIkkaxlyeEO4F3jmtbAOwq6ouB3YDGwGSXAGs\nA1YD1wB3J0nb5nPAzVV1GXBZkun7lCQtoFkDoaq+CxydVnwtsLktbwaua8trgS1VdbyqDgCTwJok\ny4BzquqhVu/LfdtIksbAoHMIF1TVFEBVHQEuaOXLgUN99Q63suXAU33lT7UySdKYWDKi/dSI9vO8\niYmJ55c7nQ6dTmfUh5Ck01q326Xb7Y5sf6ma/V6e5GLg21X12ra+H+hU1VQbDnqwqlYn2QBUVd3Z\n6u0ANgEHn6vTytcDb6uqD53keDWXdkkvtN4U2GzXYvB61ThIQlVl9pozm+uQUdrnOduBG9ry9cC2\nvvL1SZYmWQmsAva0YaWnk6xpk8wf6NtGkjQGZh0ySvI1oAO8MsmT9P7i/yRwX5Kb6P31vw6gqvYl\n2QrsA44Bt/T9qX8r8CXgJcD9VbVjtKciSRrGnIaM5ptDRhoXDhnpdDJfQ0aSpDOcgSBJAgwESVJj\nIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkw\nECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1QwVCko1JHkuyN8lXkyxNcl6SnUkeT/JAknOn\n1Z9Msj/J1cM3X5I0KgMHQpKLgQ8Cb6iq1wJLgPcCG4BdVXU5sBvY2OpfAawDVgPXAHcnyXDNlySN\nyjBPCL8Cfgu8LMkS4KXAYeBaYHOrsxm4ri2vBbZU1fGqOgBMAmuGOL4kaYQGDoSqOgp8GniSXhA8\nXVW7gAuraqrVOQJc0DZZDhzq28XhViZJGgNLBt0wyaXAR4CLgaeB+5K8D6hpVaevz8nExMTzy51O\nh06nM1A7JelM1e126Xa7I9tfqga6X5NkHfCOqvpgW38/8Gbg7UCnqqaSLAMerKrVSTYAVVV3tvo7\ngE1V9f0Z9l2Dtksapd4012zXYvB61ThIQlUNPDc7zBzC48Cbk7ykTQ5fBewDtgM3tDrXA9va8nZg\nfXsTaSWwCtgzxPElSSM08JBRVf04yZeBHwLPAD8CPg+cA2xNchNwkN6bRVTVviRb6YXGMeAWHwMk\naXwMPGT0QnLISOPCISOdThZyyEiSdAYxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIk\nqTEQJEmAgSBJagwESRJgIEiSGgNBkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEmAgSJIaA0GS\nBBgIkqRmqEBIcm6S+5LsT/JYkjclOS/JziSPJ3kgybl99TcmmWz1rx6++ZKkURn2CeEu4P6qWg28\nDvgJsAHYVVWXA7uBjQBJrgDWAauBa4C7k2TI40uSRmTgQEjyCuCtVXUvQFUdr6qngWuBza3aZuC6\ntrwW2NLqHQAmgTWDHl+SNFrDPCGsBH6e5N4kDyf5fJKzgQuragqgqo4AF7T6y4FDfdsfbmWSpDGw\nZMhtrwRuraofJPkMveGimlZv+vqcTExMPL/c6XTodDqDtVKSzlDdbpdutzuy/aVqoPs1SS4E/qOq\nLm3rf04vEF4NdKpqKsky4MGqWp1kA1BVdWervwPYVFXfn2HfNWi7pFHqTXPNdi0Gr1eNgyRU1cBz\nswMPGbVhoUNJLmtFVwGPAduBG1rZ9cC2trwdWJ9kaZKVwCpgz6DHlySN1jBDRgAfBr6a5MXAT4Eb\ngRcBW5PcBByk92YRVbUvyVZgH3AMuMXHAEkaHwMPGb2QHDLSuHDISKeTBRsykiSdWQwESRJgIEiS\nGgNBkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJ\ngIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqRk6EJKcleThJNvb+nlJdiZ5PMkDSc7tq7sx\nyWSS/UmuHvbYkqTRGcUTwm3Avr71DcCuqroc2A1sBEhyBbAOWA1cA9ydJCM4viRpBIYKhCQrgHcD\nX+grvhbY3JY3A9e15bXAlqo6XlUHgElgzTDHlySNzrBPCJ8Bbgeqr+zCqpoCqKojwAWtfDlwqK/e\n4VYmSRoDSwbdMMl7gKmqeiRJ5xRV6xTfndTExMTzy51Oh07nVIeQpMWn2+3S7XZHtr9UDXS/Jsnf\nA38FHAdeCpwDfAt4I9Cpqqkky4AHq2p1kg1AVdWdbfsdwKaq+v4M+65B2yWNUm+aa7ZrMXi9ahwk\noaoGnpsdeMioqu6oqouq6lJgPbC7qt4PfBu4oVW7HtjWlrcD65MsTbISWAXsGfT4kqTRGnjI6BQ+\nCWxNchNwkN6bRVTVviRb6b2RdAy4xccASRofAw8ZvZAcMtK4cMhIp5MFGzKSJJ1ZDARJEmAgSJIa\nA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmA\ngSBJagwESRJgIEiSGgNBkgQYCJKkxkCQJAEGgiSpGTgQkqxIsjvJY0keTfLhVn5ekp1JHk/yQJJz\n+7bZmGQyyf4kV4/iBCRJo5GqGmzDZBmwrKoeSfJy4IfAtcCNwC+q6lNJPgacV1UbklwBfBX4E2AF\nsAv4w5qhAUlmKpbmXRJgtmsxeL1qHCShqjLo9gM/IVTVkap6pC3/GthP70Z/LbC5VdsMXNeW1wJb\nqup4VR0AJoE1gx5fkjRaI5lDSHIJ8Hrge8CFVTUFvdAALmjVlgOH+jY73MokSWNgybA7aMNF3wBu\nq6pfJ5n+7DzQs/TExMTzy51Oh06nM2gTJemM1O126Xa7I9vfwHMIAEmWAP8M/EtV3dXK9gOdqppq\n8wwPVtXqJBuAqqo7W70dwKaq+v4M+3UOQWPBOQSdThZsDqH5IrDvuTBotgM3tOXrgW195euTLE2y\nElgF7Bny+JKkERnmLaO3AN8BHqX3J1QBd9C7yW8FXgUcBNZV1S/bNhuBm4Fj9IaYdp5k3z4haCz4\nhKDTybBPCEMNGb1QDASNCwNBp5OFHjKSJJ0hDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJ\ngIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSGgNBkgQYCJKk\nxkDQorVs2SUkOeVHWkzmPRCSvCvJT5I8keRj83186TlTUweBmuUjLR7zGghJzgL+AXgn8BrgvUn+\naD7bcLrpdrsL3YSxYV+cYF+cYF+Mznw/IawBJqvqYFUdA7YA185zG04rXuwn2Bcn2Bcn2BejM9+B\nsBw41Lf+VCuTJC2wJQvdAL0wjh49yvnnnz9rvbPPfiW/+c0vTlnnrLPO5tlnfzMWdT7+8Y+P7FiS\nfleq5m/iLMmbgYmqeldb3wBUVd05rZ6zeZI0gKoa+PW4+Q6EFwGPA1cB/wXsAd5bVfvnrRGSpBnN\n65BRVT2T5G+AnfTmL+4xDCRpPMzrE4IkaXyN1S+VF/OP1pKsSLI7yWNJHk3y4VZ+XpKdSR5P8kCS\ncxe6rfMlyVlJHk6yva0vyr5Icm6S+5Lsb9fHmxZxX2xsfbA3yVeTLF0sfZHkniRTSfb2lZ303Ftf\nTbbr5uq5HGNsAsEfrXEc+Nuqeg3wp8Ct7fw3ALuq6nJgN7BxAds4324D9vWtL9a+uAu4v6pWA68D\nfsIi7IskFwMfBN5QVa+lN+T9XhZPX9xL7/7Yb8ZzT3IFsA5YDVwD3J05/F8sYxMILPIfrVXVkap6\npC3/GtgPrKDXB5tbtc3AdQvTwvmVZAXwbuALfcWLri+SvAJ4a1XdC1BVx6vqaRZhXwC/An4LvCzJ\nEuClwGEWSV9U1XeBo9OKT3bua4Et7Xo5AEzSu8ee0jgFgj9aa5JcArwe+B5wYVVNQS80gAsWrmXz\n6jPA7fzufyi0GPtiJfDzJPe24bPPJzmbRdgXVXUU+DTwJL0geLqqdrEI+6LPBSc59+n308PM4X46\nToEgIMnLgW8At7Unhemz/mf8WwBJ3gNMtSemUz3mnvF9QW9Y5ErgH6vqSuB/6A0TLMbr4lLgI8DF\nwB/Qe1J4H4uwL05hqHMfp0A4DFzUt76ilS0a7TH4G8BXqmpbK55KcmH7fhnws4Vq3zx6C7A2yU+B\nrwNvT/IV4Mgi7IungENV9YO2/k16AbEYr4s3Av9WVf9dVc8A3wL+jMXZF8852bkfBl7VV29O99Nx\nCoSHgFVJLk6yFFgPbF/gNs23LwL7ququvrLtwA1t+Xpg2/SNzjRVdUdVXVRVl9K7DnZX1fuBb7P4\n+mIKOJTkslZ0FfAYi/C6oPej1jcneUmbIL2K3ksHi6kvwu8+NZ/s3LcD69tbWCuBVfR+CHzqnY/T\n7xCSvIveGxXP/WjtkwvcpHmT5C3Ad4BHOfGf8d9B7x9xK720Pwisq6pfLlQ751uStwEfraq1Sc5n\nEfZFktfRm1x/MfBT4EbgRSzOvrid3g3wGeBHwF8D57AI+iLJ14AO8EpgCtgE/BNwHzOce5KNwM3A\nMXpD0DtnPcY4BYIkaeGM05CRJGkBGQiSJMBAkCQ1BoIkCTAQJEmNgSBJAgwESVJjIEiSAPg/G8zt\njK2nwgIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = monitor(controllers, duration)\n", "freq_plot(d)\n", "\n", "results['without primitive'] = d" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nXTB4gcpKYPVq8bi0/P2P6GggM5OfBpwSnYK2oTbFlo4jI2zfh2iDl3QFaosUf4lLrFjBfPaTk5yx\n+StQ3VWN0clR4fuPHmVfICJkPrd/smYNUFHheDwsKAxRIVGK5Z1Pn2axJLka9A1S/CUuER3N+rfy\ngr5hQWEoNBXiRAdny+cFXLH85YPuf6xZAxw5wh9z5vc/dkzZ31/bU4uceEFHd4nXSPGXuMz69cDB\ng/yxotQiVFg4JiDYauHsWbFvF5CWv78isvwB5+J/+DCwVqHoi9z0py1S/CUuoyT+xanFKLeUc8fO\nnGGrhogI/nsHxwcxNjUGU4RJnYlKdGPNGrb7e2zMcSwtOk1xo5cr4i/LfWiHFH+Jyziz/A+2HkRt\nT61Dg5fDh5lIiLA265CBPf8jMpJlcfGsfyXLf2iItW5UcvtUdVVJy19DpPhLXGbRIqC9nfXhtWdp\n0lJEh0Zjze/X4KXTL80a+/hj4EqFTZo13TXSt+vHXHUVsH+/4/Gc+Byc7eL3ezxyBFi2TFzkb3B8\nEL2jvciIzeC/QOI1UvwlLhMYCBQX863/4MBglH+lHA+sfwCnz8+u/+xM/I9YjmBNisLSQGJorryS\nfcb2bFm4Be/WvovJaccUscOH+WUhrFjrPAUQKVFaIf+yErcoKQE+/FA8br/bt6MDOH9euZpnRVsF\nilKL1JukRFeuvBL45BNgxi6lPy0mDQsTFmJ/s+Oy4NAhZfGv6qqSjX00Roq/xC2uuw54/33xeIFp\ndonnTz4BNmwAAgR3GqUUFRYp/v5MaioQG8syuuzZkb8DpdWls47NzAB79wJXXy0+Z3V3NQoTpb9f\nS6T4S9yiuJhV+OT5/QEgPzEftT21F3d2OnP5NPQ1IDwoHCnRKRrMVqIX110HvPee4/EdBTuws3on\nbOs6njgBxMcDGQru/LNdZ6XlrzFS/CVuERzMAnwi109USBQSwhPQ3N8MgK0SlNozlJvLUZxWrP5E\nJbqybRvwzjuOx5cnL8c0ncaZ85dqQLz/PvuyUOJo21GsnL9S5VlKbJHiL3GbjRuBPXvE41bXj9kM\nNDezFFER5ZZyFKVIl4+/c911bJU3MjL7OCHEwfXjTPx7R3vROdwpc/w1Roq/xG1uugkoLXUM8Fmx\nBn3ffhvYvJl1fRKxu243SrJLNJmnRD9iY1ntpr17Hcd2FOxAaQ0T/4kJlhZ67bXic1VYKrAqZRUC\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "follow_trajectory(motor)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Without all sensors" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for s in robot.sensors:\n", " s.close()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "d = monitor(controllers, duration)\n", "freq_plot(d)\n", "\n", "results['without sensor'] = d" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "follow_trajectory(motor)" ] } ], "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.10" } }, "nbformat": 4, "nbformat_minor": 0 }