Skip to content

Instantly share code, notes, and snippets.

@pierre-haessig
Created March 27, 2014 14:14
Show Gist options
  • Save pierre-haessig/9808480 to your computer and use it in GitHub Desktop.
Save pierre-haessig/9808480 to your computer and use it in GitHub Desktop.
Optimal pick-and-place trajectory for a robot : attempt to find it on a Fourier basis
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Optimal trajectory"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Objective is to find a trajectory $M(t) = (x(t), z(t))$ from point $M_i$ to $M_f$ in time $t_f$ that *minimizes* this travel time $t_f$.\n",
"\n",
"*Pierre H. \u2014 March 2014*, on a idea of Coralie Germain"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The trajectory $M(t)$ must satisfies several constraints:\n",
"\n",
"**equality** constraints:\n",
"\n",
"* fixed initial and final position: $M(0) = M_i$, $M(t_f) = M_f$\n",
" * more precisely: $x(0) = 0$, $x(t_f) = x_f$,\n",
" * and $z(0) = z(t_f) = 0$\n",
" \n",
"* zero initial and final velocity $M'(0) = M'(t_f) = 0$\n",
"* zero initial and final acceleration $M''(0) = M''(t_f) = 0$\n",
"* vertical taking-off and landing: $\\delta M(0). u_x = \\delta M(t_f). u_x = 0$\n",
" * this translates into zero horizontal jerk: $x'''(0) = x'''(t_f) = 0$\n",
" * or *if the jerk is already zero*, zero horizontal 4th derivative: $x''''(0) = x''''(t_f) = 0$\n",
"\n",
"**inequality** constraints:\n",
"\n",
"* limited acceleration |$M''(t)| \\leq A_{max}$ at all time $t$\n",
"* limited jerk |$M'''(t)| \\leq J_{max}$ at all time $t$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We choose to numerically solve the problem using a parametrized trajectory"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import sympy\n",
"from sympy import symbols, Eq, Matrix\n",
"sympy.init_printing()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"1) Fourier basis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$x(t) = a_0 + \\sum_{n=1}^N a_n \\cos(n\\omega t) + b_n \\sin(n\\omega t) $$\n",
"and same for $z(t)$ with its own coefficients\n",
"\n",
"Choice of the fundamental frequency $\\omega$:\n",
"\n",
"* it could be $2\\pi/t_f$ if we assume that $M(t)$ is $t_f$-*periodic*.\n",
"* but since $M(0) \\neq M(t_f)$, it seems better to assume that M(t) is $2.t_f$-*periodic*, with a symetry around $t_f$: $x(t_f - \\tau) = x(t_f + \\tau)$\n",
"\n",
"so we choose $\\omega = \\pi/t_f$. And the symetry+periodicity implies that $x(t)$ is even ($x(-t) = x(t)$). Consequence: all *sine terms are zero*.\n",
"\n",
"and the order $N$ must be \"big enough\" to:\n",
"\n",
"1. satisfy all the constraints\n",
"2. give enough freedom to minimize the travel time"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sympy import cos, sin, pi"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"N = 5\n",
"w,t, tf = symbols('omega t t_f')\n",
"\n",
"a = symbols('a_0:{:d}'.format(N+1))\n",
"b = symbols('b_0:{:d}'.format(N+1))\n",
"c = symbols('c_0:{:d}'.format(N+1))\n",
"d = symbols('d_0:{:d}'.format(N+1))\n",
"a,b"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{pmatrix}\\begin{pmatrix}a_{0}, & a_{1}, & a_{2}, & a_{3}, & a_{4}, & a_{5}\\end{pmatrix}, & \\begin{pmatrix}b_{0}, & b_{1}, & b_{2}, & b_{3}, & b_{4}, & b_{5}\\end{pmatrix}\\end{pmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\nAElFTkSuQmCC\n",
"prompt_number": 3,
"text": [
"((a\u2080, a\u2081, a\u2082, a\u2083, a\u2084, a\u2085), (b\u2080, b\u2081, b\u2082, b\u2083, b\u2084, b\u2085))"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = a[0] + sum(a[n]*cos(n*w*t) + b[n]*sin(n*w*t) for n in range(1,N+1))\n",
"z = c[0] + sum(c[n]*cos(n*w*t) + d[n]*sin(n*w*t) for n in range(1,N+1))\n",
"# Remove sine terms:\n",
"x = x.subs({b[i]:0 for i in range(len(b))})\n",
"z = z.subs({d[i]:0 for i in range(len(d))})\n",
"x"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$a_{0} + a_{1} \\cos{\\left (\\omega t \\right )} + a_{2} \\cos{\\left (2 \\omega t \\right )} + a_{3} \\cos{\\left (3 \\omega t \\right )} + a_{4} \\cos{\\left (4 \\omega t \\right )} + a_{5} \\cos{\\left (5 \\omega t \\right )}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 4,
"text": [
"a\u2080 + a\u2081\u22c5cos(\u03c9\u22c5t) + a\u2082\u22c5cos(2\u22c5\u03c9\u22c5t) + a\u2083\u22c5cos(3\u22c5\u03c9\u22c5t) + a\u2084\u22c5cos(4\u22c5\u03c9\u22c5t) + a\u2085\u22c5cos(5\u22c5\u03c9\u22c5\n",
"t)"
]
}
],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are thus $2 \\times (N+1)$ coefficients to find\n",
"\n",
"* $N=3$ \u2192 8 coeffs: not enough\n",
"* $N=4$ \u2192 10 coeffs: just enough ? in fact no\n",
"* $N=5$ \u2192 12 coeffs: fine"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Build the trajectory equations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Position gives **4** equations"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x0 = 0\n",
"z0 = 0\n",
"xf = symbols('x_f')\n",
"zf = 0\n",
"# Final time as a function of omega\n",
"tf_w = pi/w"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"eq_pos = [\n",
" Eq(x.subs(t,0), x0),\n",
" Eq(z.subs(t,0), z0),\n",
" Eq(x.subs(t,tf_w), xf),\n",
" Eq(z.subs(t,tf_w), zf),\n",
"]\n",
"eq_pos"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{bmatrix}a_{0} + a_{1} + a_{2} + a_{3} + a_{4} + a_{5} = 0, & c_{0} + c_{1} + c_{2} + c_{3} + c_{4} + c_{5} = 0, & a_{0} - a_{1} + a_{2} - a_{3} + a_{4} - a_{5} = x_{f}, & c_{0} - c_{1} + c_{2} - c_{3} + c_{4} - c_{5} = 0\\end{bmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n6/+8BqGqxkCynAAAAABJRU5ErkJggg==\n",
"prompt_number": 6,
"text": [
"[a\u2080 + a\u2081 + a\u2082 + a\u2083 + a\u2084 + a\u2085 = 0, c\u2080 + c\u2081 + c\u2082 + c\u2083 + c\u2084 + c\u2085 = 0, a\u2080 - a\u2081 + a\n",
"\u2082 - a\u2083 + a\u2084 - a\u2085 = x_f, c\u2080 - c\u2081 + c\u2082 - c\u2083 + c\u2084 - c\u2085 = 0]"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Velocity equations are always satisfied due to the even partity of the functions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"eq_vel = [\n",
" Eq(x.diff(t).subs(t,0), 0),\n",
" Eq(z.diff(t).subs(t,0), 0),\n",
" Eq(x.diff(t).subs(t,tf_w), 0),\n",
" Eq(z.diff(t).subs(t,tf_w), 0),\n",
"]\n",
"eq_vel"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"[True, True, True, True]"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Acceleration conditions yield **4** equations"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"eq_acc = [\n",
" Eq(x.diff(t,t).subs(t,0)/w**2, 0),\n",
" Eq(z.diff(t,t).subs(t,0)/w**2, 0),\n",
" Eq(x.diff(t,t).subs(t,tf_w)/w**2, 0),\n",
" Eq(z.diff(t,t).subs(t,tf_w)/w**2, 0),\n",
"]\n",
"eq_acc"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{bmatrix}- a_{1} - 4 a_{2} - 9 a_{3} - 16 a_{4} - 25 a_{5} = 0, & - c_{1} - 4 c_{2} - 9 c_{3} - 16 c_{4} - 25 c_{5} = 0, & a_{1} - 4 a_{2} + 9 a_{3} - 16 a_{4} + 25 a_{5} = 0, & c_{1} - 4 c_{2} + 9 c_{3} - 16 c_{4} + 25 c_{5} = 0\\end{bmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 8,
"text": [
"[-a\u2081 - 4\u22c5a\u2082 - 9\u22c5a\u2083 - 16\u22c5a\u2084 - 25\u22c5a\u2085 = 0, -c\u2081 - 4\u22c5c\u2082 - 9\u22c5c\u2083 - 16\u22c5c\u2084 - 25\u22c5c\u2085 = 0,\n",
" a\u2081 - 4\u22c5a\u2082 + 9\u22c5a\u2083 - 16\u22c5a\u2084 + 25\u22c5a\u2085 = 0, c\u2081 - 4\u22c5c\u2082 + 9\u22c5c\u2083 - 16\u22c5c\u2084 + 25\u22c5c\u2085 = 0]"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Jerk conditions are always satisfied, so put a constraint on 4th derivative to be zero in $u_x$ direction (vertical take-off).\n",
"\n",
"This yields **2** extra equations."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"eq_d4 = [\n",
" Eq(x.diff(t,t,t,t).subs(t,0)/w**4, 0),\n",
" Eq(x.diff(t,t,t,t).subs(t,tf_w)/w**4, 0)\n",
"]\n",
"eq_d4"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{bmatrix}a_{1} + 16 a_{2} + 81 a_{3} + 256 a_{4} + 625 a_{5} = 0, & - a_{1} + 16 a_{2} - 81 a_{3} + 256 a_{4} - 625 a_{5} = 0\\end{bmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 9,
"text": [
"[a\u2081 + 16\u22c5a\u2082 + 81\u22c5a\u2083 + 256\u22c5a\u2084 + 625\u22c5a\u2085 = 0, -a\u2081 + 16\u22c5a\u2082 - 81\u22c5a\u2083 + 256\u22c5a\u2084 - 625\u22c5\n",
"a\u2085 = 0]"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So there are **10 equations in total**."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"eqs = eq_pos + eq_acc + eq_d4\n",
"#eqs"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 187
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solve the equations:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sol = sympy.solve(eqs, a+c)\n",
"sol"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{Bmatrix}a_{0} : \\frac{x_{f}}{2}, & a_{1} : - \\frac{75 x_{f}}{128}, & a_{2} : 0, & a_{3} : \\frac{25 x_{f}}{256}, & a_{4} : 0, & a_{5} : - \\frac{3 x_{f}}{256}, & c_{0} : 3 c_{4}, & c_{1} : 2 c_{5}, & c_{2} : - 4 c_{4}, & c_{3} : - 3 c_{5}\\end{Bmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\nAABJRU5ErkJggg==\n",
"prompt_number": 11,
"text": [
"\u23a7 x_f -75\u22c5x_f 25\u22c5x_f -3\u22c5x_f \n",
"\u23a8a\u2080: \u2500\u2500\u2500, a\u2081: \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500, a\u2082: 0, a\u2083: \u2500\u2500\u2500\u2500\u2500\u2500, a\u2084: 0, a\u2085: \u2500\u2500\u2500\u2500\u2500\u2500\u2500, c\u2080: 3\u22c5c\u2084, c\u2081: 2\n",
"\u23a9 2 128 256 256 \n",
"\n",
" \u23ab\n",
"\u22c5c\u2085, c\u2082: -4\u22c5c\u2084, c\u2083: -3\u22c5c\u2085\u23ac\n",
" \u23ad"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x_sol = x.subs(sol).subs(w, pi/tf)\n",
"z_sol = z.subs(sol).subs(w, pi/tf)\n",
"\n",
"x_sol"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$- \\frac{75 x_{f}}{128} \\cos{\\left (\\frac{\\pi t}{t_{f}} \\right )} + \\frac{25 x_{f}}{256} \\cos{\\left (\\frac{3 \\pi}{t_{f}} t \\right )} - \\frac{3 x_{f}}{256} \\cos{\\left (\\frac{5 \\pi}{t_{f}} t \\right )} + \\frac{x_{f}}{2}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\nETsU8f+kD9vPsqOVCAAAAABJRU5ErkJggg==\n",
"prompt_number": 12,
"text": [
" \u239b\u03c0\u22c5t\u239e \u239b3\u22c5\u03c0\u22c5t\u239e \u239b5\u22c5\u03c0\u22c5t\u239e \n",
" 75\u22c5x_f\u22c5cos\u239c\u2500\u2500\u2500\u239f 25\u22c5x_f\u22c5cos\u239c\u2500\u2500\u2500\u2500\u2500\u239f 3\u22c5x_f\u22c5cos\u239c\u2500\u2500\u2500\u2500\u2500\u239f \n",
" \u239dt_f\u23a0 \u239d t_f \u23a0 \u239d t_f \u23a0 x_f\n",
"- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\n",
" 128 256 256 2 "
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"z_sol"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$- 4 c_{4} \\cos{\\left (\\frac{2 \\pi}{t_{f}} t \\right )} + c_{4} \\cos{\\left (\\frac{4 \\pi}{t_{f}} t \\right )} + 3 c_{4} + 2 c_{5} \\cos{\\left (\\frac{\\pi t}{t_{f}} \\right )} - 3 c_{5} \\cos{\\left (\\frac{3 \\pi}{t_{f}} t \\right )} + c_{5} \\cos{\\left (\\frac{5 \\pi}{t_{f}} t \\right )}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\nCooOj/8BxId7HZBiY7kAAAAASUVORK5CYII=\n",
"prompt_number": 13,
"text": [
" \u239b2\u22c5\u03c0\u22c5t\u239e \u239b4\u22c5\u03c0\u22c5t\u239e \u239b\u03c0\u22c5t\u239e \u239b3\u22c5\u03c0\u22c5t\u239e \n",
"- 4\u22c5c\u2084\u22c5cos\u239c\u2500\u2500\u2500\u2500\u2500\u239f + c\u2084\u22c5cos\u239c\u2500\u2500\u2500\u2500\u2500\u239f + 3\u22c5c\u2084 + 2\u22c5c\u2085\u22c5cos\u239c\u2500\u2500\u2500\u239f - 3\u22c5c\u2085\u22c5cos\u239c\u2500\u2500\u2500\u2500\u2500\u239f + c\n",
" \u239d t_f \u23a0 \u239d t_f \u23a0 \u239dt_f\u23a0 \u239d t_f \u23a0 \n",
"\n",
" \u239b5\u22c5\u03c0\u22c5t\u239e\n",
"\u2085\u22c5cos\u239c\u2500\u2500\u2500\u2500\u2500\u239f\n",
" \u239d t_f \u23a0"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Observations:\n",
"\n",
"* $x(t)$ is fully defined\n",
"* $z(t)$ has 2 degrees of freedom left."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How to set the two extraneous coefficients $c_4, c_5$ ?"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# mid-time altitude:\n",
"z_sol.subs(t, tf/2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$8 c_{4}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAABsAAAARBAMAAADeYcoAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHaJmUSrVGYizbvd\nMu8FnLUeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAArUlEQVQIHWNgEFJ2ZUACDgxsBQguewMD5wIE\nl3kDA+MBBJf1twBzA4LLkP/DAsgzVroAEWP5v5CBYU4B1wIGhg1AkZZb/wIYHoOMZ//IwMCRwND/\nkAXIYGAQBpJ8Agy83/lAyhgUgVx5IJ0hbwAkeQtBshMYGHbyNzAwFDAzArmsCxk4FFgSGEQudIK4\nDNecgV4w7lBgVABzgSJgwO7i8qUBygZTnCDFCND9rQAAtbwpUZNSjIAAAAAASUVORK5CYII=\n",
"prompt_number": 165,
"text": [
"8\u22c5c\u2084"
]
}
],
"prompt_number": 165
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# mid-time speed:\n",
"z_sol.diff(t).subs(t, tf/2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$- \\frac{16 \\pi}{t_{f}} c_{5}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAEcAAAAxBAMAAAB65anwAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMiK7mat272aJ\nRFQidGHIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABt0lEQVQ4EdWUMUjDUBCG/7a2qUlsgiBFl2To\nVgVBCg4OcRCcpODoYBdRUai66CJ0cLcgDoLQugt20qFLBaUEMhQcdFEzCU62g3QQqRelTdokr129\nJXf/fe9/L4/jAXYEZcqNc81W3Fk4S9BojVPdrY4SWD8maBKRTEfySgoyhE+vhlMjKFJ0Cl45QVJC\nPwQKrVar6UWQRpCSBG+Kd+8rp2kG1AB3sYT7Yc2HsZykaQjfQCZqXZlnEMSrEL4wlAt5ApZIEP0d\nOXElieUUozMVochSzc+KnLCNCRMn4Cs+0MHVbAni/hGwhagf5LP2X8rGmdb33MtmUF1cKLO5S0TN\n11aOJn/GigRAg9Yd4Brk8TLPNuIz1H9mM1AqBDye7TIxqQSYY3hjQlwOcQ1Q0kzKKOexBsV3tjqL\nU1ilMeuKQKqrpOIW1V4pVu9VxGqlV2I+KW045FrW7tjfp+xG3q78sg+/hlPfs4q47pTc+Zwl6Ya7\n4VAC9FgAUw7FIx2pg67XGiNGiGpMw3WzxEAALjcOCCqTQXiTronbYUO/3Qh7tz8HvjaAkyIPAD0M\nwOBmAChJT13f0PMu5AezLmvr+5/WCAAAAABJRU5ErkJggg==\n",
"prompt_number": 166,
"text": [
"-16\u22c5\u03c0\u22c5c\u2085 \n",
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" t_f "
]
}
],
"prompt_number": 166
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"conclusion:\n",
"\n",
"* $c_5$ should be zero\n",
"* $c_4$ should be set to 1/8 the mid-time altitude"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# vertical 4th derivative at starup:\n",
"z_sol.diff(t,t,t,t).subs(t, 0)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\frac{\\pi^{4}}{t_{f}^{4}} \\left(192 c_{4} + 384 c_{5}\\right)$$"
],
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAKYAAAA4BAMAAACFyp53AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAdpmJMlQiZrurEN1E\n782PMUhmAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADz0lEQVRYCbWWTYhTVxTH/8nLy5u8fI6IUEuZ\nNBV1Nk5mImpXhopr4wcIuvDhQoViGxU/6kKepSi6SSi6cOXTLgUzVCx1ZbZSWgcU24ofcSGClTh+\nM+NH+r/35b15JhEHcj0w955z7rm/e965HxmgLQOeorDf4iiEuShzpXpmqKaeufoTMPPqmYalnnkG\n6pnrciOLlJ8lfK9y34dardZTGJWT6vLUlq7dPs9SxxOk1VgWKqpFkmbHHNXMSDWuGolwOa08z5qT\nrqtO9HMk86qZRxELMiPl/hYwit3zd9CVcoCzowuBrYt/6o5wPdHCihLMwbE6zUjW9cn2REBvqw+B\naMWB+Td2WmYVK+vdIdKzFforhAFx/eJ2ICgV0F01lIf542kHsQnExMFNTnSEmJbrGCrhNTYC39H8\nwnZ9siWhQ5IWHUMO0g1o08lxxJ53BOgZ1/Fn3XyHFcA5ftchOxBkdmaBP8QomTUboTep6Q8zIb79\n6nEsB7RUkIn7gQWkOiZaMpPM8xXV+DRQGCwKrytentzJLGKtPWVgn2Bqo3PbERLR1mV3VLRkapNI\nPaF6NY9vS6kGXwUaQnzmql9pjbzjdmbIjF5EM3JiO1fAIREWlIvCIBP3sF7k+TtwDbESdOYrxWdC\nuw5jweNb0EAm783JRGtKhGwGX2RPhOOWaATTGFz1AgjbCEvaL91M3HZ+gPHW2SCYI5yS2MAGWCOa\noPhMIEbMZ0DSFuPzJVNrNv+702xm6dgGVEo3SdiUF8x/6ErU2QSYtjQB/9u5B1XoWWyr5TkU2dSZ\nZ8tB5eAkV9576tTpf+c/Y1DiyzkOO3l02Pvl8vbIuIE1Fr4B5qVZ95JmdjKZ2GXrBjBgyU9h7XXT\n0m2yvD3yy/U1naKeoYfmA0QvFIbHw1WcLe7rYu6H/gR/OdjF+LSNYZgLAPMlrZxAUNxyURGJD9+9\nVMbY4jpS3L1xFPZnzEwXM5FjQORn8YZolamytnwXUzbfcPoj/lFmyhW3pKOj0XO5p+LoUWbOkmsH\n2rgVZYWiE3SZv2GmXEY2EBRQRbSURJsdGPNUzdGyzDpDW5/ETLlwxIt4vz8wVXrf0csqfEXveTES\nbgTKBfEm9yUyqXg+UC5EP/xts1rKsBh2pXIsA79cs5r38aAtDJlVuT6O8iOW+Jo65YI6lEeSZ58/\nvZ6tok9MwgFGCypYHkNr6EX/knrOPvtw9QwJ3tXrE9aeHj3MC3rAeyLUMCXFaCiEtVHhrHrmQJ+3\nvFdGyXovb3++mtPf/F6zxc+QatmtGgg86PEPc7+rjPLYq5P/AYyX9mD3t4wxAAAAAElFTkSuQmCC\n",
"prompt_number": 16,
"text": [
" 4 \n",
"\u03c0 \u22c5(192\u22c5c\u2084 + 384\u22c5c\u2085)\n",
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" 4 \n",
" t_f "
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\u2192 4th derivative of z is indeed non-zero (for $c_4>0$ and $c_5>0$) so the vertical take-off condition is fulfilled."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Matrix formulation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Objective : get a more compact expression of the equation. An expression that can easily be solved numerically for high order $N$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Row vector of basis functions\n",
"cos_list = Matrix([cos(n*w*t) for n in range(0,N+1)]).T\n",
"\n",
"# Derivatives (normalized with w**n)\n",
"d0 = cos_list\n",
"d1 = cos_list.diff(t)/w\n",
"d2 = cos_list.diff(t,t)/w**2\n",
"d4 = cos_list.diff(t,t,t,t)/w**4\n",
"Matrix.vstack(d0,d1,d2,d4)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\left[\\begin{matrix}1 & \\cos{\\left (\\omega t \\right )} & \\cos{\\left (2 \\omega t \\right )} & \\cos{\\left (3 \\omega t \\right )} & \\cos{\\left (4 \\omega t \\right )} & \\cos{\\left (5 \\omega t \\right )}\\\\0 & - \\sin{\\left (\\omega t \\right )} & - 2 \\sin{\\left (2 \\omega t \\right )} & - 3 \\sin{\\left (3 \\omega t \\right )} & - 4 \\sin{\\left (4 \\omega t \\right )} & - 5 \\sin{\\left (5 \\omega t \\right )}\\\\0 & - \\cos{\\left (\\omega t \\right )} & - 4 \\cos{\\left (2 \\omega t \\right )} & - 9 \\cos{\\left (3 \\omega t \\right )} & - 16 \\cos{\\left (4 \\omega t \\right )} & - 25 \\cos{\\left (5 \\omega t \\right )}\\\\0 & \\cos{\\left (\\omega t \\right )} & 16 \\cos{\\left (2 \\omega t \\right )} & 81 \\cos{\\left (3 \\omega t \\right )} & 256 \\cos{\\left (4 \\omega t \\right )} & 625 \\cos{\\left (5 \\omega t \\right )}\\end{matrix}\\right]$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 167,
"text": [
"\u23a11 cos(\u03c9\u22c5t) cos(2\u22c5\u03c9\u22c5t) cos(3\u22c5\u03c9\u22c5t) cos(4\u22c5\u03c9\u22c5t) cos(5\u22c5\u03c9\u22c5t) \u23a4\n",
"\u23a2 \u23a5\n",
"\u23a20 -sin(\u03c9\u22c5t) -2\u22c5sin(2\u22c5\u03c9\u22c5t) -3\u22c5sin(3\u22c5\u03c9\u22c5t) -4\u22c5sin(4\u22c5\u03c9\u22c5t) -5\u22c5sin(5\u22c5\u03c9\u22c5t) \u23a5\n",
"\u23a2 \u23a5\n",
"\u23a20 -cos(\u03c9\u22c5t) -4\u22c5cos(2\u22c5\u03c9\u22c5t) -9\u22c5cos(3\u22c5\u03c9\u22c5t) -16\u22c5cos(4\u22c5\u03c9\u22c5t) -25\u22c5cos(5\u22c5\u03c9\u22c5t)\u23a5\n",
"\u23a2 \u23a5\n",
"\u23a30 cos(\u03c9\u22c5t) 16\u22c5cos(2\u22c5\u03c9\u22c5t) 81\u22c5cos(3\u22c5\u03c9\u22c5t) 256\u22c5cos(4\u22c5\u03c9\u22c5t) 625\u22c5cos(5\u22c5\u03c9\u22c5t)\u23a6"
]
}
],
"prompt_number": 167
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Equations for $x(t)$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Mx = Matrix.vstack(\n",
" d0.subs(t, 0), # pos t0\n",
" d0.subs(t, tf_w), # pos tf\n",
" d2.subs(t, 0), # accel t0\n",
" d2.subs(t, tf_w), # accel tf\n",
" d4.subs(t, 0), # x'''' t0\n",
" d4.subs(t, tf_w), # x'''' tf\n",
")\n",
"bx = Matrix([x0, xf, 0, 0, 0, 0])\n",
"Mx,bx"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{pmatrix}\\left[\\begin{matrix}1 & 1 & 1 & 1 & 1 & 1\\\\1 & -1 & 1 & -1 & 1 & -1\\\\0 & -1 & -4 & -9 & -16 & -25\\\\0 & 1 & -4 & 9 & -16 & 25\\\\0 & 1 & 16 & 81 & 256 & 625\\\\0 & -1 & 16 & -81 & 256 & -625\\end{matrix}\\right], & \\left[\\begin{matrix}0\\\\x_{f}\\\\0\\\\0\\\\0\\\\0\\end{matrix}\\right]\\end{pmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 168,
"text": [
"\u239b\u23a11 1 1 1 1 1 \u23a4, \u23a1 0 \u23a4\u239e\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a21 -1 1 -1 1 -1 \u23a5 \u23a2x_f\u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a20 -1 -4 -9 -16 -25 \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a20 1 -4 9 -16 25 \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a20 1 16 81 256 625 \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239d\u23a30 -1 16 -81 256 -625\u23a6 \u23a3 0 \u23a6\u23a0"
]
}
],
"prompt_number": 168
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Equations for $z(t)$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Mz = Matrix.vstack(\n",
" d0.subs(t, 0), # pos t0\n",
" d0.subs(t, tf_w), # pos tf\n",
" d2.subs(t, 0), # accel t0\n",
" d2.subs(t, tf_w), # accel tf\n",
" d0.subs(t, tf_w/2), # pos at mid-time\n",
" d1.subs(t, tf_w/2), # speed at mid-time\n",
")\n",
"z_mid, vz_mid = symbols('z_mid v_zmid')\n",
"vz_mid = 0 # force zero speed at mid-time\n",
"bz = Matrix([z0, zf, 0, 0, z_mid, vz_mid/w])\n",
"Mz, bz"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{pmatrix}\\left[\\begin{matrix}1 & 1 & 1 & 1 & 1 & 1\\\\1 & -1 & 1 & -1 & 1 & -1\\\\0 & -1 & -4 & -9 & -16 & -25\\\\0 & 1 & -4 & 9 & -16 & 25\\\\1 & 0 & -1 & 0 & 1 & 0\\\\0 & -1 & 0 & 3 & 0 & -5\\end{matrix}\\right], & \\left[\\begin{matrix}0\\\\0\\\\0\\\\0\\\\z_{mid}\\\\0\\end{matrix}\\right]\\end{pmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 172,
"text": [
"\u239b\u23a11 1 1 1 1 1 \u23a4, \u23a1 0 \u23a4\u239e\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a21 -1 1 -1 1 -1 \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a20 -1 -4 -9 -16 -25\u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a20 1 -4 9 -16 25 \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a21 0 -1 0 1 0 \u23a5 \u23a2z_mid\u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239d\u23a30 -1 0 3 0 -5 \u23a6 \u23a3 0 \u23a6\u23a0"
]
}
],
"prompt_number": 172
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Check that matrices are invertible\n",
"Mx.det(), Mz.det()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{pmatrix}-18874368, & -16384\\end{pmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAANAAAAAaBAMAAAA0+c+VAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMkS7zRCZdiKJ71Rm\nq90icBAQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADP0lEQVRIDbVUS2hTQRQ9+f9ek+BC6MZmISKC\nNCgu1EVTi4KgGLAgujDxV0UoZlWxGwMVURFMKbRERGJrQSxCXLhSyVsofksrQgXboCK69BMTLG1t\nvHfmJZ20QvsqncV9d+acc8+bmfsegFVY8ZFgB0t4xX2wkS3s0ZU38ujkcVL12Qk4zvaGZFgzlk6n\nCF0NXE5vpyR9LigRVaLmJIenrxvudE+2wrTEafEL4C4pzC6aOIFxGUbK5fIooZ/hjiOnozXkjEhE\nkagpyx07cBwX4ZupMP18NR30AvE56v52Yj4CLshwCqgj0DUA1zQCH7EbtrBE5iRqJuT2FDbjfBaz\nFWYnG10DvFmF6yKjHuCwDCmgm8CrLbD2IxbRJpkpYEWipiwfSdLKhpCjaDDdT9jIr6MhqlCZ2bgF\nN2QArAkCUy3MyOm2DD8FzMk/Bsu3yXU6Osn02NnIGcZLVcDMuvILXQbARqCWFEa7EGjuO2rAqkbJ\nWV6s7wjRkj1u1HgujFwZujllMBNnirRJEWhrwAGQkeVmHLE94pwloojmUpI7ijqGgPqvRiFHQhhZ\nS3RzymAj7ci+fhng+EFYio2A68FYCc5BA1E0SspG5ShO04t6bkmmB8LI8hN7idj6jUczNRgZDUOb\niooAVwTwBaWRd5D6TitIWCk+Xz5L/RCixbuyxn1p5C6A91gdbDQINGRFAH8CB0FG7iRs094ItBkJ\nVwW1Cctvk5F+CWgSNR6kDKNpsaMqnfdOx1X3lIOO2CjwOJ+fehcowTZDXacVBKxXBbUJG1HXjYTo\n/JpEjVf5/Id7CfotFBYY4Q41W1IENMRFoQF4w/BP+uiOMhKurV+dsVGO7ggDwHejBmupmSbxtkqj\nhJlro3gmA3JxAf6CpiOXwFYcykokFhHA/MByW8oxhNfw/TZqIMBG1HWdCtv5fnYCljH6qYqAK1kG\ne8oTWNe2iTqp7Q29G8N+qrhwCDl624Owth2r1PA0/dGplTNojC5ULL6yfnFKDYP+DN5QzcoSJ/oS\neRWaPQFnqjIx8XToJshMjUVhyZjUMF0zqxkmwbhZ0XL4n0jUuhyhSY3G9+OLm1Qtg94lNA+XoTQp\nOWGS/z/0v9PCETbMKIvqAAAAAElFTkSuQmCC\n",
"prompt_number": 173,
"text": [
"(-18874368, -16384)"
]
}
],
"prompt_number": 173
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Mx.solve(bx), Mz.solve(bz)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$\\begin{pmatrix}\\left[\\begin{matrix}\\frac{x_{f}}{2}\\\\- \\frac{75 x_{f}}{128}\\\\0\\\\\\frac{25 x_{f}}{256}\\\\0\\\\- \\frac{3 x_{f}}{256}\\end{matrix}\\right], & \\left[\\begin{matrix}\\frac{3 z_{mid}}{8}\\\\0\\\\- \\frac{z_{mid}}{2}\\\\0\\\\\\frac{z_{mid}}{8}\\\\0\\end{matrix}\\right]\\end{pmatrix}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 174,
"text": [
"\u239b\u23a1 x_f \u23a4 \u23a13\u22c5z_mid\u23a4\u239e\n",
"\u239c\u23a2 \u2500\u2500\u2500 \u23a5, \u23a2\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\u239f\n",
"\u239c\u23a2 2 \u23a5 \u23a2 8 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a2-75\u22c5x_f \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a2 128 \u23a5 \u23a2-z_mid \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\u239f\n",
"\u239c\u23a2 0 \u23a5 \u23a2 2 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a2 25\u22c5x_f \u23a5 \u23a2 0 \u23a5\u239f\n",
"\u239c\u23a2 \u2500\u2500\u2500\u2500\u2500\u2500 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a2 256 \u23a5 \u23a2 z_mid \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u2500\u2500\u2500\u2500\u2500 \u23a5\u239f\n",
"\u239c\u23a2 0 \u23a5 \u23a2 8 \u23a5\u239f\n",
"\u239c\u23a2 \u23a5 \u23a2 \u23a5\u239f\n",
"\u239c\u23a2-3\u22c5x_f \u23a5 \u23a3 0 \u23a6\u239f\n",
"\u239c\u23a2\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5 \u239f\n",
"\u239d\u23a3 256 \u23a6 \u23a0"
]
}
],
"prompt_number": 174
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Coefficients of Fourier series of order $N=5$ are fully parametrized by:\n",
"\n",
"* final position $x_f$ and\n",
"* mid-time altitude $z_{mid}$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For order higher than $N$, an optimization is required"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Trajectory optimization"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using an order $N=6$ or more, minimize the travel time $t_f$ with constraints on maximal acceleration $|M''(t)|$ and maximal jerk $|M'''(t)|$\n",
"\n",
"*TODO*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Plot some trajectories"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Numerical parameters\n",
"tf_num = 100e-3\n",
"xf_num = 30e-2\n",
"c4 = 25e-3/8\n",
"c5 = 0\n",
"\n",
"t_lin = np.linspace(0, tf_num, 500)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 115
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def plot_traj(t, x, z, title):\n",
" '''plot x, z and sqrt(x\u00b2+z\u00b2) as a function of t'''\n",
" fig = plt.figure(title, figsize=(6,5))\n",
" ax1 = fig.add_subplot(311, title=title, ylabel='x')\n",
" ax1.plot(t, x)\n",
" ax1.label_outer()\n",
" ax1.locator_params('y', nbins=4)\n",
" ax2 = fig.add_subplot(312, ylabel='z', sharex=ax1)\n",
" ax2.plot(t, z)\n",
" ax2.label_outer()\n",
" ax2.locator_params('y', nbins=4)\n",
" ax3 = fig.add_subplot(313, xlabel='time (s)', ylabel='norm', sharex=ax1)\n",
" ax3.plot(t, np.sqrt(x**2+z**2), 'g')\n",
" ax3.locator_params('y', nbins=4)\n",
" ax1.set_xlim(t[0], t[-1])\n",
" fig.tight_layout()\n",
" return fig"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 176
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x_traj = sympy.lambdify((t, tf, xf), x_sol, \"numpy\")\n",
"z_traj = sympy.lambdify((t, tf, xf, c[4], c[5]), z_sol, \"numpy\")\n",
"\n",
"fig = plot_traj(t_lin, x_traj(t_lin, tf_num, xf_num),\n",
" z_traj(t_lin, tf_num, xf_num, c4, c5), 'Position (m)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nT97yWHt3p/nJycmptE9WVhb79u0jMjLSugHbWHXOH4ApU6bwzjvv4Oqqyz+PaqvO+ZOZmUmTJk14\n5pln6NKlC8899xyXLl2yWey2UJ3zp2HDhrz88su0atWKli1b4uXlxQMPPGCz2G2hKvmx5LG6/Cu8\n05t9nYUlboa+ePEiQ4cO5b333qNu3boWjU9rd5ofRVFYs2YNTZs2JTw83GHPr+qcP2VlZezdu5cX\nXniBvXv34unpyVtvvWWNMDVTnfef48eP8+6775KVlcXJkye5ePEin3/+uaVD1FR11ny7k2N1WaTu\n9GZfg8FQpWPtXXVvhi4tLeXxxx/nqaeeYtCgQbYJ2oaqk5/k5GQSExNp06YNI0aMYNOmTYwePdpm\nsdtCdfJjMBgwGAx069YNgKFDh7J3717bBG4j1cnPnj176NGjB40aNcLNzY0hQ4aQnJxss9htoTrv\nsXd0rEV71CyktLRU8ff3VzIzM5Xi4uJbdlzu2LGjouOyKsfau+rkp7y8XBk1apQyefJkm8dtK9XJ\nz7W2bNmiPProozaJ2Zaqm59evXopR44cURRFUd544w1lxowZtgveBqqTn3379ikdOnRQLl26pJSX\nlyujR49WYmNjbf47WNPtvMe+8cYblQZO3Mn7sy6LlKIoyrp165S2bdsqAQEByr///W9FURTlo48+\nUj766KOKff7yl78oAQEBSqdOnZSff/7Z7LGO5k7zs23bNsXFxUUJCwtTOnfurHTu3FlZv369Jr+D\nNVXn/Llqy5YtDjm6T1Gql5/9+/crERERSqdOnZTBgwc73Og+RalefubOnau0b99e6dixozJ69Gil\npKTE5vFb263yc+rUKcVgMCj169dXvLy8FF9fX+XChQs3PdYcuZlXCCGEbumyT0oIIYQAKVJCCCF0\nTIqUEEII3ZIiJYQQQrekSAkhhNAtKVJCCCF0S4qUENVw7tw5Pvzww4rtkydP8sQTT1jltdasWcPs\n2bNv+vPU1FTGjh1rldcWQityn5QQ1ZCVlcWAAQM4ePCg1V+rT58+fPnllzRr1uym+/Tu3Zv//e9/\nNG3a1OrxCGELciUlRDW88sorHD9+nPDwcGbOnEl2djahoaEALF26lEGDBvHQQw/Rpk0bYmNjmTdv\nHl26dOHuu++moKAAUCcljYqKIiIignvvvZcjR45c9zpGo5GSkpKKAvXVV18RGhpK586due+++yr2\ni4qK4quvvrLBby6EjVhn0gwhnENWVpbSsWPHiu3MzMyK7SVLliiBgYHKxYsXld9++02pX7++EhcX\npyiKokyZMkV59913FUVRlL59+yoZGRmKoqgL6PXt2/e614mPj1cmTpxYsR0aGqqcPHlSURRFOXfu\nXMX3N23apAwbNszCv6UQ2nHTukgKYc+UW7SW9+nTB09PTzw9PfHy8qpYjj40NJTU1FSKiopITk6u\n1I9VUlJy3fOcOHGCFi1aVGz37NmTMWPGMGzYMIYMGVLx/RYtWpCVlVXN30oI/ZAiJYQV1apVq+Jr\nV9f/397dqygMhFEYPqZPEUPqELA0QRDSDKTwmkRrr8I0KdNZCd5EIAjprbW3DbqVQVeWZTcsO8r7\nVPPll6kOHzMwTlc7jqO2bXW5XOR5nvb7/bffug/E9Xqtqqq02+00nU5V17WGw6Gu12uv834A27Am\nBfTguq7O5/OP37sFjuu6iqJIm82mu940zdPzYRjqdDp19eFwUJqmWq1WCoKgO3X5eDwqDMPfTAWw\nEiEF9OD7vowxiuNYy+VSg8Gg62Tux7f6fnyry7JUURSaTCYaj8fabrdP/zHGPBwuuFgslCSJ4jiW\nMUZJkkiSqqpSlmV/MlfgP7AFHXgRs9lMZVk+rE19xhZ0vBs6KeBFzOdz5Xn+5f2maTQajQgovBU6\nKQCAteikAADWIqQAANYipAAA1iKkAADWIqQAANYipAAA1voA1P1bQHKn4qsAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x5208910>"
]
}
],
"prompt_number": 177
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plot(x_traj(t_lin, tf_num, xf_num), z_traj(t_lin, tf_num, xf_num, c4, c5), '-')\n",
"plot(x_traj(t_lin[::10], tf_num, xf_num), z_traj(t_lin[::10], tf_num, xf_num, c4, c5), 'r+')\n",
"ylim(0, 50e-3)\n",
"title('trajectory (x(t),z(t))');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x5a2f6d0>"
]
}
],
"prompt_number": 178
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Speed (scales with $1/t_f$)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"vx_traj = sympy.lambdify((t, tf, xf), x_sol.diff(t), \"numpy\")\n",
"vz_traj = sympy.lambdify((t, tf, xf, c[4], c[5]), z_sol.diff(t), \"numpy\")\n",
"\n",
"fig = plot_traj(t_lin, vx_traj(t_lin, tf_num, xf_num),\n",
" vz_traj(t_lin, tf_num, xf_num, c4, c5), 'Speed (m/s)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nL/WkyOkpjAAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x6929ed0>"
]
}
],
"prompt_number": 179
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Acceleration (scales with $1/t_f^2$)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ax_traj = sympy.lambdify((t, tf, xf), x_sol.diff(t,t), \"numpy\")\n",
"az_traj = sympy.lambdify((t, tf, xf, c[4], c[5]), z_sol.diff(t,t), \"numpy\")\n",
"\n",
"fig = plot_traj(t_lin, ax_traj(t_lin, tf_num, xf_num),\n",
" az_traj(t_lin, tf_num, xf_num, c4, c5), u'Acceleration (m/s\u00b2)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x56dab10>"
]
}
],
"prompt_number": 180
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Jerk (scales with $1/t_f^3$ !!)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"jx_traj = sympy.lambdify((t, tf, xf), x_sol.diff(t,t,t), \"numpy\")\n",
"jz_traj = sympy.lambdify((t, tf, xf, c[4], c[5]), z_sol.diff(t,t,t), \"numpy\")\n",
"\n",
"fig = plot_traj(t_lin, jx_traj(t_lin, tf_num, xf_num),\n",
" jz_traj(t_lin, tf_num, xf_num, c4, c5), u'Jerk (m/s\u00b3)');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAFiCAYAAACjwUwSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYlOX6wPHvKGhmriSoQKKAoGm4omWLJwWVUjNLs1Is\nW9Q8mpqH6rTZqcS288vSXMIlK9FjLnRSRE2sNHHPFEs0VBgQVMQFFQSe3x/PcYwGU2CY9wXuz3XN\ndZrXmXnvuc8w97zPalFKKYQQQgiTqWZ0AEIIIURxpEAJIYQwJSlQQgghTEkKlBBCCFOSAiWEEMKU\npEAJIYQwJSlQQhjAx8eH9evXX/fjhwwZwsqVK8sxouJ98803PPLII04/rxAgBUqIUuvevTtRUVGl\neq7FYsFisVzXY/fs2cOePXvo379/qc51WUBAAAcPHrzqv3/44Yc0atSIJk2asGTJEgD69u3Lvn37\n+OWXX8p0biFKQwqUEKVUkiJzWX5+fonPM2vWLB5//PESP++PDh06RGFhIX5+fld9zMiRIzl+/Dgz\nZ85k8eLFtuNDhgxh9uzZZTq/EKUhBUoIB/jvf/9Lu3btaNCgAd26dStyxeHj48O7777LbbfdRp06\ndSgoKCjy3P3799OiRYsiReGPYmNjueeee2z358+fT7du3ZgwYQINGjTAz8+PzZs3M2/ePG655RY8\nPDz4/PPPi7zGt99+y3333QfAqlWruPXWW6lbty5eXl588MEHANx4443cddddDBkyhIkTJ9qe2717\nd7799tuyJUiI0lBCiFLp3r27ioqKUjt37lTu7u5q69atqrCwUC1YsED5+PiovLw8pZRSzZo1U+3b\nt1epqanq4sWLSimlfHx81Pr169WOHTvULbfcor799ttiz3Hu3DllsVjUiRMnbMfmzZunXFxc1Pz5\n81VhYaF65ZVXlKenpxozZozKy8tTcXFxqk6dOionJ8f2nF69eqm4uDillFKNGzdWP/74o1JKqezs\nbLVz584i59y2bZu68847bfdPnjypLBaLOnv2rAOyJsT1kysoIcpAKcXs2bN59tln6dy5MxaLhWHD\nhlGzZk22bNkC6KbAsWPH4unpSc2aNW3P3bhxI/3792fhwoWEhYUV+/rZ2dkA1KlTp8jx5s2bEx4e\njsViYdCgQaSlpfHaa6/h6upKSEgINWrUsPU3nT9/nu3bt9O9e3cAatSowb59+zhz5gz16tWjffv2\n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\nDrtMRv53JHkFecztX/VWWsgvzOfOuXfy+G2PMyZ4jNHhlJpSigMnD7AjfQd7M/eSeiaVzJxM8gry\nUCjq1axHoxsb0dKtJa0ataJd43Z41fUyOuwKyRQFqk2bNuzdu7fEz0tJSWHYsGFkZmZisVh45pln\nGDt2LFlZWQwePJgjR47g4+PDkiVLqF+/PgBTpkxh7ty5VK9enWnTphEaGgrAjh07GD58OBcvXiQs\nLIyPPvoIgNzcXIYNG8bOnTtxc3Nj8eLFNGvWzC4WKVBFXW0+R/bFbJbtX0bswVg2HN5A/RvqE+QR\nRKubW+Hb0Be3Wm7cVOMm8gvzOX/pPOnn0kk+lcyuY7vYlrYNn/o+3O9/P4/f9jgBNwcY8M5K77+7\n/suYjWPYM2pPhVml3NEOnDzAHVF3sOnJTTQobFBh5vwUqkK+S/6OxXsXs+rgKlyrudLZszNt3dty\nS71bcK/tTs3qekLy6dzTZOZk8tuJ39h/Yj/b07bjdqMbPZr3oG/LvoT4huBSrfieEZkHVZRDvldV\nGT399NPq559/LvHz0tPT1a5du5RSSp09e1a1bNlSJSYmqkmTJqmpU6cqpZSKjIxUERERSiml9u3b\np4KCglReXp5KTk5Wvr6+qrCwUP1/e3ceFlXd/g/8Da6FGMomCAgMCMgMi4HI4gJuWViCiGmCTy6Z\ny1NaLnW1aG64QEJRUo+mpgSJ5i8UsRTDWFWWxERRcZCBAVwS2YSBmfv7hz8nCU1g9vHzui6vi3Pm\nfM7nPrdnzj1nJyLy9PSkM2fOEBHR5MmTKTU1lYiIvvrqK1q0aBERESUmJtKMGTMeG4sc0qBVampq\npH+LJWI6UnKEghKDqH9Efwr+MZj2FO4hwT1Bl+bZKm6ljBsZtOKXFTQochD5fedHhy8dJrFELO/w\n5e6vpr9oTOwYOll6UtWhqFzsmVga8b8RJKwSqjqUp2poaaDIrEiyjrYmtzg3isqOoiu3r3RpHmKJ\nmAqrCmlb1jYauXMkmWwzoSUpS+hCzYUO0z76vWHks12VeQ6Ojo7Us2dPsre3Jy6XS1wul3g8Xpfn\n89prr9GJEyfIwcGBqquriehBEXNwcCAiok2bNtHmzZul00+aNIlycnJIKBSSo6OjdHxCQgItXLhQ\nOk1ubi4REbW2tpKRkdFj+2YFqqOGlgaKzokmTgyHPL71oJ35O+nu/btymbeoTURJF5No+DfDyfkr\n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\nhxObJkUAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x50fa790>"
]
}
],
"prompt_number": 181
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment