{
"metadata": {
"name": "n-pendulum-control"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We've been working on a [conference paper](https://github.com/gilbertgede/idetc-2013-paper) to demonstrate the ability to do multibody dynamics with Python. We've been calling this work flow [PyDy](http://pydy.org), short for Python Dynamics. Several pieces of the puzzle have come together lately to really demonstrate the power of the scientific python software packages to handle complex dynamic and controls problems (i.e. IPython notebooks, matplotlib animations, python-control, and our software package mechanics which is a part of SymPy). After writing the draft of our paper, which uses a general n-link pendulum as it's main example, I came across this [blog post by Wolfram](http://blog.wolfram.com/2011/03/01/stabilized-n-link-pendulum/) demonstrating their ability to symbolically derive the equations of motion for the n-link pendulum and stabilize it with an LQR controller. It inspired me to replicate the example as I realized that it was relatively easy to do with all free and open source software!\n",
"\n",
"In this example problem we will derive the equations of motion of an n-link pendulum on a laterally sliding cart and then develop a controller to stabilize it. Balancing a single inverted pendulum is a classic problem that is many times a student's first experience with non-linear dynamics and control. The problem here is extended to a general n-link pendulum and as we will see the equations of motion quickly get messy with greater than 2 links.\n",
"\n",
"The diagram below shows the general description of the problem."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import SVG\n",
"SVG(filename='n-pendulum-with-cart.svg')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 1,
"svg": [
""
],
"text": [
""
]
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I used these software versions for the following computations:\n",
"\n",
"- IPython: 0.13.1.rc2\n",
"- matplotlib: 1.1.1\n",
"- NumPy: 1.6.2\n",
"- SciPy: 0.10.1\n",
"- SymPy: 0.7.2\n",
"- python-control: 0.6d \n",
"\n",
"Equations of Motion\n",
"===================\n",
"\n",
"We'll start by generating the equations of motion for the system with SymPy **[mechanics](http://docs.sympy.org/dev/modules/physics/mechanics/index.html)**. The functionality that mechanics provides is much more in depth than Mathematica's functionality. In the Mathematica example, Lagrangian mechanics were implemented manually with Mathematica's symbolic functionality. **mechanics** provides an assortment of functions and classes to derive the equations of motion for arbitrarily complex (i.e. configuration constraints, nonholonomic motion constraints, etc) multibody systems in a very natural way. First we import the necessary functionality from SymPy."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sympy import symbols\n",
"from sympy.physics.mechanics import *"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now specify the number of links, $n$. I'll start with 5 since the Wolfram folks only showed four."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"n = 5"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**mechanics** will need the generalized coordinates, generalized speeds, and the input force which are all time dependent variables and the bob masses, link lengths, and acceleration due to gravity which are all constants. Time, $t$, is also made available because we will need to differentiate with respect to time."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"q = dynamicsymbols('q:' + str(n + 1)) # Generalized coordinates\n",
"u = dynamicsymbols('u:' + str(n + 1)) # Generalized speeds\n",
"f = dynamicsymbols('f') # Force applied to the cart\n",
" \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": [
"Now we can create and inertial reference frame $I$ and define the point, $O$, as the origin."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"I = ReferenceFrame('I') # Inertial reference frame\n",
"O = Point('O') # Origin point\n",
"O.set_vel(I, 0) # Origin's velocity is zero"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Secondly, we define the define the first point of the pendulum as a particle which has mass. This point can only move laterally and represents the motion of the \"cart\"."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"P0 = Point('P0') # Hinge point of top link\n",
"P0.set_pos(O, q[0] * I.x) # Set the position of P0 \n",
"P0.set_vel(I, u[0] * I.x) # Set the velocity of P0\n",
"Pa0 = Particle('Pa0', P0, m[0]) # Define a particle at P0"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can define the $n$ reference frames, particles, gravitational forces, and kinematical differential equations for each of the pendulum links. This is easily done with a loop."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"frames = [I] # List to hold the n + 1 frames\n",
"points = [P0] # List to hold the n + 1 points\n",
"particles = [Pa0] # List to hold the n + 1 particles\n",
"forces = [(P0, f * I.x - m[0] * g * I.y)] # List to hold the n + 1 applied forces, including the input force, f\n",
"kindiffs = [q[0].diff(t) - u[0]] # List to hold kinematic ODE's\n",
"\n",
"for i in range(n):\n",
" Bi = I.orientnew('B' + str(i), 'Axis', [q[i + 1], I.z]) # Create a new frame\n",
" Bi.set_ang_vel(I, u[i + 1] * I.z) # Set angular velocity\n",
" frames.append(Bi) # Add it to the frames list\n",
"\n",
" Pi = points[-1].locatenew('P' + str(i + 1), l[i] * Bi.x) # Create a new point\n",
" Pi.v2pt_theory(points[-1], I, Bi) # Set the velocity\n",
" points.append(Pi) # Add it to the points list\n",
" \n",
" Pai = Particle('Pa' + str(i + 1), Pi, m[i + 1]) # Create a new particle\n",
" particles.append(Pai) # Add it to the particles list\n",
"\n",
" forces.append((Pi, -m[i + 1] * g * I.y)) # Set the force applied at the point\n",
" \n",
" kindiffs.append(q[i + 1].diff(t) - u[i + 1]) # Define the kinematic ODE: dq_i / dt - u_i = 0"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With all of the necessary point velocities and particle masses defined, the `KanesMethod` class can be used to derive the equations of motion of the system automatically."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"kane = KanesMethod(I, q_ind=q, u_ind=u, kd_eqs=kindiffs) # Initialize the object\n",
"fr, frstar = kane.kanes_equations(forces, particles) # Generate EoM's fr + frstar = 0"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equations of motion are quite long as can been seen below. This is the general nature of most non-simple mutlibody problems. That is why a SymPy is so useful; no more mistakes in algegra, differentiation, or copying in hand written equations. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fr"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 9,
"text": [
"[ -f(t)]\n",
"[g*l0*m1*cos(q1(t)) + g*l0*m2*cos(q1(t)) + g*l0*m3*cos(q1(t)) + g*l0*m4*cos(q1(t)) + g*l0*m5*cos(q1(t))]\n",
"[ g*l1*m2*cos(q2(t)) + g*l1*m3*cos(q2(t)) + g*l1*m4*cos(q2(t)) + g*l1*m5*cos(q2(t))]\n",
"[ g*l2*m3*cos(q3(t)) + g*l2*m4*cos(q3(t)) + g*l2*m5*cos(q3(t))]\n",
"[ g*l3*m4*cos(q4(t)) + g*l3*m5*cos(q4(t))]\n",
"[ g*l4*m5*cos(q5(t))]"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"frstar"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 10,
"text": [
"[ -l0*m1*u1(t)**2*cos(q1(t)) - l0*m2*u1(t)**2*cos(q1(t)) - l0*m3*u1(t)**2*cos(q1(t)) - l0*m4*u1(t)**2*cos(q1(t)) - l0*m5*u1(t)**2*cos(q1(t)) - l1*m2*u2(t)**2*cos(q2(t)) - l1*m3*u2(t)**2*cos(q2(t)) - l1*m4*u2(t)**2*cos(q2(t)) - l1*m5*u2(t)**2*cos(q2(t)) - l2*m3*u3(t)**2*cos(q3(t)) - l2*m4*u3(t)**2*cos(q3(t)) - l2*m5*u3(t)**2*cos(q3(t)) - l3*m4*u4(t)**2*cos(q4(t)) - l3*m5*u4(t)**2*cos(q4(t)) - l4*m5*u5(t)**2*cos(q5(t)) - l4*m5*sin(q5(t))*Derivative(u5(t), t) + (-l3*m4*sin(q4(t)) - l3*m5*sin(q4(t)))*Derivative(u4(t), t) + (-l2*m3*sin(q3(t)) - l2*m4*sin(q3(t)) - l2*m5*sin(q3(t)))*Derivative(u3(t), t) + (-l1*m2*sin(q2(t)) - l1*m3*sin(q2(t)) - l1*m4*sin(q2(t)) - l1*m5*sin(q2(t)))*Derivative(u2(t), t) + (-l0*m1*sin(q1(t)) - l0*m2*sin(q1(t)) - l0*m3*sin(q1(t)) - l0*m4*sin(q1(t)) - l0*m5*sin(q1(t)))*Derivative(u1(t), t) + (m0 + m1 + m2 + m3 + m4 + m5)*Derivative(u0(t), t)]\n",
"[-l0*l1*m2*(-sin(q1(t))*cos(q2(t)) + sin(q2(t))*cos(q1(t)))*u2(t)**2 - l0*l1*m3*(-sin(q1(t))*cos(q2(t)) + sin(q2(t))*cos(q1(t)))*u2(t)**2 - l0*l1*m4*(-sin(q1(t))*cos(q2(t)) + sin(q2(t))*cos(q1(t)))*u2(t)**2 - l0*l1*m5*(-sin(q1(t))*cos(q2(t)) + sin(q2(t))*cos(q1(t)))*u2(t)**2 - l0*l2*m3*(-sin(q1(t))*cos(q3(t)) + sin(q3(t))*cos(q1(t)))*u3(t)**2 - l0*l2*m4*(-sin(q1(t))*cos(q3(t)) + sin(q3(t))*cos(q1(t)))*u3(t)**2 - l0*l2*m5*(-sin(q1(t))*cos(q3(t)) + sin(q3(t))*cos(q1(t)))*u3(t)**2 - l0*l3*m4*(-sin(q1(t))*cos(q4(t)) + sin(q4(t))*cos(q1(t)))*u4(t)**2 - l0*l3*m5*(-sin(q1(t))*cos(q4(t)) + sin(q4(t))*cos(q1(t)))*u4(t)**2 + l0*l4*m5*(sin(q1(t))*sin(q5(t)) + cos(q1(t))*cos(q5(t)))*Derivative(u5(t), t) - l0*l4*m5*(-sin(q1(t))*cos(q5(t)) + sin(q5(t))*cos(q1(t)))*u5(t)**2 + (l0*l3*m4*(sin(q1(t))*sin(q4(t)) + cos(q1(t))*cos(q4(t))) + l0*l3*m5*(sin(q1(t))*sin(q4(t)) + cos(q1(t))*cos(q4(t))))*Derivative(u4(t), t) + (l0*l2*m3*(sin(q1(t))*sin(q3(t)) + cos(q1(t))*cos(q3(t))) + l0*l2*m4*(sin(q1(t))*sin(q3(t)) + cos(q1(t))*cos(q3(t))) + l0*l2*m5*(sin(q1(t))*sin(q3(t)) + cos(q1(t))*cos(q3(t))))*Derivative(u3(t), t) + (l0*l1*m2*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))) + l0*l1*m3*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))) + l0*l1*m4*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))) + l0*l1*m5*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))))*Derivative(u2(t), t) + (l0**2*m1 + l0**2*m2 + l0**2*m3 + l0**2*m4 + l0**2*m5)*Derivative(u1(t), t) + (-l0*m1*sin(q1(t)) - l0*m2*sin(q1(t)) - l0*m3*sin(q1(t)) - l0*m4*sin(q1(t)) - l0*m5*sin(q1(t)))*Derivative(u0(t), t)]\n",
"[ -l0*l1*m2*(sin(q1(t))*cos(q2(t)) - sin(q2(t))*cos(q1(t)))*u1(t)**2 - l0*l1*m3*(sin(q1(t))*cos(q2(t)) - sin(q2(t))*cos(q1(t)))*u1(t)**2 - l0*l1*m4*(sin(q1(t))*cos(q2(t)) - sin(q2(t))*cos(q1(t)))*u1(t)**2 - l0*l1*m5*(sin(q1(t))*cos(q2(t)) - sin(q2(t))*cos(q1(t)))*u1(t)**2 - l1*l2*m3*(-sin(q2(t))*cos(q3(t)) + sin(q3(t))*cos(q2(t)))*u3(t)**2 - l1*l2*m4*(-sin(q2(t))*cos(q3(t)) + sin(q3(t))*cos(q2(t)))*u3(t)**2 - l1*l2*m5*(-sin(q2(t))*cos(q3(t)) + sin(q3(t))*cos(q2(t)))*u3(t)**2 - l1*l3*m4*(-sin(q2(t))*cos(q4(t)) + sin(q4(t))*cos(q2(t)))*u4(t)**2 - l1*l3*m5*(-sin(q2(t))*cos(q4(t)) + sin(q4(t))*cos(q2(t)))*u4(t)**2 + l1*l4*m5*(sin(q2(t))*sin(q5(t)) + cos(q2(t))*cos(q5(t)))*Derivative(u5(t), t) - l1*l4*m5*(-sin(q2(t))*cos(q5(t)) + sin(q5(t))*cos(q2(t)))*u5(t)**2 + (l1*l3*m4*(sin(q2(t))*sin(q4(t)) + cos(q2(t))*cos(q4(t))) + l1*l3*m5*(sin(q2(t))*sin(q4(t)) + cos(q2(t))*cos(q4(t))))*Derivative(u4(t), t) + (l1*l2*m3*(sin(q2(t))*sin(q3(t)) + cos(q2(t))*cos(q3(t))) + l1*l2*m4*(sin(q2(t))*sin(q3(t)) + cos(q2(t))*cos(q3(t))) + l1*l2*m5*(sin(q2(t))*sin(q3(t)) + cos(q2(t))*cos(q3(t))))*Derivative(u3(t), t) + (l1**2*m2 + l1**2*m3 + l1**2*m4 + l1**2*m5)*Derivative(u2(t), t) + (-l1*m2*sin(q2(t)) - l1*m3*sin(q2(t)) - l1*m4*sin(q2(t)) - l1*m5*sin(q2(t)))*Derivative(u0(t), t) + (l0*l1*m2*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))) + l0*l1*m3*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))) + l0*l1*m4*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))) + l0*l1*m5*(sin(q1(t))*sin(q2(t)) + cos(q1(t))*cos(q2(t))))*Derivative(u1(t), t)]\n",
"[ -l0*l2*m3*(sin(q1(t))*cos(q3(t)) - sin(q3(t))*cos(q1(t)))*u1(t)**2 - l0*l2*m4*(sin(q1(t))*cos(q3(t)) - sin(q3(t))*cos(q1(t)))*u1(t)**2 - l0*l2*m5*(sin(q1(t))*cos(q3(t)) - sin(q3(t))*cos(q1(t)))*u1(t)**2 - l1*l2*m3*(sin(q2(t))*cos(q3(t)) - sin(q3(t))*cos(q2(t)))*u2(t)**2 - l1*l2*m4*(sin(q2(t))*cos(q3(t)) - sin(q3(t))*cos(q2(t)))*u2(t)**2 - l1*l2*m5*(sin(q2(t))*cos(q3(t)) - sin(q3(t))*cos(q2(t)))*u2(t)**2 - l2*l3*m4*(-sin(q3(t))*cos(q4(t)) + sin(q4(t))*cos(q3(t)))*u4(t)**2 - l2*l3*m5*(-sin(q3(t))*cos(q4(t)) + sin(q4(t))*cos(q3(t)))*u4(t)**2 + l2*l4*m5*(sin(q3(t))*sin(q5(t)) + cos(q3(t))*cos(q5(t)))*Derivative(u5(t), t) - l2*l4*m5*(-sin(q3(t))*cos(q5(t)) + sin(q5(t))*cos(q3(t)))*u5(t)**2 + (l2*l3*m4*(sin(q3(t))*sin(q4(t)) + cos(q3(t))*cos(q4(t))) + l2*l3*m5*(sin(q3(t))*sin(q4(t)) + cos(q3(t))*cos(q4(t))))*Derivative(u4(t), t) + (l2**2*m3 + l2**2*m4 + l2**2*m5)*Derivative(u3(t), t) + (-l2*m3*sin(q3(t)) - l2*m4*sin(q3(t)) - l2*m5*sin(q3(t)))*Derivative(u0(t), t) + (l0*l2*m3*(sin(q1(t))*sin(q3(t)) + cos(q1(t))*cos(q3(t))) + l0*l2*m4*(sin(q1(t))*sin(q3(t)) + cos(q1(t))*cos(q3(t))) + l0*l2*m5*(sin(q1(t))*sin(q3(t)) + cos(q1(t))*cos(q3(t))))*Derivative(u1(t), t) + (l1*l2*m3*(sin(q2(t))*sin(q3(t)) + cos(q2(t))*cos(q3(t))) + l1*l2*m4*(sin(q2(t))*sin(q3(t)) + cos(q2(t))*cos(q3(t))) + l1*l2*m5*(sin(q2(t))*sin(q3(t)) + cos(q2(t))*cos(q3(t))))*Derivative(u2(t), t)]\n",
"[ -l0*l3*m4*(sin(q1(t))*cos(q4(t)) - sin(q4(t))*cos(q1(t)))*u1(t)**2 - l0*l3*m5*(sin(q1(t))*cos(q4(t)) - sin(q4(t))*cos(q1(t)))*u1(t)**2 - l1*l3*m4*(sin(q2(t))*cos(q4(t)) - sin(q4(t))*cos(q2(t)))*u2(t)**2 - l1*l3*m5*(sin(q2(t))*cos(q4(t)) - sin(q4(t))*cos(q2(t)))*u2(t)**2 - l2*l3*m4*(sin(q3(t))*cos(q4(t)) - sin(q4(t))*cos(q3(t)))*u3(t)**2 - l2*l3*m5*(sin(q3(t))*cos(q4(t)) - sin(q4(t))*cos(q3(t)))*u3(t)**2 + l3*l4*m5*(sin(q4(t))*sin(q5(t)) + cos(q4(t))*cos(q5(t)))*Derivative(u5(t), t) - l3*l4*m5*(-sin(q4(t))*cos(q5(t)) + sin(q5(t))*cos(q4(t)))*u5(t)**2 + (l3**2*m4 + l3**2*m5)*Derivative(u4(t), t) + (-l3*m4*sin(q4(t)) - l3*m5*sin(q4(t)))*Derivative(u0(t), t) + (l0*l3*m4*(sin(q1(t))*sin(q4(t)) + cos(q1(t))*cos(q4(t))) + l0*l3*m5*(sin(q1(t))*sin(q4(t)) + cos(q1(t))*cos(q4(t))))*Derivative(u1(t), t) + (l1*l3*m4*(sin(q2(t))*sin(q4(t)) + cos(q2(t))*cos(q4(t))) + l1*l3*m5*(sin(q2(t))*sin(q4(t)) + cos(q2(t))*cos(q4(t))))*Derivative(u2(t), t) + (l2*l3*m4*(sin(q3(t))*sin(q4(t)) + cos(q3(t))*cos(q4(t))) + l2*l3*m5*(sin(q3(t))*sin(q4(t)) + cos(q3(t))*cos(q4(t))))*Derivative(u3(t), t)]\n",
"[ l0*l4*m5*(sin(q1(t))*sin(q5(t)) + cos(q1(t))*cos(q5(t)))*Derivative(u1(t), t) - l0*l4*m5*(sin(q1(t))*cos(q5(t)) - sin(q5(t))*cos(q1(t)))*u1(t)**2 + l1*l4*m5*(sin(q2(t))*sin(q5(t)) + cos(q2(t))*cos(q5(t)))*Derivative(u2(t), t) - l1*l4*m5*(sin(q2(t))*cos(q5(t)) - sin(q5(t))*cos(q2(t)))*u2(t)**2 + l2*l4*m5*(sin(q3(t))*sin(q5(t)) + cos(q3(t))*cos(q5(t)))*Derivative(u3(t), t) - l2*l4*m5*(sin(q3(t))*cos(q5(t)) - sin(q5(t))*cos(q3(t)))*u3(t)**2 + l3*l4*m5*(sin(q4(t))*sin(q5(t)) + cos(q4(t))*cos(q5(t)))*Derivative(u4(t), t) - l3*l4*m5*(sin(q4(t))*cos(q5(t)) - sin(q5(t))*cos(q4(t)))*u4(t)**2 + l4**2*m5*Derivative(u5(t), t) - l4*m5*sin(q5(t))*Derivative(u0(t), t)]"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Simulation\n",
"==========\n",
"\n",
"Now that the symbolic equations of motion are available we can simulate the pendulum's motion. We will need some more SymPy functionality and several NumPy functions, and most importantly the integration function from SciPy, `odeint`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sympy import Dummy, lambdify\n",
"from numpy import array, hstack, zeros, linspace, pi\n",
"from numpy.linalg import solve\n",
"from scipy.integrate import odeint"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, define some numeric values for all of the constant parameters in the problem."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"arm_length = 1. / n # The maximum length of the pendulum is 1 meter\n",
"bob_mass = 0.01 / n # The maximum mass of the bobs is 10 grams\n",
"parameters = [g, m[0]] # Parameter definitions starting with gravity and the first bob\n",
"parameter_vals = [9.81, 0.01 / n] # Numerical values for the first two\n",
"for i in range(n): # Then each mass and length\n",
" parameters += [l[i], m[i + 1]] \n",
" parameter_vals += [arm_length, bob_mass]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mathematica has a really nice `NDSolve` function for quickly integrating their symbolic differential equations. We have plans to develop something similar for SymPy but haven't found the development time yet to do it properly. So the next bit isn't as clean as we'd like but you can make use of SymPy's lambdify function to create functions that will evaluate the mass matrix, $M$, and forcing vector, $\\bar{f}$ from $M\\dot{u} = \\bar{f}(q, \\dot{q}, u, t)$ as a NumPy function. We make use of dummy symbols to replace the time varying functions in the SymPy equations a simple dummy symbol. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dynamic = q + u # Make a list of the states\n",
"dynamic.append(f) # Add the input force\n",
"dummy_symbols = [Dummy() for i in dynamic] # Create a dummy symbol for each variable\n",
"dummy_dict = dict(zip(dynamic, dummy_symbols)) \n",
"kindiff_dict = kane.kindiffdict() # Get the solved kinematical differential equations\n",
"M = kane.mass_matrix_full.subs(kindiff_dict).subs(dummy_dict) # Substitute into the mass matrix \n",
"F = kane.forcing_full.subs(kindiff_dict).subs(dummy_dict) # Substitute into the forcing vector\n",
"M_func = lambdify(dummy_symbols + parameters, M) # Create a callable function to evaluate the mass matrix \n",
"F_func = lambdify(dummy_symbols + parameters, F) # Create a callable function to evaluate the forcing vector "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To integrate the ODE's we need to define a function that returns the derivatives of the states given the current state and time."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def right_hand_side(x, t, args):\n",
" \"\"\"Returns the derivatives of the states.\n",
"\n",
" Parameters\n",
" ----------\n",
" x : ndarray, shape(2 * (n + 1))\n",
" The current state vector.\n",
" t : float\n",
" The current time.\n",
" args : ndarray\n",
" The constants.\n",
"\n",
" Returns\n",
" -------\n",
" dx : ndarray, shape(2 * (n + 1))\n",
" The derivative of the state.\n",
" \n",
" \"\"\"\n",
" u = 0.0 # The input force is always zero \n",
" arguments = hstack((x, u, args)) # States, input, and parameters\n",
" dx = array(solve(M_func(*arguments), # Solving for the derivatives\n",
" F_func(*arguments))).T[0]\n",
" \n",
" return dx"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have the right hand side function, the initial conditions are set such that the pendulum is in the vertical equilibrium and a slight initial rate is set for each speed to ensure the pendulum falls. The equations can then be integrated with SciPy's `odeint` function given a time series."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x0 = hstack(( 0, pi / 2 * ones(len(q) - 1), 1e-3 * ones(len(u)) )) # Initial conditions, q and u\n",
"t = linspace(0, 10, 1000) # Time vector\n",
"y = odeint(right_hand_side, x0, t, args=(parameter_vals,)) # Actual integration"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotting\n",
"========\n",
"\n",
"The results of the simulation can be plotted with matplotlib."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"lines = plot(t, y[:, :y.shape[1] / 2])\n",
"lab = xlabel('Time [sec]')\n",
"leg = legend(dynamic[:y.shape[1] / 2])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nAAAASUVORK5CYII=\n"
}
],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"lines = plot(t, y[:, y.shape[1] / 2:])\n",
"lab = xlabel('Time [sec]')\n",
"leg = legend(dynamic[y.shape[1] / 2:])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nRU5ErkJggg==\n"
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Animation\n",
"=========\n",
"\n",
"matplotlib now includes very nice animation functions for animating matplotlib plots. First we import the necessary functions for creating the animation."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from numpy import zeros, cos, sin, arange, around\n",
"from matplotlib import pyplot as plt\n",
"from matplotlib import animation\n",
"from matplotlib.patches import Rectangle"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following function was modeled from Jake Vanderplas's [post on matplotlib animations](http://jakevdp.github.com/blog/2012/08/18/matplotlib-animation-tutorial/)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def animate_pendulum(t, states, length, filename=None):\n",
" \"\"\"Animates the n-pendulum and optionally saves it to file.\n",
"\n",
" Parameters\n",
" ----------\n",
" t : ndarray, shape(m)\n",
" Time array.\n",
" states: ndarray, shape(m,p)\n",
" State time history.\n",
" length: float\n",
" The length of the pendulum links.\n",
" filename: string or None, optional\n",
" If true a movie file will be saved of the animation. This may take some time.\n",
"\n",
" Returns\n",
" -------\n",
" fig : matplotlib.Figure\n",
" The figure.\n",
" anim : matplotlib.FuncAnimation\n",
" The animation.\n",
"\n",
" \"\"\"\n",
" # the number of pendulum bobs\n",
" numpoints = states.shape[1] / 2\n",
"\n",
" # first set up the figure, the axis, and the plot elements we want to animate\n",
" fig = plt.figure()\n",
" \n",
" # some dimesions\n",
" cart_width = 0.4\n",
" cart_height = 0.2\n",
" \n",
" # set the limits based on the motion\n",
" xmin = around(states[:, 0].min() - cart_width / 2.0, 1)\n",
" xmax = around(states[:, 0].max() + cart_width / 2.0, 1)\n",
" \n",
" # create the axes\n",
" ax = plt.axes(xlim=(xmin, xmax), ylim=(-1.1, 1.1), aspect='equal')\n",
" \n",
" # display the current time\n",
" time_text = ax.text(0.04, 0.9, '', transform=ax.transAxes)\n",
" \n",
" # create a rectangular cart\n",
" rect = Rectangle([states[0, 0] - cart_width / 2.0, -cart_height / 2],\n",
" cart_width, cart_height, fill=True, color='red', ec='black')\n",
" ax.add_patch(rect)\n",
" \n",
" # blank line for the pendulum\n",
" line, = ax.plot([], [], lw=2, marker='o', markersize=6)\n",
"\n",
" # initialization function: plot the background of each frame\n",
" def init():\n",
" time_text.set_text('')\n",
" rect.set_xy((0.0, 0.0))\n",
" line.set_data([], [])\n",
" return time_text, rect, line,\n",
"\n",
" # animation function: update the objects\n",
" def animate(i):\n",
" time_text.set_text('time = {:2.2f}'.format(t[i]))\n",
" rect.set_xy((states[i, 0] - cart_width / 2.0, -cart_height / 2))\n",
" x = hstack((states[i, 0], zeros((numpoints - 1))))\n",
" y = zeros((numpoints))\n",
" for j in arange(1, numpoints):\n",
" x[j] = x[j - 1] + length * cos(states[i, j])\n",
" y[j] = y[j - 1] + length * sin(states[i, j])\n",
" line.set_data(x, y)\n",
" return time_text, rect, line,\n",
"\n",
" # call the animator function\n",
" anim = animation.FuncAnimation(fig, animate, frames=len(t), init_func=init,\n",
" interval=t[-1] / len(t) * 1000, blit=True, repeat=False)\n",
" \n",
" # save the animation if a filename is given\n",
" if filename is not None:\n",
" anim.save(filename, fps=30, codec='libx264')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can create the animation of the pendulum. This animation will show the open loop dynamics."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"animate_pendulum(t, y, arm_length, filename=\"open-loop.ogv\")\n",
"animate_pendulum(t, y, arm_length, filename=\"open-loop.mp4\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nSUVORK5CYII=\n"
},
{
"output_type": "display_data",
"png": "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\nSUVORK5CYII=\n"
}
],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import HTML\n",
"h = \\\n",
"\"\"\"\n",
"\n",
"\"\"\"\n",
"HTML(h)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"\n"
],
"output_type": "pyout",
"prompt_number": 21,
"text": [
""
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Controller Design\n",
"=================\n",
"\n",
"The n-link pendulum can be balanced such that all of the links are inverted above the cart by applying the correct lateral force to the cart. We can design a full state feedback controller based off of a linear model of the pendulum about its upright equilibrium point. We'll start by specifying the equilibrium point and parameters in dictionaries."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"equilibrium_point = hstack(( 0, pi / 2 * ones(len(q) - 1), zeros(len(u)) ))\n",
"equilibrium_dict = dict(zip(q + u, equilibrium_point))\n",
"parameter_dict = dict(zip(parameters, parameter_vals))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `KanesMethod` class has method that linearizes the forcing vector about generic state and input perturbation vectors. The equilibrium point and numerical constants can then be substituted in to give the linear system in this form: $M\\dot{x}=F_Ax+F_Bu$. The state and input matrices, $A$ and $B$, can then be computed by left side multiplication by the inverse of the mass matrix: $A=M^{-1}F_A$ and $B=M^{-1}F_B$."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# symbolically linearize about arbitrary equilibrium\n",
"linear_state_matrix, linear_input_matrix, inputs = kane.linearize()\n",
"# sub in the equilibrium point and the parameters\n",
"f_A_lin = linear_state_matrix.subs(parameter_dict).subs(equilibrium_dict)\n",
"f_B_lin = linear_input_matrix.subs(parameter_dict).subs(equilibrium_dict)\n",
"m_mat = kane.mass_matrix_full.subs(parameter_dict).subs(equilibrium_dict)\n",
"# compute A and B\n",
"from numpy import matrix\n",
"A = matrix(m_mat.inv() * f_A_lin)\n",
"B = matrix(m_mat.inv() * f_B_lin)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have a linear system, the python-control package can be used to design an optimal controller for the system."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import control\n",
"from numpy import dot, rank\n",
"from numpy.linalg import matrix_rank"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First we can check to see if the system is, in fact, controllable."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"assert matrix_rank(control.ctrb(A, B)) == A.shape[0]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The control matrix is full rank, so now we can compute the optimal gains with a linear quadratic regulator. I chose identity matrices for the weightings for simplicity."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"K, X, E = control.lqr(A, B, ones(A.shape), 1);"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The gains can now be used to define the required input during simulation to stabilize the system. The input $u$ is simply the gain vector multiplied by the error in the state vector from the equilibrium point, $u(t)=K(x_{eq} - x(t))$."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def right_hand_side(x, t, args):\n",
" \"\"\"Returns the derivatives of the states.\n",
"\n",
" Parameters\n",
" ----------\n",
" x : ndarray, shape(2 * (n + 1))\n",
" The current state vector.\n",
" t : float\n",
" The current time.\n",
" args : ndarray\n",
" The constants.\n",
"\n",
" Returns\n",
" -------\n",
" dx : ndarray, shape(2 * (n + 1))\n",
" The derivative of the state.\n",
" \n",
" \"\"\"\n",
" u = dot(K, equilibrium_point - x) # The controller \n",
" arguments = hstack((x, u, args)) # States, input, and parameters\n",
" dx = array(solve(M_func(*arguments), # Solving for the derivatives\n",
" F_func(*arguments))).T[0]\n",
" \n",
" return dx"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can simulate and animate the system to see if the controller works."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x0 = hstack(( 0, pi / 2 * ones(len(q) - 1), 1 * ones(len(u)) )) # Initial conditions, q and u\n",
"t = linspace(0, 10, 1000) # Time vector\n",
"y = odeint(right_hand_side, x0, t, args=(parameter_vals,)) # Actual integration"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The plots show that we seem to have a stable system."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"lines = plot(t, y[:, :y.shape[1] / 2])\n",
"lab = xlabel('Time [sec]')\n",
"leg = legend(dynamic[:y.shape[1] / 2])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nE1HXOIlHAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"lines = plot(t, y[:, y.shape[1] / 2:])\n",
"lab = xlabel('Time [sec]')\n",
"leg = legend(dynamic[y.shape[1] / 2:])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"animate_pendulum(t, y, arm_length, filename=\"closed-loop.ogv\")\n",
"animate_pendulum(t, y, arm_length, filename=\"closed-loop.mp4\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAU8AAAD5CAYAAACnKbcuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFTRJREFUeJzt3X9MVff9x/HXVVwNFEVMi/TCQgM40NIrhkqaRXsbixaY\nSLvNui0p2Vxn7FqaulnWdt8Vturkq1u2SlzN4lpsls3VrMoG8rVretesDkhXlib+ZKwoUCWdSMds\nOwr7fP9w3ly8F+7lc4F7gecjIbnn8Dn3vM89+PKce875fBzGGCMAwJjMinQBADAVEZ4AYIHwBAAL\nhCcAWCA8AcBCTKQLkCSHwxHpEgDAz2g3I0XNkacxZtJ/nnnmmYisl22ZGdsyXbZjpm5LMFETngAw\nlRCeAGBhRoen2+2OdAnjhm2JPtNlOyS2JRCHCeXkfoI5HI6QvmMAgMkSLJdm9JEnANgKKzy/9rWv\nKSkpSTk5OSO2KS8vV2Zmplwul1pbW8NZHYBJVF//htau/a7c7kqtXftd1de/EemSokpY93l+9atf\n1aOPPqoHH3ww4O8bGhr0t7/9TW1tbWpubtaWLVvU1NQUzioBTIL6+jf02GP/p/b27d557e1PS5KK\ni1dFqqyoEtaR58qVK7VgwYIRf19XV6eysjJJUn5+vvr6+tTT0xPOKgFMgueeOzYsOCWpvX279ux5\nNUIVRZ8JfcKou7tbqamp3umUlBR1dXUpKSnJr21lZaX3tdvtnlZX94Cp5t//DhwNH388e5IrmTwe\nj0cejyfk9hP+eOb1V6tGehTTNzwBRNYNNwwGnD937tAkVzJ5rj9oq6qqGrX9hF5tdzqd6uzs9E53\ndXXJ6XRO5CoBjIPy8jVKT3962LyFC5/So48WRKii6DOhR54lJSWqqanRxo0b1dTUpISEhICn7ACi\ny7WLQnv2/I9OnJitrq4hrV9/LxeLfIQVnl/60pf0xz/+Uf/4xz+UmpqqqqoqffLJJ5KkzZs3q6io\nSA0NDcrIyFBcXJxeeOGFcSkawMQrLl6l4uJV+ta3pB//WFqyJNIVRRkTBcZaRl9fn9m7d693uru7\n23zhC18Y77LG7KmnnjKpqanmxhtvHDb/448/Nhs2bDAZGRkmPz/fdHR0BFz+rbfeMrfddpvJyMgw\n5eXlY14emAhbtxojGbN7d6QrmVzBcmlKPmF0+fJl7d271zt9yy236OWXX45gRVetX79eLS0tfvP3\n79+vhQsXqq2tTY8//rgqKioCLr9lyxbt379fbW1tamtrU2Nj45iWByYST1APNyXD8zvf+Y7a29uV\nm5uriooKnTt3zvuU04svvqjS0lKtWbNGt956q2pqarR7924tX75cd955py5fvixJam9vV2FhofLy\n8rRq1SqdOXMm7LpWrFihRYsW+c33vd/185//vF577TW/NhcuXFB/f79WrFghSXrwwQd1+PDhkJcH\nJgp9lQcWFT3Jj1V1dbVOnDjhfdyzo6Nj2O9PnDihv/71r/roo4+Unp6uXbt26e2339bWrVt14MAB\nPfbYY/rGN76hffv2KSMjQ83NzXr44Yf9Qsnj8ejxxx/3W39cXJz+9Kc/hVyv7/2uMTExmj9/vnp7\ne5WYmDisTUpKinfa6XSqu7s75OUBTK4pGZ4myPnD3Xffrbi4OMXFxSkhIUHr1q2TJOXk5Oidd97R\nlStXdPz4cX3xi1/0LjMwMOD3Pm63m+fxAQQ0JcMzmBtuuMH7etasWd7pWbNmaXBwUP/5z3+0YMGC\noMH4+uuva+vWrX7zY2Nj9eabb4Zcj9Pp1Pnz53XLLbdocHBQH3zwgd9Ro9PpVFdXl3e6q6vLeyQa\nyvIAJteU/M4zPj5e/f39Y17u2hFrfHy8br31Vh06dMg7/5133vFrf/fdd6u1tdXvZyzBKV2937W2\ntlaSdOjQIa1evdqvTXJysubNm6fm5mYZY/TSSy9p/fr1IS8PYHJNyfBcuHChPvvZzyonJ0cVFRVy\nOBzexz59X1+b9n19bfqXv/yl9u/fr2XLlum2225TXV1d2HU98cQTSk1N1UcffaTU1FR9//vflyRt\n2rRJly5dUmZmpn7yk59o586d3mVyc3O9r/fu3auvf/3ryszMVEZGhu69996gywOIDHqSBzCqb39b\n+tGPpP/9X2nbtkhXM3noSR5AWLhVKTDCEwAsEJ4AYGFa3qoEIHz19W/oueeO6dSpGEmDOnVqjSR6\nVbqG8ATgJ9AYRnV1T6u+njGMruG0HYCfQGMYXbrEGEa+CE8AfmbiGEZjRXgC8DMTxzAaK8ITgB/G\nMAqOC0YA/PiOYXTy5Gx1dg5p3TrGMPLF45kARvXEE9KuXVJ19dXXMwWPZwLABCA8AcAC4QkgJHyz\nNhzhCWBU9KoUGOEJABYITwCwQHgCgAXCEwAsEJ4AYIHwBBASblUajvAEMCpuVQqM8AQAC/SqBCCg\n68cwOn2aMYx8EZ4A/AQaw+h3v2MMI1+ctgPwE2gMo95exjDyRXgC8MMYRsERngD8MIZRcIQnAD+B\nxjBKTGQMI19cMALgx3cMo1OnZuv8+SF97nOMYeSLMYwAjOrJJ6WdO6UdO66+nikYwwgAJgDhCQAW\nCE8AsBB2eDY2NiorK0uZmZmqrq72+73H49H8+fOVm5ur3NxcPfvss+GuEgAiLqyr7UNDQ3rkkUf0\nhz/8QU6nU3fccYdKSkqUnZ09rN1dd92lurq6sAoFgGgSVni2tLQoIyNDaWlpkqSNGzfqyJEjfuEZ\nypX0yspK72u32y232x1OaQAwJh6PRx6PJ+T2YYVnd3e3UlNTvdMpKSlqbm4e1sbhcOj48eNyuVxy\nOp3avXu3lixZ4vdevuEJIPpM97sJrz9oq6qqGrV9WOHpCKGX1OXLl6uzs1OxsbE6evSoSktLdfbs\n2XBWC2AS0RlyYGFdMHI6ners7PROd3Z2KiUlZVib+Ph4xcbGSpIKCwv1ySefqLe3N5zVAkDEhRWe\neXl5amtrU0dHhwYGBnTw4EGVlJQMa9PT0+P9zrOlpUXGGCUmJoazWgCIuLBO22NiYlRTU6O1a9dq\naGhImzZtUnZ2tvbt2ydJ2rx5sw4dOqSf/exniomJUWxsrH7961+PS+EAEEk82w5gVE89Jf3wh9L2\n7VdfzxQ82w4AE4Au6QAEdG0AuNOnGQAuEMITgJ9AA8DV1zMAnC9O2wH4YQC44AhPAH4YAC44whOA\nHwaAC47wBOCHAeCC44IRAD+BBoArLmYAOF+EJ4CAiotXqbh4lZ5++urgb5/5TKQrii6ctgOABcIT\nACwQngBCQvcTwxGeAEZFZ8iBEZ4AYIHwBAALhCcAWCA8AcAC4QkAFghPACHhVqXhCE8Ao+JWpcAI\nTwCwQMcgAAK6NobRmTNXxzA6c4YxjHwRngD8BBrD6OhRxjDyxWk7AD+MYRQc4QnAD2MYBUd4AvDD\nGEbBEZ4A/AQaw2jBAsYw8sUFIwB+fMcwOn16ts6dG1JhIWMY+SI8AQR0bQyj731P+sEPGMPoepy2\nA4AFwhMALBCeAGCB8AQQEnpVGo7wBDAqelUKzGFM5P8/cTgcioIygGkhcd48Xe7vH8d3rJT0zH9/\nvj8u77ggPl69//znuLzXRAmWSxx5AtPM5f5+GWncfr733/etHMf3HN9wjwzCEwAsEJ4AYIHwBAAL\nhCeAkBhx2d0X4QlgVA5xJ0wgYYdnY2OjsrKylJmZqerq6oBtysvLlZmZKZfLpdbW1nBXCWCS1OtG\nvaTTkir1kk6rXjdGuqToYcIwODho0tPTzbvvvmsGBgaMy+UyJ0+eHNamvr7eFBYWGmOMaWpqMvn5\n+X7vE2YZAHzo6sNAYf/8XjeadG0YNjtdG8zvdWPY7z0V/s0HqzGsI8+WlhZlZGQoLS1Nc+bM0caN\nG3XkyJFhberq6lRWViZJys/PV19fn3p6esJZLYBJ8Jyy1K6Dw+a166D2KCtCFUWXsPrz7O7uVmpq\nqnc6JSVFzc3NQdt0dXUpKSlpWLvKykrva7fbLbfbHU5pAML0b8UFnP/xCPOnOo/HI4/HE3L7sMLT\nEeJDr+a6R5wCLecbngAi7wZdCTh/7gjzp7rrD9qqqqpGbR/WabvT6VRnZ6d3urOzUykpKaO26erq\nktPpDGe1ACZBuU4rXQ8Mm5euDXpUpyNUUXQJKzzz8vLU1tamjo4ODQwM6ODBgyopKRnWpqSkRAcO\nHJAkNTU1KSEhwe+UHUD0Kda/9FM1aK3u0F1ya63u0E91VMX6V6RLiwphnbbHxMSopqZGa9eu1dDQ\nkDZt2qTs7Gzt27dPkrR582YVFRWpoaFBGRkZiouL0wsvvDAuhQOYeMX6l4r1VqTLiEp0SQdMMw5H\n9N/W7pD/tZBoQ5d0ADABCE8AsEB4AoAFwhMALIR1tR1A9FkQHy9HlA9zsSA+PtIlhI2r7QAQAFfb\nAWACEJ4AYIHwBAALhCcAWCA8AcAC4QkAFghPALBAeAKABcITACwQngBggfAEAAuEJwBYIDwBwALh\nCQAWCE8AsEB4AoAFwhMALBCeAGCB8AQAC4QnAFggPAHAAuEJABYITwCwQHgCgAXCEwAsEJ4AYIHw\nBAALhCcAWCA8AcAC4QkAFghPALBAeAKABcITACwQngBggfAEAAuEJwBYiLFdsLe3Vw888IDOnTun\ntLQ0/eY3v1FCQoJfu7S0NM2bN0+zZ8/WnDlz1NLSElbBABANrI88d+7cqYKCAp09e1arV6/Wzp07\nA7ZzOBzyeDxqbW0lOAFMG9bhWVdXp7KyMklSWVmZDh8+PGJbY4ztagAgKlmftvf09CgpKUmSlJSU\npJ6enoDtHA6H7rnnHs2ePVubN2/WQw89FLBdZWWl97Xb7Zbb7bYtDQDGzOPxyOPxhNzeYUY5LCwo\nKNDFixf95m/fvl1lZWW6fPmyd15iYqJ6e3v92l64cEHJycl6//33VVBQoD179mjlypXDi3A4ODoF\nEFWC5dKoR56vvvrqiL9LSkrSxYsXtWjRIl24cEE333xzwHbJycmSpJtuukn33XefWlpa/MITAKYa\n6+88S0pKVFtbK0mqra1VaWmpX5sPP/xQ/f39kqQrV67o2LFjysnJsV0lAESNUU/bR9Pb26sNGzbo\n/Pnzw25Veu+99/TQQw+pvr5ef//733X//fdLkgYHB/WVr3xFTz75pH8RnLYDiDLBcsk6PMcT4Qkg\n2gTLJZ4wAgALhCcAWCA8AcAC4QkAFghPALBAeAKABcITACwQngBggfAEAAuEJwBYIDwBwALhCQAW\nCE8AsEB4AoAFwhMALBCeAGCB8AQAC4QnAFggPAHAAuEJABYITwCwQHgCgAXCEwAsEJ4AYIHwBAAL\nhCcAWCA8AcAC4QkAFghPALBAeAKABcITACwQngBggfAEAAuEJwBYIDwBwALhCQAWCE8AsEB4AoAF\nwhMALBCeAGCB8AQAC4QnAFiwDs+XX35ZS5cu1ezZs/X222+P2K6xsVFZWVnKzMxUdXW17eoAIKpY\nh2dOTo5eeeUVrVq1asQ2Q0NDeuSRR9TY2KiTJ0/qV7/6lU6dOmW7SgCIGjG2C2ZlZQVt09LSooyM\nDKWlpUmSNm7cqCNHjig7O9t2tQAQFazDMxTd3d1KTU31TqekpKi5uTlg28rKSu9rt9stt9s9kaUB\nwDAej0cejyfk9qOGZ0FBgS5evOg3f8eOHVq3bl3QN3c4HCEX4hueADDZrj9oq6qqGrX9qOH56quv\nhlWM0+lUZ2end7qzs1MpKSlhvScARINxuVXJGBNwfl5entra2tTR0aGBgQEdPHhQJSUl47FKAIgo\n6/B85ZVXlJqaqqamJhUXF6uwsFCS9N5776m4uFiSFBMTo5qaGq1du1ZLlizRAw88wMUiANOCw4x0\n2DiZRTgcIx69AkAkBMulGf2E0ViurEU7tiX6TJftkNiWQAjPaYJtiT7TZTsktiWQGR2eAGCL8AQA\nC1FzwQgAos1o8Tihj2eGKgryGwDGhNN2ALBAeAKABcITACzMqPDctm2bsrOz5XK5dP/99+uDDz4I\n2G4q9H4fak/+aWlpuv3225Wbm6sVK1ZMYoWhm06jEvT29qqgoECLFy/WmjVr1NfXF7BdtO6XUD7j\n8vJyZWZmyuVyqbW1dZIrDF2wbfF4PJo/f75yc3OVm5urZ599dmwrMDPIsWPHzNDQkDHGmIqKClNR\nUeHXZnBw0KSnp5t3333XDAwMGJfLZU6ePDnZpQZ16tQpc+bMGeN2u81f/vKXEdulpaWZS5cuTWJl\nYxfKtkyV/bJt2zZTXV1tjDFm586dAf/GjInO/RLKZ1xfX28KCwuNMcY0NTWZ/Pz8SJQaVCjb8vrr\nr5t169ZZr2NGHXkWFBRo1qyrm5yfn6+uri6/Nr6938+ZM8fb+320ycrK0uLFi0Nqa6L8boZQtmWq\n7Je6ujqVlZVJksrKynT48OER20bbfgnlM/bdvvz8fPX19amnpycS5Y4q1L+XcPbBjApPX7/4xS9U\nVFTkNz9Q7/fd3d2TWdq4cjgcuueee5SXl6ef//znkS7H2lTZLz09PUpKSpIkJSUljRgs0bhfQvmM\nA7UJdBASaaFsi8Ph0PHjx+VyuVRUVKSTJ0+OaR1RcZ/neAql9/vt27frU5/6lL785S/7tYumG/bD\n7clfkt58800lJyfr/fffV0FBgbKysrRy5crxLjWoyRyVYKKNtC3bt28fNu1wOEasO1r2i69QP+Pr\nj9aiad9cE0pNy5cvV2dnp2JjY3X06FGVlpbq7NmzIa9j2oVnsN7vX3zxRTU0NOi1114L+Pto6v0+\n3J78JSk5OVmSdNNNN+m+++5TS0tLRP6RTqdRCUbblqSkJF28eFGLFi3ShQsXdPPNNwdsFy37xVco\nn/H1bbq6uuR0OietxlCFsi3x8fHe14WFhXr44YfV29urxMTEkNYxo07bGxsbtWvXLh05ckRz584N\n2GYq9n4/0vc2H374ofr7+yVJV65c0bFjx5STkzOZpY3ZSNsyVfZLSUmJamtrJUm1tbUqLS31axOt\n+yWUz7ikpEQHDhyQJDU1NSkhIcH7NUU0CWVbenp6vH9vLS0tMsaEHJySZtbV9oyMDPPpT3/aLFu2\nzCxbtsxs2bLFGGNMd3e3KSoq8rZraGgwixcvNunp6WbHjh2RKndUv/3tb01KSoqZO3euSUpKMvfe\ne68xZvi2tLe3G5fLZVwul1m6dOmU3hZjpsZ+uXTpklm9erXJzMw0BQUF5vLly8aYqbNfAn3Gzz//\nvHn++ee9bb75zW+a9PR0c/vtt496p0ekBduWmpoas3TpUuNyucydd95p/vznP4/p/aOiYxAAmGpm\n1Gk7AIwXwhMALBCeAGCB8AQAC4QnAFggPAHAwv8DqVS2WaOuSTMAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import HTML\n",
"h = \\\n",
"\"\"\"\n",
"\n",
"\"\"\"\n",
"HTML(h)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
"\n"
],
"output_type": "pyout",
"prompt_number": 32,
"text": [
""
]
}
],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The video clearly shows that our controller can balance all $n$ of the pendulum links. The weightings in the lqr design can be tweaked to give different performance if needed.\n",
"\n",
"This example shows that the free and open source scientific Python tools for dynamics are easily comparable in ability and quality a commercial package such as Mathematica. Besides the current installation hurdles for Python, I'd like to claim that it may better than commercial packages, due to our much more robust SymPy **mechanics** package and the fact that all of the code is liberally licensed for reuse and hacking.\n",
"\n",
"The IPython notebook for this example can be downloaded from https://github.com/gilbertgede/idetc-2013-paper/blob/master/n-pendulum-control.ipynb. Yo ucan try out different $n$ values. I've gotten the equations of motion to compute and an open loop simulation of 10 links. My computer ran out of memory when I tried to compute for $n=50$. The controller weightings and initial conditions will probably have to be adjusted for better performance for $n>5$, but it should work. Let me know the resuls if you play with it."
]
}
],
"metadata": {}
}
]
}