{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Concise Form of Dimensional EoMs (Undergraduate Version)\n", "\n", "\n", "{admonition} An update\n", ":class: dropdown\n", "The following is the derivation that *I* was taught when I was an undergrad - and the derivation captures all the important things that need to be instilled in a good graduate engineer. That is; it captures the physics of the situation and it helps one to understand where different terms come from, and how quantities are interrelated.\n", "\n", "However - the methodology below is great _if you already have a set of stability derivatives presented in concise, dimensional form_. In reality, as I have discovered working as an S&C engineer, you'll rarely get this.\n", "\n", "So the following is great for understanding how the equations are developed and how we get there, but I'll present a slightly different methodology in the section after this. My coding skills have also improved since I first wrote this website, and I'll write a means to store and convert derivatives in a _slightly-more_ object oriented fashion. Whatever that means.\n", "" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-input", "remove-output" ] }, "source": [ "$$\\newcommand{\\pd}[2]{\\frac{\\partial#1}{\\partial#2}}$$\n", "$$\\newcommand{\\ppd}[2]{\\frac{\\partial^2#1}{\\partial#2^2}}$$\n", "$$\\newcommand{\\pppd}[2]{\\frac{\\partial^3#1}{\\partial#2^3}}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As demonstrated above, the dimensional EoMs are either symmetric (a.k.a. longitudinal), where $u,w,q$ are controlled by $\\theta$ and $\\delta_e$, or asymmetric (a.k.a. lateral/directional) where $v,p,r$ are controlled by $\\delta_a$ and $\\delta_r$. This is a consequence of our assumptions made to remove stability derivatives.\n", "\n", "That is, this was _enforced_ by the [assumption of zero cross-coupling](assmption:cross-coupling) rather than being a natural consequence of the physics.\n", "\n", "Since these assumptions have been made, the two sets of equations may be treated in isolation from each other and presented in a matrix form. First, look at the symmetric equations:\n", "\n", "$$\\color{red}{m\\dot{u}= \\left.\\pd{X}{u}\\right|_0u + \\left.\\pd{X}{w}\\right|_0w - mg\\cdot\\cos\\theta_0\\cdot\\theta^\\prime}$$(eq:fwdspeedeqn)\n", "\n", "\n", "$$\\color{red}{m\\dot{w}= \\left.\\pd{Z}{u}\\right|_0u + \\left.\\pd{Z}{w}\\right|_0w + mU_0q - mg\\cdot\\sin\\Theta_0\\cdot\\theta^\\prime + \\left.\\pd{Z}{\\delta_e}\\right|_0\\delta_e}$$(eq:heaveequation)\n", "\n", "\n", "\n", "$$\\color{red}{I_{yy}\\dot{q} = \\left.\\pd{M}{u}\\right|_0u+\\left.\\pd{M}{w}\\right|_0w+\\left.\\pd{M}{\\dot{w}}\\right|_0\\dot{w}+\\left.\\pd{M}{q}\\right|_0q+\\left.\\pd{M}{\\delta_e}\\right|_0\\delta_e}$$(eq:pitchmomentequation)\n", "\n", "\n", "\n", "\n", "### Longitudinal EoMs\n", "\n", "1. The X-Force equation (*forward speed equation*):\n", "\n", " Taking Equation {eq}eq:fwdspeedeqn and dividing by $m$:\n", "\n", " $$\\dot{u} = X_uu + X_ww - g\\cdot\\cos\\theta_0\\theta^\\prime$$(eq:concisex)\n", " \n", " where\n", " \n", " $$X_u\\triangleq \\frac{1}{m}\\left.\\pd{X}{u}\\right|_0, X_w\\triangleq \\frac{1}{m}\\left.\\pd{X}{w}\\right|_0$$\n", " \n", "2. The Z-Force equation (*heave equation*):\n", "\n", " Taking Equation {eq}eq:heaveequation and dividing by $m$:\n", "\n", " $$\\dot{w} = Z_uu + Z_ww + U_eq - g\\cdot\\sin\\theta_0\\cdot\\theta^\\prime + Z_{\\delta_e}\\delta_e$$(eq:concisew)\n", " \n", " where\n", " \n", " $$Z_u\\triangleq \\frac{1}{m}\\left.\\pd{Z}{u}\\right|_0, Z_w\\triangleq \\frac{1}{m}\\left.\\pd{Z}{w}\\right|_0, Z_{\\delta_e}\\triangleq \\frac{1}{m}\\left.\\pd{Z}{\\delta_e}\\right|_0$$\n", "\n", "3. The M-Moment equation (*pitching moment equation*):\n", "\n", " If we take Equation {eq}eq:pitchmomentequation and divide by $I_{yy}$:\n", "\n", " $$\\dot{q} = M_uu + M_ww + M_{\\dot{w}}\\dot{w} + M_qq + M_{\\delta_e}\\delta_e$$\n", " \n", " where\n", " \n", " $$M_u\\triangleq \\frac{1}{I_{yy}}\\left.\\pd{M}{u}\\right|_0, \\text{and the rest of the pattern should be clear}$$\n", " \n", " There is already an expression for $\\dot{w}$, Equation {eq}eq:concisew, which may be substituted in:\n", " \n", " $$\\dot{q} = M_uu + M_ww + M_{\\dot{w}}\\left(Z_uu + Z_ww + U_eq - g\\cdot\\sin\\theta_0\\cdot\\theta^\\prime + Z_{\\delta_e}\\delta_e \\right) + M_qq + M_{\\delta_e}\\delta_e$$\n", " \n", " and can be simplified[^4] to:\n", " \n", " $$\\dot{q} = M_u^*u + M_w^*w +M_\\omega^*\\omega + M_q^*q + M_{\\delta_e}^*\\delta_e$$(eq:conciseq)\n", " \n", " where\n", " \n", " $$\\begin{split}&M_u^*\\triangleq M_u + M_{\\dot{w}}Z_u\\hphantom{======} M_w^*\\triangleq M_w+M_{\\dot{w}}Z_w\\hphantom{======}M_q^*\\triangleq M_q+M_{\\dot{w}}U_0\\\\\n", "&M_{\\delta_e}^*\\triangleq M_{\\delta_e}+M_{\\dot{w}}Z_{\\delta_e}\\hphantom{======}M_{\\theta}^*\\triangleq-M_{\\dot{w}}g\\sin\\theta_0\n", " \\end{split}$$(eq:conciseqterms)\n", "\n", "4. The linearised Euler pitch equation (*pitch rate kinematic equation*):\n", "\n", " $q$ is pitch rate, from Eq {eq}eq:pitchratekinematic: \n", " \n", " $$\\dot{\\theta}^\\prime = q$$\n", "\n", "Now Equations {eq}eq:concisex, {eq}eq:concisew, {eq}eq:conciseq, and {eq}eq:pitchratekinematic can be written in matrix form to give the **linearised equation of longitudinal motion in concise form**:\n", "\n", "\\begin{aligned}\n", " \\begin{bmatrix} \\dot{u}\\\\\\dot{w}\\\\\\dot{q}\\\\\\dot{\\theta}\\end{bmatrix} &= \\begin{bmatrix}\n", " X_u & X_w & 0 & -g\\cdot\\cos\\theta_0\\\\\n", " Z_u & Z_w & U_0 & -g\\cdot\\sin\\theta_0\\\\\n", " M_u^* & M_w^* & M_q^* & M_\\theta^*\\\\\n", " 0 & 0 & 1 & 0 \n", " \\end{bmatrix}\\begin{bmatrix}\n", " {u}\\\\{w}\\\\{q}\\\\{\\theta} \n", " \\end{bmatrix} + \\begin{bmatrix}\n", " 0\\\\Z_{\\delta_e}\\\\M_{\\delta_e}^*\\\\0 \n", " \\end{bmatrix}\\left[\\delta_e\\right]\\end{aligned}(eq:conciselon)\n", "$$\\dot{\\vec{x}} = A\\vec{x} + B\\vec{u}$$\n", "\n", "Which is in state space form. Equation {eq}eq:conciselon is a series of simultaneous 1st order ODEs with constant coefficients which may solved to find the longitudinal response ($u,v,q,\\theta$) of an aircraft due to elevator deflection ($\\delta_e$).\n", "\n", "[^4]: recalling that _simplify_ often means _make look nicer, but complicate the matter by introducing new terminology_" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lateral/Directional EoMs\n", "\n", "The asymmetric or lateral/directional EoMs may be similarly manipulated.\n", "\n", "$$\\color{darkgreen}{m\\dot{v}=\\left.\\pd{Y}{v}\\right|_0v - mU_0r+mg\\cdot cos\\theta_0\\cdot\\phi^\\prime\\left.\\pd{Y}{\\delta_r}\\right|_0\\delta_r}$$(eq:sideslipequation)\n", " \n", "$$\\color{darkgreen}{I_{xx}\\dot{p} - I_{xz}\\dot{r} = \\left.\\pd{L}{v}\\right|_0v + \\left.\\pd{L}{p}\\right|_0p+\\left.\\pd{L}{r}\\right|_0r+\\left.\\pd{L}{\\delta_r}\\right|_0\\delta_r+\\left.\\pd{L}{\\delta_a}\\right|_0\\delta_a}$$(eq:rollmomentequation)\n", "\n", "$$\\color{darkgreen}{I_{zz}\\dot{r}-I_{xz}\\dot{p} = \\left.\\pd{N}{v}\\right|_0v+ \\left.\\pd{N}{p}\\right|_0p + \\left.\\pd{N}{r}\\right|_0r + \\left.\\pd{N}{\\delta_r}\\right|_0\\delta_r+ \\left.\\pd{N}{\\delta_a}\\right|_0\\delta_a}$$(eq:yawmomentequation)\n", "\n", "1. The Y-Force equation (*sideslip equation*): Taking Equation {eq}eq:sideslipequation and dividing by $m$:\n", "\n", " $$\\dot{v} = Y_vv-U_er + g\\cdot\\cos\\theta_0\\phi + Y_{\\delta_r}{\\delta_r}$$\n", "\n", " where\n", " \n", " $$Y_v\\triangleq\\frac{1}{m}\\pd{Y}{v},\\,Y_{\\delta_r}\\triangleq\\frac{1}{m}\\pd{Y}{\\delta_r}$$\n", "\n", "2. The two moment equations are coupled, so need to be decoupled. Dividing Equation {eq}eq:rollmomentequation by the rolling moment of inertia, $I_xx$:\n", "\n", " $$\\dot{p} = \\frac{I_{xz}}{I_{xx}}\\dot{r} + L_vv + L_pp + L_rr + L_{\\delta_r}{\\delta_r} + L_{\\delta_a}\\delta_a$$(eq:rollingint)\n", " \n", " where\n", " \n", " $$L_v\\triangleq\\frac{1}{I_{xx}}\\pd{L}{v},\\,L_{p}\\triangleq\\frac{1}{I_{xx}}\\pd{L}{p},\\,\\text{etc.}$$\n", "\n", " the same can be performed for {eq}eq:yawmomentequation, dividing by the yawing moment of inertia $I_{zz}$:\n", "\n", " $$\\dot{r} = \\frac{I_{xz}}{I_{zz}}\\dot{p} + N_vv+N_pp + N_rr + N_{\\delta_r}\\delta_r+N_{\\delta_a}\\delta_a$$(eq:yawingint)\n", "\n", " Clearly Equations {eq}eq:rollingint and {eq}eq:yawingint are coupled, and must be decoupled if we want to use them in standard form. Substituting equation {eq}eq:yawingint into {eq}eq:rollingint, after a little manipulation (if you do this yourself, I promise you'll understand this subject better), the following is achieved: \n", "\n", " $$\\begin{split}\\dot{p}\\left(1-\\frac{I_{xz}^2}{I_{xx}I_{zz}}\\right) &= \\left(L_v + \\frac{I_{xz}}{I_{xx}}N_v\\right)v + \\left(L_p + \\frac{I_{xz}}{I_{xx}}N_p\\right)p+\\left(L_r+\\frac{I_{xz}}{I_{xx}}N_r\\right)r +\\ldots\\\\ &\\left(L_{\\delta_r} + \\frac{I_{xz}}{I_{xx}N_{\\delta_r}}\\right)\\delta_r + \\left(L_{\\delta_a}+\\frac{I_{xz}}{I_{xx}}N_{\\delta_a}\\right)\\delta_a\\end{split}$$\n", "\n", " Noting that:\n", "\n", " $$1-\\frac{I_{xz}^2}{I_{xx}I_{zz}} = \\frac{I_{xx}I_{zz}-I_{zz}^2}{I_{xx}I_{zz}}$$\n", "\n", " hence, the **rolling moment equation** may be weitten as:\n", "\n", " $$\\dot{p} = L_v^*v + L_p^*p + L_r^*r+L_{\\delta_r}^*\\delta_r+L_{\\delta_a}^*\\delta_a$$\n", "\n", " where:\n", "\n", " $$\\begin{gathered}\n", " L_v^* = \\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(L_v+\\frac{I_{xz}}{I_{xx}}N_v\\right) \\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\, L_p^*=\\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(L_p+\\frac{I_{xz}}{I_{xx}}N_p\\right)\\\\\n", " L_r^* = \\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(L_r+\\frac{I_{xz}}{I_{xx}}N_r\\right) \\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\, L_{\\delta_r}^*=\\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(L_{\\delta_r}+\\frac{I_{xz}}{I_{xx}}N_{\\delta_r}\\right)\\\\\n", " L_{\\delta_a}^*=\\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(L_{\\delta_a}+\\frac{I_{xz}}{I_{xx}}N_{\\delta_a}\\right)\n", " \\end{gathered}$$\n", "\n", " Similarly, by substituting {eq}eq:rollingint into {eq}eq:yawingint, the **yawing moment equation** is yielded:\n", "\n", " $$\\dot{r} = N_v^*v + N_p^*p + N_r^*r + N_{\\delta_r}^*\\delta_r + N_{\\delta_a}^*\\delta_a$$\n", "\n", " where:\n", "\n", " $$\\begin{gathered}\n", " N_v^* = \\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(N_v+\\frac{I_{xz}}{I_{zz}}L_v\\right) \\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\, N_p^*=\\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(N_p+\\frac{I_{xz}}{newI_{zz}}L_p\\right)\\\\\n", " N_r^* = \\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(N_r+\\frac{I_{xz}}{I_{zz}}L_r\\right) \\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\,\\, N_{\\delta_r}^*=\\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(N_{\\delta_r}+\\frac{I_{xz}}{I_{zz}}L_{\\delta_r}\\right)\\\\\n", " N_{\\delta_a}^*=\\frac{I_{xx}I_{zz}}{I_{xx}I_{zz}-I_{xz}^2}\\left(N_{\\delta_a}+\\frac{I_{xz}}{I_{zz}}L_{\\delta_a}\\right) \n", " \\end{gathered}$$\n", "\n", " often $I_{xz}$ is small compared to $I_{xx}$ and $I_{zz}$, so for these circumstances $N_v^*\\simeq N_v$, $L_v^*\\simeq L_v$\n", "\n", "\n", "3. Lastly, the yaw rate and body rate kinematic equations give:\n", "\n", " \\begin{aligned}\n", " r &= \\dot{\\psi}\\cos\\theta_0\\\\\n", " \\implies \\dot{\\psi} &= r\\cdot\\sec\\theta_0\\\\\n", " p &= \\dot{\\phi}-\\dot{\\psi}\\sin\\theta_0\\\\\n", " \\implies\\dot{\\phi} &= p + r\\cdot\\tan\\theta_0\n", " \\end{aligned}\n", "\n", "So finally, the *linearised lateral/directional equations of motion* may be expressed in *state-space form:*\n", "\n", "$$\\begin{bmatrix}\\dot{v}\\\\\\dot{p}\\\\\\dot{r}\\\\\\dot{\\phi}\\\\\\dot{\\psi}\\end{bmatrix}=\\begin{bmatrix}Y_v & 0 & -U_0 & g\\cdot\\cos\\theta_0 & 0\\\\L_v^* & L_p^* & L_r^* & 0 & 0\\\\N_v^* & N_p^* & N_r^* & 0 & 0\\\\0 & 1 & \\tan\\theta_0 & 0 & 0 \\\\ 0 & 0 & \\sec\\theta_0 & 0 & 0\\end{bmatrix}\\begin{bmatrix}v\\\\p\\\\r\\\\\\phi\\\\\\psi\\end{bmatrix}+\\begin{bmatrix}Y_{\\delta_r} & 0\\\\L_{\\delta_r}^* & L_{\\delta_a}^*\\\\N_{\\delta_r}^* & N_{\\delta_a}^*\\\\0 & 0\\\\0 & 0\\end{bmatrix}\\begin{bmatrix}\\delta_r\\\\\\delta_a\\end{bmatrix}$$(eq:conciselat)\n", "\n", "These are a series of linear differential equations which may be solved to give the aircraft lateral/directional response to inputs of rudder and aileron. You can observe that only the final equation has terms that involve $\\psi$, and it may solved in isolation.\n", "\n", "The two sets of matrix equations, {eq}eq:conciselon and {eq}eq:conciselat, are known as *the equations of motion in concise form*.\n", "\n", "As will prove to be integral to Module 5, these are in **state space form**\n", "\n", "$$\\dot{\\vec{x}} = \\boldsymbol{A}\\vec{x} + \\boldsymbol{B}\\vec{u}$$\n", "\n", "where \n", "\n", "$$\\vec{x} = \\text{the state vector (n)}$$\n", "$$\\vec{u} = \\text{the control matrix (m)}$$\n", "$$\\boldsymbol{A} = \\text{the system matrix (n by n)}$$\n", "$$\\boldsymbol{B} = \\text{the control matrix (n by m)}$$\n", "\n", "for a system with $n$ states and $m$ controls. There are three reasons why we write the equations of motion in state space form:\n", "\n", "- The aircraft stability characteristics are obtained directly from the system matrix, $\\boldsymbol{A}$ - this will be explored in the final module.\n", "\n", "- In studies of aircraft control systems, the state space form is easiest to analyse.\n", "\n", "- Since $\\boldsymbol{A}$ and $\\boldsymbol{B}$ are constant matrices, we can numerically integrate the equations of motion (using a Runge-Kutta method) to obtain the **time response** of the aircraft to a given control displacement - we may wish to calculate the longitudinal response (time histories of $u,w,q,\\theta$) to a step change in elevator, $\\delta_e$.\n", "\n", "For the longitudinal equations in state space form, we have:\n", "\n", "$$\\boldsymbol{A}=\\begin{bmatrix}\n", " X_u & X_w & 0 & -g\\cdot\\cos\\theta_0\\\\\n", " Z_u & Z_w & U_0 & -g\\cdot\\sin\\theta_0\\\\\n", " M_u^* & M_w^* & M_q^* & M_\\theta^*\\\\\n", " 0 & 0 & 1 & 0 \n", " \\end{bmatrix}, \\vec{x}=\\begin{bmatrix}\n", " {u}\\\\{w}\\\\{q}\\\\{\\theta} \n", " \\end{bmatrix}, \\boldsymbol{B}= \\begin{bmatrix}\n", " 0\\\\Z_{\\delta_e}\\\\M_{\\delta_e}^*\\\\0 \n", " \\end{bmatrix}, \\vec{u}=\\left[\\delta_e\\right]$$\n", "\n", "For the lateral/directional equations in state space form:\n", "\n", "$$\\boldsymbol{A}=\\begin{bmatrix}Y_v & 0 & -U_0 & g\\cdot\\cos\\theta_0 & 0\\\\L_v^* & L_p^* & L_r^* & 0 & 0\\\\N_v^* & N_p^* & N_r^* & 0 & 0\\\\0 & 1 & \\tan\\theta_0 & 0 & 0 \\\\ 0 & 0 & \\sec\\theta_0 & 0 & 0\\end{bmatrix}, \\vec{x} = \\begin{bmatrix}v\\\\p\\\\r\\\\\\phi\\\\\\psi\\end{bmatrix}, \\boldsymbol{B}=\\begin{bmatrix}Y_{\\delta_r} & Y_{\\delta_a}\\\\L_{\\delta_r}^* & L_{\\delta_a}^*\\\\N_{\\delta_r}^* & N_{\\delta_a}^*\\\\0 & 0\\\\0 & 0\\end{bmatrix}, \\vec{u}=\\begin{bmatrix}\\delta_r\\\\\\delta_a\\end{bmatrix}$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some aircraft may have derivatives listed that have been neglected in the preceding - for example, you may find an aircraft with a nonzero $C_{D_q}$, which is the nondimensional form of $X_q$. You can hopefully appreciate that it can be readily re-inserted into the longitudinal equations of motion by choosing the logical place to insert into the system matrix:\n", "\n", "$$\\boldsymbol{A}=\\begin{bmatrix}\n", " X_u & X_w & \\color{red}{X_q} & -g\\cdot\\cos\\theta_0\\\\\n", " Z_u & Z_w & U_0 & -g\\cdot\\sin\\theta_0\\\\\n", " M_u^* & M_w^* & M_q^* & M_\\theta^*\\\\\n", " 0 & 0 & 1 & 0 \n", " \\end{bmatrix}$$\n", " \n", "Similarly, if you have an aircraft with a $C_{X_{\\delta_e}}$ and hence $\\cdot X_{\\delta_e}$ term, then this would be inserted into the control matrix\n", "\n", "$$\\boldsymbol{B}= \\begin{bmatrix}\n", " \\color{red}{X_{\\delta_e}}\\\\Z_{\\delta_e}\\\\M_{\\delta_e}^*\\\\0 \n", " \\end{bmatrix}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Units\n", "\n", "As we'll discover, it's useful to know the dimensions of the different derivatives. Rather than writing them all out, the following guide will help:\n", "\n", "#### Force Derivative wrt Velocity Perturbation\n", "\n", "This is the terms like $X_u$ or $Z_w$. These all have units of $\\left[\\text{T}^{-1}\\right]$ or $s^{-1}$" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }