Skip to content

Instantly share code, notes, and snippets.

@moorepants
Last active November 21, 2019 20:25
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/c7b85f18d681c925f01302143220f6f9 to your computer and use it in GitHub Desktop.
Save moorepants/c7b85f18d681c925f01302143220f6f9 to your computer and use it in GitHub Desktop.
MAE 223 Fall 2019 L18
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": [
"# Problem Description\n",
"\n",
"![](mae223-eom-example-figure.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": "iVBORw0KGgoAAAANSUhEUgAAAKsAAAAgCAYAAABtn4gCAAAABHNCSVQICAgIfAhkiAAABS5JREFUeJztmm2IFVUYx3938611g7ZPS8uW+CUTyS2poMhuUhRFWRH08iEmCRMhP9hGH6Ls5VNZIGhQUXoNS1jIpKVCiKTAXlwytZeVbGkLE80iItP1JW8fnjPcM+fOzN6Ze8aZe/f8YLgzzzPPmf8z58yZc87cEg5bXA4sVvuDwA85anE4IjkPGAXOAFXge+DcXBU5HBG8hTTSFcATav+VXBU5HCHchzTOVZrtRWW7PRdFbUoph2u6sd3koyXr3I3tJh8tW+dubDf5KHSdr0QEPWDYW3VsZ+bjqWN/m5WLqtag8HW+CREzJ28hljDz8XCNNRc6MijzCuAo8GMGZedBu+XTsthurDOBS4DdyIC61SlyPh7Ss5fzlXH2sN1Y+1WZX4f4LgNeBUaAf4DjwBiwBbjRsg5bxOXjUwIeAfYgOf0ObAAuzFxdc0xBJj17gHHgELAO6AT+Jt3ykkdwiDQbWIY87MeBP4B3KMi9WYGIfNCwDwCnCSaib2vOosYkhOXjEdQ+RHhOvwK9GWrzdZRTxE4Dtqn4YWTSsx44Bnyo7G83ocnfPiP83owA01OUb5UKImaeZruToNBTyNP1NNLT7qe4jbVCfT4e9Td/CHiW+srZkqE2X0c5RezrKnbAsF9PTftjTWjSt4+B54C9hv3eFOVbZS/ydJ6j2YapCTwNXGPEdFDcGXVYPh7Bm/6m5usAtmu+M0BPRtp8HeWEcVequG0R/lHlX9SEJv1h9b+SXkDw7fpyivIDjFH/ZMRtm7TYGUiv+YVm66T25aIKvNeswIy0hxGWD9RXyELDv8Tw35oiF5MxkuVWiSlrozrn2gj/TuXv1mwLkbfHQeW7JyLWM3TcZPgPab71MRpDmWIcjyKD7UY5qO3PV+Xpk5Fugv8/+DmRumQ0oz2MsHzCODzBcTfNswY437D1I9/bNyKNWWd3TFk3A38COyL8vUg9/aXZZiITsQ3Auw0pFkxdJ7T9LJZNG2Y58sQs0WxJe9bN6rwvDfvnyr7ZitLGCMsHkvest5FNXr6OcoKYGSpmV4R/nvLHNcgkPesswz9Gfe9/h2bzV4UWUWs3d8VoSc0bqvB+w66PWU8BVxv+EnCx2r9OO3eusvVSE36LddXRROXjkXzMmkVevo5ygpipyLjxlwj/oCrzyZgybDdWkIl2FenRe9RvFamDTNiFvIanGnZzNeAksizyFLAW+I7gaoA/a3xJHT+qjn8jONHJmqh8POrHiEPAM8Cnhn2rFmc7L19HOWHciIq7QbOVkNWZRsbZWTTWTmCfsvvj2v1AV2wmKZmGNMLhCP/jNL7OukzZDiNjRr8BvJCF8Aji8vEIav+E8JwOAH1anO28fB3lhHEPqbhjyFthNfAN8BPy970q8SsYWTRWgAXU2sh/1L+BrbFAXeS1mHPmK/8+4F+k1zoAvE9w1tiFfEGpAksR4VXgUuuqo4nLxyNYIbORXvJbJKcjSEWYHwRs5+XrKKeIXYm8ak+o39XIBO4IE088s2qsi43Y+yfQURjWIYKPqt+d+cqxRpHz6kM0fTDBeXGNNS09yINSRXr5KrIa0RcXVBTmEnzKlucrxxpFzsuflT8f4utCJpr96pwBtX+RheuWgI+oPbzTga/U8XZyXuJqFH9WPY58/WgXiprXKkTX3SG+MuHj8oqF6/r/vxinNiSag/zxpYrMdwrPWkTsYN5CLFPUvLYSPs50xLAUuXEnkXXIq/KVY412zWtSU6G29PNwvlKsUqE983I4HA6Hw+FwOByK/wGm6kjJcz8L7AAAAABJRU5ErkJggg==\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": [],
"source": [
"Pab.set_vel(N, Pab.pos_from(O).dt(N))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAkCAYAAABBszIzAAAABHNCSVQICAgIfAhkiAAABXRJREFUeJztm39oVVUcwD97jlm6IDVCs4WZaYUrRwvpl71WIUuWFUYFRdcICgIJMsp/chVRKUb0k7I5F1QolMNhMRAtoUSj2qRav0bLJDdbhVKmoXv98f1e3nn33fvmvTv3vtnuBw7v3O+555zv+95z7vme73kPUpLgHOAvoK7ciqSUh0pgFjC+3Ip4qSi3Av8jngMuBhoT6q8OWKz5jcA3CfU75lgBfAYcAn4DOoC5Pvd1As8kpNNpQC8wBOSAr4FTE+p7zNEJLEUeei2wCegHJnvu6wduT0int5AHvwx4VPOvxNXZeZpShGrgONBkyKYiD2GOIZsDbAOOILO1ETgKXDfC/u/QvlYaslUqa/KtMUL6NNmmDmjWdFEM7cfFNMTYVxqyRuBvIKPX5wMHgecR528RsF/rnZGYppbow/4AOJnXsA3Al8A4Q7YC2GlcdyKvaZM2YJ/ma4CPEMetG7g1DkVHM4muYRZZjczkWR75BuA1zdcg38e7518LbNH8NOASzZ8J/AJMsK3saCXxNcwSa4AB/Jer74D7Nb8YOAZUee7ZBTwd0PYeJFjkxUHs4qYZYRROsceLBD/8CYhTOF+vm5ClbaJxzzXIA7zNp3490IN/TMYhHQBl51UkBtCAePtuqtbyy5EB4L7Cz0I8/5eAmcDNwPfIA5ztaXsK4gdcEdC3QzoArOEgRsyGrJcLSM1a/gAyg03uAvYi8f9NwEOazxj3jAd2AHefgM6JDoBKxDnrRkZyP/AyMsIPEj7k6FD4JWYiRusC/gEGgXeQmRMnrh7ZmPvx40ngU+O6AniX/CAKwqHQducivkY3YrsDQCsWbVeFbGFySPhzFbAOOAx8oPK3Q7bpUPglduA/o3qI97DE1SMbYx9BtJPfJQBchfgJXUaq9annUGijDvxttxeYbkPRN7TB5R6568TkgIdDtulQrPBWZFbs8cjjDKW6emRj7COIXvK7hDA4FNuuA3iC4on0/kiVvEwb6gwo79XyhpDtOhQr6nq8k5Etk1u2JmTbUfTIxtiHbRwKbddilGWA7UbZEOKcRqaN4hCnyW4tn6TXC5DR+KvKlwTUcyj8Ejd4yvuNsnXRVC+ij+KZUyqtt9SvbRwK9VzgKb/XU35j2A4qjfxC4Hfgk4B7pwM/AX/q9UTEGWkF3gvRZ5/n+qiRz2CHF4DTPbJ5SJCmzUeHLkv9xs3AMNeTiMgpyAj6IqB8rpYHPegwb4AZnvI+imfiTYbsepU1kD87uCWgr1K4emQj1C0XDuHeAItUfsL2c2fccU1TAhR5XD+DBohtNgOva34tsra1IL5DC7K3ToIwy4jt5Mc9Rj5DYQwhB3yu+Uj269FGrjVkFcjDH26Nsf0GAIk7fKty10/4gXwELiyuHtmI9cuBg/8uoBn42CNv99QNbb+letNhZJSsRo49f0SOa3MEe5lxDACAS8nvEsx4exRcPbIjaKMUDyLb2kOadpJ/JUfFodB22ygeEDnkmLnGp/6w9jOdrlZkjz+AhDKXIPv1euTIcj8ykpLkbPLn7hkkijha2Qc8hhi9HnlY7cgPRW1xHxKl/QpxngcRp3Y+cqTsxYr93PPtLSXuKfUGiMpU5EeYOeRNlEN2IH4jfbTyB9ECQDawZj/Xo3zKI69GtlbztHy55v3OtcNSAXyo7e5GQsS79Ho79raLcTEOuBP4F/8Qb9xYtd9Krej92VKW+IIqy7StI8CFKrsAOQDJAY9Y6CMOapFTv2PIbAsdmLGEVfu14++8pRRThfxcrB75j8Ag/v8hSBkjbAXeLLcSpRjta+nJTgaJsqaMAZ4FrkaWylpkCRgiuf8KppSZ9cDPyP78APL6X1hOhVJSUlJSUlJSgvgPf131J26k+XEAAAAASUVORK5CYII=\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": "iVBORw0KGgoAAAANSUhEUgAAAH0AAAAdCAYAAACHdGN/AAAABHNCSVQICAgIfAhkiAAABHJJREFUaIHtmV2oVUUUx3/nZmZ+QBbEJTMuFqRidPvCB0FPVgiKSREUUrqVoOjBhzKiF7V8U4QIEzKuV6MEg1KSDOGSFESopCZ+YUmHirqWFUn4UV1PD2ttzpw5e/Y5s8/e++h1/2FzZtbas2bNf2btWTOnRIErCfcAC7T8AXCsg74UyAHjgFPAJaAKHAWu76hHBTLHu8hkLwNe0fJbWXV2uz4FWkMWfD2FTPJKQ7ZGZfN9jZVaeKeivz2+xptguO5PFf3t6aAPbaNCbSBpYTjvTxXS52tYINf9qUDnker+lCNeRHxcmHE/gfYTPj0Z91cgBu8hkzA5434CMp70rrQNDmPcC/wNnOy0I+3iapr0AImccoK2Y4A7gUNI8nlFI2rSRyAJ1jfABWAQWA+MBv7C/2gVUP+5mgQ8jxB4HjgDbAVu8fY+P/QiXH0doUubLxsl4Dm1fx74FegnRb5GAruRydmPJFibgHPALpW/72kzoH7Sv7Dq4XMcuK7dAbTgRzlB22XadpElz4OvnUTz9QMwwXskEdioBpdb8llGZy952gxodHgAeB04bMmfTOi3jx/lBG03a9tpljwvvnYCr9EYMB952m7AA2pot0N/SvWzPe0GNDoa3gTeCPxn6NZ52k7iRzlB28NI9F5jyPLiq8/QdQF7DN0loNvTfh22qKEZDv0+1Y/X+kxkBf6s8icc7QLqB/GIpR80dJuSud6ACo3REvdsjrE1CvgX+MqS+/IF8CqyDZwFfkP4s78egeXbTEu/1NLPjfE9EiOM8hzgd+BLx7sTgO+BP7U+Bkku+oEPPfqsWPWLRjmt08QbwA2WrBe5698S4cOhGFt3IzzZSZwvXyBfmQ3IxJeQLW4AmAr84bBzukl9PAkxClk1Bxz6aap3Ta5PpPdY+gqNEfeoIXtYZbOp3dU/5ugrDqEfZc92L2i7pYasXb5CjAWGqL+JDP1sNdLnqbxlzsLIGtLnJodzK/TXNci08THwtpbfQfatPiQ6+oDtOfkBcikD9WNPi69xyBy4ohxgsVHuAp4x6lVqX6BEnB1XIw8aspIOoNn+kXakg5xzT6g83Pe/RaIjCUI/yp7tDiDn72steTt8hdgGHKQ+QQz9tLP3VcDnlnyHZc+bsyX60jlkZaxVh75D/vqs4s4Us5h0gPuoZfdDwHSX8y0g9KPs0WYk8A+yB9tohy/0/V+AOxx+hs9nNC6CKvATMDHCblPOzMSpHzlTngaeRiZxALgfuFkdHIwZRBa4lVoUdCG3eXniLiTCoz7T7fC1DrnoeQhZJHF4FrkcOoIkvWeQZHQ68GPE+6lwNhFZNZ/EvBMX6UnRjRxrqkgEVZFMOGp1X05oxtebyEKZmkHfqXEWZoWrLflY5BjUq/rlWr4tscs1lIBP1e4+5Hp2r9b3cHn/UeTiC+S4dhbJqruNJ2meYiJVzlZqw8cteRn/i45WEd51XwCmqGwy8odDFXg5hT6ygosvcF8OrUqh31Q520F0AlYgGgVfBQoUKFCgE/gfx2TOmrM63nQAAAAASUVORK5CYII=\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": "iVBORw0KGgoAAAANSUhEUgAAADAAAAAZCAYAAAB3oa15AAAABHNCSVQICAgIfAhkiAAAAixJREFUWIXt1k2IjVEYB/DfjDRpWLAxycc0Cw1ZmBlbkqyUr1gQi7tjoUkiJVJko2wUkkaysJBGsUCS2BEzIyFCWFCIlHxzLc65M2du79R9zdxu6f7r9Jzn430+znnuc0+D2qEDK+P+LB7WMJfcmIRn+IMiHmBCTTPKidNC4t3YGfdHappRDqwTEt6byA5G2fKaZFRHHUPYJfTi6gzdrKjrzemzEL8rrTZsxgC+4j3OYNo/ZVyGczHIzAzdmqjbk9NnwfACbpbxpfUITXkTbizju4QTeZVhuyDS/rxByrAQ17Af9xN5O1aNxvEU4SQuj6C/GvV5r7pg+En3oiGJ+SvRHcrpe9gNdEZ6ZwTbTrzF68gvwsXIF7G2wpjHoj18EG68hMkV+hhEWkBXpHcz7NqE0+pLZM24hy05Y74o47+PkE9FSD/oiLQvw25ZpGn/X8Ju+afSzzK+mGGzwlBbLY2yJYbeToNTMi2gPTp/WeasCZviPqu4auACjsf9CbSgR/jt9OB8yTAt4AfGY3Yia8ZJzIv8aCdQHmzDY7QK/xmteIqtqVFawJVIb+Co8GJ8IvT+G3zC8yomXI4v2IDfmCq0z0Z8To3SAg7gsNBjBczFPqwXrnBAdr9WE9MxLu4bhWFSFeQZo5WiBe+i7/5IP2LGWAWYiPlxFbE97rOeIXnRIEy5Im4Lg+RW5K/7h3GbhcWy3zSnxsB3d/T1DXOirF14/BWxYwxi1FHHf4G/TQuHuwdOEXQAAAAASUVORK5CYII=\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": [
"# Partial Velocities"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each partial velocity can be calculated manually like so:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAZCAYAAAAv3j5gAAAABHNCSVQICAgIfAhkiAAAAVJJREFUSInt1L1LXFEQBfDfaiGRWMTGRRSClZb5A2xCWhPtBFNsmcpOLFPYBSxFCwtJkSJFWisJpIuNgvgBErQUIrEJaoi6Kd4s+3ZZzT652+2By71z5s05786FKfk/XuBNnD/joI2awhjAD9yhin086YTRxzCYx2KcV1KbzIbw+xz3Ibip1GZdtIWKrP+1NYZ32MUVzvEJw6mNvjXFtXWIvqLiPQ/kJrGFJezl+HFMFzXKo6Lxz7+gFLlB3ORyy0XFH7rRaojCL9kb1fAspdFpU/ynzbrCRn+b4mqLb16rt/NVcC/VZ+NMK+GKxjd63pQ/zeU2cvxacCcox17F+n03eKxRP46CP4v9GE/zxYV73QKXmMMthmRte4vfqY1gBL05zbFEug0o46esZTuxX2A0pUkJmyG+LRtN3yP+Kl3HzIfoNSaCG5cN4SoWUhl10Xn8A2LGYX+arGKEAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"n_x"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.vel(N).diff(u1, N)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or you can use this convenience function:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAZCAYAAAAv3j5gAAAABHNCSVQICAgIfAhkiAAAAVJJREFUSInt1L1LXFEQBfDfaiGRWMTGRRSClZb5A2xCWhPtBFNsmcpOLFPYBSxFCwtJkSJFWisJpIuNgvgBErQUIrEJaoi6Kd4s+3ZZzT652+2By71z5s05786FKfk/XuBNnD/joI2awhjAD9yhin086YTRxzCYx2KcV1KbzIbw+xz3Ibip1GZdtIWKrP+1NYZ32MUVzvEJw6mNvjXFtXWIvqLiPQ/kJrGFJezl+HFMFzXKo6Lxz7+gFLlB3ORyy0XFH7rRaojCL9kb1fAspdFpU/ynzbrCRn+b4mqLb16rt/NVcC/VZ+NMK+GKxjd63pQ/zeU2cvxacCcox17F+n03eKxRP46CP4v9GE/zxYV73QKXmMMthmRte4vfqY1gBL05zbFEug0o46esZTuxX2A0pUkJmyG+LRtN3yP+Kl3HzIfoNSaCG5cN4SoWUhl10Xn8A2LGYX+arGKEAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"n_x"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.partial_velocity(N, u1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All partial velocities can be calculated at once with:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGIAAAAZCAYAAADKQPsMAAAABHNCSVQICAgIfAhkiAAAAyZJREFUaIHt2E+oVGUYx/HPdWNZjreCkkxKpbqtsgxrI4gUQWDmLqHF7AohV0ZSkAsXhYu0RLyg6MVFi4JqFwX92bSoRbc/FJmFt01/MJK0TE2dFu97uOeemTNzZs6dO0fvfGF45zzPe97fM+8z532f844ox33YFL+/ie9KjjekBWMd/IvxEy6jgW9xbb+Dugq4u5vOy7G1Q5+jQgK24fn4fX9Poc0v1uKJop2PYmEb/5PCxO9M2XZH28Zeoptn7MGyTp02Y0f/Y+kbt+EwfsF5TGEvbqiQ5moc7DTo1wpkq6Kswu/Ck/kuXsFH8fp73FQhzUmsyBv0AWEDvlJ5X5iAZzP2V6N9vEKa43gxb9AX8FYLez0OmnxW4hl8iX/xB97ArUWj7wMrhdhOYEHGtxh/4x9cVxHNp/FJcpG9+X4cLxDABA7gXlwjPH5b8KH2m3w/2RDbD4SSOs0ZfIpFeKgimj8K72FoTsQKnC4QwDph0nfhm5R9TBel2SyT1Oc/5PiTP9hdFdE8jRpGaU5ETbFEvINH8BLW41LKt7bA/f1gSWz/yvEn9tGKaCa+Gs2JaGCkQAAHYl/4U9gjEvpZJpYh+V2Ntr3mTnNB2pdNRPK4dGIqc32+hcBck/zDluT4a5l+g9ac4ctO2ok2g6b5L3PdKuOPm66yHo62DabPpjYX0OmGY7HN2wPujG3eej7XmjWckrMV7MDbLex1M8vXOzL+qZRvImUfN13eLY1tA4dyAi/DKp1LybNmt3wto7lVqLZaslrzskPviVgkvF028Ftsj+P6FhoT0V/PC64A3b5cDUIz4SC2txv4C9yesdX1lghYg4vRdwkP5ugmp7lPtQuuA9njhpdNHzcc03zcMAjNhK90OEp6TChL09T1nohNmXu35OhOCutl2aprOY7gV1zAz3gNN1ZEk1Div15k4MPCslKWpTgpJGAytqeEwNOMCk/L7lnQLMogNBP24eYiHW/RvOZ1ywjeEyb/c+Ho47N4/bGZm9tGnBMSN1cMQpNwKvFoNzfkHtEWZJsw6edwT7SNCYeEDTxXcvwrlbLzOmTIkCFD5hn/A1PF/EjxvE39AAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left( \\mathbf{\\hat{n}_x}, \\ 0, \\ 0\\right)$"
],
"text/plain": [
"(n_x, 0, 0)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.partial_velocity(N, u1, u2, u3)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left( - \\operatorname{sin}\\left(q_{2}\\right)\\mathbf{\\hat{b}_y}, \\ \\mathbf{\\hat{b}_x}, \\ 0\\right)$"
],
"text/plain": [
"(-sin(q₂) b_y, b_x, 0)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Bo.partial_velocity(N, u1, u2, u3)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ4AAAAiCAYAAABvA7+1AAAABHNCSVQICAgIfAhkiAAACnhJREFUeJztnXusHUUdxz/3thZpoVCqSLWVC6WA1VtaJVBpqwe0YksqiBF8oNk0+AhiJUaK/sFDE4OhwSAqAgU8JRWDMRS9NqbSVESFYAOWWkFpaq8oirVBhVIpvXD847fjmZ2ze8/unn3Mnp1PcpKzMzuzv9nv7Oy8FxwOh8PhKJAJMc6ZCLyStyE1YxrwZ2AD8K8M4vshMBN4KGG4BcCngQawB/hnBrb0M7bo1i+4/Ne/TABaaQPPQjJGv/AZYDvwnP97CDinBDvWAOsyjG8e8CxwRIIwhwO7kEpFC/g9cGiGNmWJ063/qFL+cyTneOCjaQIeDjSBV2VpTcmcCywH5gAnAl8FDiIFQFFMBv4NLMk43keQAjoudyIP/CrgCv//tzO2KSucbv1HlfKfIx2rgHclDbQOmJ+9LdbxLPApw20m8tJ9BngR2AEs1fznAiPAf5Augm/Rrq0NAKuBP/ph9yBdKooP+tccMK55ErDFD7MLWAYcIL5wVwO/jnnuh5AH/WrN7TrfbUXMOMqmjrrZQq8t0KrlP1ta3FVjENgEvDZugDOBuxNcYAFwjf+bmyBcmUwAPgy8BAxr7rOAvwI/BhYjNeyVwELf/xSk4LoWqYEvQfr91/j+q4EnkILnWD+cXkB+A7jPsGWOH+fXgROQTP135EF8Tcz0vNdPS793V9RZN1ueMxtaoEXSa3pt0S0uWdq7DLg97skPAm+PeW7V+mqHgX3AGDJAvNzw/ylSAx2MCP8wsNZwUzVlkNrv9eNc/0d0jhNsQroedNYhBSlIoXo/8DjwGHB+SLzzkPs/e5xrV5m662b7cxbWAu1n4qbXdt1M8rD3d8Bbup20GPhDgkir1lc7CamdnorUfvfSvinHIvafFhH2JN9/2HC/DNjt//8s8DKwGWmimzXfTcAt2vEsP84FxnlrgY3+/xlIjR3gaOAvyJiDzhw/nq4CV5S662brcxbVAu1XkqbXVt2iyMPey4H13U66jXb3Qzeq1lcbxmYkzSBN6jGia80f8P0nGu5rgXu149nA54FtSFfMmzS/7wE/0I7VNScZcT6MNOnD2A680XA7Hbnvrws53/P91G8oIt4qUQfdFDY+Z91aoAqP/sh7cdOrY6NuIHm8BXzEcM/L3iFk3HNa1AkTkSbke3q4SNXYQvttvBxpYk6NOHep76/XWmcALyCDzyYTkcHICzW3LyCD3ooVfpxTNLd3ImKHxXkqMhZhDnJfDDwdYbdHfzz8OnXQzWbGa4HqePRH3oub3iqwHtHi5AKv+Sckr4dyGmLQ9MLMKZavIYPKQ0gN5lqk8Fjm+09HXrx3AW9GhPkE7Qw2FZntdCMyT72B9N1vQAqUK5AHbS7tQci9BGuzw0iXjurKeT0yI+qbfpznAU8iOpxo2D8dGS84IyRtdxI9iOdR7Ye/rrpVCb0FquNR7bwXRVR6q8DjwPNE9xDkwXrGmbB2GTIrp19pIjOZDiAF0WbgbOOcRcgg9T6kSf0zpH9esRD4DbAfeYtfSXut01XI+Nh/kYLrJ7T7+HUeBC7Vji8CnvKvuQHRYR/BjHEI8ADwsZD4DkVq6AtD/KD6D3+TeupWJfQWqI6HHXlP2dHIKL6o9NrOFKQC9cuCr/tF4G9RnrcgD2cUHsFMdDyys8E22g/tXUht0BHN2UjtOGrLoq8ghZxiAPg+Mr0xjEuRgjYKj6BuxyEzch5DdNsDfBenWzeK1k0xD7gZ6ap7HtFsFLgHeHeM8FnTrQWq42FH3lN2NFKETZJehW2aKRYh9+EGwz1vey/wr3tkmOd9yLTRKDyCmegB41j9nkBqeo5oViGzscK4F/iOdrwYyejbtJ8+o+aTyMytKDyC+owQrttTwBuSJaN2FKkbyNjSGOF6hRUgRdCkewtU4WFH3lN2NFKEbRI/vWCnZopVvg0f19yKsHeJH9dbwzx/y/jNRy/EqM1ITW+74X5heBSOGOwi2zURHp26jQBfprPycE+G160bWet2HkFtDiI9ClchtdOdlFuIxcHDjryn7GjkeA2wX7MmYpca/yzK3mE//qVhnk8y/oCZR2dGUbN0jiL41hxvMZ6jWDyCuumD2YPAzzW/V4BjCrbPEc5W2rqM0Tk5YRD7x+s87Mh7yo5GTvErbNdsOzLOqbqLi7JXrVd7f5jnTjpXd+t4BDOR+fZ6RvO7o0dDFaPGNbv9qjjglzcewXv0DsN/peEfZ41CN0ZxuvXCZNqrx1vI5IUq4mF/3mtmcE2wX7NXIy0a9RmOIu2d7V/jfOhcULefZGMzo8bxAe1/VlP1diHTVuMSOXPC8X/+0eU4cqFXApxuvTGN4Jqf3WUZkjFF5L0b6BzEno8s+l1HZ7m1LYNrgv2anYKU+Y/4x0Xaq7bdeSHM836CK7lNPII1hSHDf5TOWsT7NDc1O+Is2m/a0KZXDiSpAfXLT+EZ7t1qnefgdCtbt6S10aL0SpoOz3CLk/fySI+yo5EwXJL02qqZ4hI/3pX+cZH2qjWiodta3YFs+RGFR/BGDxn+o5pfU3O/2XfbjfTh7vaPq7oAq2p4BHWL28/udCsXvf/9ILK9js4AwRl2NurlkS7vQbbpUXY0UoRNgs2a3ebHrX/upih7z/XPC/1Ewmo6m746HsFMNGT4j2p+Tc19MrJAr0V7HGgncFgXYx3Z4NFZOxtB1pf8wnDXW7xOt3IxZxy9hOwZdyWyY8IOgjOO4urV9P283Cxv45Eu70G2+U/Z0UgRNgl5aQa96/Yo0v2tf9wzT3t1LkF2FwlFLS6K+nCPZxg5ZPiPan5Nw+9ttGe9vUznm7Vf+BJSi3gO+Yb8COXv6eQR1G0LnYVBC9nOf5YR1ulWLpeTbI1FHL3UDsQXpbQpyb3ySJ/3ILv8p+xopAibNG/koRn0ptsk5KWytUB7dW5CdgQBOicAbEVWreZRuMykPYVvENn1oB9pIDf5DKT/cwxZ63RUiTaZXIwsJNuBTAjZiwy6no5s3a/jdCuXNciDfivy7aD9iGZPIwXgRuP8OHoNI8+5GTYuDdLfqyR5D+zIfw2SpTcPzaA33YaRls6jBdqrMx+ZQxBJk+wXOB2D1BRayCLVFrKfVlgNp984DKkVVOUzETpOt2rpFkevI5F0XZfhdfO6V7bmvyzTGzeNeeiWhjSaTEVaW0PjRbwY2R7C3L49LQPI1yFbyD5whyATGFrIwGKRO6SWwQwkrYvKNiQhTrdq6RZXrxVIP3+WCzXzuFc257+s0pskjXnolpS0mlxAzE1JfwWc2bOZgtob6EXaH9Y6GdmEroX0L/YzdyM1g6iNJW3F6VYt3crUK497ZXP+yyq9NqcxjLT2bkRmtXVlEdK35+iNNchnJk4o2xBHIpxu8anbvapbentlNtI6it2DthbpdnOk43pkavrcsg1xJMLpFp+63au6pTcLbifhZLUpyC6l5jflHd25EZdBq4jTLT51u1d1S28WLEGmoifmOOBz2drS99yEzPc/CxkIVD+36NJunG7xqdu9qlt6s+Bo5NMKqSepuZubjKhFWNeUaJOjO063+NTtXtUtvVng3hsOh8PhcDgcDofD4XA4HA5H/vwPfgjwBCSmEv4AAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\left( \\mathbf{\\hat{n}_x} - \\frac{3 \\operatorname{cos}\\left(q_{2}\\right)}{2}\\mathbf{\\hat{b}_x} - \\frac{3 \\operatorname{cos}\\left(q_{2}\\right)}{2}\\mathbf{\\hat{c}_x}, \\ \\frac{3}{2}\\mathbf{\\hat{b}_x} + \\frac{3}{2}\\mathbf{\\hat{c}_x}, \\ l\\mathbf{\\hat{c}_x}\\right)$"
],
"text/plain": [
"⎛ -3⋅cos(q₂) -3⋅cos(q₂) , 3/2 b_x + 3/2 c_x, l c_x⎞\n",
"⎜n_x + ─────────── b_x + ─────────── c_x ⎟\n",
"⎝ 2 2 ⎠"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pc.partial_velocity(N, u1, u2, u3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This also works for angular partial velocities:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left( - \\frac{3 \\operatorname{cos}\\left(q_{2}\\right)}{2 l}\\mathbf{\\hat{n}_z}, \\ \\frac{3}{2 l}\\mathbf{\\hat{n}_z}, \\ 0\\right)$"
],
"text/plain": [
"⎛ -3⋅cos(q₂) , 3 , 0⎞\n",
"⎜─────────── n_z ─── n_z ⎟\n",
"⎝ 2⋅l 2⋅l ⎠"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B.partial_velocity(N, u1, u2, u3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The convenience function is doing this behind the scenes:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[ - \\frac{3 \\operatorname{cos}\\left(q_{2}\\right)}{2 l}\\mathbf{\\hat{n}_z}, \\ \\frac{3}{2 l}\\mathbf{\\hat{n}_z}, \\ 0\\right]$"
],
"text/plain": [
"⎡ -3⋅cos(q₂) , 3 , 0⎤\n",
"⎢─────────── n_z ─── n_z ⎥\n",
"⎣ 2⋅l 2⋅l ⎦"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[B.ang_vel_in(N).diff(ur, N) for ur in [u1, u2, u3]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Angular Accelerations"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle - \\frac{6 l \\left(\\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} - \\dot{u}_{2}\\right) + 9 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)}{4 l^{2}}\\mathbf{\\hat{n}_z}$"
],
"text/plain": [
"-(6⋅l⋅(cos(q₂)⋅u₁̇ - u₂̇) + 9⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂))\n",
"──────────────────────────────────────────────────────────── n_z\n",
" 2\n",
" 4⋅l"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"alpha_B_N = B.ang_acc_in(N).subs(qdots).simplify()\n",
"alpha_B_N"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAADAAAAAZCAYAAAB3oa15AAAABHNCSVQICAgIfAhkiAAAAjtJREFUWIXt1k2IjWEUB/DfkKRhYTYm+WqUhiwMtiRZKV+xIBZ3x0KTREqkyEbZKCSRLCwkigWSxI6YGQkRGhYUIiXfXIvnzMw7t3dyX+6NNP96Os/5eM/H85x77sOvMTnWP4mGKmy6g06qcew2LIn9Sdyrsf9edOsrolYYhcf4gTLuYkSNY9QVx6XE27El9vv/akYFsFJKeEdGtidki/5KRoOoIbZKV7ksRzcxdKcL+izFdz2rBevQhY94jRMY+1sZV+BUBJmQo1seuu0FfZb0L+BaBd+z7mN40YSHVPCzpBN5lmM7O2hn0SAVmIPL2IU7GXkrlv6J4ybpJC4MoL8U+qJXXdL/pE/r+wNtwreMbm9B3/1uYGbQmwPYzsRLPA9+Ls4FX8aKKmMeDHt4I914D0ZX6aMX2QJmBb2VY9cinVZHRtaI21hfMGZ3Bf95gHyqQvaDtqAdOXYLg2b7/zy2KT6Vvlbw5RybxfraakHI5ut7evROyWwBreH8aYWz4Vgb+7zi6oGzOBT7w2jGEem3cwRnegyzBXzBMEzJyBpxFNOD/9MJVAQb8UB6BXcFfYQNWaNsAReDXsUB6cH1UOr9F3iHJ3VMuBIfsBrfMUZqnzV4nzXKFrAb+6QeK2EadmKVdIVd8vu1nhiHobEfIg2TuqDIGK0WzXgVvjuDvsX4WgUYiRmxytgU+7xnSFE0SFOujBvSILke/BW/MW7zME/+m+ZYDXy3h69PmBqyVunxV8bmGsQYxCD+C/wEPraKwXENWa4AAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\dot{u}_{1}\\mathbf{\\hat{n}_x}$"
],
"text/plain": [
"u₁̇ n_x"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a_Pab_N = Pab.acc(N).subs(qdots).simplify()\n",
"a_Pab_N"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\frac{l \\dot{u}_{2} - \\frac{3 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)}{2}}{l}\\mathbf{\\hat{b}_x} - \\frac{l \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) \\dot{q}_{2} + \\operatorname{sin}\\left(q_{2}\\right) \\dot{u}_{1}\\right) + \\frac{3 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{2}}{2}}{l}\\mathbf{\\hat{b}_y}$"
],
"text/plain": [
" 3⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂) ⎛\n",
"l⋅u₂̇ - ────────────────────────────── -⎜l⋅(u₁⋅cos(q₂)⋅q₂̇ + sin(q₂)⋅u₁̇\n",
" 2 ⎝\n",
"────────────────────────────────────── b_x + ─────────────────────────────────\n",
" l l\n",
"\n",
" 3⋅(u₁⋅cos(q₂) - u₂)⋅u₂⎞\n",
") + ──────────────────────⎟\n",
" 2 ⎠\n",
"──────────────────────────── b_y\n"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a_Bo_N = Bo.acc(N).express(B).simplify()\n",
"a_Bo_N"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\frac{2 l \\left(2 l \\dot{u}_{3} + 2 \\operatorname{cos}\\left(q_{2} + q_{3}\\right) \\dot{u}_{1} - 3 \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} + 3 \\dot{u}_{2}\\right) - 3 \\left(2 l \\left(\\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} - \\dot{u}_{2}\\right) + 3 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)\\right) \\operatorname{cos}\\left(q_{3}\\right) + 9 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right)^{2} \\operatorname{sin}\\left(q_{3}\\right) - 9 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)}{4 l}\\mathbf{\\hat{c}_x} + \\frac{- 4 l \\operatorname{sin}\\left(q_{2} + q_{3}\\right) \\dot{u}_{1} + 3 \\left(2 l \\left(\\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} - \\dot{u}_{2}\\right) + 3 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)\\right) \\operatorname{sin}\\left(q_{3}\\right) + 9 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right)^{2} \\operatorname{cos}\\left(q_{3}\\right) + \\left(2 l u_{3} - 3 u_{1} \\operatorname{cos}\\left(q_{2}\\right) + 3 u_{2}\\right)^{2}}{4 l}\\mathbf{\\hat{c}_y}$"
],
"text/plain": [
"\n",
"2⋅l⋅(2⋅l⋅u₃̇ + 2⋅cos(q₂ + q₃)⋅u₁̇ - 3⋅cos(q₂)⋅u₁̇ + 3⋅u₂̇) - 3⋅(2⋅l⋅(cos(q₂)⋅u\n",
"──────────────────────────────────────────────────────────────────────────────\n",
"\n",
"\n",
" 2\n",
"₁̇ - u₂̇) + 3⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂))⋅cos(q₃) + 9⋅(u₁⋅cos(q₂) - u₂) ⋅sin\n",
"──────────────────────────────────────────────────────────────────────────────\n",
" 4⋅l\n",
"\n",
"\n",
"(q₃) - 9⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂) -4⋅l⋅sin(q₂ + q₃)⋅u₁̇ + 3⋅(2⋅l⋅(co\n",
"───────────────────────────────────── c_x + ──────────────────────────────────\n",
"\n",
"\n",
"\n",
"s(q₂)⋅u₁̇ - u₂̇) + 3⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂))⋅sin(q₃) + 9⋅(u₁⋅cos(q₂) - u\n",
"──────────────────────────────────────────────────────────────────────────────\n",
" 4⋅l\n",
"\n",
" 2 2\n",
"₂) ⋅cos(q₃) + (2⋅l⋅u₃ - 3⋅u₁⋅cos(q₂) + 3⋅u₂)\n",
"───────────────────────────────────────────── c_y\n"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a_Pc_N = Pc.acc(N).express(C).subs(qdots).simplify()\n",
"a_Pc_N"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Mass and Inertia"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAFkAAAAXCAYAAABgWeOzAAAABHNCSVQICAgIfAhkiAAAAzJJREFUaIHt2E+IllUUBvDfKKnDWGoT4aIpQRkzoxgNQaIgMIpEKnAjiFjRIkqIdrWooF2IC6FFQmFC9ocioSAaNy0MSqoZVBBcSAU1MdGUJZlZ1uLcD995ve/3zZ935rPhezYX7nPOvc89773n3PvSQdtwAKPoabeQ/xHW4188NhHjO3ARz8ykojmKDzCCxa0MB/Erumda0RzEBrGbn2tm1C928b7ZUDRHcRLfYn6jY17J4FF04Z2M8z3iK+3GOhzCGM6IY7I82d2CgyKnn8FHuLGuFUwBs6377eS3qdFRDvIm/IPPM87rUtuPI8nuNXyHh/A6tuCoyElv4BQ2i0LaLsy27s9Se2+O7MHfOF7h/KbYET/itkL/1fgl+Y5gY4FbIBZzEYumILgOzLbuJWm+ozmyP5GDFc4nE39/hhtK3PYMdzhxvZMUWxfaofuc+KiXYWMaNJePe8QxO10x6Bh+xlUZ7hR+m7TMetAu3d+LE4LxOflcanPH4/ZkezjDrcAyfIoLJW4xVmJ4SlKnj3bp7nYpnuOCPJra3PFoFI8vM9z6JtxAmuPrDPc8juEsfhIFqO68XbfuG7BfpII/ccLlBW4elroUz3FBHhGLXd1E7FdNxOa4gdSWxXaJe+QTWIttuA9PZ8aYDurU3SduXddiqyiie/B7yXe1WF/lKXhP5OVVpf5hnBdVt4xPks91GW5/4m6tmrCAfck+579zAv451Kn7Y3E9K197y3gk+T5VZbAtGTxZ6FuIv+SPFbH7v6ngjuEPhddPQh/2iuvimEgZF/BSye6A6urfCnXqvinp2DCBed8SRa+vymCByDdfFPoaf5dezdg3Jn8/wy0UgSs/bHrTHO+KFLEWa0Sgt5Zsh0SFX1YluAnq1P2gCFyrXbxEFLxDrcQ9mwQMtDKcInaIH1Bdhb6dac6Vhb6l4vr18gzpmAweEA+Ta1rY7RLruKvVgIvED44Ppy0tj81iVzwscv8uUXTLgd8iKvjy8gBtQK9IawfFybsZjxufs7vxg6hrE8LdeMHM/LTvwisiDYyK3Lxb3FevZNwpCt9Z8RwfxPUFfg1eFPfvDjrooIMOrlD8B2Fx6TKgUaQVAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left( m_{a}, \\ m_{c}\\right)$"
],
"text/plain": [
"(mₐ, m_c)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ma, mc"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGcAAAAfCAYAAAD6MNNVAAAABHNCSVQICAgIfAhkiAAABINJREFUaIHt2VmoVVUcx/GP48XKRskhg9S0SDQ0yYoUDeypAdK0h4oTSkFUVESCPWQvWdlDRAMlZWZCNJlJJRU2+FBhRFLZoGVmsw1O2WB6e/ivw9n33HPPueec2z3eOF/Y7L3X3vu/fmv6r/9au5eDmwm4MF0/hY0N1FILPV1/hwzEFziAVnyMAQ1VVB09XX9ZHheFug7z0/X9DVVUHT1df4dcIgpzaybtrpR2fkMUVUdP19+kSZMm/2dywh/njxMaKaZKcv4j7b1LpL2aMpneVZk0qY1SjTNRNM773aylUVyEF7Edf2ILHsKYRoqifeOMwtHYhJ3dL6dbGYgX8KxwRU9gEd7CxWLReE2jxJVijhg1K7o535y2fnsErsIG/IGfsBTDuii/PnhFjJS56FX0/AgsT1qurGArp5u0L04Z3FCvoSrJaVvA1UX3+eNrHNcF+V2d7M0RK/lsA7RgFWbhaexVvmK7TfvrydCUeozUQE77wqzGbcLNZNOf64L8PsMaDBIu/ACuQD+Fyn1YNMpfSUdDtffCDuzHYbUaqZGctoV4JPOst0KnaRUVOaSOvIYlO/PS/fFig3I/1qdnyxTm47V4sxHaswHBGOFrP8WeTPraosx/w0sY3tlMamBZ5vqA8P95eomIslYGp/PWdN6Gc/EPJmGdGEUH0vOvVNcZukx7tnEmpfN7Re9MwAIMFT5zJiYrP9Tr5ccK90fVYXt3Oh+Zzn1wO/rjb5wl5huZ93brPF2mvVLjjBLi3sAP+E6MpI04tLOZ4BThh3eK6OU+5f9tDK5wv0OEv6Um3lYsLGN7C37FOaJhlmM2nsF4Uc4VYv3TH1O177Dl6Ix21epflx6cmUmbjX0KFdkflwq3N7WTYk8VjbIIo0WwsVVEhnlyqvfbQ/FO5vgy8878CpruEWHuFGzGSvRNz8aITviAwn+YM8rYqkW7avT3FkM32xBwZzK4Jx378bP2Wzvn4cEOxL+LJUVpN4uIqaMC5iOehWIyzqY/XyKPwaKSW/G2yn8cB4nQdjPOFlFaluGiE+7DoxVs1au9ov6x6cGGoo9eE8P9xHRMFiHoJjGK8ixQerF2UrI7rij9euFeOipgcRCSP74R0VWWgWKrqVU0+DEldJRiHL4VnW4xZuB04S1WKVRySwU79WjvlP7LtR+S8IuoyCzT0rvjM2lP4m7hmz9RaIyZIgrqqy1LtO1FxQUciWvxoVjFb8dj2i/iWhQq43vV7wgPESNjb1H+21L+pfYei6lVe136R6SPiueWuSk9u2reiBszYvPh4wzhFg/JvDsUv4v9q3roLVbwrdglospaGSACouk4uU5dnaUu/bPSh6NFDxuJyxR6Qp4W4aLyvWwiXk7Xh4vo7N70/TThOldqv59VLfl9wFYRrmYn13llvjtYqKi/2N1kOS2dP0/nHWLSukXbSXKscGX5RdsEfJCud+EC0TgfiTB1Ke5IouohO2kem448a+q03R10i/6c2FXoJ6Kg9erbXmmSKDdyOss48U9kfbJ3kxghTZo0adKkSZMewr+5Waw5kGnbQwAAAABJRU5ErkJggg==\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": 38,
"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": 39,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\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": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rab = (F - k*q1 - c*qdots[q1.diff()]) * N.x\n",
"Rab"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAFQAAAAcCAYAAAD/YJjAAAAABHNCSVQICAgIfAhkiAAAA+BJREFUaIHt2FuIVWUUB/DfaOmUzoNdrSAlpYuUpUNlDz2EFb1EEEQFBuchbCish8IuEEHQw2T1Yga9xFSWJVgWFURFdr+ZiaETiTFKlmnaTczMnB7Wt5l99tlndA5nOEydP2z23v+1v/Wtb33rW2ud06GNDHNwTXpeiU0ttGXMowtbcAiD2IhjWmrRGMczwpG34+70vKylFo1h3CAc+ECOezhxV7fEojbaaOP/jE7cI9qO/diK+zAef2BD4fvLRL56BHOxGnvwG17G1PTdLDyPnUn2Gk5vwL5Kmi+7zkAP1uNP/JzmObUB3U3HJHwiDF2LXvQJxz6b+KcLY+5M/KvYh1VYgq8T/4YoDnvTN0vwRZKtacDGimqHvl94z65+TGxAf1OxXBhzPzpy/HxDht5RGPNc4ndgdo7vwi84iB9xSU42AdtE39g5Qhsrap33Nh4UpyfPXz9C3U3FvGTE6jryrUl+aYHvT/xVJWO+SrIFJbK3kuz4HPdQ4odDRbXTXjK0+ceJDcxkjx5G12ExoDz8613Lc2OzI31hHd3rRER15bhJ+Aff1RmzB7txdInsW/xe4F4XuXg4VFSv4YqCfEdO9tRhdNXgqML7FpHvjhQ/5J6vFItfW+fbU7BZFKYM52Oc8qiajikigv4uyCZjBj4q8BdgxRHYncdA4f2v3PO4Eeqqcej8kSpI6MRJolIOlsjPFtV6TYGfm+5lm9A9jGyOWOy6HHeiqMyH8I7IuZtxCz4dxvbiZpXZv0L8ovpMpLYMH6d5XsCNNLADdXAwXVPqyBen+7oCnzn0y5Ix3cPI5pToy7i7RIGZK07Qi2oDZ6R4It0vFu0bnGbIucXOpSnYKHa3GOW3GcpJRdl6ccQmlOh7M405oUTWl2Tn5rjFSde0HDc7fTczx1VU59DpBd0DOVlfjs86gCxHL0rv20WP3XQsSBPsFzvWK3LcTlHJD6mO4Ik4oH7O3aU2v2XYIHrW/EJWiBYsjxnJpjNzXEVjDu1J3E8i4t9L7711bGwKFonCdkD0ictExOxWe9y7k0FPluiZlmSrSmQTRd4r5sV+cdzzuA6/qj7yFY05dLL4hTaIhaI7GcQ5JTaOKm5KExcX20wcK3L4vTmuAx9iaRPneVysZW+6f95E3VUYL6p8EZenybeJHR4tzBNRu0kUjpmiRx4QzXqzMEt1dN/aRN1VOE/kzlfwmIiKD9KkuwxV4NFCD77BtWLzsv8Epg43qEG8a6hWNHOzqnCWaMC3p4n2iarfi5NHa9IWYalw6MpWGzLWsVD8T3FAdCwXtdacsY8+EZnf4+bWmtJGG2208d/Ev2DSKYOWooAgAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle - g m_{b}\\mathbf{\\hat{n}_y}$"
],
"text/plain": [
"-g⋅m_b n_y"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rbo = -(mb*g)*N.y\n",
"Rbo"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAcCAYAAAAdvIO5AAAABHNCSVQICAgIfAhkiAAAA61JREFUaIHt2FuIlVUUB/CfWjqhEzhG94vUQ2U3VLoRPoQVEYQPBfVgcB5SpLIeim4QQW+TFoEZ9BJTmYJgWUTRBbrRhTIVy4TCGCVr0jSqwWwyp4e1T+c733xnTmfmHA5T5w8f37fXf++11t577b3WOZN0AHOxKH2vx1dt9GVCoxs7cQTD2I5j2urRBMZzYhHvxH3pe3VbPZqguFks3sMZ2aNJdn1bPOqggw7+b+jC/aK8OIRdeBBT8Bu25fpfKe6olZiHjTiAX/ASTkz95mAt9ibuVZzeoG+lZKv8nIll2Irf8VOycXKDeluC6fhYOLoJvegTi/p8kj+bG3N3kr+Cg9iAFfgiyV8TyWAw9VmBzxL3boP+lVQv5vu5dvnZgWkN6m461ghnHsKkjHyhiqN35ca8kOQDuDAj78bPOIwfcHmGm4rdojbsasC/kpEL9zYeEScmK7+pAb1Nx2XJiY01+F2JX5CT70jyawvGbEnc4gLurcTNasDHkuoFe1Fl03vExpW5xxrQW4h+xWFf61mTGVs+xhfX0L1ZRFJ3RjYdf+HbGmMOYD+OLuC+xq915pNHSbX/V+f4gQz3TIO6HZVr7xT327/F95nva8TEN9XoexK+EUmojIswWURZHrMxU0TPnzluBs7Chw34WoT+XPuPzPfkceoeM7rEbm6pwZ+T+HU5+R1JvqRgzA2Je6CAW5C4J3LyU0XCGxBB8aXq6CupjszZufH9Ga4vydal9ie5vh/l59Ss1T+cnpk1+HvTe3NOPi+9Py8YM38Ubm6BvtPEhHtwo0hmj6s+CWPBU+l9qSjP4BSRIxhZnTQF28VOLczJb1fZ7Ty3VRytqQX63khjjivg+hJ3fkb2ujj2owVISeORSSXTr0zt5am9R9TPTcfiZOCQ2K1eMbm9ImMfUR250zCk9h27z8g7rYxtoiYtT+SMZPuSOj6WjG0xlyXZjyLPvJfavXXsjQvLRRIbEnXgajHR/UYe8fnJoacL9JQXZ0MBN00kpOwdtkhcM/WurZKxLeYM8atrGEtFBTKMc+vYazpuSYbvaaGN60TkH9tCG0+KeQym96etMjQFxxfIr0rGd4vdbRVmiZp0Lc4T1cMS1XfqeDFHdVTf1kTdVbhA3JUviwy6Ch8ko/tUsm8rcYW4owfFz9A3FW/wePCOSl7oabLuf3C2KK73JEMHRXbvxQmtMtoGrBKLub7djkxkLBX/OQyJu7le1dDBKOgTEfkdbm2vKx100EEH/w38DWMJJyGXms6bAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle - g m_{c}\\mathbf{\\hat{n}_y}$"
],
"text/plain": [
"-g⋅m_c n_y"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rc = -(mc*g)*N.y\n",
"Rc"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAHgAAAAZCAYAAAD6zOotAAAABHNCSVQICAgIfAhkiAAABQdJREFUaIHtmX9snlMUxz+d6g+vpaZSNSb1I20iZL+KiAiVkSCIBFOJ7DWEGIsUMZEgJCZG+ANhWDoZmykqC7FlWfyeTvdDZWtkG52Ylo5FQ7tiqz/OuenT+977vs/zvE+7zt5vcvPc95xzzznPc+4999z7FlHAeMZ04GrtrwS2HURfCkgYE4GdwAFgCNgKlB9UjwpIFK8jgZ0PPKD9F5JU/iuQsuhNaqgxKUOHCWYi3+2WkPI3qPwjAdpTSrsyX2fqkbTQ5OAtUyO1+Ro5xNGLfIew7Q7gPaAbOHosHS1y0NYA5wAnAAMWbxtwElCBOH44IgXcb9GKgYeAv4GFjjHNQBXQpnJPjKJ/WVGLrN7FDl4K2A98PJYOjSLSyCS9KAFdU1VXew65TmAXcEQCNkNhgvV7LrKq33LITlP5jRZ9EvA+8oLPAUdG9KEYKSS+AfYBPcDzwFHAHxwaR4N6fdrfxsYK4GRglkVPMzKln4qk9S1IFt0DvAlMztfRduBfMosrkCAMATcGaOcCXUAfcG0MeyXAatX7NVJILAH6gQ+V/kYMvWGQJrkV/KLqui2H3CyVe9rji2mf4t7LO4HSuE6mkOB+6+E3q5E6/d2E7DkdxC+6FqvO+yz6hQy/1L0xdedCmuQC3Ka6ZuSQM7XLBo8vwbYWeAz5vkH67LhO1qqCNR5+B7JSKxlOyc3EP3yfrTpWe/g7lX9xTP25kCaZABcjaXQQyUi5MIBsQy5fTHuX4QL4WGThGd4zcR09TxW49t8y4B9gN5KSB/Cno0txp5dgawSWav98j54Nyp8UoM1jeKL1AeuBK0K8W1cIn4KtOYROg7AFlsFuJGBBpC37l1j8ngBvSQTfKA70zZGozCE3VWVLkY1+GfCKR+dnyBHLYCOwnJH7zm/As/r8wqPnROAHYG+A9hOwANiOzPA5QCtykdDh0QNS/B1j0aYh97xLkQkQxJYsumyELbAMysk8ftqw/RkM9O3CODQmIzPkcwfvTuXNAVZp/54QOitV9hqLXqb0TZ5xZyr/nRA2fgduDyFnI00yKTpsgQUSnAPI9uPyxbQai99FZnapwZ+BHjUDgyu4G7mhqSMTpnhoB1qAT5C94Edkv/DBjLNn935tlZ5xD+vTNwFAzpLXIzdDX2aRG23M1GeYFVyHZJ4oGcKHQaS4M6gCTtG+N0O0IDPgdIu+CTm6mAN6NTKr+pG924cFyBnOhU611RCgFSHBNTPxcse4s4A/kX1sr0cmDNLkv4KjFlg3q827PL5EWcFBHA/sUP56shS+jSo0L0ArQY5DbZbsGcgH7iVzQhisxF+Vm5ftB14DFgGb1dGtyqt2jCtRe/XIteAeJKVHRZr8Axy1wFqOTMwpHl/iBHgisgCHgO/wZ0VAPl4PI4Np/gl5ySHfgAR/O3Ccg78D992sQRNSSA3qcxFSDPUCP2dzNIC1wKshZYNIk3+A56qOl0PIViCrvTWLL1EDXAqsU3q3Y5wTD+qA6WGEs6ACKSiuizhuitr/IKT8OqSqH++4G3mvCxLSNwF4W3X2ESFeZciF+Ko8HWhQ46dFHHeVjnvcwXsS+UA1yF68EJlEl8X2cmxQjmSklgR1zmZ4Vf8CfBVotxqhYsfAfcBNSIBSwF8xHZiB/FnwfcRxZiZudvCqkdVarbo7kOD6bsPGC2qQa9nmBHUGC6kqbQYfJWgncbTi3ocKKKCAAgoo4P+E/wAoD4zmtYXMVQAAAABJRU5ErkJggg==\n",
"text/latex": [
"$\\displaystyle (k_{T} q_{3} + T)\\mathbf{\\hat{n}_z}$"
],
"text/plain": [
"(k_T⋅q₃ + T) n_z"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TB = (T + kT*q3)*N.z\n",
"TB"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generalizd Active Forces"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAJMAAAAXCAYAAAAPxH3bAAAABHNCSVQICAgIfAhkiAAABABJREFUaIHt2l2IVVUUwPGfZjqlRGqE9IGiYVFBOlNERjFWJNRDH1QUQVoQQkSF0EsP9VBJZJGFRBSRlkFBhVFSVlAEPaRmX/RBJlmUU1hmX2NWag9rX+Z6OOd6vHOv5zrcP1z2PXutvfdaZ9bea51zhy5dulTOIuzBNVUb0imMrtqAg5je1H5QqRXt502xaYo+y2uKYyowbqTQiz+wsWpD2kwv/sO9BfK3DqAtI5Lx2IV3KrajDAvECdLfxNgZaeyGMsrtSnP9eB7fYycGsAaX1uncIQy9LGf81CR7qU32DZdZ4t5lU9xEvCxsX4pD62RjcAs+xt/4EctwOH7D5+01uSlOT+26MsrtSHNLcSt+xmoRSFNxIeZgVdJrVHPUnPiwDfa1gr7U1tt+pthAk3AlXqiTjcUr4h6sxyM4CjdgOo7Aq+01uSkqDabFIpBexHz8VSebgMl1130i4L7LmafTgym7ERbhPnwpAuarjP6y1H87HqjrX2EoVZZKJQeY2t9hDo7LyP60ty8tZbaoI9aJndiISSIVvF4grz1BHNMy61rLJ/hdbI5aWluOw3J0z0jyNQVzbUry81puZbBAczXTKGxX/BT39r4m2NxgcN5nZd3YZ1Lf+SUMvSDp3lMg/wU/ZfrOFaliSxp7RYl1GJ5PefTgX/yQ5t6BGxvor0jznl0gX5vkE9N1s36y/74ubzDXiUnn3bKLZ9PcJlEclmVL3fd5+FWJiJVfc9SYLk6u7Kk1XhSvT4k0Wpbh+JTHaeK+jRMn50o80UB/ntgc7xXIj8U34t7RvJ9EvXpkpm8WLhFBvTkj+6jBXJWVGj0iissu/FzSn5ojuznJFjcYv787tpXclNafL06QPbitQLd2X4rqoVOTvChoWuHnAs2luYcM+VmKVr0aGJXao0vqnyRSxbeZ/nFYmL53YkHKUPG9HleL0/VBXJ6juyt9JufI4M7UdqKvtZOpEts+FZF8VY5sJg6pu67VCTPr+sbjWUP5fEaDtao8mTZg0JA/U0T6GMRZOfpfCHvn1vWNEoFU8/WigrWqOplGi7f7O1T0K8nFYhfuFu+X7sfjInAGMrp3CwcH8CieFgXta6Jm2W7otMujqmAai3/wfqb/ZFHzbMUJGdn1wt5BPIklohz4Gp8l2ZSC9aoKplPSmLXDXHtYnCMCaZtIYwN4A9dm9HrwsAicQZEyForicbd9/0xRVTD1pbUfy5HNFYG2UbyQrGeRKLJ3pnaJ8HWrxgV/VcF0nWI/RxxVprlWcbzwY3UDnYPKz4PpvwYm2DuFTBOPvdvkv0XvdGanNlvgjjQ/O5J++//irZO5S9iffQrsN7L87HIAWCWCZFrFdnTp0qVLly5d9s3/9cg1OxSeXjUAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle - c u_{1} - k q_{1} + F$"
],
"text/plain": [
"-c⋅u₁ - k⋅q₁ + F"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.partial_velocity(N, u1).dot(Rab)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAA4AAAASCAYAAABrXO8xAAAABHNCSVQICAgIfAhkiAAAAM5JREFUOI3N0rEyQ0EUxvEfJcMVWhoZ8Qpq75PnoDJ0Kl5BK0U67yAUiUYmpZGYoRDNuePOkXszYxS+5ps95/x3Z3c//lC7uMIz3jHCOVpNUBsTzHGDU/RjfY+dOvA2hrqpfhb1y0XQfjSHWE29DUwxw7o0cBzew2cCX3GHNRxl8DD8oeYaj+GdDBbhLzVgWd/K4DKthM8zWO5YWKzN6lwVHIR3asCD8B9v0Lb8O97Ed2T9KgDlqdXInfiO3EBD5GAP1xjjA0+4wHYT9I/1BRgnMa7SDNsAAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle 0$"
],
"text/plain": [
"0"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Pab.partial_velocity(N, u2).dot(Rab)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle - g m_{b} \\operatorname{sin}\\left(q_{2}\\right) + \\frac{3 \\left(k_{T} q_{3} + T\\right)}{2 l}$"
],
"text/plain": [
" 3⋅(k_T⋅q₃ + T)\n",
"-g⋅m_b⋅sin(q₂) + ──────────────\n",
" 2⋅l "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Bo.partial_velocity(N, u2).dot(Rbo) + B.partial_velocity(N, u2).dot(TB)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"u = [u1, u2, u3]"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[ - c u_{1} + g m_{b} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{2}\\right) + \\frac{3 g m_{c} \\left(\\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) + \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2} + \\frac{3 g m_{c} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2} - k q_{1} + F - \\frac{3 \\left(k_{T} q_{3} + T\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2 l}, \\ - g m_{b} \\operatorname{sin}\\left(q_{2}\\right) - \\frac{3 g m_{c} \\left(\\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) + \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)\\right)}{2} - \\frac{3 g m_{c} \\operatorname{sin}\\left(q_{2}\\right)}{2} + \\frac{3 \\left(k_{T} q_{3} + T\\right)}{2 l}, \\ - g l m_{c} \\left(\\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) + \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)\\right)\\right]$"
],
"text/plain": [
"⎡ 3⋅g⋅m_c⋅(sin(q₂)⋅cos(q₃) + sin(q₃)⋅cos(q₂))⋅c\n",
"⎢-c⋅u₁ + g⋅m_b⋅sin(q₂)⋅cos(q₂) + ─────────────────────────────────────────────\n",
"⎣ 2 \n",
"\n",
"os(q₂) 3⋅g⋅m_c⋅sin(q₂)⋅cos(q₂) 3⋅(k_T⋅q₃ + T)⋅cos(q₂) \n",
"────── + ─────────────────────── - k⋅q₁ + F - ──────────────────────, -g⋅m_b⋅s\n",
" 2 2⋅l \n",
"\n",
" 3⋅g⋅m_c⋅(sin(q₂)⋅cos(q₃) + sin(q₃)⋅cos(q₂)) 3⋅g⋅m_c⋅sin(q₂) 3⋅(k_\n",
"in(q₂) - ─────────────────────────────────────────── - ─────────────── + ─────\n",
" 2 2 \n",
"\n",
"T⋅q₃ + T) ⎤\n",
"─────────, -g⋅l⋅m_c⋅(sin(q₂)⋅cos(q₃) + sin(q₃)⋅cos(q₂))⎥\n",
"2⋅l ⎦"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Fr = []\n",
"\n",
"for ur in u:\n",
" Fr.append(Pab.partial_velocity(N, ur).dot(Rab) + # particle\n",
" Pc.partial_velocity(N, ur).dot(Rc) + # particle\n",
" Bo.partial_velocity(N, ur).dot(Rbo) + B.partial_velocity(N, ur).dot(TB)) # rigid body\n",
" \n",
"Fr"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}- c u_{1} + \\frac{g m_{b} \\operatorname{sin}\\left(2 q_{2}\\right)}{2} + \\frac{3 g m_{c} \\operatorname{sin}\\left(q_{2} + q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2} + \\frac{3 g m_{c} \\operatorname{sin}\\left(2 q_{2}\\right)}{4} - k q_{1} + F - \\frac{3 \\left(k_{T} q_{3} + T\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2 l}\\\\- g m_{b} \\operatorname{sin}\\left(q_{2}\\right) - \\frac{3 g m_{c} \\operatorname{sin}\\left(q_{2} + q_{3}\\right)}{2} - \\frac{3 g m_{c} \\operatorname{sin}\\left(q_{2}\\right)}{2} + \\frac{3 \\left(k_{T} q_{3} + T\\right)}{2 l}\\\\- g l m_{c} \\operatorname{sin}\\left(q_{2} + q_{3}\\right)\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ g⋅m_b⋅sin(2⋅q₂) 3⋅g⋅m_c⋅sin(q₂ + q₃)⋅cos(q₂) 3⋅g⋅m_c⋅sin(2⋅q₂) \n",
"⎢-c⋅u₁ + ─────────────── + ──────────────────────────── + ───────────────── - \n",
"⎢ 2 2 4 \n",
"⎢ \n",
"⎢ 3⋅g⋅m_c⋅sin(q₂ + q₃) 3⋅g⋅m_c⋅sin(q₂) \n",
"⎢ -g⋅m_b⋅sin(q₂) - ──────────────────── - ─────────────── + \n",
"⎢ 2 2 \n",
"⎢ \n",
"⎣ -g⋅l⋅m_c⋅sin(q₂ + q₃) \n",
"\n",
" 3⋅(k_T⋅q₃ + T)⋅cos(q₂)⎤\n",
"k⋅q₁ + F - ──────────────────────⎥\n",
" 2⋅l ⎥\n",
" ⎥\n",
"3⋅(k_T⋅q₃ + T) ⎥\n",
"────────────── ⎥\n",
" 2⋅l ⎥\n",
" ⎥\n",
" ⎦"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Fr = sm.trigsimp(sm.Matrix(Fr))\n",
"Fr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Generalized Inertia Forces"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [],
"source": [
"Frstar = []\n",
"\n",
"for ur in u:\n",
" Frstar.append(Pab.partial_velocity(N, ur).dot(-ma*a_Pab_N) +\n",
" Pc.partial_velocity(N, ur).dot(-mc*a_Pc_N) +\n",
" Bo.partial_velocity(N, ur).dot(-mb*a_Bo_N) +\n",
" B.partial_velocity(N, ur).dot(-alpha_B_N.dot(IB) +\n",
" B.ang_vel_in(N).cross(IB.dot(B.ang_vel_in(N)))))\n",
" \n",
"Frstar = sm.Matrix(Frstar)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"Frstar = sm.trigsimp(Frstar)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}- \\frac{9 I_{B_bo} \\operatorname{cos}^{2}\\left(q_{2}\\right) \\dot{u}_{1}}{4 l^{2}} + \\frac{9 I_{B_bo} \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{2}}{4 l^{2}} + \\frac{27 I_{B_bo} u^{2}_{1} \\operatorname{sin}^{3}\\left(q_{2}\\right)}{8 l^{3}} - \\frac{27 I_{B_bo} u^{2}_{1} \\operatorname{sin}\\left(q_{2}\\right)}{8 l^{3}} + \\frac{27 I_{B_bo} u_{1} u_{2} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{2}\\right)}{8 l^{3}} + l m_{c} u^{2}_{3} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) - \\frac{l m_{c} u^{2}_{3} \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2} + l m_{c} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{sin}\\left(q_{3}\\right) \\dot{u}_{3} + \\frac{l m_{c} \\operatorname{cos}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) \\dot{u}_{3}}{2} + \\frac{3 l m_{c} \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{3}}{2} - m_{a} \\dot{u}_{1} - m_{b} u_{1} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{2}\\right) \\dot{q}_{2} + m_{b} \\operatorname{cos}^{2}\\left(q_{2}\\right) \\dot{u}_{1} - m_{b} \\dot{u}_{1} - 3 m_{c} u_{1} u_{3} \\operatorname{sin}\\left(q_{2} + q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right) + \\frac{9 m_{c} u_{1} u_{3} \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}^{2}\\left(q_{2}\\right)}{2} + 3 m_{c} u_{2} u_{3} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) - \\frac{3 m_{c} u_{2} u_{3} \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2} + \\frac{3 m_{c} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{sin}\\left(q_{3}\\right) \\dot{u}_{2}}{2} + 3 m_{c} \\operatorname{cos}\\left(q_{2} + q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} - \\frac{9 m_{c} \\operatorname{cos}^{2}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) \\dot{u}_{1}}{2} - \\frac{3 m_{c} \\operatorname{cos}^{2}\\left(q_{2}\\right) \\dot{u}_{1}}{2} + 3 m_{c} \\operatorname{cos}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) \\dot{u}_{2} + 3 m_{c} \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{2} - m_{c} \\dot{u}_{1} - \\frac{3 m_{b} u_{1} u_{2} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{2}\\right)}{2 l} + \\frac{3 m_{b} u^{2}_{2} \\operatorname{sin}\\left(q_{2}\\right)}{2 l} - \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{2} - q_{3}\\right) \\operatorname{cos}^{2}\\left(q_{2}\\right)}{8 l} + \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{2} - q_{3}\\right)}{8 l} - \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{2} + q_{3}\\right)}{8 l} + \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}^{3}\\left(q_{2}\\right)}{2 l} - \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}^{2}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right)}{8 l} + \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{cos}^{2}\\left(q_{2}\\right)}{4 l} - \\frac{9 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{2}\\right)}{2 l} + \\frac{27 m_{c} u^{2}_{1} \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}^{3}\\left(q_{2}\\right)}{8 l} - \\frac{27 m_{c} u_{1} u_{2} \\operatorname{sin}\\left(q_{3}\\right) \\operatorname{cos}^{2}\\left(q_{2}\\right)}{4 l} + \\frac{9 m_{c} u_{1} u_{2} \\operatorname{sin}\\left(q_{3}\\right)}{4 l} + \\frac{9 m_{c} u^{2}_{2} \\operatorname{sin}\\left(q_{2} + q_{3}\\right)}{4 l} + \\frac{9 m_{c} u^{2}_{2} \\operatorname{sin}\\left(q_{2}\\right)}{4 l}\\\\\\frac{9 I_{B_bo} \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1}}{4 l^{2}} - \\frac{9 I_{B_bo} \\dot{u}_{2}}{4 l^{2}} + \\frac{27 I_{B_bo} u^{2}_{1} \\operatorname{sin}\\left(2 q_{2}\\right)}{16 l^{3}} - \\frac{27 I_{B_bo} u_{1} u_{2} \\operatorname{sin}\\left(q_{2}\\right)}{8 l^{3}} + \\frac{3 l m_{c} u^{2}_{3} \\operatorname{sin}\\left(q_{3}\\right)}{2} - \\frac{3 l m_{c} \\operatorname{cos}\\left(q_{3}\\right) \\dot{u}_{3}}{2} - \\frac{3 l m_{c} \\dot{u}_{3}}{2} - m_{b} \\dot{u}_{2} + \\frac{9 m_{c} u_{1} u_{3} \\operatorname{sin}\\left(q_{2} - q_{3}\\right)}{4} - \\frac{9 m_{c} u_{1} u_{3} \\operatorname{sin}\\left(q_{2} + q_{3}\\right)}{4} + \\frac{9 m_{c} u_{2} u_{3} \\operatorname{sin}\\left(q_{3}\\right)}{2} + \\frac{9 m_{c} \\operatorname{cos}\\left(q_{2} - q_{3}\\right) \\dot{u}_{1}}{4} + \\frac{3 m_{c} \\operatorname{cos}\\left(q_{2} + q_{3}\\right) \\dot{u}_{1}}{4} + 3 m_{c} \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} - \\frac{9 m_{c} \\operatorname{cos}\\left(q_{3}\\right) \\dot{u}_{2}}{2} - \\frac{9 m_{c} \\dot{u}_{2}}{2} + \\frac{3 m_{b} u^{2}_{1} \\operatorname{sin}\\left(2 q_{2}\\right)}{4 l} - \\frac{3 m_{b} u_{1} u_{2} \\operatorname{sin}\\left(q_{2}\\right)}{2 l} + \\frac{27 m_{c} u^{2}_{1} \\operatorname{sin}\\left(2 q_{2} - q_{3}\\right)}{16 l} + \\frac{27 m_{c} u^{2}_{1} \\operatorname{sin}\\left(2 q_{2} + q_{3}\\right)}{16 l} + \\frac{27 m_{c} u^{2}_{1} \\operatorname{sin}\\left(2 q_{2}\\right)}{8 l} - \\frac{27 m_{c} u_{1} u_{2} \\operatorname{sin}\\left(q_{2} - q_{3}\\right)}{8 l} - \\frac{27 m_{c} u_{1} u_{2} \\operatorname{sin}\\left(q_{2} + q_{3}\\right)}{8 l} - \\frac{27 m_{c} u_{1} u_{2} \\operatorname{sin}\\left(q_{2}\\right)}{4 l}\\\\- \\frac{m_{c} \\left(2 l \\left(2 l \\dot{u}_{3} + 2 \\operatorname{cos}\\left(q_{2} + q_{3}\\right) \\dot{u}_{1} - 3 \\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} + 3 \\dot{u}_{2}\\right) - 3 \\left(2 l \\left(\\operatorname{cos}\\left(q_{2}\\right) \\dot{u}_{1} - \\dot{u}_{2}\\right) + 3 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)\\right) \\operatorname{cos}\\left(q_{3}\\right) + 9 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right)^{2} \\operatorname{sin}\\left(q_{3}\\right) - 9 \\left(u_{1} \\operatorname{cos}\\left(q_{2}\\right) - u_{2}\\right) u_{1} \\operatorname{sin}\\left(q_{2}\\right)\\right)}{4}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ 2 2 3 \n",
"⎢ 9⋅I_{B_bo}⋅cos (q₂)⋅u₁̇ 9⋅I_{B_bo}⋅cos(q₂)⋅u₂̇ 27⋅I_{B_bo}⋅u₁ ⋅sin (q₂)\n",
"⎢- ─────────────────────── + ────────────────────── + ────────────────────────\n",
"⎢ 2 2 3 \n",
"⎢ 4⋅l 4⋅l 8⋅l \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎢ \n",
"⎣ \n",
"\n",
" 2 \n",
" 27⋅I_{B_bo}⋅u₁ ⋅sin(q₂) 27⋅I_{B_bo}⋅u₁⋅u₂⋅sin(q₂)⋅cos(q₂) 2 \n",
" - ─────────────────────── + ───────────────────────────────── + l⋅m_c⋅u₃ ⋅sin\n",
" 3 3 \n",
" 8⋅l 8⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" 2 \n",
" l⋅m_c⋅u₃ ⋅sin(q₃)⋅cos(q₂) l⋅m_c⋅c\n",
"(q₂)⋅cos(q₃) - ───────────────────────── + l⋅m_c⋅sin(q₂)⋅sin(q₃)⋅u₃̇ + ───────\n",
" 2 \n",
" \n",
" \n",
" \n",
" 9⋅\n",
" ──\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
"os(q₂)⋅cos(q₃)⋅u₃̇ 3⋅l⋅m_c⋅cos(q₂)⋅u₃̇ \n",
"────────────────── + ─────────────────── - mₐ⋅u₁̇ - m_b⋅u₁⋅sin(q₂)⋅cos(q₂)⋅q₂̇\n",
" 2 2 \n",
" \n",
" \n",
" 2 \n",
"I_{B_bo}⋅cos(q₂)⋅u₁̇ 9⋅I_{B_bo}⋅u₂̇ 27⋅I_{B_bo}⋅u₁ ⋅sin(2⋅q₂) 27⋅I_{B_bo\n",
"──────────────────── - ────────────── + ───────────────────────── - ──────────\n",
" 2 2 3 \n",
" 4⋅l 4⋅l 16⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" 2 9⋅m_c⋅u₁⋅u₃\n",
" + m_b⋅cos (q₂)⋅u₁̇ - m_b⋅u₁̇ - 3⋅m_c⋅u₁⋅u₃⋅sin(q₂ + q₃)⋅cos(q₂) + ───────────\n",
" \n",
" \n",
" \n",
" 2 \n",
"}⋅u₁⋅u₂⋅sin(q₂) 3⋅l⋅m_c⋅u₃ ⋅sin(q₃) 3⋅l⋅m_c⋅cos(q₃)⋅u₃̇ 3⋅l⋅m_c⋅u₃̇ \n",
"─────────────── + ─────────────────── - ─────────────────── - ─────────── - m_\n",
" 3 2 2 2 \n",
" 8⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" 2 \n",
"⋅sin(q₃)⋅cos (q₂) 3⋅m_c⋅u₂⋅u₃⋅sin(q₃)⋅cos(q₂) \n",
"───────────────── + 3⋅m_c⋅u₂⋅u₃⋅sin(q₂)⋅cos(q₃) - ─────────────────────────── \n",
" 2 2 \n",
" \n",
" \n",
" \n",
" 9⋅m_c⋅u₁⋅u₃⋅sin(q₂ - q₃) 9⋅m_c⋅u₁⋅u₃⋅sin(q₂ + q₃) 9⋅m_c⋅u₂⋅u₃⋅sin(\n",
"b⋅u₂̇ + ──────────────────────── - ──────────────────────── + ────────────────\n",
" 4 4 2 \n",
" \n",
" \n",
" ⎛ \n",
" -m_c⋅⎝2⋅l⋅(2⋅l⋅u₃̇ + 2⋅cos(q₂ + q₃)⋅u₁̇ - 3⋅cos(q₂)⋅u₁̇ + 3⋅u₂̇) \n",
" ─────────────────────────────────────────────────────────────────\n",
" \n",
"\n",
" 2 \n",
" 3⋅m_c⋅sin(q₂)⋅sin(q₃)⋅u₂̇ 9⋅m_c⋅cos (q₂)⋅\n",
"+ ───────────────────────── + 3⋅m_c⋅cos(q₂ + q₃)⋅cos(q₂)⋅u₁̇ - ───────────────\n",
" 2 2 \n",
" \n",
" \n",
" \n",
"q₃) 9⋅m_c⋅cos(q₂ - q₃)⋅u₁̇ 3⋅m_c⋅cos(q₂ + q₃)⋅u₁̇ 9⋅\n",
"─── + ────────────────────── + ────────────────────── + 3⋅m_c⋅cos(q₂)⋅u₁̇ - ──\n",
" 4 4 \n",
" \n",
" \n",
" \n",
"- 3⋅(2⋅l⋅(cos(q₂)⋅u₁̇ - u₂̇) + 3⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂))⋅cos(q₃) + 9⋅(u₁\n",
"──────────────────────────────────────────────────────────────────────────────\n",
" 4 \n",
"\n",
" 2 \n",
"cos(q₃)⋅u₁̇ 3⋅m_c⋅cos (q₂)⋅u₁̇ \n",
"─────────── - ────────────────── + 3⋅m_c⋅cos(q₂)⋅cos(q₃)⋅u₂̇ + 3⋅m_c⋅cos(q₂)⋅u\n",
" 2 \n",
" \n",
" \n",
" 2 \n",
"m_c⋅cos(q₃)⋅u₂̇ 9⋅m_c⋅u₂̇ 3⋅m_b⋅u₁ ⋅sin(2⋅q₂) 3⋅m_b⋅u₁⋅u₂⋅sin(q₂) 27⋅m\n",
"─────────────── - ───────── + ─────────────────── - ─────────────────── + ────\n",
" 2 2 4⋅l 2⋅l \n",
" \n",
" \n",
" 2 ⎞ \n",
"⋅cos(q₂) - u₂) ⋅sin(q₃) - 9⋅(u₁⋅cos(q₂) - u₂)⋅u₁⋅sin(q₂)⎠ \n",
"────────────────────────────────────────────────────────── \n",
" \n",
"\n",
" 2 2 \n",
" 3⋅m_b⋅u₁⋅u₂⋅sin(q₂)⋅cos(q₂) 3⋅m_b⋅u₂ ⋅sin(q₂) 9⋅m_c⋅u₁ ⋅sin\n",
"₂̇ - m_c⋅u₁̇ - ─────────────────────────── + ───────────────── - ─────────────\n",
" 2⋅l 2⋅l \n",
" \n",
" \n",
" 2 2 2 \n",
"_c⋅u₁ ⋅sin(2⋅q₂ - q₃) 27⋅m_c⋅u₁ ⋅sin(2⋅q₂ + q₃) 27⋅m_c⋅u₁ ⋅sin(2⋅q₂) 27⋅\n",
"───────────────────── + ───────────────────────── + ──────────────────── - ───\n",
" 16⋅l 16⋅l 8⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" 2 2 2 \n",
"(q₂ - q₃)⋅cos (q₂) 9⋅m_c⋅u₁ ⋅sin(q₂ - q₃) 9⋅m_c⋅u₁ ⋅sin(q₂ + q₃) 9⋅m_c⋅u\n",
"────────────────── + ────────────────────── - ────────────────────── + ───────\n",
" 8⋅l 8⋅l 8⋅l \n",
" \n",
" \n",
" \n",
"m_c⋅u₁⋅u₂⋅sin(q₂ - q₃) 27⋅m_c⋅u₁⋅u₂⋅sin(q₂ + q₃) 27⋅m_c⋅u₁⋅u₂⋅sin(q₂) \n",
"────────────────────── - ───────────────────────── - ──────────────────── \n",
" 8⋅l 8⋅l 4⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" 2 3 2 2 2 2 \n",
"₁ ⋅sin (q₂) 9⋅m_c⋅u₁ ⋅sin(q₂)⋅cos (q₂)⋅cos(q₃) 9⋅m_c⋅u₁ ⋅sin(q₂)⋅cos (q₂) \n",
"─────────── - ────────────────────────────────── + ────────────────────────── \n",
"2⋅l 8⋅l 4⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" 2 2 3 2 \n",
" 9⋅m_c⋅u₁ ⋅sin(q₂) 27⋅m_c⋅u₁ ⋅sin(q₃)⋅cos (q₂) 27⋅m_c⋅u₁⋅u₂⋅sin(q₃)⋅cos (\n",
"- ───────────────── + ─────────────────────────── - ──────────────────────────\n",
" 2⋅l 8⋅l 4⋅l \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" 2 2 ⎤\n",
"q₂) 9⋅m_c⋅u₁⋅u₂⋅sin(q₃) 9⋅m_c⋅u₂ ⋅sin(q₂ + q₃) 9⋅m_c⋅u₂ ⋅sin(q₂)⎥\n",
"─── + ─────────────────── + ────────────────────── + ─────────────────⎥\n",
" 4⋅l 4⋅l 4⋅l ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎥\n",
" ⎦"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Frstar"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [],
"source": [
"f = Fr + Frstar"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left\\{F, T, q_{1}, q_{2}, q_{3}, u_{1}, u_{2}, u_{3}, \\dot{q}_{2}, \\dot{u}_{1}, \\dot{u}_{2}, \\dot{u}_{3}\\right\\}$"
],
"text/plain": [
"{F, T, q₁, q₂, q₃, u₁, u₂, u₃, q₂̇, u₁̇, u₂̇, u₃̇}"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"me.find_dynamicsymbols(f)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left\\{I_{B_bo}, c, g, k, k_{T}, l, m_{a}, m_{b}, m_{c}, t\\right\\}$"
],
"text/plain": [
"{I_{B_bo}, c, g, k, k_T, l, mₐ, m_b, m_c, t}"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f.free_symbols"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Put in first order form"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}u_{1}\\\\u_{2}\\\\u_{3}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡u₁⎤\n",
"⎢ ⎥\n",
"⎢u₂⎥\n",
"⎢ ⎥\n",
"⎣u₃⎦"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = sm.Matrix(u)\n",
"u"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}\\dot{u}_{1}\\\\\\dot{u}_{2}\\\\\\dot{u}_{3}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡u₁̇⎤\n",
"⎢ ⎥\n",
"⎢u₂̇⎥\n",
"⎢ ⎥\n",
"⎣u₃̇⎦"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u.diff()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}- \\frac{9 I_{B_bo} \\operatorname{cos}^{2}\\left(q_{2}\\right)}{4 l^{2}} - m_{a} + m_{b} \\operatorname{cos}^{2}\\left(q_{2}\\right) - m_{b} + 3 m_{c} \\operatorname{cos}\\left(q_{2} + q_{3}\\right) \\operatorname{cos}\\left(q_{2}\\right) - \\frac{9 m_{c} \\operatorname{cos}^{2}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right)}{2} - \\frac{3 m_{c} \\operatorname{cos}^{2}\\left(q_{2}\\right)}{2} - m_{c} & \\frac{9 I_{B_bo} \\operatorname{cos}\\left(q_{2}\\right)}{4 l^{2}} + \\frac{3 m_{c} \\operatorname{sin}\\left(q_{2}\\right) \\operatorname{sin}\\left(q_{3}\\right)}{2} + 3 m_{c} \\operatorname{cos}\\left(q_{2}\\right) \\operatorname{cos}\\left(q_{3}\\right) + 3 m_{c} \\operatorname{cos}\\left(q_{2}\\right) & \\frac{l m_{c} \\left(3 \\operatorname{cos}\\left(q_{2} - q_{3}\\right) - \\operatorname{cos}\\left(q_{2} + q_{3}\\right) + 6 \\operatorname{cos}\\left(q_{2}\\right)\\right)}{4}\\\\\\frac{9 I_{B_bo} \\operatorname{cos}\\left(q_{2}\\right)}{4 l^{2}} + \\frac{9 m_{c} \\operatorname{cos}\\left(q_{2} - q_{3}\\right)}{4} + \\frac{3 m_{c} \\operatorname{cos}\\left(q_{2} + q_{3}\\right)}{4} + 3 m_{c} \\operatorname{cos}\\left(q_{2}\\right) & - \\frac{9 I_{B_bo}}{4 l^{2}} - m_{b} - \\frac{9 m_{c} \\operatorname{cos}\\left(q_{3}\\right)}{2} - \\frac{9 m_{c}}{2} & - \\frac{3 l m_{c} \\left(\\operatorname{cos}\\left(q_{3}\\right) + 1\\right)}{2}\\\\- \\frac{l m_{c} \\left(- 3 \\operatorname{cos}\\left(q_{2} - q_{3}\\right) + \\operatorname{cos}\\left(q_{2} + q_{3}\\right) - 6 \\operatorname{cos}\\left(q_{2}\\right)\\right)}{4} & - \\frac{3 l m_{c} \\left(\\operatorname{cos}\\left(q_{3}\\right) + 1\\right)}{2} & - l^{2} m_{c}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ 2 \n",
"⎢ 9⋅I_{B_bo}⋅cos (q₂) 2 \n",
"⎢- ─────────────────── - mₐ + m_b⋅cos (q₂) - m_b + 3⋅m_c⋅cos(q₂ + q₃)⋅cos(q₂) \n",
"⎢ 2 \n",
"⎢ 4⋅l \n",
"⎢ \n",
"⎢ 9⋅I_{B_bo}⋅cos(q₂) 9⋅m_c⋅cos(q₂ - q₃) 3⋅m_c⋅cos(q\n",
"⎢ ────────────────── + ────────────────── + ───────────\n",
"⎢ 2 4 4 \n",
"⎢ 4⋅l \n",
"⎢ \n",
"⎢ -l⋅m_c⋅(-3⋅cos(q₂ - q₃) + cos(q₂ + q₃) - \n",
"⎢ ─────────────────────────────────────────\n",
"⎣ 4 \n",
"\n",
" 2 2 \n",
" 9⋅m_c⋅cos (q₂)⋅cos(q₃) 3⋅m_c⋅cos (q₂) 9⋅I_{B_bo}⋅cos(q₂) 3⋅m_c⋅si\n",
"- ────────────────────── - ────────────── - m_c ────────────────── + ────────\n",
" 2 2 2 \n",
" 4⋅l \n",
" \n",
"₂ + q₃) 9⋅I_{B_\n",
"─────── + 3⋅m_c⋅cos(q₂) - ───────\n",
" 2\n",
" 4⋅l \n",
" \n",
"6⋅cos(q₂)) \n",
"─────────── \n",
" \n",
"\n",
" \n",
"n(q₂)⋅sin(q₃) l⋅m_c⋅(3⋅cos(q₂ - q₃) -\n",
"───────────── + 3⋅m_c⋅cos(q₂)⋅cos(q₃) + 3⋅m_c⋅cos(q₂) ───────────────────────\n",
" 2 \n",
" \n",
" \n",
"bo} 9⋅m_c⋅cos(q₃) 9⋅m_c -3⋅l⋅m_c⋅(\n",
"─── - m_b - ───────────── - ───── ──────────\n",
" 2 2 \n",
" \n",
" \n",
"-3⋅l⋅m_c⋅(cos(q₃) + 1) \n",
"─────────────────────── -l\n",
" 2 \n",
"\n",
" ⎤\n",
" cos(q₂ + q₃) + 6⋅cos(q₂))⎥\n",
"──────────────────────────⎥\n",
" 4 ⎥\n",
" ⎥\n",
" ⎥\n",
"cos(q₃) + 1) ⎥\n",
"───────────── ⎥\n",
" 2 ⎥\n",
" ⎥\n",
" ⎥\n",
"2 ⎥\n",
" ⋅m_c ⎥\n",
" ⎦"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M = f.jacobian(u.diff())\n",
"M = sm.trigsimp(M)\n",
"M"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"G = -(f - M * u.diff())"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"udots = M.LUsolve(G)"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"# udots # no need to print, too long, may eat up your computer's memory"
]
}
],
"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