{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "# http://detexify.kirelabs.org/classify.html\n", "## 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 as np\n", "\n", "## Libreria para calculo simbolico\n", "import sympy\n", "\n", "## Libreria de control\n", "import control\n", "\n", "## Libreria para widgets\n", "import ipywidgets as widgets\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": [ "# Recordando los comportamientos\n", "\n", "Usemos teoría de control para describir lo que ocurre en la imagen:\n", "\n", "![](robot-obstaculo-objetivo.png)\n", "\n", "- Llegar al objetivo\n", "- Evitar el obstaculo" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Empecemos por el modelo\n", "\n", "Para el proposito de planear asumamos el modelo de una particula controlada en velocidad en el plano $xy$:\n", "\n", "$$\\dot{x}=u\\quad,\\quad x\\in\\mathscr{R}^2$$\n", "\n", "cuya representación en espacio de estados es:\n", "\n", "$$\\dot{x} = \\left[\\array{0&0\\\\0&0}\\right]x+\\left[\\array{1&0\\\\0&1}\\right]u$$\n", "\n", "¿es este sistema controlable?\n", "\n", "$$\\Gamma = \\left[\\array{B&AB}\\right]=\\left[\\array{I&0}\\right]$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$$\\text{rank}\\left(\\Gamma\\right) = 2$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# El duo dinámico\n", "\n", "Los comportamiento principales en una plataforma movil son:\n", "\n", "- Ir al objetivo: El robot se dirige hacia el objetivo.\n", "- Evita obstaculos: No te golpes contra las cosas.\n", "\n", "Tarea en el diseño del controlador:\n", "\n", "- Seleccionar el vector de movimiento deseado y definirlo como la velocidad del vehículo. \n", "\n", "![](robot-to-goal.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ir al objetivo\n", "\n", "![](robot-go-to-goal.png)\n", "\n", "$$u=Ke \\qquad\\to\\qquad \\dot{e}=0-\\dot{x}=-Ke$$\n", "\n", "¿Es asintoticamente estable? \n", "\n", "$$K>0 \\quad\\text{o}\\quad K\\succ0 \\quad\\{\\text{eig}(K)>0\\}$$\n", "\n", "$$e\\to 0$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Una preocupación\n", "\n", "- Un controlador lineal significa que el robot va más rápido entre más lejos del objetivo este.\n", "- Una solución en la práctica: Hacemos la ganancia $K$ una función de $e$:\n", "\n", "$$\\dot{e}=-K(\\parallel e\\parallel)e$$\n", "\n", "considerando $K$ de la siguiente forma:\n", "\n", "$$K = v_0 \\frac{1-e^{-\\alpha\\parallel e\\parallel^2}}{\\parallel e\\parallel}$$" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha = 2\n", "v0 = 1\n", "e = np.arange(0,3,0.01)\n", "K = v0 * (1-np.exp(-alpha*e*e))\n", "plt.plot(e,K);\n", "plt.ylabel(\"$||u||$\");\n", "plt.xlabel(\"$||e||$\");" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Evitar obstaculos\n", "\n", "![](robot-avoid-obstacle.png)\n", "\n", "$$u=Ke \\quad\\to\\quad \\dot{e}=Ke$$\n", "\n", "Comportamiento inestable!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Más preocupaciones\n", "\n", "- El robot se va al infinito?\n", "- Esta siendo demasiado cauteloso?\n", "- Nos importa menos si estamos más cerca?\n", "\n", "## Soluciones\n", "\n", "- Hacer $K$ dependiente de e\n", "- Cambiar entre los comportamientos\n", "- Usar el modo inducido" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Para evitar obstaculos\n", "\n", "Cosideremos la siguiente $K$ dependiente del error $e$:\n", "\n", "$$K = \\frac{1}{\\parallel e\\parallel}\\left(\\frac{c}{\\parallel e\\parallel^2 +\\epsilon}\\right)$$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c = 0.01\n", "epsilon = 0.01\n", "e = np.arange(0,1,0.01)\n", "K = c / (e*e + epsilon)\n", "plt.plot(e,K);\n", "plt.ylabel(\"$||u||$\");\n", "plt.xlabel(\"$||e||$\");" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Transiciones entre modos o comportamientos\n", "\n", "- ¿Cómo acoplar la dinámica del robot con los comportamientos?\n", "- ¿Cuáles deben ser las transiciones?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Cambios bruscos o difuminado\n", "\n", "Dados dos comportamientos diferentes, como debemos combinarlos ?\n", "\n", "![](robot-behavior-switch.png)\n", "\n", "- Cambios bruscos\n", "- Interpolación / difuminado" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Ventajas y desventajas\n", "\n", "## Cambios bruscos\n", "\n", "- **Ventaja**: Comportamiento garantizado.\n", "- **Desventaja**: Movimientos bruscos y posible zeno.\n", "\n", "## Modo Combinado\n", "\n", "- **Ventaja**: Movimiento suave.\n", "- **Desventaja**: No hay garantias. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Posibilidad #1 : Autómata Híbrido\n", "\n", "![](robot-ha.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Posibilidad #2 : Modo combinado\n", "\n", "![](robot-blending.png)\n", "\n", "$$\\sigma(d_o) \\in [0,1]$$\n", "\n", "$$\\dot{x}=\\sigma(d_o)u_{GTG}+(1-\\sigma(d_o))u_{AO}$$" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "beta = 5\n", "do = np.arange(0,1,0.01)\n", "sigma = 1-np.exp(-beta*do)\n", "plt.plot(do,sigma);\n", "plt.xlabel(\"$d_o$\");\n", "plt.ylabel(\"$\\sigma$\");" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Comentarios\n", "\n", "- Dos elecciones, cada uno con ventajas y desventajas\n", "- Que bueno sería tener las ventajas de ambas posibilidades: movimiento suave y desempeño garantizado\n", "- Usaremos del modo inducido" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Mundos convexos y no convexos\n", "\n", "Veamos cuando nuestros dos comportamientos son suficientes y cuando necesitamos agregar más comportamientos. \n", "\n", "De un mundo simple a un mundo complejo tenemos:\n", "\n", "1. El mundo de los puntos.\n", "2. El mundo de los circulos.\n", "3. El mundo de objetos convexos.\n", "4. El mundo de objetos no convexos.\n", "5. El mundo de los laberintos. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# El mundo de los puntos\n", "\n", "![](world-points.png)\n", "\n", "- Aquí los dos comportamientos son suficientes a menos que seamos muy de malas. \n", "- El problema es que podemos entrar en un Zenon.\n", "- La solución es agregar algo de ruido. En práctica siempre tendremos ruido. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# El mundo de los circulos\n", "\n", "![](world-circles.png)\n", "\n", "- Es igual al mundo de los puntos" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Obstaculos convexos\n", "\n", "![](convex-non-convex.png)\n", "\n", "Un obstaculo es convexo si cada linea trazada entre dos puntos al interior del obstaculo queda dentro del obstaculo." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# El mundo de objetos convexos\n", "\n", "![](world-convex.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# El mundo de objetos no convexos\n", "\n", "![](world-non-convex.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# El mundo de los laberintos\n", "\n", "![](world-labyrinth.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Otro comportamiento\n", "\n", "Necesitamos otro comportamiento para lidiar con estos mundos que tienen obstaculos no convexos. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Seguir el muro\n", "\n", "- Necesitamos una forma de lidiar con ambientes complejos.\n", "- Un comportamiento muy útil es hacer que el robot siga la frontera de un obstaculo o muro.\n", "- Esto también nos permite introducir el modo inducido en de forma más sistematica. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Cómo seguir un muro\n", "\n", "- El comportamiento de seguir un muro debe mantener una distancia constante entre el robot y el obstaculo/muro. \n", "\n", "![](robot-follow-wall.png)\n", "\n", "$$u_{FW} = \\alpha \\left[\\array{0&1\\\\-1&0}\\right]u_{AO} = \\alpha R(-\\pi/2) u_{AO}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Seguimos el muro de manera \n", "## horaria o anti-horaria\n", "\n", "Evidemente podemos movernos por el muro siguiendo dos direcciones. \n", "\n", "![](robot-follow-wall-2.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Seguimos el muro de manera \n", "## horaria o anti-horaria\n", "\n", "$$u_{FW}^c = \\alpha R(-\\pi/2) u_{AO} = \\alpha \\left[\\array{0&1\\\\-1&0}\\right]u_{AO}$$\n", "$$u_{FW}^{cc} = \\alpha R(\\pi/2) u_{AO} = \\alpha \\left[\\array{0&-1\\\\1&0}\\right]u_{AO}$$\n", "\n", "Matriz de rotación:\n", "\n", "$$R(\\theta) = \\left[\\array{\\cos\\theta&-\\sin\\theta\\\\\\sin\\theta&\\cos\\theta}\\right]$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Horario o anti-horario ?\n", "\n", "![](world-labyrinth.png)\n", "\n", "¿Qué dirección elegir?\n", "\n", "- No hay una respuesta obvia a esto\n", "- Tal vez podemos elegir la dirección basados en la dirección al objetivo." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Horario o anti-horario ?\n", "\n", "![](world-labyrinth.png)\n", "\n", "$$\\langle v,w\\rangle = v^Tw = \\parallel v \\parallel \\parallel w \\parallel \\cos(\\angle(v,w))$$\n", "\n", "$$\\langle u_{GTG},u_{FW}^c \\rangle > 0 \\quad\\to\\quad u_{FW}^c $$\n", "$$\\langle u_{GTG},u_{FW}^{cc} \\rangle > 0 \\quad\\to\\quad u_{FW}^{cc} $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Dificultad\n", "\n", "- ¿Cuándo terminar el comportamiento seguir muro?\n", "- ¿Existe alguna manera sistematica de escalar el comportamiento? \n", "\n", "$$\\alpha R(\\pm \\pi/2) u_{AO}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Modo Inducido \n", "\n", "Necesitamos el comportamiento seguir-muro para resolver problemas complejos en navegación.\n", "\n", "Vimos que podemos seguir muros usando:\n", "\n", "$$\\alpha R(\\pm \\pi/2) u_{AO}$$\n", "\n", "Podemos conectar todos los comportamientos que tenemos en una manera más sistematica? " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# La idea\n", "\n", "![](robot-induced-mode.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Conectandolo con el modo inducido\n", "\n", "$$g(x)=\\frac{1}{2}\\left(\\parallel x-x_o \\parallel ^2 - \\Delta^2\\right)=0$$\n", "$$f_1 = C_{GTG}(x_g-x) \\qquad\\qquad f_2 = C_{AO}(x-x_o)$$\n", "\n", "El modo inducido:\n", "\n", "$$\\dot{x} = \\frac{1}{L_{f_2}g - L_{f_1}g}\\left(L_{f_2}g\\,f_1 -L_{f_1}g\\,f_2\\right)$$\n", "\n", "$$\\frac{\\partial g}{\\partial x} = (x-x_o)^T$$\n", "\n", "$$L_{f_2}g = \\frac{\\partial g}{\\partial x} f_2 = (x-x_o)^TC_{AO}(x-x_o) = C_{AO}\\parallel x-x_o \\parallel^2$$\n", "$$L_{f_1}g = \\frac{\\partial g}{\\partial x} f_1 = C_{GTG}(x-x_o)^T(x_g-x)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Conectandolo con el modo inducido\n", "El modo inducido:\n", "\n", "$$\\dot{x} = \\frac{1}{L_{f_2}g - L_{f_1}g}\\left(L_{f_2}g\\,f_1 -L_{f_1}g\\,f_2\\right)$$\n", "\n", "$$\\array{ \n", "L_{f_2}g =& C_{AO}\\parallel x-x_o \\parallel^2 \\\\\n", "L_{f_1}g =& C_{GTG}(x-x_o)^T(x_g-x)}$$\n", "\n", "Recordemos:\n", "\n", "$$\\array{ \n", "u_{FW}^{c} =& \\alpha R(- \\pi/2) u_{AO} \\\\\n", "u_{FW}^{cc} =& \\alpha R(+ \\pi/2) u_{AO}\n", "}$$\n", "\n", "Son lo mismo!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# ¿Cuando paramos el modo deslizante?\n", "\n", "![](world-labyrinth.png)\n", "\n", "Podemos parar cuando hemos hecho suficiente progreso y tenemos una vista clara al objetivo. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Todo juntos\n", "\n", "![](robot-ha-complete.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Consideraciones prácticas\n", "\n", "- Obstaculos no puntuales\n", "- Guardias con holgura\n", "- Ajustar, ajustar, ajustar" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Los obstaculos no son puntos\n", "\n", "Tenemos que considerar que los obstaculos no son puntos, aunque la mayoria de sensores retornan puntos. \n", "\n", "![](obstacles-not-points.png)\n", "\n", "¿Cómo lidiar con ellos?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Algunas opciones\n", "\n", "1. Usar el punto más cercano al robot (no esta mal)\n", "\n", "![](obstacles-closest.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Algunas opciones\n", "\n", "1. Usar el punto más cercano al robot (no esta mal)\n", "2. Usar una ponderación y agregar el vector de obstaculos dependiendo de la distancia a ellos (mejor)\n", "\n", "![](obstacles-weight.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Algunas opciones\n", "\n", "1. Usar el punto más cercano al robot (no esta mal)\n", "2. Usar una ponderación y agregar el vector de obstaculos dependiendo de la distancia a ellos (mejor)\n", "3. Usar una ponderación dependiendo de la distancia de los obstaculos y la dirección de viaje (mucho mejor)\n", "\n", "![](obstacles-weight-goal.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Algunas opciones\n", "\n", "1. Usar el punto más cercano al robot (no esta mal)\n", "2. Usar una ponderación y agregar el vector de obstaculos dependiendo de la distancia a ellos (mejor)\n", "3. Usar una ponderación dependiendo de la distancia de los obstaculos y la dirección de viaje (mucho mejor)\n", "4. Hacer un mapa y planear (ideal)\n", "\n", "![](obstacles-map.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Guardias con holgura\n", "\n", "Ya que los sensores no son perfectos, siempre debemos permitir una holgura en los guardias de los automatas híbridos. \n", "\n", "![](ha-guards.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Guardias con holgura\n", "\n", "Ya que los sensores no son perfectos, siempre debemos permitir una holgura en los guardias de los automatas híbridos. \n", "\n", "![](ha-guards-fat.png)" ] } ], "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 }