{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Espacio de Estados\n", "\n", "***Describir los sistemas en el espacio de estados y encontrar un controlador para esta representación.***" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mkdir: cannot create directory ‘diagrams’: File exists\r\n" ] } ], "source": [ "# Importamos librerias que utilizaremos en el notebook\n", "\n", "%matplotlib inline\n", "\n", "import control\n", "import matplotlib.pyplot as plt\n", "from matplotlib.animation import FuncAnimation\n", "import numpy\n", "import sympy\n", "import ipywidgets as widgets\n", "\n", "sympy.init_printing()\n", "\n", "!mkdir diagrams;" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Representación en el espacio de estados\n", "\n", "Es una representación matricial de un sistema lineal la cual permite representar sistemas MIMO (multiple-input multiple-output) entre otros. La representación cuenta con dos ecuaciones:\n", "\n", "- La ecuación de estado:\n", "\n", "$$\\dot{\\mathbf{x}} = A\\mathbf{x}+B\\mathbf{u}$$\n", "\n", "- La ecuación de salida:\n", "\n", "$$\\mathbf{y}=C\\mathbf{x}+D\\mathbf{u}$$\n", "\n", "donde $\\mathbf{x}$ es el vector de estados, $\\mathbf{y}$ es el vector de salidas, $\\mathbf{u}$ es el vector de entradas, $A$ es la matriz de estado, $B$ es la matriz de entrada, $C$ es la matriz de salida y $D$ es la matriz de transmision directa. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting diagrams/ss_block.gv\n" ] } ], "source": [ "%%file diagrams/ss_block.gv\n", "// Closed loop diagram\n", "digraph {\n", " graph [splines=ortho]\n", " rankdir = LR\n", " \n", " node[shape=none,width=0.4]\n", " u [label=\"u\"]\n", " y [label=\"y\"]\n", " \n", " node[style=filled, fillcolor=lightgray, shape=rectangle,width=0.7,height=0.7,fixedsize=false]\n", " SS [label=\"ecuaciones del espacio de estados\"]\n", "\n", " // Edges\n", " u -> SS -> y\n", "}" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from graphviz import Source\n", "sourcefile = 'diagrams/ss_block.gv' \n", "gv = open(sourcefile)\n", "dot = Source(gv.read(),engine=\"dot\",format=\"svg\",filename = sourcefile)\n", "dot.render(sourcefile,view=False);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Matrices del espacio de estados\n", "\n", "- $A$ También conocida como la matriz dinámica, es la matriz más importante ya que contiene las leyes físicas que describe el sistema. \n", "- $B$ También conocida como la matriz de los actuadores. Muestra como las entradas afecta los estados, valores de B más grandes implica actuadores más poderosos. Esta matriz nos describe el comportamiento de los actuadores. \n", "- $C$ También conocida como la matriz de los sensores. Describe como podemos nosotros recibir información del sistema. \n", "\n", "Cuando nosotros diseñamos un sistema estamos diseñando dichas matrices. \n", "\n", "![](diagrams/ss_block.gv.svg)\n", "\n", "Para el control del sistema, la pregunta es:\n", "\n", "$$\\textbf{¿Cómo debe ser la entrada seleccionada?}$$\n", "\n", "para lograr que el sistema haga lo que yo quiero. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Estudiemos el espacio de estados \n", "\n", "Para esto usaremos la ecuación diferencial de un sistema masa-resorte-amortiguador (**MKC**)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle F{\\left(t \\right)} = c \\frac{d}{d t} x{\\left(t \\right)} + k x{\\left(t \\right)} + m \\frac{d^{2}}{d t^{2}} x{\\left(t \\right)}$" ], "text/plain": [ " 2 \n", " d d \n", "F(t) = c⋅──(x(t)) + k⋅x(t) + m⋅───(x(t))\n", " dt 2 \n", " dt " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t,m,c,k = sympy.symbols('t m c k')\n", "F = sympy.Function('F')(t)\n", "x = sympy.Function('x')(t)\n", "\n", "eqMKC = sympy.Eq(F,m*sympy.diff(x,t,2)+c*sympy.diff(x,t)+k*x)\n", "display(eqMKC)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "Inicialmente construyamos un diagrama de bloques que represente esta ecuación." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Overwriting diagrams/masa_resorte_amortiguador.gv\n" ] } ], "source": [ "%%file diagrams/masa_resorte_amortiguador.gv\n", "// Closed loop diagram\n", "digraph {\n", " graph [splines=ortho]\n", " \n", " node[shape=point, fillcolor=black]\n", " N1 [pos=\"5.2,0!\"]\n", " N2 [pos=\"7,0!\"]\n", " \n", " node[shape=none,width=0.4]\n", " F [pos=\"0,0!\",label=\"F(s)\"]\n", " X [pos=\"8,0!\",label=\"X(s)\"]\n", " \n", " node[style=filled, fillcolor=lightgray,shape=circle, label=\"\", width=0.3]\n", " S1 [pos=\"1,0!\"]\n", " S2 [pos=\"2,0!\"]\n", " \n", " node[shape=rectangle,width=0.7,height=0.7,fixedsize=true]\n", " iM [pos=\"3,0!\",label=\"1/m\"]\n", " I1 [pos=\"4.5,0!\",label=\"1/s\"]\n", " I2 [pos=\"6,0!\",label=\"1/s\"]\n", " C [pos=\"3,-1!\",label=\"c\"]\n", " K [pos=\"3,-2!\",label=\"k\"]\n", "\n", " // Edges\n", " F -> S1 -> S2 [headlabel=\"+\"]\n", " S2 -> iM \n", " iM -> I1 [taillabel=\" s²X(s)\"]\n", " I1 -> N1 [dir=none]\n", " N1 -> I2 \n", " I2 -> N2 [dir=none]\n", " N2 -> X\n", " N1 -> C\n", " C -> S2 [headlabel=\"- \"]\n", " N2 -> K\n", " K -> S1 [headlabel=\"- \"]\n", "}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from graphviz import Source\n", "sourcefile = 'diagrams/masa_resorte_amortiguador.gv' \n", "gv = open(sourcefile)\n", "dot = Source(gv.read(),engine=\"neato\",format=\"svg\",filename = sourcefile)\n", "dot.render(sourcefile,view=False);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Diagrama de bloques del sistema MKC\n", "\n", "![](diagrams/masa_resorte_amortiguador.gv.svg)\n", "\n", "Se evidencia el uso de dos bloques integradores. El uso de estos bloques da indicios de los estados de este sistema, de cada bloque integrador tenemos, la posición $x(t)$ y la velocidad $\\dot{x}(t)$ de la masa. Estos son los estados del sistema. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Construccion del vector de estados $x$\n", "\n", "Sabemos del diagrama de bloques que la posición $x(t)$ y la velocidad $\\dot{x}(t)$ son los estados del sistema.\n", "\n", "Con estos podemos construir el vector de estados: \n", "\n", "$$\\mathbf{x} = \\left[\\begin{array}{}\\dot{x}(t)\\\\{x}(t)\\end{array}\\right] =\\left[\\begin{array}{}x_1\\\\x_2\\end{array}\\right]$$\n", "\n", "Con $x_1$ y $x_2$, podemos reescribir la ecuación diferencial como:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\dot{x}_1 = - \\frac{c x_{1}}{m} - \\frac{k x_{2}}{m} + \\frac{F{\\left(t \\right)}}{m}$" ], "text/plain": [ " c⋅x₁ k⋅x₂ F(t)\n", "\\dot{x}₁ = - ──── - ──── + ────\n", " m m m " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x1, x2, dx1, dx2 = sympy.symbols('x_1 x_2 \\dot{x}_1 \\dot{x}_2')\n", "\n", "eqMKC = eqMKC.subs(sympy.diff(x,t,2),dx1)\n", "eqMKC = eqMKC.subs(sympy.diff(x,t),x1)\n", "eqMKC = eqMKC.subs(x,x2)\n", "\n", "sol_dx1 = sympy.Eq(dx1,sympy.expand(sympy.solve(eqMKC,dx1)[0]))\n", "sol_dx2 = sympy.Eq(dx2,x1)\n", "display(sol_dx1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "Falta la expresion para $\\dot{x}_2$. La cual es simplemente \n", "\n", "$\\dot{x}_2 = x_1$\n", "\n", "De aquí ya podemos construir la ecuación de estado." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Ecuación de estado para el sistema MKC\n", "\n", "De la ecuaciones anteriores podemos contruir la ecuación matricial de estados:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAABHNCSVQICAgIfAhkiAAAAQNJREFUOI2l0z8vBEEcxvHPiULBVRpEItE4IuKiJuJViLcg50+jtJQoEb03oBSlVudyUehEdKIShQjFzsrexG723FPN/GbmO8/vyUwtSRL9aKDCnmE84xtX/wHsYyIAmr0CZrGFa9xjEqO9AE5Rw24AwGJVwDpWcY4HtEO9q40iwAhO8Iok1DIHXYDBAkCCcWziLdQqO5hDCx1c5OovwdF0cFgIOAvOdvAVrbWlof4GGbewgZUwvvkDnqmJ2xhQxzE+cSl9OLGmsFbk4ABjOMJewc1LuJMLMstgXpr4Ew5LrHekucxgKA/IgtvGewngA49h70K+heWSQ7Ea+UmV31iqvgE/+fAr4s8jAKAAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle A$" ], "text/plain": [ "A" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}- \\frac{c}{m} & - \\frac{k}{m}\\\\1 & 0\\end{matrix}\\right]$" ], "text/plain": [ "⎡-c -k ⎤\n", "⎢─── ───⎥\n", "⎢ m m ⎥\n", "⎢ ⎥\n", "⎣ 1 0 ⎦" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABEAAAASCAYAAAC9+TVUAAAABHNCSVQICAgIfAhkiAAAAR1JREFUOI3F1D0vREEYxfHf3SgU3jXalZBNVF4KWl+Ahm1ofAaJ0iZKpYhKsw2FT6DQofES5VJQiUSEZBM6FDuXm83sLqvwJJMzmcn5z31OntykVCr5a+UiZ4f4yKx3VHGDfcwhyRo6IpDJYN4ImqAHBcyjiKOwr8YgwxhABeuRB4awh1nsYjHWzlTQ8wgAHoLxFQvIN4OcNYDAI07DfrqdL0nrKWhfPSTBhFqYly0gvVlYFjISLq+F1JvUaNBKPeQneaSAPO5x1QjSKo+1oNvpwW8hS1jBHbbqITmMq434RcQ8iE2U8aw2+l+5pRNbQFe4WM2A+zGGGXTiGMu4zb6QQtJWun2P+xtegmEHBziJ9ZhCymG1VbFfwf9APgFRfzlnFyvenAAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle D$" ], "text/plain": [ "D" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}\\frac{1}{m}\\\\0\\end{matrix}\\right]$" ], "text/plain": [ "⎡1⎤\n", "⎢─⎥\n", "⎢m⎥\n", "⎢ ⎥\n", "⎣0⎦" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "MA = sympy.Symbol('A'); display(MA)\n", "mA = sympy.Matrix([[-c/m,-k/m],[1,0]])\n", "display(mA)\n", "\n", "MD = sympy.Symbol('D'); display(MD)\n", "display(sympy.Matrix([1/m,0]))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Estabilidad del sistema MKC\n", "\n", "Para verificar la estabilidad del sistema debemos evaluar los valores propios ($\\lambda$) de la matriz $A$:\n", "\n", "$$I-\\lambda A$$\n", "\n", "para encontrarlo encontremos la ecuación caracteristica con $\\textbf{det}(I-\\lambda A)$:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{\\lambda^{2} k}{m} + \\frac{\\lambda c}{m} + 1$" ], "text/plain": [ " 2 \n", "\\lambda ⋅k \\lambda⋅c \n", "────────── + ───────── + 1\n", " m m " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "l = sympy.Symbol('\\lambda')\n", "caract = (sympy.eye(2)-l*mA).det();\n", "display(caract)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "de aquí los valores propios son: " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ - \\frac{c}{2 m} - \\frac{\\sqrt{c^{2} - 4 k m}}{2 m} : 1, \\ - \\frac{c}{2 m} + \\frac{\\sqrt{c^{2} - 4 k m}}{2 m} : 1\\right\\}$" ], "text/plain": [ "⎧ ____________ ____________ ⎫\n", "⎪ ╱ 2 ╱ 2 ⎪\n", "⎨ c ╲╱ c - 4⋅k⋅m c ╲╱ c - 4⋅k⋅m ⎬\n", "⎪- ─── - ───────────────: 1, - ─── + ───────────────: 1⎪\n", "⎩ 2⋅m 2⋅m 2⋅m 2⋅m ⎭" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(mA.eigenvals())" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "Vemos que son los mismos polos del sistema MKC si lo analizamos de forma clásica. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Una particula en una linea recta sin fricción\n", "\n", "Diseñemos un control proporcional para el sistema propuesto, utilizando el espacio de estados.\n", "\n", "$$m \\ddot{x} = F$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "La ecuación de estado quedaría asi (con $m=1$). \n", "\n", "$$\\dot{\\mathbf{x}}=\\left[\\begin{array}{}0&1\\\\0&0\\end{array}\\right]\\mathbf{x}+\\left[\\begin{array}{}0\\\\1\\end{array}\\right]\\mathbf{u}$$\n", "\n", "La ecuación de salida sería.\n", "\n", "$$\\mathbf{y}=\\left[\\begin{array}{}1&0\\end{array}\\right]\\mathbf{x}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Control de la particula\n", "\n", "Si queremos controlar el sistema con un lazo cerrado debemos conectar de alguna forma la salida $\\mathbf{y}$ con la entrada $\\mathbf{u}$" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot([-2,2],[0,0])\n", "plt.plot([0,0],[-1,1],color='r')\n", "plt.plot([-1],[0],color='k',marker='.',markersize=30)\n", "plt.xlim(-2,2);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "El objetivo de control es que se mueva al origen. **¿Cómo lo logramos?**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\\left.\\begin{array}{}u>0 \\text{ si } y<0 \\\\ u<0 \\text{ si } y>0\\end{array}\\right\\}\\qquad \\to \\qquad u=-y$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Modificación de la dinamica del sistema \n", "\n", "En general tenemos: \n", "\n", "$$\\mathbf{u}=-K\\mathbf{y} = -KC\\mathbf{x} $$\n", "\n", "entonces: \n", "\n", "$$\\dot{\\mathbf{x}}=A\\mathbf{x}+B\\mathbf{u}=A\\mathbf{x}-BKC\\mathbf{x} = \\left(A-BKC\\right)\\mathbf{x}$$\n", "\n", "tenemos aquí un nuevo sistema, el sistema en lazo cerrado.\n", "\n", "$$\\dot{\\mathbf{x}} = \\left(A-BKC\\right)\\mathbf{x}=\\hat{A}\\mathbf{x}$$\n", "\n", "nuestro trabajo ahora es seleccionar $K$ de tal forma que los valores propios de la matriz $\\hat{A}$ den por lo menos un sistema estable. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### La matriz de estado del sistema en lazo cerrado\n", "\n", "Remplazamos los valores de las matrices y de $K=1$:\n", "\n", "$$\\hat{A}=\\left(A-BKC\\right)=\\left(\\left[\\begin{array}{}0&1\\\\0&0\\end{array}\\right]-\\left[\\begin{array}{}0\\\\1\\end{array}\\right]1\\left[\\begin{array}{}1&0\\end{array}\\right]\\right)$$" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}0 & 1\\\\-1 & 0\\end{matrix}\\right]$" ], "text/plain": [ "⎡0 1⎤\n", "⎢ ⎥\n", "⎣-1 0⎦" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mA = sympy.Matrix([[0,1],[0,0]])-sympy.Matrix([0,1])*1*sympy.Matrix([[1,0]])\n", "display(mA)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "Analizando los valores propios del sistema tenemos que: " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAH0AAAAWCAYAAADts5O8AAAABHNCSVQICAgIfAhkiAAAA0RJREFUaIHt2k+oVUUcwPHPS0MhLXPVH0JxERWV8oighaS2EVzkojYSZLSIVmW0SAq5COLCMqhNtBIyiCJKokJa9DZiRZaL/kgRvEIrqAj7g4laLn5z8nU4zr33nXO859r7wjD3vfnNnPnNb85vfjNzJnq9njn+X1zSp3wTPsBxnMGqlvrxGP5JzxtnRqlHD6fwI97E9ecTnJ9p5CbsxZ94DcdSg21wW8o/bqCte3CnmKArsRgv474G2u7HKPWYwsIkfzeuwe1Vgjmjr8UEnsRzs+j0MDyB7fi6gbaeEoP0B47ihgbaHJRR6jGVEhwSE3BRqv8fcu59acq/HLyfs+Y7HBGusS5bhGu7HA830N4wdEWPI+KFvbKqMGf0eSk/NeQDh2WtGKRdDbX3vnjTmhj4YeiSHoXN5lUV9gvkLgSTKf8kI7NHKL+57c7UYGz0yBl9ScpPtNyHQQZrHOiSHn+l/IqqwvMZfQKrxaz8toVOzWRSBBtfZWS24ka80XJf6tAlPaZTvqaqsGz09XgGHwklXpTfpk2LiTFo2luqf5kIVg7Lr10/iODkeEZmlHRNj5fEy/o0XsUOLC8Ky1u29Xgk/f4Mz/dp/BvnXMkgfF/6e6WYeF1wiXXomh7HsBPP4t70v/ckD1A2+qPYJiLRV7Afy8RpXBV31excsQ5+WrOdUdM1PTbgBRzAQ2LJ+XcXVrWm/4Z9eB3XijWoLboU/NSha3qsS3kPnyttu3PRexHALc3I1GVSLA9f9JG7WpxIVUajDbBHva1UV/QoKA5lpqsKc8ewxexoay+/QJzvH8bpPrI7cT8eEAbKsTEluCrld8yo9zMeL9UpdOzXjyq6pEdBVp+c0ds+0boZl2reJa4SAzuTFSkRHqw8WLfgd7w9i+d1SY8ylTbMGf1kyivPbxvgkDgPGITNBne9vZQGZQluFVvVX4eoV9AVPWZS2KxyZ5Vz3cVN0YO4ro/sOLNaLGW7R92RBlggrlPXiID8pyqhnCHfEXv1DeL2qM2PKEbJW+Ieuq1vBS4UPfFmfyhu5nbj7yrBnHs/Ie5k14lt2yLjPzAXM1MicPsFB0VgWUnO6MS6/m5Kc3SbKec+oshysa7Tc2Q4C/+3y4js8GdiAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle \\left\\{ - i : 1, \\ i : 1\\right\\}$" ], "text/plain": [ "{-ⅈ: 1, ⅈ: 1}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(mA.eigenvals())" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "El sistema es criticamente estable. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Respuesta de la particula al lazo cerrado\n", "\n", "Con el controlador propuesto, la particula se comporta como se muestra. " ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.rcParams[\"animation.html\"] = \"html5\"#\"jshtml\"\n", "\n", "t = numpy.linspace(0,2*numpy.pi,40)\n", "x = numpy.sin(t)\n", "\n", "fig, ax = plt.subplots();\n", "\n", "ax.plot([-2,2],[0,0])\n", "ax.plot([0,0],[-1,1],color='r')\n", "plt.xlim(-2,2);\n", "l, = ax.plot([0],[0],color='k',marker='.',markersize=30)\n", "\n", "animate = lambda i: l.set_data([x[i]], [0]);\n", "\n", "ani = FuncAnimation(fig, animate, frames=len(t), interval=1000/40);" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(ani)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "**¿Por qué no se queda en el origen si este es el objetivo?**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- No tenemos en cuenta la velocidad. \n", "- Necesitamos la información del estado (posición,velocidad) del sistema para estabilizarlo." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Estabilizando la particula \n", "\n", "Para estabilizar la particula necesitamos conocer la información de todos los estados del sistema. Salvo que en nuestro sistema solo tenemos un sensor de posición:\n", "\n", "$$\\mathbf{y}=\\left[\\begin{array}{}1&0\\end{array}\\right]\\mathbf{x}$$\n", "\n", "El estado desconocido es la velocidad, el cual puede ser estimado de la posición. Por ahora supongamos que podemos medir ambos estados. \n", "\n", "$$\\mathbf{y}_{supuesto}=\\left[\\begin{array}{}1&0\\\\0&1\\end{array}\\right]\\mathbf{x}$$\n", "\n", "con esta nueva matriz $C$, proponemos un controlador $K$:\n", "\n", "$$K = \\left[\\begin{array}{}k_1&k_2\\end{array}\\right]$$\n", "\n", "Encontremos la nueva matriz $\\hat{A}$ para el sistema en lazo cerrado." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Nueva matriz de estado del sistema en lazo cerrado\n", "\n", "Recordemos que aquí estamos suponiendo que podemos medir ambos estados del sistema (posición y velocidad). Remplazamos los valores de las matrices y de $K$:\n", "\n", "$$\\hat{A}=\\left(A-BKC\\right)=\\left(\\left[\\begin{array}{}0&1\\\\0&0\\end{array}\\right]-\\left[\\begin{array}{}0\\\\1\\end{array}\\right]\\left[\\begin{array}{}k_1&k_2\\end{array}\\right]\\left[\\begin{array}{}1&0\\\\0&1\\end{array}\\right]\\right)$$\n", "\n", "Luego $\\hat{A}=$" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}0 & 1\\\\- k_{1} & - k_{2}\\end{matrix}\\right]$" ], "text/plain": [ "⎡ 0 1 ⎤\n", "⎢ ⎥\n", "⎣-k₁ -k₂⎦" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "k1,k2 = sympy.symbols('k_1 k_2')\n", "mA3 = sympy.Matrix([[0,1],[0,0]])-sympy.Matrix([0,1])*sympy.Matrix([[k1,k2]])*sympy.Matrix([[1,0],[0,1]])\n", "display(mA3)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Los valores propios o polos del sistema son:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ - \\frac{k_{2}}{2} - \\frac{\\sqrt{- 4 k_{1} + k_{2}^{2}}}{2} : 1, \\ - \\frac{k_{2}}{2} + \\frac{\\sqrt{- 4 k_{1} + k_{2}^{2}}}{2} : 1\\right\\}$" ], "text/plain": [ "⎧ _____________ _____________ ⎫\n", "⎪ ╱ 2 ╱ 2 ⎪\n", "⎨ k₂ ╲╱ -4⋅k₁ + k₂ k₂ ╲╱ -4⋅k₁ + k₂ ⎬\n", "⎪- ── - ────────────────: 1, - ── + ────────────────: 1⎪\n", "⎩ 2 2 2 2 ⎭" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "eigen = mA3.eigenvals()\n", "display(eigen)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Escogamos los valores del controlador" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "07990ac39ddb4492bf4c5127d74f671e", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatSlider(value=1.0, description='k1', max=10.0, orientation='vertical'), FloatSlider(value=2…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "## Parametros del modelo\n", "\n", "paramK1 = widgets.FloatSlider(value=1,min=0,max=10,step=0.1,description='k1', orientation=\"vertical\")\n", "paramK2 = widgets.FloatSlider(value=2,min=0,max=5,step=0.1,description='k2', orientation=\"vertical\")\n", "\n", "## Definicion de la simulacion\n", "\n", "def polos(K1,K2):\n", " P1 = -K2/2+sympy.sqrt(K2**2-4*K1)/2\n", " P2 = -K2/2-sympy.sqrt(K2**2-4*K1)/2\n", " plt.scatter([sympy.re(P1),sympy.re(P2)],[sympy.im(P1),sympy.im(P2)])\n", " plt.grid()\n", " plt.title('Polos de la Particula en lazo cerrado con sensores de posición y velocidad')\n", " plt.xlabel('Real')\n", " plt.ylabel('Imaginario')\n", " plt.ylim(-3,3)\n", " plt.xlim(-6,0)\n", "\n", "## Presentación de los resultados \n", " \n", "plot_exponencial = widgets.interactive_output(polos,{'K1':paramK1,'K2':paramK2}) \n", "widgets.HBox([paramK1,paramK2,plot_exponencial])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "polos(3,2)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Verifiquemos el comportamiento de la particula\n", "\n", "Tomemos los valores para el controlador $k_1=1$ y $k_2=2$:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.rcParams[\"animation.html\"] = \"html5\"#\"jshtml\"\n", "\n", "particula = control.ss('0 1;-1 -2','1;0','1 0','0')\n", "t,x = control.impulse_response(particula)\n", "\n", "fig, ax = plt.subplots();\n", "\n", "ax.plot([-2,2],[0,0])\n", "ax.plot([0,0],[-1,1],color='r')\n", "plt.xlim(-2,2);\n", "l, = ax.plot([0],[0],color='k',marker='.',markersize=30)\n", "\n", "animate = lambda i: l.set_data([-x[i]], [0]);\n", "\n", "ani = FuncAnimation(fig, animate, frames=len(t), interval=1000/40);" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(ani)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Posicionamiento de polos\n", "\n", "El posicionamiento de polos nos permite definir el comportamiento deseado del sistema. Tomemos como ejemplo es caso anterior de la particula, cuya ecuación de estados se presenta a contuación:\n", "\n", "$$\\dot{\\mathbf{x}}=\\left[\\begin{array}{}0&1\\\\0&0\\end{array}\\right]\\mathbf{x}+\\left[\\begin{array}{}0\\\\1\\end{array}\\right]\\mathbf{u}$$\n", "\n", "A traves de la libreria de control de python, podemos obtener los valores del controlador que nos permita tener de comportamiento deseado. Con `contro.place(A,B,poles)` obtenemos los siguientes valores para los polos [-1,-2]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "matrix([[2., 3.]])" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A4 = [[0,1],[0,0]]\n", "B4 = [[0],[1]]\n", "\n", "display(control.place(A4,B4,[-1,-2]))\n", "#display(control.acker(A4,B4,[-1,-2]))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Contra ejemplo\n", "\n", "Con el siguiente sistema no se le puede ubicar los polos. \n", "\n", "$$\\dot{\\mathbf{x}}=\\left[\\begin{array}{}2&0\\\\1&1\\end{array}\\right]\\mathbf{x}+\\left[\\begin{array}{}1\\\\1\\end{array}\\right]\\mathbf{u}$$\n", "\n", "El controlador para dicho sistema seria: " ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "text/plain": [ "matrix([[-6.36905167e+15, 6.36905167e+15]])" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A4 = [[2,0],[1,1]]\n", "B4 = [[1],[1]]\n", "\n", "display(control.place(A4,B4,[-21,-20]))" ] } ], "metadata": { "celltoolbar": "Slideshow", "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.9" } }, "nbformat": 4, "nbformat_minor": 4 }