Skip to content

Instantly share code, notes, and snippets.

@moorepants
Last active June 5, 2020 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moorepants/22415db65f0e2b5932079cd9b4860b44 to your computer and use it in GitHub Desktop.
Save moorepants/22415db65f0e2b5932079cd9b4860b44 to your computer and use it in GitHub Desktop.
Notebooks for lecture 18 Fall 2019.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sympy as sm\n",
"import sympy.physics.mechanics as me\n",
"me.init_vprinting()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"# Problem Description\n",
"\n",
"![](https://objects-us-east-1.dream.io/mae223/2019f/mae223-l17-example-fig.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generalized coordinates"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"q1, q2, q3 = me.dynamicsymbols('q1, q2, q3')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generalized speeds"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"u1, u2, u3 = me.dynamicsymbols('u1, u2, u3')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Specified Inputs"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"F, T = me.dynamicsymbols('F, T')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Constants"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left( k, \\ c, \\ m_{a}, \\ m_{b}, \\ m_{c}, \\ I_{B_bo}, \\ l, \\ k_{T}, \\ g\\right)$"
],
"text/plain": [
"(k, c, mₐ, m_b, m_c, I_{B_bo}, l, k_T, g)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k, c, ma, mb, mc, IB_bo, l, kT, g = sm.symbols('k, c, m_a, m_b, m_c, I_{B_bo}, l, k_T, g')\n",
"k, c, ma, mb, mc, IB_bo, l, kT, g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Reference Frames"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"N = me.ReferenceFrame('N')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"B = N.orientnew('B', 'Axis', (q2, N.z))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"C = B.orientnew('C', 'Axis', (q3, N.z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Points"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"O = me.Point('O')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"Pab = O.locatenew('P_{ab}', q1 * N.x)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"Bo = Pab.locatenew('B_o', - 2 * l / 3 * B.y)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"Pbc = Pab.locatenew('P_{bc}', -l * B.y)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"Pc = Pbc.locatenew('P_c', -l * C.y)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle - l\\mathbf{\\hat{c}_y} - l\\mathbf{\\hat{b}_y} + q_{1}\\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"-l c_y + -l b_y + q₁ n_x"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pc.pos_from(O)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linear Velocities"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAACoAAAAVCAYAAAAw73wjAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACL0lEQVRIDdWWjVECMRBGPcYCqAE7QEvADtAStAOswRKwBe1ASxA7QEuADvC9zCWG4ziOn2PGzCzZ7GY3X75swhWr1eqiy1YURZ81lseu0Ts2QVM8IAf4Z/RKv2nuLl9nQAE2EiQim4L8KYGjHtA8+qqQxsQLZFb1tRmX8dbUJM5Hf0YWcbxvXxhQ19j9HPsX/rs6/y6bR02sbKZWZ0vOHcpWoDvizu4+eY3C2iqTiSwiU8QLtSj74d47zWuFYG+ptfSATBBr1X6Uz2vSnYtYNtaUud6RoTG0MaKyd62mi0SwC3iBBhEI+ivCcPPCNdlinLFIAOl8mkSorNmbckVfOHqOQ+YE9YTjmz5vX/mAuUNEltq0JflSfCW3oFu3y3KmR+QtfalEynKwCRD9sfS3XeSzku/gYWCU6HvkI88CMMHIdGBPZhCByvzZWw9AgkmAMgSyaYGubSDzn1WNjLpotTZ96FN9dYUKosbIHInPmqRdMPYp06av34OxZQko1R0OnycZ7ZxN1n9DrrK1blg/YrnWFzDyw5xw9Naeb6YS37uN9xOfG5gbVyf44vOT9y5s3tym/p7nYBzfX/vxmi8fRJ1JMspwEwz2RqB1MW1t5HZDbsD33FcokdHDUNduMXZenzULT7G9Idapn4ipbQPaVJ+h2FOGEynUpaXnH4SXWKIG2P7+WHJ6cfrwuxPpt06m0Y/usbjjWEehpqP/0J58lplH7Zr596vjiGP8bz7zfgGwWJXqzo7fVwAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle \\dot{q}_{1}\\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"q₁̇ n_x"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.set_vel(N, Pab.pos_from(O).dt(N))\n",
"Pab.vel(N)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\dot{q}_{1}\\mathbf{\\hat{n}_x} + \\frac{2 l \\dot{q}_{2}}{3}\\mathbf{\\hat{b}_x}$"
],
"text/plain": [
" 2⋅l⋅q₂̇\n",
"q₁̇ n_x + ─────── b_x\n",
" 3"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Bo.v2pt_theory(Pab, N, B)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAHQAAAAaCAYAAABmZHgNAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAE8klEQVRoBe2ai1HcMBCGczdXAKGDQAeQDgIdEFJBoAOYVMCQDiAlQAeQCgh0AKkggQ4u/ye0HluWfbJlM3eT2xkhaaV96N/Vw5dM5vP5uzUtBwKTyWRD8XjJ8WaaI7yWHQ4BBXNL2u5VUzb6al4HtC9yA8opgHsEU4XdSTB/+wCr2Y3WAe2G1+Cz/W68keIzHbe7KttqX6oQ4M40Wd+hnTEbXICghndnjJdieB3QFJRWaM7oR64/UlYIktV2ddSAKphbgif75bbaENe9Fy47KvNSOarP6scZLaBydrCXW7+l5UnJ/xOVRw/6Tp62qrTuywdxdlWyvjmrWn2PR1FYNMTT+VnlPhxL6Xt5frE4sflqn6s8W38VavnLzpGrdYyMp/HeWEmWlyw4HZm+3Dq6Q6WUzPmr8qTSmbz8e9XfTVjtU7U/WH/sWjvrgF2WaYdddNumIxerNt19xmZNQnKU76He5BdakY/xKhOWr3Mol84WuZWL1SL9XcajO7SLgnCuv3Pswuce2lC5UOFx9OzrQe+k0Ich+vKTBx3HaesOHcIWdmTv3GNjj0gww343UnYVd6gkWQR3HXcHxxUKqffK89razFV5VOFuQBe/guwgIzpQoTH6XeptFXd4m8+xMcm33p8aHwIru0Mr96h0k/AOJ+zE/GvilYNJIHgIFQrUvlKRbCXoGLsp88K2ySGr4oLJHBEg0KjwQ/kh+rJB8uQElLVH1yn+Qqw0h2S+QIev+TWowNvjYQG9iIwhD06dHqZTCbzzW5sFnEpx+BDiic0cvp1w8FiFwKTQi/Q5eSYHulN1pNgZYw5BIxgVSsTKBVPrPVbZl4JNlZ8VRdUOj9CQ7jwD3JOxmnkhHCCD+FG4TCzK8TRGYI6lHB4lhX6lTMqZI3/wPeYP18Wmxr9E9D9pPZ8jfMeSDKcQ8teROQuxkgynA8lvxMOKu5HTL9wwNiesy/Pwp9wP5xb9mW/xmqtc/hgXj0XVstTLLEUlgPgcqpH8B1QALD6dapOaGSQIp0sMxFSswM/kbQeWec3WM0amWjhBiwXOZb0WVQl0hq2oKMCr2C8yvI7xhSOeFzF9xhwvqmAcJsekW3fZtm8vxEqYbQe4scOgLicWx7TRg2wn4TQ1CdWWTcbiSCruP2MOXWvh1wAgvZY4H+U8mQy5fx/U+Mtr983+ksx2Mn2LWO2KFcc075OmdcQSlqSCbiXHFZGE09QbIXAGIruDJzuLMpDVHJfkBwsAKICkfBVv9ISSnSZ68jvyj03og5V0EEyC0nb0H2qe7WL3AJUMMSABeIQWtAinmZ/5SfUPKeWbE7IMtCx95Sb8lQ73feKn7vk+O5A7jcUZXWmMhVomwqfNNyzHzZslk2yFBIicUPvyL7yjk7HS+ggKj81KUAJjPDqxwQ8LrJvdSn0ZsS22o2acJFT5NqIvavyo1hg79zEml8uTXhLIffvm2pB81ndo6lpkJ4qV+OB0bnp8v/gmN36fWroacSrfoZpXEBnQdNzFzvtCsG9D2UkgeVm6naH2lnidT4iSfXZ4+BlWGh6sWcNKfnN8chrdqc1jhuRiF9rJp2Y/kq52nGIZIlP8YlRkF3NE3LF8W9nPeiju/UuM2ZUOMhx7GCn0+T487B3Y/GWr5VsMK1sP/hclx3fpScKp8n+KFH2yiqOCDCObuOPazn9N+T9pWbH6B+Lx8jGA8WHOAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\dot{q}_{1}\\mathbf{\\hat{n}_x} + l \\dot{q}_{2}\\mathbf{\\hat{b}_x}$"
],
"text/plain": [
"q₁̇ n_x + l⋅q₂̇ b_x"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pbc.v2pt_theory(Pab, N, B)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\dot{q}_{1}\\mathbf{\\hat{n}_x} + l \\dot{q}_{2}\\mathbf{\\hat{b}_x} + l \\left(\\dot{q}_{2} + \\dot{q}_{3}\\right)\\mathbf{\\hat{c}_x}$"
],
"text/plain": [
"q₁̇ n_x + l⋅q₂̇ b_x + l⋅(q₂̇ + q₃̇) c_x"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pc.v2pt_theory(Pbc, N, C)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Kinematic Differential Equations"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"u1_eq = sm.Eq(u1, Pab.vel(N).dot(N.x))\n",
"u2_eq = sm.Eq(u2, Bo.vel(N).dot(B.x))\n",
"u3_eq = sm.Eq(u3, C.ang_vel_in(B).dot(B.z))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left\\{ \\dot{q}_{1} : u_{1}, \\ \\dot{q}_{2} : \\frac{3 \\left(- u_{1} \\operatorname{cos}\\left(q_{2}\\right) + u_{2}\\right)}{2 l}, \\ \\dot{q}_{3} : u_{3}\\right\\}$"
],
"text/plain": [
"⎧ 3⋅(-u₁⋅cos(q₂) + u₂) ⎫\n",
"⎨q₁̇: u₁, q₂̇: ────────────────────, q₃̇: u₃⎬\n",
"⎩ 2⋅l ⎭"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qdots = sm.solve([u1_eq, u2_eq, u3_eq], q1.diff(), q2.diff(), q3.diff())\n",
"qdots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Substitute expressions for the $\\dot{q}$'s."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAACwAAAAVCAYAAAA98QxkAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACF0lEQVRIDdWWgVXCMBCGaZ8DMANsgIygG6Aj4Aas4HMEXEE2wBHUDdANhA3q/+Xl2mtBaASq5r0jySV39+fy50pWFEWvq5ZlWV/xNsfEy48xTrEV2IH2v6pH+im2fm8ngAXwCrASsgvYj3gADRMblDinCA4A4d3M4mj8IFnbPKXP2HzuBgUUh+yWbZeuXNwz6ATwnvjJS2fjsDJYOJmRUclcwqNbx36UjDhSAp7NJHN6zynNWVvTe/2hsfbz0FYSOAdnl5JRjDeJ+mQehwcn43l0RJCaE805iJbTH6fsnrCNEsDGOJS4LX2bGLmuJtRHOaDdSN7DqPq51vC5mlYj2Y4kZO5Q2wjMm23S2Mcgfut2oZ2fcvAYLW7V3zesx00dQKW7i/vaBHxp+PzxNBfYUG4EAjrAVwPfi8DQ1TJMtiQA5so7bbmLxtW/2wGinkPUrtPt/5WhB8w1lzyLaDhEuE5leyoh22dp8j2RrCRWDkMszSmB6Fjre8D+IUAHsgt/TT9sZP+kwOV7IRnKqdFvLAz2Pi5ZC/H1Y6WNE8FJyhhCrcTAdGVZcjYcamVz30tvZcv3+AtlsrG+bNha/aaf1Nb8JHUsZ98CTvXl98svB+OgWx+sXMq/2PjiLiTcOn9Ly3Ys4JM/QvEWClKZ+Ijx6AfSVR8nfxVtxziRkAXjWuB5W/td++RrKoECUKH8PxPn6AKf/93fyy+wccxbl6Lj5gAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle u_{1}\\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"u₁ n_x"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.set_vel(N, Pab.vel(N).subs(qdots).simplify())\n",
"Pab.vel(N)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle u_{2}\\mathbf{\\hat{b}_x} - u_{1} \\operatorname{sin}\\left(q_{2}\\right)\\mathbf{\\hat{b}_y}$"
],
"text/plain": [
"u₂ b_x + -u₁⋅sin(q₂) b_y"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Bo.set_vel(N, Bo.vel(N).subs(qdots).express(B).simplify())\n",
"Bo.vel(N)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle u_{1}\\mathbf{\\hat{n}_x} + (- \\frac{3 u_{1} \\operatorname{cos}\\left(q_{2}\\right)}{2} + \\frac{3 u_{2}}{2})\\mathbf{\\hat{b}_x} + (l u_{3} - \\frac{3 u_{1} \\operatorname{cos}\\left(q_{2}\\right)}{2} + \\frac{3 u_{2}}{2})\\mathbf{\\hat{c}_x}$"
],
"text/plain": [
" ⎛ 3⋅u₁⋅cos(q₂) 3⋅u₂⎞ ⎛ 3⋅u₁⋅cos(q₂) 3⋅u₂⎞\n",
"u₁ n_x + ⎜- ──────────── + ────⎟ b_x + ⎜l⋅u₃ - ──────────── + ────⎟ c_x\n",
" ⎝ 2 2 ⎠ ⎝ 2 2 ⎠"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pc.set_vel(N, Pc.vel(N).subs(qdots).simplify())\n",
"Pc.vel(N)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Angular Velocities"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\frac{3 \\left(- u_{1} \\operatorname{cos}\\left(q_{2}\\right) + u_{2}\\right)}{2 l}\\mathbf{\\hat{n}_z}$"
],
"text/plain": [
"3⋅(-u₁⋅cos(q₂) + u₂)\n",
"──────────────────── n_z\n",
" 2⋅l"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B.set_ang_vel(N, B.ang_vel_in(N).subs(qdots).simplify())\n",
"B.ang_vel_in(N)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"C.set_ang_vel(B, u3 * N.z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Mass and Inertia"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAUCAYAAADx7wHUAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADPklEQVRYCe2Y7XEaMRCGDeMC8tGBS3DiCmJ3YDsVxOnATCrI4A7sDjJOB5AKHNyBSQWJ6YA8j6K9EXAwIcCRH7czQqvdPd17r1arOzrT6fQgpNPpHKGfYrsLW9vXMwBX53ge4WocEZ0gE+cLjPeMz8LZ9qsZgLN7InpBaEnmCMdFOFZP03plICfgNzh747ibjVf031siZePvBb4mRA8h9dqrUmYyeEI/a8mUkvUkZ+cPuHvZZeChc9ASuR6JEQ1vZucYHk8PUTyVhuEsewMYeyBJeC/7jFdOaA9MdkPcMfp72s9sv8VeOyf+ncke8fqsFz7YgHbFw5udMw17X1uOMe46YtA9/XVaL3ydSteiS/ZzjJvsue9e8HJfz5yRmWnW/aLNSM62h2w0ZgIxN0XQq6y/xl5moXaJblT2jFf+0jM/o1SZFZmkUz0HqczEMDYDtae44jrfvQYxbqoPHPa0RvFyP8vctMtPrUDCJDusm27hMvs0WUvHRZw2xXhLQqNS4NgbXrd5laJLnl7SHmt8gv5a2vMBYGYkO2OzNi2KOvY+zdcwDy9Lxwf8dXPj+mfZCl7vDmbxeqgmAWtZ5sJsb2lLn5VLDyAuNtAykAq742yTmLqtdIt9lGMk67yIl8TjPE7bgvFMidC3aWPOjfFmjOJNpU3czrsMG750ALnNzYz0OUQ/I6yMhEjc/LZdtpXeEhvl4CM3j8x1hYeMyyxcKBFmL21K89N2bdkWXuYxKcSXniXjfrcCkPwNJVOiEjk1wZJZTVr4tdf9s/QZu4S4UgIKuUQpF8T7lcSmOEBbEtwuzuEirivbxFvid8cs4C3AmURfYtua0kdcsPE2m5+DeaMkVPNjS6Ul+xa2OnbfFBbs83Pvasy9LWEV3lX3ESftyRgzU3EbxhdOMmzrh5uYbbYkZJz1x8w0Ay+zP/mKn5Ml9iJkp6pZaJZXkrd+NS6UT+gpiw81AvyO4AHN1aj+7Cwu2FT1U6vP/H4EOL8Lp22hNhLjSlcnKPo+RGw9sLjwJoKYFpItY/WQ+nPmoMRW94LGX7bj/tGDofbTNvz/Uy9ftKocVH8OY/S9ytSW6brDxZBWMgNw5SHrG0q1k38DmUMFu5cXyU8AAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\left( m_{a}, \\ m_{c}\\right)$"
],
"text/plain": [
"(mₐ, m_c)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ma, mc"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGwAAAAbCAYAAACZQWq0AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEwUlEQVRoBeWaj3FUNxCHfRkXwJAOXIKhgzgdQAukA1MD6YB0kHE6IB0Q6ACowMEdmO8T2jd6ks7vne/d+W5OM0LSarX721392XdmdX9/f3ZMZbVaPQPz3TFhLrFui/+XUtih9zH2AoyfaK3PDh1vjW8J/EcTMIy9MlhUT5fB+pYdQPfwy2L4vRIPvRIOA+TdfR1Y6b+jfo/xIbfgXAz/SkOPobBDm7erRztUW3pYe7Qp/EcTsClDTmX+aN6wUwnIlJ0HHTCujEvqfVHfTBl0SPO7wN8EDCXX1JvCSabQ76kX+3YG7+tndL6gmhkeXdkF/vPaCyj5U5oBo/nMWIc9WdFosHwFwOWTgdhC8dL4m4CJDQf5zWP592dzev/iA1Nxr+BfK+tvY1NX9L0MuwFD8+9Z+4e9oDgwJXnDvgbWW4Izuo4NJPWaOW+fvW/odQFLJ+wpAE3ETmf5wRw3gOz/URvHOvGYgnzfanW8roOlPGnw/EXXd95vw3+kzyzb40dh80sHyn2/PvTmnoIGFn+SEpP1TWCg77sm7Tv1IujbtMh573rbnkxoXpUlj0FrfFjS4F8Mf6MI4e5eEQ8/A1XKnfeqlEej3I22N1Tpiziu0hkGJ0dVc+oXy6eS/pg+MnyzBvz0R0FjPARL+Xnc9VOpH77F8PcCFg64LJWWfQBoWPM7HjTXNvRy7WP6yAyD39XrmXtF1XvWwdk135wx63sbIgWNuVGwQl5vTcxFC89i+JvvMITH++U30Lpiqt97cD9C957WuH0VU/4o26b+dyEoWpz+B/23VDeL/bo0a2qGifFG+HsB0+heMEq9BtXg1MXs0uxpWyNqufsaNxut3Hz0ez8eNGt2Cfa8FA6gdLqgrU3nswECHwUVuqnuS+pv1NmFdV6jt9T0vUOw3c2blOcFc7oVkJkeGOiO/6eGXWZ+s7O6bOtwssRK9dosT0Wh/lHdjfCP3jDUzXm/NF6HGCDfMlsDfIMhtTx5zeC67yF07/arWEffxGXIAgt6vAG9NyYwp6yW9e744T2jP5oPmb0WXvEmPLTKWacvvZXMexs1eGvZ8CyGv3bwF4Sjb+z4csy8DmgyMmgG7kvJa5/STUKgp8yy5Iem7F7gw+BR8OHVYdKGtJ7+4Gj6kZBo12T6nfFGktEEK7AiS5zqbrAGT9nCtxh+ZCUD3dkhVC87bjKybJCnqZmD5jXp2lcBNtOa4GY5OnngnZAtNh2ZgkErPnFIb7BkWYEnnTb4XDsZtMyn3Ad5mZdnVlaaeRfBPzph4eiHWpSPghK80OOqHIyA5g7XME+fgIerkX5yZLFeh0obeGJu0xYZykq3BW3aFLSeislvJnVRYmOMNlSe06Z0CjfFNZc/6+/i3yhgCIpdO9p9me6JGe12xhqW7vjMM/x6wthADsGhv/ZUzzU0+JDl6dPzCQ9tBLAJQKzptazz2jPQZR3e3N6aJWjoW4v/nMlZxQwJRneXxWzpZ+/s7DkdHWIGNsocob2kus6i8WXxx1XlfKQ1Q/yb9bMzuFJQ2UdeShwy7Ypx2hh5fFfyTvXBY5aZMs8p3qXmp/Dv9P906CyM9iPbP9l4gnzI66AuZetJyNl1wNztfkzfUr8ucYJOIioPGPkDd69brAR9NrIAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle I_{B_bo}\\mathbf{\\hat{b}_z}\\otimes \\mathbf{\\hat{b}_z}$"
],
"text/plain": [
"I_{B_bo} b_z⊗b_z"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IB = me.inertia(B, 0, 0, IB_bo)\n",
"IB"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Loads (forces and torques)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAALQAAAAVCAYAAADvjcR5AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGXUlEQVRoBe2agVEdNxBADUMBmFRgpwPbHZh0QJIKDB3gSQUZ0oHtCjK4A0gHhg7AFSTQAXlPaIXu/r/j3/8HHJ6/M0LSarXaXa1Wq/ts3NzcvFjD2gJTsMDGxsY2/ni9iiyb9WQYvqbs17h1e22BZSyAH+3pT4vOzbRn1JbtRee16YpDZyafOCGf20TrfrcFtBvlhHJFueimfL4j6HWYdbyhtqjvp1yOc1/9HTtUU/zoK9UR/XudGppdaM8oRmed+fsi86CbBVMOCyDD19Ff17d2WdQO2X4GhGTPH7FGRx3lrEs3xk4o+zFOW+fspJcu09g4rOYd0b+K/pA6RWhOg2nGNyZeUq9hOQu8YZobOhlgX732U8RcVSj4qJ9welvN/XsMtvgQ/mTEPe2TIdO8pP4rONL+SPtV9IfUW5lYBr8MmbimvbMAG+aVKfRt9i3F8/0bOvYd2v9Qz1LDn3S+U4rD1oO2s1M30PNwDYKOziabkXIcGJST1UG7RndbwGBwuewmdLOd1MjvWZpvtVThPxWu4UfZJpfVoU+k9CMfT3k3fd8i5uU+Cs3HreNWqNj3N43Qe5QHjywIZ170byXOKcqegzfPMuX5mXIBrpzkPObpfjVxZzF6FRsitzbdobylHCF72WTGDCAHFB+Q6u4jXP3PoSs86E8NdK7Goc26qHv6kID8PgTngXr9Sqn1Mwh8omiPnyimKx/hcZDtZ/8fykvKIGgk8jAc9VGDJArs5u0Fb9qumR4L1OkhRa1hGg8B+uZ/TJuVCbwGPpk39pg4ZNApfdQk/aiVWZ3VR3z9SEo6Oh4y0nbj6N7pSH8U3eDjwSqPrXqNIW14hC6NRy94ZS+6dPGExgM78zjM87WR5U3Mp639ZvAx3ldv5cntvAf0aKDzfkWI+vT6WPB6UXC/rgie4BLJEuY2r69P9QvmuNlGOMH5Tw1uthCPn8/oeo2c2vSAdope9HX8iEJtPc9lMEHdFEuI99U7ZDSq7lCS3ujX1kX6NmgL9e+Ca/gkG0ggT9YJWve4jAWyq9ahFU4Hm4G8CYb9IfAhhMvKK5APgwKM67xuoL8MxXfv30A16Oi/a+Myb68lDRrORLMfVtWlh7ubrf1MLeKguSniQjenm3LV+ooT1CGubDduGd3kPc8WOtEOukf+S7eA6UPah4LpbgTv91mvtHeQf+me0hjR6fuCTyMvb8wc2Nnqo8/CmwcuCzqpufLcAxP47JwavzgAOCOxuEaEpr8UjKBL17putjJeILO3kWlQeQdUk5Itqr5O4Saro/OWBtbzK9UMwN+Uw5Rgnjwz9D0I96KRP2fav3vmPMnQJqvedx0sJRjGdKMsi1wX874S6CiNq2gpQR5wUtZRpzS31GmM0P46FhEtrV7Zou24iY65oxzatNjIfypd6pQx3UDI3cD1LG0WsEhq0skCOfymbtCIryP6lkEhfqF0bFuHdiEXHBVQ9joz9EE4Ayxu9AgwArQdXydPVxG0+wobxBOqjbpubjikwUEIY5sK1NDeVK/8tt41/RTakT+3D+MQ2Tz04Q9D5hVaDw/FL2Fha/N5+QpvHaNc69AadJW0QoZdYAoRBkk0OibFh0W9uXXbU2fkMn8OfBI2MZjWH3ULA0ferIQhd5JWQ9PQzrEB6ujLXz3LfNpThBR40GEVOfWvVeYXuyCHNte+Kb2jLm82ibbygA42OrC4DxyvYCNVRGofRuXxlBc1B/wC3WHuK7BGcK64yeVqWU4jcdt26qLe6ls/ct/Tb+sIarX8WQZjA7Krl3tmUEmHEJxfaLyBGt/V6S8C8vlQE8LPz3IBu7lvBPYA1Teb//zkO6wOjLa1r5lF86BACC4N3vs9UdqpFGQ2uvlDzGRkGiILshuhmTIr/1i6wUfnWPk79DwZF8Wxvodj1H2Cn9E5fb9v8zblEDwRc1/KaXSafzTUcwajTFf+PJZuRq/y5eiJjPUH67ZvsaVFyTeFHwt8f2hD/4f/Lr+Pk8aAyMlHaWWkaCCvHK8XT+qTRqGw4ZAama8oXt/lhqH/Q+gWOqGPB3PmF8IYH1LDxxtNm7nnZb9zX5z+sLchUwEvd/Fj+nWuksbWf8azAHb2NjRd8suObwXzw/abAvTzhxw5/bW08Uh+SM2KQ7sIAhghdhHgqa+ph9R5zfsRLIAvGVE9rI/mzKr1PyYQTH1tr/5OAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle (- c u_{1} - k q_{1} + F)\\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"(-c⋅u₁ - k⋅q₁ + F) n_x"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rab = (F - k*q1 - c*qdots[q1.diff()]) * N.x\n",
"Rab"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAEsAAAAXCAYAAABDArJmAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADmklEQVRYCe2YgVFbMQyGEy4DULoB3SC0G6QbpHSCwgZhBA42SBkh3YB0Ako2gE7QJhuk/+dIxn59wHvx6x1N6ztFtizL8m/Z8kt/vV73/oXS7/f3tdZVyVr3Sgb/LWMF1KF8vRWH9rf1e+fBEjgjgBIRVQD13cBTtV3ZabAsiq4FybmO4JHojeqfRYDXuvR3/c4CsOpdVSdrgtzOg9UEhKY6O3kMFTnrhCZEkmgq4oJfGh82Bcn1Oo0sOTGW4feiO5vgXvxUxwBZT/1cttTJTmciCmMo70Q30r2UHgv5KPph8qnkc9UbFZtnKmXmuRRh70w2FubjTO2V2q/EmxcN6HVBmvFCdO22VMdRHnEsNMyh+gV1FS5daJL0kanonIhGiRwwl95uyjUGQLAHDX2c6u5XJvf+p/ieBhcX2y0W+cGNaVKiigIoRBW7e0NdBYcPpMOuezmwymvJ0yhCnr2NiBxReDf54Cc4EbTw/sQvRPjRuAw0KY58bTxio/gpdUCiK9FcspXbMXBo+sLvGWPz4WQ4mq4vDpiU8w2Lv+i5jSCUnbnsIMtAjCPyyre8uX1rYAs82taEgYLThH1auJ8AKADoXDLkHMsMAIkAJeqjYwX9KoB0PSa3Yd2zLo7hW3OrbvFVGaqAEo+FjYWx+C9J2xMCGxHkFpWuQiTW2fH+znkXYP3EK0WK31HuJIsP95ULjB+LZyAmR7Oqzx24wLZ0OLrY9PuP6lhyngYzs4GsddHYExFPCp4c8HC8xYeJbFScCeUZhsksh1qUZz3PRLye4xzomG7MdvSrkPFUfdA1OZ8lnkEDNznJhOdJsC9OO2Zd03EfYoZ2+9JlUmicyNy3W5eZnaX0NvOkHdvWZYwdxzmc5gkB3VXtSYZenfy3xZqjgMh76USUbgYRmD476I+LVN3BSDlgME8qox7BVN0BDpupNnbjJsRdry6spI0D6SQlturGyja7HaOTuUSzOt02MtnIokttovdhk9oYq9OVsfjgo1/Fj2VcTN24EpnmYKJ4xFUHvHikCm2z0dgnyrINKIosGeO4VR3/o1FlG5LeVxyVeJRKgDLbZFnWBMWoom8gQUkBGEL32DII/xdxxrMnQMkEj4wlS15pzpCBNV/1gfvIsOfFssXDOWRr1bMM3+mH9POuvEwNgcOGc4zD55faZOHqV0pxZL3M1bf36lRDeK8RUWTs8GlWNfM/soSIRRYXOg9sHsH+91GG1y9I2/XRUWDU8gAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle - g m_{b}\\mathbf{\\hat{n}_y}$"
],
"text/plain": [
"-g⋅m_b n_y"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rbo = -(mb*g)*N.y\n",
"Rbo"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAEsAAAAXCAYAAABDArJmAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADdUlEQVRYCe2YjVEUQRBG76gLADUDzAA0A8wANQIhAwiBggzAECADMALkMgAjUC6D8711epjdOq522RXxtKua6e3p6e75pufnGM/n89G/QOPxeJ25zvrMda3P4L9lLEBtkOs1rbz+2LxXHizA2RYo2KoSqG8JPMRutNJgpSq6AJJDtuAW/Br5FBa8zjRe9TNLwJpn1SJdG+RWHqw2ILS1WcltSOXMC963kuAT2AP+LrWbbUEKu0EriyR2cPwOvkkBbmn32AbqRvR72Cp7Ox3AkmOkt/AVtsfYOZGP8PekP0F/idyKUpwTjI1zDOvvAB/TlOMZ3zO+X9C2JwaMhmAiHsEX4QvZRH3EOdEqBvKRMuShK+8Xfd5Udu7D24VeMO/iu23LGAHRn7wZ45Ajr5o++pe1Ewb3prRaTjKvFEFv0etbUKwqV/dKGTJhV9ZVD3qZhFfoyypS/+i3EWONM40gRV6qzCP3hc1D7YRJmMiXhwwe0H8qE8DmM3yJbhb2CRw/Y+K3jknxTLLammFPK5jS4a8m/9UufGRlB+FrB9ulppM0wa2lVks6EygCbtmX5PkkQBWA0aJT77ZsAiAo2V6bRNo3AYy+J23XBoj2JvlYNPmmTlNBWVT6gnKuQRALoc6FqPSpKqP7ydshwPph1lSKN19JTrQ6r0ol8ge4BmKxNZv277Gd6hsbt64+M6E7gn0aVJw7OgqM34V9UvjksHWBqnO20G33vgnxqWNvlg0mFbde3ES+nnMMbZJtvu3sh7zxEO9tk96fJXGDVm3YoPd5Uvmh9byr3Zh8Rw75hi7GGlTeKXSR23XobKE7uJpHnkhp0FXGmStuct6IPiHkm6YfdNot0jsuPzFiHDpB9L20C5eLoa4GAt/l8yDAKFvBME6pU85+kAPgWATj5rwGASsmF60JlEFCP1SLb1c7V8WAfmvVRQyr936R+gbCWV5RfUGxLWtbrW+ccjwxDJQnUfb1lfHrQuvfKjsr/fWqLJy53XSczybk31pVJg95ltUWg++8XcoJdpXx4/lnELm2IL1+G3JTeAbtwQJkRfn/Is+A2hMA3aBEXLeLvy3dJjPY2KfEVe5N+Hc+FlLt4dwLrN5ZPRMHCXzPwOrnF99WbvNXymjyTPL902m4O3yr+f5zt1Q/zZpJ/a8sEEmV5YHuA9tHcPz7qIbXTyCBATWefxiEAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle - g m_{c}\\mathbf{\\hat{n}_y}$"
],
"text/plain": [
"-g⋅m_c n_y"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rc = -(mc*g)*N.y\n",
"Rc"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle (k_{T} q_{3} + T)\\mathbf{\\hat{n}_z}$"
],
"text/plain": [
"(k_T⋅q₃ + T) n_z"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TB = (T + kT*q3)*N.z\n",
"TB"
]
}
],
"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
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@renefritze
Copy link

Since I'm struggling with an Animation setup in pythreejs myself, I wanted to replicate your excellent demo. Put the notebook in a repo, added a conda description and now you can try it out on mybinder.org

@moorepants
Copy link
Author

Note that the development version of pydy works like this: https://pydy.readthedocs.io/en/latest/examples/multidof-holonomic.html

I'll try to do a new release soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment