Skip to content

Instantly share code, notes, and snippets.

@moorepants
Created November 24, 2019 16:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moorepants/c5ebb846499c4002744b8c101705015f to your computer and use it in GitHub Desktop.
Save moorepants/c5ebb846499c4002744b8c101705015f to your computer and use it in GitHub Desktop.
Example of how to manually use pythreejs to animate a PyDy scene.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction\n",
"\n",
"This example gives a simple demostration of chaotic behavior in a simple two body system. The system is made up of a slender rod that is connected to the ceiling at one end with a revolute joint that rotates about the $\\hat{\\mathbf{n}}_y$ unit vector. At the other end of the rod a flat plate is attached via a second revolute joint allowing the plate to rotate about the rod's axis with aligns with the $\\hat{\\mathbf{a}_z}$ unit vector.\n",
"\n",
"![](chaos_pendulum.svg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Setup"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import sympy as sm\n",
"import sympy.physics.mechanics as me\n",
"from pydy.system import System\n",
"from pydy.viz import Cylinder, Plane, VisualizationFrame, Scene\n",
"import pythreejs as pjs"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"me.init_vprinting()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Define Variables\n",
"\n",
"First define the system constants:\n",
"\n",
"- $m_A$: Mass of the slender rod.\n",
"- $m_B$: Mass of the plate.\n",
"- $l_B$: Distance from $N_o$ to $B_o$ along the slender rod's axis.\n",
"- $w$: The width of the plate.\n",
"- $h$: The height of the plate.\n",
"- $g$: The acceleratoin due to gravity."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"mA, mB, lB, w, h, g = sm.symbols('m_A, m_B, L_B, w, h, g')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are two time varying generalized coordinates:\n",
"\n",
"- $\\theta(t)$: The angle of the slender rod with respect to the ceiling.\n",
"- $\\phi(t)$: The angle of the plate with respect to the slender rod.\n",
"\n",
"The two generalized speeds will then be defined as:\n",
"\n",
"- $\\omega(t)=\\dot{\\theta}$: The angular rate of the slender rod with respect to the ceiling.\n",
"- $\\alpha(t)=\\dot{\\phi}$: The angluer rate of the plate with respect to the slender rod."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"theta, phi = me.dynamicsymbols('theta, phi')\n",
"omega, alpha = me.dynamicsymbols('omega, alpha')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The kinematical differential equations are defined in this fashion for the `KanesMethod` class:\n",
"\n",
"$$0 = \\omega - \\dot{\\theta}\\\\\n",
"0 = \\alpha - \\dot{\\phi}$$"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIsAAAAeCAYAAAAcsu0PAAAABHNCSVQICAgIfAhkiAAABWxJREFUeJztmn9oVVUcwD9vttXmci78UWgpbsKM0GRpplSLFpEVEZH9FCMIlQKljMLIIjJKk1kR5OiPkUo/SCorisgNrSirtYwyrWYbk9SprdWypdP1x/d7ebf3zn3nvtd5P1z3A5fz7jnfc77fd+/58T3fc+H/Q5VeEdGzsNKhV0SGz6LIUj4GuCUDYyJOXmYAs9KtVAK8AYx0bk5EobMRODudCk8CN2THlogCZyLwfljhGmAXEMuWNREFzwbg9rCCD2fXlogCpx7YjcWvHQMcAybnwqKIgiUGHADmehmmXjMP+AP4MUdGZZNSYAWypPYDXcATQHE+jSoAVgGDwCUpZAaBVuC2VA1tBra4sytvnAV8CxwFXgWeAr5DHsK6PNpVCGwBTgAjLHIrge5UAgeBtY6MyhclwJdAHzDHl18OdALHgTPzYFeh0AP8EELuZmRwVUPyMlQJjAIOOTUt9ywDaoEHgE98+X1I7KgIuDgPdhUCVUjs7KsQsr9qOhmSO4sXiPnd0shCpMetscjtUbmxIQxzRSlwP7APaDSUH9Y0GzNLMbAU+Br4C9gLNCAzXRniMG7Mgl4bw4B7gDZkKQa4EfgZWE7wjqdX0/GmwtnIy70jheKxwG/Iyyi3GPmatne9Rc4lt6rOpwPKV2r5Qsd6zwA+17bf5t8+0jLgXmSXWe1Yr43hQLPa8RHwjf5+Hem8g8BjAXWnaPlSgFMSCr0g3PEUylcAFUgcps9iaIemNRY5l1yt6TjgUUN5vaZdjvW+gpyrLAGe1bzVyOxyFXAu0AT85FivjSbgMuR9PQ60IB3gTmTG2AHcp2VHE+oOaGqceaZrQ3cHKB6FbEF7kR5r4xFtb1UIWVd0qk7bNdGhznptcxvJUe9dWtZPmuctDqhT3R/ofQxZFXb7ZD5VmSmG+hfgm4UTe8wBTYO2VPOAU4G3gD99+TORkTU7Qb5M078D2gOZfcK8XO/akKKt4cA5yJY5ZrhOR5aCvbj9XGG+pmvVRj/9mq7DPpt14O5ZANylqTfTVSOrQqtP5oimJwz1vX6wH5KXoX1aOeikuU7TrQn51wA3IdOuH299ThXgayf+QMPwS4qycRaZKxEn9N009IXhUqQTBh2+HUGCgTZcPguAy5Gl5EO9r9XU31mqEds7DfW9ftAepGAr4qCZ2IH06DkJ+ds1f7Qvr4i4AzUhSJljzlN9mwPK39HymQ51liKj0jQgJiEvv9mhvrCUI/91vy9vtebV6f35et8S0MZDyM54GJgdlxbEdzFRoanfsa0h/vD9y009cs60HXOvzQbegzFti2ch5xzvIbsWV5QiS5xpGm9Alu0BQ1m28d5tie93LdI52vR+iaYvBrQxHZk8Ajc8NQTHRr7QMm+NjiGzUKvmz9D8MiTWMAhcF6QoS+xE/txUX94ExB/owezYNmEPGQQRQ87SEnUuJu5buOyc6eA5+3OJO7de5Ha+ln1McJxlD5azIZDRt8iQv1wVHEYCcs3INHUhEoTaicQXvB1APs5gvDjLQWRkNyIPqYdkB9zjJa0T6vsNA89p/W7geWATMtO8SXyr+gLxwZQrvOBpL7Bef7cj73cQGdCjA+pORf5PqU3JNGRLlUgx8gK6kd3QNuLfay5AenI/EvhZTP4+nlqABMT6kZ1PI3Hn10Qb0ukrM9R3GhIE7EKcxW5kMBUjS7Q3eK7IsP3/wiJkqzygNhwDvkf8kVQdoQF4MKyS9eR+JOSDkcgSkstYUD5Yg/2zBI8RwGfIIAhFJfAyydvroca1yAw01E+hvc8SKmyCwDPARekqqEJ8gIiTn0OEO2qYRmaOPhB9VTYUGE/88NBGSZZtiYiIiIiIyIR/APTSWnbe9oxZAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left( \\omega - \\dot{\\theta}, \\ \\alpha - \\dot{\\phi}\\right)$"
],
"text/plain": [
"(ω - θ̇, α - φ̇)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kin_diff = (omega - theta.diff(), alpha - phi.diff())\n",
"kin_diff"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Define Orientations\n",
"\n",
"There are three reference frames. These are defined as such:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"N = me.ReferenceFrame('N')\n",
"A = me.ReferenceFrame('A')\n",
"B = me.ReferenceFrame('B')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The frames are oriented with respect to each other by simple revolute rotations. The following lines set the orientations:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"A.orient(N, 'Axis', (theta, N.y))\n",
"B.orient(A, 'Axis', (phi, A.z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Define Positions\n",
"\n",
"Three points are necessary to define the problem:\n",
"\n",
"- $N_o$: The fixed point which the slender rod rotates about.\n",
"- $A_o$: The center of mass of the slender rod.\n",
"- $B_o$: The center of mass of the plate."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"No = me.Point('No')\n",
"Ao = me.Point('Ao')\n",
"Bo = me.Point('Bo')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The two centers of mass positions can be set relative to the fixed point, $N_o$."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"lA = (lB - h / 2) / 2\n",
"Ao.set_pos(No, lA * A.z)\n",
"Bo.set_pos(No, lB * A.z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Specify the Velocities\n",
"\n",
"The generalized speeds should be used in the definition of the linear and angular velocities when using Kane's method. For simple rotations and the defined kinematical differential equations the angular rates are:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"A.set_ang_vel(N, omega * N.y)\n",
"B.set_ang_vel(A, alpha * A.z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once the angular velocities are specified the linear velocities can be computed using the two point velocity thereom, starting with the origin point having a velocity of zero."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"No.set_vel(N, 0)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left(\\frac{L_{B}}{2} - \\frac{h}{4}\\right) \\omega\\mathbf{\\hat{a}_x}$"
],
"text/plain": [
"⎛L_B h⎞\n",
"⎜─── - ─⎟⋅ω a_x\n",
"⎝ 2 4⎠"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Ao.v2pt_theory(No, N, A)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAD8AAAAZCAYAAACGqvb0AAAABHNCSVQICAgIfAhkiAAAA01JREFUWIXt12uIpmMYB/DfDEbGqRV2LRKWVkTjtA7ZlqQUNtkcyuHDFlGW1KS2kHywIxtfFIW0+aDJB6XY0AjlsGtziG0ldhQ5rDFotl3s7OvDdb3mnmfed2beZpq3zfzr7n6e/3091+E+XNf9dNg30YOV+dyPrW30ZU5xKL7BXtTwJQ5qq0dziA0i6DW4P5+faqtHc4QbRbAPFdxjyV09GwYGUtkls6FsX0IHfscoDmmzL3OOU8Wq/y+yZ2fl/Zzst8yynTvEpK6fQu7blFtYcEegD29iO/7APxjC++g1S9l+fRq/ZzaUJRaKo/SjqY9Sf9q/tuDOSG6ytgUHt+rY/pX3c7P/uFVFk+BBHI4HMDKF7GD2SwtuL7ZhE37CMLpwGlaJGM7GnXi8Fcc6K889Itl92oqSSXAkVuNPPD8N+Z3ZLyi4rSLQtfggde0Uq72tkLtyJo4uFVvoi2nK10tivQ3jNRxXyNyVYxsq356Pl3BRhe9L+UcKbgFeMXaja9a+mqbf/6Fc+Va3fI9YjWNwLK7DMjxcyKzI/p3Kt1fhBvxV4Zdk/3XBPSfu8R1T+HPgdJxuhifFDN49DdmTU/bCCv+eWNE6Pku5iytyHyV/VMF14ufkT0iuG3uMre6AmKD9cry/GBtM7pqCuzy5y4ztnDKZjnO8UUCNcL0oN/US04WbRUJbXsgNps6zCq5+vGo4rOCvSO7Dglts/Na+rxg7GjtMDB6eTm47FmVfw7ONgulMx/eYXs3sEzM5km0Uv+LSitzmNHpLvnfgVZGsajgv+W6RZGvGflWJTD5cBPhb2l6HH4yfmDL4bpEMa6JC1MRRalhqT0+BETE7jdq6Qv4tvCy24BJx1jemga5Cbm3qHRJ3iAGRrZdhl8jkfYWjzzTwrbcSZL19jzeaBE9c2OpHZjRtNsStTQyUbWMhP4R7KzpWpNyZBXcAnsAvojy9iwty7DZ8h934XNTpZkntdjFRf6euF0WSfUHz4FdW/L+pie6WcGIqW17hVye/eDaMzBCLjOWDT4yV4uNnqnhVKjsljZwkzvQOsRLtRgdeFz5uEiWwXl3eNvF/piU8auLlZrPYmtXrcjuwRvi1W9wMiQqzK/neNvk1j3nMo834F5JXBjxjyYUGAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle L_{B} \\omega\\mathbf{\\hat{a}_x}$"
],
"text/plain": [
"L_B⋅ω a_x"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Bo.v2pt_theory(No, N, A)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Inertia\n",
"\n",
"The central inertia of the symmetric slender rod with respect to its reference frame is a function of its length and its mass."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"IAxx = sm.S(1) / 12 * mA * (2 * lA)**2\n",
"IAyy = IAxx\n",
"IAzz = 0\n",
"\n",
"IA = (me.inertia(A, IAxx, IAyy, IAzz), Ao)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This gives the inertia tensor:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{m_{A} \\left(L_{B} - \\frac{h}{2}\\right)^{2}}{12} & 0 & 0\\\\0 & \\frac{m_{A} \\left(L_{B} - \\frac{h}{2}\\right)^{2}}{12} & 0\\\\0 & 0 & 0\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ 2 ⎤\n",
"⎢ ⎛ h⎞ ⎥\n",
"⎢m_A⋅⎜L_B - ─⎟ ⎥\n",
"⎢ ⎝ 2⎠ ⎥\n",
"⎢────────────── 0 0⎥\n",
"⎢ 12 ⎥\n",
"⎢ ⎥\n",
"⎢ 2 ⎥\n",
"⎢ ⎛ h⎞ ⎥\n",
"⎢ m_A⋅⎜L_B - ─⎟ ⎥\n",
"⎢ ⎝ 2⎠ ⎥\n",
"⎢ 0 ────────────── 0⎥\n",
"⎢ 12 ⎥\n",
"⎢ ⎥\n",
"⎣ 0 0 0⎦"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IA[0].to_matrix(A)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The central inerita of the symmetric plate with respect to its reference frame is a function of its width and height."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"IBxx = sm.S(1)/12 * mB * h**2\n",
"IByy = sm.S(1)/12 * mB * (w**2 + h**2)\n",
"IBzz = sm.S(1)/12 * mB * w**2\n",
"\n",
"IB = (me.inertia(B, IBxx, IByy, IBzz), Bo)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{h^{2} m_{B}}{12} & 0 & 0\\\\0 & \\frac{m_{B} \\left(h^{2} + w^{2}\\right)}{12} & 0\\\\0 & 0 & \\frac{m_{B} w^{2}}{12}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ 2 ⎤\n",
"⎢h ⋅m_B ⎥\n",
"⎢────── 0 0 ⎥\n",
"⎢ 12 ⎥\n",
"⎢ ⎥\n",
"⎢ ⎛ 2 2⎞ ⎥\n",
"⎢ m_B⋅⎝h + w ⎠ ⎥\n",
"⎢ 0 ───────────── 0 ⎥\n",
"⎢ 12 ⎥\n",
"⎢ ⎥\n",
"⎢ 2⎥\n",
"⎢ m_B⋅w ⎥\n",
"⎢ 0 0 ──────⎥\n",
"⎣ 12 ⎦"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IB[0].to_matrix(B)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All of the information to define the two rigid bodies are now available. This information is used to create an object for the rod and the plate."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"rod = me.RigidBody('rod', Ao, A, mA, IA)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"plate = me.RigidBody('plate', Bo, B, mB, IB)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Loads\n",
"\n",
"The only loads in this problem is the force due to gravity that acts on the center of mass of each body. These forces are specified with a tuple containing the point of application and the force vector."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"rod_gravity = (Ao, mA * g * N.z)\n",
"plate_gravity = (Bo, mB * g * N.z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Equations of motion\n",
"\n",
"Now that the kinematics, kinetics, and inertia have all been defined the `KanesMethod` class can be used to generate the equations of motion of the system. In this case the independent generalized speeds, independent generalized speeds, the kinematical differential equations, and the inertial reference frame are used to initialize the class."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"kane = me.KanesMethod(N, q_ind=(theta, phi), u_ind=(omega, alpha), kd_eqs=kin_diff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The equations of motion are then generated by passing in all of the loads and bodies to the `kanes_equations` method. This produces $f_r$ and $f_r^*$."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"bodies = (rod, plate)\n",
"loads = (rod_gravity, plate_gravity)\n",
"\n",
"fr, frstar = kane.kanes_equations(bodies, loads)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}g \\left(- \\frac{L_{B} m_{A}}{2} - L_{B} m_{B} + \\frac{h m_{A}}{4}\\right) \\operatorname{sin}\\left(\\theta\\right)\\\\0\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ ⎛ L_B⋅m_A h⋅m_A⎞ ⎤\n",
"⎢g⋅⎜- ─────── - L_B⋅m_B + ─────⎟⋅sin(θ)⎥\n",
"⎢ ⎝ 2 4 ⎠ ⎥\n",
"⎢ ⎥\n",
"⎣ 0 ⎦"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sm.trigsimp(fr)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\frac{m_{B} w^{2} \\alpha \\omega \\operatorname{sin}\\left(2 \\phi\\right)}{12} - \\left(\\frac{L_{B}^{2} m_{A}}{3} + L_{B}^{2} m_{B} - \\frac{L_{B} h m_{A}}{3} + \\frac{h^{2} m_{A}}{12} + \\frac{h^{2} m_{B}}{12} + \\frac{m_{B} w^{2} \\operatorname{cos}^{2}\\left(\\phi\\right)}{12}\\right) \\dot{\\omega}\\\\- \\frac{m_{B} w^{2} \\left(\\omega^{2} \\operatorname{sin}\\left(2 \\phi\\right) + 2 \\dot{\\alpha}\\right)}{24}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ 2 ⎛ 2 2 2 \n",
"⎢m_B⋅w ⋅α⋅ω⋅sin(2⋅φ) ⎜L_B ⋅m_A 2 L_B⋅h⋅m_A h ⋅m_A h ⋅m_B m_\n",
"⎢─────────────────── - ⎜──────── + L_B ⋅m_B - ───────── + ────── + ────── + ──\n",
"⎢ 12 ⎝ 3 3 12 12 \n",
"⎢ \n",
"⎢ 2 ⎛ 2 ⎞ \n",
"⎢ -m_B⋅w ⋅⎝ω ⋅sin(2⋅φ) + 2⋅α̇⎠ \n",
"⎢ ───────────────────────────── \n",
"⎣ 24 \n",
"\n",
" 2 2 ⎞ ⎤\n",
"B⋅w ⋅cos (φ)⎟ ⎥\n",
"────────────⎟⋅ω̇⎥\n",
" 12 ⎠ ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎦"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sm.trigsimp(frstar)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simulation\n",
"\n",
"The equations of motion can now be simulated numerically. Values for the constants, initial conditions, and time are provided to the `System` class along with the symbolic `KanesMethod` object."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"sys = System(kane)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"sys.constants = {lB: 0.2, # meters\n",
" h: 0.1, # meters\n",
" w: 0.2, # meters\n",
" mA: 0.01, # kilograms\n",
" mB: 0.1, # kilograms\n",
" g: 9.81} # meters per second squared"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"sys.initial_conditions = {theta: np.deg2rad(45),\n",
" phi: np.deg2rad(0.5),\n",
" omega: 0,\n",
" alpha: 0}"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"sys.times = np.linspace(0, 10, 500)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The trajectories of the states are found with the `integrate` method."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"x = sys.integrate()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The angles can be plotted to see how they change with respect to time given the initial conditions."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def plot():\n",
" plt.figure()\n",
" plt.plot(sys.times, np.rad2deg(x[:, :2]))\n",
" plt.legend([sm.latex(s, mode='inline') for s in sys.coordinates])\n",
"plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chaotic Behavior\n",
"\n",
"Now change the intial condition of the plat angle just slighty to see if the behvior of the system is similar."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sys.initial_conditions[phi] = np.deg2rad(1.0)\n",
"x = sys.integrate()\n",
"plot() "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Seems all good, very similar behavior. But now set the rod angle to $90^\\circ$ and try the same slight change in plate angle."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sys.initial_conditions[theta] = np.deg2rad(90)\n",
"sys.initial_conditions[phi] = np.deg2rad(0.5)\n",
"x = sys.integrate()\n",
"plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First note that the plate behaves wildly. What happens when the initial plate angle is altered slightly."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sys.initial_conditions[phi] = np.deg2rad(1.0)\n",
"x = sys.integrate()\n",
"plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The behavior does not look similar to the previous simulation. This is an example of chaotic behavior. The plate angle can not be reliably predicted because slight changes in the initial conditions cause the behavior of the system to vary widely."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Visualization\n",
"\n",
"Finally, the system can be animated by attached a cylinder and a plane shape to the rigid bodies. To properly align the coordinate axes of the shapes with the bodies, simple rotations are used."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"rod_shape = Cylinder(2 * lA, 0.005, color='red')\n",
"plate_shape = Plane(h, w, color='blue')\n",
"\n",
"v1 = VisualizationFrame('rod',\n",
" A.orientnew('rod', 'Axis', (sm.pi / 2, A.x)),\n",
" Ao,\n",
" rod_shape)\n",
"\n",
"v2 = VisualizationFrame('plate',\n",
" B.orientnew('plate', 'Body', (sm.pi / 2, sm.pi / 2, 0), 'XZX'),\n",
" Bo,\n",
" plate_shape)\n",
"\n",
"scene = Scene(N, No, v1, v2, system=sys)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`create_static_html()` is a quick way to generate all of the data needed for pythreejs."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"scene.create_static_html(overwrite=True, silent=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For each visualizaion frame, the 4x4 transform matrices are obtained with:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"rod_matrices = v1.evaluate_transformation_matrix(x, list(sys.constants.values()))\n",
"plate_matrices = v2.evaluate_transformation_matrix(x, list(sys.constants.values()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recreate the meshes in the animation with pythreejs. Make sure to use numbers, not symbols. Also, you need to uniquely name each mesh."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"rod_mesh = pjs.Mesh(\n",
" pjs.CylinderBufferGeometry(0.005, 0.005, sys.constants[lB] - sys.constants[h] / 2),\n",
" pjs.MeshStandardMaterial(color='red'),\n",
" name='rod'\n",
")\n",
"\n",
"plate_mesh = pjs.Mesh(pjs.PlaneBufferGeometry(sys.constants[h], sys.constants[w]),\n",
" pjs.MeshStandardMaterial(color='blue', side='DoubleSide')\n",
" , name=\"plate\")\n",
"\n",
"ceil_mesh = pjs.Mesh(pjs.BoxBufferGeometry(0.3, 0.2, 0.02),\n",
" pjs.MeshStandardMaterial(color='gray')\n",
" , name=\"ceiling\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To set the three.js transform matrices directly the `matrixAutoUpdate` must be disabled."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"# Animation will not update without this set.\n",
"rod_mesh.matrixAutoUpdate = False\n",
"plate_mesh.matrixAutoUpdate = False\n",
"\n",
"# Set initial position\n",
"rod_mesh.matrix = rod_matrices[0]\n",
"plate_mesh.matrix = plate_matrices[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Setup the scene and the renderer."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"view_width = 600\n",
"view_height = 400\n",
"camera = pjs.PerspectiveCamera(position=[0.25, 0.25, 0.25], aspect=view_width/view_height)\n",
"key_light = pjs.DirectionalLight(position=[0, 10, 10])\n",
"ambient_light = pjs.AmbientLight()\n",
"scene_pjs = pjs.Scene(children=[rod_mesh, plate_mesh, ceil_mesh, camera, key_light, ambient_light])\n",
"controller = pjs.OrbitControls(controlling=camera)\n",
"renderer = pjs.Renderer(camera=camera, scene=scene_pjs, controls=[controller], width=view_width, height=view_height)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Display the scene:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "070fa5b77ad4470da7f3127f66024fc9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Renderer(camera=PerspectiveCamera(aspect=1.5, position=(0.25, 0.25, 0.25), quaternion=(0.0, 0.0, 0.0, 1.0), sc…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"renderer"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create the key frame tracks. Make sure use `scene/<mesh name>.matrix` to access the sub component of the scene."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"rod_track = pjs.VectorKeyframeTrack(name='scene/rod.matrix',\n",
" times=list(sys.times),\n",
" values=rod_matrices)\n",
"plate_track = pjs.VectorKeyframeTrack(name='scene/plate.matrix',\n",
" times=list(sys.times),\n",
" values=plate_matrices)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create the animation:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "376f5fac76a3404b81cfa7ab6bfcf150",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"AnimationAction(clip=AnimationClip(duration=10.0, tracks=(VectorKeyframeTrack(name='scene/rod.matrix', times=a…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"clip = pjs.AnimationClip(tracks=[rod_track, plate_track], duration=sys.times[-1])\n",
"action = pjs.AnimationAction(pjs.AnimationMixer(scene_pjs), clip, scene_pjs)\n",
"action"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment