Usemos teoría de control para describir lo que ocurre en la imagen:
Para el proposito de planear asumamos el modelo de una particula controlada en velocidad en el plano $xy$:
$$\dot{x}=u\quad,\quad x\in\mathscr{R}^2$$cuya representación en espacio de estados es:
$$\dot{x} = \left[\array{0&0\\0&0}\right]x+\left[\array{1&0\\0&1}\right]u$$¿es este sistema controlable?
$$\Gamma = \left[\array{B&AB}\right]=\left[\array{I&0}\right]$$Los comportamiento principales en una plataforma movil son:
Tarea en el diseño del controlador:
¿Es asintoticamente estable?
$$K>0 \quad\text{o}\quad K\succ0 \quad\{\text{eig}(K)>0\}$$$$e\to 0$$considerando $K$ de la siguiente forma:
$$K = v_0 \frac{1-e^{-\alpha\parallel e\parallel^2}}{\parallel e\parallel}$$alpha = 2
v0 = 1
e = np.arange(0,3,0.01)
K = v0 * (1-np.exp(-alpha*e*e))
plt.plot(e,K);
plt.ylabel("$||u||$");
plt.xlabel("$||e||$");
Comportamiento inestable!
Cosideremos la siguiente $K$ dependiente del error $e$:
$$K = \frac{1}{\parallel e\parallel}\left(\frac{c}{\parallel e\parallel^2 +\epsilon}\right)$$c = 0.01
epsilon = 0.01
e = np.arange(0,1,0.01)
K = c / (e*e + epsilon)
plt.plot(e,K);
plt.ylabel("$||u||$");
plt.xlabel("$||e||$");
Dados dos comportamientos diferentes, como debemos combinarlos ?
beta = 5
do = np.arange(0,1,0.01)
sigma = 1-np.exp(-beta*do)
plt.plot(do,sigma);
plt.xlabel("$d_o$");
plt.ylabel("$\sigma$");
Veamos cuando nuestros dos comportamientos son suficientes y cuando necesitamos agregar más comportamientos.
De un mundo simple a un mundo complejo tenemos:
Un obstaculo es convexo si cada linea trazada entre dos puntos al interior del obstaculo queda dentro del obstaculo.
Necesitamos otro comportamiento para lidiar con estos mundos que tienen obstaculos no convexos.
Matriz de rotación:
$$R(\theta) = \left[\array{\cos\theta&-\sin\theta\\\sin\theta&\cos\theta}\right]$$¿Qué dirección elegir?
Necesitamos el comportamiento seguir-muro para resolver problemas complejos en navegación.
Vimos que podemos seguir muros usando:
$$\alpha R(\pm \pi/2) u_{AO}$$Podemos conectar todos los comportamientos que tenemos en una manera más sistematica?
El modo inducido:
$$\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)$$$$\frac{\partial g}{\partial x} = (x-x_o)^T$$$$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$$$$L_{f_1}g = \frac{\partial g}{\partial x} f_1 = C_{GTG}(x-x_o)^T(x_g-x)$$El modo inducido:
$$\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)$$$$\array{ L_{f_2}g =& C_{AO}\parallel x-x_o \parallel^2 \\ L_{f_1}g =& C_{GTG}(x-x_o)^T(x_g-x)}$$Recordemos:
$$\array{ u_{FW}^{c} =& \alpha R(- \pi/2) u_{AO} \\ u_{FW}^{cc} =& \alpha R(+ \pi/2) u_{AO} }$$Son lo mismo!
Podemos parar cuando hemos hecho suficiente progreso y tenemos una vista clara al objetivo.
Tenemos que considerar que los obstaculos no son puntos, aunque la mayoria de sensores retornan puntos.
¿Cómo lidiar con ellos?
Ya que los sensores no son perfectos, siempre debemos permitir una holgura en los guardias de los automatas híbridos.
Ya que los sensores no son perfectos, siempre debemos permitir una holgura en los guardias de los automatas híbridos.