{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "## Libreria de control\n", "try:\n", " from control.matlab import *\n", "except:\n", " !pip install control\n", " from control.matlab import *\n", " \n", "## Libreria para graphicar\n", "import matplotlib.pyplot as plt\n", "import numpy\n", "\n", "## Libreria para animaciones\n", "from matplotlib.animation import FuncAnimation\n", "plt.rcParams[\"animation.html\"] = \"html5\"#\"jshtml\"\n", "\n", "## Libreria para importar Iframe de Youtube\n", "from IPython.display import IFrame" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Sistemas Lineales\n", "_Adentrandonos en la matemática del asunto_" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Hasta el momento\n", "_Sabemos_\n", "\n", "- Lo básico del control\n", "- Plataformas moviles\n", "\n", "Pero necesitamos más rigor!\n", "\n", "# Necesitamos Modelos \n", "\n", "- Suficientemente generales\n", "- Suficientemente simples\n", "- Suficientemente expresivos\n", "- Suficientemente relevantes\n", "\n", "**de sistemas lineales**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Controlando una masa puntual\n", "\n", "![](masa-puntual.png)\n", "\n", "Dada una masa puntual sobre una linea, cuya aceleración is directamente controlada:\n", "\n", "$$\\ddot{p} = u$$\n", "\n", "Escribiendo la ecuación diferencial en una forma más general (espacio de estados tenemos):\n", "\n", "$$\\array{\n", "x_1 = p &&& \\dot{x}_1 = x_2 \\\\\n", "x_2 = \\dot{p} &&& \\dot{x}_2 = u\n", "}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Forma de la ecuación en espacio de estados\n", "\n", "Tenemos que la derivada de la posición ($x_1$) es la velocidad $\\dot{x}_1 = x_2$ y que la derivada de la velocidad ($x_2$) es la aceleración $\\dot{x}_2=u$, el estado del sistema es \"2-dimensional\":\n", "\n", "$$x=\\left[\\array{x_1\\\\x_2}\\right]$$\n", "\n", "La ecuación de estado es:\n", "\n", "$$\\dot{x}=\\left[\\array{\\dot{x}_1\\\\\\dot{x}_2}\\right]=\\left[\\array{x_2\\\\u}\\right]=\\left[\\array{0&1\\\\0&0}\\right]\\left[\\array{x_1\\\\x_2}\\right]+\\left[\\array{0\\\\1}\\right]u$$\n", "\n", "La ecuación de salida es:\n", "\n", "$$y=p=x_1=\\left[\\array{1&0}\\right]x$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Forma general del espacio de estados\n", "\n", "Teniendo esto,\n", "\n", "$$\\dot{x}=\\left[\\array{\\dot{x}_1\\\\\\dot{x}_2}\\right]=\\left[\\array{x_2\\\\u}\\right]=\\left[\\array{0&1\\\\0&0}\\right]\\left[\\array{x_1\\\\x_2}\\right]+\\left[\\array{0\\\\1}\\right]u$$\n", "\n", "$$y=p=x_1=\\left[\\array{1&0}\\right]x$$\n", "\n", "Podemos llevarlo a:\n", "\n", "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "donde, para este caso:\n", "\n", "$$\\array{A=\\left[\\array{0&1\\\\0&0}\\right]&B=\\left[\\array{0\\\\1}\\right]&C=\\left[\\array{1&0}\\right]}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Caso para un masa puntual en dos dimensiones\n", "\n", "Teniendo las ecuaciones diferenciales :\n", "\n", "$$\\array{\\ddot{p}_x=u_x&&&\\ddot{p}_y=u_y}$$\n", "\n", "\n", "encontrar las matrices $A$, $B$ y $C$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "siendo: \n", "- el estado del sistema \n", " $$x^T=\\left[\\array{p_x&\\dot{p}_x&p_y&\\dot{p}_y}\\right]^T$$ \n", "- la entrada del sistema \n", " $$u^T=\\left[\\array{u_x&u_y}\\right]^T$$\n", "- la salida del sistema\n", " $$y^T=\\left[\\array{p_x&p_y}\\right]^T$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Caso para un masa puntual en dos dimensiones\n", "\n", "Podemos llevarlo a:\n", "\n", "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "donde, para este caso:\n", "\n", "$$\\array{A=\\left[\\array{0&1&0&0\\\\0&0&0&0\\\\0&0&0&1\\\\0&0&0&0}\\right]&B=\\left[\\array{0&0\\\\1&0\\\\0&0\\\\0&1}\\right]&C=\\left[\\array{1&0&0&0\\\\0&0&1&0}\\right]}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Sistema LTI\n", "\n", "Los sistemas LTI (_Linear Time-Invariant_) se pueden representar en el espacio de estados. \n", "\n", "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "dependiento de la dimensionalidad del estado $x$, la entrada $u$ y la salida $y$. Las matrices de la ecuación anterior se veran afectadas.\n", "\n", "$$\\cases{x\\in\\mathfrak{R}^n\\\\u\\in\\mathfrak{R}^m\\\\y\\in\\mathfrak{R}^p} \\qquad\\to\\qquad \\array{A:n\\times n\\\\B:n\\times m\\\\C:p\\times n}$$\n", "\n", "siendo $n$ el número de variables de estado, $m$ el número de entradas y $p$ el número de salidas" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Modelo en espacio de estados\n", "\n", "Teniendo el estado $x$, la entrada $u$ y la salida $y$. \n", "\n", "![](ecuacion.png)\n", "\n", "Surgen tres preguntas:\n", "\n", "- ¿De dónde surgen dichos sistemas?\n", "- ¿Cómo interpretar dichos sistemas?\n", "- ¿Cómo selecionamos la entrada?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo 1: Model del carro\n", "\n", "Empezando de la ecuación diferencial :\n", "\n", "$$\\dot{v}=\\frac{c}{m}\\, u - \\gamma\\, v$$\n", "\n", "- realicemos la ecuación en espacio de estados para el control de velocidad $v$\n", "- realicemos la ecuación en espacio de estados para el control de posición $p$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Para el control de la velocidad del carro\n", "\n", "- El estado es la velocidad $x=v$, luego: \n", "\n", "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "donde,\n", "\n", "$$\\array{A=\\left[\\array{-\\gamma}\\right]&B=\\left[\\array{\\frac{c}{m}}\\right]&C=\\left[\\array{1}\\right]}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Para el control de la posición del carro\n", "\n", "- El estado es la posición y la velocidad $x^T=\\left[\\array{p&v}\\right]$, luego: \n", "\n", "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "donde,\n", "\n", "$$\\array{A=\\left[\\array{0&1\\\\0&-\\gamma}\\right]&B=\\left[\\array{0\\\\\\frac{c}{m}}\\right]&C=\\left[\\array{1&0}\\right]}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo 2: Péndulo\n", "\n", "De la 2da ley de Newton tenemos:\n", "\n", "$$\\ddot{\\theta}=-\\frac{g}{l}\\sin{\\theta}+c\\,u$$\n", "\n", "_Encontremos la ecuación en espacio de estados_ ⚠️" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "**El sistema no es lineal**\n", "\n", "Aproximemos para angulos pequeños $\\theta <<1 $, $\\sin\\theta \\approx \\theta$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Para angulos pequeños el pendulo\n", "\n", "El estado es la posición y la velocidad angular $x^T=\\left[\\array{\\theta&\\dot\\theta}\\right]$, luego: \n", "\n", "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "donde,\n", "\n", "$$\\array{A=\\left[\\array{0&1\\\\-\\frac{g}{l}&0}\\right]&B=\\left[\\array{0\\\\c}\\right]&C=\\left[\\array{1&0}\\right]}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo 3: Dos robots simples sobre una linea\n", "\n", "Consideremos el control de dos robots sobre una linea a los cuales se les puede dar la orden directamente en velocidad.\n", "\n", "![](dos-robots.png)\n", "\n", "_Encontremos la ecuación en espacio de estados_ ⚠️" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\\array{\\dot{x}=Ax+Bu\\\\y=Cx}$$\n", "\n", "donde,\n", "\n", "$$\\array{A=0&B=\\left[\\array{1&0\\\\0&1}\\right]&C=\\left[\\array{1&0\\\\0&1}\\right]}$$\n", "\n", "**¿Cómo hacemos para que se encuentren en el mismo lugar?**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Problema del _\"Rendezvous\"_\n", "\n", "**¿Cómo hacemos para que se encuentren en el mismo lugar?**\n", "\n", "Idea 💡 : Hacer que se diriga el uno al otro;\n", "\n", "$$\\cases{u_1=x_2-x_1\\\\u_2=x_1-x_2}$$\n", "\n", "¿Cómo queda la ecuación de estado remplazando esta ley de control? " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\\dot{x}=\\left[\\array{-1&1\\\\1&-1}\\right]x$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Simulación del problema " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAFgElEQVR4nO3dMW4cVQDG8W/WkBRAnSZNELkACKRIsRQrVHAKcoKkgTJKh9JxAY5Bh5XCEiiIG5B0FNQQC5tkhmJWCRCc2BvzLev8fo0Lz2jfuvjv25k3z8M0TQGgY7HuAQC8TkQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6DojXUPYBgyJLmS5KMk7yT5Ncn9JN9NU6Z1jg3YYMNwZFsyTWtry7Cu1x6GvJnkRpLPk1zI/AFwLslhksdJfklyN8nX05Q/1jJIYPMMw7Hbkmmqt2Ut0R2GvJ3kmyTvJ3nrBYfuJ/kxySfTlN8aYwM22DCcuC2Zpmpb6tFdznC/zTzlP3+MUw4yfyW4bsYLHGme4a7UluaMdx030m5k/hQ6zh8ly+M+SPLZfzYi4CzYiLZUZ7rLm2Y/JXl3hdMfJnnPzTXgOfNNs1dqS+vmWnumeyXzhe1VXFieD/BPG9OWF85079y5c+80X2x399rFvb2rl8Zx68SxXyyejNvbew93du79fJpjAjbftd3di1f39i5tjeOJ2/JksRj3trcf3tvZObW23L59+9pRv6vOdA8Pz2+N42Kl1xzHxeLg4Nza1xUD/z/nDw+3FisEN0kW47g4d3BQa0v7mu7NJF/m+Be6/+ogyRfTlK9OdVDA5huGm3nFtmSaKm1pX9O9n3lx8ioeJ/nhFMcCnB0b05ZNWr3wIMllqxeA57za6oUHSS6fydULy2DeTfLohKfuJ7kruMC/moO5cluaezFswhNpv2f+6vCxJ9KAI538ibSnbTnTT6Qtw/lJ5je7/5LD95fHfSq4wAvN4TxxW9qb3qxlP93l5jXXk9zK/DTIo8x3EMflz0eZr7PcyjzDtdkN8HLz5jXHbkt7s5tkjVs7Ph3As/10P8zf97z83jVcYGXP9tN9ri2v5X66AK8j/64HoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGKRBegSHQBikQXoEh0AYpEF6BIdAGK/gTixgUyDNjAEAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dosRobots = ss([[-1,1],[1,-1]],[[0],[0]],[[1,0],[0,1]],[[0],[0]])\n", "yout, T = step(dosRobots,X0=[-10,10])\n", "\n", "fig, ax = plt.subplots();\n", "\n", "ax.plot([-12,12],[0,0],color='gray')\n", "ax.axis('off')\n", "#ax.plot([0,0],[-1,1],color='r')\n", "plt.xlim(-12,12);\n", "l, = ax.plot([-10],[0],color='b',marker='.',markersize=30)\n", "r, = ax.plot([10],[0],color='r',marker='.',markersize=30)\n", "\n", "def animate(i):\n", " l.set_data([yout[i,0]], [0])\n", " r.set_data([yout[i,1]], [0])\n", "\n", "ani = FuncAnimation(fig, animate, frames=len(T), interval=1000/40);" ] }, { "cell_type": "code", "execution_count": 3, "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": [ "# Ejemplo 4: Robot uniciclo\n", "\n", "\n", "\n", "Donde sus ecuaciones diferenciales son: \n", "\n", "$$\\array{\\dot{x}=v\\cos\\phi\\\\\\dot{y}=v\\sin\\phi\\\\\\dot\\phi=w}$$\n", "\n", "el sistema es no lineal, ¿Podemos usar la aproximación de angulos pequeños? " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "No, sigue siendo no lineal:\n", "\n", "$$\\array{\\dot{x}=v\\\\\\dot{y}=v\\phi\\\\\\dot\\phi=w}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "```\n", "“Classifying systems as linear and non-linear is like\n", "classifying objects in the Universe as bananas and\n", "non-bananas.” - Unknown\n", "``` " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Linealización\n", "\n", "Dado un sistema no lineal:\n", "\n", "$$\\array{\\dot{x}=f(x,u)&&y=h(x)}$$\n", "\n", "vamos a querer encontrar un modelo lineal \"local\" al rededor de un punto de operación.\n", "\n", "$$(x_o,u_o) \\to (x = x_o + \\delta x, u= u_o+ \\delta u)$$\n", "\n", "con esto las ecuaciones de movimiento se transforman en:\n", "\n", "$$\\dot{\\delta x}=\\dot{x}-\\dot{x}_o = f\\left(x_o + \\delta x, u_o+ \\delta u\\right)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Linealización \n", "\n", "$$\\dot{\\delta x}=\\dot{x}-\\dot{x}_o = f\\left(x_o + \\delta x, u_o+ \\delta u\\right)$$\n", "\n", "realizando una expansión en serie de Taylor:\n", "\n", "$$\\dot{\\delta x}\\approx f\\left(x_o,u_o\\right)+\\frac{\\partial f}{\\partial x}\\left(x_o,u_o\\right)\\delta x + \\frac{\\partial f}{\\partial u}\\left(x_o,u_o\\right)\\delta u \\,+ \\mathscr{O}^2$$\n", "\n", "$$y=h\\left(x_o+\\delta x\\right)\\approx h\\left(x_o\\right)+\\frac{\\partial h}{\\partial x}\\left(x_o\\right) \\delta x \\,+ \\mathscr{O}^2$$\n", "\n", "asumiendo que:\n", "\n", "$$\\array{f\\left(x_o,u_o\\right)=0&&h\\left(x_o\\right)=0}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Linealización\n", "\n", "tendremos:\n", "\n", "$$\\array{\n", "\\cases{\n", " \\dot{x}=f(x,u)\\\\\n", " y=h(x)\\\\ \\\\\n", " f\\left(x_o,u_o\\right)=0\\\\\n", " h\\left(x_o\\right)=0}\n", "&&\n", "\\array{x = x_o + \\delta x\\\\u= u_o+ \\delta u\\\\ \\to}\n", "&&\n", "\\cases{\n", "\\dot{\\delta x}=A\\delta x + B\\delta u \\\\\n", "y = C \\delta x\n", "\\\\ \\\\\n", "A = \\frac{\\partial f}{\\partial x}\\left(x_o,u_o\\right) \\\\\n", "B = \\frac{\\partial f}{\\partial u}\\left(x_o,u_o\\right) \\\\\n", "C = \\frac{\\partial h}{\\partial x}\\left(x_o\\right)\n", "}\n", "}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Computando los Jacobianos\n", "\n", "Teniendo que $x\\in\\mathfrak{R}^n$, $u\\in\\mathfrak{R}^m$, $y\\in\\mathfrak{R}^p$ y\n", "\n", "$$\\array{f^T = \\left[\\array{f_1&f_2&\\cdots&f_n}\\right]^T&&&h^T = \\left[\\array{h_1&h_2&\\cdots&h_p}\\right]^T}$$\n", "\n", "tendremos entonces:\n", "\n", "$$\\array{\n", "\\frac{\\partial f}{\\partial x} =\n", "\\left[\\array{\n", "\\frac{\\partial f_1}{\\partial x_1} & \\cdots & \\frac{\\partial f_1}{\\partial x_n} \\\\\n", "\\vdots & \\ddots & \\vdots \\\\\n", "\\frac{\\partial f_n}{\\partial x_1} & \\cdots & \\frac{\\partial f_n}{\\partial x_n} \\\\\n", "}\\right]_{(n\\times n)} &&\n", "\\frac{\\partial f}{\\partial u} =\n", "\\left[\\array{\n", "\\frac{\\partial f_1}{\\partial u_1} & \\cdots & \\frac{\\partial f_1}{\\partial u_m} \\\\\n", "\\vdots & \\ddots & \\vdots \\\\\n", "\\frac{\\partial f_n}{\\partial u_1} & \\cdots & \\frac{\\partial f_n}{\\partial u_m} \\\\\n", "}\\right]_{(n\\times m)} &&\n", "\\frac{\\partial h}{\\partial x} =\n", "\\left[\\array{\n", "\\frac{\\partial h_1}{\\partial x_1} & \\cdots & \\frac{\\partial h_1}{\\partial x_n} \\\\\n", "\\vdots & \\ddots & \\vdots \\\\\n", "\\frac{\\partial h_p}{\\partial x_1} & \\cdots & \\frac{\\partial h_p}{\\partial x_n} \\\\\n", "}\\right]_{(p\\times n)}\n", "}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo 5: Péndulo Invertido\n", "\n", "\n", "\n", "Partiendo de la ecuación diferencial:\n", "\n", "$$\\ddot{\\theta} = \\frac{g}{l}\\sin\\theta + u\\cos\\theta$$\n", "\n", "teniendo el estado como $x^T = \\left[\\array{\\theta &\\dot{\\theta}}\\right]^T$\n", "\n", "1. Definamos la ecuación de estado y de salida del sistema no linear.\n", "2. Encontremos las matrices de las ecuaciones de estados lineales, teniendo en cuenta $(x_o,u_o)=(0,0)$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\\array{A=\\left[\\array{0&1\\\\\\frac{g}{l}&0}\\right]&B=\\left[\\array{0\\\\1}\\right]&C=\\left[\\array{1&0}\\right]}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ejemplo 6: Linealización del uniciclo\n", "\n", "\n", "\n", "$$\\array{\n", "\\array{\\dot{x}=v\\cos\\phi\\\\\\dot{y}=v\\sin\\phi\\\\\\dot\\phi=w} & \n", "\\left\\{\\array{\n", "x_1 = x & x_2 = y & x_3 = \\phi \\\\\n", "y_1 = x_1 & y_2 = x_2 & y_3 = x_3 \\\\\n", "u_1 = u & u_2 = w \n", "}\\right. & (x_o,u_o)=(0,0)\n", "}$$\n", "\n", "¿Qué pasa con $\\dot{x}_2 = 0$?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Comentarios sobre la linealización\n", "\n", "- Algunas veces la linealización da modelos razonables y otras veces no.\n", "- A pesar de que son aproximaciones locales, estos modelos son muy utiles cuando funcionan. " ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.8" } }, "nbformat": 4, "nbformat_minor": 2 }