Implementación en Matlab de sistemas de control de vuelo on-line para FlightGear
En esta página se describe cómo diseñar un sistema de control de vuelo on-line para el simulador de vuelo de código abierto FlightGear.
Tabla de contenidos |
Habilitación del acceso a las variables de vuelo
Para poder diseñar sistemas de control de vuelo es necesario tener acceso (de lectura y/o escritura) a variables del simulador. Esto es posible a través del árbol de propiedades de FlightGear, que es accesible a través del localhost en el puerto que se especifica a través de la instrucción en línea de comandos. Por ejemplo, puede habilitarse en el puerto 5400 invocando a FlightGear con las siguientes opciones:
Una vez ejecutado, el árbol de propiedades estará accesible vía http (con cualquier navegador) en localhost el en el puerto seleccionado
Acceso a las variables de vuelo desde Matlab
Acceso de lectura
Aunque existen procedimientos más eficientes, una vez habilitado el acceso vía http se puede acceder desde matlab (versión 7) a cualquier propiedad utilizando la función urlread(url)
para leer la página dinámica generada por el simulador y luego "parseándola" mediante expresiones regulares para quedarnos con el valor de la variable. Por ejemplo, para leer el valor y de la altitud
s = urlread('http://localhost:5400/position/altitude-ft'); [ini,fin]=regexp(s,'value="-?\d+.?\d+"'); y = str2num(s(ini+7:fin-1));
Acceso de escritura
El acceso de escritura puede hacerse utilizando la sintaxis del protocolo http. Por ejemplo, para asignar un valor u a la posición del elevador
s = ['http://localhost:5400/controls/flight/elevator?value=' num2str(u)], urlread(s);
Control
Mediante estos procedimientos es posible acceder, tanto para lectura como para escritura, a cientos de variables de vuelo disponibles en el árbol de propiedades. La principal limitación de esta forma de acceso es el tiempo de acceso. De forma orientativa, es posible conseguir dos lazos SISO independientes (leer dos variables y escribir otras dos) con periodos de muestreo del orden de 1 segundo. Esto es más que suficiente para desarrollar sistemas de control de altitud, inclinación, etc. ya que las dinámicas del avión son bastante más lentas.