{ "metadata": { "kernelspec": { "codemirror_mode": { "name": "ipython", "version": 2 }, "display_name": "IPython (Python 2)", "language": "python", "name": "python2" }, "name": "", "signature": "sha256:efbfafb5f0837f44dd6b5ccc74db599a98ad6e97ba227ad32430c2aa563c3fe9" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Inverted Pendulum Simulation" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import SVG\n", "SVG(filename='n-pendulum-with-cart.svg')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 1, "svg": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " image/svg+xml\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "" ], "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "# Formulate the Problem\n", "\n", "### Create Generalized Coordinates, Speeds, and Constants" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy import symbols, trigsimp\n", "from sympy.physics.mechanics import *" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# Initialize the pretty-printing system\n", "init_vprinting()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# Number of Links\n", "n = 3\n", "\n", "# Generalized Coordinates and Speeds\n", "q = dynamicsymbols('q:' + str(n + 1))\n", "u = dynamicsymbols('u:' + str(n + 1))\n", "\n", "# Input Force\n", "f = dynamicsymbols('f')\n", "\n", "# Constants:\n", "m = symbols('m:' + str(n + 1)) # Mass of each bob\n", "l = symbols('l:' + str(n)) # Length of each link\n", "g, t = symbols('g t') # Gravity and time" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Create the world coordinate frame, and origin" ] }, { "cell_type": "code", "collapsed": false, "input": [ "I = ReferenceFrame('I')\n", "O = Point('O')\n", "O.set_vel(I, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Create point attached to cart" ] }, { "cell_type": "code", "collapsed": false, "input": [ "P0 = O.locatenew('P0', q[0] * I.x)\n", "P0.set_vel(I, u[0] * I.x)\n", "Pa0 = Particle('Pa0', P0, m[0])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Create remaining links" ] }, { "cell_type": "code", "collapsed": false, "input": [ "frames = [I]\n", "points = [P0]\n", "particles = [Pa0]\n", "forces = [(P0, f * I.x - m[0] * g * I.y)]\n", "kindiffs = [q[0].diff() - u[0]]\n", "\n", "for i in range(n):\n", " # Create a new frame oriented with current q and u\n", " Bi = I.orientnew('B' + str(i), 'Axis', [q[i + 1], I.z])\n", " Bi.set_ang_vel(I, u[i + 1] * I.z)\n", " frames.append(Bi)\n", "\n", " # Create a new point at the origin of the frame\n", " Pi = points[-1].locatenew('P' + str(i + 1), l[i] * Bi.x)\n", " Pi.v2pt_theory(points[-1], I, Bi)\n", " points.append(Pi)\n", " \n", " # Create a particle at that point\n", " Pai = Particle('Pa' + str(i + 1), Pi, m[i + 1])\n", " particles.append(Pai)\n", "\n", " # Add gravity acting at that point\n", " forces.append((Pi, -m[i + 1] * g * I.y))\n", "\n", " # Define the kinematic equations for this point\n", " kindiffs.append(q[i + 1].diff(t) - u[i + 1])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Solve the Dynamic Equations using Kane's Method" ] }, { "cell_type": "code", "collapsed": false, "input": [ "kane = KanesMethod(I, q_ind=q, u_ind=u, kd_eqs=kindiffs)\n", "fr, frstar = kane.kanes_equations(forces, particles)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "trigsimp(fr)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}f\\\\- g l_{0} \\left(m_{1} + m_{2} + m_{3}\\right) \\operatorname{cos}\\left(q_{1}\\right)\\\\- g l_{1} \\left(m_{2} + m_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)\\\\- g l_{2} m_{3} \\operatorname{cos}\\left(q_{3}\\right)\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nF+cAE+HiXqTVNCF2nlYjlrUWA4R79SQwLhfnACNDVZxsLu44U3e6kk8Iu7tYlteE2HlajVg2Wlw8\ndPlZYFABp/u1Jpp8WXA+/iKtFp3Palf4hXEB24h0pCb0crQ8CcyBi4PMRj8OJE/HcvdVWi3n9U8a\nNC5wWo1aztHyHDBHLo6wVtwxwtBQZF6k1bIWDJQ97QKn1YjlLC3PAfMtLk63VTU+ds6h1cLyzwET\n1qd/Cawr6t+fuchblNSaAy7kabkMGO3eD724gQk8uBuYG5gAAoHqO2L+MGD8I07egBOAwq7+UMR4\nSTnbk1OlEJmWxaVlWfoQMF5SLstB/00hMi1rUutX6dR+ChgPKed4cqZo3oNcqZzXIFfGW/4UMB5S\nzutPXqV5c3bvz+HSXBlv+UPAeEg5rzt5lbFlgwwuLcvItcAESLnU/rYEl8Zie9QMI5fV/uBNlwLj\nknKK8/LtbyNb1VJcmuLzzB61yUhnLOcGwaA/XAmMS8opzstDxFlb1VJcmtoQpPeoUWlrIZG29OT1\nG4FJknKK8/Lsb8PVaXQFjyMz4nBpaiuW3qNGpTMoI2Em8e8bgXEtHUg5w3kd9rehrNrcmOTSFDBk\nj5qR/gHAeEg5xXlFObVjxDhcmuxKdI8abP2UG1cyuDT3CXrLF0aMh5RTnFd8q1qKS5PJl+5RMxvd\nfkDy9ZBykvNKbFVLcWmKOSN71ExXyuDSvBHiVl4YMR5STk7l45wapN/4FjXPHjUfI+c29Vz5SmDQ\nE4uUI5yX7aW1Vc3+yVsyrwToP5WOTYq9qkKVFwJzIOUo5+X4gy1VW9Wcn3xF8xLJyTQi/QNeIo+k\nHOG83NaSrWruT96yJph4GjfSP2HZIU3KeZucVxki0zRgeWoid13YlSJWX//pT1nafB2JT2sQEXP/\nRS6Ku/6LXD3+BarW+a936J1/2TX/i1xty/4HQLt7NVCz0xAAAAAASUVORK5CYII=\n", "prompt_number": 9, "text": [ "\u23a1 f \u23a4\n", "\u23a2 \u23a5\n", "\u23a2-g\u22c5l\u2080\u22c5(m\u2081 + m\u2082 + m\u2083)\u22c5cos(q\u2081)\u23a5\n", "\u23a2 \u23a5\n", "\u23a2 -g\u22c5l\u2081\u22c5(m\u2082 + m\u2083)\u22c5cos(q\u2082) \u23a5\n", "\u23a2 \u23a5\n", "\u23a3 -g\u22c5l\u2082\u22c5m\u2083\u22c5cos(q\u2083) \u23a6" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "trigsimp(frstar)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}l_{0} m_{1} u^{2}_{1} \\operatorname{cos}\\left(q_{1}\\right) + l_{0} m_{2} u^{2}_{1} \\operatorname{cos}\\left(q_{1}\\right) + l_{0} m_{3} u^{2}_{1} \\operatorname{cos}\\left(q_{1}\\right) + l_{0} \\left(m_{1} + m_{2} + m_{3}\\right) \\operatorname{sin}\\left(q_{1}\\right) \\dot{u}_{1} + l_{1} m_{2} u^{2}_{2} \\operatorname{cos}\\left(q_{2}\\right) + l_{1} m_{3} u^{2}_{2} \\operatorname{cos}\\left(q_{2}\\right) + l_{1} \\left(m_{2} + m_{3}\\right) \\operatorname{sin}\\left(q_{2}\\right) \\dot{u}_{2} + l_{2} m_{3} u^{2}_{3} \\operatorname{cos}\\left(q_{3}\\right) + l_{2} m_{3} \\operatorname{sin}\\left(q_{3}\\right) \\dot{u}_{3} - \\left(m_{0} + m_{1} + m_{2} + m_{3}\\right) \\dot{u}_{0}\\\\- l_{0} l_{1} m_{2} u^{2}_{2} \\operatorname{sin}\\left(q_{1} - q_{2}\\right) - l_{0} l_{1} m_{3} u^{2}_{2} \\operatorname{sin}\\left(q_{1} - q_{2}\\right) - l_{0} l_{1} \\left(m_{2} + m_{3}\\right) \\operatorname{cos}\\left(q_{1} - q_{2}\\right) \\dot{u}_{2} - l_{0} l_{2} m_{3} u^{2}_{3} \\operatorname{sin}\\left(q_{1} - q_{3}\\right) - l_{0} l_{2} m_{3} \\operatorname{cos}\\left(q_{1} - q_{3}\\right) \\dot{u}_{3} + l_{0} \\left(m_{1} + m_{2} + m_{3}\\right) \\operatorname{sin}\\left(q_{1}\\right) \\dot{u}_{0} - \\left(l_{0}^{2} m_{1} + l_{0}^{2} m_{2} + l_{0}^{2} m_{3}\\right) \\dot{u}_{1}\\\\l_{0} l_{1} m_{2} u^{2}_{1} \\operatorname{sin}\\left(q_{1} - q_{2}\\right) + l_{0} l_{1} m_{3} u^{2}_{1} \\operatorname{sin}\\left(q_{1} - q_{2}\\right) - l_{0} l_{1} \\left(m_{2} + m_{3}\\right) \\operatorname{cos}\\left(q_{1} - q_{2}\\right) \\dot{u}_{1} - l_{1} l_{2} m_{3} u^{2}_{3} \\operatorname{sin}\\left(q_{2} - q_{3}\\right) - l_{1} l_{2} m_{3} \\operatorname{cos}\\left(q_{2} - q_{3}\\right) \\dot{u}_{3} + l_{1} \\left(m_{2} + m_{3}\\right) \\operatorname{sin}\\left(q_{2}\\right) \\dot{u}_{0} - \\left(l_{1}^{2} m_{2} + l_{1}^{2} m_{3}\\right) \\dot{u}_{2}\\\\l_{2} m_{3} \\left(l_{0} u^{2}_{1} \\operatorname{sin}\\left(q_{1} - q_{3}\\right) - l_{0} \\operatorname{cos}\\left(q_{1} - q_{3}\\right) \\dot{u}_{1} + l_{1} u^{2}_{2} \\operatorname{sin}\\left(q_{2} - q_{3}\\right) - l_{1} \\operatorname{cos}\\left(q_{2} - q_{3}\\right) \\dot{u}_{2} - l_{2} \\dot{u}_{3} + \\operatorname{sin}\\left(q_{3}\\right) \\dot{u}_{0}\\right)\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 10, "text": [ "\u23a1 2 2 2 \n", "\u23a2l\u2080\u22c5m\u2081\u22c5u\u2081 \u22c5cos(q\u2081) + l\u2080\u22c5m\u2082\u22c5u\u2081 \u22c5cos(q\u2081) + l\u2080\u22c5m\u2083\u22c5u\u2081 \u22c5cos(q\u2081) + l\u2080\u22c5(m\u2081 + m\u2082 + m\u2083)\n", "\u23a2 \n", "\u23a2 2 2 \n", "\u23a2 - l\u2080\u22c5l\u2081\u22c5m\u2082\u22c5u\u2082 \u22c5sin(q\u2081 - q\u2082) - l\u2080\u22c5l\u2081\u22c5m\u2083\u22c5u\u2082 \u22c5sin(q\u2081 - q\u2082) - l\u2080\u22c5l\u2081\u22c5(m\u2082 + m\u2083\n", "\u23a2 \n", "\u23a2 2 2 \n", "\u23a2 l\u2080\u22c5l\u2081\u22c5m\u2082\u22c5u\u2081 \u22c5sin(q\u2081 - q\u2082) + l\u2080\u22c5l\u2081\u22c5m\u2083\u22c5u\u2081 \u22c5sin(q\u2081 - q\u2082) - l\u2080\u22c5l\u2081\u22c5(m\n", "\u23a2 \n", "\u23a2 \u239b 2 \n", "\u23a3 l\u2082\u22c5m\u2083\u22c5\u239dl\u2080\u22c5u\u2081 \u22c5sin(q\u2081 - q\n", "\n", " 2 2 \n", "\u22c5sin(q\u2081)\u22c5u\u2081\u0307 + l\u2081\u22c5m\u2082\u22c5u\u2082 \u22c5cos(q\u2082) + l\u2081\u22c5m\u2083\u22c5u\u2082 \u22c5cos(q\u2082) + l\u2081\u22c5(m\u2082 + m\u2083)\u22c5sin(q\u2082)\u22c5u\u2082\n", " \n", " 2 \n", ")\u22c5cos(q\u2081 - q\u2082)\u22c5u\u2082\u0307 - l\u2080\u22c5l\u2082\u22c5m\u2083\u22c5u\u2083 \u22c5sin(q\u2081 - q\u2083) - l\u2080\u22c5l\u2082\u22c5m\u2083\u22c5cos(q\u2081 - q\u2083)\u22c5u\u2083\u0307 + l\n", " \n", " 2 \n", "\u2082 + m\u2083)\u22c5cos(q\u2081 - q\u2082)\u22c5u\u2081\u0307 - l\u2081\u22c5l\u2082\u22c5m\u2083\u22c5u\u2083 \u22c5sin(q\u2082 - q\u2083) - l\u2081\u22c5l\u2082\u22c5m\u2083\u22c5cos(q\u2082 - q\u2083)\u22c5u\n", " \n", " 2 \n", "\u2083) - l\u2080\u22c5cos(q\u2081 - q\u2083)\u22c5u\u2081\u0307 + l\u2081\u22c5u\u2082 \u22c5sin(q\u2082 - q\u2083) - l\u2081\u22c5cos(q\u2082 - q\u2083)\u22c5u\u2082\u0307 - l\u2082\u22c5u\u2083\u0307 \n", "\n", " 2 \u23a4\n", "\u0307 + l\u2082\u22c5m\u2083\u22c5u\u2083 \u22c5cos(q\u2083) + l\u2082\u22c5m\u2083\u22c5sin(q\u2083)\u22c5u\u2083\u0307 - (m\u2080 + m\u2081 + m\u2082 + m\u2083)\u22c5u\u2080\u0307\u23a5\n", " \u23a5\n", " \u239b 2 2 2 \u239e \u23a5\n", "\u2080\u22c5(m\u2081 + m\u2082 + m\u2083)\u22c5sin(q\u2081)\u22c5u\u2080\u0307 - \u239dl\u2080 \u22c5m\u2081 + l\u2080 \u22c5m\u2082 + l\u2080 \u22c5m\u2083\u23a0\u22c5u\u2081\u0307 \u23a5\n", " \u23a5\n", " \u239b 2 2 \u239e \u23a5\n", "\u2083\u0307 + l\u2081\u22c5(m\u2082 + m\u2083)\u22c5sin(q\u2082)\u22c5u\u2080\u0307 - \u239dl\u2081 \u22c5m\u2082 + l\u2081 \u22c5m\u2083\u23a0\u22c5u\u2082\u0307 \u23a5\n", " \u23a5\n", " \u239e \u23a5\n", "+ sin(q\u2083)\u22c5u\u2080\u0307\u23a0 \u23a6" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "Simulation\n", "==========" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pydy.system import System\n", "from numpy import hstack, zeros, linspace, pi, ones\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/home/jimmy/Code/py27env/lib/python2.7/site-packages/pydy/codegen/code.py:18: DeprecationWarning: This module, 'pydy.codgen.code', is deprecated. The function 'generate_ode_function' can be found in the 'pydy.codegen.ode_function_generator' module. 'CythonGenerator' has been removed, use 'pydy.codegen.cython_code.CythonMatrixGenerator' instead.\n", " DeprecationWarning)\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Define some parameter constants" ] }, { "cell_type": "code", "collapsed": false, "input": [ "arm_length = 1. / n\n", "bob_mass = 0.01 / n\n", "\n", "# Substitution dictionary, for applying the parameters\n", "parameter_dict = {g: 9.81}\n", "parameter_dict.update({i: arm_length for i in l})\n", "parameter_dict.update({i: bob_mass for i in m})" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "print(parameter_dict)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "{m2: 0.0033333333333333335, m3: 0.0033333333333333335, l2: 0.3333333333333333, l0: 0.3333333333333333, l1: 0.3333333333333333, g: 9.81, m1: 0.0033333333333333335, m0: 0.0033333333333333335}\n" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "sys = System(kane, constants=parameter_dict)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "x0 = hstack(( 0, pi / 2 * ones(len(q) - 1), 1e-3 * ones(len(u))))\n", "t = linspace(0, 10, 1000)\n", "\n", "sys.initial_conditions = dict(zip(q + u, x0))\n", "sys.times = t\n", "y = sys.integrate()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/home/jimmy/Code/py27env/lib/python2.7/site-packages/pydy/codegen/code.py:68: DeprecationWarning: This function is deprecated and will be removed in PyDy 0.4.0. Use the the new 'generate_ode_function' in 'pydy.codegen.ode_function_generator'\n", " DeprecationWarning)\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Plot the Results" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(t, y[:, :y.shape[1] / 2])\n", "plt.xlabel('Time [sec]')\n", "plt.legend(q)\n", "plt.title(\"Generalized Coordinates\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(t, y[:, y.shape[1] / 2:])\n", "plt.xlabel('Time [sec]')\n", "plt.legend(u)\n", "plt.title(\"Generalized Speeds\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Animate the Results" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from util import animate_pendulum" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "%%capture\n", "animate_pendulum(t, y, arm_length, filename=\"open-loop.mp4\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "%%capture\n", "!mplayer open-loop.mp4" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "Controller Design\n", "=================" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from control import ctrb, lqr\n", "from numpy.linalg import matrix_rank, eigvals\n", "from sympy import matrix2numpy" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Define an Equilibrium Point" ] }, { "cell_type": "code", "collapsed": false, "input": [ "equilibrium_point = hstack(( 0, pi / 2 * ones(len(q) - 1), zeros(len(u)) ))\n", "\n", "# Create a substitution dictionary to apply the point\n", "equilibrium_dict = dict(zip(q + u, equilibrium_point))\n", "equilibrium_dict.update({i.diff(): 0 for i in u})" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Linearize about the Equilibrium Point" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A, B, inputs = kane.linearize(op_point=(parameter_dict, equilibrium_dict), A_and_B=True, new_method=True)\n", "A = matrix2numpy(A, float)\n", "B = matrix2numpy(B, float)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "eigvals(A)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "array([ 0. , 0. , 15.11094356, 9.86296794,\n", " 5.24797562, -15.11094356, -9.86296794, -5.24797562])" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Check for Controllability" ] }, { "cell_type": "code", "collapsed": false, "input": [ "matrix_rank(ctrb(A, B)) == A.shape[0]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "True" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Design a LQR Controller" ] }, { "cell_type": "code", "collapsed": false, "input": [ "K, X, E = lqr(A, B, ones(A.shape), 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Simulate the Feedback System" ] }, { "cell_type": "code", "collapsed": false, "input": [ "sys.specifieds = {f: lambda x, t: K.dot(equilibrium_point - x)}\n", "x0 = hstack(( 0, pi / 2 * ones(len(q) - 1), 1 * ones(len(u)) ))\n", "sys.initial_conditions = dict(zip(q + u, x0))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "y = sys.integrate()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Plot the Results" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(t, y[:, :y.shape[1] / 2])\n", "plt.xlabel('Time [sec]')\n", "plt.legend(q)\n", "plt.title(\"Generalized Coordinates\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ngg==\n", "text": [ "" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(t, y[:, y.shape[1] / 2:])\n", "plt.xlabel('Time [sec]')\n", "plt.legend(u)\n", "plt.title(\"Generalized Speeds\");" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Animate the Results" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%capture\n", "animate_pendulum(t, y, arm_length, filename=\"closed-loop.mp4\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "%%capture\n", "!mplayer closed-loop.mp4" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "# SymPy Codegen" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy.printing import ccode\n", "from sympy.utilities.codegen import codegen\n", "from sympy.utilities.autowrap import autowrap\n", "from sympy import sin, sqrt, lambdify" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "a, b, c = symbols('a, b, c')\n", "expr = a + b*c + sin(a) + sqrt(b)\n", "expr" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$a + \\sqrt{b} + b c + \\operatorname{sin}\\left(a\\right)$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAALkAAAAZBAMAAACfn5KBAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpmJdu8QRM1mu90y\nVKvMIHo8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACsklEQVRIDaWVPWhTURTH/y9pXl6+mjc4qdgH\ndhGqDSJo0eEhES04OMWPQSJ+LArJ4uTQ51B5INSI7kaoYKdm0a2aQUcxiItTMxScpMFC/Biq5957\n7s1Hk2DNo+k99/c/58fNpU2Aoc+eP/S0hsZjBl/HnB85bgUj4zHDSGNMwcjx2yPTccPD/yuwKmry\n8QiBXYP9otbbsAOY+L1vSuzlctLtsP4qSidwmn10B9D5x5yugPtc2kGHUZXxu7bi2rMNBp95NUDu\nNeWQl4Sn98d0Idce+zyhhSLn2mOA5JpyEy8pcyE3ewJtj5cJ1+h1UsfaY4AMNKXN/rpuxT5TOeSx\nDk4XFND2MwEw4RNbyvMfjvZIEM2fV/1M3305Z60204sz+Q3BT9NLOSMecNd1WoKae7du/ABStLd/\nFkuuTNgjgbWGUEIoalep2WkitYwp0b1CL+VMBLAvI1JV3frs9m/gCaFMG9mcjNguQSyHb6pf0XgB\nE0g2kbyAbIWCNTqWcmZqiLSR8glGw/DhpTBsUolZF69piQQokf1EGL4KwyUNZotUddO3y660B8j6\nFFykQeVMtxCrolQnSI8+O6a8hDiz42GhIRM+uwRXJBG/mF5/9F3aq8YeU06y0+nWud/YJ9upIjF6\no3xQ9ghwa4u7td0q4llZ3Azb6WbYGa+h1MDLjCsnjD299UmAbJkuUD7aLsAvepPdlKYmK132FbIr\nZyKA4yfeRFW3sWPxgSA05KmE7RIcgT3TTTMFJF06OP1kfQqO0pUqZyQHe+PUgbOqu2Nf9wSxpw+p\nQN+wBNG5pz00Pjd/PL25fWdz+8PqVUru0aByOnVulEvH7qirMiGf3exVMZimzGznv1b024b3aXCt\nH8j9YDrsU2ygYvfwOY/0fQLvXjRwQn97JIdexcCxf4Rd33x/ARVzqSU9fY4iAAAAAElFTkSuQmCC\n", "prompt_number": 34, "text": [ " ___ \n", "a + \u2572\u2571 b + b\u22c5c + sin(a)" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "ccode(expr)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 35, "text": [ "'a + sqrt(b) + b*c + sin(a)'" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "code, header = codegen((\"test\", expr), \"c\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "print(header[1])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/******************************************************************************\n", " * Code generated with sympy 0.7.6 *\n", " * *\n", " * See http://www.sympy.org/ for more information. *\n", " * *\n", " * This file is part of 'project' *\n", " ******************************************************************************/\n", "\n", "\n", "#ifndef PROJECT__TEST__H\n", "#define PROJECT__TEST__H\n", "\n", "double test(double a, double b, double c);\n", "\n", "#endif\n", "\n", "\n" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "print(code[1])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/******************************************************************************\n", " * Code generated with sympy 0.7.6 *\n", " * *\n", " * See http://www.sympy.org/ for more information. *\n", " * *\n", " * This file is part of 'project' *\n", " ******************************************************************************/\n", "#include \"test.h\"\n", "#include \n", "\n", "double test(double a, double b, double c) {\n", "\n", " double test_result;\n", " test_result = a + sqrt(b) + b*c + sin(a);\n", " return test_result;\n", "\n", "}\n", "\n" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "f_native = autowrap(expr)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "f_native(1, 2, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$9.25568454718$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAPBAMAAADe9tr1AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJmJqyLvZs27djJE\nVN3lLQH2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACRElEQVQoFaVTPWhTURg97/+lSZqHg4ggeTZd\nRKXBFASXhlqp6NAQ0NUUFF2kWarilKBQqMtTcBI0tlTEpaW6G1cHDSguLg/soJvR1ihNeZ7v3mRw\n9sI779zvfO/c7333XmBf6QxkVI88ApaDzY4GlFY3cHD1mEjpEP7T9HHN0luFUkmi0LJxFRcrnBhl\nTLWxkPyEhgNts4EQdofaaAQ3SYqaeUmSbAOfAmjZrsEOKdkB3BrunKOZggdIRdk6nAa1ZxH8yTUS\nYSYzysb0XAAt5xqwvlNyY9i7KEuWQGaHYEUwYsC5FcHmVDOL8Q1gPRjI+Qgju9T87j8GqRpjmT+B\nVWe+PzQQxvGWDw207LKCvkT5q13M3j4KBbl7p9i/ud5JxhfF4OYKlxXGIUADLbN+vydR4H0R93Gp\nrSC/BLcDK2myvS1+lgqcvmasqM5kMVAylvFhT32PLXmlYgX5Lsx5fHz3qw0Let3HQ5aXPDFQMrwX\nL6UHgBkqlO6ZO7kYXt8rY30enwcGE5UBey55NNAyud2VCFbIpCEKRhvwem4F6T2jKAZngak3igHf\nmCwGShbulwWzIS6wo2ZXAY+H15daZ7MzM3OXW9eAiUOKweAxUgZKhncFrysS2QTWTG5FQ0GaPahx\nCTyk5EY8dPiqGdI/SAYVUB5pGkswfsP5UhqPnRA3KgpwGvs7mSa8FpNzEaqykmLIDg0G8omxNrgB\nPo94jOrkYV4rAWvsPPCqIJfJerJddwrTbLswONcZG1+4Wx/InP3P+AvCwrwWM77ZhwAAAABJRU5E\nrkJggg==\n", "prompt_number": 40, "text": [ "9.25568454718" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "f_python = lambdify((a, b, c), expr)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "f_python(1, 2, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$9.25568454718$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAPBAMAAADe9tr1AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJmJqyLvZs27djJE\nVN3lLQH2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACRElEQVQoFaVTPWhTURg97/+lSZqHg4ggeTZd\nRKXBFASXhlqp6NAQ0NUUFF2kWarilKBQqMtTcBI0tlTEpaW6G1cHDSguLg/soJvR1ihNeZ7v3mRw\n9sI779zvfO/c7333XmBf6QxkVI88ApaDzY4GlFY3cHD1mEjpEP7T9HHN0luFUkmi0LJxFRcrnBhl\nTLWxkPyEhgNts4EQdofaaAQ3SYqaeUmSbAOfAmjZrsEOKdkB3BrunKOZggdIRdk6nAa1ZxH8yTUS\nYSYzysb0XAAt5xqwvlNyY9i7KEuWQGaHYEUwYsC5FcHmVDOL8Q1gPRjI+Qgju9T87j8GqRpjmT+B\nVWe+PzQQxvGWDw207LKCvkT5q13M3j4KBbl7p9i/ud5JxhfF4OYKlxXGIUADLbN+vydR4H0R93Gp\nrSC/BLcDK2myvS1+lgqcvmasqM5kMVAylvFhT32PLXmlYgX5Lsx5fHz3qw0Let3HQ5aXPDFQMrwX\nL6UHgBkqlO6ZO7kYXt8rY30enwcGE5UBey55NNAyud2VCFbIpCEKRhvwem4F6T2jKAZngak3igHf\nmCwGShbulwWzIS6wo2ZXAY+H15daZ7MzM3OXW9eAiUOKweAxUgZKhncFrysS2QTWTG5FQ0GaPahx\nCTyk5EY8dPiqGdI/SAYVUB5pGkswfsP5UhqPnRA3KgpwGvs7mSa8FpNzEaqykmLIDg0G8omxNrgB\nPo94jOrkYV4rAWvsPPCqIJfJerJddwrTbLswONcZG1+4Wx/InP3P+AvCwrwWM77ZhwAAAABJRU5E\nrkJggg==\n", "prompt_number": 42, "text": [ "9.25568454718" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit f_native(1, 2, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000000 loops, best of 3: 471 ns per loop\n" ] } ], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "%timeit f_python(1, 2, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1000000 loops, best of 3: 775 ns per loop\n" ] } ], "prompt_number": 44 } ], "metadata": {} } ] }