{ "metadata": { "name": "", "signature": "sha256:f399cf8c6ff461e7cfdf4a518410c4760d2b15394a72ca2608c8366289736682" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import os\n", "import time\n", "import poppytools\n", "\n", "from pypot.robot import from_json\n", "\n", "config_path = os.path.join(os.path.dirname(poppytools.__file__), 'configuration', 'poppy_config.json')\n", "\n", "poppy = from_json(config_path)\n", "poppy.start_sync()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import json\n", "\n", "def save_pos(filename, pos):\n", " with open(filename, 'w') as f:\n", " json.dump(pos, f, indent=2)\n", " \n", "def load_pos(filename):\n", " with open(filename) as f:\n", " return json.load(f)\n", " \n", "def get_pos(motors):\n", " return {m.name: m.present_position for m in motors}\n", "\n", "def set_pos(pos):\n", " for n, p in pos.items():\n", " getattr(poppy, n).goal_position = p" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from pyo import *\n", "\n", "s = Server().boot()\n", "s.start()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "bob_sf = [\n", " SfPlayer('sounds/kicks/kick08_good.wav', mul=0.8).out(),\n", " SfPlayer('sounds/snare05.wav', mul=0.8).out(),\n", " SfPlayer('sounds/chorus03.wav', mul=0.8).out(),\n", " SfPlayer('sounds/chorus01.ogg', mul=0.8).out(),\n", "]\n", "\n", "class Sampler(object):\n", " def play(self, id):\n", " bob_sf[id].play().out()\n", " \n", "sampler = Sampler()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "s.recstart(filename='6.wav')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "def play_measure(move):\n", " dur = 2.\n", " \n", " h1 = load_pos('pos/head_1.json')\n", " h2 = load_pos('pos/head_2.json')\n", " lk1 = load_pos('pos/left_kick_1.json')\n", " lk2 = load_pos('pos/left_kick_2.json')\n", " \n", " tete = False\n", " j = 0\n", " \n", " while True:\n", " if j > 3:\n", " tete = True\n", " \n", " for i in range(8):\n", " if i in (2, 6) and tete:\n", " sampler.play(1)\n", " if move:\n", " set_pos(h1)\n", " \n", " if i in (3, 7) and tete:\n", " if move:\n", " set_pos(h2)\n", " \n", " if i in (0, 5):\n", " #sampler.play(0)\n", " if move:\n", " set_pos(lk1)\n", " \n", " if i in (1, 6):\n", " if move:\n", " set_pos(lk2)\n", " \n", " time.sleep(0.2)\n", " \n", " j += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "sf = SfPlayer('sounds/MachineDrumSquareC.wav', loop=True)\n", "filter = Biquad(sf, freq = 100)\n", "effect = Chorus(filter)\n", "effect.out()\n", "\n", "sf.setMul(0.75)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "from pypot.primitive import LoopPrimitive\n", "\n", "class LiveMusic(LoopPrimitive):\n", " def update(self):\n", " x = poppy.l_shoulder_x.present_position / 90.\n", " filter.setFreq(10 + x * 2500)\n", " \n", " y = -poppy.l_shoulder_y.present_position - 50\n", " y = min(max(y / 100., 0), 1)\n", " sf.setSpeed(0.2 + 3.8 * y)\n", " \n", "live = LiveMusic(poppy, 50)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "poppy.r_shoulder_x" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "from pypot.primitive import LoopPrimitive\n", "\n", "class Blah(LoopPrimitive):\n", " def setup(self):\n", " self.play = False\n", " \n", " def update(self):\n", " if poppy.r_shoulder_y.present_position < -50 and not self.play:\n", " self.play = True\n", " \n", " x = poppy.r_shoulder_x.present_position + 25\n", " i = 2 if x > 0 else 3\n", " \n", " sampler.play(i)\n", " \n", " if poppy.r_shoulder_y.present_position > -40 and self.play:\n", " self.play = False\n", " \n", "class Spoueh(LoopPrimitive):\n", " def setup(self):\n", " self.play = False\n", " \n", " def update(self):\n", " if poppy.l_ankle_y.present_position > -15 and not self.play:\n", " self.play = True\n", " sampler.play(0)\n", " \n", " if poppy.l_ankle_y.present_position < -20 and self.play:\n", " self.play = False\n", " \n", "blah = Blah(poppy, 50)\n", "blah.start()\n", "\n", "spoueh = Spoueh(poppy, 50)\n", "spoueh.start()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "poppy.r_arm_z" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "live.start()\n", "sf.play()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "< Instance of SfPlayer class >" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "for m in [poppy.l_ankle_y,]:\n", " m.compliant = True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "for m in [poppy.l_ankle_y, ]:\n", " m.compliant = False\n", " \n", "play_measure(move=True)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompliant\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mplay_measure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmove\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m\u001b[0m in \u001b[0;36mplay_measure\u001b[1;34m(move)\u001b[0m\n\u001b[0;32m 33\u001b[0m \u001b[0mset_pos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlk2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 35\u001b[1;33m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0.2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 36\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 37\u001b[0m \u001b[0mj\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(11, 12, 13, 14, 15, 21, 22, 23, 24, 25), address=6, length=4) to motors [21, 22]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(11, 12, 13, 14, 15, 21, 22, 23, 24, 25), address=42, length=1) to motors [21, 22]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(11, 12, 13, 14, 15, 21, 22, 23, 24, 25), address=43, length=1) to motors [21, 22]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(11, 12, 13, 14, 15, 21, 22, 23, 24, 25), address=43, length=1) to motors [21, 22]\n" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "sf.stop()\n", "live.stop()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(11, 12, 13, 14, 15, 21, 22, 23, 24, 25), address=42, length=1) to motors [21, 22]\n" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "s.recstop()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [52, 53, 54]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [52, 53, 54]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [52, 53, 54]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [52, 53, 54]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [52, 53, 54]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [52, 53, 54]\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING:pypot.dynamixel.error:Timeout after sending DxlSyncReadDataPacket(ids=(31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54), address=36, length=6) to motors [35, 36]\n" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "SfPlayer('2eme_prise.wav', mul=0.8).out()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "< Instance of SfPlayer class >" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }